00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "configguisyncmlhttp.h"
00023
00024 #include <kcombobox.h>
00025 #include <kdialog.h>
00026 #include <klineedit.h>
00027 #include <klocale.h>
00028 #include <kurlrequester.h>
00029
00030 #include <qcheckbox.h>
00031 #include <qdom.h>
00032 #include <qlabel.h>
00033 #include <qlayout.h>
00034 #include <qspinbox.h>
00035 #include <qtabwidget.h>
00036 #include <qvbox.h>
00037
00038 ConfigGuiSyncmlHttp::ConfigGuiSyncmlHttp( const QSync::Member &member, QWidget *parent )
00039 : ConfigGui( member, parent ), mUrl( 0 ), mPort( 0 )
00040 {
00041
00042 QTabWidget *tabWidget = new QTabWidget( this );
00043 topLayout()->addWidget( tabWidget );
00044
00045
00046 QWidget *connectionWidget = new QWidget( tabWidget );
00047 QVBoxLayout *connectionLayout = new QVBoxLayout( connectionWidget,
00048 KDialog::marginHint(), KDialog::spacingHint() );
00049
00050 tabWidget->addTab( connectionWidget, i18n( "Connection" ) );
00051
00052 mGridLayout = new QGridLayout( connectionLayout );
00053
00054 QLabel *label = new QLabel( i18n("Port:"), connectionWidget );
00055 mGridLayout->addWidget( label, 0, 0 );
00056
00057 mPort = new QSpinBox( connectionWidget );
00058 mPort->setMinValue( 1 );
00059 mPort->setMaxValue( 65536 );
00060 mGridLayout->addWidget( mPort, 0, 1 );
00061
00062
00063 QWidget *databaseWidget = new QWidget( tabWidget );
00064 QVBoxLayout *databaseLayout = new QVBoxLayout( databaseWidget,
00065 KDialog::marginHint(), KDialog::spacingHint() );
00066
00067 tabWidget->addTab( databaseWidget, i18n( "Databases" ) );
00068
00069 mGridLayout = new QGridLayout( databaseLayout );
00070 addLineEdit( databaseWidget, i18n("Contact Database:"), &mContactDb, 0 );
00071 addLineEdit( databaseWidget, i18n("Calendar Database:"), &mCalendarDb, 1 );
00072 addLineEdit( databaseWidget, i18n("Note Database:"), &mNoteDb, 2 );
00073
00074 mContactDb->insertItem( "addressbook" );
00075 mContactDb->insertItem( "contacts" );
00076
00077 mCalendarDb->insertItem( "agenda" );
00078 mCalendarDb->insertItem( "calendar" );
00079
00080 mNoteDb->insertItem( "notes" );
00081
00082
00083
00084 QWidget *optionWidget = new QWidget( tabWidget );
00085 QVBoxLayout *optionLayout = new QVBoxLayout( optionWidget,
00086 KDialog::marginHint(), KDialog::spacingHint() );
00087
00088 tabWidget->addTab( optionWidget, i18n( "Options" ) );
00089
00090 mGridLayout = new QGridLayout( optionLayout );
00091
00092 label = new QLabel( i18n("User name:"), optionWidget );
00093 mGridLayout->addWidget( label, 0, 0 );
00094
00095 mUsername = new KLineEdit( optionWidget );
00096 mGridLayout->addWidget( mUsername, 0, 1 );
00097
00098 label = new QLabel( i18n("Password:"), optionWidget );
00099 mGridLayout->addWidget( label, 1, 0 );
00100
00101 mPassword = new KLineEdit( optionWidget );
00102 mPassword->setEchoMode( QLineEdit::Password );
00103 mGridLayout->addWidget( mPassword, 1, 1 );
00104
00105
00106 mUseStringTable = new QCheckBox( i18n("Use String Table"), optionWidget );
00107 mGridLayout->addMultiCellWidget( mUseStringTable, 2, 2, 0, 1 );
00108
00109 mOnlyReplace = new QCheckBox( i18n("Only Replace Entries"), optionWidget );
00110 mGridLayout->addMultiCellWidget( mOnlyReplace, 3, 3, 0, 1 );
00111
00112
00113 label = new QLabel( i18n("URL:"), optionWidget );
00114 mGridLayout->addWidget( label, 4, 0 );
00115
00116 mUrl = new KLineEdit( optionWidget );
00117 mGridLayout->addWidget( mUrl, 4, 1 );
00118
00119
00120 label = new QLabel( i18n("Receive Limit:"), optionWidget );
00121 mGridLayout->addWidget( label, 5, 0 );
00122
00123 mRecvLimit = new QSpinBox( optionWidget );
00124 mRecvLimit->setMinValue( 1 );
00125 mRecvLimit->setMaxValue( 65536 );
00126 mGridLayout->addWidget( mRecvLimit, 5, 1 );
00127
00128
00129 label = new QLabel( i18n("Maximum Object Size"), optionWidget );
00130 mGridLayout->addWidget( label, 6, 0 );
00131
00132 mMaxObjSize = new QSpinBox( optionWidget );
00133 mMaxObjSize->setMinValue( 1 );
00134 mMaxObjSize->setMaxValue( 65536 );
00135 mGridLayout->addWidget( mMaxObjSize, 6, 1 );
00136
00137 topLayout()->addStretch( 1 );
00138 }
00139
00140 void ConfigGuiSyncmlHttp::addLineEdit( QWidget *parent, const QString &text, KComboBox **edit, int row )
00141 {
00142 QLabel *label = new QLabel( text, parent);
00143 mGridLayout->addWidget( label, row, 0 );
00144
00145 *edit = new KComboBox( true, parent );
00146 mGridLayout->addWidget( *edit, row, 1 );
00147 }
00148
00149 void ConfigGuiSyncmlHttp::load( const QString &xml )
00150 {
00151 QDomDocument document;
00152 document.setContent( xml );
00153
00154 QDomElement docElement = document.documentElement();
00155 QDomNode node;
00156
00157 for ( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
00158 QDomElement element = node.toElement();
00159 if ( element.tagName() == "username" ) {
00160 mUsername->setText( element.text() );
00161 } else if ( element.tagName() == "password" ) {
00162 mPassword->setText( element.text() );
00163 } else if ( element.tagName() == "url" ) {
00164 if ( mUrl )
00165 mUrl->setText( element.text() );
00166 } else if ( element.tagName() == "port" ) {
00167 if ( mPort )
00168 mPort->setValue( element.text().toInt() );
00169 } else if ( element.tagName() == "recvLimit" ) {
00170 if ( mRecvLimit )
00171 mRecvLimit->setValue( element.text().toInt() );
00172 } else if ( element.tagName() == "maxObjSize" ) {
00173 if ( mMaxObjSize )
00174 mMaxObjSize->setValue( element.text().toInt() );
00175 } else if ( element.tagName() == "usestringtable" ) {
00176 mUseStringTable->setChecked( element.text() == "1" );
00177 } else if ( element.tagName() == "onlyreplace" ) {
00178 mOnlyReplace->setChecked( element.text() == "1" );
00179 } else if ( element.tagName() == "contact_db" ) {
00180 mContactDb->setCurrentText( element.text() );
00181 } else if ( element.tagName() == "calendar_db" ) {
00182 mCalendarDb->setCurrentText( element.text() );
00183 } else if ( element.tagName() == "note_db" ) {
00184 mNoteDb->setCurrentText( element.text() );
00185 }
00186 }
00187 }
00188
00189 QString ConfigGuiSyncmlHttp::save()
00190 {
00191 QString xml;
00192 xml = "<config>\n";
00193 xml += "<username>" + mUsername->text() + "</username>\n";
00194 xml += "<password>" + mPassword->text() + "</password>\n";
00195
00196 xml += "<url>" + mUrl->text() + "</url>\n";
00197 xml += "<port>" + QString::number( mPort->value() ) + "</port>\n";
00198
00199 xml += "<recvLimit>" + QString::number( mRecvLimit->value() ) + "</recvLimit>\n";
00200
00201
00202 xml += "<maxObjSize>" + QString::number( mMaxObjSize->value() ) + "</maxObjSize>\n";
00203
00204 xml += "<usestringtable>";
00205 if ( mUseStringTable->isChecked() )
00206 xml += "1";
00207 else
00208 xml += "0";
00209 xml += "</usestringtable>\n";
00210
00211 xml += "<onlyreplace>";
00212 if ( mOnlyReplace->isChecked() )
00213 xml += "1";
00214 else
00215 xml += "0";
00216 xml += "</onlyreplace>\n";
00217
00218 xml += "<contact_db>" + mContactDb->currentText() + "</contact_db>\n";
00219 xml += "<calendar_db>" + mCalendarDb->currentText() + "</calendar_db>\n";
00220 xml += "<note_db>" + mNoteDb->currentText() + "</note_db>\n";
00221 xml += "</config>";
00222
00223 return xml;
00224 }
00225
00226 #include "configguisyncmlhttp.moc"
00227