OSDN Git Service

[UI][Qt] Fix some memory leaks.
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / dock_disks.cpp
1
2 #include <QApplication>
3 #include <QVBoxLayout>
4 #include <QLabel>
5 #include <QPixmap>
6 #include <QDockWidget>
7
8 #include "dock_disks.h"
9
10 #define NEW_LABELS(lim,_l,name,_p,mes,zero) {   \
11                 QString tmps, tmpss;                                    \
12                 for(int i = 0; i < lim; i++) {                  \
13                         if(zero) {                                                              \
14                                 tmpss.setNum(i);                                        \
15                         } else {                                                                \
16                                 tmpss.setNum(i + 1);                            \
17                         }                                                                               \
18                         tmps = name;                                                    \
19                         tmps = tmps + tmpss;                                    \
20                         _l[i] = new QLabel(tmps, this);                 \
21                         _p[i] = new QLabel(mes, this);                  \
22                         _l[i]->setVisible(false);                               \
23                         _p[i]->setVisible(false);                               \
24                         VBox->addWidget(_l[i]);                                 \
25                         VBox->addWidget(_p[i]);                                 \
26                 }                                                                                       \
27         }
28
29 #define RELEASE_LABELS(lim,_l,_p)       {                       \
30                 for(int i = 0; i < lim; i++) {                  \
31                         if(_l[i] != NULL) delete _l[i];         \
32                         if(_p[i] != NULL) delete _p[i];         \
33                         _l[i] = NULL;                                           \
34                         _p[i] = NULL;                                           \
35                 }                                                                               \
36         }
37                         
38 CSP_DockDisks::CSP_DockDisks(QWidget *parent, Qt::WindowFlags flags) :  QDockWidget(parent, flags)
39 {
40         QString ns, ms;
41         QWidget *Widget = new QWidget(this);
42         VBox = new QVBoxLayout(Widget);
43         VBox->setAlignment(Qt::AlignTop);
44         
45         ns = QApplication::translate("DockDisks", "Binary", 0);
46         ms =  QApplication::translate("DockDisks", "*EMPTY*", 0);
47         NEW_LABELS(8,lBinary,ns,pBinary,ms,false);
48         
49         ns = QApplication::translate("DockDisks", "FD", 0);
50         ms =  QApplication::translate("DockDisks", "     *EMPTY*      ", 0);
51         NEW_LABELS(8,lFloppyDisk,ns,pFloppyDisk,ms,true);
52         
53         ns = QApplication::translate("DockDisks", "CMT", 0);
54         ms =  QApplication::translate("DockDisks", "     *EJECT*      ", 0);
55         NEW_LABELS(2,lCMT,ns,pCMT,ms,false);
56         
57         ns = QApplication::translate("DockDisks", "Bubble", 0);
58         ms =  QApplication::translate("DockDisks", "*EMPTY*", 0);
59         NEW_LABELS(8,lBubble,ns,pBubble,ms,false);
60         
61         ns = QApplication::translate("DockDisks", "Cartridge", 0);
62         ms =  QApplication::translate("DockDisks", "*EMPTY*", 0);
63         NEW_LABELS(8,lCart,ns,pCart,ms,false);
64         
65         ns = QApplication::translate("DockDisks", "Quick Disk", 0);
66         ms =  QApplication::translate("DockDisks", "*EMPTY*", 0);
67         NEW_LABELS(8,lQuickDisk,ns,pQuickDisk,ms,false);
68
69         ns = QApplication::translate("DockDisks", "CD", 0);
70         ms =  QApplication::translate("DockDisks", "*EJECT*", 0);
71         NEW_LABELS(2,lCompactDisc,ns,pCompactDisc,ms,false);
72         
73         ns = QApplication::translate("DockDisks", "HDD", 0);
74         ms =  QApplication::translate("DockDisks", "*EMPTY*", 0);
75         NEW_LABELS(8,lHardDisk,ns,pHardDisk,ms,true);
76         
77         ns = QApplication::translate("DockDisks", "Laser Disc", 0);
78         ms =  QApplication::translate("DockDisks", "*EMPTY*", 0);
79         NEW_LABELS(2,lLaserDisc,ns,pLaserDisc,ms,false);
80         
81         Widget->setLayout(VBox);
82         this->setWidget(Widget);
83 }
84
85
86                         
87 CSP_DockDisks::~CSP_DockDisks()
88 {
89         RELEASE_LABELS(8,lBinary,pBinary);
90         RELEASE_LABELS(8,lFloppyDisk,pFloppyDisk);
91         RELEASE_LABELS(2,lCMT,pCMT);
92         RELEASE_LABELS(8,lBubble,pBubble);
93         RELEASE_LABELS(8,lCart,pCart);
94         RELEASE_LABELS(8,lQuickDisk,pQuickDisk);
95         RELEASE_LABELS(2,lCompactDisc,pCompactDisc);
96         RELEASE_LABELS(8,lHardDisk,pHardDisk);
97         RELEASE_LABELS(2,lLaserDisc,pLaserDisc);
98 }
99
100 void CSP_DockDisks::updateLabel(int dom, int localnum, QString str)
101 {
102         switch(dom) {
103         case CSP_DockDisks_Domain_Binary:
104                 if((localnum < 8) && (localnum >= 0)) {
105                         lBinary[localnum]->setText(str);
106                 }
107                 break;
108         case CSP_DockDisks_Domain_Bubble:
109                 if((localnum < 8) && (localnum >= 0)) {
110                         lBubble[localnum]->setText(str);
111                 }
112                 break;
113         case CSP_DockDisks_Domain_Cart:
114                 if((localnum < 8) && (localnum >= 0)) {
115                         lCart[localnum]->setText(str);
116                 }
117                 break;
118         case CSP_DockDisks_Domain_CMT:
119                 if((localnum < 2) && (localnum >= 0)) {
120                         lCMT[localnum]->setText(str);
121                 }
122                 break;
123         case CSP_DockDisks_Domain_CD:
124                 if((localnum < 2) && (localnum >= 0)) {
125                         lCompactDisc[localnum]->setText(str);
126                 }
127                 break;
128         case CSP_DockDisks_Domain_FD:
129                 if((localnum < 8) && (localnum >= 0)) {
130                         lFloppyDisk[localnum]->setText(str);
131                 }
132                 break;
133         case CSP_DockDisks_Domain_HD:
134                 if((localnum < 8) && (localnum >= 0)) {
135                         lHardDisk[localnum]->setText(str);
136                 }
137                 break;
138         case CSP_DockDisks_Domain_LD:
139                 if((localnum < 2) && (localnum >= 0)) {
140                         lLaserDisc[localnum]->setText(str);
141                 }
142                 break;
143         case CSP_DockDisks_Domain_QD:
144                 if((localnum < 8) && (localnum >= 0)) {
145                         lQuickDisk[localnum]->setText(str);
146                 }
147                 break;
148         default:
149                 break;
150         }
151 }
152
153 void CSP_DockDisks::updateMessage(int dom, int localnum, QString str)
154 {
155         switch(dom) {
156         case CSP_DockDisks_Domain_Binary:
157                 if((localnum < 8) && (localnum >= 0)) {
158                         pBinary[localnum]->setText(str);
159                 }
160                 break;
161         case CSP_DockDisks_Domain_Bubble:
162                 if((localnum < 8) && (localnum >= 0)) {
163                         pBubble[localnum]->setText(str);
164                 }
165                 break;
166         case CSP_DockDisks_Domain_Cart:
167                 if((localnum < 8) && (localnum >= 0)) {
168                         pCart[localnum]->setText(str);
169                 }
170                 break;
171         case CSP_DockDisks_Domain_CMT:
172                 if((localnum < 2) && (localnum >= 0)) {
173                         pCMT[localnum]->setText(str);
174                 }
175                 break;
176         case CSP_DockDisks_Domain_CD:
177                 if((localnum < 2) && (localnum >= 0)) {
178                         pCompactDisc[localnum]->setText(str);
179                 }
180                 break;
181         case CSP_DockDisks_Domain_FD:
182                 if((localnum < 8) && (localnum >= 0)) {
183                         pFloppyDisk[localnum]->setText(str);
184                 }
185                 break;
186         case CSP_DockDisks_Domain_HD:
187                 if((localnum < 8) && (localnum >= 0)) {
188                         pHardDisk[localnum]->setText(str);
189                 }
190                 break;
191         case CSP_DockDisks_Domain_LD:
192                 if((localnum < 2) && (localnum >= 0)) {
193                         pLaserDisc[localnum]->setText(str);
194                 }
195                 break;
196         case CSP_DockDisks_Domain_QD:
197                 if((localnum < 8) && (localnum >= 0)) {
198                         pQuickDisk[localnum]->setText(str);
199                 }
200                 break;
201         default:
202                 break;
203         }
204 }
205
206 void CSP_DockDisks::setVisible(int dom, int localnum, bool enabled)
207 {
208         switch(dom) {
209         case CSP_DockDisks_Domain_Binary:
210                 if((localnum < 8) && (localnum >= 0)) {
211                         lBinary[localnum]->setVisible(enabled);
212                         pBinary[localnum]->setVisible(enabled);
213                 }
214                 break;
215         case CSP_DockDisks_Domain_Bubble:
216                 if((localnum < 8) && (localnum >= 0)) {
217                         lBubble[localnum]->setVisible(enabled);
218                         pBubble[localnum]->setVisible(enabled);
219                 }
220                 break;
221         case CSP_DockDisks_Domain_Cart:
222                 if((localnum < 8) && (localnum >= 0)) {
223                         lCart[localnum]->setVisible(enabled);
224                         pCart[localnum]->setVisible(enabled);
225                 }
226                 break;
227         case CSP_DockDisks_Domain_CMT:
228                 if((localnum < 2) && (localnum >= 0)) {
229                         lCMT[localnum]->setVisible(enabled);
230                         pCMT[localnum]->setVisible(enabled);
231                 }
232                 break;
233         case CSP_DockDisks_Domain_CD:
234                 if((localnum < 2) && (localnum >= 0)) {
235                         lCompactDisc[localnum]->setVisible(enabled);
236                         pCompactDisc[localnum]->setVisible(enabled);
237                 }
238                 break;
239         case CSP_DockDisks_Domain_FD:
240                 if((localnum < 8) && (localnum >= 0)) {
241                         lFloppyDisk[localnum]->setVisible(enabled);
242                         pFloppyDisk[localnum]->setVisible(enabled);
243                 }
244                 break;
245         case CSP_DockDisks_Domain_HD:
246                 if((localnum < 8) && (localnum >= 0)) {
247                         lHardDisk[localnum]->setVisible(enabled);
248                         pHardDisk[localnum]->setVisible(enabled);
249                 }
250                 break;
251         case CSP_DockDisks_Domain_LD:
252                 if((localnum < 2) && (localnum >= 0)) {
253                         lLaserDisc[localnum]->setVisible(enabled);
254                         pLaserDisc[localnum]->setVisible(enabled);
255                 }
256                 break;
257         case CSP_DockDisks_Domain_QD:
258                 if((localnum < 8) && (localnum >= 0)) {
259                         lQuickDisk[localnum]->setVisible(enabled);
260                         pQuickDisk[localnum]->setVisible(enabled);
261                 }
262                 break;
263         default:
264                 break;
265         }
266 }
267
268 void CSP_DockDisks::setPixmap(int dom, int localnum, const QPixmap &pix)
269 {
270         switch(dom) {
271         case CSP_DockDisks_Domain_Binary:
272                 if((localnum < 8) && (localnum >= 0)) {
273                         pBinary[localnum]->setPixmap(pix);
274                 }
275                 break;
276         case CSP_DockDisks_Domain_Bubble:
277                 if((localnum < 8) && (localnum >= 0)) {
278                         pBubble[localnum]->setPixmap(pix);
279                 }
280                 break;
281         case CSP_DockDisks_Domain_Cart:
282                 if((localnum < 8) && (localnum >= 0)) {
283                         pCart[localnum]->setPixmap(pix);
284                 }
285                 break;
286         case CSP_DockDisks_Domain_CMT:
287                 if((localnum < 2) && (localnum >= 0)) {
288                         pCMT[localnum]->setPixmap(pix);
289                 }
290                 break;
291         case CSP_DockDisks_Domain_CD:
292                 if((localnum < 2) && (localnum >= 0)) {
293                         pCompactDisc[localnum]->setPixmap(pix);
294                 }
295                 break;
296         case CSP_DockDisks_Domain_FD:
297                 if((localnum < 8) && (localnum >= 0)) {
298                         pFloppyDisk[localnum]->setPixmap(pix);
299                 }
300                 break;
301         case CSP_DockDisks_Domain_HD:
302                 if((localnum < 8) && (localnum >= 0)) {
303                         pHardDisk[localnum]->setPixmap(pix);
304                 }
305                 break;
306         case CSP_DockDisks_Domain_LD:
307                 if((localnum < 2) && (localnum >= 0)) {
308                         pLaserDisc[localnum]->setPixmap(pix);
309                 }
310                 break;
311         case CSP_DockDisks_Domain_QD:
312                 if((localnum < 8) && (localnum >= 0)) {
313                         pQuickDisk[localnum]->setPixmap(pix);
314                 }
315                 break;
316         default:
317                 break;
318         }
319 }