Public Slots============virtual void slotFetchSMS ()=0virtual void slotFetchPhonebook ()=0virtual void slotPollStatus ()=0virtual void processSlot (KMobileTools::Job *job)virtual void slotFetchInfos ()=0virtual void slotDial (DialActions, const QString &=QString())=0virtual void slotInitPhone ()=0virtual void slotSearchPhone ()=0virtual void slotAddAddressee (const KABC::Addressee::List &)=0virtual void slotDelAddressee (const KABC::Addressee::List &)=0virtual void slotDelSMS (SMS *)=0virtual void slotStoreSMS (const QString &number, const QString &text)=0virtual void slotSendSMS (const QString &number, const QString &text)=0virtual void slotStoreSMS (SMS *)=0virtual void slotSendSMS (SMS *)=0virtual void slotSendStoredSMS (SMS *)=0virtual void slotEditAddressee (const KABC::Addressee &, const KABC::Addressee &)=0virtual void slotStopDevice ()* rename to slotSuspendDevice()virtual void slotResumeDevice ()virtual void slotWeaverSuspended ()virtual void slotFetchCalendar ()=0virtual void slotSwitchToFSMode ()Signals=======void jobFinished (KMobileTools::Job::JobType)void disconnected ()void connected ()void error ()* rename to errorOccured()* open issue: how to retrieve the error message when an error has occured?void newSMS (SMS *)* rename to smsArrived( SMS* )void updateInfoPage (int)* shouldn't the info page itself listen to the appropriate signals and change when needed?void addSMSFolders ()* rename to smsFolderAdded()void signal (int)* rename to signalStrengthChanged()void charge (int)* rename to chargeChanged()void chargeType (int)* rename to chargeTypeChanged()void isRinging (bool)* rename to ringing() (according to qt4 naming scheme)void phoneBookUpdated (int, const ContactsList &)* rename to phonebookChanged( int, const ContactsList & )void phoneBookUpdated ()* rename to phonebookChanged()void smsListUpdated ()* is this signal really needed? we already have smsAdded(), ..deleted(), ..modified()* rename to smsListChanged()void networkName (const QString &)* rename to networkNameChanged()void addressBookToUpdate ()* is this referring to the kde address book? if so, remove this signalvoid suspended ()void resumed ()void jobEnqueued (KMobileTools::Job *)void smsAdded (const QByteArray &)void smsDeleted (const QByteArray &)void smsModified (const QByteArray &)void invalidLockFile (const QString &)* remove this method (should be handled by errorOccured())void fullPhonebook ()* remove this method (should be handled by errorOccured())void calendarParsed ()* calendarChanged()? or is this really meant to be parsed?Public Member Functions=======================Engine (QObject *parent=0, const QString &name=QString())virtual ~Engine ()KMobileTools::EngineData * engineData ()* we expose setter methods to non-engine code here which is bad,maybe better move to protected...don't know if c++ allows this, but an elegant solution could be to define aconst KMobileTools::EngineData* engineData() constmethod in public andKMobileTools::EngineData* engineData()in protected so that the engine itself can set data and the outside has access to the getters (which need to be defined const too)onlyKMobileTools::Weaver * ThreadWeaver ()* where is this method used from the outside?int newSMSCount ()int totalSMSCount ()SMSList * diffSMSList () constQStringList smsFolders ()virtual int availPbSlots ()=0void setSMSSlot (int slot)int smsSlot ()bool isConnected ()virtual bool pdu ()=0virtual void queryClose ()virtual QString shortDesc ()virtual QString longDesc ()virtual QString currentDeviceName () constvirtual QString engineLibName () const =0KPluginInfo * pluginInfo ()void enqueueJob (KMobileTools::Job *)* move to protectedvoid setConnected (bool)* why allow everyone to set the connection state? and why is this needed since we have the connected()/disconnected()signals?virtual QStringList encodings ()=0int currentPBMemSlot ()void setCurrentPBMemSlot (int type)void suspendStatusJobs (bool suspend)int statusJobsSuspended () constvirtual QString parseWizardSummary (const QString &strtemplate, const QString &deviceName) const =0virtual QList< QWizardPage * > wizardPages (QWidget *parentWidget)=0virtual QList< QWidget * > configWidgets (QWidget *parentWidget)=0virtual KMobileTools::DevicesConfig * config (bool forceNew=false, const QString &groupName=QString())=0* forceNew what?Static Public Member Functions==============================static Engine * load (const QString &libname, QObject *parent=0)Protected Slots===============virtual void slotDevConnected ()virtual void slotDevDisconnected ()* Why yet another method to set the connection state?