-rw-r--r-- | noncore/tools/remote/configtab.cpp | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/noncore/tools/remote/configtab.cpp b/noncore/tools/remote/configtab.cpp index 17cdc6a..ebfba2e 100644 --- a/noncore/tools/remote/configtab.cpp +++ b/noncore/tools/remote/configtab.cpp | |||
@@ -1,218 +1,238 @@ | |||
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 "configtab.h" | 17 | #include "configtab.h" |
18 | 18 | ||
19 | ConfigTab::ConfigTab(QWidget *parent, const char *name):QWidget(parent,name) | 19 | ConfigTab::ConfigTab(QWidget *parent, const char *name):QWidget(parent,name) |
20 | { | 20 | { |
21 | 21 | ||
22 | QVBoxLayout *layout = new QVBoxLayout(this); | 22 | QVBoxLayout *layout = new QVBoxLayout(this); |
23 | 23 | ||
24 | topGroupConf = new TopGroupConf(this, "topGroupConf"); | 24 | topGroupConf = new TopGroupConf(this, "topGroupConf"); |
25 | layout->addWidget(topGroupConf, 1); | 25 | layout->addWidget(topGroupConf, 1); |
26 | layout->addSpacing(1); | 26 | layout->addSpacing(1); |
27 | 27 | ||
28 | dvdGroupConf = new DVDGroupConf(this, "dvdGroupConf"); | 28 | dvdGroupConf = new DVDGroupConf(this, "dvdGroupConf"); |
29 | layout->addWidget(dvdGroupConf, 1); | 29 | layout->addWidget(dvdGroupConf, 1); |
30 | layout->addSpacing(1); | 30 | layout->addSpacing(1); |
31 | 31 | ||
32 | vcrGroupConf = new VCRGroupConf(this, "vcrGroupConf"); | 32 | vcrGroupConf = new VCRGroupConf(this, "vcrGroupConf"); |
33 | layout->addWidget(vcrGroupConf, 1); | 33 | layout->addWidget(vcrGroupConf, 1); |
34 | layout->addSpacing(1); | 34 | layout->addSpacing(1); |
35 | 35 | ||
36 | channelGroupConf = new ChannelGroupConf(this, "channelGroupConf"); | 36 | channelGroupConf = new ChannelGroupConf(this, "channelGroupConf"); |
37 | layout->addWidget(channelGroupConf, 1); | 37 | layout->addWidget(channelGroupConf, 1); |
38 | 38 | ||
39 | 39 | ||
40 | } | 40 | } |
41 | 41 | ||
42 | void ConfigTab::setConfig(Config *newCfg) | 42 | void ConfigTab::setConfig(Config *newCfg) |
43 | { | 43 | { |
44 | cfg = newCfg; | 44 | cfg = newCfg; |
45 | cfg->setGroup("Remotes"); | 45 | cfg->setGroup("Remotes"); |
46 | topGroupConf->updateRemotes(cfg->readListEntry("remoteList", ',') ); | 46 | topGroupConf->updateRemotes(cfg->readListEntry("remoteList", ',') ); |
47 | cfg->setGroup("Default"); | 47 | cfg->setGroup("Default"); |
48 | const QObject *obj; | 48 | const QObject *obj; |
49 | 49 | ||
50 | const QObjectList *objList = topGroupConf->children(); | 50 | const QObjectList *objList = topGroupConf->children(); |
51 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) | 51 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) |
52 | { | 52 | { |
53 | if(obj->inherits("QPushButton")) | 53 | if(obj->inherits("QPushButton")) |
54 | { | 54 | { |
55 | if(!cfg->hasKey((QString)obj->name()+"Label")) | 55 | if(!cfg->hasKey((QString)obj->name()+"Label")) |
56 | { | 56 | { |
57 | cfg->writeEntry((QString)obj->name()+"Label", ((QPushButton *)obj)->text()); | 57 | cfg->writeEntry((QString)obj->name()+"Label", ((QPushButton *)obj)->text()); |
58 | } | 58 | } |
59 | } | 59 | } |
60 | } | 60 | } |
61 | 61 | ||
62 | objList = dvdGroupConf->children(); | 62 | objList = dvdGroupConf->children(); |
63 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) | 63 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) |
64 | { | 64 | { |
65 | if(obj->inherits("QPushButton")) | 65 | if(obj->inherits("QPushButton")) |
66 | { | 66 | { |
67 | if(!cfg->hasKey((QString)obj->name()+"Label")) | 67 | if(!cfg->hasKey((QString)obj->name()+"Label")) |
68 | { | 68 | { |
69 | cfg->writeEntry((QString)obj->name()+"Label", ((QPushButton *)obj)->text()); | 69 | cfg->writeEntry((QString)obj->name()+"Label", ((QPushButton *)obj)->text()); |
70 | } | 70 | } |
71 | } | 71 | } |
72 | } | 72 | } |
73 | 73 | ||
74 | objList = vcrGroupConf->children(); | 74 | objList = vcrGroupConf->children(); |
75 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) | 75 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) |
76 | { | 76 | { |
77 | if(obj->inherits("QPushButton")) | 77 | if(obj->inherits("QPushButton")) |
78 | { | 78 | { |
79 | if(!cfg->hasKey((QString)obj->name()+"Label")) | 79 | if(!cfg->hasKey((QString)obj->name()+"Label")) |
80 | { | 80 | { |
81 | cfg->writeEntry((QString)obj->name()+"Label", ((QPushButton *)obj)->text()); | 81 | cfg->writeEntry((QString)obj->name()+"Label", ((QPushButton *)obj)->text()); |
82 | } | 82 | } |
83 | } | 83 | } |
84 | } | 84 | } |
85 | 85 | ||
86 | objList = channelGroupConf->children(); | 86 | objList = channelGroupConf->children(); |
87 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) | 87 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) |
88 | { | 88 | { |
89 | if(obj->inherits("QPushButton")) | 89 | if(obj->inherits("QPushButton")) |
90 | { | 90 | { |
91 | if(!cfg->hasKey((QString)obj->name()+"Label")) | 91 | if(!cfg->hasKey((QString)obj->name()+"Label")) |
92 | { | 92 | { |
93 | cfg->writeEntry((QString)obj->name()+"Label", ((QPushButton *)obj)->text()); | 93 | cfg->writeEntry((QString)obj->name()+"Label", ((QPushButton *)obj)->text()); |
94 | } | 94 | } |
95 | } | 95 | } |
96 | } | 96 | } |
97 | cfg->write(); | 97 | cfg->write(); |
98 | 98 | ||
99 | cfg->setGroup("Remotes"); | 99 | cfg->setGroup("Remotes"); |
100 | |||
101 | QString curr_remote = topGroupConf->getRemotesText(); | ||
102 | if(curr_remote != "") | ||
103 | remoteSelected(curr_remote); | ||
100 | } | 104 | } |
101 | /* | 105 | /* |
102 | void ConfigTab::savePressed() | 106 | void ConfigTab::savePressed() |
103 | { | 107 | { |
104 | cfg->setGroup(remotes->currentText()); | 108 | cfg->setGroup(remotes->currentText()); |
105 | ButtonDialog *bd = new ButtonDialog(this, "BD", true, 0); | 109 | ButtonDialog *bd = new ButtonDialog(this, "BD", true, 0); |
106 | if( bd->exec() == 1) | 110 | if( bd->exec() == 1) |
107 | { | 111 | { |
108 | printf("%s\n", bd->getList().join(" ").latin1()); | 112 | printf("%s\n", bd->getList().join(" ").latin1()); |
109 | } | 113 | } |
110 | } | 114 | } |
111 | */ | 115 | */ |
112 | 116 | ||
113 | void ConfigTab::newPressed() | 117 | void ConfigTab::newPressed() |
114 | { | 118 | { |
115 | QStringList list; | 119 | QStringList list; |
116 | cfg->setGroup("Remotes"); | 120 | QString newname = topGroupConf->getRemotesText(); |
117 | list=cfg->readListEntry("remoteList", ','); | 121 | if(newname=="Remotes") |
118 | list+=topGroupConf->getRemotesText(); | 122 | QMessageBox::warning(this, tr("Error"), tr("The name 'Remotes' is not allowed"), QMessageBox::Ok, QMessageBox::NoButton); |
119 | cfg->writeEntry("remoteList", list, ','); | 123 | else { |
120 | cfg->setGroup(topGroupConf->getRemotesText()); | 124 | cfg->setGroup("Remotes"); |
121 | topGroupConf->updateRemotes(QStringList(topGroupConf->getRemotesText()) ); | 125 | list=cfg->readListEntry("remoteList", ','); |
122 | cfg->write(); | 126 | if(list.findIndex(newname) == -1) { |
123 | emit remotesChanged(); | 127 | list+=newname; |
124 | remoteSelected(topGroupConf->getRemotesText()); | 128 | cfg->writeEntry("remoteList", list, ','); |
129 | cfg->setGroup(newname); | ||
130 | topGroupConf->updateRemotes(QStringList(newname) ); | ||
131 | cfg->write(); | ||
132 | emit remotesChanged(); | ||
133 | remoteSelected(newname); | ||
134 | } | ||
135 | else { | ||
136 | QMessageBox::warning(this, tr("Already exists"), tr("A layout named %1\nalready exists").arg(newname), QMessageBox::Ok, QMessageBox::NoButton); | ||
137 | // Re-select existing layout | ||
138 | remoteSelected(newname); | ||
139 | } | ||
140 | } | ||
125 | } | 141 | } |
126 | 142 | ||
127 | void ConfigTab::remoteSelected(const QString &string) | 143 | void ConfigTab::remoteSelected(const QString &string) |
128 | { | 144 | { |
129 | cfg->setGroup(string); | 145 | cfg->setGroup(string); |
130 | const QObject *obj; | 146 | const QObject *obj; |
131 | 147 | ||
132 | const QObjectList *objList = topGroupConf->children(); | 148 | const QObjectList *objList = topGroupConf->children(); |
133 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) | 149 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) |
134 | { | 150 | { |
135 | if(obj->inherits("QPushButton")) | 151 | if(obj->inherits("QPushButton")) |
136 | { | 152 | { |
137 | if(cfg->hasKey((QString)obj->name()+"Label")) | 153 | if(cfg->hasKey((QString)obj->name()+"Label")) |
138 | { | 154 | { |
139 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); | 155 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); |
140 | } | 156 | } |
141 | else | 157 | else |
142 | { | 158 | { |
143 | cfg->setGroup("Default"); | 159 | cfg->setGroup("Default"); |
144 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); | 160 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); |
145 | cfg->setGroup(string); | 161 | cfg->setGroup(string); |
146 | } | 162 | } |
147 | } | 163 | } |
148 | } | 164 | } |
149 | 165 | ||
150 | objList = dvdGroupConf->children(); | 166 | objList = dvdGroupConf->children(); |
151 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) | 167 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) |
152 | { | 168 | { |
153 | if(obj->inherits("QPushButton")) | 169 | if(obj->inherits("QPushButton")) |
154 | { | 170 | { |
155 | if(cfg->hasKey((QString)obj->name()+"Label")) | 171 | if(cfg->hasKey((QString)obj->name()+"Label")) |
156 | { | 172 | { |
157 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); | 173 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); |
158 | } | 174 | } |
159 | else | 175 | else |
160 | { | 176 | { |
161 | cfg->setGroup("Default"); | 177 | cfg->setGroup("Default"); |
162 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); | 178 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); |
163 | cfg->setGroup(string); | 179 | cfg->setGroup(string); |
164 | } | 180 | } |
165 | } | 181 | } |
166 | } | 182 | } |
167 | 183 | ||
168 | objList = vcrGroupConf->children(); | 184 | objList = vcrGroupConf->children(); |
169 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) | 185 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) |
170 | { | 186 | { |
171 | if(obj->inherits("QPushButton")) | 187 | if(obj->inherits("QPushButton")) |
172 | { | 188 | { |
173 | if(cfg->hasKey((QString)obj->name()+"Label")) | 189 | if(cfg->hasKey((QString)obj->name()+"Label")) |
174 | { | 190 | { |
175 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); | 191 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); |
176 | } | 192 | } |
177 | else | 193 | else |
178 | { | 194 | { |
179 | cfg->setGroup("Default"); | 195 | cfg->setGroup("Default"); |
180 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); | 196 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); |
181 | cfg->setGroup(string); | 197 | cfg->setGroup(string); |
182 | } | 198 | } |
183 | } | 199 | } |
184 | } | 200 | } |
185 | 201 | ||
186 | objList = channelGroupConf->children(); | 202 | objList = channelGroupConf->children(); |
187 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) | 203 | for(obj = ((QObjectList *)objList)->first(); obj != 0; obj=((QObjectList *)objList)->next()) |
188 | { | 204 | { |
189 | if(obj->inherits("QPushButton")) | 205 | if(obj->inherits("QPushButton")) |
190 | { | 206 | { |
191 | if(cfg->hasKey((QString)obj->name()+"Label")) | 207 | if(cfg->hasKey((QString)obj->name()+"Label")) |
192 | { | 208 | { |
193 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); | 209 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); |
194 | } | 210 | } |
195 | else | 211 | else |
196 | { | 212 | { |
197 | cfg->setGroup("Default"); | 213 | cfg->setGroup("Default"); |
198 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); | 214 | ((QPushButton *)obj)->setText(cfg->readEntry((QString)obj->name()+"Label") ); |
199 | cfg->setGroup(string); | 215 | cfg->setGroup(string); |
200 | } | 216 | } |
201 | } | 217 | } |
202 | } | 218 | } |
203 | } | 219 | } |
204 | 220 | ||
205 | void ConfigTab::buttonPressed() | 221 | void ConfigTab::buttonPressed() |
206 | { | 222 | { |
207 | const QObject *button = sender(); | 223 | const QObject *button = sender(); |
208 | QString string = button->name(); | 224 | QString string = button->name(); |
209 | 225 | ||
210 | ButtonDialog *bd = new ButtonDialog(((QPushButton *)button)->text(), this, "BD", true, 0); | 226 | QString action = cfg->readEntry(string); |
227 | |||
228 | ButtonDialog *bd = new ButtonDialog(((QPushButton *)button)->text(), action, this, "BD", true, 0); | ||
211 | if( bd->exec() == 1) | 229 | if( bd->exec() == 1) |
212 | { | 230 | { |
213 | cfg->writeEntry(string, bd->getList().join(" ").latin1()); | 231 | cfg->writeEntry(string, bd->getAction().latin1()); |
214 | cfg->writeEntry(string+"Label", bd->getLabel().latin1()); | 232 | cfg->writeEntry(string+"Label", bd->getLabel().latin1()); |
233 | cfg->write(); | ||
234 | ((QPushButton *)button)->setText(bd->getLabel()); | ||
215 | } | 235 | } |
216 | cfg->write(); | 236 | |
217 | ((QPushButton *)button)->setText(bd->getLabel()); | 237 | delete bd; |
218 | } | 238 | } |