summaryrefslogtreecommitdiffstats
path: root/kexi/plugins/forms/kexiformeventhandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'kexi/plugins/forms/kexiformeventhandler.h')
-rw-r--r--kexi/plugins/forms/kexiformeventhandler.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/kexi/plugins/forms/kexiformeventhandler.h b/kexi/plugins/forms/kexiformeventhandler.h
new file mode 100644
index 00000000..e92e9ff9
--- /dev/null
+++ b/kexi/plugins/forms/kexiformeventhandler.h
@@ -0,0 +1,101 @@
+/* This file is part of the KDE project
+ Copyright (C) 2005-2006 Jaroslaw Staniek <js@iidea.pl>
+
+ 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 KEXIFORMEVENTHANDLER_H
+#define KEXIFORMEVENTHANDLER_H
+
+#include <qwidget.h>
+#include <kaction.h>
+
+class KexiMainWindow;
+namespace KexiPart {
+ class Info;
+}
+
+//! The KexiFormEventHandler class handles events defined within Kexi Forms
+/*! For now only "onClickAction" property of Push Button widget is handled:
+ It's possible to connect this event to predefined global action.
+
+ Note: This interface will be extended in the future!
+
+ @see KexiFormPart::slotAssignAction()
+ */
+class KEXIFORMUTILS_EXPORT KexiFormEventHandler
+{
+ public:
+ KexiFormEventHandler();
+ virtual ~KexiFormEventHandler();
+
+ /*! Sets \a mainWidget to be a main widget for this handler.
+ Also find widgets having action assigned and connects them
+ to appropriate actions.
+ For now, all of them must be KexiPushButton).
+ \a mainWin is used to get action list. */
+ void setMainWidgetForEventHandling(KexiMainWindow *mainWin, QWidget* mainWidget);
+
+ protected:
+ QWidget *m_mainWidget;
+};
+
+//! @internal form-level action for handling "on click" actions
+class KEXIFORMUTILS_EXPORT KexiFormEventAction : public KAction
+{
+ public:
+ //! A structure used in currentActionName()
+ class KEXIFORMUTILS_EXPORT ActionData
+ {
+ public:
+ ActionData();
+
+ /*! Decodes action string into action type/action argument parts.
+ Action string has to be in a form of "actiontype:actionarg"
+ - Action type is passed to \a actionType on success. Action type can be "kaction"
+ or any of the part names (see KexiPart::Info::objectName()), e.g. "table", "query", etc.
+ - Action argument can be an action name in case of "kaction" type or object name
+ in case of action of type "table", "query", etc.
+ \a ok is set to true on success and to false on failure. On failure no other
+ values are passed.
+ \return part info if action type is "table", "query", etc., or 0 for "kaction" type. */
+ KexiPart::Info* decodeString(QString& actionType, QString& actionArg, bool& ok) const;
+
+ //! \return true if the action is empty
+ bool isEmpty() const;
+
+ QString string; //!< action string with prefix, like "kaction:edit_copy" or "table:<tableName>"
+
+ QString option; //!< option used when name is "table/query/etc.:\<objectName\>" is set;
+ //!< can be set to "open", "design", "editText", etc.
+ //!< @see ActionToExecuteListView::showActionsForMimeType()
+ };
+
+ KexiFormEventAction(KexiMainWindow *mainWin, QObject* parent, const QString& actionName,
+ const QString& objectName, const QString& actionOption);
+ virtual ~KexiFormEventAction();
+
+ public slots:
+ //! Activates the action. If the object supports executing (macro, script),
+ //! it is executed; otherwise (table, query, form,...) it is opened in its data view.
+ virtual void activate();
+
+ private:
+ KexiMainWindow *m_mainWin;
+ QString m_actionName, m_objectName, m_actionOption;
+};
+
+#endif