/* * 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_KEDITLISTBOXMAN_H #define MK_KEDITLISTBOXMAN_H #include class KConfig; class TQString; class TQWidget; /** * This class is a extention on KEditListBox. * It also handles the configuration. * @author Mart Kelder (mart.kde@hccnet.nl) */ class KEditListBoxManager : public KEditListBox { Q_OBJECT public: /** * Constructor: @see KEditListBoxManager::KEditListBoxManager( const TQString&, TQWidget, const char * name, bool, int ) */ KEditListBoxManager( TQWidget *parent = 0, const char *name = 0, bool checkAtEntering=true, int buttons = All ); /** * The save as above, but with other options for KEditListBox. */ KEditListBoxManager( const TQString& title, TQWidget *parent = 0, const char *name = 0, bool checkAtEntering=true, int buttons = All ); /** * The save as above, but with other options for KEditListBox. */ KEditListBoxManager( const TQString& title, const KEditListBox::CustomEditor &customEditor, TQWidget *parent = 0, const char *name = 0, bool checkAtEntering = true, int buttons = All ); /** * Destructor */ ~KEditListBoxManager(); /** * Set the KConfig object (required before doing something * @param config The KConfig-object */ void setConfig( KConfig* config ); /** * Sets the groupName. groupName should contain at least one %1. * It is used for makeing groupnames. * @param name The groupname */ void setGroupName( const TQString& name ); /** * Sets the subGroupName. subGroupName should contain %1 and %2. * It is used to execute operations on a group and its subgroups. * @param name The groupname */ void setSubGroupName( const TQString& name ); private: /** * This functions is called from and only from the constructor to prevent writing the * same code for all constructors */ void init(); /** * This function reads the names out the config. */ void readNames(); private: KConfig *_config; //Stores the KConfig-object TQString *_groupName; //Stores the groupName string. TQString *_subGroupName; int _prevCount; private slots: //These comes directly from the KEditListBox itselfs. void slotChanged(); void slotAdded( const TQString& ); void slotRemoved( const TQString& ); void slotActivated( TQListBoxItem* ); private: /** * This private method moves an item. It is called from slotChanged(). * @param src The number of the source-group. * @param dest The number of the destanation-group */ void moveItem( int src, int dest ); /** * This private functions switch to groups: first^=last; last^=first; first^=last * @param first the first number of a group. * @param last the second number of a group (and the last number). */ void changeItem( int first, int last ); /** * This function is called if the user change the name of the group */ void changedText(); signals: /** * This signal is emitted when somebody selects an item * @param text The text of the newly selected item. */ void activated( const TQString& text ); /** * This signal is emitted when defaults have to be set. * @param name The name of the object: this is filled in the KEditListBox; * @param config The configuration in which the config have to be parsed. * @param index The number of the item. * this config is already in the right group. */ void setDefaults( const TQString& name, const int index, KConfig* config ); void elementsSwapped( int, int ); void elementDeleted( int ); }; #endif //MK_KEDITLISTBOXMAN_H