summaryrefslogtreecommitdiff
path: root/noncore/tools/remote/buttondialog.cpp
blob: 7d03f2781f1fabf838a289570f8f018d60f7d61e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/*
Opie-Remote.  emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie.
Copyright (C) 2002 Thomas Stephens

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 "buttondialog.h"

ButtonDialog::ButtonDialog(QString buttonName, QString action, QWidget *parent, const char*name, bool modal, WFlags f)
: QDialog(parent, name, modal, f)
{
	setCaption(tr(buttonName));

	QVBoxLayout *layout = new QVBoxLayout(this);

	QHBoxLayout *hlayout1 = new QHBoxLayout(this);
	QHBoxLayout *hlayout2 = new QHBoxLayout(this);
	QHBoxLayout *hlayout3 = new QHBoxLayout(this);

	layout->addSpacing(5);
	layout->addLayout(hlayout1);
	layout->addSpacing(5);
	layout->addLayout(hlayout2);
	layout->addSpacing(5);
	layout->addLayout(hlayout3);
	layout->addSpacing(5);
	
	lh = new LircHandler();

	remote = new QComboBox(false, this, "remote");
	QLabel *remoteLabel = new QLabel(remote, "Remote: ", this, "remoteLabel");
	hlayout1->addSpacing(5);
	hlayout1->addWidget(remoteLabel);
	hlayout1->addSpacing(5);
	hlayout1->addWidget(remote);
	hlayout1->addSpacing(5);
	remote->insertStringList(lh->getRemotes());
	connect(remote, SIGNAL(activated(const QString&)), this, SLOT(remoteSelected(const QString&)) );

	button = new QComboBox(false, this, "button");
	QLabel *buttonLabel = new QLabel(remote, "Button: ", this, "buttonLabel");
	hlayout2->addSpacing(5);
	hlayout2->addWidget(buttonLabel);
	hlayout2->addSpacing(5);
	hlayout2->addWidget(button);
	hlayout2->addSpacing(5);
	
	label = new QLineEdit(this, "label");
	label->setText(buttonName);
	QLabel *labelLabel = new QLabel(label, "Label: ", this, "labelLabel");
	hlayout3->addSpacing(5);
	hlayout3->addWidget(labelLabel);
	hlayout3->addSpacing(5);
	hlayout3->addWidget(label);
	hlayout3->addSpacing(5);
	
	QStringList actionArgs = QStringList::split(' ', action);
	if(actionArgs.count() > 1) {
		// Remote
		for(int i=0;i<remote->count();i++) {
			if(remote->text(i) == actionArgs[1]) {
				remote->setCurrentItem(i);
				break;
			}
		}
	}
	// Populate the list of buttons
	remoteSelected(remote->currentText());

	if(actionArgs.count() > 2) {
		// Button
		for(int i=0;i<button->count();i++) {
			if(button->text(i) == actionArgs[2]) {
				button->setCurrentItem(i);
				break;
			}
		}
	}
	else {
		button->setCurrentItem(-1);
	}
}

ButtonDialog::~ButtonDialog()
{
	delete lh;
}

void ButtonDialog::remoteSelected(const QString &string)
{
	button->clear();
	button->insertStringList(lh->getButtons(string.latin1()) );
}

QString ButtonDialog::getAction()
{
	QString action("SEND_ONCE " + remote->currentText() + " " + button->currentText());
	return action;
}

QString ButtonDialog::getLabel()
{
	return label->text();
}