summaryrefslogtreecommitdiffstats
path: root/kexi/plugins/macros/kexipart/keximacrodesignview.h
blob: c3eca2d2bfa34c563ecd4a3f7a573fcdf49caac3 (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
124
125
126
127
128
129
/* This file is part of the KDE project
   Copyright (C) 2006 Sebastian Sauer <mail@dipe.org>

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License as published by the Free Software Foundation; either
   version 2 of the License, or (at your option) any later version.
   This library 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
   Library General Public License for more details.
   You should have received a copy of the GNU Library General Public License
   along with this library; see the file COPYING.LIB.  If not, write to
   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
   Boston, MA 02110-1301, USA.
*/

#ifndef KEXIMACRODESIGNVIEW_H
#define KEXIMACRODESIGNVIEW_H

#include "keximacroview.h"

// Forward declarations.
namespace KoMacro {
	class Action;
	class Macro;
	class MacroItem;
}
namespace KoProperty {
	class Property;
}
namespace KexiDB {
	class ResultInfo;
}
class KexiTableItem;

/**
 * The KexiScriptDesignView implements \a KexiMacroView to provide
 * a GUI-Editor to edit a Macro.
 */
class KexiMacroDesignView : public KexiMacroView
{
		Q_OBJECT
	public:

		/**
		* Constructor.
		*
		* \param mainwin The \a KexiMainWindow instance this \a KexiViewBase
		*        belongs to.
		* \param parent The parent widget this widget should be displayed in.
		* \param macro The \a KoMacro::Macro instance this view is for.
		*/
		KexiMacroDesignView(KexiMainWindow *mainwin, QWidget *parent, ::KoMacro::Macro* const macro);

		/**
		* Destructor.
		*/
		virtual ~KexiMacroDesignView();

		/**
		* Load the data from XML source and fill the internally
		* used \a KoMacro::Macro instance.
		*/
		virtual bool loadData();

		/**
		* \return the \a KoProperty::Set properties this view provides.
		*/
		virtual KoProperty::Set* propertySet();

	private slots:

		/**
		* Called before a cell changed in the internaly used
		* \a KexiTableView .
		*/
		void beforeCellChanged(KexiTableItem*, int, QVariant&, KexiDB::ResultInfo*);

		/**
		* Called if the passed \p item got updated.
		*/
		void rowUpdated(KexiTableItem* item);

		/**
		* Called if a row got deleted.
		*/
		void rowDeleted();

		/**
		* Called if a row got inserted.
		*/
		void rowInserted(KexiTableItem* item, uint row, bool repaint);

		/**
		* Called if a property in the \a KoProperty got changed.
		*/
		void propertyChanged(KoProperty::Set&, KoProperty::Property&);

		/**
		* Reloads the propertyset delayed.
		*/
		void reloadPropertyLater();

	private:
		/// \internal d-pointer class.
		class Private;
		/// \internal d-pointer instance.
		Private* const d;

		/**
		* Update the table's data.
		*/
		void updateData();

		/**
		* Update the \a KoProperty::Set set with the passed \a KoMacro::MacroItem
		* \p item and the variablename \p variablename .
		*/
		bool updateSet(KoProperty::Set* set, KSharedPtr<KoMacro::MacroItem> item, const QString& variablename);

		/**
		* Update the properties of the \a KoProperty::Set \p set at
		* row-number \p row with the \a KoMacro::MacroItem \p macroitem .
		*/
		void updateProperties(int row, KoProperty::Set* set, KSharedPtr<KoMacro::MacroItem> macroitem);
};

#endif