1 #include "pirselectkeysetform.h"
2 #include "ui_pirselectkeysetform.h"
4 //#include <QListWidget>
5 //#include <QListWidgetItem>
9 #include "mainwindow.h"
10 #include "pirkeysetwidgetitem.h"
11 #include "dialogs/pireditkeysetdialog.h"
16 extern PIRMakeMgr makeManager;
18 PIRSelectKeysetForm::PIRSelectKeysetForm(
20 : QWidget(mw), // is this right?
21 ui(new Ui::PIRSelectKeysetForm),
24 showOnlyFavorites(false),
29 // Make sure the user can only select one keyset at a time:
30 ui->keysetListWidget->setSelectionMode(
31 QAbstractItemView::SingleSelection);
33 // Don't want to start with the line editor visible:
34 ui->searchStringLineEdit->hide();
35 ui->searchStringLineEdit->lower();
36 ui->ssClosePushButton->hide();
38 // Set some initial flags:
39 setAttribute(Qt::WA_Maemo5StackedWindow);
40 setWindowFlags(windowFlags() | Qt::Window);
42 // push the list of makers into the make combo box:
43 makeManager.populateComboBox(ui->makeComboBox);
45 // Connection telling main window that keyset has been selected:
48 SIGNAL(itemActivated(QListWidgetItem *)),
50 SLOT(keysetSelectionChanged(QListWidgetItem *)),
51 Qt::QueuedConnection);
53 // Connection used to filter keyset list:
56 SIGNAL(currentIndexChanged(int)),
58 SLOT(filterListByMake(int)),
59 Qt::QueuedConnection);
61 // Open editor dialog for indivual keysets:
64 SIGNAL(itemClicked(QListWidgetItem *)),
66 SLOT(openKeysetDialog(QListWidgetItem *)),
67 Qt::QueuedConnection);
69 // Go ahead and construct the dialog window right now:
70 editDialog = new PIREditKeysetDialog(mainWindow);
74 PIRSelectKeysetForm::~PIRSelectKeysetForm()
81 void PIRSelectKeysetForm::addNameToList(
86 ui->keysetListWidget->addItem(new PIRKeysetWidgetItem(name, index, make));
91 void PIRSelectKeysetForm::addWidgetItem(
92 PIRKeysetWidgetItem *kwi)
94 ui->keysetListWidget->addItem(kwi);
98 QListWidget *PIRSelectKeysetForm::getKeysetListWidget()
100 return ui->keysetListWidget;
104 bool PIRSelectKeysetForm::selectNextKeyset()
106 int currentRow = ui->keysetListWidget->currentRow();
108 // If we're at the end of the list, give up:
109 if (currentRow >= (ui->keysetListWidget->count() -1))
114 ui->keysetListWidget->setCurrentRow(
116 QItemSelectionModel::ClearAndSelect);
118 mainWindow->keysetSelectionChanged(
119 ui->keysetListWidget->currentItem());
125 bool PIRSelectKeysetForm::selectPrevKeyset()
127 int currentRow = ui->keysetListWidget->currentRow();
129 // If we're at the beginning of the list, give up:
135 ui->keysetListWidget->setCurrentRow(
137 QItemSelectionModel::ClearAndSelect);
139 mainWindow->keysetSelectionChanged(
140 ui->keysetListWidget->currentItem());
146 bool PIRSelectKeysetForm::selectFirstKeyset()
148 if (ui->keysetListWidget->count() == 0)
153 if (ui->keysetListWidget->currentRow() != 0)
155 ui->keysetListWidget->setCurrentRow(
156 0, QItemSelectionModel::ClearAndSelect);
158 mainWindow->keysetSelectionChanged(
159 ui->keysetListWidget->currentItem());
166 QString PIRSelectKeysetForm::getCurrentKeysetName()
168 QListWidgetItem *item = ui->keysetListWidget->currentItem();
181 QString PIRSelectKeysetForm::getKeysetName(
184 int count = ui->keysetListWidget->count();
186 if (count == 0) return "";
188 QListWidgetItem *localItem;
189 PIRKeysetWidgetItem *kwi;
194 localItem = ui->keysetListWidget->item(row);
198 kwi = dynamic_cast<PIRKeysetWidgetItem *> (localItem);
200 if (kwi->getID() == id)
213 void PIRSelectKeysetForm::keyPressEvent(
216 ui->searchStringLineEdit->show();
217 ui->searchStringLineEdit->raise();
218 ui->ssClosePushButton->show();
220 ui->searchStringLineEdit->setText(event->text());
221 ui->searchStringLineEdit->setFocus();
225 void PIRSelectKeysetForm::on_searchStringLineEdit_textChanged(
228 filterListByString(arg1);
232 void PIRSelectKeysetForm::on_ssClosePushButton_clicked()
234 ui->searchStringLineEdit->hide();
235 ui->searchStringLineEdit->lower();
236 ui->ssClosePushButton->hide();
237 ui->searchStringLineEdit->clear();
241 void PIRSelectKeysetForm::filterListByMake(
244 currentMake = (PIRMakeName) make;
249 void PIRSelectKeysetForm::filterListByString(
252 searchString = string;
257 void PIRSelectKeysetForm::refilterList()
260 int count = ui->keysetListWidget->count();
261 PIRKeysetWidgetItem *item;
262 while (index < count)
264 item = dynamic_cast<PIRKeysetWidgetItem *>(
265 ui->keysetListWidget->item(index));
267 // Does the keylist have the required make?
268 if ((currentMake == Any_Make) || (item->getMake() == currentMake))
270 // If required, is the keyset a favorite?
271 if (!showOnlyFavorites || (item->isFavorite()))
273 // Does this keylist match the search string?
274 if ( searchString.isEmpty()
275 || item->text().contains(searchString, Qt::CaseInsensitive))
277 // Yes, we can show this keylist:
278 item->setHidden(false);
282 item->setHidden(true);
287 item->setHidden(true);
292 item->setHidden(true);
300 void PIRSelectKeysetForm::openKeysetDialog(
301 QListWidgetItem *item)
303 PIRKeysetWidgetItem *kwi = dynamic_cast<PIRKeysetWidgetItem *>(item);
305 editDialog->setupDialog(kwi);
311 void PIRSelectKeysetForm::openCurrentKeysetDialog()
313 PIRKeysetWidgetItem *kwi = dynamic_cast<PIRKeysetWidgetItem *> (
314 ui->keysetListWidget->currentItem());
316 editDialog->setupDialog(kwi);
322 void PIRSelectKeysetForm::on_showFavoritesCheckBox_toggled(bool checked)
324 showOnlyFavorites = checked;
329 void PIRSelectKeysetForm::selectKeyset(
330 unsigned int targetID)
332 int count = ui->keysetListWidget->count();
334 if (count == 0) return;
336 QListWidgetItem *localItem;
337 PIRKeysetWidgetItem *kwi;
342 localItem = ui->keysetListWidget->item(row);
346 kwi = dynamic_cast<PIRKeysetWidgetItem *> (localItem);
348 if (kwi->getID() == targetID)
350 ui->keysetListWidget->setCurrentRow(
351 row, QItemSelectionModel::ClearAndSelect);
353 mainWindow->keysetSelectionChanged(
354 ui->keysetListWidget->currentItem());
365 void PIRSelectKeysetForm::populateKeysetComboBox(
368 int count = ui->keysetListWidget->count();
370 if (count == 0) return;
372 QListWidgetItem *localItem;
373 PIRKeysetWidgetItem *kwi;
378 localItem = ui->keysetListWidget->item(row);
382 kwi = dynamic_cast<PIRKeysetWidgetItem *> (localItem);
386 QVariant(kwi->getID()));