[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