diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch) | |
tree | 67208f7c145782a7e90b123b982ca78d88cc2c87 /wizards/sloxwizard.cpp | |
download | tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'wizards/sloxwizard.cpp')
-rw-r--r-- | wizards/sloxwizard.cpp | 291 |
1 files changed, 291 insertions, 0 deletions
diff --git a/wizards/sloxwizard.cpp b/wizards/sloxwizard.cpp new file mode 100644 index 000000000..8ac821dbc --- /dev/null +++ b/wizards/sloxwizard.cpp @@ -0,0 +1,291 @@ +/* + This file is part of kdepim. + + Copyright (c) 2004 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 "sloxwizard.h" +#include "sloxconfig.h" + +#include "kresources/slox/kabcsloxprefs.h" +#include "kresources/slox/kabcresourceslox.h" +#include "kresources/slox/kcalsloxprefs.h" +#include "kresources/slox/kcalresourceslox.h" + +#include <libkcal/resourcecalendar.h> + +#include <klineedit.h> +#include <klocale.h> + +#include <qlayout.h> +#include <qcheckbox.h> +#include <qlabel.h> + + +QString sloxUrl() +{ + QString url; + + if ( SloxConfig::self()->useHttps() ) url = "https://"; + else url = "http://"; + + url += SloxConfig::self()->server(); + + return url; +} + +class CreateSloxKcalResource : public KConfigPropagator::Change +{ + public: + CreateSloxKcalResource() + : KConfigPropagator::Change( i18n("Create SLOX Calendar Resource") ) + { + } + + void apply() + { + KCal::CalendarResourceManager m( "calendar" ); + m.readConfig(); + + KURL url( sloxUrl() ); + + KCalResourceSlox *r = new KCalResourceSlox( url ); + r->setResourceName( i18n("Openexchange Server") ); + r->prefs()->setUser( SloxConfig::self()->user() ); + r->prefs()->setPassword( SloxConfig::self()->password() ); + r->setSavePolicy( KCal::ResourceCached::SaveDelayed ); + r->setReloadPolicy( KCal::ResourceCached::ReloadInterval ); + r->setReloadInterval( 20 ); + m.add( r ); + m.writeConfig(); + + SloxConfig::self()->setKcalResource( r->identifier() ); + } +}; + +class UpdateSloxKcalResource : public KConfigPropagator::Change +{ + public: + UpdateSloxKcalResource() + : KConfigPropagator::Change( i18n("Update SLOX Calendar Resource") ) + { + } + + void apply() + { + KCal::CalendarResourceManager m( "calendar" ); + m.readConfig(); + + KURL url( sloxUrl() ); + + KCal::CalendarResourceManager::Iterator it; + for ( it = m.begin(); it != m.end(); ++it ) { + if ( (*it)->identifier() == SloxConfig::kcalResource() ) { + KCalResourceSlox *r = static_cast<KCalResourceSlox *>( *it ); + r->prefs()->setUrl( url.url() ); + r->prefs()->setUser( SloxConfig::self()->user() ); + r->prefs()->setPassword( SloxConfig::self()->password() ); + r->setSavePolicy( KCal::ResourceCached::SaveDelayed ); + r->setReloadPolicy( KCal::ResourceCached::ReloadInterval ); + r->setReloadInterval( 20 ); + } + } + m.writeConfig(); + } +}; + +class CreateSloxKabcResource : public KConfigPropagator::Change +{ + public: + CreateSloxKabcResource() + : KConfigPropagator::Change( i18n("Create SLOX Addressbook Resource") ) + { + } + + void apply() + { + KRES::Manager<KABC::Resource> m( "contact" ); + m.readConfig(); + + KURL url( sloxUrl() ); + QString user( SloxConfig::self()->user() ); + QString password( SloxConfig::self()->password() ); + + KABC::ResourceSlox *r = new KABC::ResourceSlox( url, user, password ); + r->setResourceName( i18n("Openexchange Server") ); + m.add( r ); + m.writeConfig(); + + SloxConfig::self()->setKabcResource( r->identifier() ); + } +}; + +class UpdateSloxKabcResource : public KConfigPropagator::Change +{ + public: + UpdateSloxKabcResource() + : KConfigPropagator::Change( i18n("Update SLOX Addressbook Resource") ) + { + } + + void apply() + { + KRES::Manager<KABC::Resource> m( "contact" ); + m.readConfig(); + + KURL url( sloxUrl() ); + + KRES::Manager<KABC::Resource>::Iterator it; + for ( it = m.begin(); it != m.end(); ++it ) { + if ( (*it)->identifier() == SloxConfig::kabcResource() ) { + KABC::ResourceSlox *r = static_cast<KABC::ResourceSlox *>( *it ); + r->prefs()->setUrl( url.url() ); + r->prefs()->setUser( SloxConfig::self()->user() ); + r->prefs()->setPassword( SloxConfig::self()->password() ); + } + } + m.writeConfig(); + } +}; + + +class SloxPropagator : public KConfigPropagator +{ + public: + SloxPropagator() + : KConfigPropagator( SloxConfig::self(), "slox.kcfg" ) + { + } + + ~SloxPropagator() + { + SloxConfig::self()->writeConfig(); + } + + protected: + void addCustomChanges( Change::List &changes ) + { + KCal::CalendarResourceManager m1( "calendar" ); + m1.readConfig(); + KCal::CalendarResourceManager::Iterator it; + for ( it = m1.begin(); it != m1.end(); ++it ) { + if ( (*it)->type() == "slox" ) break; + } + if ( it == m1.end() ) { + changes.append( new CreateSloxKcalResource ); + } else { + if ( (*it)->identifier() == SloxConfig::kcalResource() ) { + KCal::SloxPrefs *prefs = static_cast<KCalResourceSlox *>( *it )->prefs(); + if ( prefs->url() != sloxUrl() || + prefs->user() != SloxConfig::user() || + prefs->password() != SloxConfig::password() ) { + changes.append( new UpdateSloxKcalResource ); + } + } + } + + KRES::Manager<KABC::Resource> m2( "contact" ); + m2.readConfig(); + KRES::Manager<KABC::Resource>::Iterator it2; + for ( it2 = m2.begin(); it2 != m2.end(); ++it2 ) { + if ( (*it2)->type() == "slox" ) break; + } + if ( it2 == m2.end() ) { + changes.append( new CreateSloxKabcResource ); + } else { + if ( (*it2)->identifier() == SloxConfig::kabcResource() ) { + KABC::SloxPrefs *prefs = static_cast<KABC::ResourceSlox *>( *it2 )->prefs(); + if ( prefs->url() != sloxUrl() || + prefs->user() != SloxConfig::user() || + prefs->password() != SloxConfig::password() ) { + changes.append( new UpdateSloxKabcResource ); + } + } + } + } +}; + +SloxWizard::SloxWizard() : KConfigWizard( new SloxPropagator ) +{ + QFrame *page = createWizardPage( i18n("SUSE LINUX OpenExchange Server") ); + + QGridLayout *topLayout = new QGridLayout( page ); + topLayout->setSpacing( spacingHint() ); + + QLabel *label = new QLabel( i18n("Server name:"), page ); + topLayout->addWidget( label, 0, 0 ); + mServerEdit = new KLineEdit( page ); + topLayout->addWidget( mServerEdit, 0, 1 ); + + label = new QLabel( i18n("User name:"), page ); + topLayout->addWidget( label, 1, 0 ); + mUserEdit = new KLineEdit( page ); + topLayout->addWidget( mUserEdit, 1, 1 ); + + label = new QLabel( i18n("Password:"), page ); + topLayout->addWidget( label, 2, 0 ); + mPasswordEdit = new KLineEdit( page ); + mPasswordEdit->setEchoMode( KLineEdit::Password ); + topLayout->addWidget( mPasswordEdit, 2, 1 ); + + mSavePasswordCheck = new QCheckBox( i18n("Save password"), page ); + topLayout->addMultiCellWidget( mSavePasswordCheck, 3, 3, 0, 1 ); + + mSecureCheck = new QCheckBox( i18n("Encrypt communication with server"), + page ); + topLayout->addMultiCellWidget( mSecureCheck, 4, 4, 0, 1 ); + + topLayout->setRowStretch( 5, 1 ); + + setupRulesPage(); + setupChangesPage(); + + resize( 400, 300 ); +} + +SloxWizard::~SloxWizard() +{ +} + +QString SloxWizard::validate() +{ + KURL server( mServerEdit->text() ); + if ( !server.protocol().isEmpty() || + mServerEdit->text().isEmpty() || + mUserEdit->text().isEmpty() || + mPasswordEdit->text().isEmpty() ) + return i18n( "Please fill in all fields." ); + return QString::null; +} + +void SloxWizard::usrReadConfig() +{ + mServerEdit->setText( SloxConfig::self()->server() ); + mUserEdit->setText( SloxConfig::self()->user() ); + mPasswordEdit->setText( SloxConfig::self()->password() ); + mSavePasswordCheck->setChecked( SloxConfig::self()->savePassword() ); + mSecureCheck->setChecked( SloxConfig::self()->useHttps() ); +} + +void SloxWizard::usrWriteConfig() +{ + SloxConfig::self()->setServer( mServerEdit->text() ); + SloxConfig::self()->setUser( mUserEdit->text() ); + SloxConfig::self()->setPassword( mPasswordEdit->text() ); + SloxConfig::self()->setSavePassword( mSavePasswordCheck->isChecked() ); + SloxConfig::self()->setUseHttps( mSecureCheck->isChecked() ); +} |