Improved hw zoom keys handling
authorNikolay Tischenko <niktischenko@gmail.com>
Sat, 18 Dec 2010 07:16:54 +0000 (13:16 +0600)
committerNikolay Tischenko <niktischenko@gmail.com>
Sat, 18 Dec 2010 07:16:54 +0000 (13:16 +0600)
src/mainwindow.cpp
src/mainwindow.h

index 7c22138..681dd02 100644 (file)
@@ -302,12 +302,14 @@ void MainWindow::_change_orientation() {
 void MainWindow::_orientation_changed() {
        QRect screenGeometry = QApplication::desktop()->screenGeometry();
        if (screenGeometry.width() > screenGeometry.height()) {
+               _orientation = ORIENTATION_LANDSCAPE;
                _player_form->landscapeMode();
                _library_form->landscapeMode();
                _equalizer_dialog->landscapeMode();
                _directory_form->lanscapeMode();
                _settings_form->landscapeMode();
        } else {
+               _orientation = ORIENTATION_PORTRAIT;
                _player_form->portraitMode();
                _library_form->portraitMode();
                _equalizer_dialog->portraitMode();
@@ -373,14 +375,30 @@ void MainWindow::_zoom_key_pressed(quint32 code) {
        }
        Config config;
        QString behavior = config.getValue("hw/zoom_action").toString();
+       bool inverted = config.getValue("hw/zoom_inverted").toBool();
+       if (inverted) {
+               if (code == MM_KEY_DOWN) {
+                       code = MM_KEY_UP;
+               } else {
+                       code = MM_KEY_DOWN;
+               }
+       }
        if (code == MM_KEY_DOWN) {
                if (behavior == "track") {
-                       _player_form->prev();
+                       if (_orientation == ORIENTATION_LANDSCAPE) {
+                               _player_form->next();
+                       } else {
+                               _player_form->prev();
+                       }
                        _dbus_client.setVolume(_system_volume);
                }
        } else if (code == MM_KEY_UP) {
                if (behavior == "track") {
-                       _player_form->next();
+                       if (_orientation == ORIENTATION_LANDSCAPE) {
+                               _player_form->prev();
+                       } else {
+                               _player_form->next();
+                       }
                        _dbus_client.setVolume(_system_volume);
                }
        }
index 99f9a72..c0bfda8 100644 (file)
@@ -35,6 +35,9 @@
 #include "dbusclient.h"
 #include <QTimer>
 
+#define ORIENTATION_LANDSCAPE 0
+#define ORIENTATION_PORTRAIT 1
+
 namespace Ui {
        class MainWindow;
 }
@@ -95,6 +98,7 @@ private:
        DBusClient _dbus_client;
        bool _display_unlocked;
        quint32 _system_volume; // yes, it is here
+       int _orientation; // 0 - landscape, 1 - portrait
 };
 
 #endif // MAINWINDOW_H