Bugfixes and Keysets
[pierogi] / forms / pirpowersearchform.cpp
1 #include "pirpowersearchform.h"
2 #include "ui_pirpowersearchform.h"
3
4 #include "mainwindow.h"
5 #include "pirkeysetmanager.h"
6
7 #include <QTimer>
8 #include <QMutex>
9
10 // Debugging includes:
11 #include <iostream>
12
13 // Check if a command is running:
14 extern bool commandInFlight;
15 extern QMutex commandIFMutex;
16
17 /*
18 PIRPowerSearchForm::PIRPowerSearchForm(QWidget *parent) :
19   QWidget(parent),
20   ui(new Ui::PIRPowerSearchForm)
21 {
22   ui->setupUi(this);
23 }
24 */
25
26
27 PIRPowerSearchForm::PIRPowerSearchForm(
28   MainWindow *mw)
29   : QWidget(0),
30     ui(new Ui::PIRPowerSearchForm),
31     mainWindow(mw),
32     advanceTimer(0)
33 {
34   ui->setupUi(this);
35 }
36
37
38 PIRPowerSearchForm::~PIRPowerSearchForm()
39 {
40   delete ui;
41   if (advanceTimer) delete advanceTimer;
42 }
43
44 void PIRPowerSearchForm::setKeysetName(
45   QString name)
46 {
47   ui->keysetNameLabel->setText(name);
48 }
49
50 void PIRPowerSearchForm::on_stepBackwardButton_pressed()
51 {
52   if (advanceTimer)
53   {
54     delete advanceTimer;
55     advanceTimer = 0;
56     mainWindow->stopRepeating();
57   }
58   else if (mainWindow->selectPrevKeyset())
59   {
60     mainWindow->startRepeating(Power_Key);
61   }
62 }
63
64 void PIRPowerSearchForm::on_stepBackwardButton_released()
65 {
66   mainWindow->stopRepeating();
67 }
68
69 void PIRPowerSearchForm::on_stepForwardKey_pressed()
70 {
71   if (advanceTimer)
72   {
73     delete advanceTimer;
74     advanceTimer = 0;
75     mainWindow->stopRepeating();
76   }
77   else if (mainWindow->selectNextKeyset())
78   {
79     mainWindow->startRepeating(Power_Key);
80   }
81 }
82
83 void PIRPowerSearchForm::on_stepForwardKey_released()
84 {
85   mainWindow->stopRepeating();
86 }
87
88 void PIRPowerSearchForm::on_fastBackwardButton_pressed()
89 {
90   if (advanceTimer)
91   {
92     delete advanceTimer;
93     advanceTimer = 0;
94     mainWindow->stopRepeating();
95     return;
96   }
97
98   if (!mainWindow->selectPrevKeyset())
99   {
100     return;
101   }
102
103   mainWindow->startRepeating(Power_Key);
104
105   advanceTimer = new QTimer();
106   connect(advanceTimer, SIGNAL(timeout()), this, SLOT(gotoPrevKeyset()));
107   advanceTimer->start(50);
108 }
109
110 void PIRPowerSearchForm::on_fastBackwardButton_released()
111 {
112   delete advanceTimer;
113   advanceTimer = 0;
114   mainWindow->stopRepeating();
115 }
116
117 void PIRPowerSearchForm::on_fastForwardButton_pressed()
118 {
119   if (advanceTimer)
120   {
121     delete advanceTimer;
122     advanceTimer = 0;
123     mainWindow->stopRepeating();
124     return;
125   }
126
127   if (!mainWindow->selectNextKeyset())
128   {
129     return;
130   }
131
132   mainWindow->startRepeating(Power_Key);
133
134   advanceTimer = new QTimer();
135   connect(advanceTimer, SIGNAL(timeout()), this, SLOT(gotoNextKeyset()));
136   advanceTimer->start(50);
137 }
138
139
140 void PIRPowerSearchForm::on_fastForwardButton_released()
141 {
142   delete advanceTimer;
143   advanceTimer = 0;
144   mainWindow->stopRepeating();
145 }
146
147
148 void PIRPowerSearchForm::gotoPrevKeyset()
149 {
150   if (checkMutex())
151   {
152     mainWindow->stopRepeating();
153     return;
154   }
155
156   if (mainWindow->selectPrevKeyset())
157   {
158     mainWindow->startRepeating(Power_Key);
159   }
160   else
161   {
162     if (advanceTimer) delete advanceTimer;
163     advanceTimer = 0;
164   }
165 }
166
167
168 void PIRPowerSearchForm::gotoNextKeyset()
169 {
170   if (checkMutex())
171   {
172     mainWindow->stopRepeating();
173     return;
174   }
175
176   if (mainWindow->selectNextKeyset())
177   {
178     mainWindow->startRepeating(Power_Key);
179   }
180   else
181   {
182     if (advanceTimer) delete advanceTimer;
183     advanceTimer = 0;
184   }
185 }
186
187
188 bool PIRPowerSearchForm::checkMutex()
189 {
190   QMutexLocker locker(&commandIFMutex);
191   return commandInFlight;
192 }
193
194
195 void PIRPowerSearchForm::on_autoSearchButton_pressed()
196 {
197   if (advanceTimer)
198   {
199     delete advanceTimer;
200     advanceTimer = 0;
201     mainWindow->stopRepeating();
202     return;
203   }
204
205   if (mainWindow->selectFirstKeyset())
206   {
207     advanceTimer = new QTimer();
208     connect(advanceTimer, SIGNAL(timeout()), this, SLOT(gotoNextKeyset()));
209     advanceTimer->start(50);
210   }
211 }
212
213
214 void PIRPowerSearchForm::on_pauseSearchButton_pressed()
215 {
216   if (advanceTimer)
217   {
218     delete advanceTimer;
219     advanceTimer = 0;
220     mainWindow->stopRepeating();
221     return;
222   }
223
224   advanceTimer = new QTimer();
225   connect(advanceTimer, SIGNAL(timeout()), this, SLOT(gotoNextKeyset()));
226   advanceTimer->start(50);
227 }
228
229
230 void PIRPowerSearchForm::on_editKeysetButton_clicked()
231 {
232   if (advanceTimer)
233   {
234     delete advanceTimer;
235     advanceTimer = 0;
236     mainWindow->stopRepeating();
237   }
238
239   mainWindow->openCurrentKeysetDialog();
240 }