From e2de64d6f1beb9e492daf5b886e19933c1fa41dd Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdemultimedia@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- juk/tagrenameroptions.cpp | 158 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 juk/tagrenameroptions.cpp (limited to 'juk/tagrenameroptions.cpp') diff --git a/juk/tagrenameroptions.cpp b/juk/tagrenameroptions.cpp new file mode 100644 index 00000000..4f7ceba8 --- /dev/null +++ b/juk/tagrenameroptions.cpp @@ -0,0 +1,158 @@ +/*************************************************************************** + 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. + + QString typeKey = tagTypeText(category.category, false); + KConfigGroup config(KGlobal::config(), "FileRenamer"); + + if(categoryNum > 0) + typeKey.append(QString::number(categoryNum)); + + setSuffix(config.readEntry(QString("%1Suffix").arg(typeKey))); + setPrefix(config.readEntry(QString("%1Prefix").arg(typeKey))); + + // Default the emptyAction to ignoring the empty tag. + + const QString emptyAction = config.readEntry(QString("%1EmptyAction").arg(typeKey)).lower(); + setEmptyAction(IgnoreEmptyTag); + + if(emptyAction == "forceemptyinclude") + setEmptyAction(ForceEmptyInclude); + else if(emptyAction == "usereplacementvalue") + setEmptyAction(UseReplacementValue); + + setEmptyText(config.readEntry(QString("%1EmptyText").arg(typeKey))); + setTrackWidth(config.readUnsignedNumEntry(QString("%1TrackWidth").arg(typeKey))); + setDisabled(config.readBoolEntry(QString("%1Disabled").arg(typeKey), disabled)); +} + +QString 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 ? i18n(tags[type]) : tags[type]; +} + +void TagRenamerOptions::saveConfig(unsigned categoryNum) const +{ + // Make sure we don't use translated strings for the config file keys. + + QString typeKey = tagTypeText(false); + if(categoryNum > 0) + typeKey.append(QString::number(categoryNum)); + + KConfigGroup config(KGlobal::config(), "FileRenamer"); + + config.writeEntry(QString("%1Suffix").arg(typeKey), suffix()); + config.writeEntry(QString("%1Prefix").arg(typeKey), prefix()); + + QString emptyStr; + + switch(emptyAction()) { + case ForceEmptyInclude: + emptyStr = "ForceEmptyInclude"; + break; + + case IgnoreEmptyTag: + emptyStr = "IgnoreEmptyTag"; + break; + + case UseReplacementValue: + emptyStr = "UseReplacementValue"; + break; + } + + config.writeEntry(QString("%1EmptyAction").arg(typeKey), emptyStr); + config.writeEntry(QString("%1EmptyText").arg(typeKey), emptyText()); + config.writeEntry(QString("%1Disabled").arg(typeKey), disabled()); + + if(category() == Track) + config.writeEntry(QString("%1TrackWidth").arg(typeKey), trackWidth()); + + config.sync(); +} + +TagType TagRenamerOptions::tagFromCategoryText(const QString &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: -- cgit v1.2.1