File indexing completed on 2024-04-14 04:00:05

0001 //
0002 // C++ Implementation: 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 #include "cactionbase.h"
0024 #include "cactionmanager.h"
0025 #include "cprofilemanager.h"
0026 #include "cprofilesettings.h"
0027 
0028 #include <map>
0029 
0030 struct cActionBasePrivate {
0031   std::map<QString, int> attribs;
0032   std::map<QString, QString> strattribs;
0033   int sess;
0034 };
0035 
0036 cActionBase::cActionBase (const QString &name, int session)
0037 {
0038   d = new cActionBasePrivate;
0039   _name = name;
0040   d->sess = session;
0041   if (session >= 0)
0042     cActionManager::self()->registerObject (this, session);  
0043 }
0044 
0045 cActionBase::~cActionBase ()
0046 {
0047   if (d->sess >= 0)
0048     cActionManager::self()->unregisterObject (this, d->sess);
0049   delete d;
0050   d = nullptr;
0051 }
0052 
0053 int cActionBase::sess ()
0054 {
0055   return d->sess;
0056 }
0057 
0058 int cActionBase::attrib (const QString &name)
0059 {
0060   if (d->attribs.count (name))
0061     return d->attribs[name];
0062   return 0;
0063 }
0064 
0065 void cActionBase::setAttrib (const QString &name, int value)
0066 {
0067   d->attribs[name] = value;
0068 }
0069 
0070 QString cActionBase::strAttrib (const QString &name)
0071 {
0072   if (d->strattribs.count (name))
0073     return d->strattribs[name];
0074   return QString();
0075 }
0076 
0077 void cActionBase::setStrAttrib (const QString &name, const QString &value)
0078 {
0079   d->strattribs[name] = value;
0080 }
0081 
0082 cProfileSettings *cActionBase::settings ()
0083 {
0084   return cProfileManager::self()->settings (d->sess);
0085 }
0086 
0087 void cActionBase::addEventHandler (QString name, int priority, ParamType pt)
0088 {
0089   cActionManager::self()->addEventHandler (this, d->sess, name, priority, pt);
0090 }
0091 
0092 void cActionBase::removeEventHandler (QString name)
0093 {
0094   cActionManager::self()->removeEventHandler (this, d->sess, name);
0095 }
0096 
0097 void cActionBase::addGlobalEventHandler (QString name, int priority, ParamType pt)
0098 {
0099   cActionManager::self()->addEventHandler (this, 0, name, priority, pt);
0100 }
0101 
0102 void cActionBase::removeGlobalEventHandler (QString name)
0103 {
0104   cActionManager::self()->removeEventHandler (this, 0, name);
0105 }
0106 
0107 cActionBase *cActionBase::object (const QString &name, int session)
0108 {
0109   return cActionManager::self()->object (name, (session == -1) ? d->sess : session);
0110 }
0111 
0112 QString cActionBase::callAction (QString objectName, QString action, int session, int par1,
0113     int par2)
0114 {
0115   return cActionManager::self()->callAction (objectName, action, session, par1, par2);
0116 }
0117 
0118 QString cActionBase::callAction (QString objectName, QString action, int session,
0119     QString &par1, const QString &par2)
0120 {
0121   return cActionManager::self()->callAction (objectName, action, session, par1, par2);
0122 }
0123 
0124 QString cActionBase::callAction (QString objectName, QString action, int session,
0125     const QString &par1, const QString &par2)
0126 {
0127   QString p = par1;
0128   return cActionManager::self()->callAction (objectName, action, session, p, par2);
0129 }
0130 
0131 QString cActionBase::callAction (QString objectName, QString action, int session)
0132 {
0133   return cActionManager::self()->callAction (objectName, action, session);
0134 }
0135 
0136 QString cActionBase::callAction (QString objectName, QString action, int session, cTextChunk *par)
0137 {
0138   return cActionManager::self()->callAction (objectName, action, session, par);
0139 }
0140 
0141 QString cActionBase::callAction (QString objectName, QString action, int session, void *par)
0142 {
0143   return cActionManager::self()->callAction (objectName, action, session, par);
0144 }
0145 
0146 void cActionBase::invokeEvent (QString event, int session, int par1, int par2)
0147 {
0148   cActionManager::self()->invokeEvent (event, session, par1, par2);
0149 }
0150 
0151 void cActionBase::invokeEvent (QString event, int session, QString &par1,
0152     const QString &par2)
0153 {
0154   cActionManager::self()->invokeEvent (event, session, par1, par2);
0155 }
0156 
0157 void cActionBase::invokeEvent (QString event, int session, const QString &par1,
0158     const QString &par2)
0159 {
0160   QString p = par1;
0161   cActionManager::self()->invokeEvent (event, session, p, par2);
0162 }
0163 
0164 void cActionBase::invokeEvent (QString event, int session)
0165 {
0166   cActionManager::self()->invokeEvent (event, session);
0167 }
0168 
0169 void cActionBase::invokeEvent (QString event, int session, cTextChunk *par)
0170 {
0171   cActionManager::self()->invokeEvent (event, session, par);
0172 }
0173 
0174 void cActionBase::invokeEvent (QString event, int session, void *par)
0175 {
0176   cActionManager::self()->invokeEvent (event, session, par);
0177 }
0178 
0179 void cActionBase::eventNothingHandler (QString /*event*/, int /*session*/) {}
0180 void cActionBase::eventIntHandler (QString /*event*/, int /*session*/, int /*par1*/, int /*par2*/){}
0181 void cActionBase::eventStringHandler (QString /*event*/, int /*session*/,
0182       QString &/*par1*/, const QString &/*par2*/){}
0183 void cActionBase::eventChunkHandler (QString /*event*/, int /*session*/, cTextChunk * /*par*/){}
0184 void cActionBase::eventVoidHandler (QString /*event*/, int /*session*/, void * /*par*/){}
0185