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/boxcontaineritem.h

237 lines
6.7 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_BOXCONTAINERITEM_H
#define MK_BOXCONTAINERITEM_H
#include "accountmanager.h"
#include <dcopobject.h>
class KornMailSubject;
class KActionCollection;
class KConfig;
class KPopupMenu;
class KProcess;
class QColor;
class QLabel;
//template< class T > class QPtrList;
class QString;
/**
* This class provide a base for an item. This item should be
* shown in a BoxContainer, and represent one number somewhere.
* This also is the DCOP-interface for such a box.
* @author Mart Kelder <mart.kde@hccnet.nl>
*/
class BoxContainerItem : public AccountManager, public DCOPObject
{ Q_OBJECT
K_DCOP
public:
/**
* Standaard QObject-constuctor
* This constructor implements the default arguments for any QObject.
* Note that is does not give a name to DCOPObject; that name
* is set in the readConfig-function.
* @param parent The parent of this object, See Object::QObject
* @param name The name of this object, See QObject::QObject
* @see BoxContainerItem::readConfig
*/
BoxContainerItem( QObject * parent = 0, const char * name = 0 );
/**
* The default destructor. This only removes _command-pointer.
*/
~BoxContainerItem();
/**
* If this function should call a "show"-function of its widget.
*/
virtual void showBox() = 0;
/**
* This function reads the config. It stores the readed values in the class.
* It also sets the DCOPObject-name.
* @param config The KConfigGroup-object which contains the configuration of this box.
* @param index The index of the box used in the config-file
*/
virtual void readConfig( KConfig* config, const int index );
public slots:
/**
* This functions sets the number to be displayed. It should be reimplemented.
* @param count The number of new messages waiting
* @param newMessages Are there any new messages added?
*/
virtual void setCount( const int count, const bool newMessages ) = 0;
/**
* This functions execute a given command
*
* @param cmd The command to be executed.
*/
virtual void runCommand( const QString& cmd );
/**
* This function displays the (kde) help dialog
*/
void help();
/**
* This function calls a bug report dialog
*/
void reportBug();
/**
* This function calls the about dialog
*/
void about();
/**
* This functions should be called if a mouse-button has been pressed.
* This handles the connected events of it.
*
* @param button The button that was pressed, See Qt::ButtonState
*/
void mouseButtonPressed( Qt::ButtonState button );
protected:
/**
* This function filles a KPopupMenu-reference. The target is
* to set in all implementations the same KPopupMenu-content.
* Because some implementations (DockedItem) got a KPopupMenu
* by itself, this only changes a KPopupMenu instance.
* @param menu The menu to be changed.
* @param actions The actions to which the items should be added.
*/
void fillKPopupMenu( KPopupMenu* menu, KActionCollection* actions ) const;
/**
* This displays the passive popup.
*
* @param parent The Winget of the visual widget
* @param list List with the first (five) subjects
* @param total The total numbers of unread mail
* @param accountName The name of the account it belongs to
* @param date Should the date be displayed?
*/
void showPassivePopup( QWidget* parent, QPtrList< KornMailSubject >* list, int total, const QString& accountName, bool date );
//this functions should be reimplemented
/**
* This function is called when the implementation of the class
* should display the popup-menu.
*/
virtual void doPopup() = 0;
/**
* This function draws a specified configuration into a label
* @param label The label to be filled
* @param count the number of new messages
* @param newMessages are the messages new?
*/
void drawLabel( QLabel *label, const int count, const bool newMessages );
private:
/**
* This function helps to make a pixmap
* @param icon The icon to be set in
* @param fgColour the colour of the foreground
* @param font the font; 0 is default font.
* @param count the number of messages
*/
static QPixmap calcComplexPixmap( const QPixmap &icon, const QColor& fgColour, const QFont* font, const int count );
/**
* This functions sets a movie to a specified label
* @param label The label to set the movie in
* @param anim The path to the animation
*/
void setAnimIcon( QLabel* label, const QString& anim );
private slots:
void slotRecheck() { recheck(); }
void slotReset() { reset(); }
void slotView() { view(); }
void slotRunCommand() { runCommand(); }
void slotPopup() { popup(); }
void slotConfigure() { showConfig(); }
public:
k_dcop:
/**
* This call immediately checked all accounts of this box.
*/
void recheck();
/**
* This call reset the number of unread messages to 0.
*/
void reset();
/**
* This call popup's a window with the headers of the new messages.
*/
void view();
/**
* This program executes the command as setup'ed.
*/
void runCommand(); //Possible_unsafe?
/**
* This function lets the popup-menu's be displayed.
*/
void popup();
/**
* This function lets the user edit the configuration
*/
void showConfig();
/**
* With these DCOP-calls, a user can start and stop the accounts.
*/
void startTimer();
void stopTimer();
signals:
/**
* This signal is emitted when the user whants to configure something.
*/
void showConfiguration();
private slots:
/**
* This slot is called when a KProcess-instance needs to be deleted:)
* @param proc The instance of the instance which must be deleted.
*/
void processExited( KProcess* proc );
protected:
//This settings are stored here because every implementation needs them.
QString *_icons[ 2 ];
QString *_anims[ 2 ];
QColor *_fgColour[ 2 ];
QColor *_bgColour[ 2 ];
QFont *_fonts[ 2 ];
private:
QString *_command;
bool _recheckSettings[ 3 ];
bool _resetSettings[ 3 ];
bool _viewSettings[ 3 ];
bool _runSettings[ 3 ];
bool _popupSettings[ 3 ];
};
#endif //MK_BOXCONTAINERITEM_H