diff options
Diffstat (limited to 'kpilot/kpilot/kpilotConfigWizard.cc')
-rw-r--r-- | kpilot/kpilot/kpilotConfigWizard.cc | 233 |
1 files changed, 233 insertions, 0 deletions
diff --git a/kpilot/kpilot/kpilotConfigWizard.cc b/kpilot/kpilot/kpilotConfigWizard.cc new file mode 100644 index 000000000..d21ec5d81 --- /dev/null +++ b/kpilot/kpilot/kpilotConfigWizard.cc @@ -0,0 +1,233 @@ +/* KPilot +** +** Copyright (C) 2004 by Reinhold Kainhofer +** +** A simple configuration wizard. +*/ + +/* +** 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 in a file called COPYING; if not, write to +** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +** MA 02110-1301, USA. +*/ + +/* +** Bug reports and questions can be sent to [email protected] +*/ + +//#include "options.h" + +#include <qpushbutton.h> +#include <qbuttongroup.h> +#include <qcheckbox.h> +#include <qlineedit.h> + +#include <kmessagebox.h> +#include <kglobal.h> +#include <klocale.h> +#include <kconfigskeleton.h> + +#include "kpilotConfig.h" +#include "options.h" + +#include "kpilotConfigWizard_app.h" +#include "kpilotConfigWizard_user.h" +#include "kpilotConfigWizard_address.h" +#include "kpilotConfigWizard_notes.h" +#include "kpilotConfigWizard_vcal.h" + + +#include "kpilotConfigWizard.moc" +#include "kpilotProbeDialog.h" + + +ConfigWizard::ConfigWizard(QWidget *parent, const char *n, int m) : + KWizard(parent, n), + fMode((Mode)m) +{ +// page1=new ConfigWizard_base1(this); +// addPage( page1, i18n("Select Connection Type") ); + page2=new ConfigWizard_base2(this); + addPage( page2, i18n("Pilot Info") ); + page3=new ConfigWizard_base3(this); + addPage( page3, i18n("Application to Sync With") ); + setFinishEnabled( page3, true ); + + setHelpEnabled( page2, false ); + setHelpEnabled( page3, false ); + + connect( page2->fProbeButton, SIGNAL( pressed() ), + this, SLOT( probeHandheld() ) ); + + KPilotSettings::self()->readConfig(); + page2->fUserName->setText( KPilotSettings::userName() ); + page2->fDeviceName->setText( KPilotSettings::pilotDevice() ); + page2->fPilotRunningPermanently->setChecked( KPilotSettings::startDaemonAtLogin() ); + +} + +ConfigWizard::~ConfigWizard() +{ +} + +void ConfigWizard::accept() +{ + FUNCTIONSETUP; + QString username( page2->fUserName->text() ); + QString devicename( page2->fDeviceName->text() ); +// int devicetype( page1->fConnectionType->selectedId() ); + enum eSyncApp { + eAppKDE=0, + //eAppKontact, + eAppEvolution, + eAppNone + } app; + app=(eSyncApp)( page3->fAppType->selectedId() ); + bool keepPermanently( page2->fPilotRunningPermanently->isChecked() ); +#ifdef DEBUG + DEBUGKPILOT<<fname<<"Keep permanently: "<<keepPermanently<<endl; +#endif + + KPilotSettings::setPilotDevice( devicename ); + KPilotSettings::setUserName(username); +// KPilotSettings::setEncoding("iso 8859-15"); + KPilotSettings::setDockDaemon( true ); + KPilotSettings::setKillDaemonAtExit( !keepPermanently); + KPilotSettings::setQuitAfterSync( !keepPermanently ); + KPilotSettings::setStartDaemonAtLogin( keepPermanently ); + KPilotSettings::setSyncType(0); + KPilotSettings::setFullSyncOnPCChange( true ); + KPilotSettings::setConflictResolution(0); + if ( !mDBs.isEmpty() ) + KPilotSettings::setDeviceDBs( mDBs ); + + KPilotWizard_vcalConfig*calendarConfig = new KPilotWizard_vcalConfig("Calendar"); + KPilotWizard_vcalConfig*todoConfig = new KPilotWizard_vcalConfig("ToDo"); + KPilotWizard_addressConfig*addressConfig = new KPilotWizard_addressConfig(); + KPilotWizard_notesConfig*notesConfig = new KPilotWizard_notesConfig(); + addressConfig->readConfig(); + notesConfig->readConfig(); + todoConfig->readConfig(); + calendarConfig->readConfig(); + + QStringList conduits = KPilotSettings::installedConduits(); + int version(0); +#define APPEND_CONDUIT(a) if (!conduits.contains(a)) conduits.append(a) + QString applicationName(i18n("general KDE-PIM")); + APPEND_CONDUIT("internal_fileinstall"); + APPEND_CONDUIT("todo-conduit"); + APPEND_CONDUIT("vcal-conduit"); + switch (app) { + case eAppEvolution: + applicationName=i18n("Gnome's PIM suite", "Evolution"); + + // TODO: Once the Evolution abook resource is finished, enable it... + conduits.remove("abbrowser_conduit"); + // addressConfig->setDefaults(); + // addressConfig->setAddressbookType( KPilotWizard_addressConfig::eAbookResource ); + //// addressConfig->revertToDefault("ArchiveDeleted"); + //// addressConfig->revertToDefault("ConflictResolution"); + + // nothing to do for knotes conduit yet (evolution doesn't have notes) + conduits.remove("knotes-conduit"); + + // the vcalconduits use the same config file, so set the correct groups + version = calendarConfig->conduitVersion(); + calendarConfig->setDefaults(); + calendarConfig->setCalendarType( KPilotWizard_vcalConfig::eCalendarLocal ); + calendarConfig->setCalendarFile( "$HOME/evolution/local/Calendar/calendar.ics" ); + calendarConfig->setConduitVersion( version ); + version = todoConfig->conduitVersion(); + todoConfig->setDefaults(); + todoConfig->setCalendarType( KPilotWizard_vcalConfig::eCalendarLocal ); + todoConfig->setCalendarFile( "$HOME/evolution/local/Tasks/tasks.ics" ); + todoConfig->setConduitVersion( version ); + + KMessageBox::information(this, i18n("KPilot cannot yet synchronize the addressbook with Evolution, so the addressbook conduit was disabled.\nWhen syncing the calendar or to-do list using KPilot please quit Evolution before the sync, otherwise you will lose data."), i18n("Restrictions with Evolution")); + break; + case eAppNone: + conduits.clear(); + APPEND_CONDUIT("internal_fileinstall"); + applicationName=i18n("Kpilot will sync with nothing","nothing (it will backup only)"); + break; +// case eAppKontact: + case eAppKDE: + applicationName=i18n("KDE's PIM suite", "Kontact"); + default: + APPEND_CONDUIT("knotes-conduit"); + APPEND_CONDUIT("abbrowser_conduit"); + // Set to the stdaddressbook, reset others to defaults + addressConfig->setAddressbookType( KPilotWizard_addressConfig::eAbookResource ); + addressConfig->setArchiveDeleted( true ); + addressConfig->setConflictResolution( -1 ); + // nothing to do for knotes conduit yet + // notesConfig->set... + // the vcalconduits use the same config file, so set the correct groups + int version = calendarConfig->conduitVersion(); + calendarConfig->setDefaults(); + calendarConfig->setCalendarType( KPilotWizard_vcalConfig::eCalendarResource ); + calendarConfig->setConduitVersion( version ); + version = todoConfig->conduitVersion(); + todoConfig->setDefaults(); + todoConfig->setCalendarType( KPilotWizard_vcalConfig::eCalendarResource ); + todoConfig->setConduitVersion( version ); + break; + } + addressConfig->writeConfig(); + notesConfig->writeConfig(); + todoConfig->writeConfig(); + calendarConfig->writeConfig(); + + KPILOT_DELETE(addressConfig); + KPILOT_DELETE(notesConfig); + KPILOT_DELETE(todoConfig); + KPILOT_DELETE(calendarConfig); + + KPilotSettings::setInstalledConduits( conduits ); +#undef APPEND_CONDUIT + + QString finishMessage = i18n("KPilot is now configured to sync with %1.").arg(applicationName); + if (fMode == InDialog) + { + finishMessage.append(CSL1("\n")); + finishMessage.append(i18n( + "The remaining options in the config dialog are advanced options and can " + "be used to fine-tune KPilot.")); + } + + KMessageBox::information(this, finishMessage, + i18n("Automatic Configuration Finished")); + KPilotSettings::self()->writeConfig(); + QDialog::accept(); +} + +void ConfigWizard::probeHandheld() +{ + if ( KMessageBox::warningContinueCancel( this, i18n("Please put the handheld " + "in the cradle, press the hotsync button and click on \"Continue\".\n\nSome " + "kernel versions (Linux 2.6.x) have problems with the visor kernel module " + "(for Sony Clie devices). Running an autodetection in that case might block " + "the computer from doing hotsyncs until it is rebooted. In that case it might " + "be advisable not to continue."), + i18n("Handheld Detection") ) == KMessageBox::Continue ) { + ProbeDialog *probeDialog = new ProbeDialog( this ); + if ( probeDialog->exec() && probeDialog->detected() ) { + page2->fUserName->setText( probeDialog->userName() ); + page2->fDeviceName->setText( probeDialog->device() ); + mDBs = probeDialog->dbs(); + } + KPILOT_DELETE(probeDialog); + } +} + |