summaryrefslogtreecommitdiffstats
path: root/kdelirc/kdelirc/profileserver.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdelirc/kdelirc/profileserver.h')
-rw-r--r--kdelirc/kdelirc/profileserver.h142
1 files changed, 142 insertions, 0 deletions
diff --git a/kdelirc/kdelirc/profileserver.h b/kdelirc/kdelirc/profileserver.h
new file mode 100644
index 0000000..f906dd0
--- /dev/null
+++ b/kdelirc/kdelirc/profileserver.h
@@ -0,0 +1,142 @@
+//
+//
+// C++ Interface: $MODULE$
+//
+// Description:
+//
+//
+// Author: Gav Wood <gav@kde.org>, (C) 2003
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef PROFILESERVER_H
+#define PROFILESERVER_H
+
+#include <qpair.h>
+#include <qstring.h>
+#include <qvaluelist.h>
+#include <qmap.h>
+#include <qxml.h>
+#include <qdict.h>
+
+/**
+@author Gav Wood
+*/
+
+enum IfMulti {IM_DONTSEND, IM_SENDTOALL, IM_SENDTOTOP, IM_SENDTOBOTTOM};
+
+typedef QPair<int,int> Range;
+
+class ProfileAction;
+class Profile;
+
+class ProfileActionArgument
+{
+ QString theComment, theType;
+ Range theRange;
+ QString theDefault; // should be QVariant?
+ const ProfileAction *parent;
+
+ friend class Profile;
+public:
+ const QString &comment() const { return theComment; }
+ void setComment(const QString &a) { theComment = a; }
+ const QString &type() const { return theType; }
+ void setType(const QString &a) { theType = a; }
+ const QString &getDefault() const { return theDefault; }
+ void setDefault(const QString &a) { theDefault = a; }
+ const Range &range() const { return theRange; }
+ void setRange(const Range &a) { theRange = a; }
+
+ const ProfileAction *action() const { return parent; }
+ void setAction(const ProfileAction *a) { parent = a; }
+};
+
+class ProfileAction
+{
+ QString theObjId, thePrototype, theName, theComment, theClass;
+ float theMultiplier;
+ const Profile *parent;
+ bool theRepeat, theAutoStart;
+ QValueList<ProfileActionArgument> theArguments;
+
+ friend class Profile;
+public:
+ const QString &objId() const { return theObjId; }
+ void setObjId(const QString &a) { theObjId = a; }
+ const QString &prototype() const { return thePrototype; }
+ void setPrototype(const QString &a) { thePrototype = a; }
+ const QString &name() const { return theName; }
+ void setName(const QString &a) { theName = a; }
+ const QString &comment() const { return theComment; }
+ void setComment(const QString &a) { theComment = a; }
+ const QString &getClass() const { return theClass; }
+ void setClass(const QString &a) { theClass = a; }
+ const float multiplier() const { return theMultiplier; }
+ void setMultiplier(const float a) { theMultiplier = a; }
+ bool repeat() const { return theRepeat; }
+ void setRepeat(bool a) { theRepeat = a; }
+ bool autoStart() const { return theAutoStart; }
+ void setAutoStart(bool a) { theAutoStart = a; }
+ const QValueList<ProfileActionArgument> &arguments() const { return theArguments; }
+
+ const Profile *profile() const { return parent; }
+ void setProfile(const Profile *a) { parent = a; }
+};
+
+class Profile : public QXmlDefaultHandler
+{
+ QString theId, theName, theAuthor, theServiceName;
+ IfMulti theIfMulti;
+ bool theUnique;
+ QString charBuffer;
+
+ ProfileAction *curPA;
+ ProfileActionArgument *curPAA;
+ QDict<ProfileAction> theActions; // objid+"::"+prototype => ProfileAction
+
+ friend class ProfileServer;
+public:
+ bool characters(const QString &data);
+ bool startElement(const QString &, const QString &, const QString &name, const QXmlAttributes &attributes);
+ bool endElement(const QString &, const QString &, const QString &name);
+
+ const QString &id() const { return theId; }
+ void setId(const QString &a) { theId = a; }
+ const QString &name() const { return theName; }
+ void setName(const QString &a) { theName = a; }
+ const QString &author() const { return theAuthor; }
+ void setAuthor(const QString &a) { theAuthor = a; }
+ const bool unique() const { return theUnique; }
+ void setUnique(const bool a) { theUnique = a; }
+ const IfMulti ifMulti() const { return theIfMulti; }
+ void setIfMulti(const IfMulti a) { theIfMulti = a; }
+ const QString &serviceName() const { if(theServiceName != QString::null) return theServiceName; return theName; }
+ void setServiceName(const QString &a) { theServiceName = a; }
+ const QDict<ProfileAction> &actions() const { return theActions; }
+ const ProfileAction *searchClass(const QString &c) const;
+
+ void loadFromFile(const QString &fileName);
+
+ Profile();
+};
+
+class ProfileServer
+{
+ static ProfileServer *theInstance;
+ void loadProfiles();
+ QDict<Profile> theProfiles; // id => Profile
+
+public:
+ static ProfileServer *profileServer() { if(!theInstance) theInstance = new ProfileServer(); return theInstance; }
+ const QDict<Profile> profiles() const { return theProfiles; }
+ const ProfileAction *getAction(const QString &appId, const QString &objId, const QString &prototype) const;
+ const ProfileAction *getAction(const QString &appId, const QString &actionId) const;
+ const QString &getServiceName(const QString &appId) const;
+
+ ProfileServer();
+ ~ProfileServer();
+};
+
+#endif