summaryrefslogtreecommitdiffstats
path: root/kitchensync/src/configguisyncmlhttp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kitchensync/src/configguisyncmlhttp.cpp')
-rw-r--r--kitchensync/src/configguisyncmlhttp.cpp227
1 files changed, 227 insertions, 0 deletions
diff --git a/kitchensync/src/configguisyncmlhttp.cpp b/kitchensync/src/configguisyncmlhttp.cpp
new file mode 100644
index 00000000..63a073c9
--- /dev/null
+++ b/kitchensync/src/configguisyncmlhttp.cpp
@@ -0,0 +1,227 @@
+/*
+ This file is part of KitchenSync.
+
+ Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ USA.
+*/
+
+#include "configguisyncmlhttp.h"
+
+#include <kcombobox.h>
+#include <kdialog.h>
+#include <klineedit.h>
+#include <klocale.h>
+#include <kurlrequester.h>
+
+#include <qcheckbox.h>
+#include <qdom.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qspinbox.h>
+#include <qtabwidget.h>
+#include <qvbox.h>
+
+ConfigGuiSyncmlHttp::ConfigGuiSyncmlHttp( const QSync::Member &member, QWidget *parent )
+ : ConfigGui( member, parent ), mUrl( 0 ), mPort( 0 )
+{
+
+ QTabWidget *tabWidget = new QTabWidget( this );
+ topLayout()->addWidget( tabWidget );
+
+ // Connection
+ QWidget *connectionWidget = new QWidget( tabWidget );
+ QVBoxLayout *connectionLayout = new QVBoxLayout( connectionWidget,
+ KDialog::marginHint(), KDialog::spacingHint() );
+
+ tabWidget->addTab( connectionWidget, i18n( "Connection" ) );
+
+ mGridLayout = new QGridLayout( connectionLayout );
+
+ QLabel *label = new QLabel( i18n("Port:"), connectionWidget );
+ mGridLayout->addWidget( label, 0, 0 );
+
+ mPort = new QSpinBox( connectionWidget );
+ mPort->setMinValue( 1 );
+ mPort->setMaxValue( 65536 );
+ mGridLayout->addWidget( mPort, 0, 1 );
+
+ // Database
+ QWidget *databaseWidget = new QWidget( tabWidget );
+ QVBoxLayout *databaseLayout = new QVBoxLayout( databaseWidget,
+ KDialog::marginHint(), KDialog::spacingHint() );
+
+ tabWidget->addTab( databaseWidget, i18n( "Databases" ) );
+
+ mGridLayout = new QGridLayout( databaseLayout );
+ addLineEdit( databaseWidget, i18n("Contact Database:"), &mContactDb, 0 );
+ addLineEdit( databaseWidget, i18n("Calendar Database:"), &mCalendarDb, 1 );
+ addLineEdit( databaseWidget, i18n("Note Database:"), &mNoteDb, 2 );
+
+ mContactDb->insertItem( "addressbook" );
+ mContactDb->insertItem( "contacts" );
+
+ mCalendarDb->insertItem( "agenda" );
+ mCalendarDb->insertItem( "calendar" );
+
+ mNoteDb->insertItem( "notes" );
+
+
+ // Options
+ QWidget *optionWidget = new QWidget( tabWidget );
+ QVBoxLayout *optionLayout = new QVBoxLayout( optionWidget,
+ KDialog::marginHint(), KDialog::spacingHint() );
+
+ tabWidget->addTab( optionWidget, i18n( "Options" ) );
+
+ mGridLayout = new QGridLayout( optionLayout );
+
+ label = new QLabel( i18n("User name:"), optionWidget );
+ mGridLayout->addWidget( label, 0, 0 );
+
+ mUsername = new KLineEdit( optionWidget );
+ mGridLayout->addWidget( mUsername, 0, 1 );
+
+ label = new QLabel( i18n("Password:"), optionWidget );
+ mGridLayout->addWidget( label, 1, 0 );
+
+ mPassword = new KLineEdit( optionWidget );
+ mPassword->setEchoMode( QLineEdit::Password );
+ mGridLayout->addWidget( mPassword, 1, 1 );
+
+
+ mUseStringTable = new QCheckBox( i18n("Use String Table"), optionWidget );
+ mGridLayout->addMultiCellWidget( mUseStringTable, 2, 2, 0, 1 );
+
+ mOnlyReplace = new QCheckBox( i18n("Only Replace Entries"), optionWidget );
+ mGridLayout->addMultiCellWidget( mOnlyReplace, 3, 3, 0, 1 );
+
+ // Url
+ label = new QLabel( i18n("URL:"), optionWidget );
+ mGridLayout->addWidget( label, 4, 0 );
+
+ mUrl = new KLineEdit( optionWidget );
+ mGridLayout->addWidget( mUrl, 4, 1 );
+
+ // recvLimit
+ label = new QLabel( i18n("Receive Limit:"), optionWidget );
+ mGridLayout->addWidget( label, 5, 0 );
+
+ mRecvLimit = new QSpinBox( optionWidget );
+ mRecvLimit->setMinValue( 1 );
+ mRecvLimit->setMaxValue( 65536 );
+ mGridLayout->addWidget( mRecvLimit, 5, 1 );
+
+ // maxObjSize
+ label = new QLabel( i18n("Maximum Object Size"), optionWidget );
+ mGridLayout->addWidget( label, 6, 0 );
+
+ mMaxObjSize = new QSpinBox( optionWidget );
+ mMaxObjSize->setMinValue( 1 );
+ mMaxObjSize->setMaxValue( 65536 );
+ mGridLayout->addWidget( mMaxObjSize, 6, 1 );
+
+ topLayout()->addStretch( 1 );
+}
+
+void ConfigGuiSyncmlHttp::addLineEdit( QWidget *parent, const QString &text, KComboBox **edit, int row )
+{
+ QLabel *label = new QLabel( text, parent);
+ mGridLayout->addWidget( label, row, 0 );
+
+ *edit = new KComboBox( true, parent );
+ mGridLayout->addWidget( *edit, row, 1 );
+}
+
+void ConfigGuiSyncmlHttp::load( const QString &xml )
+{
+ QDomDocument document;
+ document.setContent( xml );
+
+ QDomElement docElement = document.documentElement();
+ QDomNode node;
+
+ for ( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
+ QDomElement element = node.toElement();
+ if ( element.tagName() == "username" ) {
+ mUsername->setText( element.text() );
+ } else if ( element.tagName() == "password" ) {
+ mPassword->setText( element.text() );
+ } else if ( element.tagName() == "url" ) {
+ if ( mUrl )
+ mUrl->setText( element.text() );
+ } else if ( element.tagName() == "port" ) {
+ if ( mPort )
+ mPort->setValue( element.text().toInt() );
+ } else if ( element.tagName() == "recvLimit" ) {
+ if ( mRecvLimit )
+ mRecvLimit->setValue( element.text().toInt() );
+ } else if ( element.tagName() == "maxObjSize" ) {
+ if ( mMaxObjSize )
+ mMaxObjSize->setValue( element.text().toInt() );
+ } else if ( element.tagName() == "usestringtable" ) {
+ mUseStringTable->setChecked( element.text() == "1" );
+ } else if ( element.tagName() == "onlyreplace" ) {
+ mOnlyReplace->setChecked( element.text() == "1" );
+ } else if ( element.tagName() == "contact_db" ) {
+ mContactDb->setCurrentText( element.text() );
+ } else if ( element.tagName() == "calendar_db" ) {
+ mCalendarDb->setCurrentText( element.text() );
+ } else if ( element.tagName() == "note_db" ) {
+ mNoteDb->setCurrentText( element.text() );
+ }
+ }
+}
+
+QString ConfigGuiSyncmlHttp::save() const
+{
+ QString xml;
+ xml = "<config>\n";
+ xml += "<username>" + mUsername->text() + "</username>\n";
+ xml += "<password>" + mPassword->text() + "</password>\n";
+
+ xml += "<url>" + mUrl->text() + "</url>\n";
+ xml += "<port>" + QString::number( mPort->value() ) + "</port>\n";
+ // Receive Limit
+ xml += "<recvLimit>" + QString::number( mRecvLimit->value() ) + "</recvLimit>\n";
+
+ // Maximal Object Size
+ xml += "<maxObjSize>" + QString::number( mMaxObjSize->value() ) + "</maxObjSize>\n";
+
+ xml += "<usestringtable>";
+ if ( mUseStringTable->isChecked() )
+ xml += "1";
+ else
+ xml += "0";
+ xml += "</usestringtable>\n";
+
+ xml += "<onlyreplace>";
+ if ( mOnlyReplace->isChecked() )
+ xml += "1";
+ else
+ xml += "0";
+ xml += "</onlyreplace>\n";
+
+ xml += "<contact_db>" + mContactDb->currentText() + "</contact_db>\n";
+ xml += "<calendar_db>" + mCalendarDb->currentText() + "</calendar_db>\n";
+ xml += "<note_db>" + mNoteDb->currentText() + "</note_db>\n";
+ xml += "</config>";
+
+ return xml;
+}
+
+#include "configguisyncmlhttp.moc"
+