Add "Restore to defaults" and "remove action" action in WiimotedevShortcutsConfig

This commit is contained in:
Bartłomiej Burdukiewicz 2010-08-26 15:37:07 +00:00
parent 774ae905e6
commit 57540119b5
40 changed files with 220 additions and 82 deletions

View File

@ -515,6 +515,9 @@ msgstr "اخفض الصوت 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "" msgstr ""
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -515,6 +515,9 @@ msgstr ""
msgid "Decrease volume" msgid "Decrease volume"
msgstr "" msgstr ""
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -527,6 +527,9 @@ msgstr "Redueix el volum un 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Redueix el volum" msgstr "Redueix el volum"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Retard entre visualitzacions" msgstr "Retard entre visualitzacions"

View File

@ -516,6 +516,9 @@ msgstr "Sniž hlasitosto 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Snížit hlasitost" msgstr "Snížit hlasitost"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -516,6 +516,9 @@ msgstr "Sænk lydstyrken med 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "" msgstr ""
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -526,6 +526,9 @@ msgstr "Lautstärke um 4% verringern"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Lautstärke verringern" msgstr "Lautstärke verringern"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Verzögerung zwischen Visualisierungen" msgstr "Verzögerung zwischen Visualisierungen"

View File

@ -528,6 +528,9 @@ msgstr "Μείωση της έντασης ήχου κατά 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Μείωση έντασης" msgstr "Μείωση έντασης"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Καθυστέρηση μεταξύ οπτικών εφέ" msgstr "Καθυστέρηση μεταξύ οπτικών εφέ"

View File

@ -517,6 +517,9 @@ msgstr "Decrease the volume by 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Decrease volume" msgstr "Decrease volume"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Delay between visualisations" msgstr "Delay between visualisations"

View File

@ -515,6 +515,9 @@ msgstr "Decrease the volume by 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "" msgstr ""
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Delay between visualisations" msgstr "Delay between visualisations"

View File

@ -527,6 +527,9 @@ msgstr "Reducir el volumen en 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Disminuir volumen" msgstr "Disminuir volumen"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Retardo entre visualizaciones" msgstr "Retardo entre visualizaciones"

View File

@ -515,6 +515,9 @@ msgstr ""
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Vähennä äänenvoimakkuutta" msgstr "Vähennä äänenvoimakkuutta"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -520,6 +520,9 @@ msgstr "Baisser le volume de 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Diminuer le volume" msgstr "Diminuer le volume"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Délai entre les visualisations" msgstr "Délai entre les visualisations"

View File

@ -515,6 +515,9 @@ msgstr ""
msgid "Decrease volume" msgid "Decrease volume"
msgstr "" msgstr ""
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -524,6 +524,9 @@ msgstr "Hangerő csökkentése 4%-kal"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Hangerő csökkentése" msgstr "Hangerő csökkentése"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Megjelenítések között váltás ideje" msgstr "Megjelenítések között váltás ideje"

View File

@ -531,6 +531,9 @@ msgstr "Riduci il volume del 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Riduci il volume" msgstr "Riduci il volume"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Ritardo tra le visualizzazioni" msgstr "Ritardo tra le visualizzazioni"

View File

@ -515,6 +515,9 @@ msgstr ""
msgid "Decrease volume" msgid "Decrease volume"
msgstr "" msgstr ""
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -515,6 +515,9 @@ msgstr ""
msgid "Decrease volume" msgid "Decrease volume"
msgstr "" msgstr ""
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -515,6 +515,9 @@ msgstr ""
msgid "Decrease volume" msgid "Decrease volume"
msgstr "" msgstr ""
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -523,6 +523,9 @@ msgstr "Volume met 4% verlagen"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Volume verlagen" msgstr "Volume verlagen"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Vertraging tussen visualisaties" msgstr "Vertraging tussen visualisaties"

View File

@ -515,6 +515,9 @@ msgstr ""
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Reduire lo volum" msgstr "Reduire lo volum"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -521,6 +521,9 @@ msgstr "Zmniejsz głośność o 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Zmniejsz głośność" msgstr "Zmniejsz głośność"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Opóźnienie pomiędzy wizualizacjami" msgstr "Opóźnienie pomiędzy wizualizacjami"

View File

@ -525,6 +525,9 @@ msgstr "Diminuir o volume em 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Diminuir volume" msgstr "Diminuir volume"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Atraso entre visualizações" msgstr "Atraso entre visualizações"

View File

@ -520,6 +520,9 @@ msgstr "Diminuir volume em 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Diminuir volume" msgstr "Diminuir volume"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Atraso entre as visualizações" msgstr "Atraso entre as visualizações"

View File

@ -515,6 +515,9 @@ msgstr "Scade volumul cu 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "" msgstr ""
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -522,6 +522,9 @@ msgstr "Уменьшить громкость на 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Уменьшить громкость" msgstr "Уменьшить громкость"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Задержка между визуализациями" msgstr "Задержка между визуализациями"

View File

@ -524,6 +524,9 @@ msgstr "Znížiť hlasitosť o 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Znížiť hlasitosť" msgstr "Znížiť hlasitosť"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Oneskorenie medzi vizualizáciami" msgstr "Oneskorenie medzi vizualizáciami"

View File

@ -523,6 +523,9 @@ msgstr "Zmanjšaj glasnost za 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Zmanjšaj glasnost" msgstr "Zmanjšaj glasnost"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Zamik med vizualizacijami" msgstr "Zamik med vizualizacijami"

View File

@ -517,6 +517,9 @@ msgstr "Утишај јачину звука за 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Утишај звук" msgstr "Утишај звук"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Застој између визуелизација" msgstr "Застој између визуелизација"

View File

@ -519,6 +519,9 @@ msgstr "Sänk volymen med 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Sänk volymen" msgstr "Sänk volymen"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Fördröjning mellan visualiseringar" msgstr "Fördröjning mellan visualiseringar"

View File

@ -515,6 +515,9 @@ msgstr "Ses seviyesini %4 azalt"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Sesi azalt" msgstr "Sesi azalt"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Görselleştirmeler arasındaki gecikme" msgstr "Görselleştirmeler arasındaki gecikme"

View File

@ -505,6 +505,9 @@ msgstr ""
msgid "Decrease volume" msgid "Decrease volume"
msgstr "" msgstr ""
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -523,6 +523,9 @@ msgstr "Зменшити гучність на 4%"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "Зменшити гучність" msgstr "Зменшити гучність"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "Затримка між візуалізаціями" msgstr "Затримка між візуалізаціями"

View File

@ -515,6 +515,9 @@ msgstr ""
msgid "Decrease volume" msgid "Decrease volume"
msgstr "降低音量" msgstr "降低音量"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "" msgstr ""

View File

@ -519,6 +519,9 @@ msgstr "減低音量4"
msgid "Decrease volume" msgid "Decrease volume"
msgstr "減低音量" msgstr "減低音量"
msgid "Defaults"
msgstr ""
msgid "Delay between visualizations" msgid "Delay between visualizations"
msgstr "在兩個視覺化效果間延遲切換" msgstr "在兩個視覺化效果間延遲切換"

View File

@ -224,6 +224,15 @@ void SettingsDialog::accept() {
#endif #endif
#ifdef ENABLE_WIIMOTEDEV #ifdef ENABLE_WIIMOTEDEV
s.beginGroup(WiimotedevShortcuts::kActionsGroup);
s.clear();
foreach (const WiimotedevShortcutsConfig::Shortcut& shortcut, wiimotedev_config_->actions_) {
s.setValue(QString::number(shortcut.button), shortcut.action);
}
s.endGroup();
s.beginGroup(WiimotedevShortcuts::kSettingsGroup); s.beginGroup(WiimotedevShortcuts::kSettingsGroup);
s.setValue("enabled", wiimotedev_config_->ui_->wiimotedev_enable->isChecked()); s.setValue("enabled", wiimotedev_config_->ui_->wiimotedev_enable->isChecked());
s.setValue("only_when_focused", wiimotedev_config_->ui_->wiimotedev_focus->isChecked()); s.setValue("only_when_focused", wiimotedev_config_->ui_->wiimotedev_focus->isChecked());

View File

@ -113,7 +113,18 @@ WiimotedevShortcutsConfig::WiimotedevShortcutsConfig(QWidget* parent)
ui_->wiimotedev_device->setValue(settings_.value("device", 1).toUInt()); ui_->wiimotedev_device->setValue(settings_.value("device", 1).toUInt());
settings_.endGroup(); settings_.endGroup();
LoadSettings();
connect(ui_->wiimotedev_enable, SIGNAL(clicked(bool)), this, SLOT(WiimotedevEnabledChecked(bool)));
connect(ui_->list, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), SLOT(ItemClicked(QTreeWidgetItem*)));
connect(ui_->wiimotedev_delete_action, SIGNAL(clicked()), this, SLOT(DeleteAction()));
connect(ui_->wiimotedev_reload, SIGNAL(clicked()), this , SLOT(DefaultSettings()));
}
void WiimotedevShortcutsConfig::LoadSettings(){
settings_.beginGroup(WiimotedevShortcuts::kActionsGroup); settings_.beginGroup(WiimotedevShortcuts::kActionsGroup);
ui_->list->clear();
quint64 fvalue, svalue; quint64 fvalue, svalue;
bool fvalid, svalid; bool fvalid, svalid;
@ -121,40 +132,70 @@ WiimotedevShortcutsConfig::WiimotedevShortcutsConfig(QWidget* parent)
fvalue = str.toULongLong(&fvalid, 10); fvalue = str.toULongLong(&fvalid, 10);
svalue = settings_.value(str, 0).toULongLong(&svalid); svalue = settings_.value(str, 0).toULongLong(&svalid);
if (fvalid && svalid) { if (fvalid && svalid) {
new QTreeWidgetItem(ui_->list, Shortcut s;
QStringList() << GetReadableWiiremoteSequence(fvalue) << text_actions_[svalue]); s.object = new QTreeWidgetItem(ui_->list, QStringList() << GetReadableWiiremoteSequence(fvalue) << text_actions_[svalue]);
s.button = fvalue;
s.action = svalue;
actions_ << s;
} }
ui_->list->sortItems(1, Qt::AscendingOrder); ui_->list->sortItems(1, Qt::AscendingOrder);
} }
settings_.endGroup(); settings_.endGroup();
}
connect(ui_->wiimotedev_enable, SIGNAL(clicked(bool)), this, SLOT(WiimotedevEnabledChecked(bool))); void WiimotedevShortcutsConfig::DefaultSettings()
connect(ui_->list, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), SLOT(ItemClicked(QTreeWidgetItem*))); {
settings_.beginGroup(WiimotedevShortcuts::kActionsGroup);
foreach (const QString& key, settings_.allKeys()) {
settings_.remove(key);
}
settings_.setValue(QString::number(WIIMOTE_BTN_LEFT), WiimotedevShortcuts::PlayerPreviousTrack);
settings_.setValue(QString::number(WIIMOTE_BTN_RIGHT), WiimotedevShortcuts::PlayerNextTrack);
settings_.setValue(QString::number(WIIMOTE_BTN_SHIFT_LEFT), WiimotedevShortcuts::PlayerPreviousTrack);
settings_.setValue(QString::number(WIIMOTE_BTN_SHIFT_RIGHT), WiimotedevShortcuts::PlayerNextTrack);
settings_.setValue(QString::number(WIIMOTE_BTN_PLUS), WiimotedevShortcuts::PlayerIncVolume);
settings_.setValue(QString::number(WIIMOTE_BTN_MINUS), WiimotedevShortcuts::PlayerDecVolume);
settings_.setValue(QString::number(WIIMOTE_BTN_1), WiimotedevShortcuts::PlayerTogglePause);
settings_.setValue(QString::number(WIIMOTE_BTN_2), WiimotedevShortcuts::PlayerShowOSD);
settings_.endGroup();
settings_.sync();
LoadSettings();
} }
void WiimotedevShortcutsConfig::WiimotedevEnabledChecked(bool checked) { void WiimotedevShortcutsConfig::WiimotedevEnabledChecked(bool checked) {
ui_->wiimotedev_groupbox->setEnabled(checked); ui_->wiimotedev_groupbox->setEnabled(checked);
} }
void WiimotedevShortcutsConfig::ItemClicked(QTreeWidgetItem* item) { void WiimotedevShortcutsConfig::ItemClicked(QTreeWidgetItem* selected_item) {
current_id_ = item->data(0, Qt::UserRole).toString(); selected_item_ = selected_item;
} }
QString WiimotedevShortcutsConfig::GetReadableWiiremoteSequence(quint64 value) { QString WiimotedevShortcutsConfig::GetReadableWiiremoteSequence(quint64 value) {
QMapIterator<quint64, QString> text(text_buttons_); QMapIterator<quint64, QString> text(text_buttons_);
QStringList list; QStringList list;
QString output;
while (text.hasNext()) { while (text.hasNext()) {
text.next(); text.next();
if ((text.key() & value) == text.key()) if ((text.key() & value) == text.key())
list << text.value(); list << text.value();
} }
QString output;
for (int i = 0; i < (list.count() - 1); ++i) for (int i = 0; i < (list.count() - 1); ++i)
output += list.at(i) + " + "; output += list.at(i) + " + ";
output += list.last(); output += list.last();
return output; return output;
} }
void WiimotedevShortcutsConfig::DeleteAction() {
for (int i = 0; i < actions_.count(); ++i) {
if (actions_.at(i).object == selected_item_) {
delete selected_item_;
actions_.removeAt(i);
break;
}
}
}

View File

@ -29,18 +29,32 @@ public:
WiimotedevShortcutsConfig(QWidget* parent = 0); WiimotedevShortcutsConfig(QWidget* parent = 0);
Ui_WiimotedevShortcutsConfig* ui_; Ui_WiimotedevShortcutsConfig* ui_;
struct Shortcut {
QTreeWidgetItem* object;
quint64 button;
quint32 action;
};
QList <struct Shortcut> actions_;
private: private:
QSettings settings_; QSettings settings_;
QString current_id_; QString current_id_;
QMap < quint64, QString> text_buttons_; QTreeWidgetItem* selected_item_;
QMap < quint32, QString> text_actions_;
QMap <quint64, QString> text_buttons_;
QMap <quint32, QString> text_actions_;
QString GetReadableWiiremoteSequence(quint64 value); QString GetReadableWiiremoteSequence(quint64 value);
private slots: private slots:
void LoadSettings();
void DefaultSettings();
void DeleteAction();
void WiimotedevEnabledChecked(bool checked); void WiimotedevEnabledChecked(bool checked);
void ItemClicked(QTreeWidgetItem* item); void ItemClicked(QTreeWidgetItem*);
}; };
#endif // WIIMOTEDEVSHORTCUTSCONFIG_H #endif // WIIMOTEDEVSHORTCUTSCONFIG_H

View File

@ -174,6 +174,17 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="wiimotedev_reload">
<property name="text">
<string>Defaults</string>
</property>
<property name="icon">
<iconset resource="../../data/data.qrc">
<normaloff>:/icons/22x22/view-refresh.png</normaloff>:/icons/22x22/view-refresh.png</iconset>
</property>
</widget>
</item>
<item> <item>
<spacer name="horizontalSpacer"> <spacer name="horizontalSpacer">
<property name="orientation"> <property name="orientation">

View File

@ -29,11 +29,11 @@ WiimotedevShortcuts::WiimotedevShortcuts(Player* player, QObject* parent)
wiimotedev_buttons_(0), wiimotedev_buttons_(0),
wiimotedev_device_(1), wiimotedev_device_(1),
wiimotedev_active_(true), wiimotedev_active_(true),
wiimotedev_enable_(true),
wiimotedev_focus_(false), wiimotedev_focus_(false),
wiimotedev_notification_(true) wiimotedev_notification_(true)
{ {
ReloadSettings(); ReloadSettings();
wiimotedev_iface_ = new DBusDeviceEventsInterface(WIIMOTEDEV_DBUS_SERVICE_NAME, wiimotedev_iface_ = new DBusDeviceEventsInterface(WIIMOTEDEV_DBUS_SERVICE_NAME,
WIIMOTEDEV_DBUS_EVENTS_OBJECT, WIIMOTEDEV_DBUS_EVENTS_OBJECT,
QDBusConnection::systemBus(), QDBusConnection::systemBus(),
@ -43,35 +43,15 @@ WiimotedevShortcuts::WiimotedevShortcuts(Player* player, QObject* parent)
this, SLOT(DbusWiimoteGeneralButtons(quint32, quint64))); this, SLOT(DbusWiimoteGeneralButtons(quint32, quint64)));
} }
void WiimotedevShortcuts::SetEnabled(bool enabled)
{
disconnect(this, 0, player_, 0);
if (!enabled) return;
connect(this, SIGNAL(Next()), player_, SLOT(Next()));
connect(this, SIGNAL(Previous()), player_, SLOT(Previous()));
connect(this, SIGNAL(Play()), player_, SLOT(Play()));
connect(this, SIGNAL(Stop()), player_, SLOT(Stop()));
connect(this, SIGNAL(IncVolume()), player_, SLOT(VolumeUp()));
connect(this, SIGNAL(DecVolume()), player_, SLOT(VolumeDown()));
connect(this, SIGNAL(Mute()), player_, SLOT(Mute()));
connect(this, SIGNAL(Pause()), player_, SLOT(Pause()));
connect(this, SIGNAL(TogglePause()), player_, SLOT(PlayPause()));
connect(this, SIGNAL(SeekBackward()), player_, SLOT(SeekBackward()));
connect(this, SIGNAL(SeekForward()), player_, SLOT(SeekForward()));
connect(this, SIGNAL(ShowOSD()), player_, SLOT(ShowOSD()));
}
void WiimotedevShortcuts::ReloadSettings() { void WiimotedevShortcuts::ReloadSettings() {
settings_.beginGroup(WiimotedevShortcuts::kActionsGroup); settings_.beginGroup(WiimotedevShortcuts::kActionsGroup);
actions_.clear();
if (!settings_.allKeys().count()) { if (!settings_.allKeys().count()) {
SetDefaultSettings(); SetDefaultSettings();
settings_.sync(); settings_.sync();
} }
actions_.clear();
quint64 fvalue, svalue; quint64 fvalue, svalue;
bool fvalid, svalid; bool fvalid, svalid;
@ -84,8 +64,8 @@ void WiimotedevShortcuts::ReloadSettings() {
settings_.endGroup(); settings_.endGroup();
settings_.beginGroup(WiimotedevShortcuts::kSettingsGroup); settings_.beginGroup(WiimotedevShortcuts::kSettingsGroup);
SetEnabled(settings_.value("enabled", quint64(true)).toBool()); wiimotedev_enable_ = settings_.value("enabled", wiimotedev_enable_).toBool();
wiimotedev_device_ = settings_.value("device", 1).toInt(); wiimotedev_device_ = settings_.value("device", wiimotedev_device_).toInt();
wiimotedev_active_ = settings_.value("use_active_action", wiimotedev_active_).toBool(); wiimotedev_active_ = settings_.value("use_active_action", wiimotedev_active_).toBool();
wiimotedev_focus_ = settings_.value("only_when_focused", wiimotedev_focus_).toBool(); wiimotedev_focus_ = settings_.value("only_when_focused", wiimotedev_focus_).toBool();
wiimotedev_notification_ = settings_.value("use_notification", wiimotedev_notification_).toBool(); wiimotedev_notification_ = settings_.value("use_notification", wiimotedev_notification_).toBool();
@ -97,6 +77,9 @@ void WiimotedevShortcuts::SetDefaultSettings()
{ {
QSettings settings; QSettings settings;
settings.beginGroup(WiimotedevShortcuts::kActionsGroup); settings.beginGroup(WiimotedevShortcuts::kActionsGroup);
foreach (const QString& key, settings_.allKeys()) {
settings_.remove(key);
}
settings.setValue(QString::number(WIIMOTE_BTN_LEFT), PlayerPreviousTrack); settings.setValue(QString::number(WIIMOTE_BTN_LEFT), PlayerPreviousTrack);
settings.setValue(QString::number(WIIMOTE_BTN_RIGHT), PlayerNextTrack); settings.setValue(QString::number(WIIMOTE_BTN_RIGHT), PlayerNextTrack);
settings.setValue(QString::number(WIIMOTE_BTN_SHIFT_LEFT), PlayerPreviousTrack); settings.setValue(QString::number(WIIMOTE_BTN_SHIFT_LEFT), PlayerPreviousTrack);
@ -108,47 +91,41 @@ void WiimotedevShortcuts::SetDefaultSettings()
settings.endGroup(); settings.endGroup();
settings.beginGroup(WiimotedevShortcuts::kSettingsGroup); settings.beginGroup(WiimotedevShortcuts::kSettingsGroup);
foreach (const QString& key, settings_.allKeys()) {
settings_.remove(key);
}
settings.setValue("enabled", true); settings.setValue("enabled", true);
settings.setValue("device", 1); settings.setValue("device", 1);
settings.setValue("use_active_action", true); settings.setValue("use_active_action", true);
settings.setValue("only_when_focused", false); settings.setValue("only_when_focused", false);
settings.setValue("use_notification", true); settings.setValue("use_notification", true);
settings.endGroup(); settings.endGroup();
settings.sync(); settings.sync();
} }
void WiimotedevShortcuts::EmitRequest(quint32 action) {
switch (action) {
case PlayerNextTrack: emit Next(); break;
case PlayerPreviousTrack: emit Previous(); break;
case PlayerPlay: emit Play(); break;
case PlayerStop: emit Stop(); break;
case PlayerIncVolume: emit IncVolume(); break;
case PlayerDecVolume: emit DecVolume(); break;
case PlayerMute: emit Mute(); break;
case PlayerPause: emit Pause(); break;
case PlayerTogglePause: emit TogglePause(); break;
case PlayerSeekBackward: emit SeekBackward(); break;
case PlayerSeekForward: emit SeekForward(); break;
case PlayerStopAfter: emit StopAfter(); break;
case PlayerShowOSD: emit ShowOSD(); break;
}
}
void WiimotedevShortcuts::DbusWiimoteGeneralButtons(quint32 id, quint64 value) { void WiimotedevShortcuts::DbusWiimoteGeneralButtons(quint32 id, quint64 value) {
if (id != wiimotedev_device_) return; if (id != wiimotedev_device_ || !wiimotedev_enable_) return;
quint64 buttons = value & ~(WIIMOTE_TILT_MASK | NUNCHUK_TILT_MASK); quint64 buttons = value & ~(WIIMOTE_TILT_MASK | NUNCHUK_TILT_MASK);
if (wiimotedev_buttons_ == buttons) return; if (wiimotedev_buttons_ == buttons) return;
QMapIterator<quint64, quint32> actions(actions_); if (actions_.contains(buttons)) {
switch (actions_.value(buttons, 0xff)) {
while (actions.hasNext()) { case PlayerNextTrack: player_->Next(); break;
actions.next(); case PlayerPreviousTrack: player_->Previous(); break;
if (!actions.key()) continue; case PlayerPlay: player_->Play(); break;
if ((actions.key() & buttons) == actions.key()) EmitRequest(actions.value()); case PlayerStop: player_->Stop(); break;
case PlayerIncVolume: player_->VolumeUp(); break;
case PlayerDecVolume: player_->VolumeDown(); break;
case PlayerMute: player_->Mute(); break;
case PlayerPause: player_->Pause(); break;
case PlayerTogglePause: player_->PlayPause(); break;
case PlayerSeekBackward: player_->SeekBackward(); break;
case PlayerSeekForward: player_->SeekForward(); break;
case PlayerStopAfter: player_->Stop(); break;
case PlayerShowOSD: player_->ShowOSD(); break;
}
} }
wiimotedev_buttons_ = buttons; wiimotedev_buttons_ = buttons;

View File

@ -35,27 +35,25 @@ public:
public slots: public slots:
void ReloadSettings(); void ReloadSettings();
void SetDefaultSettings(); void SetDefaultSettings();
void SetEnabled(bool enabled);
private slots: private slots:
void DbusWiimoteGeneralButtons(quint32 id, quint64 value); void DbusWiimoteGeneralButtons(quint32 id, quint64 value);
private: private:
void EmitRequest(quint32 action);
DBusDeviceEventsInterface* wiimotedev_iface_; DBusDeviceEventsInterface* wiimotedev_iface_;
Player* player_; Player* player_;
quint64 wiimotedev_buttons_; quint64 wiimotedev_buttons_;
QSettings settings_; QSettings settings_;
quint32 wiimotedev_device_; quint32 wiimotedev_device_;
bool wiimotedev_active_; bool wiimotedev_active_;
bool wiimotedev_enable_;
bool wiimotedev_focus_; bool wiimotedev_focus_;
bool wiimotedev_notification_; bool wiimotedev_notification_;
public: public:
enum Action { enum Action {
WiimotedevActive, WiimotedevActive = 0,
WiimotedevDeactive, WiimotedevDeactive,
PlayerNextTrack, PlayerNextTrack,
PlayerPreviousTrack, PlayerPreviousTrack,
@ -69,26 +67,12 @@ public:
PlayerSeekBackward, PlayerSeekBackward,
PlayerSeekForward, PlayerSeekForward,
PlayerStopAfter, PlayerStopAfter,
PlayerShowOSD PlayerShowOSD,
ActionNone = 0xff
}; };
private: private:
QMap <quint64, quint32> actions_; QHash <quint64, quint32> actions_;
signals:
void Next();
void Previous();
void Play();
void Stop();
void IncVolume();
void DecVolume();
void Mute();
void Pause();
void TogglePause();
void SeekBackward();
void SeekForward();
void StopAfter();
void ShowOSD();
}; };