diff options
Diffstat (limited to 'kcontrol/konqhtml/domainlistview.h')
-rw-r--r-- | kcontrol/konqhtml/domainlistview.h | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/kcontrol/konqhtml/domainlistview.h b/kcontrol/konqhtml/domainlistview.h new file mode 100644 index 000000000..3fb3f102e --- /dev/null +++ b/kcontrol/konqhtml/domainlistview.h @@ -0,0 +1,209 @@ +/* + Copyright (c) 2002 Leo Savernik <[email protected]> + Derived from jsopts.h and javaopts.h, code copied from there is + copyrighted to its respective owners. + + 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 __DOMAINLISTVIEW_H__ +#define __DOMAINLISTVIEW_H__ + +#include <qgroupbox.h> +#include <qmap.h> + +class QListViewItem; +class QPushButton; +class QStringList; + +class KConfig; +class KListView; + +class Policies; +class PolicyDialog; + +/** + * @short Provides a list view of domains which policies are attached to. + * + * This class resembles a list view of domain names and some buttons to + * manipulate it. You should use this widget if you need to manage domains + * whose policies are described by (derivatives of) Policies objects. + * + * The contained widgets can be accessed by respective getters for + * fine-tuning/customizing them afterwards. + * + * To use this class you have to derive your own and implement most + * (all) of the protected methods. You need these to customize this widget + * for its special purpose. + * + * @author Leo Savernik + */ +class DomainListView : public QGroupBox { + Q_OBJECT +public: + /** Enumerates the available buttons. + */ + enum PushButton { + AddButton, ChangeButton, DeleteButton, ImportButton, ExportButton + }; + + /** + * constructor + * @param config configuration to read from and to write to + * @param title title to be used for enclosing group box + * @param parent parent widget + * @param name internal name for debugging + */ + DomainListView(KConfig *config,const QString &title,QWidget *parent, + const char *name = 0); + + virtual ~DomainListView(); + + /** + * clears the list view. + */ +// void clear(); + + /** + * returns the list view displaying the domains + */ + KListView *listView() const { return domainSpecificLV; } + + /** + * returns the add push-button. + * + * Note: The add button already contains a default "what's this" text. + */ + QPushButton *addButton() const { return addDomainPB; } + + /** + * returns the change push-button. + * + * Note: The change button already contains a default "what's this" text. + */ + QPushButton *changeButton() const { return changeDomainPB; } + + /** + * returns the delete push-button. + * + * Note: The delete button already contains a default "what's this" text. + */ + QPushButton *deleteButton() const { return deleteDomainPB; } + + /** + * returns the import push-button. + */ + QPushButton *importButton() const { return importDomainPB; } + + /** + * returns the export push-button. + */ + QPushButton *exportButton() const { return exportDomainPB; } + + /** + * Initializes the list view with the given list of domains as well + * as the domain policy map. + * + * This method may be called multiple times on a DomainListView instance. + * + * @param domainList given list of domains + */ + void initialize(const QStringList &domainList); + + /** + * saves the current state of all domains to the configuration object. + * @param group the group the information is to be saved under + * @param domainListKey the name of the key which the list of domains + * is stored under. + */ + void save(const QString &group, const QString &domainListKey); + + +signals: + /** + * indicates that a configuration has been changed within this list view. + * @param state true if changed, false if not + */ + void changed(bool state); + +protected: + /** + * factory method for creating a new domain-specific policies object. + * + * Example: + * <pre> + * JavaPolicies *JavaDomainListView::createPolicies() { + * return new JavaPolicies(m_pConfig,m_groupname,false); + * } + * </pre> + */ + virtual Policies *createPolicies() = 0; + + /** + * factory method for copying a policies object. + * + * Derived classes must interpret the given object as the same type + * as those created by createPolicies and return a copy of this very type. + * + * Example: + * <pre> + * JavaPolicies *JavaDomainListView::copyPolicies(Policies *pol) { + * return new JavaPolicies(*static_cast<JavaPolicies *>(pol)); + * } + * </pre> + * @param pol policies object to be copied + */ + virtual Policies *copyPolicies(Policies *pol) = 0; + + /** + * allows derived classes to customize the policy dialog. + * + * The default implementation does nothing. + * @param trigger triggered by which button + * @param pDlg reference to policy dialog + * @param copy policies object this dialog is used for changing. Derived + * classes can safely cast the @p copy object to the same type they + * returned in their createPolicies implementation. + */ + virtual void setupPolicyDlg(PushButton trigger,PolicyDialog &pDlg, + Policies *copy); + +private slots: + void addPressed(); + void changePressed(); + void deletePressed(); + void importPressed(); + void exportPressed(); + void updateButton(); + +protected: + + KConfig *config; + + KListView *domainSpecificLV; + + QPushButton* addDomainPB; + QPushButton* changeDomainPB; + QPushButton* deleteDomainPB; + QPushButton* importDomainPB; + QPushButton* exportDomainPB; + + typedef QMap<QListViewItem*, Policies *> DomainPolicyMap; + DomainPolicyMap domainPolicies; +}; + +#endif // __DOMAINLISTVIEW_H__ + |