aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2017-08-22 19:03:22 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2017-08-22 19:03:22 +0000
commit3810b6fb810d298728d2195d0c8e7c98cbf540bc (patch)
tree39d88dde77cf231e07cc9a4066104234dfe42f75 /src/plugins/Ui
parent274b48eb6eadb359cfdc8d6ee752e67e667936bc (diff)
downloadqmmp-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')
-rw-r--r--src/plugins/Ui/qsui/qsuiquicksearch.cpp53
-rw-r--r--src/plugins/Ui/qsui/qsuiquicksearch.h9
2 files changed, 62 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);
+}
+
diff --git a/src/plugins/Ui/qsui/qsuiquicksearch.h b/src/plugins/Ui/qsui/qsuiquicksearch.h
index f6bccf238..077bc0a95 100644
--- a/src/plugins/Ui/qsui/qsuiquicksearch.h
+++ b/src/plugins/Ui/qsui/qsuiquicksearch.h
@@ -22,8 +22,10 @@
#define QSUIQUICKSEARCH_H
#include <QWidget>
+#include <QList>
class QLineEdit;
+class PlayListManager;
/**
@author Ilya Kotov <forkotov02@hotmail.ru>
@@ -36,9 +38,16 @@ public:
private slots:
void onFocusChanged(QWidget *old, QWidget *now);
+ void onTextEdited(const QString &str);
+ void onSearchUpClicked();
+ void onSearchDownClicked();
private:
+ void search(const QString &str);
+ void updateSelection();
QLineEdit *m_lineEdit;
+ PlayListManager *m_manager;
+ QList<int> m_indexes;
};