mirror of
				https://github.com/alsa-project/alsa-tools.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	Add qlo10k1
Added qlo10k1 by Peter Zubaj.
This commit is contained in:
		
							parent
							
								
									83b4a93e03
								
							
						
					
					
						commit
						ab3e05d1da
					
				
					 73 changed files with 12923 additions and 1 deletions
				
			
		
							
								
								
									
										235
									
								
								qlo10k1/src/loadpatchdialog.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										235
									
								
								qlo10k1/src/loadpatchdialog.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,235 @@
 | 
			
		|||
/*
 | 
			
		||||
 *  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 
 | 
			
		||||
#include <qlineedit.h>
 | 
			
		||||
#include <qlistbox.h>
 | 
			
		||||
#include <qpushbutton.h>
 | 
			
		||||
#include <qinputdialog.h>
 | 
			
		||||
#include <qvaluelist.h>
 | 
			
		||||
#include <qmessagebox.h>
 | 
			
		||||
#include <qlabel.h>
 | 
			
		||||
#include <qcheckbox.h>
 | 
			
		||||
#include <qbuttongroup.h>
 | 
			
		||||
#include <qradiobutton.h>
 | 
			
		||||
#include <qcombobox.h>
 | 
			
		||||
#include <qmap.h>
 | 
			
		||||
 | 
			
		||||
#include "app_global.h"
 | 
			
		||||
#include "loadpatchdialog.h"
 | 
			
		||||
#include "structure_patch.h"
 | 
			
		||||
#include "structure_io.h"
 | 
			
		||||
 | 
			
		||||
LoadPatchDlg::LoadPatchDlg(StrGlobal *glob, QString efileName, LD10k1File *efile)
 | 
			
		||||
	: LoadPatchDialogBase()
 | 
			
		||||
{
 | 
			
		||||
	global = glob;
 | 
			
		||||
	fileName = efileName;
 | 
			
		||||
	file = efile;
 | 
			
		||||
 | 
			
		||||
	leFileName->setText(fileName);
 | 
			
		||||
	lePatchName->setText(file->getPatchName());
 | 
			
		||||
	
 | 
			
		||||
	// load controls list
 | 
			
		||||
	int i;
 | 
			
		||||
	for (i = 0; i < file->getCtlCount(); i++)
 | 
			
		||||
	{
 | 
			
		||||
		QString text = getName(i);
 | 
			
		||||
		lbFileCtrl->insertItem(text);
 | 
			
		||||
		ctrlFileList.append(i);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < file->getIOCount(false); i++)
 | 
			
		||||
		inputNames.append(file->getIOName(false, i));
 | 
			
		||||
	for (i = 0; i < file->getIOCount(true); i++)
 | 
			
		||||
		outputNames.append(file->getIOName(true, i));
 | 
			
		||||
	
 | 
			
		||||
	for (i = 0; i < file->getIOCount(false); i++)
 | 
			
		||||
		lbInputs->insertItem(inputNames[i]);
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < file->getIOCount(true); i++)
 | 
			
		||||
		lbOutputs->insertItem(outputNames[i]);
 | 
			
		||||
	
 | 
			
		||||
	// create sorted patch list
 | 
			
		||||
	sortedPatches.clear();
 | 
			
		||||
	
 | 
			
		||||
	for (StrPatch *onePatch = global->Patches.first(); onePatch; onePatch = global->Patches.next())
 | 
			
		||||
	{
 | 
			
		||||
		i = 0;
 | 
			
		||||
		bool found = false;
 | 
			
		||||
		for (StrPatch *secondPatch = sortedPatches.first(); secondPatch; secondPatch = sortedPatches.next())
 | 
			
		||||
		{
 | 
			
		||||
			if (onePatch->order() < secondPatch->order())
 | 
			
		||||
			{
 | 
			
		||||
				sortedPatches.insert(i, onePatch);
 | 
			
		||||
				found = true;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			i++;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (!found)
 | 
			
		||||
			sortedPatches.append(onePatch);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// fill combobox
 | 
			
		||||
	cbWhere->clear();
 | 
			
		||||
	
 | 
			
		||||
	for (StrPatch *p = sortedPatches.first(); p; p = sortedPatches.next())
 | 
			
		||||
		cbWhere->insertItem(QString().sprintf("%03d  %03d  ", p->order(), p->num()) + p->name());
 | 
			
		||||
		
 | 
			
		||||
	cbWhere->setCurrentItem(sortedPatches.count() - 1);
 | 
			
		||||
	cbBefAfter->setCurrentItem(1);
 | 
			
		||||
	
 | 
			
		||||
	setBefore(1, sortedPatches.count() - 1);
 | 
			
		||||
	
 | 
			
		||||
	connect(pbOK, SIGNAL(clicked()), this, SLOT(okClicked()));
 | 
			
		||||
	connect(pbCancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
 | 
			
		||||
 | 
			
		||||
	connect(lbInputs, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(inputsDoubleClicked(QListBoxItem *)));
 | 
			
		||||
	connect(lbOutputs, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(outputsDoubleClicked(QListBoxItem *)));
 | 
			
		||||
 | 
			
		||||
	connect(lbFileCtrl, SIGNAL(selectionChanged()), this, SLOT(fileSelectionChanged()));
 | 
			
		||||
	
 | 
			
		||||
	connect(cbBefAfter, SIGNAL(activated(int)), this, SLOT(befAfterActivated(int)));
 | 
			
		||||
	connect(cbWhere, SIGNAL(activated(int)), this, SLOT(whereActivated(int)));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString LoadPatchDlg::getName(int i)
 | 
			
		||||
{
 | 
			
		||||
	return file->getCtlName(i);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LoadPatchDlg::okClicked()
 | 
			
		||||
{
 | 
			
		||||
	// load patch
 | 
			
		||||
	done(Accepted);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LoadPatchDlg::cancelClicked()
 | 
			
		||||
{
 | 
			
		||||
	done(Rejected);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LoadPatchDlg::inputsDoubleClicked(QListBoxItem *item)
 | 
			
		||||
{
 | 
			
		||||
	bool ok;
 | 
			
		||||
	int idx = lbInputs->index(item);
 | 
			
		||||
    	QString text = inputNames[idx];
 | 
			
		||||
	text = QInputDialog::getText(
 | 
			
		||||
            	APP_NAME, "Input name:", QLineEdit::Normal,
 | 
			
		||||
        	text, &ok, this );
 | 
			
		||||
    	if (ok && !text.isEmpty()) 
 | 
			
		||||
	{
 | 
			
		||||
		inputNames[idx] = text;
 | 
			
		||||
		lbInputs->changeItem(text, idx);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LoadPatchDlg::outputsDoubleClicked(QListBoxItem *item)
 | 
			
		||||
{
 | 
			
		||||
	bool ok;
 | 
			
		||||
	int idx = lbOutputs->index(item);
 | 
			
		||||
	QString text = outputNames[idx];
 | 
			
		||||
	text = QInputDialog::getText(
 | 
			
		||||
            	APP_NAME, "Output name:", QLineEdit::Normal,
 | 
			
		||||
            	text, &ok, this );
 | 
			
		||||
	if (ok && !text.isEmpty()) 
 | 
			
		||||
	{
 | 
			
		||||
		outputNames[idx] = text;
 | 
			
		||||
		lbOutputs->changeItem(text, idx);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LoadPatchDlg::fileSelectionChanged()
 | 
			
		||||
{
 | 
			
		||||
	QListBoxItem *item = lbFileCtrl->selectedItem();
 | 
			
		||||
	if (!item)
 | 
			
		||||
	{
 | 
			
		||||
		leTranslation->setText("");
 | 
			
		||||
		leMin->setText("");
 | 
			
		||||
		leMax->setText("");
 | 
			
		||||
		lbValues->clear();
 | 
			
		||||
		lbValues->setEnabled(false);
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		int iidx = lbFileCtrl->index(item);
 | 
			
		||||
		int i;
 | 
			
		||||
		QString transl;
 | 
			
		||||
		
 | 
			
		||||
		switch (file->getCtlTranslation(iidx))
 | 
			
		||||
		{
 | 
			
		||||
			case LD10k1File::None:
 | 
			
		||||
				transl = "None";
 | 
			
		||||
				break;
 | 
			
		||||
			case LD10k1File::Table100:
 | 
			
		||||
				transl = "Table100";
 | 
			
		||||
				break;
 | 
			
		||||
			case LD10k1File::Bass:
 | 
			
		||||
				transl = "Bass";
 | 
			
		||||
				break;
 | 
			
		||||
			case LD10k1File::Treble:
 | 
			
		||||
				transl = "Treble";
 | 
			
		||||
				break;
 | 
			
		||||
			case LD10k1File::OnOff:
 | 
			
		||||
				transl = "On/Off";
 | 
			
		||||
				break;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		leTranslation->setText(transl);
 | 
			
		||||
		leMin->setText(QString().setNum(file->getCtlMin(iidx)));
 | 
			
		||||
		leMax->setText(QString().setNum(file->getCtlMax(iidx)));
 | 
			
		||||
		lbValues->clear();
 | 
			
		||||
		
 | 
			
		||||
		for (i = 0; i < file->getCtlValVCount(iidx); i++)
 | 
			
		||||
			lbValues->insertItem(QString("%1 : %2").arg(i).arg(file->getCtlVal(iidx, i)));
 | 
			
		||||
		
 | 
			
		||||
		lbValues->setEnabled(false);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
StrPatch *LoadPatchDlg::whereLoad()
 | 
			
		||||
{
 | 
			
		||||
	return before;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LoadPatchDlg::setBefore(int i1, int i2)
 | 
			
		||||
{
 | 
			
		||||
	if (i1)
 | 
			
		||||
	{
 | 
			
		||||
		if (i2 < (int)sortedPatches.count() - 1)
 | 
			
		||||
			before = sortedPatches.at(i2 + 1);
 | 
			
		||||
		else
 | 
			
		||||
			before = NULL;
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
		before = sortedPatches.at(i2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LoadPatchDlg::whereActivated(int index)
 | 
			
		||||
{
 | 
			
		||||
	 setBefore(cbBefAfter->currentItem(), index);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LoadPatchDlg::befAfterActivated(int index)
 | 
			
		||||
{
 | 
			
		||||
	setBefore(index, cbWhere->currentItem());
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue