summaryrefslogtreecommitdiffstats
path: root/part/kxeconfiguration.h
blob: 3afd8b2555afd8651814444dddbb08e9b4e3ad91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/***************************************************************************
                           kxeconfiguration.h
                           ------------------
    begin                : Tue Dec 02 2003
    copyright            : (C) 2003 by The KXMLEditor Team
    email                : [email protected]
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef KXECONFIGURATION_H
#define KXECONFIGURATION_H

#include <qobject.h>

class KXETreeViewSettings;
class KXETextViewSettings;
class KXENewFileSettings;
class KXEPrintSettings;
class KXEArchiveExtsSettings;

class KConfig;
class KDialogBase;

/**
 * This class is a container for KXMLEditor's configuration data.
 * It consists of objects for the different groups of settings
 * (objects of child classes of KXESettings) and manages the configuration
 * dialog (@ref m_pDialog). This dialog consists of one page per settings
 * group, that are initialized by them (using their dialogPage* functions).
 *
 * @short container for KXMLEditor's configuration data
 * @author Olaf Hartig
 */
class KXEConfiguration : public QObject
{
		Q_OBJECT

	public:

		/**
		 * The constructor initializes the configuration setting groups
		 * (objects of KXESettings' child classes) and restores the
		 * configuration data from the config file by calling @ref restore.
		 */
		KXEConfiguration();
		/**
		 * The destructor deletes the configuration dialog, if there is one.
		 */
		~KXEConfiguration();

		/**
		 * Stores all configuration to the given @ref KConfig object by
		 * using @ref KXESettings's @ref store function.
		 * If no @ref KConfig object is given, @ref KGlobal::config is
		 * used.
		 */
		void store( KConfig * pConfig = 0 ) const;
		/**
		 * Restores all configuration from the given @ref KConfig object
		 * by using @ref KXESettings's @ref restore function.
		 * If no @ref KConfig object is given, @ref KGlobal::config is
		 * used.
		 */
		void restore( KConfig * pConfig = 0 );
		/**
		 * Shows the configuration dialog.
		 * If there is no one yet, it is created by.
		 */
		void showDialog();

		// The following functions return pointers to the configuration setting
		// groups (objects of KXESettings' child classes), that can be used to
		// access their data (or to connect to their signals).

		KXETreeViewSettings * const treeview() const { return m_pTreeView; }
		KXETextViewSettings * const textview() const { return m_pTextView; }
		KXENewFileSettings * const newfile() const { return m_pNewFile; }
		KXEPrintSettings * const print() const { return m_pPrint; }
		KXEArchiveExtsSettings * const archexts() const { return m_pArcExts; }

	protected slots:

		/**
		 * Applies the new data in the dialog's pages to our setting groups
		 * by using @ref KXESettings's @ref apply function and stores
		 * all settings with @ref store.
		 * After applying, the dialog's state is reseted (disabled Apply- and
		 * OK-buttons).
		 */
		void slotDlgApplied();
		/**
		 * Enables the configuration dialog's Apply- and OK-button.
		 */
		void slotDlgChanged();

	protected:

		// The following members are the configuration setting
		// groups (objects of KXESettings' child classes).

		KXETreeViewSettings * m_pTreeView;
		KXETextViewSettings * m_pTextView;
		KXENewFileSettings * m_pNewFile;
		KXEPrintSettings * m_pPrint;
		KXEArchiveExtsSettings * m_pArcExts;

		/**
		 * This is a pointer to our configuration dialog.
		 * The dialog itself is created on demand in @ref showDialog.
		 * It consists of one page per settings group.
		 */
		KDialogBase * m_pDialog;
};

#endif