diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | e2de64d6f1beb9e492daf5b886e19933c1fa41dd (patch) | |
tree | 9047cf9e6b5c43878d5bf82660adae77ceee097a /juk/filehandleproperties.h | |
download | tdemultimedia-e2de64d6f1beb9e492daf5b886e19933c1fa41dd.tar.gz tdemultimedia-e2de64d6f1beb9e492daf5b886e19933c1fa41dd.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdemultimedia@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'juk/filehandleproperties.h')
-rw-r--r-- | juk/filehandleproperties.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/juk/filehandleproperties.h b/juk/filehandleproperties.h new file mode 100644 index 00000000..b0b708bc --- /dev/null +++ b/juk/filehandleproperties.h @@ -0,0 +1,94 @@ +/*************************************************************************** + Copyright (C) 2004 by Scott Wheeler <wheeler@kde.org> +***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef FILEHANDLEPROPERTIES_H +#define FILEHANDLEPROPERTIES_H + +#include <qmap.h> + +/* + * These ugly macros make possible a property registration system that makes it + * easy to add properties to the FileHandle that can be accessed via the DCOP + * interface. + * + * Properties should actually be added to the filehandle.cpp file. This file + * is just here to separate out some of the macro-related ugliness. + */ + +#define AddProperty(name, method) \ + namespace FileHandleProperties \ + { \ + struct name##Property : public Property \ + { \ + virtual QString value(const FileHandle &f) const \ + { \ + return f.method; \ + } \ + static const int dummy; \ + }; \ + static name##Property name##Instance; \ + const int name##Property::dummy = addToPropertyMap(#name, &name##Instance); \ + } + +#define AddNumberProperty(name, method) \ + namespace FileHandleProperties \ + { \ + struct name##Property : public Property \ + { \ + virtual QString value(const FileHandle &f) const \ + { \ + return QString::number(f.method); \ + } \ + static const int dummy; \ + }; \ + static name##Property name##Instance; \ + const int name##Property::dummy = addToPropertyMap(#name, &name##Instance); \ + } + +namespace FileHandleProperties +{ + struct Property + { + virtual QString value(const FileHandle &) const + { + return QString::null; + } + }; + + static QMap<QCString, const Property *> propertyMap; + + static int addToPropertyMap(const QCString &name, Property *property) + { + propertyMap[name] = property; + return 0; + } + + static QString property(const FileHandle &file, const QCString &key) + { + return propertyMap.contains(key) ? propertyMap[key]->value(file) : QString::null; + } + + static QStringList properties() + { + static QStringList l; + + if(l.isEmpty()) { + QMap<QCString, const Property *>::ConstIterator it = propertyMap.begin(); + for(; it != propertyMap.end(); ++it) + l.append(QString(it.key())); + } + return l; + } +} + +#endif |