X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=mainwindow.cpp;h=d7e9921c41e8a73d95dfefe48662f0c3f708fecb;hb=04d45dab5c6b32e9214fa21b7ade432da95c8a98;hp=cbc276bc379e80ae0c24602d472175cff0b31231;hpb=946845241309761b49151cc3c7a597dc4b969961;p=pierogi diff --git a/mainwindow.cpp b/mainwindow.cpp index cbc276b..d7e9921 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -4,17 +4,22 @@ #include #include #include +//#include #include -#include +#include "pirkeysetmetadata.h" #include "pirkeysetwidgetitem.h" #include "pirselectkeysetform.h" -#include "pirsecondaryform.h" +#include "pirselectdeviceform.h" +#include "pirpanelselectionform.h" +#include "pirpreferencesform.h" #include "pirdocumentationform.h" #include "piraboutform.h" #include "pirkeysetmanager.h" +#include "pirpanelmanager.h" //#define DEBUGGING +//#include // Some ugly globals used for thread communications: @@ -27,6 +32,7 @@ QMutex commandIFMutex; bool stopRepeatingFlag = false; QMutex stopRepeatingMutex; + extern PIRMakeMgr makeManager; @@ -34,30 +40,38 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), selectKeysetForm(0), - secondaryForm(0), + selectDeviceForm(0), + panelSelectionForm(0), + preferencesForm(0), documentationForm(0), aboutForm(0), - currentKeyset(0) + currentKeyset(1) // Zero is not a valid keyset any more { ui->setupUi(this); // Make this a Maemo 5 stacked widget: setAttribute(Qt::WA_Maemo5StackedWindow); - // Collect the keysets: + // Create the managers: myKeysets = new PIRKeysetManager(); + myPanels = new PIRPanelManager(this); + + // Construct the forms: + panelSelectionForm = new PIRPanelSelectionForm(this); + myPanels->setupPanels(panelSelectionForm); - // Set up the keyset selection window: selectKeysetForm = new PIRSelectKeysetForm(this); + myKeysets->populateSelectionWidget(selectKeysetForm); - // Set up the secondary buttons window: - secondaryForm = new PIRSecondaryForm(this); + selectDeviceForm = new PIRSelectDeviceForm(this); + PIRKeysetMetaData::populateDevices(selectDeviceForm); - myKeysets->populateGuiWidget(selectKeysetForm); + preferencesForm = new PIRPreferencesForm(this, myKeysets); // Remember any favorites the user has already set: populateFavorites(); + // Retrieve the user's preferences: QSettings settings("pietrzak.org", "Pierogi"); if (settings.contains("currentKeysetName")) { @@ -65,31 +79,68 @@ MainWindow::MainWindow(QWidget *parent) settings.value("currentKeysetMake").toString(), settings.value("currentKeysetName").toString(), currentKeyset); -// currentKeyset = settings.value("currentKeyset").toInt(); } enableButtons(); + QListWidget *fkw = myPanels->getFavoritesListWidget(); + connect( - ui->favoriteKeysetsWidget, + fkw, SIGNAL(itemActivated(QListWidgetItem *)), this, SLOT(keysetSelectionChanged(QListWidgetItem *)), Qt::QueuedConnection); - // Make sure the two selection lists don't show different selections: + // Make sure the three selection lists don't show different selections: QListWidget *klw = selectKeysetForm->getKeysetListWidget(); + QListWidget *dlw = selectDeviceForm->getDeviceListWidget(); + + // favorites -> keyset name connect( - ui->favoriteKeysetsWidget, + fkw, SIGNAL(itemActivated(QListWidgetItem *)), klw, SLOT(clearSelection()), Qt::QueuedConnection); + // favorites -> device name + connect( + fkw, + SIGNAL(itemActivated(QListWidgetItem *)), + dlw, + SLOT(clearSelection()), + Qt::QueuedConnection); + + // keyset name -> favorites connect( klw, SIGNAL(itemActivated(QListWidgetItem *)), - ui->favoriteKeysetsWidget, + fkw, + SLOT(clearSelection()), + Qt::QueuedConnection); + + // device name -> favorites + connect( + dlw, + SIGNAL(itemActivated(QListWidgetItem *)), + fkw, + SLOT(clearSelection()), + Qt::QueuedConnection); + + // keyset name -> device name + connect( + klw, + SIGNAL(itemActivated(QListWidgetItem *)), + dlw, + SLOT(clearSelection()), + Qt::QueuedConnection); + + // device name -> keyset name + connect( + dlw, + SIGNAL(itemActivated(QListWidgetItem *)), + klw, SLOT(clearSelection()), Qt::QueuedConnection); @@ -114,6 +165,8 @@ MainWindow::~MainWindow() { delete myKeysets; if (selectKeysetForm) delete selectKeysetForm; + if (selectDeviceForm) delete selectDeviceForm; + if (panelSelectionForm) delete panelSelectionForm; if (documentationForm) delete documentationForm; if (aboutForm) delete aboutForm; delete ui; @@ -180,685 +233,80 @@ void MainWindow::enableButtons() // Just to be sure, check to see if the keyset has been populated: myKeysets->populateKeyset(this, currentKeyset); - // This is going to be a little painful... - // Main keys - emit powerEnabled(myKeysets->hasKey(currentKeyset, Power_Key)); - emit volumeUpEnabled(myKeysets->hasKey(currentKeyset, VolumeUp_Key)); - emit volumeDownEnabled(myKeysets->hasKey(currentKeyset, VolumeDown_Key)); - emit channelUpEnabled(myKeysets->hasKey(currentKeyset, ChannelUp_Key)); - emit channelDownEnabled(myKeysets->hasKey(currentKeyset, ChannelDown_Key)); - emit muteEnabled(myKeysets->hasKey(currentKeyset, Mute_Key)); - - // Main tab labels: - emit keysetMakeChanged( - makeManager.getMakeString(myKeysets->getMake(currentKeyset))); - emit keysetNameChanged(myKeysets->getDisplayName(currentKeyset)); - - // Utility keys: - emit redEnabled(myKeysets->hasKey(currentKeyset, Red_Key)); - emit greenEnabled(myKeysets->hasKey(currentKeyset, Green_Key)); - emit yellowEnabled(myKeysets->hasKey(currentKeyset, Yellow_Key)); - emit blueEnabled(myKeysets->hasKey(currentKeyset, Blue_Key)); - emit pictureModeEnabled(myKeysets->hasKey(currentKeyset, PictureMode_Key)); - emit soundModeEnabled(myKeysets->hasKey(currentKeyset, SoundMode_Key)); - emit aspectRatioEnabled(myKeysets->hasKey(currentKeyset, AspectRatio_Key)); -// emit surroundEnabled(myKeysets->hasKey(currentKeyset, Surround_Key)); - emit audioEnabled(myKeysets->hasKey(currentKeyset, Audio_Key)); - emit infoEnabled(myKeysets->hasKey(currentKeyset, Info_Key)); - emit captionsEnabled(myKeysets->hasKey(currentKeyset, Captions_Key)); - emit sleepEnabled(myKeysets->hasKey(currentKeyset, Sleep_Key)); - emit inputEnabled(myKeysets->hasKey(currentKeyset, Input_Key)); - - // Keypad keys - emit zeroEnabled(myKeysets->hasKey(currentKeyset, Zero_Key)); - emit oneEnabled(myKeysets->hasKey(currentKeyset, One_Key)); - emit twoEnabled(myKeysets->hasKey(currentKeyset, Two_Key)); - emit threeEnabled(myKeysets->hasKey(currentKeyset, Three_Key)); - emit fourEnabled(myKeysets->hasKey(currentKeyset, Four_Key)); - emit fiveEnabled(myKeysets->hasKey(currentKeyset, Five_Key)); - emit sixEnabled(myKeysets->hasKey(currentKeyset, Six_Key)); - emit sevenEnabled(myKeysets->hasKey(currentKeyset, Seven_Key)); - emit eightEnabled(myKeysets->hasKey(currentKeyset, Eight_Key)); - emit nineEnabled(myKeysets->hasKey(currentKeyset, Nine_Key)); - emit enterEnabled(myKeysets->hasKey(currentKeyset, Enter_Key)); - emit clearEnabled(myKeysets->hasKey(currentKeyset, Clear_Key)); - emit dashEnabled(myKeysets->hasKey(currentKeyset, Dash_Key)); - emit plusOneHundredEnabled(myKeysets->hasKey(currentKeyset, PlusOneHundred_Key)); - emit doubleDigitEnabled(myKeysets->hasKey(currentKeyset, DoubleDigit_Key)); - emit prevChannelEnabled(myKeysets->hasKey(currentKeyset, PrevChannel_Key)); - - // Menu keys: - emit upEnabled(myKeysets->hasKey(currentKeyset, Up_Key)); - emit downEnabled(myKeysets->hasKey(currentKeyset, Down_Key)); - emit leftEnabled(myKeysets->hasKey(currentKeyset, Left_Key)); - emit rightEnabled(myKeysets->hasKey(currentKeyset, Right_Key)); - emit selectEnabled(myKeysets->hasKey(currentKeyset, Select_Key)); - emit menuEnabled(myKeysets->hasKey(currentKeyset, Menu_Key)); - emit exitEnabled(myKeysets->hasKey(currentKeyset, Exit_Key)); - emit guideEnabled(myKeysets->hasKey(currentKeyset, Guide_Key)); - emit discMenuEnabled(myKeysets->hasKey(currentKeyset, DiscMenu_Key)); - - // Media keys: - emit nextEnabled(myKeysets->hasKey(currentKeyset, Next_Key)); - emit previousEnabled(myKeysets->hasKey(currentKeyset, Previous_Key)); - emit advanceEnabled(myKeysets->hasKey(currentKeyset, Advance_Key)); - emit replayEnabled(myKeysets->hasKey(currentKeyset, Replay_Key)); - emit stepForwardEnabled(myKeysets->hasKey(currentKeyset, StepForward_Key)); - emit stepBackEnabled(myKeysets->hasKey(currentKeyset, StepBack_Key)); - emit fastForwardEnabled(myKeysets->hasKey(currentKeyset, FastForward_Key)); - emit reverseEnabled(myKeysets->hasKey(currentKeyset, Rewind_Key)); - emit playEnabled(myKeysets->hasKey(currentKeyset, Play_Key)); - emit pauseEnabled(myKeysets->hasKey(currentKeyset, Pause_Key)); - emit stopEnabled(myKeysets->hasKey(currentKeyset, Stop_Key)); - emit ejectEnabled(myKeysets->hasKey(currentKeyset, Eject_Key)); - - // Also enable the buttons on the secondary form: - secondaryForm->enableButtons(myKeysets, currentKeyset); -} - - -void MainWindow::receivedExternalWarning( - const char *warning) -{ - QMessageBox errBox; - errBox.setText(warning); - errBox.setIcon(QMessageBox::Warning); - errBox.exec(); -} - - -// Main tab buttons: - -void MainWindow::on_powerButton_pressed() -{ - startRepeating(Power_Key); -} - -void MainWindow::on_powerButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_mainChannelUpButton_pressed() -{ - startRepeating(ChannelUp_Key); -} - -void MainWindow::on_mainChannelUpButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_mainChannelDownButton_pressed() -{ - startRepeating(ChannelDown_Key); -} - -void MainWindow::on_mainChannelDownButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_mainVolumeUp_pressed() -{ - startRepeating(VolumeUp_Key); -} - -void MainWindow::on_mainVolumeUp_released() -{ - stopRepeating(); -} - -void MainWindow::on_mainVolumeDownButton_pressed() -{ - startRepeating(VolumeDown_Key); -} - -void MainWindow::on_mainVolumeDownButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_muteButton_pressed() -{ - startRepeating(Mute_Key); -} - -void MainWindow::on_muteButton_released() -{ - stopRepeating(); -} - - -// Utility tab buttons: - -void MainWindow::on_redButton_pressed() -{ - startRepeating(Red_Key); -} - -void MainWindow::on_redButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_greenButton_pressed() -{ - startRepeating(Green_Key); -} - -void MainWindow::on_greenButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_yellowButton_pressed() -{ - startRepeating(Yellow_Key); -} - -void MainWindow::on_yellowButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_blueButton_pressed() -{ - startRepeating(Blue_Key); -} - -void MainWindow::on_blueButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_pictureModeButton_pressed() -{ - startRepeating(PictureMode_Key); -} - -void MainWindow::on_pictureModeButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_soundModeButton_pressed() -{ - startRepeating(SoundMode_Key); -} - -void MainWindow::on_soundModeButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_aspectRatioButton_pressed() -{ - startRepeating(AspectRatio_Key); -} - -void MainWindow::on_aspectRatioButton_released() -{ - stopRepeating(); -} - -/* -void MainWindow::on_surroundButton_pressed() -{ - startRepeating(Surround_Key); -} - -void MainWindow::on_surroundButton_released() -{ - stopRepeating(); -} -*/ - -void MainWindow::on_audioButton_pressed() -{ - startRepeating(Audio_Key); -} - -void MainWindow::on_audioButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_infoButton_pressed() -{ - startRepeating(Info_Key); -} - -void MainWindow::on_infoButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_captionButton_pressed() -{ - startRepeating(Captions_Key); -} - -void MainWindow::on_captionButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_inputButton_pressed() -{ - startRepeating(Input_Key); -} - -void MainWindow::on_inputButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_sleepButton_pressed() -{ - startRepeating(Sleep_Key); -} - -void MainWindow::on_sleepButton_released() -{ - stopRepeating(); -} - - -// Keypad tab buttons: - -void MainWindow::on_oneButton_pressed() -{ - startRepeating(One_Key); -} - -void MainWindow::on_oneButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_twoButton_pressed() -{ - startRepeating(Two_Key); -} - -void MainWindow::on_twoButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_threeButton_pressed() -{ - startRepeating(Three_Key); -} - -void MainWindow::on_threeButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_fourButton_pressed() -{ - startRepeating(Four_Key); -} - -void MainWindow::on_fourButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_fiveButton_pressed() -{ - startRepeating(Five_Key); -} - -void MainWindow::on_fiveButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_sixButton_pressed() -{ - startRepeating(Six_Key); -} - -void MainWindow::on_sixButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_sevenButton_pressed() -{ - startRepeating(Seven_Key); -} - -void MainWindow::on_sevenButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_eightButton_pressed() -{ - startRepeating(Eight_Key); -} - -void MainWindow::on_eightButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_nineButton_pressed() -{ - startRepeating(Nine_Key); -} - -void MainWindow::on_nineButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_zeroButton_pressed() -{ - startRepeating(Zero_Key); -} - -void MainWindow::on_zeroButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_enterButton_pressed() -{ - startRepeating(Enter_Key); -} - -void MainWindow::on_enterButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_clearButton_pressed() -{ - startRepeating(Clear_Key); -} - -void MainWindow::on_clearButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_prevChannelButton_pressed() -{ - startRepeating(PrevChannel_Key); -} - -void MainWindow::on_prevChannelButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_plusOneHundredButton_pressed() -{ - startRepeating(PlusOneHundred_Key); -} - -void MainWindow::on_plusOneHundredButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_dashButton_pressed() -{ - startRepeating(Dash_Key); -} - -void MainWindow::on_dashButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_doubleDigitButton_pressed() -{ - startRepeating(DoubleDigit_Key); -} - -void MainWindow::on_doubleDigitButton_released() -{ - stopRepeating(); -} - - -// Menu tab buttons: - -void MainWindow::on_upButton_pressed() -{ - startRepeating(Up_Key); -} - -void MainWindow::on_upButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_leftButton_pressed() -{ - startRepeating(Left_Key); -} - -void MainWindow::on_leftButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_rightButton_pressed() -{ - startRepeating(Right_Key); -} - -void MainWindow::on_rightButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_downButton_pressed() -{ - startRepeating(Down_Key); -} - -void MainWindow::on_downButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_selectButton_pressed() -{ - startRepeating(Select_Key); -} - -void MainWindow::on_selectButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_menuButton_pressed() -{ - startRepeating(Menu_Key); -} - -void MainWindow::on_menuButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_exitButton_pressed() -{ - startRepeating(Exit_Key); -} - -void MainWindow::on_exitButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_guideButton_pressed() -{ - startRepeating(Guide_Key); -} - -void MainWindow::on_guideButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_discMenuButton_pressed() -{ - startRepeating(DiscMenu_Key); -} - -void MainWindow::on_discMenuButton_released() -{ - stopRepeating(); -} - - -// Media tab buttons: - -void MainWindow::on_mediaPreviousButton_pressed() -{ - startRepeating(Previous_Key); -} - -void MainWindow::on_mediaPreviousButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_mediaNextButton_pressed() -{ - startRepeating(Next_Key); -} - -void MainWindow::on_mediaNextButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_replayButton_pressed() -{ - startRepeating(Replay_Key); -} - -void MainWindow::on_replayButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_advanceButton_pressed() -{ - startRepeating(Advance_Key); -} - -void MainWindow::on_advanceButton_released() -{ - stopRepeating(); -} - -void MainWindow::on_stepBackButton_pressed() -{ - startRepeating(StepBack_Key); -} - -void MainWindow::on_stepBackButton_released() -{ - stopRepeating(); + if (preferencesForm) + { + unsigned int dk = preferencesForm->getDefaultKeyset(); + if (preferencesForm->defaultControlsVolume() && dk) + { + myKeysets->populateKeyset(this, dk); + myPanels->enableButtons(myKeysets, currentKeyset, dk); + } + else + { + myPanels->enableButtons(myKeysets, currentKeyset); + } + } + else + { + myPanels->enableButtons(myKeysets, currentKeyset); + } } -void MainWindow::on_stepForwardButton_pressed() -{ - startRepeating(StepForward_Key); -} -void MainWindow::on_stepForwardButton_released() +void MainWindow::useMainPanel() { - stopRepeating(); + myPanels->useMainPanel(); } -void MainWindow::on_reverseButton_pressed() -{ - startRepeating(Rewind_Key); -} -void MainWindow::on_reverseButton_released() +void MainWindow::useAltMainPanel() { - stopRepeating(); + myPanels->useAltMainPanel(); } -void MainWindow::on_fastForwardButton_pressed() -{ - startRepeating(FastForward_Key); -} -void MainWindow::on_fastForwardButton_released() +QString MainWindow::getCurrentMake() { - stopRepeating(); + return makeManager.getMakeString(myKeysets->getMake(currentKeyset)); } -void MainWindow::on_playButton_pressed() -{ - startRepeating(Play_Key); -} -void MainWindow::on_playButton_released() +QString MainWindow::getCurrentName() { - stopRepeating(); + return myKeysets->getDisplayName(currentKeyset); } -void MainWindow::on_pauseButton_pressed() -{ - startRepeating(Pause_Key); -} -void MainWindow::on_pauseButton_released() +void MainWindow::receivedExternalWarning( + const char *warning) { - stopRepeating(); + QMessageBox errBox; + errBox.setText(warning); + errBox.setIcon(QMessageBox::Warning); + errBox.exec(); } -void MainWindow::on_stopButton_pressed() -{ - startRepeating(Stop_Key); -} -void MainWindow::on_stopButton_released() -{ - stopRepeating(); -} +// Menu actions: -void MainWindow::on_ejectButton_pressed() +void MainWindow::on_actionSelectKeyset_triggered() { - startRepeating(Eject_Key); + selectKeysetForm->show(); } -void MainWindow::on_ejectButton_released() +void MainWindow::on_actionSelect_Device_By_Name_triggered() { - stopRepeating(); + selectDeviceForm->show(); } - -// Menu actions: - -void MainWindow::on_actionSelectKeyset_triggered() +void MainWindow::on_actionArrange_Button_Panels_triggered() { - selectKeysetForm->show(); + panelSelectionForm->show(); } -void MainWindow::on_actionSecondary_Buttons_triggered() +void MainWindow::on_actionPreferences_triggered() { - if (!secondaryForm) - { - secondaryForm = new PIRSecondaryForm(this); - } - - secondaryForm->show(); + preferencesForm->show(); } void MainWindow::on_actionAbout_triggered() @@ -925,16 +373,17 @@ void MainWindow::finalCleanup() } -void MainWindow::on_addKeysetButton_clicked() +void MainWindow::addCurrentKeyset( + QListWidget *qlw) { // Is the current keyset already a favorite? - int count = ui->favoriteKeysetsWidget->count(); + int count = qlw->count(); int index = 0; PIRKeysetWidgetItem *kwi = NULL; while (index < count) { kwi = dynamic_cast( - ui->favoriteKeysetsWidget->item(index)); + qlw->item(index)); if (kwi && (kwi->getID() == currentKeyset)) { @@ -951,8 +400,7 @@ void MainWindow::on_addKeysetButton_clicked() name.append(" "); name.append(myKeysets->getDisplayName(currentKeyset)); - ui->favoriteKeysetsWidget->addItem( - new PIRKeysetWidgetItem(name, currentKeyset, make)); + qlw->addItem(new PIRKeysetWidgetItem(name, currentKeyset, make)); // And, add the keyset id to the persistent list: QSettings settings("pietrzak.org", "Pierogi"); @@ -974,11 +422,12 @@ void MainWindow::on_addKeysetButton_clicked() } -void MainWindow::on_removeKeysetButton_clicked() +void MainWindow::removeFavoriteKeyset( + QListWidget *qlw) { // Deleting an item removes it from the list, so just grab the currently // selected item and delete it: - QListWidgetItem *item = ui->favoriteKeysetsWidget->currentItem(); + QListWidgetItem *item = qlw->currentItem(); if (item) delete item; @@ -990,7 +439,7 @@ void MainWindow::on_removeKeysetButton_clicked() settings.remove("favorites"); - int count = ui->favoriteKeysetsWidget->count(); + int count = qlw->count(); // If the count is empty, we can stop right here: if (count == 0) return; @@ -1001,8 +450,7 @@ void MainWindow::on_removeKeysetButton_clicked() settings.beginWriteArray("favorites"); while (index < count) { - kwi = dynamic_cast( - ui->favoriteKeysetsWidget->item(index)); + kwi = dynamic_cast(qlw->item(index)); settings.setArrayIndex(index); // settings.setValue("keysetID", kwi->getID()); @@ -1019,6 +467,7 @@ void MainWindow::on_removeKeysetButton_clicked() settings.endArray(); } + void MainWindow::populateFavorites() { QSettings settings("pietrzak.org", "Pierogi"); @@ -1041,7 +490,7 @@ void MainWindow::populateFavorites() if (kwi) { // Keyset does exist, so continue: - ui->favoriteKeysetsWidget->addItem(kwi); + myPanels->addFavoritesItem(kwi); } ++index; @@ -1063,6 +512,19 @@ void MainWindow::startRepeating( } +void MainWindow::startRepeating( + PIRKeyName name, + unsigned int keysetID) +{ + QMutexLocker locker(&commandIFMutex); + if (!commandInFlight) + { + commandInFlight = true; + emit buttonPressed(keysetID, name); + } +} + + void MainWindow::stopRepeating() { QMutexLocker locker(&stopRepeatingMutex); @@ -1070,69 +532,95 @@ void MainWindow::stopRepeating() } -QWidget *MainWindow::getSecondaryWindow() +void MainWindow::selectPrevFavKeyset() { - return secondaryForm; + myPanels->selectPrevFavKeyset(); } -void MainWindow::selectPrevFavKeyset() +void MainWindow::selectNextFavKeyset() { - int size = ui->favoriteKeysetsWidget->count(); + myPanels->selectNextFavKeyset(); +} - if (size == 0) - { - // No favorites, so nothing to do! - return; - } - int position = ui->favoriteKeysetsWidget->currentRow(); +void MainWindow::selectPanel( + int index) +{ + ui->selectPanelComboBox->setCurrentIndex(index); +} - --position; - if (position < 0) - { - position = size - 1; - } - ui->favoriteKeysetsWidget->setCurrentRow( - position, - QItemSelectionModel::ClearAndSelect); +void MainWindow::managePanel( + PIRPanelName name, + int state) +{ + myPanels->managePanel(name, state); +} - keysetSelectionChanged(ui->favoriteKeysetsWidget->currentItem()); - // Tell the user about the change: - QMaemo5InformationBox::information( - 0, - ui->favoriteKeysetsWidget->item(position)->text()); +void MainWindow::insertPanel( + int index, + QWidget *panel, + const QString &displayName) +{ + ui->selectPanelComboBox->insertItem(index, displayName); + ui->stackedButtonsWidget->insertWidget(index, panel); } -void MainWindow::selectNextFavKeyset() +void MainWindow::removePanel( + int index, + QWidget *panel) +{ + ui->stackedButtonsWidget->removeWidget(panel); + ui->selectPanelComboBox->removeItem(index); +} + + +void MainWindow::on_prevPanelButton_clicked() { - int size = ui->favoriteKeysetsWidget->count(); + int count = ui->selectPanelComboBox->count(); + + // No need to do anything if there are less than two panels available: + if (count < 2) return; - if (size == 0) + int index = ui->selectPanelComboBox->currentIndex(); + if (index == 0) { - // No favorites, so just return: - return; + index = count - 1; + } + else + { + --index; } - int position = ui->favoriteKeysetsWidget->currentRow(); + ui->selectPanelComboBox->setCurrentIndex(index); +} + - ++position; - if (position == size) +void MainWindow::on_nextPanelButton_clicked() +{ + int count = ui->selectPanelComboBox->count(); + + // No need to do anything if there are less than two panels available: + if (count < 2) return; + + int index = ui->selectPanelComboBox->currentIndex(); + if (index == count - 1) { - position = 0; + index = 0; + } + else + { + ++index; } - ui->favoriteKeysetsWidget->setCurrentRow( - position, - QItemSelectionModel::ClearAndSelect); + ui->selectPanelComboBox->setCurrentIndex(index); +} - keysetSelectionChanged(ui->favoriteKeysetsWidget->currentItem()); - // Tell the user about the change: - QMaemo5InformationBox::information( - 0, - ui->favoriteKeysetsWidget->item(position)->text()); +void MainWindow::on_selectPanelComboBox_currentIndexChanged(int index) +{ + ui->stackedButtonsWidget->setCurrentIndex(index); }