00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#include "kmcupsconfigwidget.h"
00021
#include "cupsinfos.h"
00022
00023
#include <qlabel.h>
00024
#include <qgroupbox.h>
00025
#include <qlineedit.h>
00026
#include <qcheckbox.h>
00027
#include <qlayout.h>
00028
#include <qpushbutton.h>
00029
#include <qvalidator.h>
00030
00031
#include <klocale.h>
00032
#include <kcursor.h>
00033
#include <kconfig.h>
00034
#include <kstringhandler.h>
00035
00036
class PortValidator :
public QIntValidator
00037 {
00038
public:
00039 PortValidator(
QWidget *parent,
const char *name = 0);
00040
virtual QValidator::State
validate(
QString&,
int&) const;
00041 };
00042
00043 PortValidator::PortValidator(
QWidget *parent, const
char *name)
00044 :
QIntValidator(1, 65535, parent, name)
00045 {
00046 }
00047
00048 QValidator::State
PortValidator::validate(
QString& txt,
int&)
const
00049
{
00050
bool ok(
false);
00051
int p = txt.
toInt(&ok);
00052
if (txt.
isEmpty())
00053
return QValidator::Intermediate;
00054
else if (ok && p >= bottom() && p <= top())
00055
return QValidator::Acceptable;
00056
return QValidator::Invalid;
00057 }
00058
00059
00060
00061 KMCupsConfigWidget::KMCupsConfigWidget(
QWidget *parent,
const char *name)
00062 :
QWidget(parent,name)
00063 {
00064
00065
QGroupBox *m_hostbox =
new QGroupBox(0, Qt::Vertical, i18n(
"Server Information"),
this);
00066
QGroupBox *m_loginbox =
new QGroupBox(0, Qt::Vertical, i18n(
"Account Information"),
this);
00067
QLabel *m_hostlabel =
new QLabel(i18n(
"&Host:"), m_hostbox);
00068
QLabel *m_portlabel =
new QLabel(i18n(
"&Port:"), m_hostbox);
00069 m_host =
new QLineEdit(m_hostbox);
00070 m_port =
new QLineEdit(m_hostbox);
00071 m_hostlabel->
setBuddy(m_host);
00072 m_portlabel->
setBuddy(m_port);
00073 m_port->setValidator(
new PortValidator(m_port));
00074 m_login =
new QLineEdit(m_loginbox);
00075
QLabel *m_loginlabel =
new QLabel(i18n(
"&User:"), m_loginbox);
00076
QLabel *m_passwordlabel =
new QLabel(i18n(
"Pass&word:"), m_loginbox);
00077 m_password =
new QLineEdit(m_loginbox);
00078 m_password->setEchoMode(QLineEdit::Password);
00079 m_savepwd =
new QCheckBox( i18n(
"&Store password in configuration file" ), m_loginbox );
00080 m_savepwd->setCursor( KCursor::handCursor() );
00081 m_anonymous =
new QCheckBox(i18n(
"Use &anonymous access"), m_loginbox);
00082 m_anonymous->setCursor(KCursor::handCursor());
00083 m_loginlabel->
setBuddy(m_login);
00084 m_passwordlabel->
setBuddy(m_password);
00085
00086
00087
QVBoxLayout *lay0 =
new QVBoxLayout(
this, 0, 10);
00088 lay0->addWidget(m_hostbox,1);
00089 lay0->addWidget(m_loginbox,1);
00090
QGridLayout *lay2 =
new QGridLayout(m_hostbox->layout(), 2, 2, 10);
00091 lay2->
setColStretch(1,1);
00092 lay2->
addWidget(m_hostlabel,0,0);
00093 lay2->
addWidget(m_portlabel,1,0);
00094 lay2->
addWidget(m_host,0,1);
00095 lay2->
addWidget(m_port,1,1);
00096
QGridLayout *lay3 =
new QGridLayout(m_loginbox->layout(), 4, 2, 10);
00097 lay3->
setColStretch(1,1);
00098 lay3->
addWidget(m_loginlabel,0,0);
00099 lay3->
addWidget(m_passwordlabel,1,0);
00100 lay3->
addWidget(m_login,0,1);
00101 lay3->
addWidget(m_password,1,1);
00102 lay3->
addMultiCellWidget(m_savepwd,2,2,0,1);
00103 lay3->
addMultiCellWidget(m_anonymous,3,3,0,1);
00104
00105
00106 connect(m_anonymous,SIGNAL(toggled(
bool)),m_login,SLOT(setDisabled(
bool)));
00107 connect(m_anonymous,SIGNAL(toggled(
bool)),m_password,SLOT(setDisabled(
bool)));
00108 connect(m_anonymous,SIGNAL(toggled(
bool)),m_savepwd,SLOT(setDisabled(
bool)));
00109 }
00110
00111
void KMCupsConfigWidget::load()
00112 {
00113 CupsInfos *inf = CupsInfos::self();
00114 m_host->setText(inf->host());
00115 m_port->setText(QString::number(inf->port()));
00116
if (inf->login().isEmpty())
00117 m_anonymous->setChecked(
true);
00118
else
00119 {
00120 m_login->setText(inf->login());
00121 m_password->setText(inf->password());
00122 m_savepwd->setChecked( inf->savePassword() );
00123 }
00124 }
00125
00126
void KMCupsConfigWidget::save(
bool sync)
00127 {
00128 CupsInfos *inf = CupsInfos::self();
00129 inf->setHost(m_host->text());
00130 inf->setPort(m_port->text().toInt());
00131
if (m_anonymous->isChecked())
00132 {
00133 inf->setLogin(QString::null);
00134 inf->setPassword(QString::null);
00135 inf->setSavePassword(
false );
00136 }
00137
else
00138 {
00139 inf->setLogin(m_login->text());
00140 inf->setPassword(m_password->text());
00141 inf->setSavePassword( m_savepwd->isChecked() );
00142 }
00143
if (sync) inf->save();
00144 }
00145
00146
void KMCupsConfigWidget::saveConfig(KConfig *conf)
00147 {
00148 conf->setGroup(
"CUPS");
00149 conf->writeEntry(
"Host",m_host->text());
00150 conf->writeEntry(
"Port",m_port->text().toInt());
00151 conf->writeEntry(
"Login",(m_anonymous->isChecked() ? QString::null : m_login->text()));
00152 conf->writeEntry(
"SavePassword", ( m_anonymous->isChecked() ?
false : m_savepwd->isChecked() ) );
00153
if ( m_savepwd->isChecked() && !m_anonymous->isChecked() )
00154 conf->writeEntry(
"Password", ( m_anonymous->isChecked() ? QString::null : KStringHandler::obscure( m_password->text() ) ) );
00155
else
00156 conf->deleteEntry(
"Password" );
00157
00158 save(
false);
00159 }