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.
tdepim/korn/accountmanager.h

156 lines
4.2 KiB

/*
* Copyright (C) 2004, Mart Kelder (mart.kde@hccnet.nl)
*
* 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; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef MK_ACCOUNTMANAGER_H
#define MK_ACCOUNTMANAGER_H
#include <qobject.h>
class DCOPDrop;
class KornSubjectsDlg;
class KKioDrop;
class KMailDrop;
class KConfig;
template< class T > class QPtrList;
template< class T, class W > class QMap;
/**
* This class manage the different accounts.
*
* This class reads the config and makes the accounts,
* and it communicate with the boxes.
*/
class AccountManager : public QObject
{ Q_OBJECT
public:
/**
* Constructor, parameters are directed to QObject.
*/
AccountManager( QObject * parent = 0, const char * name = 0 );
/**
* Destructor
*/
~AccountManager();
/**
* This function is used to read the config.
*
* @param config The KConfig instance to the configuration
* @param index The index of the box. As there are different boxes,
* every box have it's own index. This number is used to get the
* right config-information out of the config parameter.
*/
virtual void readConfig( KConfig* config, const int index );
/**
* This write the configuration into a file. Things that must be right is
* for example the reset number. The configuration isn't saved through this
* method; configurations are saved in the configurations classes.
*
* @param config The KConfig instance to which the configuration is written.
* @param index The index of the box.
*/
virtual void writeConfig( KConfig* config, const int index );
/**
* This method makes a QString which can be used for a tooltip.
* In it, all accounts are summed and the number of new messages of
* every account is added.
*
* @return A string that can be used for the Tooltip of the box.
*/
QString getTooltip() const;
protected:
/**
* This function is called when the number of emails has changed.
* Boxes must override this method and update the information.
*
* @param numberOfNewMessages The number of unread messages.
* @param newMessages Are there any new messages (important for displaying it)?
*/
virtual void setCount( int numberOfNewMessages, bool newMessages ) = 0;
/**
* This functions sets a new Tooltip. Boxes must override this method
* @param tooltip The tooltip to be set.
*/
virtual void setTooltip( const QString& tooltip ) = 0;
/**
* This funtion is called if @p command have to be executed.
* For example, if new email has arrived, and the user setuped KOrn
* to execute a command. Boxes must override this function.
*/
virtual void runCommand( const QString& command ) = 0;
/**
* This function can be called by classes that inherit this class.
* If this function is called, all account which are part of this
* box are rechecked.
*/
void doRecheck();
/**
* If this method is called, the number of new messages of all of its account
* is resetted.
*/
void doReset();
/**
* If this function is called, a windows with shows the message headers will popup.
*/
void doView();
/**
* These functions are called if the user wants to start or stop the account being triggered.
*/
void doStartTimer();
void doStopTimer();
private:
struct Dropinfo
{
int index;
int msgnr;
bool newMessages;
int reset;
};
QPtrList< KMailDrop > *_kioList;
QPtrList< DCOPDrop > *_dcopList;
QMap< KMailDrop*, Dropinfo* > *_dropInfo;
static KornSubjectsDlg *_subjectsDlg;
private:
int totalMessages();
bool hasNewMessages();
void playSound( const QString& );
private slots:
void slotChanged( int, KMailDrop* );
void slotValidChanged( bool );
};
#endif //MK_ACCOUNTMANAGER_H