File indexing completed on 2024-04-21 04:48:10
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 "commandwizarddialog.h" 0009 #include "dialogs/textviewdialog.h" 0010 #include "utils/schemeparser.h" 0011 0012 #include <QDialogButtonBox> 0013 #include <QVBoxLayout> 0014 0015 CommandWizardDialog::CommandWizardDialog(const QString &command, QWidget *parent) 0016 : QDialog(parent) 0017 { 0018 Q_UNUSED(parent); 0019 0020 setWindowTitle(i18n("Command Scheme Wizard")); 0021 0022 auto *mainLayout = new QVBoxLayout; 0023 setLayout(mainLayout); 0024 0025 QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Apply); 0026 okButton = buttonBox->button(QDialogButtonBox::Ok); 0027 applyButton = buttonBox->button(QDialogButtonBox::Apply); 0028 okButton->setDefault(true); 0029 okButton->setShortcut(Qt::CTRL | Qt::Key_Return); 0030 connect(buttonBox, &QDialogButtonBox::accepted, this, &CommandWizardDialog::slotAccepted); 0031 connect(buttonBox, &QDialogButtonBox::rejected, this, &CommandWizardDialog::reject); 0032 connect(applyButton, &QPushButton::clicked, this, &CommandWizardDialog::slotApplied); 0033 0034 QWidget *widget = new QWidget(this); 0035 mainLayout->addWidget(widget); 0036 mainLayout->addWidget(buttonBox); 0037 ui.setupUi(widget); 0038 0039 help_dialog = new TextViewDialog(SchemeParser::helpHTMLDoc(2), i18n("Command scheme help"), this); 0040 0041 ui.qlineedit_command->setText(command); 0042 connect(ui.qlineedit_command, SIGNAL(textEdited(const QString &)), this, SLOT(trigger_changed())); 0043 connect(ui.qlineedit_command, SIGNAL(textChanged(const QString &)), this, SLOT(update_example())); 0044 ui.qlineedit_command->setCursorPosition(0); 0045 0046 connect(ui.kurllabel_help, SIGNAL(leftClickedUrl()), this, SLOT(help())); 0047 0048 connect(ui.kpushbutton_albumartist, SIGNAL(clicked()), this, SLOT(insAlbumArtist())); 0049 connect(ui.kpushbutton_albumtitle, SIGNAL(clicked()), this, SLOT(insAlbumTitle())); 0050 connect(ui.kpushbutton_trackartist, SIGNAL(clicked()), this, SLOT(insTrackArtist())); 0051 connect(ui.kpushbutton_tracktitle, SIGNAL(clicked()), this, SLOT(insTrackTitle())); 0052 connect(ui.kpushbutton_trackno, SIGNAL(clicked()), this, SLOT(insTrackNo())); 0053 connect(ui.kpushbutton_cdno, SIGNAL(clicked()), this, SLOT(insCDNo())); 0054 connect(ui.kpushbutton_date, SIGNAL(clicked()), this, SLOT(insDate())); 0055 connect(ui.kpushbutton_genre, SIGNAL(clicked()), this, SLOT(insGenre())); 0056 connect(ui.kpushbutton_cover_file, SIGNAL(clicked()), this, SLOT(insCoverFile())); 0057 connect(ui.kpushbutton_nooftracks, SIGNAL(clicked()), this, SLOT(insNoOfTracks())); 0058 connect(ui.kpushbutton_input_file, SIGNAL(clicked()), this, SLOT(insInFile())); 0059 connect(ui.kpushbutton_output_file, SIGNAL(clicked()), this, SLOT(insOutFile())); 0060 0061 this->command = command; 0062 0063 applyButton->setEnabled(false); 0064 0065 update_example(); 0066 } 0067 0068 CommandWizardDialog::~CommandWizardDialog() 0069 { 0070 if (help_dialog != nullptr) { 0071 help_dialog->close(); 0072 delete help_dialog; 0073 help_dialog = nullptr; 0074 } 0075 } 0076 0077 void CommandWizardDialog::slotAccepted() 0078 { 0079 save(); 0080 accept(); 0081 } 0082 0083 void CommandWizardDialog::slotApplied() 0084 { 0085 save(); 0086 } 0087 0088 void CommandWizardDialog::trigger_changed() 0089 { 0090 if (ui.qlineedit_command->text() != command) { 0091 applyButton->setEnabled(true); 0092 return; 0093 } 0094 applyButton->setEnabled(false); 0095 } 0096 0097 void CommandWizardDialog::help() 0098 { 0099 help_dialog->showNormal(); 0100 } 0101 0102 void CommandWizardDialog::insAlbumArtist() 0103 { 0104 QString text = ui.qlineedit_command->text(); 0105 text.insert(ui.qlineedit_command->cursorPosition(), '$' + QString(VAR_ALBUM_ARTIST)); 0106 ui.qlineedit_command->setText(text); 0107 update_example(); 0108 } 0109 0110 void CommandWizardDialog::insAlbumTitle() 0111 { 0112 QString text = ui.qlineedit_command->text(); 0113 text.insert(ui.qlineedit_command->cursorPosition(), '$' + QString(VAR_ALBUM_TITLE)); 0114 ui.qlineedit_command->setText(text); 0115 update_example(); 0116 } 0117 0118 void CommandWizardDialog::insTrackArtist() 0119 { 0120 QString text = ui.qlineedit_command->text(); 0121 text.insert(ui.qlineedit_command->cursorPosition(), '$' + QString(VAR_TRACK_ARTIST)); 0122 ui.qlineedit_command->setText(text); 0123 update_example(); 0124 } 0125 0126 void CommandWizardDialog::insTrackTitle() 0127 { 0128 QString text = ui.qlineedit_command->text(); 0129 text.insert(ui.qlineedit_command->cursorPosition(), '$' + QString(VAR_TRACK_TITLE)); 0130 ui.qlineedit_command->setText(text); 0131 update_example(); 0132 } 0133 0134 void CommandWizardDialog::insTrackNo() 0135 { 0136 QString text = ui.qlineedit_command->text(); 0137 text.insert(ui.qlineedit_command->cursorPosition(), '$' + QString(VAR_TRACK_NO)); 0138 ui.qlineedit_command->setText(text); 0139 update_example(); 0140 } 0141 0142 void CommandWizardDialog::insCDNo() 0143 { 0144 QString text = ui.qlineedit_command->text(); 0145 text.insert(ui.qlineedit_command->cursorPosition(), '$' + QString(VAR_CD_NO)); 0146 ui.qlineedit_command->setText(text); 0147 update_example(); 0148 } 0149 0150 void CommandWizardDialog::insDate() 0151 { 0152 QString text = ui.qlineedit_command->text(); 0153 text.insert(ui.qlineedit_command->cursorPosition(), '$' + QString(VAR_DATE)); 0154 ui.qlineedit_command->setText(text); 0155 update_example(); 0156 } 0157 0158 void CommandWizardDialog::insGenre() 0159 { 0160 QString text = ui.qlineedit_command->text(); 0161 text.insert(ui.qlineedit_command->cursorPosition(), '$' + QString(VAR_GENRE)); 0162 ui.qlineedit_command->setText(text); 0163 update_example(); 0164 } 0165 0166 void CommandWizardDialog::insCoverFile() 0167 { 0168 QString text = ui.qlineedit_command->text(); 0169 text.insert(ui.qlineedit_command->cursorPosition(), '$' + QString(VAR_COVER_FILE)); 0170 ui.qlineedit_command->setText(text); 0171 update_example(); 0172 } 0173 0174 void CommandWizardDialog::insNoOfTracks() 0175 { 0176 QString text = ui.qlineedit_command->text(); 0177 text.insert(ui.qlineedit_command->cursorPosition(), QString("$" VAR_NO_OF_TRACKS)); 0178 ui.qlineedit_command->setText(text); 0179 update_example(); 0180 } 0181 0182 void CommandWizardDialog::insInFile() 0183 { 0184 QString text = ui.qlineedit_command->text(); 0185 text.insert(ui.qlineedit_command->cursorPosition(), '$' + QString(VAR_INPUT_FILE)); 0186 ui.qlineedit_command->setText(text); 0187 update_example(); 0188 } 0189 0190 void CommandWizardDialog::insOutFile() 0191 { 0192 QString text = ui.qlineedit_command->text(); 0193 text.insert(ui.qlineedit_command->cursorPosition(), '$' + QString(VAR_OUTPUT_FILE)); 0194 ui.qlineedit_command->setText(text); 0195 update_example(); 0196 } 0197 0198 bool CommandWizardDialog::save() 0199 { 0200 command = ui.qlineedit_command->text(); 0201 applyButton->setEnabled(false); 0202 return true; 0203 } 0204 0205 void CommandWizardDialog::update_example() 0206 { 0207 SchemeParser schemeparser; 0208 QString filename = schemeparser.parsePerTrackCommandScheme(ui.qlineedit_command->text(), 0209 "/tmp/tmp.wav", 0210 QString("%1/music/Meat Loaf/02 - Meat Loaf - Blind As A Bat.ogg").arg(QDir::homePath()), 0211 2, 0212 1, 0213 1, 0214 12, 0215 "Meat Loaf", 0216 "Bat Out Of Hell III", 0217 "Meat Loaf", 0218 "Blind As A Bat", 0219 "2006", 0220 "Rock", 0221 "AA6Q72000047", 0222 "ogg", 0223 QImage(), 0224 QDir::tempPath(), 0225 "LAME 3.100", 0226 true); 0227 ui.qlineedit_album_example->setText(filename); 0228 ui.qlineedit_album_example->setCursorPosition(0); 0229 filename = 0230 schemeparser.parsePerTrackCommandScheme(ui.qlineedit_command->text(), 0231 "/tmp/tmp.wav", 0232 QString("%1/music/Alternative Hits/Volume 4/04 - Wolfsheim - Approaching Lightspeed.ogg").arg(QDir::homePath()), 0233 4, 0234 2, 0235 1, 0236 18, 0237 "Alternative Hits", 0238 "Volume 4", 0239 "Wolfsheim", 0240 "Approaching Lightspeed", 0241 "2003", 0242 "Darkwave", 0243 "AA6Q72000047", 0244 "ogg", 0245 QImage(), 0246 QDir::tempPath(), 0247 "LAME 3.100", 0248 true); 0249 ui.qlineedit_sampler_example->setText(filename); 0250 ui.qlineedit_sampler_example->setCursorPosition(0); 0251 }