[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/work/kdelirc
From:       Michael Zanetti <michael_zanetti () gmx ! net>
Date:       2010-03-06 13:24:33
Message-ID: 1267881873.070138.20169.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1099984 by mzanetti:

fix previous/next mode button comboboxes


 M  +51 -38    kcmremotecontrol/modedialog.cpp  
 M  +22 -0     kcmremotecontrol/modedialog.h  
 M  +12 -7     kcmremotecontrol/modedialog.ui  
 M  +4 -7      libkremotecontrol/remote.cpp  
 M  +2 -6      libkremotecontrol/remote.h  


--- branches/work/kdelirc/kcmremotecontrol/modedialog.cpp #1099983:1099984
@@ -30,6 +30,7 @@
 
 #include <kdebug.h>
 #include <kmessagebox.h>
+#include "model.h"
 
 ModeDialog::ModeDialog(Remote *remote, Mode *mode, QWidget *parent): \
KDialog(parent), m_remote(remote), m_mode(mode) {  QWidget *widget = new \
QWidget(this); @@ -55,18 +56,13 @@
             ui.leName->setEnabled(false);
             
             // Fill in Cycle mode buttons
-            ui.cbButtonForward->addItem(i18n("No Button"), "");                      \
                
-            foreach(const QString &button, remote->availableNextModeButtons()){
-                ui.cbButtonForward->addItem(button, button);
-            }
+            ui.cbButtonBackward->addButtons(remote->availableModeCycleButtons());
+            kDebug() << "findprevData " << remote->previousModeButton() << ":" << \
ui.cbButtonBackward->findData(remote->previousModeButton()); +            \
ui.cbButtonBackward->setCurrentIndex(ui.cbButtonBackward->findData(remote->previousModeButton()));
 +            ui.cbButtonForward->addButtons(remote->availableModeCycleButtons());
+            kDebug() << "findNextData " << remote->nextModeButton() << ":" << \
                ui.cbButtonBackward->findData(remote->nextModeButton());
             ui.cbButtonForward->setCurrentIndex(ui.cbButtonForward->findData(remote->nextModeButton()));
  
-            ui.cbButtonBackward->addItem(i18n("No Button"), "");
-            foreach(const QString &button, remote->availablePreviousModeButtons()){
-                ui.cbButtonBackward->addItem(button, button);
-            }
-            ui.cbButtonBackward->setCurrentIndex(ui.cbButtonBackward->findData(remote->previousModeButton()));
                
-
             if(remote->modeChangeMode() == Remote::Cycle){
                 ui.gbModeCycle->setChecked(true);
             } else {
@@ -83,6 +79,7 @@
     connect(ui.leName, SIGNAL(textChanged(const QString&)), this, \
                SLOT(checkForComplete()));
     connect(ui.cbButtonForward, SIGNAL(currentIndexChanged(int)), this, \
                SLOT(forwardButtonChanged()));
     connect(ui.cbButtonBackward, SIGNAL(currentIndexChanged(int)), this, \
SLOT(backwardButtonChanged())); +    connect(ui.gbModeCycle, SIGNAL(clicked(bool)), \
this, SLOT(modeHandlerChanged()));  checkForComplete();
 
     // Pause remote to make use of button presses here
@@ -125,18 +122,6 @@
             m_remote->setDefaultMode(m_remote->masterMode());            
         }
         if(m_mode == m_remote->masterMode()){
-            Remote::ModeChangeMode modeChangeMode = ui.gbModeCycle->isChecked() ? \
                Remote::Cycle : Remote::Group;
-            if(m_remote->modeChangeMode() != modeChangeMode){
-                if(modeChangeMode == Remote::Cycle){
-                    if(KMessageBox::questionYesNo(this, i18n("Using the cycle \
function will remove all duplicate button assignments from your modes. Are you sure \
that you would like to proceed?"), i18n("Change mode switch behaviour")) == \
                KMessageBox::Yes){
-                        m_remote->setModeChangeMode(modeChangeMode);
-                    } else {
-                        return;
-                    }
-                } else {
-                    m_remote->setModeChangeMode(modeChangeMode);                  
-                }
-            }
             m_remote->setNextModeButton(ui.cbButtonForward->itemData(ui.cbButtonForward->currentIndex()).toString());
                
             m_remote->setPreviousModeButton(ui.cbButtonBackward->itemData(ui.cbButtonBackward->currentIndex()).toString());
  }
@@ -147,27 +132,15 @@
 
 void ModeDialog::forwardButtonChanged() {
     disconnect(ui.cbButtonBackward, SIGNAL(currentIndexChanged(int)), this, \
                SLOT(backwardButtonChanged()));
-    ui.cbButtonBackward->clear();
-    
-    ui.cbButtonBackward->addItem(i18n("No Button"), "");
-    foreach(const QString &button, m_remote->availablePreviousModeButtons()){
-        ui.cbButtonBackward->addItem(button, button);
-    }
-
-    ui.cbButtonBackward->setCurrentIndex(ui.cbButtonBackward->findData(m_remote->previousModeButton()));
 +    QString forwardButton = \
ui.cbButtonForward->itemData(ui.cbButtonForward->currentIndex()).toString(); +    \
                ui.cbButtonBackward->hideButton(forwardButton);
     connect(ui.cbButtonBackward, SIGNAL(currentIndexChanged(int)), this, \
SLOT(backwardButtonChanged()));  }
 
 void ModeDialog::backwardButtonChanged() {
     disconnect(ui.cbButtonForward, SIGNAL(currentIndexChanged(int)), this, \
                SLOT(forwardButtonChanged()));
-    ui.cbButtonForward->clear();
- 
-    ui.cbButtonForward->addItem(i18n("No Button"), "");                
-    foreach(const QString &button, m_remote->availableNextModeButtons()){
-        ui.cbButtonForward->addItem(button, button);
-    }
-
-    ui.cbButtonForward->setCurrentIndex(ui.cbButtonForward->findData(m_remote->nextModeButton()));
 +    QString backwardButton = \
ui.cbButtonBackward->itemData(ui.cbButtonBackward->currentIndex()).toString(); +    \
                ui.cbButtonForward->hideButton(backwardButton);
     connect(ui.cbButtonForward, SIGNAL(currentIndexChanged(int)), this, \
SLOT(forwardButtonChanged()));  }
 
@@ -180,4 +153,44 @@
     }
 }
 
+void ModeDialog::modeHandlerChanged() {
+    Remote::ModeChangeMode modeChangeMode = ui.gbModeCycle->isChecked() ? \
Remote::Cycle : Remote::Group; +    if(m_remote->modeChangeMode() != modeChangeMode){
+        if(modeChangeMode == Remote::Cycle){
+            if(KMessageBox::questionYesNo(this, i18n("Using the cycle function will \
remove all duplicate button assignments from your modes. Are you sure that you would \
like to proceed?"), i18n("Change mode switch behaviour")) == KMessageBox::Yes){ +     \
m_remote->setModeChangeMode(modeChangeMode); +            } else {
+                ui.gbModeCycle->setChecked(false);
+            }
+        } else {
+            m_remote->setModeChangeMode(modeChangeMode);                  
+        }
+    }    
+}
+
+ButtonComboBox::ButtonComboBox(QWidget* parent): QComboBox(parent) {
+    addItem(i18n("No Button"), "");
+}
+
+void ButtonComboBox::addButtons(const QStringList &buttonList){
+    kDebug() << "adding buttons";
+    foreach(const QString &button, buttonList){
+        kDebug() << "adding button" << button;
+        addItem(button, button);
+    }
+}
+
+void ButtonComboBox::hideButton(const QString& button) {
+    kDebug() << "hiding button" << button;
+    if(!m_hiddedButton.isEmpty()){
+        kDebug() << "inserting old hidden button" << m_hiddedButton;
+        insertItem(m_hiddenIndex, m_hiddedButton);
+    }
+    if(!button.isEmpty()){
+        m_hiddenIndex = findData(button);
+        m_hiddedButton = itemData(m_hiddenIndex).toString();
+        removeItem(m_hiddenIndex);
+    }
+}
+
 #include "modedialog.moc"
--- branches/work/kdelirc/kcmremotecontrol/modedialog.h #1099983:1099984
@@ -27,9 +27,28 @@
 #ifndef MODEDIALOG_H
 #define MODEDIALOG_H
 
+#include "QComboBox"
+
+class ButtonComboBox: public QComboBox
+{
+    Q_OBJECT
+public:
+    ButtonComboBox(QWidget* parent = 0);
+    void addButtons(const QStringList &buttonList);
+
+public slots:
+    void hideButton(const QString &button);
+
+private:
+    int m_hiddenIndex;
+    QString m_hiddedButton;
+};
+
 #include "ui_modedialog.h"
 #include "remote.h"
 
+#include "kcombobox.h"
+
 class ModeDialog : public KDialog
 {
     Q_OBJECT
@@ -55,6 +74,9 @@
     void forwardButtonChanged();
     void backwardButtonChanged();
     void buttonPressed(const Solid::Control::RemoteControlButton &button);
+    void modeHandlerChanged();
 };
 
+
+
 #endif /* NEWMODEDIALOG_H */
--- branches/work/kdelirc/kcmremotecontrol/modedialog.ui #1099983:1099984
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>380</width>
+    <width>398</width>
     <height>257</height>
    </rect>
   </property>
@@ -66,12 +66,6 @@
       <bool>true</bool>
      </property>
      <layout class="QGridLayout" name="gridLayout_2">
-      <item row="0" column="1">
-       <widget class="KComboBox" name="cbButtonForward"/>
-      </item>
-      <item row="1" column="1">
-       <widget class="KComboBox" name="cbButtonBackward"/>
-      </item>
       <item row="0" column="0">
        <widget class="QLabel" name="lCycleForward">
         <property name="text">
@@ -86,6 +80,12 @@
         </property>
        </widget>
       </item>
+      <item row="1" column="1">
+       <widget class="ButtonComboBox" name="cbButtonBackward"/>
+      </item>
+      <item row="0" column="1">
+       <widget class="ButtonComboBox" name="cbButtonForward"/>
+      </item>
      </layout>
     </widget>
    </item>
@@ -112,6 +112,11 @@
    <extends>QFrame</extends>
    <header>kseparator.h</header>
   </customwidget>
+  <customwidget>
+   <class>ButtonComboBox</class>
+   <extends>QComboBox</extends>
+   <header>modedialog.h</header>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>
--- branches/work/kdelirc/libkremotecontrol/remote.cpp #1099983:1099984
@@ -349,7 +349,6 @@
 }
 
 bool Remote::isAvailable() const {
-    kDebug() << "available remotes in solid:" << \
                Solid::Control::RemoteControl::allRemoteNames();
     return Solid::Control::RemoteControl::allRemoteNames().contains(m_remoteName);
 }
 
@@ -378,19 +377,17 @@
     if(mode && !mode->button().isEmpty() && !buttonList.contains(mode->button())){
         buttonList.append(mode->button());
     }
+    if(mode && mode == masterMode()){
+        
+    }
     return buttonList;
 }
 
-QStringList Remote::availableNextModeButtons() const {
+QStringList Remote::availableModeCycleButtons() const {
     QStringList buttonList = m_modechangeHandler->availableModeSwitchButtons();
     if(!nextModeButton().isEmpty() && !buttonList.contains(nextModeButton())){
         buttonList.append(nextModeButton());
     }
-    return buttonList;
-}
-
-QStringList Remote::availablePreviousModeButtons() const {
-    QStringList buttonList = m_modechangeHandler->availableModeSwitchButtons();
     if(!previousModeButton().isEmpty() && \
!buttonList.contains(previousModeButton())){  \
buttonList.append(previousModeButton());  }
--- branches/work/kdelirc/libkremotecontrol/remote.h #1099983:1099984
@@ -86,13 +86,9 @@
           */
         QStringList availableModeSwitchButtons(const Mode *mode = 0) const;
         /**
-          * Get buttons available for switching to the next mode (Free buttons + the \
current button nextMode) +          * Get buttons available for switching to the next \
                or previous mode (Free buttons + the current nextMode and \
                previousMode)
           */
-        QStringList availableNextModeButtons() const;
-        /**
-          * Get buttons available for switching to the previous mode (Free buttons + \
                the current button previousMode)
-          */
-        QStringList availablePreviousModeButtons() const;
+        QStringList availableModeCycleButtons() const;
 
         QString nextModeButton() const;
         void setNextModeButton(const QString &button);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic