/* * qlo10k1 - GUI frontend for ld10k1 * * Copyright (c) 2004 by Peter Zubaj * * 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. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #include #include #include #include #include #include "filecontroldialog.h" FileControlDlg::FileControlDlg(QValueList *eselected, EMU10k1File *efile, TranslatedCtrl *etranslated) { file = efile; translated = etranslated; int ctrlIdx; unsigned int i; if (eselected) { selected = *eselected; // insert file controls to listbox for (i = 0; i < selected.count(); i++) { ctrlIdx = selected[i]; lbControls->insertItem(getName(ctrlIdx)); } sbIndex->setValue(-1); sbVisible->setMinValue(1); sbVisible->setMaxValue(selected.count()); sbVisible->setValue(selected.count()); // set min, max EMU10k1Ctrl ctrl; file->getCtrl(selected[0], &ctrl); min = ctrl.min; max = ctrl.max; values.append(ctrl.value); for (i = 1; i < selected.count(); i++) { file->getCtrl(selected[i], &ctrl); values.append(ctrl.value); if (ctrl.max > max) max = ctrl.max; if (ctrl.min < min) min = ctrl.min; } if (min == 0 && max == 100) cbTranslation->setCurrentItem(1); } else { selected = translated->fileCtrlIdx; for (i = 0; i < translated->fileCtrlIdx.count(); i++) { lbControls->insertItem(getName(translated->fileCtrlIdx[i])); } sbVisible->setMinValue(1); sbVisible->setMaxValue(translated->fileCtrlIdx.count()); sbVisible->setValue(translated->visible); leLoadedName->setText(translated->name); sbIndex->setValue(translated->index); switch(translated->translation) { case TranslatedCtrl::None: cbTranslation->setCurrentItem(0); break; case TranslatedCtrl::Table100: cbTranslation->setCurrentItem(1); break; case TranslatedCtrl::Bass: cbTranslation->setCurrentItem(2); break; case TranslatedCtrl::Treble: cbTranslation->setCurrentItem(3); break; case TranslatedCtrl::OnOff: cbTranslation->setCurrentItem(4); break; } for (unsigned int i = 0; i < translated->values.count(); i++) values.append(translated->values[i]); min = translated->min; max = translated->max; } connect(pbOK, SIGNAL(clicked()), this, SLOT(okClicked())); connect(pbCancel, SIGNAL(clicked()), this, SLOT(cancelClicked())); connect(pbUp, SIGNAL(clicked()), this, SLOT(upClicked())); connect(pbDown, SIGNAL(clicked()), this, SLOT(downClicked())); } QString FileControlDlg::getName(int i) { EMU10k1Ctrl ctrl; file->getCtrl(i, &ctrl); QString name = QString(ctrl.name) + " - " + QString().setNum(ctrl.value) + " (" + QString().setNum(ctrl.min) + "," + + QString().setNum(ctrl.max) + ")"; return name; } void FileControlDlg::okClicked() { translated->name = leLoadedName->text(); translated->index = sbIndex->value(); switch(cbTranslation->currentItem()) { case 0: translated->translation = TranslatedCtrl::None; break; case 1: translated->translation = TranslatedCtrl::Table100; break; case 2: translated->translation = TranslatedCtrl::Bass; break; case 3: translated->translation = TranslatedCtrl::Treble; break; case 4: translated->translation = TranslatedCtrl::OnOff; break; } translated->fileCtrlIdx = selected; translated->visible = sbVisible->value(); translated->values.clear(); for (unsigned int i = 0; i < values.count(); i++) translated->values.append(values[i]); translated->min = min; translated->max = max; done(Accepted); } void FileControlDlg::cancelClicked() { done(Rejected); } void FileControlDlg::upClicked() { int idx = lbControls->currentItem(); if (idx > 0) { int tmp = selected[idx - 1]; selected[idx - 1] = selected[idx]; selected[idx] = tmp; // update labels lbControls->changeItem(getName(selected[idx - 1]), idx - 1); lbControls->changeItem(getName(selected[idx]), idx); lbControls->setCurrentItem(idx - 1); } } void FileControlDlg::downClicked() { int idx = lbControls->currentItem(); if (idx >= 0 && idx < (int)lbControls->count() - 1) { int tmp = selected[idx + 1]; selected[idx + 1] = selected[idx]; selected[idx] = tmp; // update labels lbControls->changeItem(getName(selected[idx]), idx); lbControls->changeItem(getName(selected[idx + 1]), idx + 1); lbControls->setCurrentItem(idx + 1); } }