/*************************************************************************** begin : Thu Oct 28 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. * * * ***************************************************************************/ #include #include #include #include #include #include "tagrenameroptions.h" TagRenamerOptions::TagRenamerOptions() : m_emptyAction(IgnoreEmptyTag), m_trackWidth(0), m_disabled(true), m_category(Unknown) { } TagRenamerOptions::TagRenamerOptions(const TagRenamerOptions &other) : m_prefix(other.m_prefix), m_suffix(other.m_suffix), m_emptyAction(other.m_emptyAction), m_emptyText(other.m_emptyText), m_trackWidth(other.m_trackWidth), m_disabled(other.m_disabled), m_category(other.m_category) { } TagRenamerOptions::TagRenamerOptions(const CategoryID &category) : m_category(category.category) { // Set some defaults bool disabled; unsigned categoryNum = category.categoryNumber; switch(category.category) { case Title: case Artist: case Genre: case Year: case Album: case Track: disabled = false; break; default: disabled = true; } // Make sure we don't use translated strings for the config file keys. TQString typeKey = tagTypeText(category.category, false); TDEConfigGroup config(TDEGlobal::config(), "FileRenamer"); if(categoryNum > 0) typeKey.append(TQString::number(categoryNum)); setSuffix(config.readEntry(TQString("%1Suffix").arg(typeKey))); setPrefix(config.readEntry(TQString("%1Prefix").arg(typeKey))); // Default the emptyAction to ignoring the empty tag. const TQString emptyAction = config.readEntry(TQString("%1EmptyAction").arg(typeKey)).lower(); setEmptyAction(IgnoreEmptyTag); if(emptyAction == "forceemptyinclude") setEmptyAction(ForceEmptyInclude); else if(emptyAction == "usereplacementvalue") setEmptyAction(UseReplacementValue); setEmptyText(config.readEntry(TQString("%1EmptyText").arg(typeKey))); setTrackWidth(config.readUnsignedNumEntry(TQString("%1TrackWidth").arg(typeKey))); setDisabled(config.readBoolEntry(TQString("%1Disabled").arg(typeKey), disabled)); } TQString TagRenamerOptions::tagTypeText(TagType type, bool translate) { // These must be declared in the same order that they are defined in // the TagType enum in test.h. We can dynamically translate these strings, // so make sure that I18N_NOOP() is used instead of i18n(). const char *tags[] = { I18N_NOOP("Title"), I18N_NOOP("Artist"), I18N_NOOP("Album"), I18N_NOOP("Track"), I18N_NOOP("Genre"), I18N_NOOP("Year") }; if(type < StartTag || type >= NumTypes) { kdWarning() << "I don't know what category we're looking up, this is a problem." << endl; kdWarning() << "The category ID is " << (unsigned) type << endl; return translate ? i18n("Unknown") : "Unknown"; } return translate ? TQString(i18n(tags[type])) : TQString(tags[type]); } void TagRenamerOptions::saveConfig(unsigned categoryNum) const { // Make sure we don't use translated strings for the config file keys. TQString typeKey = tagTypeText(false); if(categoryNum > 0) typeKey.append(TQString::number(categoryNum)); TDEConfigGroup config(TDEGlobal::config(), "FileRenamer"); config.writeEntry(TQString("%1Suffix").arg(typeKey), suffix()); config.writeEntry(TQString("%1Prefix").arg(typeKey), prefix()); TQString emptyStr; switch(emptyAction()) { case ForceEmptyInclude: emptyStr = "ForceEmptyInclude"; break; case IgnoreEmptyTag: emptyStr = "IgnoreEmptyTag"; break; case UseReplacementValue: emptyStr = "UseReplacementValue"; break; } config.writeEntry(TQString("%1EmptyAction").arg(typeKey), emptyStr); config.writeEntry(TQString("%1EmptyText").arg(typeKey), emptyText()); config.writeEntry(TQString("%1Disabled").arg(typeKey), disabled()); if(category() == Track) config.writeEntry(TQString("%1TrackWidth").arg(typeKey), trackWidth()); config.sync(); } TagType TagRenamerOptions::tagFromCategoryText(const TQString &text, bool translate) { for(unsigned i = StartTag; i < NumTypes; ++i) if(tagTypeText(static_cast(i), translate) == text) return static_cast(i); return Unknown; } // vim: set et ts=4 sw=4: