You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
234 lines
8.2 KiB
234 lines
8.2 KiB
/* 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 kde-pim@kde.org
|
|
*/
|
|
|
|
//#include "options.h"
|
|
|
|
#include <tqpushbutton.h>
|
|
#include <tqbuttongroup.h>
|
|
#include <tqcheckbox.h>
|
|
#include <tqlineedit.h>
|
|
|
|
#include <tdemessagebox.h>
|
|
#include <tdeglobal.h>
|
|
#include <tdelocale.h>
|
|
#include <tdeconfigskeleton.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(TQWidget *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, TQ_SIGNAL( pressed() ),
|
|
this, TQ_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;
|
|
TQString username( page2->fUserName->text() );
|
|
TQString 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();
|
|
|
|
TQStringList conduits = KPilotSettings::installedConduits();
|
|
int version(0);
|
|
#define APPEND_CONDUIT(a) if (!conduits.contains(a)) conduits.append(a)
|
|
TQString applicationName(i18n("general TDE-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("TDE'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
|
|
|
|
TQString 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();
|
|
TQDialog::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);
|
|
}
|
|
}
|
|
|