diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2017-08-22 19:03:22 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2017-08-22 19:03:22 +0000 |
| commit | 3810b6fb810d298728d2195d0c8e7c98cbf540bc (patch) | |
| tree | 39d88dde77cf231e07cc9a4066104234dfe42f75 /src/plugins/Ui/qsui/qsuiquicksearch.cpp | |
| parent | 274b48eb6eadb359cfdc8d6ee752e67e667936bc (diff) | |
| download | qmmp-3810b6fb810d298728d2195d0c8e7c98cbf540bc.tar.gz qmmp-3810b6fb810d298728d2195d0c8e7c98cbf540bc.tar.bz2 qmmp-3810b6fb810d298728d2195d0c8e7c98cbf540bc.zip | |
quick search implementation
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7387 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Ui/qsui/qsuiquicksearch.cpp')
| -rw-r--r-- | src/plugins/Ui/qsui/qsuiquicksearch.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/plugins/Ui/qsui/qsuiquicksearch.cpp b/src/plugins/Ui/qsui/qsuiquicksearch.cpp index ed5011716..89160bdbb 100644 --- a/src/plugins/Ui/qsui/qsuiquicksearch.cpp +++ b/src/plugins/Ui/qsui/qsuiquicksearch.cpp @@ -24,11 +24,15 @@ #include <QStyle> #include <QEvent> #include <QApplication> +#include <QDebug> +#include <qmmpui/playlistmanager.h> +#include <qmmpui/playlistmodel.h> #include "qsuiquicksearch.h" QSUIQuickSearch::QSUIQuickSearch(QWidget *parent) : QWidget(parent) { + m_manager = PlayListManager::instance(); m_lineEdit = new QLineEdit(this); QHBoxLayout *layout = new QHBoxLayout; layout->setSpacing(0); @@ -47,13 +51,62 @@ QSUIQuickSearch::QSUIQuickSearch(QWidget *parent) : layout->addWidget(upButton); connect(qApp, SIGNAL(focusChanged(QWidget*,QWidget*)), SLOT(onFocusChanged(QWidget*,QWidget*))); + connect(m_lineEdit, SIGNAL(textEdited(QString)), SLOT(onTextEdited(QString))); + connect(downButton, SIGNAL(clicked(bool)), SLOT(onSearchDownClicked())); + connect(upButton, SIGNAL(clicked(bool)), SLOT(onSearchUpClicked())); } void QSUIQuickSearch::onFocusChanged(QWidget *old, QWidget *now) { if(now == m_lineEdit) + { qDebug("focus in"); + search(m_lineEdit->text()); + updateSelection(); + } else if(old == m_lineEdit) qDebug("focus out"); } +void QSUIQuickSearch::onTextEdited(const QString &str) +{ + search(str); + updateSelection(); +} + +void QSUIQuickSearch::onSearchUpClicked() +{ + PlayListModel *model = m_manager->selectedPlayList(); +} + +void QSUIQuickSearch::onSearchDownClicked() +{ + PlayListModel *model = m_manager->selectedPlayList(); +} + +void QSUIQuickSearch::search(const QString &str) +{ + m_indexes.clear(); + if(str.isEmpty()) + return; + + PlayListModel *model = m_manager->selectedPlayList(); + + for(int i = 0; i < model->count(); ++i) + { + PlayListItem *item = model->item(i); + if(item->isGroup()) + continue; + + if(!item->formattedTitles().filter(str, Qt::CaseInsensitive).isEmpty()) + m_indexes << i; + } +} + +void QSUIQuickSearch::updateSelection() +{ + PlayListModel *model = m_manager->selectedPlayList(); + model->clearSelection(); + model->setSelected(m_indexes); +} + |
