Volume level storing, fixed bug with removing playlists
[someplayer] / src / playerform.cpp
index ecee53b..24e3b8e 100644 (file)
@@ -59,17 +59,21 @@ PlayerForm::PlayerForm(Library* lib, QWidget *parent) :
        _time = new QTime();
        ui->setupUi(this);
        if (_player->random()) {
-               ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_active.png"));
+               ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_on.png"));
        } else {
-               ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_inactive.png"));
+               ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_off.png"));
        }
-       if (_player->repeat()) {
-               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_active.png"));
+       if (_player->repeat() == REPEAT_ALL) {
+               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_all.png"));
+       } else if (_player->repeat() == REPEAT_NO){
+               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_off.png"));
        } else {
-               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_inactive.png"));
+               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_one.png"));
        }
        ui->volumeSlider->setMinimum(0);
        ui->volumeSlider->setMaximum(100);
+       ui->volumeSlider->setValue(config.getValue("playback/volume").toInt());
+       _player->setVolume(ui->volumeSlider->value());
        ui->volumeSlider->hide();
        ui->seekSlider->setEnabled(false);
        ui->progressLayout->removeItem(ui->seekSpacer);
@@ -213,6 +217,8 @@ void PlayerForm::_custom_context_menu_requested(const QPoint &pos) {
 
 void PlayerForm::_delete_track() {
        QList<QModelIndex> idx = ui->playlistView->selectionModel()->selectedIndexes();
+       if (idx.isEmpty())
+               return;
        int id = idx.first().row();
        int aid = _track_renderer->activeRow();
        if (aid > id) {
@@ -227,12 +233,16 @@ void PlayerForm::_delete_track() {
 
 void PlayerForm::_enqueue_track() {
        QList<QModelIndex> idx = ui->playlistView->selectionModel()->selectedIndexes();
+       if (idx.isEmpty())
+               return;
        int id = idx.first().row();
        _player->enqueue(id);
 }
 
 void PlayerForm::_add_to_favorites() {
        QList<QModelIndex> idx = ui->playlistView->selectionModel()->selectedIndexes();
+       if (idx.isEmpty())
+               return;
        int id = idx.first().row();
        _lib->addToFavorites(_current_playlist.tracks().at(id));
 }
@@ -254,18 +264,20 @@ void PlayerForm::_state_changed(PlayerState state) {
 void PlayerForm::_toggle_random() {
        _player->toggleRandom();
        if (_player->random()) {
-               ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_active.png"));
+               ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_on.png"));
        } else {
-               ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_inactive.png"));
+               ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_off.png"));
        }
 }
 
 void PlayerForm::_toggle_repeat() {
        _player->toggleRepeat();
-       if (_player->repeat()) {
-               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_active.png"));
+       if (_player->repeat() == REPEAT_ALL) {
+               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_all.png"));
+       } else if (_player->repeat() == REPEAT_NO){
+               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_off.png"));
        } else {
-               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_inactive.png"));
+               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_one.png"));
        }
 }
 
@@ -328,6 +340,8 @@ void PlayerForm::_track_decoded(Track track) {
 
 void PlayerForm::_add_to_playlists() {
        QList<QModelIndex> idx = ui->playlistView->selectionModel()->selectedIndexes();
+       if (idx.isEmpty())
+               return;
        int id = idx.first().row();
 
        QList<QString> names = _lib->getPlaylistsNames();
@@ -345,6 +359,8 @@ void PlayerForm::_add_to_playlists() {
 
 void PlayerForm::_edit_tags() {
        QList<QModelIndex> idx = ui->playlistView->selectionModel()->selectedIndexes();
+       if (idx.isEmpty())
+               return;
        Track track = _current_playlist.tracks().at(idx.first().row());
 
        EditTagsDialog dialog(this);
@@ -499,15 +515,17 @@ void PlayerForm::updateIcons() {
        } else {
                ui->viewButton->setIcon(QIcon(":/icons/"+_icons_theme+"/playback.png"));
        }
-       if (_player->repeat()) {
-               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_active.png"));
+       if (_player->repeat() == REPEAT_ALL) {
+               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_all.png"));
+       } else if (_player->repeat() == REPEAT_NO){
+               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_off.png"));
        } else {
-               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_inactive.png"));
+               ui->repeatButton->setIcon(QIcon(":/icons/"+_icons_theme+"/repeat_one.png"));
        }
        if (_player->random()) {
-               ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_active.png"));
+               ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_on.png"));
        } else {
-               ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_inactive.png"));
+               ui->randomButton->setIcon(QIcon(":/icons/"+_icons_theme+"/random_off.png"));
        }
 }
 
@@ -521,3 +539,12 @@ void PlayerForm::checkGradient() {
                ui->bottomWidget->setStyleSheet("");
        }
 }
+
+void PlayerForm::play(Track track) {
+       reload(true);
+       int id = _current_playlist.tracks().indexOf(track);
+       if (id > 0) {
+               _player->setTrackId(id);
+               _player->play();
+       }
+}