diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-11-16 11:08:03 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-11-16 11:08:03 +0000 |
| commit | 8b77cec8a9bf8290291afcd9ee41cc87d5a18290 (patch) | |
| tree | e1b4bcd5ac20e2ab2838a135768929a2cdbec1c8 /src | |
| parent | a987be598bb55320fb544807313b35a60ca67c74 (diff) | |
| download | qmmp-8b77cec8a9bf8290291afcd9ee41cc87d5a18290.tar.gz qmmp-8b77cec8a9bf8290291afcd9ee41cc87d5a18290.tar.bz2 qmmp-8b77cec8a9bf8290291afcd9ee41cc87d5a18290.zip | |
added enter hotkey support in the jump dialog
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@619 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/ui/jumptotrackdialog.cpp | 124 | ||||
| -rw-r--r-- | src/ui/jumptotrackdialog.h | 35 |
2 files changed, 87 insertions, 72 deletions
diff --git a/src/ui/jumptotrackdialog.cpp b/src/ui/jumptotrackdialog.cpp index bcd0f308c..37848e34f 100644 --- a/src/ui/jumptotrackdialog.cpp +++ b/src/ui/jumptotrackdialog.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Ilya Kotov * + * Copyright (C) 2007-2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -27,30 +27,32 @@ #include <QKeySequence> JumpToTrackDialog::JumpToTrackDialog(QWidget* parent, Qt::WFlags fl) -: QDialog( parent, fl ) + : QDialog( parent, fl ) { - setupUi(this); - setAttribute(Qt::WA_QuitOnClose, FALSE); - m_playListModel = 0; - m_listModel = new QStringListModel(this); - - m_proxyModel = new QSortFilterProxyModel; - m_proxyModel->setDynamicSortFilter(true); - m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); - m_proxyModel->setSourceModel(m_listModel); - songsListView->setModel(m_proxyModel); - - connect(songsListView,SIGNAL(doubleClicked(const QModelIndex &)), - this,SLOT(jumpTo(const QModelIndex&))); - - - connect(songsListView->selectionModel(), - SIGNAL(currentRowChanged(const QModelIndex&,const QModelIndex&)), - this,SLOT(queueUnqueue(const QModelIndex&,const QModelIndex&))); - - new QShortcut(QKeySequence("Q"),this,SLOT(on_queuePushButton_clicked())); - new QShortcut(QKeySequence("J"),this,SLOT(on_jumpToPushButton_clicked())); - new QShortcut(QKeySequence("F5"),this,SLOT(on_refreshPushButton_clicked())); + setupUi(this); + setAttribute(Qt::WA_QuitOnClose, FALSE); + m_playListModel = 0; + m_listModel = new QStringListModel(this); + + m_proxyModel = new QSortFilterProxyModel; + m_proxyModel->setDynamicSortFilter(true); + m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); + m_proxyModel->setSourceModel(m_listModel); + songsListView->setModel(m_proxyModel); + + connect(songsListView,SIGNAL(doubleClicked(const QModelIndex &)), + this,SLOT(jumpTo(const QModelIndex&))); + connect(songsListView,SIGNAL(activated(const QModelIndex &)), + this,SLOT(jumpTo(const QModelIndex&))); + connect(songsListView,SIGNAL(activated(const QModelIndex &)), + this,SLOT(accept())); + connect(songsListView->selectionModel(), + SIGNAL(currentRowChanged(const QModelIndex&,const QModelIndex&)), + this,SLOT(queueUnqueue(const QModelIndex&,const QModelIndex&))); + + new QShortcut(QKeySequence("Q"),this,SLOT(on_queuePushButton_clicked())); + new QShortcut(QKeySequence("J"),this,SLOT(on_jumpToPushButton_clicked())); + new QShortcut(QKeySequence("F5"),this,SLOT(on_refreshPushButton_clicked())); } JumpToTrackDialog::~JumpToTrackDialog() @@ -60,69 +62,81 @@ JumpToTrackDialog::~JumpToTrackDialog() void JumpToTrackDialog::on_closePushButton_clicked() { - hide(); + hide(); } void JumpToTrackDialog::on_refreshPushButton_clicked() { - refresh(); + refresh(); } void JumpToTrackDialog::on_queuePushButton_clicked() { - QModelIndexList mi_list = songsListView->selectionModel()->selectedRows(); - if(!mi_list.isEmpty()) - { - int selected = (m_proxyModel->mapToSource(mi_list.at(0))).row(); - m_playListModel->setQueued(m_playListModel->item(selected)); - if(m_playListModel->isQueued(m_playListModel->item(selected))) - queuePushButton->setText(tr("Unqueue")); - else - queuePushButton->setText(tr("Queue")); - } + QModelIndexList mi_list = songsListView->selectionModel()->selectedRows(); + if (!mi_list.isEmpty()) + { + int selected = (m_proxyModel->mapToSource(mi_list.at(0))).row(); + m_playListModel->setQueued(m_playListModel->item(selected)); + if (m_playListModel->isQueued(m_playListModel->item(selected))) + queuePushButton->setText(tr("Unqueue")); + else + queuePushButton->setText(tr("Queue")); + } } void JumpToTrackDialog::on_jumpToPushButton_clicked() { - QModelIndexList mi_list = songsListView->selectionModel()->selectedRows(); - if(!mi_list.isEmpty()) - { - jumpTo(mi_list.at(0)); - } + QModelIndexList mi_list = songsListView->selectionModel()->selectedRows(); + if (!mi_list.isEmpty()) + { + jumpTo(mi_list.at(0)); + } } void JumpToTrackDialog::refresh() { - filterLineEdit->clear(); - QStringList titles = m_playListModel->getTitles(0,m_playListModel->count()); - m_listModel->setStringList(titles); - filterLineEdit->setFocus(); + filterLineEdit->clear(); + QStringList titles = m_playListModel->getTitles(0,m_playListModel->count()); + m_listModel->setStringList(titles); + filterLineEdit->setFocus(); } void JumpToTrackDialog::setModel(PlayListModel * model) { - m_playListModel = model; + m_playListModel = model; } void JumpToTrackDialog::on_filterLineEdit_textChanged(const QString &str) { - m_proxyModel->setFilterFixedString(str); + m_proxyModel->setFilterFixedString(str); + if (m_proxyModel->hasIndex(0,0)) + songsListView->setCurrentIndex (m_proxyModel->index (0,0)); +} + +void JumpToTrackDialog::on_filterLineEdit_returnPressed () +{ + QModelIndexList mi_list = songsListView->selectionModel()->selectedRows(); + if (!mi_list.isEmpty()) + { + jumpTo(mi_list.at(0)); + accept(); + } } void JumpToTrackDialog::jumpTo(const QModelIndex & index) { - int selected = (m_proxyModel->mapToSource(index)).row(); - m_playListModel->setCurrent(selected); - emit playRequest(); + int selected = (m_proxyModel->mapToSource(index)).row(); + m_playListModel->setCurrent(selected); + emit playRequest(); } void JumpToTrackDialog::queueUnqueue(const QModelIndex& curr,const QModelIndex&) { - int row = m_proxyModel->mapToSource(curr).row(); - if(m_playListModel->isQueued(m_playListModel->item(row))) - queuePushButton->setText(tr("Unqueue")); - else - queuePushButton->setText(tr("Queue")); + int row = m_proxyModel->mapToSource(curr).row(); + if (m_playListModel->isQueued(m_playListModel->item(row))) + queuePushButton->setText(tr("Unqueue")); + else + queuePushButton->setText(tr("Queue")); } diff --git a/src/ui/jumptotrackdialog.h b/src/ui/jumptotrackdialog.h index cfe629693..fb4cf301e 100644 --- a/src/ui/jumptotrackdialog.h +++ b/src/ui/jumptotrackdialog.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Ilya Kotov * + * Copyright (C) 2007-2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -35,27 +35,28 @@ class QSortFilterProxyModel; class JumpToTrackDialog : public QDialog, private Ui::JumpToTrackDialog { - Q_OBJECT + Q_OBJECT public: - JumpToTrackDialog(QWidget* parent = 0, Qt::WFlags fl = 0 ); - ~JumpToTrackDialog(); - void setModel(PlayListModel* model); - void refresh(); + JumpToTrackDialog(QWidget* parent = 0, Qt::WFlags fl = 0 ); + ~JumpToTrackDialog(); + void setModel(PlayListModel* model); + void refresh(); protected slots: - void on_closePushButton_clicked(); - void on_refreshPushButton_clicked(); - void on_queuePushButton_clicked(); - void on_jumpToPushButton_clicked(); - void on_filterLineEdit_textChanged(const QString&); - void jumpTo(const QModelIndex&); - void queueUnqueue(const QModelIndex&,const QModelIndex&); + void on_closePushButton_clicked(); + void on_refreshPushButton_clicked(); + void on_queuePushButton_clicked(); + void on_jumpToPushButton_clicked(); + void on_filterLineEdit_textChanged(const QString&); + void on_filterLineEdit_returnPressed (); + void jumpTo(const QModelIndex&); + void queueUnqueue(const QModelIndex&,const QModelIndex&); signals: - void playRequest(); + void playRequest(); private: - PlayListModel* m_playListModel; - QStringListModel* m_listModel; - QSortFilterProxyModel* m_proxyModel; + PlayListModel* m_playListModel; + QStringListModel* m_listModel; + QSortFilterProxyModel* m_proxyModel; }; #endif |
