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.
kpilot/kpilot/pilotDaemon.h

290 lines
6.3 KiB

#ifndef _KPILOT_PILOTDAEMON_H
#define _KPILOT_PILOTDAEMON_H
/* pilotDaemon.h KPilot
**
** Copyright (C) 1998-2001 by Dan Pilone
** Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
**
** See the .cpp file for an explanation of what this file is for.
*/
/*
** 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 <ksystemtray.h>
#include "kpilotlink.h"
#include "syncAction.h"
#include "pilotDaemonDCOP.h"
class TQPixmap;
class TQTimer;
class TDEAboutApplication;
class TQPopupMenu;
class PilotDaemon;
class ActionQueue;
class FileInstaller;
class LoggerDCOP_stub;
class KPilotDCOP_stub;
class LogFile;
class KPilotLink;
class KPilotDeviceLink;
class PilotDaemonTray : public KSystemTray
{
TQ_OBJECT
friend class PilotDaemon;
public:
PilotDaemonTray(PilotDaemon *p);
typedef enum { Normal, Busy, NotListening } IconShape ;
void changeIcon(IconShape);
void enableRunKPilot(bool);
virtual void dragEnterEvent(TQDragEnterEvent *);
virtual void dropEvent(TQDropEvent *);
protected:
void setupWidget();
/**
* Menu of sync types.
*/
TQPopupMenu *fSyncTypeMenu;
protected slots:
void slotShowAbout();
void slotShowBusy();
void slotShowNormal();
void slotShowNotListening();
void slotBusyTimer();
// "Regular" TQt actions
//
//
virtual void mousePressEvent(TQMouseEvent* e);
virtual void closeEvent(TQCloseEvent *e);
protected:
void startHotSync();
void endHotSync();
private:
TQPixmap icons[((int) NotListening) + 1];
IconShape fCurrentIcon;
PilotDaemon *daemon;
/**
* Remember which item in the context menu
* is "Run KPilot" so we can enable / disable
* it as necessary.
*/
int menuKPilotItem;
/**
* Remember which item in the context menu
* is "Configure Conduits" so we can enable / disable
* it as necessary.
*/
int menuConfigureConduitsItem;
/**
* Window for the "About KPilot" information.
*/
TDEAboutApplication *kap;
/**
* Timer for blinking.
*/
TQTimer *fBlinkTimer;
} ;
class PilotDaemon : public TQObject, virtual public PilotDaemonDCOP
{
TQ_OBJECT
// The tray must be our friend so that we can let it stop the daemon.
friend class PilotDaemonTray;
public:
PilotDaemon();
~PilotDaemon();
enum DaemonStatus
{
HOTSYNC_START, // Hotsync is running
HOTSYNC_END, // Hotsync is cleaning up
FILE_INSTALL_REQ, // A file is being saved for installation
ERROR,
READY, // Connected to device and ready for Sync
INIT,
NOT_LISTENING
};
DaemonStatus status() const { return fDaemonStatus; } ;
/* DCOP */ virtual TQString statusString();
/* DCOP */ virtual TQString shorStatusString();
/**
* Display the daemon's system tray icon
* (if there is one, depending on the DockDaemon
* setting in the config file)
*/
void showTray();
virtual void addInstallFiles(const TQStringList &);
// The next few functions are the DCOP interface.
// Some are also slots.
//
public slots:
// MOC_SKIP_BEGIN
#ifdef Q_MOC_RUN
virtual void requestSync(int);
#else // Q_MOC_RUN
// MOC_SKIP_END
virtual ASYNC requestSync(int);
// MOC_SKIP_BEGIN
#endif // Q_MOC_RUN
// MOC_SKIP_END
public:
virtual ASYNC requestSyncType(TQString);
virtual ASYNC requestRegularSyncNext();
virtual int nextSyncType() const;
virtual ASYNC requestSyncOptions(bool,bool);
virtual ASYNC quitNow();
virtual ASYNC reloadSettings();
virtual ASYNC setTempDevice(TQString d);
virtual void stopListening();
virtual void startListening();
virtual bool isListening() { return fIsListening; }
/**
* Functions reporting same status data, e.g. for the kontact plugin.
*/
virtual TQDateTime lastSyncDate();
virtual TQStringList configuredConduitList();
virtual TQString logFileName();
virtual TQString userName();
virtual TQString pilotDevice();
virtual bool killDaemonOnExit();
protected:
DaemonStatus fDaemonStatus;
enum postSyncActions {
None=0,
ReloadSettings = 1,
Quit = 2
} ;
int fPostSyncAction;
protected slots:
void startHotSync( KPilotLink* lnk );
void endHotSync();
void logMessage(const TQString &);
void logError(const TQString &);
void logProgress(const TQString &,int);
private:
int getPilotSpeed();
/**
* Check whether we should do a backup. This is based on the
* KPilotSettings::backupFrequency and uses
* SyncAction::BackupFrequency. This will be expanded, hopefully,
* to provide backup scheduling at some point.
*/
bool shouldBackup();
bool setupPilotLink();
KPilotDeviceLink &getPilotLink() { return *fPilotLink; }
KPilotDeviceLink *fPilotLink;
SyncAction::SyncMode fNextSyncType;
ActionQueue *fSyncStack;
/**
* This is a pointer to the (optional) docked
* system tray icon for the daemon.
*/
PilotDaemonTray *fTray;
/**
* Set or change the tooltip displayed by the tray icon.
*/
void updateTrayStatus(const TQString &s=TQString());
FileInstaller *fInstaller;
protected slots:
/**
* Called after a file has been installed to notify any observers, like
* KPilot, that files have been installed. [Here that means: copied
* to the pending_install directory and thus *waiting* for
* installation on the Palm]
*/
void slotFilesChanged();
/**
* Start up KPilot.
*/
void slotRunKPilot();
/**
* Run conduit configuration using "kpilot -c"
*/
void slotRunConfig();
/**
* Provide access to KPilot's DCOP interface through a stub.
*/
protected:
LoggerDCOP_stub &getLogger() { return *fLogStub; } ;
LoggerDCOP_stub &getFileLogger() { return *fLogFileStub; } ;
KPilotDCOP_stub &getKPilot() { return *fKPilotStub; } ;
LogFile *fLogFile;
bool fIsListening;
private:
LoggerDCOP_stub *fLogStub;
LoggerDCOP_stub *fLogFileStub;
KPilotDCOP_stub *fKPilotStub;
TQString fTempDevice;
};
#endif