Add more background image options
This commit is contained in:
@@ -32,19 +32,17 @@
|
||||
#include "appearance.h"
|
||||
#include "settings/appearancesettingspage.h"
|
||||
|
||||
const char *Appearance::kUseCustomColorSet = "use-custom-set";
|
||||
const char *Appearance::kForegroundColor = "foreground-color";
|
||||
const char *Appearance::kBackgroundColor = "background-color";
|
||||
|
||||
const QPalette Appearance::kDefaultPalette = QPalette();
|
||||
|
||||
Appearance::Appearance(QObject *parent) : QObject(parent) {
|
||||
|
||||
QPalette p = QApplication::palette();
|
||||
|
||||
QSettings s;
|
||||
s.beginGroup(AppearanceSettingsPage::kSettingsGroup);
|
||||
QPalette p = QApplication::palette();
|
||||
background_color_ = s.value(kBackgroundColor, p.color(QPalette::WindowText)).value<QColor>();
|
||||
foreground_color_ = s.value(kForegroundColor, p.color(QPalette::Window)).value<QColor>();
|
||||
background_color_ = s.value(AppearanceSettingsPage::kBackgroundColor, p.color(QPalette::WindowText)).value<QColor>();
|
||||
foreground_color_ = s.value(AppearanceSettingsPage::kForegroundColor, p.color(QPalette::Window)).value<QColor>();
|
||||
s.endGroup();
|
||||
|
||||
}
|
||||
|
||||
@@ -52,7 +50,9 @@ void Appearance::LoadUserTheme() {
|
||||
|
||||
QSettings s;
|
||||
s.beginGroup(AppearanceSettingsPage::kSettingsGroup);
|
||||
bool use_a_custom_color_set = s.value(kUseCustomColorSet).toBool();
|
||||
bool use_a_custom_color_set = s.value(AppearanceSettingsPage::kUseCustomColorSet).toBool();
|
||||
s.endGroup();
|
||||
|
||||
if (!use_a_custom_color_set) return;
|
||||
|
||||
ChangeForegroundColor(foreground_color_);
|
||||
|
||||
@@ -30,18 +30,14 @@
|
||||
class Appearance : public QObject {
|
||||
public:
|
||||
explicit Appearance(QObject *parent = nullptr);
|
||||
// Load the user preferred theme, which could the default system theme or a custom set of colors that user has chosen
|
||||
|
||||
static const QPalette kDefaultPalette;
|
||||
|
||||
void LoadUserTheme();
|
||||
void ResetToSystemDefaultTheme();
|
||||
void ChangeForegroundColor(const QColor &color);
|
||||
void ChangeBackgroundColor(const QColor &color);
|
||||
|
||||
static const char *kSettingsGroup;
|
||||
static const char *kUseCustomColorSet;
|
||||
static const char *kForegroundColor;
|
||||
static const char *kBackgroundColor;
|
||||
static const QPalette kDefaultPalette;
|
||||
|
||||
private:
|
||||
QColor foreground_color_;
|
||||
QColor background_color_;
|
||||
|
||||
@@ -215,9 +215,9 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co
|
||||
saved_playback_position_(0),
|
||||
saved_playback_state_(Engine::Empty),
|
||||
playing_widget_(true),
|
||||
doubleclick_addmode_(AddBehaviour_Append),
|
||||
doubleclick_playmode_(PlayBehaviour_Never),
|
||||
menu_playmode_(PlayBehaviour_Never)
|
||||
doubleclick_addmode_(BehaviourSettingsPage::AddBehaviour_Append),
|
||||
doubleclick_playmode_(BehaviourSettingsPage::PlayBehaviour_Never),
|
||||
menu_playmode_(BehaviourSettingsPage::PlayBehaviour_Never)
|
||||
{
|
||||
|
||||
qLog(Debug) << "Starting";
|
||||
@@ -812,10 +812,10 @@ void MainWindow::ReloadSettings() {
|
||||
settings.beginGroup(BehaviourSettingsPage::kSettingsGroup);
|
||||
playing_widget_ = settings.value("playing_widget", true).toBool();
|
||||
if (playing_widget_ != ui_->widget_playing->IsEnabled()) TabSwitched();
|
||||
doubleclick_addmode_ = AddBehaviour(settings.value("doubleclick_addmode", AddBehaviour_Append).toInt());
|
||||
doubleclick_playmode_ = PlayBehaviour(settings.value("doubleclick_playmode", PlayBehaviour_IfStopped).toInt());
|
||||
doubleclick_playlist_addmode_ = PlaylistAddBehaviour(settings.value("doubleclick_playlist_addmode", PlaylistAddBehaviour_Play).toInt());
|
||||
menu_playmode_ = PlayBehaviour(settings.value("menu_playmode", PlayBehaviour_IfStopped).toInt());
|
||||
doubleclick_addmode_ = BehaviourSettingsPage::AddBehaviour(settings.value("doubleclick_addmode", BehaviourSettingsPage::AddBehaviour_Append).toInt());
|
||||
doubleclick_playmode_ = BehaviourSettingsPage::PlayBehaviour(settings.value("doubleclick_playmode", BehaviourSettingsPage::PlayBehaviour_IfStopped).toInt());
|
||||
doubleclick_playlist_addmode_ = BehaviourSettingsPage::PlaylistAddBehaviour(settings.value("doubleclick_playlist_addmode", BehaviourSettingsPage::PlaylistAddBehaviour_Play).toInt());
|
||||
menu_playmode_ = BehaviourSettingsPage::PlayBehaviour(settings.value("menu_playmode", BehaviourSettingsPage::PlayBehaviour_IfStopped).toInt());
|
||||
settings.endGroup();
|
||||
|
||||
settings.beginGroup(kSettingsGroup);
|
||||
@@ -1108,12 +1108,12 @@ void MainWindow::PlaylistDoubleClick(const QModelIndex &index) {
|
||||
QModelIndexList dummyIndexList;
|
||||
|
||||
switch (doubleclick_playlist_addmode_) {
|
||||
case PlaylistAddBehaviour_Play:
|
||||
case BehaviourSettingsPage::PlaylistAddBehaviour_Play:
|
||||
app_->playlist_manager()->SetActiveToCurrent();
|
||||
app_->player()->PlayAt(row, Engine::Manual, true);
|
||||
break;
|
||||
|
||||
case PlaylistAddBehaviour_Enqueue:
|
||||
case BehaviourSettingsPage::PlaylistAddBehaviour_Enqueue:
|
||||
dummyIndexList.append(index);
|
||||
app_->playlist_manager()->current()->queue()->ToggleTracks(dummyIndexList);
|
||||
if (app_->player()->GetState() != Engine::Playing) {
|
||||
@@ -1241,42 +1241,42 @@ void MainWindow::UpdateTrackSliderPosition() {
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::ApplyAddBehaviour(MainWindow::AddBehaviour b, MimeData *data) const {
|
||||
void MainWindow::ApplyAddBehaviour(BehaviourSettingsPage::AddBehaviour b, MimeData *data) const {
|
||||
|
||||
switch (b) {
|
||||
case AddBehaviour_Append:
|
||||
case BehaviourSettingsPage::AddBehaviour_Append:
|
||||
data->clear_first_ = false;
|
||||
data->enqueue_now_ = false;
|
||||
break;
|
||||
|
||||
case AddBehaviour_Enqueue:
|
||||
case BehaviourSettingsPage::AddBehaviour_Enqueue:
|
||||
data->clear_first_ = false;
|
||||
data->enqueue_now_ = true;
|
||||
break;
|
||||
|
||||
case AddBehaviour_Load:
|
||||
case BehaviourSettingsPage::AddBehaviour_Load:
|
||||
data->clear_first_ = true;
|
||||
data->enqueue_now_ = false;
|
||||
break;
|
||||
|
||||
case AddBehaviour_OpenInNew:
|
||||
case BehaviourSettingsPage::AddBehaviour_OpenInNew:
|
||||
data->open_in_new_playlist_ = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::ApplyPlayBehaviour(MainWindow::PlayBehaviour b, MimeData *data) const {
|
||||
void MainWindow::ApplyPlayBehaviour(BehaviourSettingsPage::PlayBehaviour b, MimeData *data) const {
|
||||
|
||||
switch (b) {
|
||||
case PlayBehaviour_Always:
|
||||
case BehaviourSettingsPage::PlayBehaviour_Always:
|
||||
data->play_now_ = true;
|
||||
break;
|
||||
|
||||
case PlayBehaviour_Never:
|
||||
case BehaviourSettingsPage::PlayBehaviour_Never:
|
||||
data->play_now_ = false;
|
||||
break;
|
||||
|
||||
case PlayBehaviour_IfStopped:
|
||||
case BehaviourSettingsPage::PlayBehaviour_IfStopped:
|
||||
data->play_now_ = !(app_->player()->GetState() == Engine::Playing);
|
||||
break;
|
||||
}
|
||||
@@ -1834,7 +1834,7 @@ void MainWindow::CommandlineOptionsReceived(const CommandlineOptions &options) {
|
||||
break;
|
||||
case CommandlineOptions::UrlList_CreateNew:
|
||||
data->name_for_new_playlist_ = options.playlist_name();
|
||||
ApplyAddBehaviour(AddBehaviour_OpenInNew, data);
|
||||
ApplyAddBehaviour(BehaviourSettingsPage::AddBehaviour_OpenInNew, data);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
#include "collection/collectionmodel.h"
|
||||
#include "playlist/playlistitem.h"
|
||||
#include "settings/settingsdialog.h"
|
||||
#include "settings/behavioursettingspage.h"
|
||||
|
||||
using std::unique_ptr;
|
||||
|
||||
@@ -108,27 +109,6 @@ class MainWindow : public QMainWindow, public PlatformInterface {
|
||||
Startup_AlwaysHide = 3,
|
||||
};
|
||||
|
||||
// Don't change the values
|
||||
enum AddBehaviour {
|
||||
AddBehaviour_Append = 1,
|
||||
AddBehaviour_Enqueue = 2,
|
||||
AddBehaviour_Load = 3,
|
||||
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,
|
||||
};
|
||||
|
||||
void SetHiddenInTray(bool hidden);
|
||||
void CommandlineOptionsReceived(const CommandlineOptions& options);
|
||||
|
||||
@@ -278,8 +258,8 @@ signals:
|
||||
|
||||
private:
|
||||
|
||||
void ApplyAddBehaviour(AddBehaviour b, MimeData *data) const;
|
||||
void ApplyPlayBehaviour(PlayBehaviour b, MimeData *data) const;
|
||||
void ApplyAddBehaviour(BehaviourSettingsPage::AddBehaviour b, MimeData *data) const;
|
||||
void ApplyPlayBehaviour(BehaviourSettingsPage::PlayBehaviour b, MimeData *data) const;
|
||||
|
||||
void CheckFullRescanRevisions();
|
||||
|
||||
@@ -370,10 +350,10 @@ signals:
|
||||
int saved_playback_position_;
|
||||
Engine::State saved_playback_state_;
|
||||
bool playing_widget_;
|
||||
AddBehaviour doubleclick_addmode_;
|
||||
PlayBehaviour doubleclick_playmode_;
|
||||
PlaylistAddBehaviour doubleclick_playlist_addmode_;
|
||||
PlayBehaviour menu_playmode_;
|
||||
BehaviourSettingsPage::AddBehaviour doubleclick_addmode_;
|
||||
BehaviourSettingsPage::PlayBehaviour doubleclick_playmode_;
|
||||
BehaviourSettingsPage::PlaylistAddBehaviour doubleclick_playlist_addmode_;
|
||||
BehaviourSettingsPage::PlayBehaviour menu_playmode_;
|
||||
|
||||
Song song_;
|
||||
Song song_playing_;
|
||||
|
||||
@@ -83,11 +83,6 @@ const int PlaylistView::kGlowIntensitySteps = 24;
|
||||
const int PlaylistView::kAutoscrollGraceTimeout = 30; // seconds
|
||||
const int PlaylistView::kDropIndicatorWidth = 2;
|
||||
const int PlaylistView::kDropIndicatorGradientWidth = 5;
|
||||
const char *PlaylistView::kSettingBackgroundImageType = "playlistview_background_type";
|
||||
const char *PlaylistView::kSettingBackgroundImageFilename = "playlistview_background_image_file";
|
||||
|
||||
const int PlaylistView::kDefaultBlurRadius = 0;
|
||||
const int PlaylistView::kDefaultOpacityLevel = 40;
|
||||
|
||||
PlaylistProxyStyle::PlaylistProxyStyle(QStyle *base)
|
||||
: QProxyStyle(base), common_style_(new QCommonStyle) {}
|
||||
@@ -133,19 +128,27 @@ PlaylistView::PlaylistView(QWidget *parent)
|
||||
style_(new PlaylistProxyStyle(style())),
|
||||
playlist_(nullptr),
|
||||
header_(new PlaylistHeader(Qt::Horizontal, this, this)),
|
||||
background_image_type_(AppearanceSettingsPage::BackgroundImageType_Default),
|
||||
background_image_position_(AppearanceSettingsPage::BackgroundImagePosition_BottomRight),
|
||||
background_image_maxsize_(0),
|
||||
background_image_stretch_(false),
|
||||
background_image_keep_aspect_ratio_(true),
|
||||
blur_radius_(AppearanceSettingsPage::kDefaultBlurRadius),
|
||||
opacity_level_(AppearanceSettingsPage::kDefaultOpacityLevel),
|
||||
initialized_(false),
|
||||
background_initialized_(false),
|
||||
setting_initial_header_layout_(false),
|
||||
read_only_settings_(true),
|
||||
header_loaded_(false),
|
||||
background_initialized_(false),
|
||||
background_image_type_(Default),
|
||||
blur_radius_(kDefaultBlurRadius),
|
||||
opacity_level_(kDefaultOpacityLevel),
|
||||
previous_background_image_opacity_(0.0),
|
||||
fade_animation_(new QTimeLine(1000, this)),
|
||||
force_background_redraw_(false),
|
||||
last_height_(-1),
|
||||
last_width_(-1),
|
||||
force_background_redraw_(false),
|
||||
current_background_image_x_(0),
|
||||
current_background_image_y_(0),
|
||||
previous_background_image_x_(0),
|
||||
previous_background_image_y_(0),
|
||||
glow_enabled_(true),
|
||||
currently_glowing_(false),
|
||||
glow_intensity_step_(0),
|
||||
@@ -339,6 +342,7 @@ void PlaylistView::SaveGeometry() {
|
||||
QSettings settings;
|
||||
settings.beginGroup(Playlist::kSettingsGroup);
|
||||
settings.setValue("state", header_->SaveState());
|
||||
settings.endGroup();
|
||||
|
||||
}
|
||||
|
||||
@@ -780,7 +784,7 @@ void PlaylistView::paintEvent(QPaintEvent *event) {
|
||||
// The cached pixmap gets invalidated in dragLeaveEvent, dropEvent and scrollContentsBy.
|
||||
|
||||
// Draw background
|
||||
if (background_image_type_ == Custom || background_image_type_ == Album) {
|
||||
if (background_image_type_ == AppearanceSettingsPage::BackgroundImageType_Custom || background_image_type_ == AppearanceSettingsPage::BackgroundImageType_Album) {
|
||||
if (!background_image_.isNull() || !previous_background_image_.isNull()) {
|
||||
QPainter background_painter(viewport());
|
||||
|
||||
@@ -791,7 +795,19 @@ void PlaylistView::paintEvent(QPaintEvent *event) {
|
||||
cached_scaled_background_image_ = QPixmap();
|
||||
}
|
||||
else {
|
||||
cached_scaled_background_image_ = QPixmap::fromImage(background_image_.scaled(width(), height(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation));
|
||||
if (background_image_stretch_) {
|
||||
if (background_image_keep_aspect_ratio_) {
|
||||
cached_scaled_background_image_ = QPixmap::fromImage(background_image_.scaled(width(), height(), Qt::KeepAspectRatio, Qt::SmoothTransformation));
|
||||
}
|
||||
else {
|
||||
cached_scaled_background_image_ = QPixmap::fromImage(background_image_.scaled(width(), height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
|
||||
}
|
||||
}
|
||||
else {
|
||||
int resize_width = qMin(qMin(background_image_.size().width(), width()), background_image_maxsize_);
|
||||
int resize_height = qMin(qMin(background_image_.size().height(), height()), background_image_maxsize_);
|
||||
cached_scaled_background_image_ = QPixmap::fromImage(background_image_.scaled(resize_width, resize_height, Qt::KeepAspectRatio, Qt::SmoothTransformation));
|
||||
}
|
||||
}
|
||||
|
||||
last_height_ = height();
|
||||
@@ -805,12 +821,34 @@ void PlaylistView::paintEvent(QPaintEvent *event) {
|
||||
if (!qFuzzyCompare(previous_background_image_opacity_, qreal(0.0))) {
|
||||
background_painter.setOpacity(1.0 - previous_background_image_opacity_);
|
||||
}
|
||||
background_painter.drawPixmap((width() - cached_scaled_background_image_.width()) / 2, (height() - cached_scaled_background_image_.height()) / 2, cached_scaled_background_image_);
|
||||
switch (background_image_position_) {
|
||||
case AppearanceSettingsPage::BackgroundImagePosition_UpperLeft:
|
||||
current_background_image_x_ = 0;
|
||||
current_background_image_y_ = 0;
|
||||
break;
|
||||
case AppearanceSettingsPage::BackgroundImagePosition_UpperRight:
|
||||
current_background_image_x_ = (width() - cached_scaled_background_image_.width() - 0);
|
||||
current_background_image_y_ = 0;
|
||||
break;
|
||||
case AppearanceSettingsPage::BackgroundImagePosition_Middle:
|
||||
current_background_image_x_ = ((width() - cached_scaled_background_image_.width()) / 2);
|
||||
current_background_image_y_ = ((height() - cached_scaled_background_image_.height()) / 2);
|
||||
break;
|
||||
case AppearanceSettingsPage::BackgroundImagePosition_BottomLeft:
|
||||
current_background_image_x_ = 0;
|
||||
current_background_image_y_ = (height() - cached_scaled_background_image_.height() - 25);
|
||||
break;
|
||||
case AppearanceSettingsPage::BackgroundImagePosition_BottomRight:
|
||||
default:
|
||||
current_background_image_x_ = (width() - cached_scaled_background_image_.width() - 0);
|
||||
current_background_image_y_ = (height() - cached_scaled_background_image_.height() - 25);
|
||||
}
|
||||
background_painter.drawPixmap(current_background_image_x_, current_background_image_y_, cached_scaled_background_image_);
|
||||
}
|
||||
// Draw the previous background image if we're fading
|
||||
if (!previous_background_image_.isNull()) {
|
||||
background_painter.setOpacity(previous_background_image_opacity_);
|
||||
background_painter.drawPixmap((width() - previous_background_image_.width()) / 2, (height() - previous_background_image_.height()) / 2, previous_background_image_);
|
||||
background_painter.drawPixmap(previous_background_image_x_, previous_background_image_y_, previous_background_image_);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -920,18 +958,29 @@ void PlaylistView::ReloadSettings() {
|
||||
|
||||
s.beginGroup(PlaylistSettingsPage::kSettingsGroup);
|
||||
glow_enabled_ = s.value("glow_effect", true).toBool();
|
||||
bool editmetadatainline = s.value("editmetadatainline", false).toBool();
|
||||
s.endGroup();
|
||||
|
||||
s.beginGroup(Playlist::kSettingsGroup);
|
||||
bool stretch = s.value("stretch", true).toBool();
|
||||
column_alignment_ = s.value("column_alignments").value<ColumnAlignmentMap>();
|
||||
s.endGroup();
|
||||
|
||||
s.beginGroup(AppearanceSettingsPage::kSettingsGroup);
|
||||
QVariant background_image_type_var = s.value(AppearanceSettingsPage::kBackgroundImageType);
|
||||
QVariant background_image_position_var = s.value(AppearanceSettingsPage::kBackgroundImagePosition);
|
||||
int background_image_maxsize = s.value(AppearanceSettingsPage::kBackgroundImageMaxSize).toInt();
|
||||
if (background_image_maxsize <= 10) background_image_maxsize = 9000;
|
||||
QString background_image_filename = s.value(AppearanceSettingsPage::kBackgroundImageFilename).toString();
|
||||
bool background_image_stretch = s.value(AppearanceSettingsPage::kBackgroundImageStretch, false).toBool();
|
||||
bool background_image_keep_aspect_ratio = s.value(AppearanceSettingsPage::kBackgroundImageKeepAspectRatio, true).toBool();
|
||||
int blur_radius = s.value(AppearanceSettingsPage::kBlurRadius, AppearanceSettingsPage::kDefaultBlurRadius).toInt();
|
||||
int opacity_level = s.value(AppearanceSettingsPage::kOpacityLevel, AppearanceSettingsPage::kDefaultOpacityLevel).toInt();
|
||||
s.endGroup();
|
||||
|
||||
if (setting_initial_header_layout_) {
|
||||
s.beginGroup(Playlist::kSettingsGroup);
|
||||
header_->SetStretchEnabled(s.value("stretch", true).toBool());
|
||||
s.endGroup();
|
||||
}
|
||||
|
||||
if (currently_glowing_ && glow_enabled_ && isVisible()) StartGlowing();
|
||||
if (!glow_enabled_) StopGlowing();
|
||||
|
||||
if (setting_initial_header_layout_) {
|
||||
header_->SetStretchEnabled(stretch);
|
||||
|
||||
header_->SetColumnWidth(Playlist::Column_Track, 0.02);
|
||||
header_->SetColumnWidth(Playlist::Column_Title, 0.16);
|
||||
@@ -945,83 +994,84 @@ void PlaylistView::ReloadSettings() {
|
||||
header_->SetColumnWidth(Playlist::Column_Source, 0.06);
|
||||
|
||||
setting_initial_header_layout_ = false;
|
||||
|
||||
}
|
||||
|
||||
s.beginGroup(Playlist::kSettingsGroup);
|
||||
column_alignment_ = s.value("column_alignments").value<ColumnAlignmentMap>();
|
||||
s.endGroup();
|
||||
if (currently_glowing_ && glow_enabled_ && isVisible()) StartGlowing();
|
||||
if (!glow_enabled_) StopGlowing();
|
||||
|
||||
if (column_alignment_.isEmpty()) {
|
||||
column_alignment_ = DefaultColumnAlignment();
|
||||
}
|
||||
|
||||
emit ColumnAlignmentChanged(column_alignment_);
|
||||
|
||||
|
||||
// Background:
|
||||
s.beginGroup(AppearanceSettingsPage::kSettingsGroup);
|
||||
QVariant q_playlistview_background_type = s.value(kSettingBackgroundImageType);
|
||||
s.endGroup();
|
||||
BackgroundImageType background_type(Default);
|
||||
// bg_enabled should also be checked for backward compatibility (in releases <= 1.0, there was just a boolean to activate/deactivate the background)
|
||||
s.beginGroup(Playlist::kSettingsGroup);
|
||||
QVariant bg_enabled = s.value("bg_enabled");
|
||||
s.endGroup();
|
||||
if (q_playlistview_background_type.isValid()) {
|
||||
background_type = static_cast<BackgroundImageType>(q_playlistview_background_type.toInt());
|
||||
}
|
||||
else if (bg_enabled.isValid()) {
|
||||
if (bg_enabled.toBool()) {
|
||||
background_type = Default;
|
||||
}
|
||||
else {
|
||||
background_type = None;
|
||||
}
|
||||
AppearanceSettingsPage::BackgroundImageType background_image_type(AppearanceSettingsPage::BackgroundImageType_Default);
|
||||
if (background_image_type_var.isValid()) {
|
||||
background_image_type = static_cast<AppearanceSettingsPage::BackgroundImageType>(background_image_type_var.toInt());
|
||||
}
|
||||
else {
|
||||
background_type = Default;
|
||||
background_image_type = AppearanceSettingsPage::BackgroundImageType_Default;
|
||||
}
|
||||
s.beginGroup(AppearanceSettingsPage::kSettingsGroup);
|
||||
QString background_image_filename = s.value(kSettingBackgroundImageFilename).toString();
|
||||
int blur_radius = s.value("blur_radius", kDefaultBlurRadius).toInt();
|
||||
int opacity_level = s.value("opacity_level", kDefaultOpacityLevel).toInt();
|
||||
s.endGroup();
|
||||
|
||||
AppearanceSettingsPage::BackgroundImagePosition background_image_position(AppearanceSettingsPage::BackgroundImagePosition_BottomRight);
|
||||
if (background_image_position_var.isValid()) {
|
||||
background_image_position = static_cast<AppearanceSettingsPage::BackgroundImagePosition>(background_image_position_var.toInt());
|
||||
}
|
||||
else {
|
||||
background_image_position = AppearanceSettingsPage::BackgroundImagePosition_BottomRight;
|
||||
}
|
||||
|
||||
// Check if background properties have changed.
|
||||
// We change properties only if they have actually changed, to avoid to call set_background_image when it is not needed,
|
||||
// as this will cause the fading animation to start again.
|
||||
// This also avoid to do useless "force_background_redraw".
|
||||
|
||||
if (!background_initialized_ || background_image_filename != background_image_filename_ || background_type != background_image_type_ || blur_radius_ != blur_radius || opacity_level_ != opacity_level) {
|
||||
if (
|
||||
!background_initialized_ ||
|
||||
background_image_type != background_image_type_ ||
|
||||
background_image_filename != background_image_filename_ ||
|
||||
background_image_position != background_image_position_ ||
|
||||
background_image_maxsize != background_image_maxsize_ ||
|
||||
background_image_stretch != background_image_stretch_ ||
|
||||
background_image_keep_aspect_ratio != background_image_keep_aspect_ratio_ ||
|
||||
blur_radius_ != blur_radius ||
|
||||
opacity_level_ != opacity_level
|
||||
) {
|
||||
|
||||
background_initialized_ = true;
|
||||
// Store background properties
|
||||
background_image_type_ = background_type;
|
||||
background_image_type_ = background_image_type;
|
||||
background_image_filename_ = background_image_filename;
|
||||
background_image_position_ = background_image_position;
|
||||
background_image_maxsize_ = background_image_maxsize;
|
||||
background_image_stretch_ = background_image_stretch;
|
||||
background_image_keep_aspect_ratio_ = background_image_keep_aspect_ratio;
|
||||
blur_radius_ = blur_radius;
|
||||
opacity_level_ = opacity_level;
|
||||
if (background_image_type_ == Custom) {
|
||||
|
||||
if (background_image_type_ == AppearanceSettingsPage::BackgroundImageType_Custom) {
|
||||
set_background_image(QImage(background_image_filename));
|
||||
}
|
||||
else if (background_image_type_ == Album) {
|
||||
else if (background_image_type_ == AppearanceSettingsPage::BackgroundImageType_Album) {
|
||||
set_background_image(current_song_cover_art_);
|
||||
}
|
||||
else {
|
||||
// User changed background image type to something that will not be painted through paintEvent: reset all background images.
|
||||
// This avoid to use old (deprecated) images for fading when selecting Album or Custom background image type later.
|
||||
//set_background_image(QImage(":/pictures/playlistbg.png"));
|
||||
set_background_image(QImage());
|
||||
cached_scaled_background_image_ = QPixmap();
|
||||
previous_background_image_ = QPixmap();
|
||||
}
|
||||
setProperty("default_background_enabled", background_image_type_ == Default);
|
||||
setProperty("default_background_enabled", background_image_type_ == AppearanceSettingsPage::BackgroundImageType_Default);
|
||||
emit BackgroundPropertyChanged();
|
||||
force_background_redraw_ = true;
|
||||
}
|
||||
|
||||
s.beginGroup(PlaylistSettingsPage::kSettingsGroup);
|
||||
if(!s.value("editmetadatainline", false).toBool())
|
||||
setEditTriggers(editTriggers() & ~QAbstractItemView::SelectedClicked);
|
||||
else
|
||||
if (editmetadatainline)
|
||||
setEditTriggers(editTriggers() | QAbstractItemView::SelectedClicked);
|
||||
|
||||
s.endGroup();
|
||||
else
|
||||
setEditTriggers(editTriggers() & ~QAbstractItemView::SelectedClicked);
|
||||
|
||||
}
|
||||
|
||||
@@ -1036,7 +1086,7 @@ void PlaylistView::SaveSettings() {
|
||||
s.endGroup();
|
||||
|
||||
s.beginGroup(AppearanceSettingsPage::kSettingsGroup);
|
||||
s.setValue(kSettingBackgroundImageType, background_image_type_);
|
||||
s.setValue(AppearanceSettingsPage::kBackgroundImageType, background_image_type_);
|
||||
s.endGroup();
|
||||
|
||||
s.beginGroup(Playlist::kSettingsGroup);
|
||||
@@ -1046,9 +1096,11 @@ void PlaylistView::SaveSettings() {
|
||||
}
|
||||
|
||||
void PlaylistView::StretchChanged(bool stretch) {
|
||||
|
||||
if (!initialized_) return;
|
||||
setHorizontalScrollBarPolicy(stretch ? Qt::ScrollBarAlwaysOff : Qt::ScrollBarAsNeeded);
|
||||
SaveGeometry();
|
||||
|
||||
}
|
||||
|
||||
bool PlaylistView::eventFilter(QObject *object, QEvent *event) {
|
||||
@@ -1140,7 +1192,7 @@ void PlaylistView::CurrentSongChanged(const Song &song, const QString &uri, cons
|
||||
if (current_song_cover_art_ == song_art) return;
|
||||
|
||||
current_song_cover_art_ = song_art;
|
||||
if (background_image_type_ == Album) {
|
||||
if (background_image_type_ == AppearanceSettingsPage::BackgroundImageType_Album) {
|
||||
if (song.art_automatic().isEmpty() && song.art_manual().isEmpty()) {
|
||||
set_background_image(QImage());
|
||||
}
|
||||
@@ -1157,6 +1209,8 @@ void PlaylistView::set_background_image(const QImage &image) {
|
||||
|
||||
// Save previous image, for fading
|
||||
previous_background_image_ = cached_scaled_background_image_;
|
||||
previous_background_image_x_ = current_background_image_x_;
|
||||
previous_background_image_y_ = current_background_image_y_;
|
||||
|
||||
if (image.isNull() || image.format() == QImage::Format_ARGB32) {
|
||||
background_image_ = image;
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
#include <QStyleOptionViewItem>
|
||||
#include <QtEvents>
|
||||
|
||||
#include "settings/appearancesettingspage.h"
|
||||
#include "playlist.h"
|
||||
|
||||
class QEvent;
|
||||
@@ -89,23 +90,10 @@ public:
|
||||
class PlaylistView : public QTreeView {
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum BackgroundImageType {
|
||||
Default,
|
||||
None,
|
||||
Custom,
|
||||
Album
|
||||
};
|
||||
|
||||
PlaylistView(QWidget *parent = nullptr);
|
||||
~PlaylistView();
|
||||
|
||||
// Constants for settings: are persistent, values should not be changed
|
||||
static const char *kSettingBackgroundImageType;
|
||||
static const char *kSettingBackgroundImageFilename;
|
||||
|
||||
static const int kDefaultBlurRadius;
|
||||
static const int kDefaultOpacityLevel;
|
||||
|
||||
static ColumnAlignmentMap DefaultColumnAlignment();
|
||||
|
||||
void SetApplication(Application *app);
|
||||
@@ -116,7 +104,7 @@ class PlaylistView : public QTreeView {
|
||||
void SetReadOnlySettings(bool read_only) { read_only_settings_ = read_only; }
|
||||
|
||||
Playlist *playlist() const { return playlist_; }
|
||||
BackgroundImageType background_image_type() const { return background_image_type_; }
|
||||
AppearanceSettingsPage::BackgroundImageType background_image_type() const { return background_image_type_; }
|
||||
Qt::Alignment column_alignment(int section) const;
|
||||
|
||||
// QTreeView
|
||||
@@ -193,7 +181,7 @@ class PlaylistView : public QTreeView {
|
||||
QList<QPixmap> LoadBarPixmap(const QString &filename);
|
||||
void UpdateCachedCurrentRowPixmap(QStyleOptionViewItem option, const QModelIndex &index);
|
||||
|
||||
void set_background_image_type(BackgroundImageType bg) {
|
||||
void set_background_image_type(AppearanceSettingsPage::BackgroundImageType bg) {
|
||||
background_image_type_ = bg;
|
||||
emit BackgroundPropertyChanged();
|
||||
}
|
||||
@@ -215,21 +203,23 @@ class PlaylistView : public QTreeView {
|
||||
PlaylistProxyStyle *style_;
|
||||
Playlist *playlist_;
|
||||
PlaylistHeader *header_;
|
||||
|
||||
AppearanceSettingsPage::BackgroundImageType background_image_type_;
|
||||
QString background_image_filename_;
|
||||
AppearanceSettingsPage::BackgroundImagePosition background_image_position_;
|
||||
int background_image_maxsize_;
|
||||
bool background_image_stretch_;
|
||||
bool background_image_keep_aspect_ratio_;
|
||||
int blur_radius_;
|
||||
int opacity_level_;
|
||||
|
||||
bool initialized_;
|
||||
bool background_initialized_;
|
||||
bool setting_initial_header_layout_;
|
||||
bool read_only_settings_;
|
||||
bool header_loaded_;
|
||||
|
||||
bool background_initialized_;
|
||||
BackgroundImageType background_image_type_;
|
||||
// Stores the background image to be displayed.
|
||||
// As we want this image to be particular (in terms of format, opacity),
|
||||
// you should probably use set_background_image_type instead of modifying background_image_ directly
|
||||
QImage background_image_;
|
||||
int blur_radius_;
|
||||
int opacity_level_;
|
||||
// Used if background image is a filemane
|
||||
QString background_image_filename_;
|
||||
QImage current_song_cover_art_;
|
||||
QPixmap cached_scaled_background_image_;
|
||||
|
||||
@@ -239,9 +229,13 @@ class PlaylistView : public QTreeView {
|
||||
QTimeLine *fade_animation_;
|
||||
|
||||
// To know if we should redraw the background or not
|
||||
bool force_background_redraw_;
|
||||
int last_height_;
|
||||
int last_width_;
|
||||
bool force_background_redraw_;
|
||||
int current_background_image_x_;
|
||||
int current_background_image_y_;
|
||||
int previous_background_image_x_;
|
||||
int previous_background_image_y_;
|
||||
|
||||
bool glow_enabled_;
|
||||
bool currently_glowing_;
|
||||
|
||||
@@ -44,33 +44,60 @@
|
||||
|
||||
const char *AppearanceSettingsPage::kSettingsGroup = "Appearance";
|
||||
|
||||
const char *AppearanceSettingsPage::kUseCustomColorSet = "use-custom-set";
|
||||
const char *AppearanceSettingsPage::kForegroundColor = "foreground-color";
|
||||
const char *AppearanceSettingsPage::kBackgroundColor = "background-color";
|
||||
|
||||
const char *AppearanceSettingsPage::kBackgroundImageType = "background_image_type";
|
||||
const char *AppearanceSettingsPage::kBackgroundImageFilename = "background_image_file";
|
||||
const char *AppearanceSettingsPage::kBackgroundImagePosition = "background_image_position";
|
||||
const char *AppearanceSettingsPage::kBackgroundImageStretch = "background_image_stretch";
|
||||
const char *AppearanceSettingsPage::kBackgroundImageKeepAspectRatio = "background_image_keep_aspect_ratio";
|
||||
const char *AppearanceSettingsPage::kBackgroundImageMaxSize = "background_image_max_size";
|
||||
|
||||
const char *AppearanceSettingsPage::kBlurRadius = "blur_radius";
|
||||
const char *AppearanceSettingsPage::kOpacityLevel = "opacity_level";
|
||||
|
||||
const int AppearanceSettingsPage::kDefaultBlurRadius = 0;
|
||||
const int AppearanceSettingsPage::kDefaultOpacityLevel = 40;
|
||||
|
||||
const char *AppearanceSettingsPage::kSystemThemeIcons = "system_icons";
|
||||
|
||||
AppearanceSettingsPage::AppearanceSettingsPage(SettingsDialog *dialog)
|
||||
: SettingsPage(dialog),
|
||||
ui_(new Ui_AppearanceSettingsPage),
|
||||
original_use_a_custom_color_set_(false),
|
||||
playlist_view_background_image_type_(PlaylistView::Default) {
|
||||
background_image_type_(BackgroundImageType_Default) {
|
||||
|
||||
ui_->setupUi(this);
|
||||
setWindowIcon(IconLoader::Load("view-media-visualization"));
|
||||
|
||||
ui_->combobox_backgroundimageposition->setItemData(0, BackgroundImagePosition_UpperLeft);
|
||||
ui_->combobox_backgroundimageposition->setItemData(1, BackgroundImagePosition_UpperRight);
|
||||
ui_->combobox_backgroundimageposition->setItemData(2, BackgroundImagePosition_Middle);
|
||||
ui_->combobox_backgroundimageposition->setItemData(3, BackgroundImagePosition_BottomLeft);
|
||||
ui_->combobox_backgroundimageposition->setItemData(4, BackgroundImagePosition_BottomRight);
|
||||
|
||||
connect(ui_->blur_slider, SIGNAL(valueChanged(int)), SLOT(BlurLevelChanged(int)));
|
||||
connect(ui_->opacity_slider, SIGNAL(valueChanged(int)), SLOT(OpacityLevelChanged(int)));
|
||||
|
||||
Load();
|
||||
|
||||
connect(ui_->use_a_custom_color_set, SIGNAL(toggled(bool)), SLOT(UseCustomColorSetOptionChanged(bool)));
|
||||
connect(ui_->select_foreground_color, SIGNAL(pressed()), SLOT(SelectForegroundColor()));
|
||||
connect(ui_->select_background_color, SIGNAL(pressed()), SLOT(SelectBackgroundColor()));
|
||||
connect(ui_->use_a_custom_color_set, SIGNAL(toggled(bool)), SLOT(UseCustomColorSetOptionChanged(bool)));
|
||||
|
||||
connect(ui_->use_default_background, SIGNAL(toggled(bool)), ui_->widget_custom_background_image_options, SLOT(setDisabled(bool)));
|
||||
connect(ui_->use_no_background, SIGNAL(toggled(bool)), ui_->widget_custom_background_image_options, SLOT(setDisabled(bool)));
|
||||
connect(ui_->use_custom_background_image, SIGNAL(toggled(bool)), ui_->widget_custom_background_image_options, SLOT(setEnabled(bool)));
|
||||
connect(ui_->use_album_cover_background, SIGNAL(toggled(bool)), ui_->widget_custom_background_image_options, SLOT(setEnabled(bool)));
|
||||
|
||||
connect(ui_->select_background_image_filename_button, SIGNAL(pressed()), SLOT(SelectBackgroundImage()));
|
||||
connect(ui_->use_custom_background_image, SIGNAL(toggled(bool)), ui_->background_image_filename, SLOT(setEnabled(bool)));
|
||||
connect(ui_->use_custom_background_image, SIGNAL(toggled(bool)), ui_->select_background_image_filename_button, SLOT(setEnabled(bool)));
|
||||
|
||||
connect(ui_->use_custom_background_image, SIGNAL(toggled(bool)), ui_->blur_slider, SLOT(setEnabled(bool)));
|
||||
connect(ui_->use_album_cover_background, SIGNAL(toggled(bool)), ui_->blur_slider, SLOT(setEnabled(bool)));
|
||||
connect(ui_->checkbox_background_image_stretch, SIGNAL(toggled(bool)), ui_->checkbox_background_image_keep_aspect_ratio, SLOT(setEnabled(bool)));
|
||||
connect(ui_->checkbox_background_image_stretch, SIGNAL(toggled(bool)), ui_->spinbox_background_image_maxsize, SLOT(setDisabled(bool)));
|
||||
|
||||
connect(ui_->use_default_background, SIGNAL(toggled(bool)), SLOT(DisableBlurAndOpacitySliders(bool)));
|
||||
connect(ui_->use_no_background, SIGNAL(toggled(bool)), SLOT(DisableBlurAndOpacitySliders(bool)));
|
||||
Load();
|
||||
|
||||
}
|
||||
|
||||
@@ -86,11 +113,11 @@ void AppearanceSettingsPage::Load() {
|
||||
QPalette p = QApplication::palette();
|
||||
|
||||
// Keep in mind originals colors, in case the user clicks on Cancel, to be able to restore colors
|
||||
original_use_a_custom_color_set_ = s.value(Appearance::kUseCustomColorSet, false).toBool();
|
||||
original_use_a_custom_color_set_ = s.value(kUseCustomColorSet, false).toBool();
|
||||
|
||||
original_foreground_color_ = s.value(Appearance::kForegroundColor, p.color(QPalette::WindowText)).value<QColor>();
|
||||
original_foreground_color_ = s.value(kForegroundColor, p.color(QPalette::WindowText)).value<QColor>();
|
||||
current_foreground_color_ = original_foreground_color_;
|
||||
original_background_color_ = s.value(Appearance::kBackgroundColor, p.color(QPalette::Window)).value<QColor>();
|
||||
original_background_color_ = s.value(kBackgroundColor, p.color(QPalette::Window)).value<QColor>();
|
||||
current_background_color_ = original_background_color_;
|
||||
|
||||
InitColorSelectorsColors();
|
||||
@@ -99,32 +126,35 @@ void AppearanceSettingsPage::Load() {
|
||||
|
||||
// Playlist settings
|
||||
s.beginGroup(kSettingsGroup);
|
||||
playlist_view_background_image_type_ = static_cast<PlaylistView::BackgroundImageType>(s.value(PlaylistView::kSettingBackgroundImageType).toInt());
|
||||
playlist_view_background_image_filename_ = s.value(PlaylistView::kSettingBackgroundImageFilename).toString();
|
||||
background_image_type_ = static_cast<BackgroundImageType>(s.value(kBackgroundImageType).toInt());
|
||||
background_image_filename_ = s.value(kBackgroundImageFilename).toString();
|
||||
|
||||
ui_->use_system_color_set->setChecked(!original_use_a_custom_color_set_);
|
||||
ui_->use_a_custom_color_set->setChecked(original_use_a_custom_color_set_);
|
||||
|
||||
switch (playlist_view_background_image_type_) {
|
||||
case PlaylistView::None:
|
||||
switch (background_image_type_) {
|
||||
case BackgroundImageType_None:
|
||||
ui_->use_no_background->setChecked(true);
|
||||
DisableBlurAndOpacitySliders(true);
|
||||
break;
|
||||
case PlaylistView::Album:
|
||||
case BackgroundImageType_Album:
|
||||
ui_->use_album_cover_background->setChecked(true);
|
||||
break;
|
||||
case PlaylistView::Custom:
|
||||
case BackgroundImageType_Custom:
|
||||
ui_->use_custom_background_image->setChecked(true);
|
||||
break;
|
||||
case PlaylistView::Default:
|
||||
case BackgroundImageType_Default:
|
||||
default:
|
||||
ui_->use_default_background->setChecked(true);
|
||||
DisableBlurAndOpacitySliders(true);
|
||||
}
|
||||
ui_->background_image_filename->setText(playlist_view_background_image_filename_);
|
||||
ui_->blur_slider->setValue(s.value("blur_radius", PlaylistView::kDefaultBlurRadius).toInt());
|
||||
ui_->opacity_slider->setValue(s.value("opacity_level", PlaylistView::kDefaultOpacityLevel).toInt());
|
||||
ui_->checkbox_system_icons->setChecked(s.value("system_icons", false).toBool());
|
||||
ui_->background_image_filename->setText(background_image_filename_);
|
||||
|
||||
ui_->combobox_backgroundimageposition->setCurrentIndex(ui_->combobox_backgroundimageposition->findData(s.value(kBackgroundImagePosition, BackgroundImagePosition_BottomRight).toInt()));
|
||||
ui_->spinbox_background_image_maxsize->setValue(s.value(kBackgroundImageMaxSize, 0).toInt());
|
||||
ui_->checkbox_background_image_stretch->setChecked(s.value(kBackgroundImageStretch, false).toBool());
|
||||
ui_->checkbox_background_image_keep_aspect_ratio->setChecked(s.value(kBackgroundImageKeepAspectRatio, true).toBool());
|
||||
ui_->blur_slider->setValue(s.value(kBlurRadius, kDefaultBlurRadius).toInt());
|
||||
ui_->opacity_slider->setValue(s.value(kOpacityLevel, kDefaultOpacityLevel).toInt());
|
||||
ui_->checkbox_system_icons->setChecked(s.value(kSystemThemeIcons, false).toBool());
|
||||
|
||||
s.endGroup();
|
||||
|
||||
@@ -136,33 +166,41 @@ void AppearanceSettingsPage::Save() {
|
||||
|
||||
s.beginGroup(kSettingsGroup);
|
||||
bool use_a_custom_color_set = ui_->use_a_custom_color_set->isChecked();
|
||||
s.setValue(Appearance::kUseCustomColorSet, use_a_custom_color_set);
|
||||
s.setValue(kUseCustomColorSet, use_a_custom_color_set);
|
||||
if (use_a_custom_color_set) {
|
||||
s.setValue(Appearance::kBackgroundColor, current_background_color_);
|
||||
s.setValue(Appearance::kForegroundColor, current_foreground_color_);
|
||||
s.setValue(kBackgroundColor, current_background_color_);
|
||||
s.setValue(kForegroundColor, current_foreground_color_);
|
||||
}
|
||||
else {
|
||||
dialog()->appearance()->ResetToSystemDefaultTheme();
|
||||
}
|
||||
|
||||
playlist_view_background_image_filename_ = ui_->background_image_filename->text();
|
||||
background_image_filename_ = ui_->background_image_filename->text();
|
||||
if (ui_->use_no_background->isChecked()) {
|
||||
playlist_view_background_image_type_ = PlaylistView::None;
|
||||
background_image_type_ = BackgroundImageType_None;
|
||||
}
|
||||
else if (ui_->use_album_cover_background->isChecked()) {
|
||||
playlist_view_background_image_type_ = PlaylistView::Album;
|
||||
background_image_type_ = BackgroundImageType_Album;
|
||||
}
|
||||
else if (ui_->use_default_background->isChecked()) {
|
||||
playlist_view_background_image_type_ = PlaylistView::Default;
|
||||
background_image_type_ = BackgroundImageType_Default;
|
||||
}
|
||||
else if (ui_->use_custom_background_image->isChecked()) {
|
||||
playlist_view_background_image_type_ = PlaylistView::Custom;
|
||||
s.setValue(PlaylistView::kSettingBackgroundImageFilename, playlist_view_background_image_filename_);
|
||||
background_image_type_ = BackgroundImageType_Custom;
|
||||
s.setValue(kBackgroundImageFilename, background_image_filename_);
|
||||
}
|
||||
s.setValue(PlaylistView::kSettingBackgroundImageType, playlist_view_background_image_type_);
|
||||
s.setValue("blur_radius", ui_->blur_slider->value());
|
||||
s.setValue("opacity_level", ui_->opacity_slider->value());
|
||||
s.setValue("system_icons", ui_->checkbox_system_icons->isChecked());
|
||||
s.setValue(kBackgroundImageType, background_image_type_);
|
||||
|
||||
BackgroundImagePosition backgroundimageposition = BackgroundImagePosition(ui_->combobox_backgroundimageposition->itemData(ui_->combobox_backgroundimageposition->currentIndex()).toInt());
|
||||
s.setValue(kBackgroundImageMaxSize, ui_->spinbox_background_image_maxsize->value());
|
||||
s.setValue(kBackgroundImagePosition, backgroundimageposition);
|
||||
s.setValue(kBackgroundImageStretch, ui_->checkbox_background_image_stretch->isChecked());
|
||||
s.setValue(kBackgroundImageKeepAspectRatio, ui_->checkbox_background_image_keep_aspect_ratio->isChecked());
|
||||
|
||||
s.setValue(kBlurRadius, ui_->blur_slider->value());
|
||||
s.setValue(kOpacityLevel, ui_->opacity_slider->value());
|
||||
|
||||
s.setValue(kSystemThemeIcons, ui_->checkbox_system_icons->isChecked());
|
||||
|
||||
s.endGroup();
|
||||
|
||||
@@ -228,10 +266,10 @@ void AppearanceSettingsPage::UpdateColorSelectorColor(QWidget *color_selector, c
|
||||
|
||||
void AppearanceSettingsPage::SelectBackgroundImage() {
|
||||
|
||||
QString selected_filename = QFileDialog::getOpenFileName(this, tr("Select background image"), playlist_view_background_image_filename_, tr(AlbumCoverChoiceController::kLoadImageFileFilter) + ";;" + tr(AlbumCoverChoiceController::kAllFilesFilter));
|
||||
QString selected_filename = QFileDialog::getOpenFileName(this, tr("Select background image"), background_image_filename_, tr(AlbumCoverChoiceController::kLoadImageFileFilter) + ";;" + tr(AlbumCoverChoiceController::kAllFilesFilter));
|
||||
if (selected_filename.isEmpty()) return;
|
||||
playlist_view_background_image_filename_ = selected_filename;
|
||||
ui_->background_image_filename->setText(playlist_view_background_image_filename_);
|
||||
background_image_filename_ = selected_filename;
|
||||
ui_->background_image_filename->setText(background_image_filename_);
|
||||
|
||||
}
|
||||
|
||||
@@ -242,17 +280,3 @@ void AppearanceSettingsPage::BlurLevelChanged(int value) {
|
||||
void AppearanceSettingsPage::OpacityLevelChanged(int percent) {
|
||||
ui_->background_opacity_label->setText(QString("%1\%").arg(percent));
|
||||
}
|
||||
|
||||
void AppearanceSettingsPage::DisableBlurAndOpacitySliders(bool checked) {
|
||||
|
||||
// Blur slider
|
||||
ui_->blur_slider->setDisabled(checked);
|
||||
ui_->background_blur_radius_label->setDisabled(checked);
|
||||
ui_->select_background_blur_label->setDisabled(checked);
|
||||
|
||||
// Opacity slider
|
||||
ui_->opacity_slider->setDisabled(checked);
|
||||
ui_->background_opacity_label->setDisabled(checked);
|
||||
ui_->select_opacity_level_label->setDisabled(checked);
|
||||
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
#include <QString>
|
||||
#include <QColor>
|
||||
|
||||
#include "playlist/playlistview.h"
|
||||
#include "settingspage.h"
|
||||
|
||||
class SettingsDialog;
|
||||
@@ -42,22 +41,56 @@ class AppearanceSettingsPage : public SettingsPage {
|
||||
public:
|
||||
AppearanceSettingsPage(SettingsDialog *dialog);
|
||||
~AppearanceSettingsPage();
|
||||
|
||||
static const char *kSettingsGroup;
|
||||
|
||||
static const char *kUseCustomColorSet;
|
||||
static const char *kForegroundColor;
|
||||
static const char *kBackgroundColor;
|
||||
|
||||
static const char *kBackgroundImageType;
|
||||
static const char *kBackgroundImageFilename;
|
||||
static const char *kBackgroundImagePosition;
|
||||
static const char *kBackgroundImageStretch;
|
||||
static const char *kBackgroundImageKeepAspectRatio;
|
||||
static const char *kBackgroundImageMaxSize;
|
||||
|
||||
static const char *kBlurRadius;
|
||||
static const char *kOpacityLevel;
|
||||
|
||||
static const int kDefaultBlurRadius;
|
||||
static const int kDefaultOpacityLevel;
|
||||
|
||||
static const char *kSystemThemeIcons;
|
||||
|
||||
enum BackgroundImageType {
|
||||
BackgroundImageType_Default,
|
||||
BackgroundImageType_None,
|
||||
BackgroundImageType_Custom,
|
||||
BackgroundImageType_Album
|
||||
};
|
||||
|
||||
enum BackgroundImagePosition {
|
||||
BackgroundImagePosition_UpperLeft = 1,
|
||||
BackgroundImagePosition_UpperRight = 2,
|
||||
BackgroundImagePosition_Middle = 3,
|
||||
BackgroundImagePosition_BottomLeft = 4,
|
||||
BackgroundImagePosition_BottomRight = 5
|
||||
};
|
||||
|
||||
void Load();
|
||||
void Save();
|
||||
void Cancel();
|
||||
|
||||
private slots:
|
||||
private slots:
|
||||
void SelectForegroundColor();
|
||||
void SelectBackgroundColor();
|
||||
void UseCustomColorSetOptionChanged(bool);
|
||||
void SelectBackgroundImage();
|
||||
void BlurLevelChanged(int);
|
||||
void OpacityLevelChanged(int);
|
||||
void DisableBlurAndOpacitySliders(bool);
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
// Set the widget's background to new_color
|
||||
void UpdateColorSelectorColor(QWidget *color_selector, const QColor &new_color);
|
||||
@@ -65,13 +98,14 @@ private:
|
||||
void InitColorSelectorsColors();
|
||||
|
||||
Ui_AppearanceSettingsPage *ui_;
|
||||
|
||||
bool original_use_a_custom_color_set_;
|
||||
QColor original_foreground_color_;
|
||||
QColor original_background_color_;
|
||||
QColor current_foreground_color_;
|
||||
QColor current_background_color_;
|
||||
PlaylistView::BackgroundImageType playlist_view_background_image_type_;
|
||||
QString playlist_view_background_image_filename_;
|
||||
BackgroundImageType background_image_type_;
|
||||
QString background_image_filename_;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -7,19 +7,19 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>596</width>
|
||||
<height>566</height>
|
||||
<height>627</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Appearance</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<layout class="QVBoxLayout" name="layout_apperance_settings_page">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<widget class="QGroupBox" name="groupbox_colors">
|
||||
<property name="title">
|
||||
<string>Colors</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<layout class="QVBoxLayout" name="layout_colors">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="use_system_color_set">
|
||||
<property name="text">
|
||||
@@ -35,7 +35,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_1">
|
||||
<layout class="QHBoxLayout" name="layout_foreground_color">
|
||||
<item>
|
||||
<widget class="QLabel" name="select_foreground_color_label">
|
||||
<property name="enabled">
|
||||
@@ -59,7 +59,7 @@
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<layout class="QHBoxLayout" name="layout_background_color">
|
||||
<item>
|
||||
<widget class="QLabel" name="select_background_color_label">
|
||||
<property name="enabled">
|
||||
@@ -86,11 +86,11 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<widget class="QGroupBox" name="groupbox_background_image">
|
||||
<property name="title">
|
||||
<string>Background image</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<layout class="QVBoxLayout" name="layout_background_image">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="use_default_background">
|
||||
<property name="text">
|
||||
@@ -98,6 +98,13 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="use_no_background">
|
||||
<property name="text">
|
||||
<string>&No background image</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="use_album_cover_background">
|
||||
<property name="toolTip">
|
||||
@@ -109,14 +116,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="use_no_background">
|
||||
<property name="text">
|
||||
<string>&No background image</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<layout class="QHBoxLayout" name="layout_custom_image">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="use_custom_background_image">
|
||||
<property name="text">
|
||||
@@ -144,80 +144,211 @@
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="select_background_blur_label">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Blur amount</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSlider" name="blur_slider">
|
||||
<property name="minimum">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>1</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QLabel" name="background_blur_radius_label">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0px</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="select_opacity_level_label">
|
||||
<property name="text">
|
||||
<string>Opacity</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QSlider" name="opacity_slider">
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>10</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLabel" name="background_opacity_label">
|
||||
<property name="text">
|
||||
<string>40%</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<widget class="QWidget" name="widget_custom_background_image_options" native="true">
|
||||
<layout class="QVBoxLayout" name="layout_custom_background_image_options">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_custom_position" native="true">
|
||||
<layout class="QHBoxLayout" name="layout_custom_position">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_position">
|
||||
<property name="text">
|
||||
<string>Position</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="combobox_backgroundimageposition">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Upper Left</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Upper Right</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Middle</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Bottom Left</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Bottom Right</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Max cover size</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="spinbox_background_image_maxsize">
|
||||
<property name="maximum">
|
||||
<number>9000</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="spacer_position">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_background_image_stretch" native="true">
|
||||
<layout class="QHBoxLayout" name="layout_background_image_stretch">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="checkbox_background_image_stretch">
|
||||
<property name="text">
|
||||
<string>Stretch background image to fill playlist background</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="checkbox_background_image_keep_aspect_ratio">
|
||||
<property name="text">
|
||||
<string>Keep aspect ratio</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QGridLayout" name="layout_blur_opacity">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="select_background_blur_label">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Blur amount</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSlider" name="blur_slider">
|
||||
<property name="minimum">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>1</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QLabel" name="background_blur_radius_label">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0px</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="select_opacity_level_label">
|
||||
<property name="text">
|
||||
<string>Opacity</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QSlider" name="opacity_slider">
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>10</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLabel" name="background_opacity_label">
|
||||
<property name="text">
|
||||
<string>40%</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
@@ -230,7 +361,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<spacer name="spacer_bottom">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
|
||||
@@ -70,18 +70,18 @@ BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog *dialog) : SettingsP
|
||||
}
|
||||
#endif
|
||||
|
||||
ui_->combobox_doubleclickaddmode->setItemData(0, MainWindow::AddBehaviour_Append);
|
||||
ui_->combobox_doubleclickaddmode->setItemData(1, MainWindow::AddBehaviour_Load);
|
||||
ui_->combobox_doubleclickaddmode->setItemData(2, MainWindow::AddBehaviour_OpenInNew);
|
||||
ui_->combobox_doubleclickaddmode->setItemData(3, MainWindow::AddBehaviour_Enqueue);
|
||||
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, MainWindow::PlayBehaviour_Never);
|
||||
ui_->combobox_doubleclickplaymode->setItemData(1, MainWindow::PlayBehaviour_IfStopped);
|
||||
ui_->combobox_doubleclickplaymode->setItemData(2, MainWindow::PlayBehaviour_Always);
|
||||
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, MainWindow::PlayBehaviour_Never);
|
||||
ui_->combobox_menuplaymode->setItemData(1, MainWindow::PlayBehaviour_IfStopped);
|
||||
ui_->combobox_menuplaymode->setItemData(2, MainWindow::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.
|
||||
@@ -159,9 +159,9 @@ void BehaviourSettingsPage::Load() {
|
||||
|
||||
ui_->checkbox_resumeplayback->setChecked(s.value("resumeplayback", false).toBool());
|
||||
|
||||
ui_->combobox_doubleclickaddmode->setCurrentIndex(ui_->combobox_doubleclickaddmode->findData(s.value("doubleclick_addmode", MainWindow::AddBehaviour_Append).toInt()));
|
||||
ui_->combobox_doubleclickplaymode->setCurrentIndex(ui_->combobox_doubleclickplaymode->findData(s.value("doubleclick_playmode", MainWindow::PlayBehaviour_Never).toInt()));
|
||||
ui_->combobox_menuplaymode->setCurrentIndex(ui_->combobox_menuplaymode->findData(s.value("menu_playmode", MainWindow::PlayBehaviour_Never).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_menuplaymode->setCurrentIndex(ui_->combobox_menuplaymode->findData(s.value("menu_playmode", PlayBehaviour_Never).toInt()));
|
||||
|
||||
ui_->spinbox_seekstepsec->setValue(s.value("seek_step_sec", 10).toInt());
|
||||
|
||||
@@ -185,9 +185,9 @@ void BehaviourSettingsPage::Save() {
|
||||
if (ui_->radiobutton_alwaysshow->isChecked()) behaviour = MainWindow::Startup_AlwaysShow;
|
||||
if (ui_->radiobutton_remember->isChecked()) behaviour = MainWindow::Startup_Remember;
|
||||
|
||||
MainWindow::AddBehaviour doubleclick_addmode = MainWindow::AddBehaviour(ui_->combobox_doubleclickaddmode->itemData(ui_->combobox_doubleclickaddmode->currentIndex()).toInt());
|
||||
MainWindow::PlayBehaviour doubleclick_playmode = MainWindow::PlayBehaviour(ui_->combobox_doubleclickplaymode->itemData(ui_->combobox_doubleclickplaymode->currentIndex()).toInt());
|
||||
MainWindow::PlayBehaviour menu_playmode = MainWindow::PlayBehaviour(ui_->combobox_menuplaymode->itemData(ui_->combobox_menuplaymode->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());
|
||||
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());
|
||||
|
||||
@@ -40,8 +40,30 @@ class BehaviourSettingsPage : public SettingsPage {
|
||||
public:
|
||||
BehaviourSettingsPage(SettingsDialog *dialog);
|
||||
~BehaviourSettingsPage();
|
||||
|
||||
static const char *kSettingsGroup;
|
||||
|
||||
// Don't change the values
|
||||
enum AddBehaviour {
|
||||
AddBehaviour_Append = 1,
|
||||
AddBehaviour_Enqueue = 2,
|
||||
AddBehaviour_Load = 3,
|
||||
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,
|
||||
};
|
||||
|
||||
void Load();
|
||||
void Save();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user