Impemented controling via keyboard
authorNikolay Tischenko <niktischenko@gmail.com>
Sat, 5 Mar 2011 16:06:59 +0000 (22:06 +0600)
committerNikolay Tischenko <niktischenko@gmail.com>
Sat, 5 Mar 2011 16:06:59 +0000 (22:06 +0600)
src/mainwindow.cpp
src/mainwindow.h
src/playerform.cpp
src/playerform.h

index 4f561dd..7e2ee18 100644 (file)
@@ -134,6 +134,13 @@ MainWindow::MainWindow(QWidget *parent) :
        _hw_zoom_policy_changed();
        config.setValue("fmtx/enabled", "no");
        setWindowTitle("SomePlayer");
+
+       QList<QWidget *> widgets = ui->centralWidget->findChildren<QWidget *>();
+       foreach (QWidget *widget, widgets) {
+               if (widget->objectName() != "searchLine") {
+                       widget->installEventFilter(this);
+               }
+       }
 }
 
 MainWindow::~MainWindow()
@@ -419,3 +426,53 @@ void MainWindow::_fmtx_settings_changed() {
                system("fmtx_client -p 0 2>&1 >/dev/null");
        }
 }
+
+bool MainWindow::eventFilter(QObject *obj, QEvent *event) {
+       if (event->type() != QEvent::KeyPress) {
+               return QObject::eventFilter(obj, event);
+       }
+       QKeyEvent *keyEvent = (QKeyEvent *) event;
+
+       switch (keyEvent->key()) {
+       case Qt::Key_Space:
+               _player_form->toggle();
+               break;
+       case Qt::Key_Enter:
+               // TODO
+               break;
+       case Qt::Key_Right:
+               _player_form->next();
+               break;
+       case Qt::Key_Left:
+               _player_form->prev();
+               break;
+       case Qt::Key_S:
+               _player_form->stop();
+               break;
+       case Qt::Key_F:
+               _fullscreen(!isFullScreen());
+               break;
+       case Qt::Key_R:
+               _player_form->toggleRandom();
+               break;
+       case Qt::Key_V:
+               _player_form->toggleView();
+               break;
+       case Qt::Key_M:
+               _directory_form->show();
+               break;
+       case Qt::Key_L:
+               _library_form->show();
+               break;
+       case Qt::Key_E:
+               _player_form->toggleRepeat();
+               break;
+       case Qt::Key_Control:
+               _player_form->toggleToolsWidget();
+               break;
+       default:
+               return QObject::eventFilter(obj, event);
+       }
+
+       return true;
+}
index c0bfda8..8f49a71 100644 (file)
@@ -56,6 +56,9 @@ public:
 private:
        Ui::MainWindow *ui;
 
+protected:
+       bool eventFilter(QObject *, QEvent *);
+
 signals:
        void landscapeMode();
        void portraitMode();
index 515d328..0b9a81b 100644 (file)
@@ -116,7 +116,7 @@ PlayerForm::PlayerForm(Library* lib, QWidget *parent) :
        _pls_sort_form->hide();
 
        connect(ui->libraryButton, SIGNAL(clicked()), this, SLOT(_library()));
-       connect(ui->viewButton, SIGNAL(clicked()), this, SLOT(_toggle_view()));
+       connect(ui->viewButton, SIGNAL(clicked()), this, SLOT(toggleView()));
        connect(ui->playlistView, SIGNAL(clicked(QModelIndex)), this, SLOT(_process_click(QModelIndex)));
        connect(ui->playpauseButton, SIGNAL(clicked()), _player, SLOT(toggle()));
        connect(ui->nextButton, SIGNAL(clicked()), _player, SLOT(next()));
@@ -124,8 +124,8 @@ PlayerForm::PlayerForm(Library* lib, QWidget *parent) :
        connect(ui->prevButton, SIGNAL(clicked()), _player, SLOT(prev()));
        connect(_player, SIGNAL(trackChanged(Track)), this, SLOT(_track_changed(Track)));
        connect(_player, SIGNAL(tick(int,int)), this, SLOT(_tick(int,int)));
-       connect(ui->randomButton, SIGNAL(clicked()), this, SLOT(_toggle_random()));
-       connect(ui->repeatButton, SIGNAL(clicked()), this, SLOT(_toggle_repeat()));
+       connect(ui->randomButton, SIGNAL(clicked()), this, SLOT(toggleRandom()));
+       connect(ui->repeatButton, SIGNAL(clicked()), this, SLOT(toggleRepeat()));
        connect(ui->seekSlider, SIGNAL(sliderMoved(int)), _player, SLOT(seek(int)));
        connect(ui->playlistView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(_sort_playlist()));
        connect(__clear_playlist, SIGNAL(triggered()), this, SIGNAL(clearPlaylist()));
@@ -138,7 +138,7 @@ PlayerForm::PlayerForm(Library* lib, QWidget *parent) :
        connect(_player, SIGNAL(trackDone(Track)), _lib, SLOT(updateTrackCount(Track)));
        connect(_tag_resolver, SIGNAL(decoded(Track)), this, SLOT(_track_decoded(Track)));
        connect(ui->dirButton, SIGNAL(clicked()), this, SLOT(_dirview()));
-       connect(ui->moreButton, SIGNAL(clicked()), this, SLOT(_tools_widget_toggle()));
+       connect(ui->moreButton, SIGNAL(clicked()), this, SLOT(toggleToolsWidget()));
        connect(_tools_widget, SIGNAL(search(QString)), this, SLOT(search(QString)));
        connect(_tools_widget, SIGNAL(nextSearch()), this, SLOT(nextItem()));
        connect(_tools_widget, SIGNAL(prevSearch()), this, SLOT(prevItem()));
@@ -198,7 +198,7 @@ void PlayerForm::reload(bool reread) {
        }
 }
 
-void PlayerForm::_toggle_view() {
+void PlayerForm::toggleView() {
        int index = ui->stackedWidget->currentIndex();
        index = (!index % 2);
        if (index) {
@@ -339,7 +339,7 @@ void PlayerForm::_state_changed(PlayerState state) {
        }
 }
 
-void PlayerForm::_toggle_random() {
+void PlayerForm::toggleRandom() {
        _player->toggleRandom();
        if (_player->random()) {
                ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_on.png"));
@@ -348,7 +348,7 @@ void PlayerForm::_toggle_random() {
        }
 }
 
-void PlayerForm::_toggle_repeat() {
+void PlayerForm::toggleRepeat() {
        _player->toggleRepeat();
        if (_player->repeat() == REPEAT_ALL) {
                ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_all.png"));
@@ -599,7 +599,7 @@ void PlayerForm::portraitMode() {
        _pls_sort_form->portraitMode();
 }
 
-void PlayerForm::_tools_widget_toggle() {
+void PlayerForm::toggleToolsWidget() {
        if (_tools_widget->isVisible()) {
                ui->moreButton->setIcon(QIcon(":/icons/"+_icons_theme+"/more.png"));
                _tools_widget->hide();
@@ -822,3 +822,7 @@ void PlayerForm::_playlist_sorted() {
        ui->playlistView->setColumnWidth(0, 50);
        _track_renderer->setActiveRow(_current_playlist.tracks().indexOf(_player->current()));
 }
+
+void PlayerForm::toggle() {
+       _player->toggle();
+}
index 9606b77..ff8afbb 100644 (file)
@@ -86,15 +86,19 @@ public slots:
        void play(Track);
        void next();
        void prev();
+       void toggle();
+       void toggleRandom();
+       void toggleView();
        void showCountdown(QString);
        void hideCountdown();
        void updateTranslations();
        void updateTrackColor();
+       void toggleRepeat();
+       void toggleToolsWidget();
 
 private slots:
        void _library();
        void _dirview();
-       void _toggle_view();
        void _process_click(QModelIndex);
        void _track_changed(Track);
        void _tick(int, int);
@@ -110,10 +114,7 @@ private slots:
        void _edit_tags();
        void _c_edit_tags();
        void _state_changed(PlayerState);
-       void _toggle_repeat();
-       void _toggle_random();
        void _track_decoded(Track);
-       void _tools_widget_toggle();
        void _display_cover(QImage);
        void _toggle_extra_buttons();
        void _start_playlist();