File indexing completed on 2024-05-19 08:41:00
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 }