/* * 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 class KornMailSubject; class TDEActionCollection; class TDEConfig; class TDEPopupMenu; class TDEProcess; class TQColor; class TQLabel; //template< class T > class TQPtrList; class TQString; /** * 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 */ class BoxContainerItem : public AccountManager, public DCOPObject { Q_OBJECT // K_DCOP public: /** * Standaard TQObject-constuctor * This constructor implements the default arguments for any TQObject. * 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::TQObject * @param name The name of this object, See TQObject::TQObject * @see BoxContainerItem::readConfig */ BoxContainerItem( TQObject * 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 TDEConfigGroup-object which contains the configuration of this box. * @param index The index of the box used in the config-file */ virtual void readConfig( TDEConfig* 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 TQString& 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 TQt::ButtonState */ void mouseButtonPressed( TQt::ButtonState button ); protected: /** * This function filles a TDEPopupMenu-reference. The target is * to set in all implementations the same TDEPopupMenu-content. * Because some implementations (TQt::DockedItem) got a TDEPopupMenu * by itself, this only changes a TDEPopupMenu instance. * @param menu The menu to be changed. * @param actions The actions to which the items should be added. */ void fillTDEPopupMenu( TDEPopupMenu* menu, TDEActionCollection* 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( TQWidget* parent, TQPtrList< KornMailSubject >* list, int total, const TQString& 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( TQLabel *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 TQPixmap calcComplexPixmap( const TQPixmap &icon, const TQColor& fgColour, const TQFont* 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( TQLabel* label, const TQString& 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 TDEProcess-instance needs to be deleted:) * @param proc The instance of the instance which must be deleted. */ void processExited( TDEProcess* proc ); protected: //This settings are stored here because every implementation needs them. TQString *_icons[ 2 ]; TQString *_anims[ 2 ]; TQColor *_fgColour[ 2 ]; TQColor *_bgColour[ 2 ]; TQFont *_fonts[ 2 ]; private: TQString *_command; bool _recheckSettings[ 3 ]; bool _resetSettings[ 3 ]; bool _viewSettings[ 3 ]; bool _runSettings[ 3 ]; bool _popupSettings[ 3 ]; }; #endif //MK_BOXCONTAINERITEM_H