kexi
kexiformeventhandler.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "kexiformeventhandler.h"
00021
00022 #include <qwidget.h>
00023 #include <qobjectlist.h>
00024
00025 #include <kdebug.h>
00026 #include <klocale.h>
00027 #include <kaction.h>
00028
00029 #include <tableview/kexitableitem.h>
00030 #include <tableview/kexitableviewdata.h>
00031 #include <kexidb/queryschema.h>
00032 #include <keximainwindow.h>
00033 #include <kexidialogbase.h>
00034 #include <kexipart.h>
00035
00036
00037 class KexiFormEventScriptAction : public KAction
00038 {
00039 private:
00040 QString m_scripturi;
00041 public:
00042 KexiFormEventScriptAction(QObject* parent, const QString& scripturi)
00043 : KAction(parent), m_scripturi(scripturi) {}
00044 public slots:
00045 void activate() {
00046 KexiPart::Part* scriptpart = Kexi::partManager().partForMimeType("kexi/script");
00047 if(scriptpart) {
00048
00049
00050 scriptpart->action(m_scripturi);
00051 }
00052 }
00053 };
00054
00055 KexiFormEventHandler::KexiFormEventHandler()
00056 : m_mainWidget(0)
00057 {
00058 }
00059
00060 KexiFormEventHandler::~KexiFormEventHandler()
00061 {
00062 }
00063
00064 void KexiFormEventHandler::setMainWidgetForEventHandling(KexiMainWindow *mainWin, QWidget* mainWidget)
00065 {
00066 m_mainWidget = mainWidget;
00067 if (!m_mainWidget)
00068 return;
00069
00070
00072 QObjectList *l = m_mainWidget->queryList( "KexiPushButton" );
00073 QObjectListIt it( *l );
00074 QObject *obj;
00075 QDict<char> tmpSources;
00076 for ( ; (obj = it.current()) != 0; ++it ) {
00077 QString actionName = obj->property("onClickAction").toString();
00078 if(actionName.isEmpty())
00079 continue;
00080
00081 if (actionName.startsWith("kaction:")) {
00082 actionName = actionName.mid(QString("kaction:").length());
00083 KAction *action = mainWin->actionCollection()->action( actionName.latin1() );
00084 if (!action)
00085 continue;
00086 QObject::disconnect( obj, SIGNAL(clicked()), action, SLOT(activate()) );
00087 QObject::connect( obj, SIGNAL(clicked()), action, SLOT(activate()) );
00088 }
00089 else if (actionName.startsWith("script:")) {
00090 actionName = actionName.mid(QString("script:").length());
00091 KexiFormEventScriptAction* action = new KexiFormEventScriptAction(obj, actionName);
00092 QObject::disconnect( obj, SIGNAL(clicked()), action, SLOT(activate()) );
00093 QObject::connect( obj, SIGNAL(clicked()), action, SLOT(activate()) );
00094 }
00095 }
00096 delete l;
00097 }
00098
|