X-Git-Url: http://git.maemo.org/git/?p=someplayer;a=blobdiff_plain;f=src%2Flibraryform.cpp;fp=src%2Flibraryform.cpp;h=3b973895f5dcaf4e40b8b6e9f54afe721ded2bb1;hp=257e3b05cc1b4e3a8bdc1ba13bca787831bf5276;hb=b41c45b4ca554e974f7c65560d6057d7aae9d4f4;hpb=c739f40cbb87a28f3ba4e36a20a8edd1aab2117e diff --git a/src/libraryform.cpp b/src/libraryform.cpp index 257e3b0..3b97389 100644 --- a/src/libraryform.cpp +++ b/src/libraryform.cpp @@ -59,18 +59,28 @@ inline void __fill_model_album(QStandardItemModel *model, QMap dat model->clear(); int count = data.count(); model->setRowCount(count); - QMap > years; - foreach (QString name, data.keys()) { - years[data[name]].append(name); - } - QList keys = years.keys(); - qSort(keys); - int i = 0; - foreach (int year, keys) { - foreach (QString name, years[year]) { + Config config; + if (config.getValue("ui/albumsorting").toString() == "date") { + QMap > years; + foreach (QString name, data.keys()) { + years[data[name]].append(name); + } + QList keys = years.keys(); + qSort(keys); + + foreach (int year, keys) { + foreach (QString name, years[year]) { + model->setItem(i, 0, new QStandardItem(QIcon(":/icons/"+icons_theme+"/deselect_all.png"), "")); + model->setItem(i, 1, new QStandardItem(QString("[%1] %2").arg(year).arg(name))); + i++; + } + } + } else { + QList names = data.keys(); + foreach (QString name, names) { model->setItem(i, 0, new QStandardItem(QIcon(":/icons/"+icons_theme+"/deselect_all.png"), "")); - model->setItem(i, 1, new QStandardItem(QString("[%1] %2").arg(year).arg(name))); + model->setItem(i, 1, new QStandardItem(QString("[%1] %2").arg(data[name]).arg(name))); i++; } } @@ -104,6 +114,11 @@ LibraryForm::LibraryForm(Library *lib, QWidget *parent) : _model->setColumnCount(2); _state = STATE_NONE; _tools_widget = new ToolsWidget(this); + QPushButton *search_in_library = new QPushButton(QIcon(":/icons/"+_icons_theme+"/search.png"), "", _tools_widget); + search_in_library->setFlat(true); + search_in_library->setCheckable(true); + _tools_widget->layout()->addItem(new QSpacerItem(20, 20)); + _tools_widget->layout()->addWidget(search_in_library); ui->setupUi(this); ui->listView->setModel(_model); ui->listView->setColumnWidth(0, 70); @@ -127,6 +142,7 @@ LibraryForm::LibraryForm(Library *lib, QWidget *parent) : connect(_tools_widget, SIGNAL(prevSearch()), this, SLOT(prevItem())); connect(_tools_widget, SIGNAL(toggleFullscreen(bool)), this, SIGNAL(fullscreen(bool))); connect(ui->moreButton, SIGNAL(clicked()), this, SLOT(_more_button())); + connect(search_in_library, SIGNAL(toggled(bool)), this, SLOT(_search_button(bool))); _view_button(); _current_playlist_changed = true; _top_gradient = ui->topWidget->styleSheet(); @@ -306,6 +322,13 @@ void LibraryForm::_add_button() { _lib->saveCurrentPlaylist(cur); _current_playlist_changed = true; break; + case STATE_SEARCH: + foreach (QModelIndex id, selected) { + _add_track(&cur, _current_tracks.at(id.row())); + } + _lib->saveCurrentPlaylist(cur); + _current_playlist_changed = true; + break; default: emit done(); return; @@ -676,7 +699,7 @@ void LibraryForm::_process_selection(QItemSelection selected, QItemSelection des void LibraryForm::_process_dblclick(QModelIndex id) { if (id.column() == 0) return; - if (_state == STATE_TRACK || _state == STATE_PLAYLIST_TRACK) { + if (_state == STATE_TRACK || _state == STATE_PLAYLIST_TRACK || _state == STATE_SEARCH) { Playlist cur = _lib->getCurrentPlaylist(); Track track = _current_tracks.at(id.row()); cur.addTrack(track); @@ -687,3 +710,39 @@ void LibraryForm::_process_dblclick(QModelIndex id) { } } +void LibraryForm::_search_button(bool state) { + ui->moreButton->setEnabled(!state); + _tools_widget->toggleArrows(!state); + ui->backButton->setEnabled(!state); + _tools_widget->setFocus(); + _tools_widget->reset(); + if (state) { + ui->listLabel->setText("Search in library"); + ui->deleteButton->setIcon(QIcon()); + ui->deleteButton->setEnabled(false); + ui->useButton->setIcon(QIcon()); + ui->useButton->setEnabled(false); + ui->addButton->setIcon(QIcon(":/icons/"+_icons_theme+"/add.png")); + ui->addButton->setEnabled(true); + disconnect(_tools_widget, SIGNAL(search(QString)), this, SLOT(search(QString))); + connect(_tools_widget, SIGNAL(search(QString)), this, SLOT(_search_in_library(QString))); + _model->clear(); + _state = STATE_SEARCH; + } else { + _view_button(); + connect(_tools_widget, SIGNAL(search(QString)), this, SLOT(search(QString))); + disconnect(_tools_widget, SIGNAL(search(QString)), this, SLOT(_search_in_library(QString))); + } +} + +void LibraryForm::_search_in_library(QString pattern) { + pattern = pattern.trimmed(); + if (pattern.isEmpty()) { + _model->clear(); + return; + } + _current_tracks = _lib->search(pattern); + __fill_model_tracks(_model, _current_tracks, _icons_theme); + ui->listView->setColumnWidth(0, 70); + ui->listView->scrollToTop(); +}