2
* @file controllerpresetinfo.h
3
* @author Ilkka Tuohela hile@iki.fi
4
* @date Wed May 15 2012
5
* @brief Base class handling enumeration and parsing of preset info headers
7
* This class handles enumeration and parsing of controller XML description file
8
* <info> header tags. It can be used to match controllers automatically or to
9
* show details for a mapping.
12
#ifndef CONTROLLERPRESETINFO_H
13
#define CONTROLLERPRESETINFO_H
19
#include "configobject.h"
24
PresetInfo(const QString path);
25
virtual ~PresetInfo() {};
27
inline bool isValid() const {
31
inline const QString getPath() const { return path; };
33
inline const QString getName() const { return name; } ;
34
inline const QString getDescription() const { return description; };
35
inline const QString getForumLink() const { return forumlink; };
36
inline const QString getWikiLink() const { return wikilink; };
37
inline const QString getAuthor() const { return author; };
39
inline const QList< QHash<QString,QString> > getProducts() const { return products; };
42
QHash<QString,QString> parseHIDProduct(const QDomElement& element) const;
43
// Note - following are just stubs, not yet implemented
44
QHash<QString,QString> parseMIDIProduct(const QDomElement& element) const;
45
QHash<QString,QString> parseOSCProduct(const QDomElement& element) const;
54
QList< QHash<QString,QString> > products;
57
class PresetInfoEnumerator {
59
PresetInfoEnumerator(ConfigObject<ConfigValue> *pConfig);
60
virtual ~PresetInfoEnumerator() {};
62
bool isValidExtension(const QString extension);
64
bool hasPresetInfo(const QString extension, const QString name);
65
bool hasPresetInfo(const QString path);
67
PresetInfo getPresetInfo(const QString extension, const QString name);
68
PresetInfo getPresetInfo(const QString path);
70
// Return cached list of presets for this extension
71
QList <PresetInfo> getPresets(const QString extension);
73
// Updates presets matching given extension
74
void updatePresets(const QString extension);
77
void addExtension(QString extension);
78
void loadSupportedPresets();
81
QList <QString> fileExtensions;
82
ConfigObject<ConfigValue>* m_pConfig;
84
// List of paths for controller presets
85
QList <QString> controllerDirPaths;
87
// Cached presets by extension. Map format is:
88
// [extension,[preset_path,preset]]
89
QMap <QString, QMap<QString, PresetInfo> > presetsByExtension;