summaryrefslogtreecommitdiffstats
path: root/kpilot/kpilot/kpilot.cc
diff options
context:
space:
mode:
Diffstat (limited to 'kpilot/kpilot/kpilot.cc')
-rw-r--r--kpilot/kpilot/kpilot.cc1136
1 files changed, 0 insertions, 1136 deletions
diff --git a/kpilot/kpilot/kpilot.cc b/kpilot/kpilot/kpilot.cc
deleted file mode 100644
index 4b38c509a..000000000
--- a/kpilot/kpilot/kpilot.cc
+++ /dev/null
@@ -1,1136 +0,0 @@
-/* KPilot
-**
-** Copyright (C) 1998-2001 by Dan Pilone
-** Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
-**
-** This is the main program in KPilot.
-**
-*/
-
-/*
-** 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 <tqfile.h>
-#include <tqptrlist.h>
-#include <tqstring.h>
-#include <tqvbox.h>
-#include <tqtimer.h>
-
-#include <kjanuswidget.h>
-#include <kurl.h>
-#include <kmessagebox.h>
-#include <kstatusbar.h>
-#include <kconfig.h>
-#include <kwin.h>
-#include <kcombobox.h>
-#include <kmenubar.h>
-#include <kstandarddirs.h>
-#include <kaboutdata.h>
-#include <kcmdlineargs.h>
-#include <kiconloader.h>
-#include <kdebug.h>
-#include <kaction.h>
-#include <kactionclasses.h>
-#include <kstdaction.h>
-#include <kuniqueapplication.h>
-#include <kkeydialog.h>
-#include <kedittoolbar.h>
-#include <kcmultidialog.h>
-#include <kprogress.h>
-#include <klibloader.h>
-
-
-#include "kpilotConfigDialog.h"
-#include "kpilotConfig.h"
-#include "kpilotConfigWizard.h"
-
-#include "pilotComponent.h"
-#include "pilotDatabase.h"
-
-#include "addressWidget.h"
-#include "memoWidget.h"
-#include "fileInstallWidget.h"
-#include "logWidget.h"
-#include "dbviewerWidget.h"
-#include "datebookWidget.h"
-#include "todoWidget.h"
-
-#include "conduitConfigDialog.h"
-
-#include "pilotDaemonDCOP.h"
-#include "pilotDaemonDCOP_stub.h"
-
-#include "kpilot.moc"
-
-class KPilotInstaller::KPilotPrivate
-{
-public:
- typedef TQPtrList<PilotComponent> ComponentList;
-
-private:
- ComponentList fPilotComponentList;
-
-public:
- ComponentList &list() { return fPilotComponentList; } ;
-} ;
-
-KPilotInstaller::KPilotInstaller() :
- DCOPObject("KPilotIface"),
- KMainWindow(0),
- fDaemonStub(new PilotDaemonDCOP_stub("kpilotDaemon",
- "KPilotDaemonIface")),
- fP(new KPilotPrivate),
- fQuitAfterCopyComplete(false),
- fManagingWidget(0L),
- fDaemonWasRunning(true),
- fAppStatus(Startup),
- fFileInstallWidget(0L),
- fLogWidget(0L)
-{
- FUNCTIONSETUP;
-
- readConfig();
- setupWidget();
-
- PilotRecord::allocationInfo();
- fConfigureKPilotDialogInUse = false;
-}
-
-KPilotInstaller::~KPilotInstaller()
-{
- FUNCTIONSETUP;
- killDaemonIfNeeded();
- delete fDaemonStub;
- PilotRecord::allocationInfo();
- (void) PilotDatabase::instanceCount();
-}
-
-void KPilotInstaller::killDaemonIfNeeded()
-{
- FUNCTIONSETUP;
- if (KPilotSettings::killDaemonAtExit())
- {
- if (!fDaemonWasRunning)
- {
- DEBUGKPILOT << fname << ": Killing daemon." << endl;
- getDaemon().quitNow();
- }
- }
-}
-
-void KPilotInstaller::startDaemonIfNeeded()
-{
- FUNCTIONSETUP;
-
- fAppStatus=WaitingForDaemon;
-
- TQString daemonError;
- TQCString daemonDCOP;
- int daemonPID;
-
- TQString s = getDaemon().statusString();
-
- DEBUGKPILOT << fname << ": Daemon status is "
- << ( s.isEmpty() ? CSL1("<none>") : s ) << endl;
-
- if ((s.isEmpty()) || (!getDaemon().ok()))
- {
- DEBUGKPILOT << fname
- << ": Daemon not responding, trying to start it."
- << endl;
- fLogWidget->addMessage(i18n("Starting the KPilot daemon ..."));
- fDaemonWasRunning = false;
- }
- else
- {
- fDaemonWasRunning = true;
- }
-
- if (!fDaemonWasRunning && KApplication::startServiceByDesktopName(
- CSL1("kpilotdaemon"),
- TQString::null, &daemonError, &daemonDCOP, &daemonPID
- , "0" /* no notify */
- ))
- {
- WARNINGKPILOT << ": Can't start daemon : " << daemonError << endl;
- if (fLogWidget)
- {
- fLogWidget->addMessage(i18n("Could not start the "
- "KPilot daemon. The system error message "
- "was: &quot;%1&quot;").arg(daemonError));
- }
- fAppStatus=Error;
- }
- else
- {
- DEBUGKPILOT << fname << ": Daemon status is " << s << endl;
- if (fLogWidget)
- {
- int wordoffset;
- s.remove(0,12);
- wordoffset=s.find(';');
- if (wordoffset>0) s.truncate(wordoffset);
-
- fLogWidget->addMessage(
- i18n("Daemon status is `%1'")
- .arg(s.isEmpty() ? i18n("not running") : s ));
- }
- fAppStatus=Normal;
- }
-}
-
-void KPilotInstaller::readConfig()
-{
- FUNCTIONSETUP;
-
- KPilotSettings::self()->readConfig();
-
- (void) Pilot::setupPilotCodec(KPilotSettings::encoding());
- (void) Pilot::setupPilotCodec(KPilotSettings::encoding());
-
- if (fLogWidget)
- {
- fLogWidget->addMessage(i18n("Using character set %1 on "
- "the handheld.")
- .arg(Pilot::codecName()));
- }
-}
-
-
-void KPilotInstaller::setupWidget()
-{
- FUNCTIONSETUP;
-
- setCaption(CSL1("KPilot"));
- setMinimumSize(500, 405);
-
-
- fManagingWidget = new KJanusWidget(this,"mainWidget",
- KJanusWidget::IconList);
- fManagingWidget->setMinimumSize(fManagingWidget->sizeHint());
- fManagingWidget->show();
- setCentralWidget(fManagingWidget);
- connect( fManagingWidget, TQT_SIGNAL( aboutToShowPage ( TQWidget* ) ),
- this, TQT_SLOT( slotAboutToShowComponent( TQWidget* ) ) );
-
- initIcons();
- initMenu();
- initComponents();
-
- setMinimumSize(sizeHint() + TQSize(10,60));
-
- createGUI(CSL1("kpilotui.rc"), false);
- setAutoSaveSettings();
-}
-
-void KPilotInstaller::initComponents()
-{
- FUNCTIONSETUP;
-
- TQString defaultDBPath = KPilotConfig::getDefaultDBPath();
-
- TQPixmap pixmap;
- TQString pixfile;
- TQWidget *w;
-
-#define ADDICONPAGE(a,b) \
- pixmap = KGlobal::iconLoader()->loadIcon(b, KIcon::Desktop, 64); \
- w = getManagingWidget()->addVBoxPage(a,TQString::null, pixmap) ;
-
- ADDICONPAGE(i18n("HotSync"),CSL1("kpilotbhotsync"));
- fLogWidget = new LogWidget(w);
- addComponentPage(fLogWidget, i18n("HotSync"));
- fLogWidget->setShowTime(true);
-
- ADDICONPAGE(i18n("To-do Viewer"),CSL1("kpilottodo"));
- addComponentPage(new TodoWidget(w,defaultDBPath),
- i18n("To-do Viewer"));
-
- ADDICONPAGE(i18n("Address Viewer"),CSL1("kpilotaddress"));
- addComponentPage(new AddressWidget(w,defaultDBPath),
- i18n("Address Viewer"));
-
- ADDICONPAGE(i18n("Memo Viewer"),CSL1("kpilotknotes"));
- addComponentPage(new MemoWidget(w, defaultDBPath),
- i18n("Memo Viewer"));
-
- ADDICONPAGE(i18n("File Installer"),CSL1("kpilotfileinstaller"));
- fFileInstallWidget = new FileInstallWidget(
- w,defaultDBPath);
- addComponentPage(fFileInstallWidget, i18n("File Installer"));
-
- ADDICONPAGE(i18n("Generic DB Viewer"),CSL1("kpilotdb"));
- addComponentPage(new GenericDBWidget(w,defaultDBPath),
- i18n("Generic DB Viewer"));
-
-#undef ADDICONPAGE
-
- TQTimer::singleShot(500,this,TQT_SLOT(initializeComponents()));
-}
-
-
-
-void KPilotInstaller::initIcons()
-{
- FUNCTIONSETUP;
-
-}
-
-
-
-void KPilotInstaller::slotAboutToShowComponent( TQWidget *c )
-{
- FUNCTIONSETUP;
- int ix = fManagingWidget->pageIndex( c );
- PilotComponent*compToShow = fP->list().at(ix);
- for ( PilotComponent *comp = fP->list().first(); comp; comp = fP->list().next() )
- {
- // Load/Unload the data needed
- comp->showKPilotComponent( comp == compToShow );
- }
-}
-
-void KPilotInstaller::slotSelectComponent(PilotComponent *c)
-{
- FUNCTIONSETUP;
- if (!c)
- {
- WARNINGKPILOT << "Not a widget." << endl;
- return;
- }
-
- TQObject *o = c->parent();
- if (!o)
- {
- WARNINGKPILOT << "Widget has no parent." << endl;
- return;
- }
-
- TQWidget *parent = dynamic_cast<TQWidget *>(o);
- if (!parent)
- {
- WARNINGKPILOT << "Widget's parent is not a widget." << endl;
- return;
- }
-
- int index = fManagingWidget->pageIndex(parent);
-
- if (index < 0)
- {
- WARNINGKPILOT << "Bogus index " << index << endl;
- return;
- }
-
- for ( PilotComponent *comp = fP->list().first(); comp; comp = fP->list().next() )
- {
- // Load/Unload the data needed
- comp->showKPilotComponent( comp == c );
- }
- fManagingWidget->showPage(index);
-}
-
-
-
-
-void KPilotInstaller::slotBackupRequested()
-{
- FUNCTIONSETUP;
- setupSync(SyncAction::SyncMode::eBackup,
- i18n("Next sync will be a backup. ") +
- i18n("Please press the HotSync button."));
-}
-
-void KPilotInstaller::slotRestoreRequested()
-{
- FUNCTIONSETUP;
- setupSync(SyncAction::SyncMode::eRestore,
- i18n("Next sync will restore the Pilot from backup. ") +
- i18n("Please press the HotSync button."));
-}
-
-void KPilotInstaller::slotHotSyncRequested()
-{
- FUNCTIONSETUP;
- setupSync(SyncAction::SyncMode::eHotSync,
- i18n("Next sync will be a regular HotSync. ") +
- i18n("Please press the HotSync button."));
-}
-
-void KPilotInstaller::slotFullSyncRequested()
-{
- FUNCTIONSETUP;
- setupSync(SyncAction::SyncMode::eFullSync,
- i18n("Next sync will be a Full Sync. ") +
- i18n("Please press the HotSync button."));
-}
-
-void KPilotInstaller::slotHHtoPCRequested()
-{
- FUNCTIONSETUP;
- setupSync(SyncAction::SyncMode::eCopyHHToPC,
- i18n("Next sync will copy Handheld data to PC. ") +
- i18n("Please press the HotSync button."));
-}
-
-void KPilotInstaller::slotPCtoHHRequested()
-{
- FUNCTIONSETUP;
- setupSync(SyncAction::SyncMode::eCopyPCToHH,
- i18n("Next sync will copy PC data to Handheld. ") +
- i18n("Please press the HotSync button."));
-}
-
-/* virtual DCOP */ ASYNC KPilotInstaller::daemonStatus(int i)
-{
- FUNCTIONSETUP;
- DEBUGKPILOT << fname << ": Received daemon message " << i << endl;
-
- switch(i)
- {
- case KPilotDCOP::StartOfHotSync :
- if (fAppStatus==Normal)
- {
- fAppStatus=WaitingForDaemon;
- componentPreSync();
- }
- break;
- case KPilotDCOP::EndOfHotSync :
- if (fAppStatus==WaitingForDaemon)
- {
- componentPostSync();
- fAppStatus=Normal;
- }
- break;
- case KPilotDCOP::DaemonQuit :
- if (fLogWidget)
- {
- fLogWidget->logMessage(i18n("The daemon has exited."));
- fLogWidget->logMessage(i18n("No further HotSyncs are possible."));
- fLogWidget->logMessage(i18n("Restart the daemon to HotSync again."));
- }
- fAppStatus=WaitingForDaemon;
- break;
- case KPilotDCOP::None :
- WARNINGKPILOT << "Unhandled status message " << i << endl;
- break;
- }
-}
-
-/* virtual DCOP*/ int KPilotInstaller::kpilotStatus()
-{
- return status();
-}
-
-bool KPilotInstaller::componentPreSync()
-{
- FUNCTIONSETUP;
-
- TQString reason;
- TQString rprefix(i18n("Cannot start a Sync now. %1"));
-
- for (fP->list().first();
- fP->list().current(); fP->list().next())
- {
- if (!fP->list().current()->preHotSync(reason))
- break;
- }
-
- if (!reason.isNull())
- {
- KMessageBox::sorry(this,
- rprefix.arg(reason),
- i18n("Cannot start Sync"));
- return false;
- }
- return true;
-}
-
-void KPilotInstaller::componentPostSync()
-{
- FUNCTIONSETUP;
-
- for (fP->list().first();
- fP->list().current(); fP->list().next())
- {
- fP->list().current()->postHotSync();
- }
-}
-
-void KPilotInstaller::setupSync(int kind, const TQString & message)
-{
- FUNCTIONSETUP;
-
- if (!componentPreSync())
- {
- return;
- }
- if (!message.isEmpty())
- {
- TQString m(message);
- if (fLogWidget)
- {
- fLogWidget->logMessage(m);
- }
- }
- getDaemon().requestSync(kind);
-}
-
-void KPilotInstaller::closeEvent(TQCloseEvent * e)
-{
- FUNCTIONSETUP;
-
- quit();
- e->accept();
-}
-
-void KPilotInstaller::initMenu()
-{
- FUNCTIONSETUP;
-
- KAction *a;
-
- KActionMenu *syncPopup;
-
- syncPopup = new KActionMenu(i18n("HotSync"), CSL1("kpilot"),
- actionCollection(), "popup_hotsync");
- syncPopup->setToolTip(i18n("Select the kind of HotSync to perform next."));
- syncPopup->setWhatsThis(i18n("Select the kind of HotSync to perform next. "
- "This applies only to the next HotSync; to change the default, use "
- "the configuration dialog."));
- connect(syncPopup, TQT_SIGNAL(activated()),
- this, TQT_SLOT(slotHotSyncRequested()));
-
- // File actions, keep this list synced with kpilotui.rc and pilotDaemon.cc
- a = new KAction(i18n("&HotSync"), CSL1("hotsync"), 0,
- this, TQT_SLOT(slotHotSyncRequested()),
- actionCollection(), "file_hotsync");
- a->setToolTip(i18n("Next HotSync will be normal HotSync."));
- a->setWhatsThis(i18n("Tell the daemon that the next HotSync "
- "should be a normal HotSync."));
- syncPopup->insert(a);
-
- a = new KAction(i18n("Full&Sync"), CSL1("fullsync"), 0,
- this, TQT_SLOT(slotFullSyncRequested()),
- actionCollection(), "file_fullsync");
- a->setToolTip(i18n("Next HotSync will be a FullSync."));
- a->setWhatsThis(i18n("Tell the daemon that the next HotSync "
- "should be a FullSync (check data on both sides)."));
- syncPopup->insert(a);
-
- a = new KAction(i18n("&Backup"), CSL1("backup"), 0,
- this, TQT_SLOT(slotBackupRequested()),
- actionCollection(), "file_backup");
- a->setToolTip(i18n("Next HotSync will be backup."));
- a->setWhatsThis(i18n("Tell the daemon that the next HotSync "
- "should back up the Handheld to the PC."));
- syncPopup->insert(a);
-
- a = new KAction(i18n("&Restore"), CSL1("restore"), 0,
- this, TQT_SLOT(slotRestoreRequested()),
- actionCollection(), "file_restore");
- a->setToolTip(i18n("Next HotSync will be restore."));
- a->setWhatsThis(i18n("Tell the daemon that the next HotSync "
- "should restore the Handheld from data on the PC."));
- syncPopup->insert(a);
-
- a = new KAction(i18n("Copy Handheld to PC"), TQString::null, 0,
- this, TQT_SLOT(slotHHtoPCRequested()),
- actionCollection(), "file_HHtoPC");
- a->setToolTip(i18n("Next HotSync will be backup."));
- a->setWhatsThis(i18n("Tell the daemon that the next HotSync "
- "should copy all data from the Handheld to the PC, "
- "overwriting entries on the PC."));
- syncPopup->insert(a);
-
- a = new KAction(i18n("Copy PC to Handheld"), TQString::null, 0,
- this, TQT_SLOT(slotPCtoHHRequested()),
- actionCollection(), "file_PCtoHH");
- a->setToolTip(i18n("Next HotSync will copy PC to Handheld."));
- a->setWhatsThis(i18n("Tell the daemon that the next HotSync "
- "should copy all data from the PC to the Handheld, "
- "overwriting entries on the Handheld."));
- syncPopup->insert(a);
-
-
-#if 0
- a = new KAction(i18n("&List Only"),CSL1("listsync"),0,
- this,TQT_SLOT(slotTestSyncRequested()),
- actionCollection(), "file_list");
- a->setToolTip(i18n("Next HotSync will list databases."));
- a->setWhatsThis(i18n("Tell the daemon that the next HotSync "
- "should just list the files on the Handheld and do nothing "
- "else."));
- syncPopup->insert(a);
-#endif
-
-
- a = new KAction(i18n("Rese&t Link"),CSL1("reload"), 0,
- this, TQT_SLOT(slotResetLink()),
- actionCollection(),"file_reload");
- a->setToolTip(i18n("Reset the device connection."));
- a->setWhatsThis(i18n("Try to reset the daemon and its connection "
- "to the Handheld."));
-
-
- a = KStdAction::quit(this, TQT_SLOT(quit()), actionCollection());
- a->setWhatsThis(i18n("Quit KPilot, (and stop the daemon "
- "if configured that way)."));
-
- // View actions
-
- // Options actions
- createStandardStatusBarAction();
- setStandardToolBarMenuEnabled(true);
-
- (void) KStdAction::keyBindings(this, TQT_SLOT(optionsConfigureKeys()),
- actionCollection());
- (void) KStdAction::configureToolbars(this, TQT_SLOT(optionsConfigureToolbars()),
- actionCollection());
- (void) KStdAction::preferences(this, TQT_SLOT(configure()),
- actionCollection());
-
- a = new KAction(i18n("Configuration &Wizard..."), CSL1("wizard"), 0,
- this, TQT_SLOT(configureWizard()),
- actionCollection(), "options_configure_wizard");
- a->setWhatsThis(i18n("Configure KPilot using the configuration wizard."));
-
-}
-
-void KPilotInstaller::fileInstalled(int)
-{
- FUNCTIONSETUP;
-}
-
-void KPilotInstaller::quit()
-{
- FUNCTIONSETUP;
-
- for (fP->list().first();
- fP->list().current(); fP->list().next())
- {
- TQString reason;
- if (!fP->list().current()->preHotSync(reason))
- {
- WARNINGKPILOT
- << "Couldn't save "
- << fP->list().current()->name()
- << endl;
- }
- }
-
- killDaemonIfNeeded();
- kapp->quit();
-}
-
-void KPilotInstaller::addComponentPage(PilotComponent * p,
- const TQString & name)
-{
- FUNCTIONSETUP;
-
- if (!p)
- {
- WARNINGKPILOT << "Adding NULL component?" << endl;
- return;
- }
-
- fP->list().append(p);
-
- // The first component added gets id 1, while the title
- // screen -- added elsewhere -- has id 0.
- //
- // fManagingWidget->addWidget(p, fP->list().count());
-
-
- const char *componentname = p->name("(none)");
- char *actionname = 0L;
- int actionnameLength = 0;
-
- if (strncmp(componentname, "component_", 10) == 0)
- {
- actionnameLength = strlen(componentname) - 10 + 8;
- actionname = new char[actionnameLength];
-
- strlcpy(actionname, "view_", actionnameLength);
- strlcat(actionname, componentname + 10, actionnameLength);
- }
- else
- {
- actionnameLength = strlen(componentname) + 8;
- actionname = new char[actionnameLength];
-
- strlcpy(actionname, "view_", actionnameLength);
- strlcat(actionname, componentname, actionnameLength);
- }
-
- KToggleAction *pt =
- new KToggleAction(name, /* "kpilot" -- component icon, */ 0,
- p, TQT_SLOT(slotShowComponent()),
- actionCollection(), actionname);
-
- pt->setExclusiveGroup(CSL1("view_menu"));
-
- connect(p, TQT_SIGNAL(showComponent(PilotComponent *)),
- this, TQT_SLOT(slotSelectComponent(PilotComponent *)));
-}
-
-/* slot */ void KPilotInstaller::initializeComponents()
-{
- FUNCTIONSETUP;
-
-/* for (PilotComponent *p = fP->list().first();
- p ; p = fP->list().next())
- {
- p->initialize();
- }*/
-}
-
-
-void KPilotInstaller::optionsConfigureKeys()
-{
- FUNCTIONSETUP;
- KKeyDialog::configure( actionCollection() );
-}
-
-void KPilotInstaller::optionsConfigureToolbars()
-{
- FUNCTIONSETUP;
- // use the standard toolbar editor
- // This was added in KDE 3.1
- saveMainWindowSettings( KGlobal::config(), autoSaveGroup() );
- KEditToolbar dlg(actionCollection());
- connect(&dlg, TQT_SIGNAL(newToolbarConfig()), this, TQT_SLOT(slotNewToolbarConfig()));
- dlg.exec();
-}
-
-
-void KPilotInstaller::slotNewToolbarConfig()
-{
- FUNCTIONSETUP;
- // recreate our GUI
- createGUI();
- applyMainWindowSettings( KGlobal::config(), autoSaveGroup() );
-}
-
-void KPilotInstaller::slotResetLink()
-{
- FUNCTIONSETUP;
- getDaemon().reloadSettings();
-}
-
-/*
-** Can't be a member function because it needs to be called even with no KPilotInstaller.
-*/
-static bool runConfigure(PilotDaemonDCOP_stub &daemon,TQWidget *parent)
-{
- FUNCTIONSETUP;
- bool ret = false;
-
- // Display the (modal) options page.
- //
- //
- int rememberedSync = daemon.nextSyncType();
- daemon.requestSync(0);
-
- KPilotSettings::self()->readConfig();
-
- KCMultiDialog *options = new KCMultiDialog( KDialogBase::Plain, i18n("Configuration"), parent, "KPilotPreferences", true );
- options->addModule( CSL1("kpilot_config.desktop") );
-
- if (!options)
- {
- WARNINGKPILOT << "Can't allocate KPilotOptions object" << endl;
- daemon.requestSync(rememberedSync);
- return false;
- }
-
- int r = options->exec();
-
- if ( r && options->result() )
- {
- DEBUGKPILOT << fname << ": Updating settings." << endl;
-
- // The settings are changed in the external module!!!
- KPilotSettings::self()->config()->sync();
- KPilotSettings::self()->readConfig();
-
- // Update the daemon to reflect new settings.
- // @TODO: This should also be done when pressing apply without
- // closing the dialog.
- //
- daemon.reloadSettings();
- ret = true;
- }
-
- KPILOT_DELETE(options);
- daemon.requestSync(rememberedSync);
-
- KPilotConfig::sync();
- return ret;
-}
-
-/*
- * Run the config wizard -- this takes a little library magic, and
- * it might fail entirely; returns false if no wizard could be run,
- * or true if the wizard runs (says nothing about it being OK'ed or
- * canceled, though).
- */
-typedef enum { Failed, OK, Cancel } WizardResult;
-static WizardResult runWizard(PilotDaemonDCOP_stub &daemon,TQWidget *parent)
-{
- FUNCTIONSETUP;
- WizardResult ret = Failed ;
- int rememberedSync = daemon.nextSyncType();
- daemon.requestSync(0);
-
- KPilotSettings::self()->readConfig();
- // Declarations at top because of goto's in this function
- ConfigWizard *(* f) (TQWidget *, int) = 0L ;
- ConfigWizard *w = 0L;
- KLibrary *l = KLibLoader::self()->library("kcm_kpilot");
-
- if (!l)
- {
- WARNINGKPILOT << "Couldn't load library!" << endl;
- goto sorry;
- }
-
- if (l->hasSymbol("create_wizard"))
- {
- f = ( ConfigWizard * (*) (TQWidget *, int) ) (l->symbol("create_wizard")) ;
- }
-
- if (!f)
- {
- WARNINGKPILOT << "No create_wizard() in library." << endl;
- goto sorry;
- }
-
- w = f(parent,ConfigWizard::Standalone);
- if (!w)
- {
- WARNINGKPILOT << "Can't create wizard." << endl;
- goto sorry;
- }
-
- if (w->exec())
- {
- KPilotSettings::self()->readConfig();
- ret = OK;
- }
- else
- {
- ret = Cancel;
- }
- KPILOT_DELETE(w);
-
-sorry:
- if (Failed == ret)
- {
- KMessageBox::sorry(parent,
- i18n("The library containing the configuration wizard for KPilot "
- "could not be loaded, and the wizard is not available. "
- "Please try to use the regular configuration dialog."),
- i18n("Wizard Not Available"));
- }
-
- if (OK == ret)
- {
- KPilotConfig::updateConfigVersion();
- KPilotSettings::writeConfig();
- KPilotConfig::sync();
- }
-
- daemon.requestSync(rememberedSync);
- return ret;
-}
-
-void KPilotInstaller::componentUpdate()
-{
- FUNCTIONSETUP;
-
- TQString defaultDBPath = KPilotConfig::getDefaultDBPath();
- bool dbPathChanged = false;
-
- for (fP->list().first();
- fP->list().current();
- fP->list().next())
- {
-// TODO_RK: update the current component to use the new settings
-// fP->list().current()->initialize();
- PilotComponent *p = fP->list().current();
- if (p && (p->dbPath() != defaultDBPath))
- {
- dbPathChanged = true;
- p->setDBPath(defaultDBPath);
- }
- }
-
- if (!dbPathChanged) // done if the username didn't change
- {
- return;
- }
-
- // Otherwise, need to re-load the databases
- //
- if (fLogWidget)
- {
- fLogWidget->logMessage(i18n("Changed username to `%1'.")
- .arg(KPilotSettings::userName()));
- fManagingWidget->showPage(0);
- slotAboutToShowComponent(fLogWidget);
- }
- else
- {
- int ix = fManagingWidget->activePageIndex();
- PilotComponent *component = 0L;
- if (ix>=0)
- {
- component = fP->list().at(ix);
- }
- if (component)
- {
- component->hideComponent(); // Throw away current data
- component->showComponent(); // Reload
- }
- }
-}
-
-/* virtual DCOP */ ASYNC KPilotInstaller::configureWizard()
-{
- FUNCTIONSETUP;
-
- if ( fAppStatus!=Normal || fConfigureKPilotDialogInUse )
- {
- if (fLogWidget)
- {
- fLogWidget->addMessage(i18n("Cannot run KPilot's configuration wizard right now (KPilot's UI is already busy)."));
- }
- return;
- }
- fAppStatus=UIBusy;
- fConfigureKPilotDialogInUse = true;
-
- if (runWizard(getDaemon(),this) == OK)
- {
- componentUpdate();
- }
-
- fConfigureKPilotDialogInUse = false;
- fAppStatus=Normal;
-}
-
-/* virtual DCOP */ ASYNC KPilotInstaller::configure()
-{
- FUNCTIONSETUP;
-
- if ( fAppStatus!=Normal || fConfigureKPilotDialogInUse )
- {
- if (fLogWidget)
- {
- fLogWidget->addMessage(i18n("Cannot configure KPilot right now (KPilot's UI is already busy)."));
- }
- return;
- }
- fAppStatus=UIBusy;
- fConfigureKPilotDialogInUse = true;
- if (runConfigure(getDaemon(),this))
- {
- componentUpdate();
- }
-
- fConfigureKPilotDialogInUse = false;
- fAppStatus=Normal;
-}
-
-
-/* static */ const char *KPilotInstaller::version(int kind)
-{
- FUNCTIONSETUP;
- // I don't think the program title needs to be translated. (ADE)
- //
- //
- if (kind)
- {
- return "kpilot.cc";
- }
- else
- {
- return "KPilot v" KPILOT_VERSION;
- }
-}
-
-// Command line options descriptions.
-//
-//
-//
-//
-static KCmdLineOptions kpilotoptions[] = {
- {"s", 0, 0},
- {"setup",
- I18N_NOOP("Setup the Pilot device, conduits and other parameters"),
- 0L},
- {"debug <level>", I18N_NOOP("Set debugging level"), "0"},
- KCmdLineLastOption
-};
-
-
-
-
-// "Regular" mode == 0
-// setup mode == 's'
-//
-// This is only changed by the --setup flag --
-// kpilot still does a setup the first time it is run.
-//
-//
-KPilotConfig::RunMode run_mode = KPilotConfig::Normal;
-
-
-
-int main(int argc, char **argv)
-{
- FUNCTIONSETUP;
-
- KAboutData about("kpilot", I18N_NOOP("KPilot"),
- KPILOT_VERSION,
- "KPilot - HotSync software for KDE\n\n",
- KAboutData::License_GPL,
- "(c) 1998-2000,2001, Dan Pilone (c) 2000-2006, Adriaan de Groot",
- 0L,
- "http://www.kpilot.org/"
- );
- about.addAuthor("Dan Pilone",
- I18N_NOOP("Project Leader"),
- "pilone@slac.com" );
- about.addAuthor("Adriaan de Groot",
- I18N_NOOP("Maintainer"),
- "groot@kde.org", "http://www.kpilot.org/");
- about.addAuthor("Reinhold Kainhofer",
- I18N_NOOP("Core and conduits developer"), "reinhold@kainhofer.com", "http://reinhold.kainhofer.com/Linux/");
- about.addAuthor("Jason 'vanRijn' Kasper",
- I18N_NOOP("Core and conduits developer"),
- "vR@movingparts.net", "http://movingparts.net/");
- about.addCredit("Preston Brown", I18N_NOOP("VCal conduit"));
- about.addCredit("Greg Stern", I18N_NOOP("Abbrowser conduit"));
- about.addCredit("Chris Molnar", I18N_NOOP("Expenses conduit"));
- about.addCredit("Jörn Ahrens", I18N_NOOP("Notepad conduit, Bugfixer"));
- about.addCredit("Heiko Purnhagen", I18N_NOOP("Bugfixer"));
- about.addCredit("Jörg Habenicht", I18N_NOOP("Bugfixer"));
- about.addCredit("Martin Junius",
- I18N_NOOP("XML GUI"),
- "mj@m-j-s.net", "http://www.m-j-s.net/kde/");
- about.addCredit("David Bishop",
- I18N_NOOP(".ui files"));
- about.addCredit("Aaron J. Seigo",
- I18N_NOOP("Bugfixer, coolness"));
- about.addCredit("Bertjan Broeksema",
- I18N_NOOP("VCalconduit state machine, CMake"));
-
- KCmdLineArgs::init(argc, argv, &about);
- KCmdLineArgs::addCmdLineOptions(kpilotoptions, "kpilot");
- KUniqueApplication::addCmdLineOptions();
- KCmdLineArgs *p = KCmdLineArgs::parsedArgs();
-
-#ifdef DEBUG
- KPilotConfig::getDebugLevel(p);
-#endif
-
-
- if (!KUniqueApplication::start())
- {
- return 0;
- }
- KUniqueApplication a(true, true);
-
-
- if (p->isSet("setup"))
- {
- run_mode = KPilotConfig::ConfigureKPilot;
- }
- else if (KPilotSettings::configVersion() < KPilotConfig::ConfigurationVersion)
- {
- WARNINGKPILOT << "KPilot configuration version "
- << KPilotConfig::ConfigurationVersion
- << " newer than stored version "
- << KPilotSettings::configVersion() << endl;
- // Only force a reconfigure and continue if the
- // user is expecting normal startup. Otherwise,
- // do the configuration they're explicitly asking for.
- run_mode = KPilotConfig::interactiveUpdate();
- if (run_mode == KPilotConfig::Cancel) return 1;
- }
-
-
- if ( (run_mode == KPilotConfig::ConfigureKPilot) ||
- (run_mode == KPilotConfig::ConfigureAndContinue) ||
- (run_mode == KPilotConfig::WizardAndContinue) )
- {
- DEBUGKPILOT << fname
- << ": Running setup first."
- << " (mode " << run_mode << ")" << endl;
- PilotDaemonDCOP_stub *daemon = new PilotDaemonDCOP_stub("kpilotDaemon","KPilotDaemonIface");
- bool r = false;
- if (run_mode == KPilotConfig::WizardAndContinue)
- {
- r = ( runWizard(*daemon,0L) == OK );
- }
- else
- {
- r = runConfigure(*daemon,0L);
- }
- delete daemon;
- if (!r) return 1;
- // User expected configure only.
- if (run_mode == KPilotConfig::ConfigureKPilot)
- {
- return 0;
- }
- }
-
- if (KPilotSettings::configVersion() < KPilotConfig::ConfigurationVersion)
- {
- WARNINGKPILOT << "Still not configured for use." << endl;
- KPilotConfig::sorryVersionOutdated( KPilotSettings::configVersion());
- return 1;
- }
-
-
- KPilotInstaller *tp = new KPilotInstaller();
-
- if (tp->status() == KPilotInstaller::Error)
- {
- KPILOT_DELETE(tp);
- return 1;
- }
-
- TQTimer::singleShot(0,tp,TQT_SLOT(startDaemonIfNeeded()));
-
- KGlobal::dirs()->addResourceType("pilotdbs",
- CSL1("share/apps/kpilot/DBBackup"));
- tp->show();
- a.setMainWidget(tp);
- return a.exec();
-}
-
-