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
				
			
		
							
								
								
									
										550
									
								
								qlo10k1/src/mainwnd.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										550
									
								
								qlo10k1/src/mainwnd.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,550 @@
 | 
			
		|||
/*
 | 
			
		||||
 *  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 <qlistbox.h>
 | 
			
		||||
#include <qpushbutton.h>
 | 
			
		||||
#include <qcombobox.h>
 | 
			
		||||
#include <qpopupmenu.h>
 | 
			
		||||
#include <qmenubar.h>
 | 
			
		||||
#include <qapplication.h>
 | 
			
		||||
#include <qtabwidget.h>
 | 
			
		||||
#include <qlistview.h>
 | 
			
		||||
#include <qfiledialog.h>
 | 
			
		||||
#include <qmessagebox.h>
 | 
			
		||||
#include <qlayout.h>
 | 
			
		||||
#include <qsettings.h>
 | 
			
		||||
 | 
			
		||||
#include "app_global.h"
 | 
			
		||||
#include "mainwnd.h"
 | 
			
		||||
#include "preferences.h"
 | 
			
		||||
#include "loadpatchdialog.h"
 | 
			
		||||
#include "transformpatchdialog.h"
 | 
			
		||||
#include "aboutdialog.h"
 | 
			
		||||
#include "routingwidget.h"
 | 
			
		||||
#include "structure_patch.h"
 | 
			
		||||
#include "strparam.h"
 | 
			
		||||
 | 
			
		||||
class PatchesListViewItem : public QListViewItem
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	StrPatch *patch;
 | 
			
		||||
	
 | 
			
		||||
	PatchesListViewItem(StrPatch *p, QListView *parent) : QListViewItem(parent)
 | 
			
		||||
	{
 | 
			
		||||
		patch = p;
 | 
			
		||||
		updateText();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	PatchesListViewItem(StrPatch *p, QListView *parent, PatchesListViewItem *after) : QListViewItem(parent, after)
 | 
			
		||||
	{
 | 
			
		||||
		patch = p;
 | 
			
		||||
		updateText();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	void updateText()
 | 
			
		||||
	{
 | 
			
		||||
		setText(0,QString().sprintf("%03d", patch->order()));
 | 
			
		||||
		setText(1,QString().sprintf("%03d", patch->num()));
 | 
			
		||||
		setText(2,patch->name());
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
MainWnd::MainWnd() : MainWndBase()
 | 
			
		||||
{
 | 
			
		||||
	cardGlobal = new StrCardGlobal();
 | 
			
		||||
	CurrentCard = NULL;
 | 
			
		||||
	
 | 
			
		||||
	// try to load settings
 | 
			
		||||
	loadSettings();
 | 
			
		||||
 | 
			
		||||
	// main menu
 | 
			
		||||
	QPopupMenu *fileMenu = new QPopupMenu();
 | 
			
		||||
	fileMenu->insertItem(tr("&Load DSP config"), this, SLOT(menuLoadDSPConfigActivated(int)));
 | 
			
		||||
	fileMenu->insertItem(tr("&Save DSP config"), this, SLOT(menuSaveDSPConfigActivated(int)));
 | 
			
		||||
	fileMenu->insertSeparator();
 | 
			
		||||
	fileMenu->insertItem(tr("&Quit"), this, SLOT(menuQuitActivated(int)));
 | 
			
		||||
 | 
			
		||||
	menubar->insertItem(tr("&File"), fileMenu);
 | 
			
		||||
 | 
			
		||||
	cardMenu = new QPopupMenu();
 | 
			
		||||
	menubar->insertItem(tr("&Card"), cardMenu);
 | 
			
		||||
	cardMenu->setCheckable(true);
 | 
			
		||||
 | 
			
		||||
	QPopupMenu *settingMenu = new QPopupMenu();
 | 
			
		||||
	settingMenu->insertItem(tr("&Main settings"), this, SLOT(menuSettingsActivated(int)));
 | 
			
		||||
	menubar->insertItem(tr("&Settings"), settingMenu);
 | 
			
		||||
 | 
			
		||||
	QPopupMenu *helpMenu = new QPopupMenu();
 | 
			
		||||
	helpMenu->insertItem(tr("&About"), this, SLOT(menuHelpAboutActivated(int)));
 | 
			
		||||
	menubar->insertItem(tr("&Help"), helpMenu);
 | 
			
		||||
 | 
			
		||||
	// connect signals
 | 
			
		||||
	connect((QObject *)tabMain, SIGNAL(currentChanged(QWidget *)), this, SLOT(tabMainCurrentChanged(QWidget *)));
 | 
			
		||||
 | 
			
		||||
	createCardMenu();
 | 
			
		||||
	enableTabs(false);
 | 
			
		||||
 | 
			
		||||
	setCaption(tr(APP_NAME));
 | 
			
		||||
 | 
			
		||||
	connect(pbLoad, SIGNAL(clicked()), this, SLOT(loadClicked()));
 | 
			
		||||
	connect(pbUnload, SIGNAL(clicked()), this, SLOT(unloadClicked()));
 | 
			
		||||
 | 
			
		||||
	connect(lvPatches, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(patchDoubleClicked(QListViewItem *)));
 | 
			
		||||
 | 
			
		||||
	routing = new RoutingWidget(tabRouting);
 | 
			
		||||
 | 
			
		||||
	tabRoutingLayout->addWidget(routing, 0, 0);
 | 
			
		||||
	routing->show();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MainWnd::~MainWnd()
 | 
			
		||||
{
 | 
			
		||||
	CurrentCard = NULL;
 | 
			
		||||
	delete cardGlobal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::tabMainCurrentChanged(QWidget *tab)
 | 
			
		||||
{
 | 
			
		||||
	if (!CurrentCard)
 | 
			
		||||
		return;
 | 
			
		||||
	if (tab == tabLoad)
 | 
			
		||||
	{
 | 
			
		||||
		loadPatchesList(lvPatches);
 | 
			
		||||
	}
 | 
			
		||||
	else if (tab == tabRouting)
 | 
			
		||||
	{
 | 
			
		||||
		routing->refreshDrawing(CurrentCard);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::loadPatchesList(QListView *lv)
 | 
			
		||||
{
 | 
			
		||||
	StrPatch *patch;
 | 
			
		||||
	
 | 
			
		||||
	lv->clear();
 | 
			
		||||
	PatchesListViewItem *after = NULL;
 | 
			
		||||
	for(patch = CurrentCard->Patches.first(); patch; patch = CurrentCard->Patches.next() )
 | 
			
		||||
	{
 | 
			
		||||
		if (after)
 | 
			
		||||
			after = new PatchesListViewItem(patch, lv, after);
 | 
			
		||||
		else
 | 
			
		||||
			after = new PatchesListViewItem(patch, lv);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::patchesUpdateText()
 | 
			
		||||
{
 | 
			
		||||
	QListViewItemIterator it(lvPatches);
 | 
			
		||||
	while (it.current())
 | 
			
		||||
	{
 | 
			
		||||
		PatchesListViewItem *i = (PatchesListViewItem *)it.current();
 | 
			
		||||
		i->updateText();
 | 
			
		||||
		++it;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::menuQuitActivated(int /*id*/)
 | 
			
		||||
{
 | 
			
		||||
	qApp->quit();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::menuLoadDSPConfigActivated(int id)
 | 
			
		||||
{
 | 
			
		||||
	if (!CurrentCard)
 | 
			
		||||
		return;
 | 
			
		||||
	QFileDialog *fd = new QFileDialog(this, "file dialog", TRUE);
 | 
			
		||||
	fd->setMode(QFileDialog::ExistingFile);
 | 
			
		||||
	fd->setFilter("DSP config (*.ld10k1)");
 | 
			
		||||
	fd->setCaption("Save DSP config");
 | 
			
		||||
	int err = 0;
 | 
			
		||||
 | 
			
		||||
	QString fileName;
 | 
			
		||||
    	if (fd->exec() == QDialog::Accepted)
 | 
			
		||||
	{
 | 
			
		||||
        	fileName = fd->selectedFile();
 | 
			
		||||
		delete fd;
 | 
			
		||||
		
 | 
			
		||||
		LD10k1DspFile *dc = NULL;
 | 
			
		||||
		if ((err = dc->LoadFromFile(fileName, &dc)) < 0)
 | 
			
		||||
		{
 | 
			
		||||
			QMessageBox::critical(0, APP_NAME, QString("Couldn't load DSP config\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if ((err = CurrentCard->putDspConfig(dc)) < 0)
 | 
			
		||||
			QMessageBox::critical(0, APP_NAME, QString("Couldn't put DSP config\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
 | 
			
		||||
		delete dc;
 | 
			
		||||
		CurrentCard->clear();
 | 
			
		||||
		CurrentCard->loadFromLD();
 | 
			
		||||
		refreshState();
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
		delete fd;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::menuSaveDSPConfigActivated(int id)
 | 
			
		||||
{
 | 
			
		||||
	if (!CurrentCard)
 | 
			
		||||
		return;
 | 
			
		||||
	QFileDialog *fd = new QFileDialog(this, "file dialog", TRUE);
 | 
			
		||||
	fd->setMode(QFileDialog::AnyFile);
 | 
			
		||||
	fd->setFilter("DSP config (*.ld10k1)");
 | 
			
		||||
	fd->setCaption("Save DSP config");
 | 
			
		||||
	int err = 0;
 | 
			
		||||
 | 
			
		||||
	QString fileName;
 | 
			
		||||
    	if (fd->exec() == QDialog::Accepted)
 | 
			
		||||
	{
 | 
			
		||||
        	fileName = fd->selectedFile();
 | 
			
		||||
		delete fd;
 | 
			
		||||
		
 | 
			
		||||
		if (!fileName.endsWith(".ld10k1"))
 | 
			
		||||
			fileName += ".ld10k1";
 | 
			
		||||
		if (QFile::exists(fileName))
 | 
			
		||||
		{
 | 
			
		||||
			if (QMessageBox::question(0, APP_NAME, QString("File with name %1 exist. Overwite ?").arg(fileName), QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes)
 | 
			
		||||
				return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		LD10k1DspFile *dc = NULL;
 | 
			
		||||
		if ((err = CurrentCard->getDspConfig(&dc)) < 0)
 | 
			
		||||
		{
 | 
			
		||||
			QMessageBox::critical(0, APP_NAME, QString("Couldn't get DSP config\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if ((err = dc->SaveToFile(fileName)) < 0)
 | 
			
		||||
			QMessageBox::critical(0, APP_NAME, QString("Couldn't save DSP config\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
 | 
			
		||||
		delete dc;
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
		delete fd;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::refreshState()
 | 
			
		||||
{
 | 
			
		||||
	tabMainCurrentChanged(tabMain->currentPage());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::menuCardActivated(int id)
 | 
			
		||||
{
 | 
			
		||||
	CardParam *card;
 | 
			
		||||
	CardParam *old_card, *new_card;
 | 
			
		||||
	int item_id = 0, old_item_id = 0;
 | 
			
		||||
 | 
			
		||||
	new_card = NULL;
 | 
			
		||||
	if (CurrentCard && CurrentCard->Card->isConnected())
 | 
			
		||||
		old_card = CurrentCard->Card;
 | 
			
		||||
	else
 | 
			
		||||
		old_card = NULL;
 | 
			
		||||
 | 
			
		||||
	for (unsigned int i = 0; i < cardMenuItems.count(); i++)
 | 
			
		||||
	{
 | 
			
		||||
		item_id = cardMenuItems[i];
 | 
			
		||||
		card = cardGlobal->Cards.at(i);
 | 
			
		||||
		if (cardMenu->isItemChecked(item_id))
 | 
			
		||||
			old_item_id = item_id;
 | 
			
		||||
 | 
			
		||||
		if (id == item_id)
 | 
			
		||||
			new_card = card;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (new_card && new_card != old_card)
 | 
			
		||||
	{
 | 
			
		||||
		if (!new_card->connect())
 | 
			
		||||
		{
 | 
			
		||||
			cardMenu->setItemChecked(id, true);
 | 
			
		||||
			enableTabs(true);
 | 
			
		||||
			CurrentCard = new_card->getStructure();
 | 
			
		||||
			// FIXME - refresh data
 | 
			
		||||
			CurrentCard->loadFromLD();
 | 
			
		||||
			refreshState();
 | 
			
		||||
 | 
			
		||||
			if (old_card)
 | 
			
		||||
			{
 | 
			
		||||
				old_card->disconnect();
 | 
			
		||||
				cardMenu->setItemChecked(old_item_id, false);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::menuSettingsActivated(int /*id*/)
 | 
			
		||||
{
 | 
			
		||||
	PreferencesDlg d(cardGlobal);
 | 
			
		||||
	int item_id;
 | 
			
		||||
	
 | 
			
		||||
	if (CurrentCard && CurrentCard->Card->isConnected())
 | 
			
		||||
	{
 | 
			
		||||
		CurrentCard->Card->disconnect();
 | 
			
		||||
		CurrentCard = NULL;
 | 
			
		||||
		enableTabs(false);
 | 
			
		||||
		
 | 
			
		||||
		for (unsigned int i = 0; i < cardMenuItems.count(); i++)
 | 
			
		||||
		{
 | 
			
		||||
			item_id = cardMenuItems[i];
 | 
			
		||||
			cardMenu->setItemChecked(item_id, false);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (d.exec() == QDialog::Accepted)
 | 
			
		||||
	{
 | 
			
		||||
		saveSettings();
 | 
			
		||||
		createCardMenu();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::menuHelpAboutActivated(int /* id */)
 | 
			
		||||
{
 | 
			
		||||
	AboutDlg d;
 | 
			
		||||
	d.exec();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::menuCardClearDSPActivated(int /* id */)
 | 
			
		||||
{
 | 
			
		||||
	if (CurrentCard)
 | 
			
		||||
	{
 | 
			
		||||
		CurrentCard->clearDSP();
 | 
			
		||||
		refreshState();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::menuCardRefreshActivated(int /* id */)
 | 
			
		||||
{
 | 
			
		||||
	if (CurrentCard)
 | 
			
		||||
		CurrentCard->loadFromLD();
 | 
			
		||||
	
 | 
			
		||||
	refreshState();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::enableTabs(bool en)
 | 
			
		||||
{
 | 
			
		||||
	if (en)
 | 
			
		||||
	{
 | 
			
		||||
		tabLoad->setEnabled(true);
 | 
			
		||||
		tabRouting->setEnabled(true);
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		tabLoad->setEnabled(false);
 | 
			
		||||
		tabRouting->setEnabled(false);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::createCardMenu(void)
 | 
			
		||||
{
 | 
			
		||||
	CardParam *card;
 | 
			
		||||
	int id;
 | 
			
		||||
	
 | 
			
		||||
	for (unsigned int i = 0; i < cardMenuItems.count() ;i++)
 | 
			
		||||
	{
 | 
			
		||||
		cardMenu->disconnectItem(cardMenuItems[i], this, SLOT(menuCardActivated(int)));
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	cardMenuItems.clear();
 | 
			
		||||
	cardMenu->clear();
 | 
			
		||||
	for (unsigned int i = 0; i < cardGlobal->Cards.count() ;i++)
 | 
			
		||||
	{
 | 
			
		||||
		card = cardGlobal->Cards.at(i);
 | 
			
		||||
		id = cardMenu->insertItem(card->CardName);
 | 
			
		||||
		cardMenuItems.append(id);
 | 
			
		||||
		cardMenu->connectItem(id, this, SLOT(menuCardActivated(int)));
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// special items
 | 
			
		||||
	cardMenu->insertSeparator();
 | 
			
		||||
	cardMenu->insertItem(tr("&Refresh"), this, SLOT(menuCardRefreshActivated(int)));
 | 
			
		||||
	cardMenu->insertItem(tr("&Clear DSP"), this, SLOT(menuCardClearDSPActivated(int)));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::loadClicked()
 | 
			
		||||
{
 | 
			
		||||
	QFileDialog *fd = new QFileDialog(this, "file dialog", TRUE);
 | 
			
		||||
	fd->setMode(QFileDialog::ExistingFile);
 | 
			
		||||
	fd->setFilter("Patches (*.emu10k1 *.ld10k1)");
 | 
			
		||||
	fd->setCaption("Load patch");
 | 
			
		||||
	int err = 0;
 | 
			
		||||
 | 
			
		||||
	QString fileName;
 | 
			
		||||
    	if ( fd->exec() == QDialog::Accepted )
 | 
			
		||||
	{
 | 
			
		||||
        	fileName = fd->selectedFile();
 | 
			
		||||
		delete fd;
 | 
			
		||||
		LD10k1File *ldfile = NULL;
 | 
			
		||||
		if (fileName.endsWith(".emu10k1"))
 | 
			
		||||
		{
 | 
			
		||||
			EMU10k1File *emufile = NULL;
 | 
			
		||||
			if ((err = EMU10k1File::LoadFromFile(fileName, &emufile)) < 0) 
 | 
			
		||||
			{
 | 
			
		||||
				QMessageBox::critical(0, APP_NAME, QString("Couldn't load patch\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				TransformPatchDlg d(fileName, emufile);
 | 
			
		||||
				if (d.exec() == QDialog::Accepted)
 | 
			
		||||
				{
 | 
			
		||||
					if ((err = d.transformFile(&ldfile)) < 0)
 | 
			
		||||
					{
 | 
			
		||||
						QMessageBox::critical(0, APP_NAME, QString("Couldn't transform patch\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
 | 
			
		||||
						delete emufile;
 | 
			
		||||
						return;
 | 
			
		||||
					}
 | 
			
		||||
					delete emufile;
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					delete emufile;
 | 
			
		||||
					return;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			if ((err = LD10k1File::LoadFromFile(fileName, &ldfile)) < 0) {
 | 
			
		||||
				QMessageBox::critical(0, APP_NAME, QString("Couldn't load patch\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		LoadPatchDlg d(CurrentCard, fileName, ldfile);
 | 
			
		||||
 | 
			
		||||
		if (d.exec() == QDialog::Accepted)
 | 
			
		||||
		{
 | 
			
		||||
			// and now convert to loader
 | 
			
		||||
			StrPatch *loaded = NULL;
 | 
			
		||||
			if ((err = CurrentCard->load(ldfile, d.whereLoad(), &loaded)) < 0)
 | 
			
		||||
				QMessageBox::critical(0, APP_NAME, QString("Couldn't load patch\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
 | 
			
		||||
			else
 | 
			
		||||
				refreshState();
 | 
			
		||||
		}
 | 
			
		||||
		delete ldfile;
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
		delete fd;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::unloadClicked()
 | 
			
		||||
{
 | 
			
		||||
	PatchesListViewItem *current = (PatchesListViewItem *)lvPatches->currentItem();
 | 
			
		||||
	int err;
 | 
			
		||||
 | 
			
		||||
	if (current)
 | 
			
		||||
	{
 | 
			
		||||
		// find patch index
 | 
			
		||||
		StrPatch *p = current->patch;
 | 
			
		||||
		if ((err = CurrentCard->unload(p)))
 | 
			
		||||
			QMessageBox::critical(0, APP_NAME, QString("Couldn't unload patch\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
 | 
			
		||||
		else
 | 
			
		||||
			refreshState();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::patchDoubleClicked(QListViewItem *item)
 | 
			
		||||
{
 | 
			
		||||
	/*int patch_num = item->text(0).toInt();
 | 
			
		||||
	int err;
 | 
			
		||||
 | 
			
		||||
	liblo10k1_dsp_patch_t *patch = NULL;
 | 
			
		||||
	if ((err = global->CurrentCard->get(patch_num, &patch)))
 | 
			
		||||
	{
 | 
			
		||||
		QMessageBox::critical(0, APP_NAME, QString("Couldn't get patch\n(ld10k1 error:%1)").arg(global->CurrentCard->error_str(err)));
 | 
			
		||||
		return;
 | 
			
		||||
	}*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::saveSettings()
 | 
			
		||||
{
 | 
			
		||||
	QSettings settings(QSettings::Ini);
 | 
			
		||||
	settings.setPath("pzad", "qlo10k1", QSettings::User);
 | 
			
		||||
	
 | 
			
		||||
	settings.beginGroup("/qlo10k1");
 | 
			
		||||
	settings.writeEntry("/Version", "0.0.1");
 | 
			
		||||
	settings.writeEntry("/RepDirSystem", cardGlobal->RepDirSystem);
 | 
			
		||||
	settings.writeEntry("/RepDirUser", cardGlobal->RepDirUser);
 | 
			
		||||
	
 | 
			
		||||
	// first save cards
 | 
			
		||||
	settings.beginGroup("/Cards");
 | 
			
		||||
	settings.writeEntry("/CardCount", (int)cardGlobal->Cards.count());
 | 
			
		||||
	for (unsigned int i = 0; i < cardGlobal->Cards.count(); i++)
 | 
			
		||||
	{
 | 
			
		||||
		settings.beginGroup(QString("/Card_%1").arg(i));
 | 
			
		||||
		CardParam *card = cardGlobal->Cards.at(i);
 | 
			
		||||
		
 | 
			
		||||
		settings.writeEntry("/Name", card->CardName);
 | 
			
		||||
		settings.writeEntry("/Socket", card->CardSocket);
 | 
			
		||||
			
 | 
			
		||||
		settings.endGroup();
 | 
			
		||||
	}
 | 
			
		||||
	// write current card	
 | 
			
		||||
	settings.endGroup();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWnd::loadSettings()
 | 
			
		||||
{
 | 
			
		||||
	QSettings settings(QSettings::Ini);
 | 
			
		||||
	settings.setPath("pzad", "qlo10k1", QSettings::User);
 | 
			
		||||
	settings.beginGroup("/qlo10k1");
 | 
			
		||||
	
 | 
			
		||||
	QString version = settings.readEntry("/Version", "");
 | 
			
		||||
	if (version == "")
 | 
			
		||||
	{
 | 
			
		||||
		// settings doesn't exists
 | 
			
		||||
		cardGlobal->RepDirSystem = "";
 | 
			
		||||
		cardGlobal->RepDirUser = "";
 | 
			
		||||
		
 | 
			
		||||
		CardParam *card = new CardParam();
 | 
			
		||||
		card->CardName = "Default card";
 | 
			
		||||
		card->CardSocket = "/tmp/.ld10k1_port";
 | 
			
		||||
		
 | 
			
		||||
		if (!card->testConnection())
 | 
			
		||||
		{
 | 
			
		||||
			cardGlobal->Cards.append(card);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		cardGlobal->RepDirSystem = settings.readEntry("/RepDirSystem", "");
 | 
			
		||||
		cardGlobal->RepDirUser = settings.readEntry("/RepDirUser", "");
 | 
			
		||||
	
 | 
			
		||||
		settings.beginGroup("/Cards");
 | 
			
		||||
		
 | 
			
		||||
		unsigned int cardCount = settings.readNumEntry("/CardCount", 0);
 | 
			
		||||
		for (unsigned int i = 0; i < cardCount; i++)
 | 
			
		||||
		{
 | 
			
		||||
			settings.beginGroup(QString("/Card_%1").arg(i));
 | 
			
		||||
		
 | 
			
		||||
			CardParam *card = new CardParam();
 | 
			
		||||
			card->CardName = settings.readEntry("/Name", "");
 | 
			
		||||
			card->CardSocket = settings.readEntry("/Socket", "");
 | 
			
		||||
			
 | 
			
		||||
			if (!card->testConnection())
 | 
			
		||||
			{
 | 
			
		||||
				cardGlobal->Cards.append(card);
 | 
			
		||||
			}
 | 
			
		||||
				
 | 
			
		||||
			settings.endGroup();
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		
 | 
			
		||||
		settings.endGroup();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue