File indexing completed on 2024-04-28 16:06:15

0001 /* AUDEX CDDA EXTRACTOR
0002  * SPDX-FileCopyrightText: Copyright (C) 2007 Marco Nelles
0003  * <https://userbase.kde.org/Audex>
0004  *
0005  * SPDX-License-Identifier: GPL-3.0-or-later
0006  */
0007 
0008 #include "schemewizarddialog.h"
0009 
0010 #include <QDialogButtonBox>
0011 #include <QVBoxLayout>
0012 
0013 SchemeWizardDialog::SchemeWizardDialog(const QString &scheme, QWidget *parent)
0014     : QDialog(parent)
0015 {
0016     Q_UNUSED(parent);
0017 
0018     setWindowTitle(i18n("Filename Scheme Wizard"));
0019 
0020     auto *mainLayout = new QVBoxLayout;
0021     setLayout(mainLayout);
0022 
0023     QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Apply);
0024     QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);
0025     applyButton = buttonBox->button(QDialogButtonBox::Apply);
0026     okButton->setDefault(true);
0027     okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
0028     connect(buttonBox, &QDialogButtonBox::accepted, this, &SchemeWizardDialog::slotAccepted);
0029     connect(buttonBox, &QDialogButtonBox::rejected, this, &SchemeWizardDialog::reject);
0030     connect(applyButton, &QPushButton::clicked, this, &SchemeWizardDialog::slotApplied);
0031 
0032     QWidget *widget = new QWidget(this);
0033     mainLayout->addWidget(widget);
0034     mainLayout->addWidget(buttonBox);
0035     ui.setupUi(widget);
0036 
0037     help_dialog = new TextViewDialog(SchemeParser::helpHTMLDoc(1), i18n("Filename scheme help"), this);
0038 
0039     ui.qlineedit_scheme->setText(scheme);
0040     connect(ui.qlineedit_scheme, SIGNAL(textEdited(const QString &)), this, SLOT(trigger_changed()));
0041     connect(ui.qlineedit_scheme, SIGNAL(textChanged(const QString &)), this, SLOT(update_example()));
0042     ui.qlineedit_scheme->setCursorPosition(0);
0043 
0044     connect(ui.kurllabel_help, SIGNAL(leftClickedUrl()), this, SLOT(help()));
0045 
0046     connect(ui.kpushbutton_albumartist, SIGNAL(clicked()), this, SLOT(insAlbumArtist()));
0047     connect(ui.kpushbutton_albumtitle, SIGNAL(clicked()), this, SLOT(insAlbumTitle()));
0048     connect(ui.kpushbutton_trackartist, SIGNAL(clicked()), this, SLOT(insTrackArtist()));
0049     connect(ui.kpushbutton_tracktitle, SIGNAL(clicked()), this, SLOT(insTrackTitle()));
0050     connect(ui.kpushbutton_trackno, SIGNAL(clicked()), this, SLOT(insTrackNo()));
0051     connect(ui.kpushbutton_cdno, SIGNAL(clicked()), this, SLOT(insCDNo()));
0052     connect(ui.kpushbutton_date, SIGNAL(clicked()), this, SLOT(insDate()));
0053     connect(ui.kpushbutton_genre, SIGNAL(clicked()), this, SLOT(insGenre()));
0054     connect(ui.kpushbutton_suffix, SIGNAL(clicked()), this, SLOT(insSuffix()));
0055     connect(ui.kpushbutton_nooftracks, SIGNAL(clicked()), this, SLOT(insNoOfTracks()));
0056 
0057     this->scheme = scheme;
0058 
0059     applyButton->setEnabled(false);
0060 
0061     update_example();
0062 }
0063 
0064 SchemeWizardDialog::~SchemeWizardDialog()
0065 {
0066     if (help_dialog != nullptr) {
0067         help_dialog->close();
0068         delete help_dialog;
0069         help_dialog = nullptr;
0070     }
0071 }
0072 
0073 void SchemeWizardDialog::slotAccepted()
0074 {
0075     save();
0076     accept();
0077 }
0078 
0079 void SchemeWizardDialog::slotApplied()
0080 {
0081     save();
0082 }
0083 
0084 void SchemeWizardDialog::trigger_changed()
0085 {
0086     if (ui.qlineedit_scheme->text() != scheme) {
0087         applyButton->setEnabled(true);
0088         return;
0089     }
0090     applyButton->setEnabled(false);
0091 }
0092 
0093 void SchemeWizardDialog::help()
0094 {
0095     help_dialog->showNormal();
0096 }
0097 
0098 void SchemeWizardDialog::insAlbumArtist()
0099 {
0100     QString text = ui.qlineedit_scheme->text();
0101     text.insert(ui.qlineedit_scheme->cursorPosition(), QString("$" VAR_ALBUM_ARTIST));
0102     ui.qlineedit_scheme->setText(text);
0103     update_example();
0104 }
0105 
0106 void SchemeWizardDialog::insAlbumTitle()
0107 {
0108     QString text = ui.qlineedit_scheme->text();
0109     text.insert(ui.qlineedit_scheme->cursorPosition(), QString("$" VAR_ALBUM_TITLE));
0110     ui.qlineedit_scheme->setText(text);
0111     update_example();
0112 }
0113 
0114 void SchemeWizardDialog::insTrackArtist()
0115 {
0116     QString text = ui.qlineedit_scheme->text();
0117     text.insert(ui.qlineedit_scheme->cursorPosition(), QString("$" VAR_TRACK_ARTIST));
0118     ui.qlineedit_scheme->setText(text);
0119     update_example();
0120 }
0121 
0122 void SchemeWizardDialog::insTrackTitle()
0123 {
0124     QString text = ui.qlineedit_scheme->text();
0125     text.insert(ui.qlineedit_scheme->cursorPosition(), QString("$" VAR_TRACK_TITLE));
0126     ui.qlineedit_scheme->setText(text);
0127     update_example();
0128 }
0129 
0130 void SchemeWizardDialog::insTrackNo()
0131 {
0132     QString text = ui.qlineedit_scheme->text();
0133     text.insert(ui.qlineedit_scheme->cursorPosition(), QString("$" VAR_TRACK_NO));
0134     ui.qlineedit_scheme->setText(text);
0135     update_example();
0136 }
0137 
0138 void SchemeWizardDialog::insCDNo()
0139 {
0140     QString text = ui.qlineedit_scheme->text();
0141     text.insert(ui.qlineedit_scheme->cursorPosition(), QString("$" VAR_CD_NO));
0142     ui.qlineedit_scheme->setText(text);
0143     update_example();
0144 }
0145 
0146 void SchemeWizardDialog::insDate()
0147 {
0148     QString text = ui.qlineedit_scheme->text();
0149     text.insert(ui.qlineedit_scheme->cursorPosition(), QString("$" VAR_DATE));
0150     ui.qlineedit_scheme->setText(text);
0151     update_example();
0152 }
0153 
0154 void SchemeWizardDialog::insGenre()
0155 {
0156     QString text = ui.qlineedit_scheme->text();
0157     text.insert(ui.qlineedit_scheme->cursorPosition(), QString("$" VAR_GENRE));
0158     ui.qlineedit_scheme->setText(text);
0159     update_example();
0160 }
0161 
0162 void SchemeWizardDialog::insSuffix()
0163 {
0164     QString text = ui.qlineedit_scheme->text();
0165     text.insert(ui.qlineedit_scheme->cursorPosition(), QString("$" VAR_SUFFIX));
0166     ui.qlineedit_scheme->setText(text);
0167     update_example();
0168 }
0169 
0170 void SchemeWizardDialog::insNoOfTracks()
0171 {
0172     QString text = ui.qlineedit_scheme->text();
0173     text.insert(ui.qlineedit_scheme->cursorPosition(), QString("$" VAR_NO_OF_TRACKS));
0174     ui.qlineedit_scheme->setText(text);
0175     update_example();
0176 }
0177 
0178 bool SchemeWizardDialog::save()
0179 {
0180     scheme = ui.qlineedit_scheme->text();
0181     applyButton->setEnabled(false);
0182     return true;
0183 }
0184 
0185 void SchemeWizardDialog::update_example()
0186 {
0187     SchemeParser schemeparser;
0188     QString filename = schemeparser.parsePerTrackFilenameScheme(ui.qlineedit_scheme->text(),
0189                                                                 2,
0190                                                                 1,
0191                                                                 12,
0192                                                                 1,
0193                                                                 "Meat Loaf",
0194                                                                 "Bat Out Of Hell III",
0195                                                                 "Meat Loaf",
0196                                                                 "Blind As A Bat",
0197                                                                 "2006",
0198                                                                 "Rock",
0199                                                                 "AA6Q72000047",
0200                                                                 "ogg",
0201                                                                 false,
0202                                                                 false,
0203                                                                 false);
0204     ui.qlineedit_album_example->setText(filename);
0205     ui.qlineedit_album_example->setCursorPosition(0);
0206     filename = schemeparser.parsePerTrackFilenameScheme(ui.qlineedit_scheme->text(),
0207                                                         4,
0208                                                         2,
0209                                                         18,
0210                                                         1,
0211                                                         "Alternative Hits",
0212                                                         "Volume 4",
0213                                                         "Wolfsheim",
0214                                                         "Kein Zurueck",
0215                                                         "2003",
0216                                                         "Darkwave",
0217                                                         "AA6Q72000047",
0218                                                         "ogg",
0219                                                         false,
0220                                                         false,
0221                                                         false);
0222     ui.qlineedit_sampler_example->setText(filename);
0223     ui.qlineedit_sampler_example->setCursorPosition(0);
0224 }