~mixxxcontributors/mixxx/advanced_autodj

« back to all changes in this revision

Viewing changes to mixxx/src/controllers/controllerpresetinfo.h

  • Committer: Daniel Schürmann
  • Date: 2013-06-12 23:27:21 UTC
  • mfrom: (3184.1.101 mixxx-trunk)
  • Revision ID: daschuer@mixxx.org-20130612232721-ol6h11m9xbf72d2k
merge -r date:2012-06-26 lp:mixxx

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
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
 
6
*
 
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.
 
10
*/
 
11
 
 
12
#ifndef CONTROLLERPRESETINFO_H
 
13
#define CONTROLLERPRESETINFO_H
 
14
 
 
15
#include <QtGui>
 
16
#include <QMap>
 
17
#include <QHash>
 
18
 
 
19
#include "configobject.h"
 
20
 
 
21
class PresetInfo {
 
22
  public:
 
23
    PresetInfo();
 
24
    PresetInfo(const QString path);
 
25
    virtual ~PresetInfo() {};
 
26
 
 
27
    inline bool isValid() const {
 
28
        return m_valid;
 
29
    }
 
30
 
 
31
    inline const QString getPath() const { return path; };
 
32
 
 
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; };
 
38
 
 
39
    inline const QList< QHash<QString,QString> > getProducts() const { return products; };
 
40
 
 
41
  private:
 
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;
 
46
 
 
47
    bool m_valid;
 
48
    QString path;
 
49
    QString name;
 
50
    QString author;
 
51
    QString description;
 
52
    QString forumlink;
 
53
    QString wikilink;
 
54
    QList< QHash<QString,QString> > products;
 
55
};
 
56
 
 
57
class PresetInfoEnumerator {
 
58
  public:
 
59
    PresetInfoEnumerator(ConfigObject<ConfigValue> *pConfig);
 
60
    virtual ~PresetInfoEnumerator() {};
 
61
 
 
62
    bool isValidExtension(const QString extension);
 
63
 
 
64
    bool hasPresetInfo(const QString extension, const QString name);
 
65
    bool hasPresetInfo(const QString path);
 
66
 
 
67
    PresetInfo getPresetInfo(const QString extension, const QString name);
 
68
    PresetInfo getPresetInfo(const QString path);
 
69
 
 
70
    // Return cached list of presets for this extension
 
71
    QList <PresetInfo> getPresets(const QString extension);
 
72
 
 
73
    // Updates presets matching given extension
 
74
    void updatePresets(const QString extension);
 
75
 
 
76
  protected:
 
77
    void addExtension(QString extension);
 
78
    void loadSupportedPresets();
 
79
 
 
80
  private:
 
81
    QList <QString> fileExtensions;
 
82
    ConfigObject<ConfigValue>* m_pConfig;
 
83
 
 
84
    // List of paths for controller presets
 
85
    QList <QString> controllerDirPaths;
 
86
 
 
87
    // Cached presets by extension. Map format is:
 
88
    // [extension,[preset_path,preset]]
 
89
    QMap <QString, QMap<QString, PresetInfo> > presetsByExtension;
 
90
 
 
91
};
 
92
 
 
93
#endif