mirror of
https://github.com/alsa-project/alsa-tools.git
synced 2025-11-02 09:01:48 -05:00
199 lines
5 KiB
C++
199 lines
5 KiB
C++
/*
|
|
* 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 <qlistbox.h>
|
|
#include <qlineedit.h>
|
|
#include <qcombobox.h>
|
|
#include <qpushbutton.h>
|
|
#include <qspinbox.h>
|
|
#include "filecontroldialog.h"
|
|
|
|
FileControlDlg::FileControlDlg(QValueList <int> *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);
|
|
}
|
|
}
|