Fix previous player and doubleclick playlist song behaviour settings

This commit is contained in:
Jonas Kvinge
2019-11-17 23:46:10 +01:00
parent bac5b7679d
commit 71fa5acc74
4 changed files with 72 additions and 56 deletions

View File

@@ -96,7 +96,7 @@ Player::Player(Application *app, QObject *parent)
last_pressed_previous_(QDateTime::currentDateTime()),
continue_on_error_(false),
greyout_(true),
menu_previousmode_(PreviousBehaviour_DontRestart),
menu_previousmode_(BehaviourSettingsPage::PreviousBehaviour_DontRestart),
seek_step_sec_(10),
volume_control_(true)
{
@@ -230,10 +230,10 @@ void Player::ReloadSettings() {
s.beginGroup(PlaylistSettingsPage::kSettingsGroup);
continue_on_error_ = s.value("continue_on_error", false).toBool();
greyout_ = s.value("greyout_songs_play", true).toBool();
menu_previousmode_ = PreviousBehaviour(s.value("menu_previousmode", PreviousBehaviour_DontRestart).toInt());
s.endGroup();
s.beginGroup(BehaviourSettingsPage::kSettingsGroup);
menu_previousmode_ = BehaviourSettingsPage::PreviousBehaviour(s.value("menu_previousmode", BehaviourSettingsPage::PreviousBehaviour_DontRestart).toInt());
seek_step_sec_ = s.value("seek_step_sec", 10).toInt();
s.endGroup();
@@ -503,7 +503,7 @@ void Player::StopAfterCurrent() {
bool Player::PreviousWouldRestartTrack() const {
// Check if it has been over two seconds since previous button was pressed
return menu_previousmode_ == PreviousBehaviour_Restart && last_pressed_previous_.isValid() && last_pressed_previous_.secsTo(QDateTime::currentDateTime()) >= 2;
return menu_previousmode_ == BehaviourSettingsPage::PreviousBehaviour_Restart && last_pressed_previous_.isValid() && last_pressed_previous_.secsTo(QDateTime::currentDateTime()) >= 2;
}
void Player::Previous() { PreviousItem(Engine::Manual); }
@@ -512,7 +512,7 @@ void Player::PreviousItem(Engine::TrackChangeFlags change) {
const bool ignore_repeat_track = change & Engine::Manual;
if (menu_previousmode_ == PreviousBehaviour_Restart) {
if (menu_previousmode_ == BehaviourSettingsPage::PreviousBehaviour_Restart) {
// Check if it has been over two seconds since previous button was pressed
QDateTime now = QDateTime::currentDateTime();
if (last_pressed_previous_.isValid() && last_pressed_previous_.secsTo(now) >= 2) {

View File

@@ -42,6 +42,7 @@
#include "engine/gststartup.h"
#endif
#include "playlist/playlistitem.h"
#include "settings/behavioursettingspage.h"
class Application;
class Song;
@@ -136,12 +137,6 @@ class Player : public PlayerInterface {
static const char *kSettingsGroup;
// Don't change the values: they are saved in preferences
enum PreviousBehaviour {
PreviousBehaviour_DontRestart = 1,
PreviousBehaviour_Restart = 2
};
Engine::EngineType CreateEngine(Engine::EngineType enginetype);
void Init();
@@ -240,7 +235,7 @@ class Player : public PlayerInterface {
bool continue_on_error_;
bool greyout_;
PreviousBehaviour menu_previousmode_;
BehaviourSettingsPage::PreviousBehaviour menu_previousmode_;
int seek_step_sec_;
bool volume_control_;

View File

@@ -71,19 +71,6 @@ BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog *dialog) : SettingsP
}
#endif
ui_->combobox_doubleclickaddmode->setItemData(0, AddBehaviour_Append);
ui_->combobox_doubleclickaddmode->setItemData(1, AddBehaviour_Load);
ui_->combobox_doubleclickaddmode->setItemData(2, AddBehaviour_OpenInNew);
ui_->combobox_doubleclickaddmode->setItemData(3, AddBehaviour_Enqueue);
ui_->combobox_doubleclickplaymode->setItemData(0, PlayBehaviour_Never);
ui_->combobox_doubleclickplaymode->setItemData(1, PlayBehaviour_IfStopped);
ui_->combobox_doubleclickplaymode->setItemData(2, PlayBehaviour_Always);
ui_->combobox_menuplaymode->setItemData(0, PlayBehaviour_Never);
ui_->combobox_menuplaymode->setItemData(1, PlayBehaviour_IfStopped);
ui_->combobox_menuplaymode->setItemData(2, PlayBehaviour_Always);
#ifdef HAVE_TRANSLATIONS
// Populate the language combo box. We do this by looking at all the compiled in translations.
QDir dir(":/translations/");
@@ -121,6 +108,25 @@ BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog *dialog) : SettingsP
ui_->groupbox_language->setVisible(false);
#endif
ui_->combobox_menuplaymode->setItemData(0, PlayBehaviour_Never);
ui_->combobox_menuplaymode->setItemData(1, PlayBehaviour_IfStopped);
ui_->combobox_menuplaymode->setItemData(2, PlayBehaviour_Always);
ui_->combobox_previousmode->setItemData(0, PreviousBehaviour_DontRestart);
ui_->combobox_previousmode->setItemData(1, PreviousBehaviour_Restart);
ui_->combobox_doubleclickaddmode->setItemData(0, AddBehaviour_Append);
ui_->combobox_doubleclickaddmode->setItemData(1, AddBehaviour_Load);
ui_->combobox_doubleclickaddmode->setItemData(2, AddBehaviour_OpenInNew);
ui_->combobox_doubleclickaddmode->setItemData(3, AddBehaviour_Enqueue);
ui_->combobox_doubleclickplaymode->setItemData(0, PlayBehaviour_Never);
ui_->combobox_doubleclickplaymode->setItemData(1, PlayBehaviour_IfStopped);
ui_->combobox_doubleclickplaymode->setItemData(2, PlayBehaviour_Always);
ui_->combobox_doubleclickplaylistaddmode->setItemData(0, PlaylistAddBehaviour_Play);
ui_->combobox_doubleclickplaylistaddmode->setItemData(1, PlaylistAddBehaviour_Enqueue);
#ifdef HAVE_X11
QString de = Utilities::DesktopEnvironment();
if (de.toLower() == "kde")
@@ -154,7 +160,7 @@ void BehaviourSettingsPage::Load() {
ui_->checkbox_keeprunning->setChecked(false);
}
#endif
ui_->checkbox_resumeplayback->setChecked(s.value("resumeplayback", false).toBool());
ui_->checkbox_playingwidget->setChecked(s.value("playing_widget", true).toBool());
MainWindow::StartupBehaviour behaviour = MainWindow::StartupBehaviour(s.value("startupbehaviour", MainWindow::Startup_Remember).toInt());
@@ -164,20 +170,24 @@ void BehaviourSettingsPage::Load() {
case MainWindow::Startup_Remember: ui_->radiobutton_remember->setChecked(true); break;
}
ui_->checkbox_resumeplayback->setChecked(s.value("resumeplayback", false).toBool());
ui_->combobox_doubleclickaddmode->setCurrentIndex(ui_->combobox_doubleclickaddmode->findData(s.value("doubleclick_addmode", AddBehaviour_Append).toInt()));
ui_->combobox_doubleclickplaymode->setCurrentIndex(ui_->combobox_doubleclickplaymode->findData(s.value("doubleclick_playmode", PlayBehaviour_Never).toInt()));
ui_->combobox_menuplaymode->setCurrentIndex(ui_->combobox_menuplaymode->findData(s.value("menu_playmode", PlayBehaviour_Never).toInt()));
ui_->spinbox_seekstepsec->setValue(s.value("seek_step_sec", 10).toInt());
QString name = language_map_.key(s.value("language").toString());
if (name.isEmpty())
ui_->combobox_language->setCurrentIndex(0);
else
ui_->combobox_language->setCurrentIndex(ui_->combobox_language->findText(name));
ui_->combobox_menuplaymode->setCurrentIndex(ui_->combobox_menuplaymode->findData(s.value("menu_playmode", PlayBehaviour_Never).toInt()));
ui_->combobox_previousmode->setCurrentIndex(ui_->combobox_previousmode->findData(s.value("menu_previousmode", PreviousBehaviour_DontRestart).toInt()));
ui_->combobox_doubleclickaddmode->setCurrentIndex(ui_->combobox_doubleclickaddmode->findData(s.value("doubleclick_addmode", AddBehaviour_Append).toInt()));
ui_->combobox_doubleclickplaymode->setCurrentIndex(ui_->combobox_doubleclickplaymode->findData(s.value("doubleclick_playmode", PlayBehaviour_Never).toInt()));
ui_->combobox_doubleclickplaylistaddmode->setCurrentIndex(ui_->combobox_doubleclickplaylistaddmode->findData(s.value("doubleclick_playlist_addmode", PlaylistAddBehaviour_Play).toInt()));
ui_->spinbox_seekstepsec->setValue(s.value("seek_step_sec", 10).toInt());
s.endGroup();
}
@@ -187,28 +197,37 @@ void BehaviourSettingsPage::Save() {
QSettings s;
s.beginGroup(kSettingsGroup);
s.setValue("showtrayicon", ui_->checkbox_showtrayicon->isChecked());
s.setValue("keeprunning", ui_->checkbox_keeprunning->isChecked());
s.setValue("resumeplayback", ui_->checkbox_resumeplayback->isChecked());
s.setValue("playing_widget", ui_->checkbox_playingwidget->isChecked());
s.setValue("scrolltrayicon", ui_->checkbox_scrolltrayicon->isChecked());
MainWindow::StartupBehaviour behaviour = MainWindow::Startup_Remember;
if (ui_->radiobutton_alwayshide->isChecked()) behaviour = MainWindow::Startup_AlwaysHide;
if (ui_->radiobutton_alwaysshow->isChecked()) behaviour = MainWindow::Startup_AlwaysShow;
if (ui_->radiobutton_remember->isChecked()) behaviour = MainWindow::Startup_Remember;
AddBehaviour doubleclick_addmode = AddBehaviour(ui_->combobox_doubleclickaddmode->itemData(ui_->combobox_doubleclickaddmode->currentIndex()).toInt());
PlayBehaviour doubleclick_playmode = PlayBehaviour(ui_->combobox_doubleclickplaymode->itemData(ui_->combobox_doubleclickplaymode->currentIndex()).toInt());
PlayBehaviour menu_playmode = PlayBehaviour(ui_->combobox_menuplaymode->itemData(ui_->combobox_menuplaymode->currentIndex()).toInt());
s.setValue("showtrayicon", ui_->checkbox_showtrayicon->isChecked());
s.setValue("scrolltrayicon", ui_->checkbox_scrolltrayicon->isChecked());
s.setValue("keeprunning", ui_->checkbox_keeprunning->isChecked());
s.setValue("resumeplayback", ui_->checkbox_resumeplayback->isChecked());
s.setValue("playing_widget", ui_->checkbox_playingwidget->isChecked());
s.setValue("startupbehaviour", int(behaviour));
s.setValue("doubleclick_addmode", doubleclick_addmode);
s.setValue("doubleclick_playmode", doubleclick_playmode);
s.setValue("menu_playmode", menu_playmode);
s.setValue("seek_step_sec", ui_->spinbox_seekstepsec->value());
s.setValue("language", language_map_.contains(ui_->combobox_language->currentText()) ? language_map_[ui_->combobox_language->currentText()] : QString());
PlayBehaviour menu_playmode = PlayBehaviour(ui_->combobox_menuplaymode->itemData(ui_->combobox_menuplaymode->currentIndex()).toInt());
PreviousBehaviour menu_previousmode = PreviousBehaviour(ui_->combobox_previousmode->itemData(ui_->combobox_previousmode->currentIndex()).toInt());
AddBehaviour doubleclick_addmode = AddBehaviour(ui_->combobox_doubleclickaddmode->itemData(ui_->combobox_doubleclickaddmode->currentIndex()).toInt());
PlayBehaviour doubleclick_playmode = PlayBehaviour(ui_->combobox_doubleclickplaymode->itemData(ui_->combobox_doubleclickplaymode->currentIndex()).toInt());
PlaylistAddBehaviour doubleclick_playlist_addmode = PlaylistAddBehaviour(ui_->combobox_doubleclickplaylistaddmode->itemData(ui_->combobox_doubleclickplaylistaddmode->currentIndex()).toInt());
s.setValue("menu_playmode", menu_playmode);
s.setValue("menu_previousmode", menu_previousmode);
s.setValue("doubleclick_addmode", doubleclick_addmode);
s.setValue("doubleclick_playmode", doubleclick_playmode);
s.setValue("doubleclick_playlist_addmode", doubleclick_playlist_addmode);
s.setValue("seek_step_sec", ui_->spinbox_seekstepsec->value());
s.endGroup();
}

View File

@@ -43,7 +43,17 @@ public:
static const char *kSettingsGroup;
// Don't change the values
enum PlayBehaviour {
PlayBehaviour_Never = 1,
PlayBehaviour_IfStopped = 2,
PlayBehaviour_Always = 3,
};
enum PreviousBehaviour {
PreviousBehaviour_DontRestart = 1,
PreviousBehaviour_Restart = 2
};
enum AddBehaviour {
AddBehaviour_Append = 1,
AddBehaviour_Enqueue = 2,
@@ -51,14 +61,6 @@ public:
AddBehaviour_OpenInNew = 4
};
// Don't change the values
enum PlayBehaviour {
PlayBehaviour_Never = 1,
PlayBehaviour_IfStopped = 2,
PlayBehaviour_Always = 3,
};
// Don't change the values
enum PlaylistAddBehaviour {
PlaylistAddBehaviour_Play = 1,
PlaylistAddBehaviour_Enqueue = 2,