summaryrefslogtreecommitdiffstats
path: root/juk/categoryreaderinterface.h
diff options
context:
space:
mode:
Diffstat (limited to 'juk/categoryreaderinterface.h')
-rw-r--r--juk/categoryreaderinterface.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/juk/categoryreaderinterface.h b/juk/categoryreaderinterface.h
new file mode 100644
index 00000000..5d2dfd0f
--- /dev/null
+++ b/juk/categoryreaderinterface.h
@@ -0,0 +1,122 @@
+/***************************************************************************
+ begin : Sun Oct 31 2004
+ copyright : (C) 2004 by Michael Pyne
+ email : michael.pyne@kdemail.net
+***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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 JUK_CATEGORYREADERINTERFACE_H
+#define JUK_CATEGORYREADERINTERFACE_H
+
+#include "tagrenameroptions.h"
+
+enum TagType;
+class QString;
+
+template<class T> class QValueList;
+
+/**
+ * This class is used to map categories into values. You should implement the
+ * functionality in a subclass.
+ *
+ * @author Michael Pyne <michael.pyne@kdemail.net>
+ */
+class CategoryReaderInterface
+{
+public:
+ virtual ~CategoryReaderInterface() { }
+
+ /**
+ * Returns the textual representation of \p type, without any processing done
+ * on it. For example, track values shouldn't be expanded out to the minimum
+ * width from this function. No CategoryID is needed since the value is constant
+ * for a category.
+ *
+ * @param type, The category to retrieve the value of.
+ * @return textual representation of that category's value.
+ */
+ virtual QString categoryValue(TagType type) const = 0;
+
+ /**
+ * Returns the user-specified prefix string for \p category.
+ *
+ * @param category the category to retrieve the value for.
+ * @return user-specified prefix string for \p category.
+ */
+ virtual QString prefix(const CategoryID &category) const = 0;
+
+ /**
+ * Returns the user-specified suffix string for \p category.
+ *
+ * @param category the category to retrieve the value for.
+ * @return user-specified suffix string for \p category.
+ */
+ virtual QString suffix(const CategoryID &category) const = 0;
+
+ /**
+ * Returns the user-specified empty action for \p category.
+ *
+ * @param category the category to retrieve the value for.
+ * @return user-specified empty action for \p category.
+ */
+ virtual TagRenamerOptions::EmptyActions emptyAction(const CategoryID &category) const = 0;
+
+ /**
+ * Returns the user-specified empty text for \p category. This text might
+ * be used to replace an empty value.
+ *
+ * @param category the category to retrieve the value for.
+ * @return the user-specified empty text for \p category.
+ */
+ virtual QString emptyText(const CategoryID &category) const = 0;
+
+ /**
+ * @return the categories in the order the user has chosen. Categories may
+ * be repeated (which is why CategoryID has the categoryNumber value to
+ * disambiguate duplicates).
+ */
+ virtual QValueList<CategoryID> categoryOrder() const = 0;
+
+ /**
+ * @return track width for the Track item identified by categoryNum.
+ */
+ virtual int trackWidth(unsigned categoryNum) const = 0;
+
+ // You probably shouldn't reimplement this
+ virtual QString value(const CategoryID &category) const;
+
+ virtual QString separator() const = 0;
+
+ virtual QString musicFolder() const = 0;
+
+ /**
+ * @param index the zero-based index of the item just before the
+ * separator in question.
+ * @return true if a folder separator should be placed between the tags
+ * at index and index + 1.
+ */
+ virtual bool hasFolderSeparator(unsigned index) const = 0;
+
+ virtual bool isDisabled(const CategoryID &category) const = 0;
+
+ // You probably shouldn't reimplement this
+ virtual bool isRequired(const CategoryID &category) const;
+
+ // You probably shouldn't reimplement this
+ virtual bool isEmpty(TagType category) const;
+
+ // You probably shouldn't reimplement this
+ virtual QString fixupTrack(const QString &track, unsigned categoryNum) const;
+};
+
+#endif /* JUK_CATEGORYREADERINTERFACE_H */
+
+// vim: set et sw=4 ts=4: