diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-02-02 09:45:48 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-02-02 09:45:48 +0000 |
| commit | 8eccc97170a4ea592aa3fe38fed1294e86df0b1c (patch) | |
| tree | acc5396b22c40f6ddb2f58bc9f2a8ca2145904b0 /src/qmmpui/metadataformatter2.h | |
| parent | 38e96066fdf3afe2c9afe2d4ac161342e5a01ff4 (diff) | |
| download | qmmp-8eccc97170a4ea592aa3fe38fed1294e86df0b1c.tar.gz qmmp-8eccc97170a4ea592aa3fe38fed1294e86df0b1c.tar.bz2 qmmp-8eccc97170a4ea592aa3fe38fed1294e86df0b1c.zip | |
refactoring, fixed some bugs
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4709 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/metadataformatter2.h')
| -rw-r--r-- | src/qmmpui/metadataformatter2.h | 49 |
1 files changed, 17 insertions, 32 deletions
diff --git a/src/qmmpui/metadataformatter2.h b/src/qmmpui/metadataformatter2.h index b193b9712..1e5bf7538 100644 --- a/src/qmmpui/metadataformatter2.h +++ b/src/qmmpui/metadataformatter2.h @@ -34,7 +34,7 @@ class MetaDataFormatter2 public: /*! * Constructor. - * @param format Metadata template. + * @param pattern Metadata template. * Syntax: * %p - artist, * %a - album, @@ -52,7 +52,12 @@ public: * %l - duration, * %if(A,B,C) or %if(A&B&C,D,E) - condition. */ - MetaDataFormatter2(const QString &format = QString()); + MetaDataFormatter2(const QString &pattern = QString()); + + void setPattern(const QString &pattern); + + const QString pattern() const; + /*! * Converts metadata of item \b item to one string using template. */ @@ -71,42 +76,22 @@ public: private: struct Node; - struct Param - { - enum { - KEY = 0, - TEXT, - NODES - } type; + struct Param; - Qmmp::MetaData key; - QString text; - QList<Node> children; - }; - struct Node - { - enum { - PRINT_TEXT = 0, - IF_KEYWORD - } command; + bool parseField(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end); + bool parseIf(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end); + void parseText(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end); - QList<Param> params; - }; - - bool processKey(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end); - bool processIf(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end); - void processText(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end); - - QString execute(QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length); + QString evalute(QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length); QString printParam(Param *p, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length); + QString printField(int field, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length); + QString dumpNode(Node node); - QString nodeToString(Node node); - - QList<MetaDataFormatter2::Node> compile(const QString &format); - QString m_format; + QList<MetaDataFormatter2::Node> compile(const QString &expr); + QString m_pattern; QList<Node> m_nodes; - //QString processIfKeyWord(QString title); + QMap<QString, int> m_fieldNames; }; #endif // METADATAFORMATTER2_H |
