File indexing completed on 2025-01-12 06:47:24
0001 // 0002 // C++ Interface: cActionBase 0003 // 0004 // Description: action base 0005 // 0006 /* 0007 Copyright 2005-2011 Tomas Mecir <kmuddy@kmuddy.com> 0008 0009 This program is free software; you can redistribute it and/or 0010 modify it under the terms of the GNU General Public License as 0011 published by the Free Software Foundation; either version 2 of 0012 the License, or (at your option) any later version. 0013 0014 This program is distributed in the hope that it will be useful, 0015 but WITHOUT ANY WARRANTY; without even the implied warranty of 0016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0017 GNU General Public License for more details. 0018 0019 You should have received a copy of the GNU General Public License 0020 along with this program. If not, see <http://www.gnu.org/licenses/>. 0021 */ 0022 0023 #ifndef CACTIONBASE_H 0024 #define CACTIONBASE_H 0025 0026 #include <qstring.h> 0027 0028 #include <kmuddy_export.h> 0029 0030 struct cActionBasePrivate; 0031 0032 class cProfileSettings; 0033 class cTextChunk; 0034 enum ParamType { PT_INT, PT_STRING, PT_NOTHING, PT_TEXTCHUNK, PT_POINTER }; 0035 0036 /** 0037 Base class for every object that wants to use cActionManager. 0038 0039 @author Tomas Mecir 0040 */ 0041 0042 class KMUDDY_EXPORT cActionBase { 0043 public: 0044 /** Constructor. Registers itself with cActionManager, if session >= 0 */ 0045 cActionBase (const QString &name, int session = -1); 0046 /** destructor */ 0047 virtual ~cActionBase (); 0048 0049 /** object's name */ 0050 QString objName () { return _name; }; 0051 /** session number */ 0052 int sess (); 0053 0054 int attrib (const QString &name); 0055 void setAttrib (const QString &name, int value); 0056 QString strAttrib (const QString &name); 0057 void setStrAttrib (const QString &name, const QString &value); 0058 protected: 0059 void addEventHandler (QString name, int priority, ParamType pt); 0060 void removeEventHandler (QString name); 0061 void addGlobalEventHandler (QString name, int priority, ParamType pt); 0062 void removeGlobalEventHandler (QString name); 0063 0064 /** Returns the settings of the session. Provided for convenience. */ 0065 cProfileSettings *settings (); 0066 0067 cActionBase *object (const QString &name, int session = -1); 0068 0069 // the following 10 methods exist so that we don't have to #include cActionManager everywhere 0070 /** call an object's action - PT_INT parameter */ 0071 QString callAction (QString objectName, QString action, int session, int par1, int par2=0); 0072 /** call an object's action - PT_STRING parameter */ 0073 QString callAction (QString objectName, QString action, int session, 0074 QString &par1, const QString &par2=QString()); 0075 /** as above, but with const string */ 0076 QString callAction (QString objectName, QString action, int session, 0077 const QString &par1, const QString &par2=QString()); 0078 /** call an object's action - PT_NOTHING parameter */ 0079 QString callAction (QString objectName, QString action, int session); 0080 /** call an object's action - PT_TEXTCHUNK parameter */ 0081 QString callAction (QString objectName, QString action, int session, cTextChunk *par); 0082 /** call an object's action - PT_POINTER parameter */ 0083 QString callAction (QString objectName, QString action, int session, void *par); 0084 /** invoke an event - PT_INT parameter */ 0085 void invokeEvent (QString event, int session, int par1, int par2 = 0); 0086 /** invoke an event - PT_STRING parameter */ 0087 void invokeEvent (QString event, int session, QString &par1, 0088 const QString &par2 = QString()); 0089 /** as above, but const param - so that passing constant strings works */ 0090 void invokeEvent (QString event, int session, const QString &par1, 0091 const QString &par2 = QString()); 0092 /** invoke an event - PT_NOTHING parameter */ 0093 void invokeEvent (QString event, int session); 0094 /** invoke an event - PT_TEXTCHUNK parameter */ 0095 void invokeEvent (QString event, int session, cTextChunk *par); 0096 /** invoke an event - PT_POINTER parameter */ 0097 void invokeEvent (QString event, int session, void *par); 0098 0099 0100 virtual QString actionIntHandler (QString /*action*/, int /*session*/, int /*par1*/, int /*par2*/) 0101 { return QString(); }; 0102 virtual QString actionStringHandler (QString /*action*/, int /*session*/, 0103 QString &/*par1*/, const QString &/*par2*/) 0104 { return QString(); }; 0105 virtual QString actionNothingHandler (QString /*action*/, int /*session*/) 0106 { return QString(); }; 0107 virtual QString actionChunkHandler (QString /*action*/, int /*session*/, cTextChunk * /*par*/) 0108 { return QString(); }; 0109 virtual QString actionVoidHandler (QString /*action*/, int /*session*/, void * /*par*/) 0110 { return QString(); }; 0111 0112 virtual void eventNothingHandler (QString /*event*/, int /*session*/); 0113 virtual void eventIntHandler (QString /*event*/, int /*session*/, int /*par1*/, int /*par2*/); 0114 virtual void eventStringHandler (QString /*event*/, int /*session*/, 0115 QString &/*par1*/, const QString &/*par2*/); 0116 virtual void eventChunkHandler (QString /*event*/, int /*session*/, cTextChunk * /*par*/); 0117 virtual void eventVoidHandler (QString /*event*/, int /*session*/, void * /*par*/); 0118 0119 QString _name; 0120 cActionBasePrivate *d; 0121 0122 // cActionManager will want to access event handlers ... 0123 friend class cActionManager; 0124 }; 0125 0126 #endif