Diffstat (limited to 'noncore/tools/remote/buttondialog.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/tools/remote/buttondialog.cpp | 4 |
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 | /* |
2 | Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie. | 2 | Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie. |
3 | Copyright (C) 2002 Thomas Stephens | 3 | Copyright (C) 2002 Thomas Stephens |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public | 5 | This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public |
6 | License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later | 6 | License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later |
7 | version. | 7 | version. |
8 | 8 | ||
9 | This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the | 9 | This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the |
10 | implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | 10 | implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
11 | Public License for more details. | 11 | Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU General Public License along with this program; if not, write to the Free | 13 | You should have received a copy of the GNU General Public License along with this program; if not, write to the Free |
14 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 14 | Software 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 | ||
19 | ButtonDialog::ButtonDialog(QString buttonName, QWidget *parent, const char*name, bool modal, WFlags f):QDialog(parent, name, modal, f) | 19 | ButtonDialog::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 | ||
68 | void ButtonDialog::remoteSelected(const QString &string) | 68 | void 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 | ||
75 | void ButtonDialog::buttonSelected(const QString &string) | 75 | void ButtonDialog::buttonSelected(const QString &string) |
76 | { | 76 | { |
77 | list+=string; | 77 | list+=string; |
78 | } | 78 | } |
79 | 79 | ||
80 | QStringList ButtonDialog::getList() | 80 | QStringList ButtonDialog::getList() |
81 | { | 81 | { |
82 | return list; | 82 | return list; |
83 | } | 83 | } |
84 | 84 | ||
85 | QString ButtonDialog::getLabel() | 85 | QString ButtonDialog::getLabel() |
86 | { | 86 | { |
87 | return label->text(); | 87 | return label->text(); |
88 | } | 88 | } |
89 | 89 | ||
90 | QStringList ButtonDialog::getRemotes() | 90 | QStringList 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 | ||
161 | QStringList ButtonDialog::getButtons(const char *remoteName) | 161 | QStringList 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 |
239 | const char *ButtonDialog::readPacket() | 239 | const 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 | { |