summaryrefslogtreecommitdiff
path: root/noncore/tools/remote/buttondialog.cpp
Unidiff
Diffstat (limited to 'noncore/tools/remote/buttondialog.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/tools/remote/buttondialog.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/noncore/tools/remote/buttondialog.cpp b/noncore/tools/remote/buttondialog.cpp
index 6ea4801..580f101 100644
--- a/noncore/tools/remote/buttondialog.cpp
+++ b/noncore/tools/remote/buttondialog.cpp
@@ -1,248 +1,248 @@
1/* 1/*
2Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie. 2Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie.
3Copyright (C) 2002 Thomas Stephens 3Copyright (C) 2002 Thomas Stephens
4 4
5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public 5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later 6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
7version. 7version.
8 8
9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the 9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11Public License for more details. 11Public License for more details.
12 12
13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free 13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15*/ 15*/
16 16
17#include "buttondialog.h" 17#include "buttondialog.h"
18 18
19ButtonDialog::ButtonDialog(QString buttonName, QWidget *parent, const char*name, bool modal, WFlags f):QDialog(parent, name, modal, f) 19ButtonDialog::ButtonDialog(QString buttonName, QWidget *parent, const char*name, bool modal, WFlags f):QDialog(parent, name, modal, f)
20{ 20{
21 setCaption(tr(buttonName)); 21 setCaption(tr(buttonName));
22 22
23 QVBoxLayout *layout = new QVBoxLayout(this); 23 QVBoxLayout *layout = new QVBoxLayout(this);
24 24
25 QHBoxLayout *hlayout1 = new QHBoxLayout(this); 25 QHBoxLayout *hlayout1 = new QHBoxLayout(this);
26 QHBoxLayout *hlayout2 = new QHBoxLayout(this); 26 QHBoxLayout *hlayout2 = new QHBoxLayout(this);
27 QHBoxLayout *hlayout3 = new QHBoxLayout(this); 27 QHBoxLayout *hlayout3 = new QHBoxLayout(this);
28 28
29 layout->addSpacing(5); 29 layout->addSpacing(5);
30 layout->addLayout(hlayout1); 30 layout->addLayout(hlayout1);
31 layout->addSpacing(5); 31 layout->addSpacing(5);
32 layout->addLayout(hlayout2); 32 layout->addLayout(hlayout2);
33 layout->addSpacing(5); 33 layout->addSpacing(5);
34 layout->addLayout(hlayout3); 34 layout->addLayout(hlayout3);
35 layout->addSpacing(5); 35 layout->addSpacing(5);
36 36
37 remote = new QComboBox(false, this, "remote"); 37 remote = new QComboBox(false, this, "remote");
38 QLabel *remoteLabel = new QLabel(remote, "Remote: ", this, "remoteLabel"); 38 QLabel *remoteLabel = new QLabel(remote, "Remote: ", this, "remoteLabel");
39 hlayout1->addSpacing(5); 39 hlayout1->addSpacing(5);
40 hlayout1->addWidget(remoteLabel); 40 hlayout1->addWidget(remoteLabel);
41 hlayout1->addSpacing(5); 41 hlayout1->addSpacing(5);
42 hlayout1->addWidget(remote); 42 hlayout1->addWidget(remote);
43 hlayout1->addSpacing(5); 43 hlayout1->addSpacing(5);
44 remote->insertItem("Remote "); 44 remote->insertItem("Remote ");
45 remote->insertStringList(getRemotes()); 45 remote->insertStringList(getRemotes());
46 connect(remote, SIGNAL(activated(const QString &)), this, SLOT(remoteSelected(const QString&)) ); 46 connect(remote, SIGNAL(activated(const QString&)), this, SLOT(remoteSelected(const QString&)) );
47 47
48 button = new QComboBox(false, this, "button"); 48 button = new QComboBox(false, this, "button");
49 QLabel *buttonLabel = new QLabel(remote, "Button: ", this, "buttonLabel"); 49 QLabel *buttonLabel = new QLabel(remote, "Button: ", this, "buttonLabel");
50 hlayout2->addSpacing(5); 50 hlayout2->addSpacing(5);
51 hlayout2->addWidget(buttonLabel); 51 hlayout2->addWidget(buttonLabel);
52 hlayout2->addSpacing(5); 52 hlayout2->addSpacing(5);
53 hlayout2->addWidget(button); 53 hlayout2->addWidget(button);
54 hlayout2->addSpacing(5); 54 hlayout2->addSpacing(5);
55 button->insertItem("Button "); 55 button->insertItem("Button ");
56 connect(button, SIGNAL(activated(const QString &)), this, SLOT(buttonSelected(const QString&)) ); 56 connect(button, SIGNAL(activated(const QString&)), this, SLOT(buttonSelected(const QString&)) );
57 57
58 label = new QLineEdit(this, "label"); 58 label = new QLineEdit(this, "label");
59 label->setText(buttonName); 59 label->setText(buttonName);
60 QLabel *labelLabel = new QLabel(label, "Label: ", this, "labelLabel"); 60 QLabel *labelLabel = new QLabel(label, "Label: ", this, "labelLabel");
61 hlayout3->addSpacing(5); 61 hlayout3->addSpacing(5);
62 hlayout3->addWidget(labelLabel); 62 hlayout3->addWidget(labelLabel);
63 hlayout3->addSpacing(5); 63 hlayout3->addSpacing(5);
64 hlayout3->addWidget(label); 64 hlayout3->addWidget(label);
65 hlayout3->addSpacing(5); 65 hlayout3->addSpacing(5);
66} 66}
67 67
68void ButtonDialog::remoteSelected(const QString &string) 68void ButtonDialog::remoteSelected(const QString &string)
69{ 69{
70 button->insertStringList(getButtons(string.latin1()) ); 70 button->insertStringList(getButtons(string.latin1()) );
71 list="SEND_ONCE"; 71 list="SEND_ONCE";
72 list+=string; 72 list+=string;
73} 73}
74 74
75void ButtonDialog::buttonSelected(const QString &string) 75void ButtonDialog::buttonSelected(const QString &string)
76{ 76{
77 list+=string; 77 list+=string;
78} 78}
79 79
80QStringList ButtonDialog::getList() 80QStringList ButtonDialog::getList()
81{ 81{
82 return list; 82 return list;
83} 83}
84 84
85QString ButtonDialog::getLabel() 85QString ButtonDialog::getLabel()
86{ 86{
87 return label->text(); 87 return label->text();
88} 88}
89 89
90QStringList ButtonDialog::getRemotes() 90QStringList ButtonDialog::getRemotes()
91{ 91{
92 const char write_buffer[] = "LIST\n"; 92 const char write_buffer[] = "LIST\n";
93 const char *readbuffer; 93 const char *readbuffer;
94 int i, numlines; 94 int i, numlines;
95 QStringList list; 95 QStringList list;
96 96
97 addr.sun_family=AF_UNIX; 97 addr.sun_family=AF_UNIX;
98 strcpy(addr.sun_path,"/dev/lircd"); 98 strcpy(addr.sun_path,"/dev/lircd");
99 99
100 fd = socket(AF_UNIX, SOCK_STREAM, 0); 100 fd = socket(AF_UNIX, SOCK_STREAM, 0);
101 if(fd == -1) 101 if(fd == -1)
102 { 102 {
103 QMessageBox *mb = new QMessageBox("Error!", 103 QMessageBox *mb = new QMessageBox("Error!",
104 "couldnt connect to socket", 104 "couldnt connect to socket",
105 QMessageBox::NoIcon, 105 QMessageBox::NoIcon,
106 QMessageBox::Ok, 106 QMessageBox::Ok,
107 QMessageBox::NoButton, 107 QMessageBox::NoButton,
108 QMessageBox::NoButton); 108 QMessageBox::NoButton);
109 mb->exec(); 109 mb->exec();
110 perror("ButtonDialog::GetRemotes"); 110 perror("ButtonDialog::GetRemotes");
111 return NULL; 111 return NULL;
112 } 112 }
113 113
114 if(::connect(fd,(struct sockaddr *) &addr, sizeof(addr) ) == -1) 114 if(::connect(fd,(struct sockaddr *) &addr, sizeof(addr) ) == -1)
115 { 115 {
116 QMessageBox *mb = new QMessageBox("Error!", 116 QMessageBox *mb = new QMessageBox("Error!",
117 "couldnt connect to socket", 117 "couldnt connect to socket",
118 QMessageBox::NoIcon, 118 QMessageBox::NoIcon,
119 QMessageBox::Ok, 119 QMessageBox::Ok,
120 QMessageBox::NoButton, 120 QMessageBox::NoButton,
121 QMessageBox::NoButton); 121 QMessageBox::NoButton);
122 mb->exec(); 122 mb->exec();
123 perror("ButtonDialog::GetRemotes"); 123 perror("ButtonDialog::GetRemotes");
124 return NULL; 124 return NULL;
125 } 125 }
126 126
127 write(fd, write_buffer, strlen(write_buffer)); 127 write(fd, write_buffer, strlen(write_buffer));
128 128
129 for(i=0; i<5; i++) 129 for(i=0; i<5; i++)
130 { 130 {
131 printf("%d\n", i); 131 printf("%d\n", i);
132 readbuffer = readPacket(); 132 readbuffer = readPacket();
133 printf("%s", readbuffer); 133 printf("%s", readbuffer);
134 printf("%d\n", i); 134 printf("%d\n", i);
135 } 135 }
136 136
137 numlines = atoi(readbuffer); 137 numlines = atoi(readbuffer);
138 138
139 for(i=0; i<numlines; i++) 139 for(i=0; i<numlines; i++)
140 { 140 {
141 list+=readPacket(); 141 list+=readPacket();
142 } 142 }
143 143
144 if(strcasecmp(readPacket(), "END") != 0) 144 if(strcasecmp(readPacket(), "END") != 0)
145 { 145 {
146 QMessageBox *mb = new QMessageBox("Error!", 146 QMessageBox *mb = new QMessageBox("Error!",
147 "bad packet", 147 "bad packet",
148 QMessageBox::NoIcon, 148 QMessageBox::NoIcon,
149 QMessageBox::Ok, 149 QMessageBox::Ok,
150 QMessageBox::NoButton, 150 QMessageBox::NoButton,
151 QMessageBox::NoButton); 151 QMessageBox::NoButton);
152 mb->exec(); 152 mb->exec();
153 perror("ButtonDialog::GetRemotes"); 153 perror("ButtonDialog::GetRemotes");
154 return NULL; 154 return NULL;
155 } 155 }
156 156
157 ::close(fd); 157 ::close(fd);
158 return list; 158 return list;
159} 159}
160 160
161QStringList ButtonDialog::getButtons(const char *remoteName) 161QStringList ButtonDialog::getButtons(const char *remoteName)
162{ 162{
163 QString write_buffer = "LIST "; 163 QString write_buffer = "LIST ";
164 const char *readbuffer; 164 const char *readbuffer;
165 int i, j, numlines; 165 int i, j, numlines;
166 QStringList list; 166 QStringList list;
167 QString string; 167 QString string;
168 168
169 write_buffer += remoteName; 169 write_buffer += remoteName;
170 write_buffer += '\n'; 170 write_buffer += '\n';
171 171
172 fd = socket(AF_UNIX, SOCK_STREAM, 0); 172 fd = socket(AF_UNIX, SOCK_STREAM, 0);
173 if(fd == -1) 173 if(fd == -1)
174 { 174 {
175 QMessageBox *mb = new QMessageBox("Error!", 175 QMessageBox *mb = new QMessageBox("Error!",
176 "couldnt connect to socket", 176 "couldnt connect to socket",
177 QMessageBox::NoIcon, 177 QMessageBox::NoIcon,
178 QMessageBox::Ok, 178 QMessageBox::Ok,
179 QMessageBox::NoButton, 179 QMessageBox::NoButton,
180 QMessageBox::NoButton); 180 QMessageBox::NoButton);
181 mb->exec(); 181 mb->exec();
182 perror("ButtonDialog::GetButtons"); 182 perror("ButtonDialog::GetButtons");
183 return NULL; 183 return NULL;
184 } 184 }
185 185
186 186
187 if(::connect(fd,(struct sockaddr *) &addr, sizeof(addr) ) == -1) 187 if(::connect(fd,(struct sockaddr *) &addr, sizeof(addr) ) == -1)
188 { 188 {
189 QMessageBox *mb = new QMessageBox("Error!", 189 QMessageBox *mb = new QMessageBox("Error!",
190 "couldnt connect to socket", 190 "couldnt connect to socket",
191 QMessageBox::NoIcon, 191 QMessageBox::NoIcon,
192 QMessageBox::Ok, 192 QMessageBox::Ok,
193 QMessageBox::NoButton, 193 QMessageBox::NoButton,
194 QMessageBox::NoButton); 194 QMessageBox::NoButton);
195 mb->exec(); 195 mb->exec();
196 perror("ButtonDialog::GetButtons"); 196 perror("ButtonDialog::GetButtons");
197 return NULL; 197 return NULL;
198 } 198 }
199 199
200 write(fd, write_buffer.latin1(), strlen(write_buffer) ); 200 write(fd, write_buffer.latin1(), strlen(write_buffer) );
201 201
202 for(i=0; i<5; i++) 202 for(i=0; i<5; i++)
203 { 203 {
204 readbuffer = readPacket(); 204 readbuffer = readPacket();
205 } 205 }
206 206
207 numlines = atoi(readbuffer); 207 numlines = atoi(readbuffer);
208 208
209 for(i=0; i<numlines; i++) 209 for(i=0; i<numlines; i++)
210 { 210 {
211 list+=readPacket(); 211 list+=readPacket();
212 for(j=0; j<list[i].length(); j++) 212 for(j=0; j<list[i].length(); j++)
213 { 213 {
214 if(list[i][j] == ' ') 214 if(list[i][j] == ' ')
215 break; 215 break;
216 } 216 }
217 list[i].remove(0, j+1); 217 list[i].remove(0, j+1);
218 } 218 }
219 219
220 if(strcasecmp(readPacket(), "END") != 0) 220 if(strcasecmp(readPacket(), "END") != 0)
221 { 221 {
222 QMessageBox *mb = new QMessageBox("Error!", 222 QMessageBox *mb = new QMessageBox("Error!",
223 "bad packet", 223 "bad packet",
224 QMessageBox::NoIcon, 224 QMessageBox::NoIcon,
225 QMessageBox::Ok, 225 QMessageBox::Ok,
226 QMessageBox::NoButton, 226 QMessageBox::NoButton,
227 QMessageBox::NoButton); 227 QMessageBox::NoButton);
228 mb->exec(); 228 mb->exec();
229 perror("ButtonDialog::GetButtons"); 229 perror("ButtonDialog::GetButtons");
230 return NULL; 230 return NULL;
231 } 231 }
232 232
233 ::close(fd); 233 ::close(fd);
234 return list; 234 return list;
235} 235}
236 236
237 237
238//this function was ripped for rc.c in xrc, it is available here: http://www.lirc.org/software.html 238//this function was ripped for rc.c in xrc, it is available here: http://www.lirc.org/software.html
239const char *ButtonDialog::readPacket() 239const char *ButtonDialog::readPacket()
240{ 240{
241 static char buffer[PACKET_SIZE+1]=""; 241 static char buffer[PACKET_SIZE+1]="";
242 char *end; 242 char *end;
243 static int ptr=0,end_len=0; 243 static int ptr=0,end_len=0;
244 ssize_t ret; 244 ssize_t ret;
245 timeout = 0; 245 timeout = 0;
246 246
247 if(ptr>0) 247 if(ptr>0)
248 { 248 {