|
|
|
/***************************************************************************
|
|
|
|
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 <kglobal.h>
|
|
|
|
#include <klocale.h>
|
|
|
|
#include <kconfig.h>
|
|
|
|
#include <kconfigbase.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);
|
|
|
|
KConfigGroup config(KGlobal::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));
|
|
|
|
|
|
|
|
KConfigGroup config(KGlobal::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;
|
|
|
|
}
|
|
|
|
|
|
|
|
// vim: set et ts=4 sw=4:
|