You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
5.7 KiB
177 lines
5.7 KiB
/***************************************************************************
|
|
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_TAGRENAMEROPTIONS_H
|
|
#define JUK_TAGRENAMEROPTIONS_H
|
|
|
|
// Insert all new tag types before NumTypes, that way NumTypes will always be
|
|
// the count of valid tag types.
|
|
enum TagType {
|
|
StartTag, Title = StartTag, Artist, Album,
|
|
Track, Genre, Year, NumTypes, Unknown
|
|
};
|
|
|
|
/**
|
|
* Class that uniquely identifies a user's category (since the user may have
|
|
* the same category more than once in their file renaming structure).
|
|
*/
|
|
struct CategoryID
|
|
{
|
|
CategoryID() : category(Unknown), categoryNumber(0)
|
|
{
|
|
}
|
|
|
|
CategoryID(const CategoryID &other) : category(other.category),
|
|
categoryNumber(other.categoryNumber)
|
|
{
|
|
}
|
|
|
|
CategoryID(TagType cat, unsigned num) : category(cat), categoryNumber(num)
|
|
{
|
|
}
|
|
|
|
CategoryID &operator=(const CategoryID &other)
|
|
{
|
|
if(this == &other)
|
|
return *this;
|
|
|
|
category = other.category;
|
|
categoryNumber = other.categoryNumber;
|
|
|
|
return *this;
|
|
}
|
|
|
|
bool operator==(const CategoryID &other) const
|
|
{
|
|
return category == other.category && categoryNumber == other.categoryNumber;
|
|
}
|
|
|
|
bool operator!=(const CategoryID &other) const
|
|
{
|
|
return !(*this == other);
|
|
}
|
|
|
|
bool operator<(const CategoryID &other) const
|
|
{
|
|
if(category == other.category)
|
|
return categoryNumber < other.categoryNumber;
|
|
|
|
return category < other.category;
|
|
}
|
|
|
|
TagType category;
|
|
unsigned categoryNumber;
|
|
};
|
|
|
|
/**
|
|
* Defines options for a tag type. Used by FileRenamerTagOptions as its
|
|
* data type.
|
|
*
|
|
* @author Michael Pyne <michael.pyne@kdemail.net>
|
|
*/
|
|
class TagRenamerOptions
|
|
{
|
|
public:
|
|
enum EmptyActions { ForceEmptyInclude, IgnoreEmptyTag, UseReplacementValue };
|
|
|
|
TagRenamerOptions();
|
|
|
|
/**
|
|
* Construct the options by loading from KConfig.
|
|
*
|
|
* @param category The category to load the options for.
|
|
*/
|
|
TagRenamerOptions(const CategoryID &category);
|
|
TagRenamerOptions(const TagRenamerOptions &other);
|
|
|
|
TQString prefix() const { return m_prefix; }
|
|
TQString suffix() const { return m_suffix; }
|
|
TQString emptyText() const { return m_emptyText; }
|
|
EmptyActions emptyAction() const { return m_emptyAction; }
|
|
unsigned trackWidth() const { return m_trackWidth; }
|
|
bool disabled() const { return m_disabled; }
|
|
TagType category() const { return m_category; }
|
|
|
|
void setPrefix(const TQString &prefix) { m_prefix = prefix; }
|
|
void setSuffix(const TQString &suffix) { m_suffix = suffix; }
|
|
void setEmptyText(const TQString &emptyText) { m_emptyText = emptyText; }
|
|
void setEmptyAction(EmptyActions action) { m_emptyAction = action; }
|
|
void setTrackWidth(unsigned width) { m_trackWidth = width; }
|
|
void setDisabled(bool disabled) { m_disabled = disabled; }
|
|
void setCategory(TagType category) { m_category = category; }
|
|
|
|
/**
|
|
* Maps \p type to a textual representation of its name. E.g. Track => "Track"
|
|
*
|
|
* @param type the category to retrieve a text representation of.
|
|
* @param translate if true, the string is translated (if possible).
|
|
* @return text representation of category.
|
|
*/
|
|
static TQString tagTypeText(TagType category, bool translate = true);
|
|
|
|
TQString tagTypeText(bool translate = true) const
|
|
{
|
|
return tagTypeText(category(), translate);
|
|
}
|
|
|
|
/**
|
|
* Function that tries to match a string back to its category. Uses
|
|
* the case-sensitive form of the string. If it fails it will return
|
|
* Unknown.
|
|
*
|
|
* @param translated If true, @p text is translated, if false, it is the untranslated
|
|
* version.
|
|
*/
|
|
static TagType tagFromCategoryText(const TQString &text, bool translate = true);
|
|
|
|
/**
|
|
* This saves the options to the global KConfig object.
|
|
*
|
|
* @param categoryNum The zero-based count of the number of this type of
|
|
* category. For example, this would be 1 for the
|
|
* second category of this type. The stored category
|
|
* number is not used in order to allow you to save with
|
|
* a different one (for compaction purposes perhaps).
|
|
*/
|
|
void saveConfig(unsigned categoryNum) const;
|
|
|
|
private:
|
|
|
|
// Member variables
|
|
|
|
TQString m_prefix;
|
|
TQString m_suffix;
|
|
|
|
/// Defines the action to take when the tag is empty.
|
|
EmptyActions m_emptyAction;
|
|
|
|
/// If m_emptyAction is UseReplacementValue, this holds the text of the value
|
|
/// to use.
|
|
TQString m_emptyText;
|
|
|
|
/// Used only for the Track type. Defines the minimum track width when
|
|
/// expanding the track token.
|
|
unsigned m_trackWidth;
|
|
|
|
/// This is true if this tag is always disabled when expanding file names.
|
|
bool m_disabled;
|
|
|
|
TagType m_category;
|
|
};
|
|
|
|
#endif /* JUK_TAGRENAMEROPTIONS_H */
|
|
|
|
// vim: set et ts=4 sw=4:
|