aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qmmp.pri2
-rw-r--r--src/plugins/Ui/qsui/qsuiquicksearch.cpp53
-rw-r--r--src/plugins/Ui/qsui/qsuiquicksearch.h9
-rw-r--r--src/qmmpui/playlistmodel.cpp7
-rw-r--r--src/qmmpui/playlistmodel.h3
5 files changed, 73 insertions, 1 deletions
diff --git a/qmmp.pri b/qmmp.pri
index f2fb64c76..9d8cff01d 100644
--- a/qmmp.pri
+++ b/qmmp.pri
@@ -24,7 +24,7 @@ CONFIG += OPUS_PLUGIN
CONFIG += OSS_PLUGIN #deprecated
CONFIG += PULSE_AUDIO_PLUGIN
CONFIG += ALSA_PLUGIN
-CONFIG += OSS4_PLUGIN
+#CONFIG += OSS4_PLUGIN
CONFIG += AAC_PLUGIN
CONFIG += MPLAYER_PLUGIN
CONFIG += CDAUDIO_PLUGIN
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;
};
diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp
index 7fe8daacb..4033aaa20 100644
--- a/src/qmmpui/playlistmodel.cpp
+++ b/src/qmmpui/playlistmodel.cpp
@@ -462,6 +462,13 @@ void PlayListModel::setSelected(int first, int last, bool selected)
emit listChanged(SELECTION);
}
+void PlayListModel::setSelected(QList<int> indexes, bool selected)
+{
+ foreach (int idx, indexes)
+ m_container->setSelected(idx, selected);
+ emit listChanged(SELECTION);
+}
+
void PlayListModel::removeSelected()
{
removeSelection(false);
diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h
index 37fe5497d..1ad03d613 100644
--- a/src/qmmpui/playlistmodel.h
+++ b/src/qmmpui/playlistmodel.h
@@ -214,6 +214,9 @@ public:
* @param selected Selection state (\b true - select, \b false - unselect).
*/
void setSelected(int first, int last, bool selected = true);
+
+
+ void setSelected(QList<int> indexes, bool selected = true);
/*!
* Advances to the next item. Returns \b false if next iten doesn't exist,
* otherwise returns \b true