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.
tdemultimedia/juk/tagrenameroptions.cpp

157 lines
5.1 KiB

/***************************************************************************
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 <kdebug.h>
#include <tdeglobal.h>
#include <tdelocale.h>
#include <tdeconfig.h>
#include <tdeconfigbase.h>
#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<TagType>(i), translate) == text)
return static_cast<TagType>(i);
return Unknown;
}