filerenameroptions.cpp 5.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/***************************************************************************
    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 <klocale.h>
#include <kdebug.h>
#include <knuminput.h>

#include <qlayout.h>
#include <qlabel.h>
#include <qradiobutton.h>
#include <qlineedit.h>
Laurent Montel's avatar
Laurent Montel committed
24
#include <q3buttongroup.h>
25 26 27 28 29

#include "filerenameroptions.h"

FileRenamerTagOptions::FileRenamerTagOptions(QWidget *parent,
                                             const TagRenamerOptions &options) :
30 31 32
    QWidget(parent),
    Ui::FileRenamerTagOptionsBase(),
    m_options(options)
33
{
34 35
    setupUi(this);

36 37 38 39 40
    layout()->setSpacing(KDialog::spacingHint());
    layout()->setMargin(0);

    m_emptyTagGroup->layout()->setSpacing(KDialog::spacingHint());
    m_trackGroup->layout()->setSpacing(KDialog::spacingHint());
41 42 43

#warning Just commenting these out for now.
/*
44 45 46 47 48
    m_emptyValueLayout->setSpacing(KDialog::spacingHint());
    m_exampleLayout->setSpacing(KDialog::spacingHint());
    m_spinLayout->setSpacing(KDialog::spacingHint());
    m_widthLayout->setSpacing(KDialog::spacingHint());
    m_tagLayout->setSpacing(KDialog::spacingHint());
49
*/
50 51 52 53 54
    m_tagFormatGroup->layout()->setSpacing(KDialog::spacingHint());

    if(m_options.category() != Track)
        m_trackGroup->hide();

Scott Wheeler's avatar
Scott Wheeler committed
55
    QString tagText = m_options.tagTypeText();
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

    setCaption(caption().arg(tagText));
    m_tagFormatGroup->setTitle(m_tagFormatGroup->title().arg(tagText));
    m_emptyTagGroup->setTitle(m_emptyTagGroup->title().arg(tagText));
    m_description->setText(m_description->text().arg(tagText));
    m_tagLabel->setText(m_tagLabel->text().arg(tagText));

    m_prefixText->setText(options.prefix());
    m_suffixText->setText(options.suffix());
    if(options.emptyAction() == TagRenamerOptions::ForceEmptyInclude)
        m_includeEmptyButton->setChecked(true);
    else if(options.emptyAction() == TagRenamerOptions::UseReplacementValue)
        m_useValueButton->setChecked(true);
    m_emptyTagValue->setText(options.emptyText());
    m_trackWidth->setValue(options.trackWidth());

    slotBracketsChanged();
    slotEmptyActionChanged();
    slotTrackWidthChanged();
}

void FileRenamerTagOptions::slotBracketsChanged()
{
Scott Wheeler's avatar
Scott Wheeler committed
79
    QString tag = m_options.tagTypeText();
80 81 82 83 84 85 86 87 88

    m_options.setPrefix(m_prefixText->text());
    m_options.setSuffix(m_suffixText->text());

    m_substitution->setText(m_options.prefix() + tag + m_options.suffix());
}

void FileRenamerTagOptions::slotTrackWidthChanged()
{
89
    int width = m_trackWidth->value();
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    m_options.setTrackWidth(width);

    QString singleDigitText = m_singleDigit->text();
    singleDigitText.remove(" ->");
    QString doubleDigitText = m_doubleDigit->text();
    doubleDigitText.remove(" ->");

    if(singleDigitText.length() < width) {
        QString p;
        p.fill('0', width - singleDigitText.length());
        singleDigitText.prepend(p);
    }

    if(doubleDigitText.length() < width) {
        QString p;
        p.fill('0', width - doubleDigitText.length());
        doubleDigitText.prepend(p);
    }

    m_singleDigitExample->setText(singleDigitText);
    m_doubleDigitExample->setText(doubleDigitText);
}

void FileRenamerTagOptions::slotEmptyActionChanged()
{
    m_options.setEmptyText(m_emptyTagValue->text());

    m_options.setEmptyAction(TagRenamerOptions::IgnoreEmptyTag);

    if(m_useValueButton->isChecked())
        m_options.setEmptyAction(TagRenamerOptions::UseReplacementValue);
    else if(m_includeEmptyButton->isChecked())
        m_options.setEmptyAction(TagRenamerOptions::ForceEmptyInclude);
}

126 127 128 129 130 131
TagOptionsDialog::TagOptionsDialog(QWidget *parent,
                                   const TagRenamerOptions &options,
                                   unsigned categoryNumber) :
    KDialogBase(parent, 0, true, i18n("File Renamer"), Ok | Cancel),
    m_options(options),
    m_categoryNumber(categoryNumber)
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
{
    loadConfig();

    m_widget = new FileRenamerTagOptions(this, m_options);
    m_widget->setMinimumSize(400, 200);

    setMainWidget(m_widget);
}

void TagOptionsDialog::accept()
{
    m_options = m_widget->options();

    saveConfig();
    KDialogBase::accept();
}

void TagOptionsDialog::loadConfig()
{
    // Our m_options may not have been loaded from KConfig, force that to
    // happen.

154 155
    CategoryID category(m_options.category(), m_categoryNumber);
    m_options = TagRenamerOptions(category);
156 157 158 159
}

void TagOptionsDialog::saveConfig()
{
160
    m_options.saveConfig(m_categoryNumber);
161 162 163 164
}

#include "filerenameroptions.moc"

165
// vim: set et sw=4 tw=0 sta: