diff options
| -rw-r--r-- | qmmp.pri | 2 | ||||
| -rw-r--r-- | src/plugins/Ui/qsui/qsuiquicksearch.cpp | 53 | ||||
| -rw-r--r-- | src/plugins/Ui/qsui/qsuiquicksearch.h | 9 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 7 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.h | 3 |
5 files changed, 73 insertions, 1 deletions
@@ -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 |
