From: Nikolay Tischenko Date: Wed, 22 Sep 2010 15:30:04 +0000 (+0700) Subject: Adding files from filesystem to current playlist X-Git-Tag: release-1.0~2 X-Git-Url: http://git.maemo.org/git/?p=someplayer;a=commitdiff_plain;h=40103460aba82191a72f1e6d852b70f96e6fbdae;ds=sidebyside Adding files from filesystem to current playlist --- diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 0570563..a7d59d0 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -50,11 +50,13 @@ MainWindow::MainWindow(QWidget *parent) : QAction *add_directory = ui->menuLibrary->addAction("Add directory"); QAction *save_playlist = ui->menuLibrary->addAction("Save playlist"); QAction *clear_playlist = ui->menuLibrary->addAction("Clear current playlist"); + QAction *add_files = ui->menuLibrary->addAction("Add file to current playlist"); connect(_player_form, SIGNAL(library()), this, SLOT(library())); connect(_library_form, SIGNAL(player()), this, SLOT(player())); connect(add_directory, SIGNAL(triggered()), this, SLOT(_add_directory())); connect(save_playlist, SIGNAL(triggered()), this, SLOT(_save_playlist())); connect(clear_playlist, SIGNAL(triggered()), this, SLOT(_clear_current_playlist())); + connect(add_files, SIGNAL(triggered()), this, SLOT(_add_files())); connect(_library, SIGNAL(done()), this, SLOT(library())); connect(_library_form, SIGNAL(done()), this, SLOT(library())); connect(_library_form, SIGNAL(busy(QString)), this, SLOT(showBusyWidget(QString))); @@ -197,3 +199,8 @@ void MainWindow::_toggle_full_screen() { showFullScreen(); } } + +void MainWindow::_add_files() { + QStringList files = QFileDialog::getOpenFileNames(this, "Add file"); + if (!files.isEmpty()) _player_form->addFiles(files); +} diff --git a/src/mainwindow.h b/src/mainwindow.h index 4bce733..e2036e4 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -56,6 +56,7 @@ private slots: void _add_directory(); void _save_playlist(); void _clear_current_playlist(); + void _add_files(); void _toggle_search_line(); void _search(QString); void _nextItem(); diff --git a/src/playerform.cpp b/src/playerform.cpp index 6c85347..c00332c 100644 --- a/src/playerform.cpp +++ b/src/playerform.cpp @@ -74,6 +74,8 @@ PlayerForm::PlayerForm(Library* lib, QWidget *parent) : _track_renderer = new TrackRenderer(this); ui->playlistView->setItemDelegateForColumn(0, _track_renderer); + _tag_resolver = new TagResolver(this); + connect(ui->libraryButton, SIGNAL(clicked()), this, SLOT(_library())); connect(ui->viewButton, SIGNAL(clicked()), this, SLOT(_toggle_view())); connect(ui->playlistView, SIGNAL(clicked(QModelIndex)), this, SLOT(_process_click(QModelIndex))); @@ -92,6 +94,7 @@ PlayerForm::PlayerForm(Library* lib, QWidget *parent) : connect(add_to_favorites, SIGNAL(triggered()), this, SLOT(_add_to_favorites())); connect(_player, SIGNAL(stateChanged(PlayerState)), this, SLOT(_state_changed(PlayerState))); connect(_player, SIGNAL(trackDone(Track)), _lib, SLOT(updateTrackCount(Track))); + connect(_tag_resolver, SIGNAL(decoded(Track)), this, SLOT(_track_decoded(Track))); } PlayerForm::~PlayerForm() @@ -272,3 +275,14 @@ void PlayerForm::cancelSearch() { ui->playlistView->hide(); ui->playlistView->show(); } + +void PlayerForm::addFiles(QList files) { + _tag_resolver->decode(files); +} + +void PlayerForm::_track_decoded(Track track) { + _current_playlist.addTrack(track); + __fill_list(_model, _current_playlist); + _lib->saveCurrentPlaylist(_current_playlist); + _player->setPlaylist(_current_playlist); +} diff --git a/src/playerform.h b/src/playerform.h index 0267e0b..d03878a 100644 --- a/src/playerform.h +++ b/src/playerform.h @@ -29,6 +29,7 @@ #include #include #include "trackrenderer.h" +#include "tagresolver.h" namespace Ui { class PlayerForm; @@ -39,6 +40,7 @@ using SomePlayer::DataObjects::Playlist; using SomePlayer::DataObjects::Track; using SomePlayer::Playback::Player; using SomePlayer::Playback::PlayerState; +using SomePlayer::DataObjects::TagResolver; class PlayerForm : public QWidget { @@ -58,6 +60,7 @@ public slots: void nextItem(); void prevItem(); void cancelSearch(); + void addFiles(QList files); private slots: void _library(); @@ -73,6 +76,7 @@ private slots: void _state_changed(PlayerState); void _toggle_repeat(); void _toggle_random(); + void _track_decoded(Track); private: Ui::PlayerForm *ui; @@ -86,6 +90,7 @@ private: QString _search_pattern; TrackRenderer *_track_renderer; + TagResolver *_tag_resolver; void _display_track(Track); int _search_current_id; }; diff --git a/src/tagresolver.cpp b/src/tagresolver.cpp index b100a2f..85634d7 100644 --- a/src/tagresolver.cpp +++ b/src/tagresolver.cpp @@ -48,6 +48,7 @@ void TagResolver::metaStateChanged(Phonon::State newState, Phonon::State /*oldSt Track track(0, metadata, source.fileName()); int index = _sources.indexOf(source)+1; emit decoded(track); + _metaObject->stop(); if (index != _sources.size()) { Phonon::MediaSource newSource = _sources.at(index); _metaObject->clear(); diff --git a/src/track.cpp b/src/track.cpp index 5572dfd..363e9a4 100644 --- a/src/track.cpp +++ b/src/track.cpp @@ -46,7 +46,7 @@ Track::Track(QString source) :QObject() { foo << source; _resolver->decode(foo); _count = 0; - _id = 0; + _id = -1; } TrackMetadata Track::metadata() const {