diff options
| author | vovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-02-07 13:36:34 +0000 |
|---|---|---|
| committer | vovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-02-07 13:36:34 +0000 |
| commit | 06d1877811fa6aa97dddc0e03bcde4e766928c87 (patch) | |
| tree | c25462d0e58c3d58c728664440412bf4f16a49ec /src/keyboardmanager.cpp | |
| parent | 3f6b60f23c44a8ba8dd97ca6f41a16e2af7ef2f7 (diff) | |
| download | qmmp-06d1877811fa6aa97dddc0e03bcde4e766928c87.tar.gz qmmp-06d1877811fa6aa97dddc0e03bcde4e766928c87.tar.bz2 qmmp-06d1877811fa6aa97dddc0e03bcde4e766928c87.zip | |
new directory structure
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@232 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/keyboardmanager.cpp')
| -rw-r--r-- | src/keyboardmanager.cpp | 260 |
1 files changed, 0 insertions, 260 deletions
diff --git a/src/keyboardmanager.cpp b/src/keyboardmanager.cpp deleted file mode 100644 index 5ad32fee7..000000000 --- a/src/keyboardmanager.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Ilya Kotov * - * forkotov02@hotmail.ru * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - - -#include <QKeyEvent> - -#include "playlist.h" -#include "playlistmodel.h" -#include "listwidget.h" -#include "keyboardmanager.h" -#include "mainwindow.h" - - -KeyboardManager::KeyboardManager ( PlayList* pl ) -{ - m_playlist = pl; -} - -bool KeyboardManager::handleKeyPress ( QKeyEvent* ke ) -{ - bool handled = TRUE; - switch ( ke->key() ) - { - case Qt::Key_Up: - keyUp ( ke ); - break; - case Qt::Key_Down: - keyDown ( ke ); - break; - case Qt::Key_PageUp: - keyPgUp ( ke ); - break; - case Qt::Key_PageDown: - keyPgDown ( ke ); - break; - case Qt::Key_Enter: - case Qt::Key_Return: - keyEnter ( ke ); - default: - handled = FALSE; - } - return handled; -} - -bool KeyboardManager::handleKeyRelease ( QKeyEvent* ) -{ - return FALSE; -} - - - -void KeyboardManager::setModel ( PlayListModel *m ) -{ - m_playListModel = m; -} - -void KeyboardManager::keyUp ( QKeyEvent * ke ) -{ - QList<int> rows = m_playListModel->getSelectedRows(); - ListWidget* list_widget = m_playlist->listWidget(); - - if ( rows.count() > 0 ) - { - if(rows[0] == 0 && rows.count() == 1) - return; - - if ( ! ( ke->modifiers() & Qt::ShiftModifier || ke->modifiers() & Qt::AltModifier ) ) - { - m_playListModel->clearSelection(); - list_widget->setAnchorRow(-1); - } - - bool select_top = false; - int first_visible = list_widget->firstVisibleRow(); - int last_visible = list_widget->visibleRows() + first_visible - 1; - foreach ( int i, rows ) - { - if ( i > last_visible || i < first_visible ) - { - select_top = true; - break; - } - } - - if ( !select_top || ke->modifiers() & Qt::ShiftModifier || ke->modifiers() & Qt::AltModifier ) - { - if ( ke->modifiers() == Qt::AltModifier ) - { - m_playListModel->moveItems ( rows[0],rows[0] - 1 ); - list_widget->setAnchorRow ( list_widget->getAnchorRow() - 1 ); - } - else - { - if ( rows.last() > list_widget->getAnchorRow() && ke->modifiers() & Qt::ShiftModifier ) - { - m_playListModel->setSelected ( rows.last(),false ); - } - else if ( rows[0] > 0 ) - { - m_playListModel->setSelected ( rows[0] - 1,true ); - } - else - { - m_playListModel->setSelected ( rows[0],true ); - if(list_widget->getAnchorRow() == -1) - list_widget->setAnchorRow(rows[0]); - } - - if ( ! ( ke->modifiers() & Qt::ShiftModifier ) && rows[0] > 0 ) - list_widget->setAnchorRow ( rows[0] - 1 ); - } - } - else - { - m_playListModel->setSelected ( list_widget->firstVisibleRow(),true ); - list_widget->setAnchorRow(list_widget->firstVisibleRow()); - } - - rows = m_playListModel->getSelectedRows(); - - if ( rows[0] < list_widget->firstVisibleRow() && list_widget->firstVisibleRow() > 0 ) - { - int r = rows.last() > list_widget->getAnchorRow() ? rows.last(): rows.first(); - if(ke->modifiers() & Qt::ShiftModifier && (r >= list_widget->firstVisibleRow() )) - ; - else - list_widget->scroll ( list_widget->firstVisibleRow() - 1 ); - } - } - else - { - //if(list_widget->getAnchorRow() == -1) - list_widget->setAnchorRow(list_widget->firstVisibleRow()); - m_playListModel->setSelected ( list_widget->firstVisibleRow(),true ); - } -} - -void KeyboardManager::keyDown ( QKeyEvent * ke ) -{ - QList<int> rows = m_playListModel->getSelectedRows(); - ListWidget* list_widget = m_playlist->listWidget(); - //qWarning("count: %d",rows.count()); - if ( rows.count() > 0 ) - { - if ( ! ( ke->modifiers() & Qt::ShiftModifier || ke->modifiers() & Qt::AltModifier ) ) - { - m_playListModel->clearSelection(); - list_widget->setAnchorRow(-1); - } - - bool select_top = false; - int first_visible = list_widget->firstVisibleRow(); - int last_visible = list_widget->visibleRows() + first_visible - 1; - foreach ( int i, rows ) - { - if ( i > last_visible || i < first_visible ) - { - select_top = true; - break; - } - } - - if ( !select_top || ke->modifiers() & Qt::ShiftModifier || ke->modifiers() & Qt::AltModifier ) - { - if ( ke->modifiers() == Qt::AltModifier ) - { - m_playListModel->moveItems ( rows.last(),rows.last() + 1 ); - list_widget->setAnchorRow ( list_widget->getAnchorRow() + 1 ); - } - else - { - //qWarning("list_widget %d",list_widget->getAnchorRow()); - //qWarning("model count: %d rows.last(): %d",m_playListModel->count(),rows.last()); - if ( rows[0] < list_widget->getAnchorRow() && ke->modifiers() & Qt::ShiftModifier ) - m_playListModel->setSelected ( rows[0],false ); - else if ( rows.last() < m_playListModel->count() - 1 ) - { - m_playListModel->setSelected ( rows.last() + 1,true ); - } - else - { - m_playListModel->setSelected ( rows.last(),true ); - if(list_widget->getAnchorRow() == -1) - list_widget->setAnchorRow(rows.last()); - } - - if ( ! ( ke->modifiers() & Qt::ShiftModifier ) && rows.last() < m_playListModel->count() - 1 ) - list_widget->setAnchorRow ( rows.last() + 1 ); - } - } - else - { - m_playListModel->setSelected ( list_widget->firstVisibleRow(),true ); - list_widget->setAnchorRow(list_widget->firstVisibleRow()); - } - - rows = m_playListModel->getSelectedRows(); - - if ( !rows.isEmpty() && rows.last() >= list_widget->visibleRows() + list_widget->firstVisibleRow() ) - { - int r = rows.first() < list_widget->getAnchorRow() ? rows.first(): rows.last(); - if(ke->modifiers() & Qt::ShiftModifier && - (r < list_widget->firstVisibleRow() + list_widget->visibleRows() )) - ; - else - list_widget->scroll ( list_widget->firstVisibleRow() + 1 ); - } - } - else - { - m_playListModel->setSelected ( list_widget->firstVisibleRow(),true ); - //if(list_widget->getAnchorRow() == -1) - list_widget->setAnchorRow(list_widget->firstVisibleRow()); - } -} - -void KeyboardManager::keyPgUp ( QKeyEvent * ) -{ - ListWidget* list_widget = m_playlist->listWidget(); - int page_size = list_widget->visibleRows(); - int offset= ( list_widget->firstVisibleRow()-page_size >= 0 ) ?list_widget->firstVisibleRow()-page_size:0; - list_widget->scroll ( offset ); -} - -void KeyboardManager::keyPgDown ( QKeyEvent * ) -{ - ListWidget* list_widget = m_playlist->listWidget(); - int page_size = list_widget->visibleRows(); - int offset = ( list_widget->firstVisibleRow() +page_size < m_playListModel->count() ) ? - list_widget->firstVisibleRow() +page_size:m_playListModel->count() - 1; - list_widget->scroll ( offset ); -} - -void KeyboardManager::keyEnter ( QKeyEvent * ) -{ - QList<int> rows = m_playListModel->getSelectedRows(); - MainWindow* mw = qobject_cast<MainWindow*> ( m_playlist->parentWidget() ); - if ( mw && rows.count() > 0 ) - { - m_playListModel->setCurrent ( rows[0] ); - mw->replay(); - } -} |
