Blame qlo10k1/src/preferences.cpp

Packit 427e91
/*
Packit 427e91
 *  qlo10k1 - GUI frontend for ld10k1
Packit 427e91
 *
Packit 427e91
 *  Copyright (c) 2004 by Peter Zubaj
Packit 427e91
 *
Packit 427e91
 *   This program is free software; you can redistribute it and/or modify
Packit 427e91
 *   it under the terms of the GNU General Public License as published by
Packit 427e91
 *   the Free Software Foundation; either version 2 of the License, or
Packit 427e91
 *   (at your option) any later version.
Packit 427e91
 *
Packit 427e91
 *   This program is distributed in the hope that it will be useful,
Packit 427e91
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 427e91
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 427e91
 *   GNU General Public License for more details.
Packit 427e91
 *
Packit 427e91
 *   You should have received a copy of the GNU General Public License
Packit 427e91
 *   along with this program; if not, write to the Free Software
Packit 427e91
 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
Packit 427e91
 *
Packit 427e91
 */
Packit 427e91
 
Packit 427e91
#include <qlistbox.h>
Packit 427e91
#include <qpushbutton.h>
Packit 427e91
#include <qlineedit.h>
Packit 427e91
#include <qgroupbox.h>
Packit 427e91
#include <qmessagebox.h>
Packit 427e91
#include <qinputdialog.h>
Packit 427e91
#include <qlineedit.h>
Packit 427e91
#include "preferences.h"
Packit 427e91
#include "app_global.h"
Packit 427e91
#include "strparam.h"
Packit 427e91
Packit 427e91
PreferencesDlg::PreferencesDlg(StrCardGlobal *glob)
Packit 427e91
{
Packit 427e91
	global = glob;
Packit 427e91
	connect(pbOK, SIGNAL(clicked()), this, SLOT(okClicked()));
Packit 427e91
	connect(pbCancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
Packit 427e91
	
Packit 427e91
	connect(lbCards, SIGNAL(highlighted(int)), this, SLOT(cardHighlighted(int)));
Packit 427e91
	
Packit 427e91
	connect(pbUpdate, SIGNAL(clicked()), this, SLOT(updateClicked()));
Packit 427e91
	connect(pbCardAdd, SIGNAL(clicked()), this, SLOT(cardAddClicked()));
Packit 427e91
	connect(pbCardDel, SIGNAL(clicked()), this, SLOT(cardDelClicked()));
Packit 427e91
	
Packit 427e91
	// copy card list
Packit 427e91
	for (unsigned int i = 0; i < global->Cards.count(); i++)
Packit 427e91
		cards.append(new CardParam(global->Cards.at(i)));
Packit 427e91
	
Packit 427e91
	refreshListBox();
Packit 427e91
	
Packit 427e91
	if (cards.count() > 1)
Packit 427e91
		pbCardDel->setEnabled(true);
Packit 427e91
	repDirSystem = global->RepDirSystem;
Packit 427e91
	repDirUser = global->RepDirUser;		
Packit 427e91
	
Packit 427e91
	leRepSystem->setText(repDirSystem);
Packit 427e91
	leRepUser->setText(repDirUser);	
Packit 427e91
}
Packit 427e91
Packit 427e91
void PreferencesDlg::okClicked()
Packit 427e91
{
Packit 427e91
	unsigned int i;
Packit 427e91
	CardParam *card;
Packit 427e91
	for (i = 0; i < cards.count(); i++)
Packit 427e91
	{
Packit 427e91
		// test connection
Packit 427e91
		card = cards.at(i);
Packit 427e91
		if (card->testConnection())
Packit 427e91
		{
Packit 427e91
			// error
Packit 427e91
			QMessageBox::critical( 0, APP_NAME,
Packit 427e91
        		QString("Couldn't connect to socket %1 for card %2").arg(card->CardSocket).arg(card->CardName));
Packit 427e91
			return;
Packit 427e91
		}
Packit 427e91
	}
Packit 427e91
	
Packit 427e91
	// copy values to global
Packit 427e91
	global->Cards.clear();
Packit 427e91
	for (i = 0; i < cards.count(); i++)
Packit 427e91
		global->Cards.append(new CardParam(cards.at(i)));
Packit 427e91
		
Packit 427e91
	repDirSystem = leRepSystem->text();
Packit 427e91
	repDirUser = leRepUser->text();
Packit 427e91
	global->RepDirSystem = repDirSystem;
Packit 427e91
	global->RepDirUser = repDirUser;
Packit 427e91
	
Packit 427e91
	done(Accepted);
Packit 427e91
}
Packit 427e91
Packit 427e91
void PreferencesDlg::cancelClicked()
Packit 427e91
{
Packit 427e91
	done(Rejected);
Packit 427e91
}
Packit 427e91
Packit 427e91
void PreferencesDlg::refreshListBox(void)
Packit 427e91
{
Packit 427e91
	lbCards->clear();
Packit 427e91
	
Packit 427e91
	CardParam *card;
Packit 427e91
	QString desc;
Packit 427e91
	
Packit 427e91
	for (unsigned int i = 0; i < cards.count() ;i++)
Packit 427e91
	{
Packit 427e91
		card = cards.at(i);
Packit 427e91
		desc = card->CardName + " - " + card->CardSocket;
Packit 427e91
		lbCards->insertItem(desc);	
Packit 427e91
	}
Packit 427e91
}
Packit 427e91
Packit 427e91
void PreferencesDlg::refreshListBox(int idx)
Packit 427e91
{
Packit 427e91
	CardParam *card;
Packit 427e91
	QString desc;
Packit 427e91
	
Packit 427e91
	card = cards.at(idx);
Packit 427e91
	desc = card->CardName + " - " + card->CardSocket;
Packit 427e91
	lbCards->changeItem(desc, idx);
Packit 427e91
}
Packit 427e91
Packit 427e91
Packit 427e91
void PreferencesDlg::cardHighlighted(int index)
Packit 427e91
{
Packit 427e91
	CardParam *card;
Packit 427e91
	
Packit 427e91
	if (index >= 0 && (unsigned int)index < cards.count())
Packit 427e91
	{
Packit 427e91
		card = cards.at(index);
Packit 427e91
		leCardName->setText(card->CardName);
Packit 427e91
		leCardSocket->setText(card->CardSocket);
Packit 427e91
		gbCard->setEnabled(true);
Packit 427e91
	}
Packit 427e91
	else
Packit 427e91
	{
Packit 427e91
		leCardName->setText("");
Packit 427e91
		leCardSocket->setText("");
Packit 427e91
		gbCard->setEnabled(false);
Packit 427e91
	}
Packit 427e91
}
Packit 427e91
Packit 427e91
void PreferencesDlg::updateClicked()
Packit 427e91
{
Packit 427e91
	int idx = lbCards->currentItem();
Packit 427e91
	
Packit 427e91
	if (idx >=0 && (unsigned int)idx < cards.count())
Packit 427e91
	{
Packit 427e91
		CardParam *card;
Packit 427e91
		
Packit 427e91
		card = cards.at(idx);
Packit 427e91
		
Packit 427e91
		card->CardName = leCardName->text();
Packit 427e91
		card->CardSocket = leCardSocket->text();
Packit 427e91
		refreshListBox(idx);
Packit 427e91
	}
Packit 427e91
}
Packit 427e91
Packit 427e91
void PreferencesDlg::cardAddClicked()
Packit 427e91
{
Packit 427e91
	CardParam *card = new CardParam();
Packit 427e91
	card->CardName = "Default card";
Packit 427e91
	card->CardSocket = "/tmp/.ld10k1_port";
Packit 427e91
	cards.append(card);
Packit 427e91
	refreshListBox();
Packit 427e91
}
Packit 427e91
Packit 427e91
void PreferencesDlg::cardDelClicked()
Packit 427e91
{
Packit 427e91
	int idx = lbCards->currentItem();
Packit 427e91
	
Packit 427e91
	if (idx >= 0)
Packit 427e91
	{
Packit 427e91
		cards.remove(idx);
Packit 427e91
		
Packit 427e91
		if (cards.count() <= 1)
Packit 427e91
			pbCardDel->setEnabled(false);
Packit 427e91
		refreshListBox();
Packit 427e91
	}
Packit 427e91
}