Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions res/qml/WaveformDisplay.qml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Item {

required property string group
property bool splitStemTracks: false
readonly property string zoomGroup: Mixxx.Config.waveformZoomSynchronization() ? "[Channel1]" : group
readonly property string zoomGroup: Mixxx.Config.waveformZoomSynchronization ? "[Channel1]" : group

MixxxControls.WaveformDisplay {
anchors.fill: parent
Expand Down Expand Up @@ -182,7 +182,7 @@ Item {

Component.onCompleted: {
if (group == root.group) {
value = Mixxx.Config.waveformDefaultZoom();
value = Mixxx.Config.waveformDefaultZoom
}
}
}
Expand Down
67 changes: 52 additions & 15 deletions src/qml/qmlconfigproxy.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#include "qml/qmlconfigproxy.h"

#include <qglobal.h>
#include <Qt>

#include "library/basetracktablemodel.h"
#include "library/library.h"
Expand Down Expand Up @@ -37,18 +37,31 @@ QVariantList paletteToQColorList(const ColorPalette& palette) {
const QString kPreferencesGroup = QStringLiteral("[Preferences]");
const QString kConfigGroup = QStringLiteral("[Config]");
const QString kControlGroup = QStringLiteral("[Control]");
const QString kWaveformGroup = QStringLiteral("[Waveform]");
const QString kControlsGroup = QStringLiteral("[Controls]");
const QString kLibraryGroup = QStringLiteral("[Library]");
const QString kBpmGroup = QStringLiteral("[BPM]");

const QString kMultiSamplingKey = QStringLiteral("multi_sampling");
const QString k3DHardwareAccelerationKey = QStringLiteral("force_hardware_acceleration");

const QString kWaveformGroup = QStringLiteral("[Waveform]");
const QString kWaveformZoomSynchronizationKey = QStringLiteral("ZoomSynchronization");
const QString kWaveformDefaultZoomKey = QStringLiteral("DefaultZoom");
const bool kWaveformZoomSynchronizationDefault = true;
const double kWaveformDefaultZoomDefault = 3.0;
// Waveform group
const QString kZoomSynchronizationKey = QStringLiteral("ZoomSynchronization");
const QString kOverviewNormalizedKey = QStringLiteral("OverviewNormalized");
const QString kDefaultZoomKey = QStringLiteral("DefaultZoom");
const QString kPlayMarkerPositionKey = QStringLiteral("PlayMarkerPosition");
const QString kUntilMarkShowBeatsKey = QStringLiteral("UntilMarkShowBeats");
const QString kUntilMarkShowTimeKey = QStringLiteral("UntilMarkShowTime");
const QString kUntilMarkAlignKey = QStringLiteral("UntilMarkAlign");
const QString kUntilMarkTextPointSizeKey = QStringLiteral("UntilMarkTextPointSize");
const QString kVisualGainAllKey = QStringLiteral("VisualGain_0");
const QString kVisualGainLowKey = QStringLiteral("VisualGain_1");
const QString kVisualGainMediumKey = QStringLiteral("VisualGain_2");
const QString kVisualGainHighKey = QStringLiteral("VisualGain_3");
const QString kBeatGridAlphaKey = QStringLiteral("beatGridAlpha");
const QString kEndOfTrackWarningTimeKey = QStringLiteral("EndOfTrackWarningTime");
const QString kWaveformTypeKey = QStringLiteral("WaveformType");
const QString kWaveformOptionsKey = QStringLiteral("waveform_options");

// Library group
const QString kTooltipsKey = QStringLiteral("Tooltips");
Expand Down Expand Up @@ -190,17 +203,41 @@ void QmlConfigProxy::set_useAcceleration(bool value) {
emit useAccelerationChanged();
}

bool QmlConfigProxy::waveformZoomSynchronization() {
return m_pConfig->getValue(
ConfigKey(kWaveformGroup, kWaveformZoomSynchronizationKey),
kWaveformZoomSynchronizationDefault);
}
double QmlConfigProxy::waveformDefaultZoom() {
return m_pConfig->getValue(
ConfigKey(kWaveformGroup, kWaveformDefaultZoomKey),
kWaveformDefaultZoomDefault);
PROPERTY_IMPL(kWaveformGroup, kZoomSynchronizationKey, bool, waveformZoomSynchronization, true);
PROPERTY_IMPL(kWaveformGroup, kOverviewNormalizedKey, bool, waveformOverviewNormalized, true);
PROPERTY_IMPL(kWaveformGroup, kDefaultZoomKey, double, waveformDefaultZoom, 3);
PROPERTY_IMPL(kWaveformGroup, kPlayMarkerPositionKey, double, waveformPlayMarkerPosition, 0.5);
PROPERTY_IMPL(kWaveformGroup, kUntilMarkShowBeatsKey, bool, waveformUntilMarkShowBeats, false);
PROPERTY_IMPL(kWaveformGroup, kUntilMarkShowTimeKey, bool, waveformUntilMarkShowTime, false);
PROPERTY_IMPL(kWaveformGroup, kUntilMarkAlignKey, double, waveformUntilMarkAlign, 1);
PROPERTY_IMPL(kWaveformGroup, kUntilMarkTextPointSizeKey, int, waveformUntilMarkTextPointSize, 24);
PROPERTY_IMPL(kWaveformGroup, kVisualGainAllKey, double, waveformVisualGainAll, 1);
PROPERTY_IMPL(kWaveformGroup, kVisualGainLowKey, double, waveformVisualGainLow, 1);
PROPERTY_IMPL(kWaveformGroup, kVisualGainMediumKey, double, waveformVisualGainMedium, 1);
PROPERTY_IMPL(kWaveformGroup, kVisualGainHighKey, double, waveformVisualGainHigh, 1);
PROPERTY_IMPL(kWaveformGroup, kEndOfTrackWarningTimeKey, int, waveformEndOfTrackWarningTime, 30);
PROPERTY_IMPL(kWaveformGroup,
kWaveformTypeKey,
QmlWaveformDisplay::Type,
waveformType,
QmlWaveformDisplay::Type::RGB);
PROPERTY_IMPL_GETTER(kWaveformGroup,
kWaveformOptionsKey,
QmlWaveformDisplay::Options,
waveformOptions,
QmlWaveformDisplay::Option::None);

void QmlConfigProxy ::set_waveformOptions(QmlWaveformDisplay::Options value) {
if (value == QmlWaveformDisplay::Option::None) {
m_pConfig->remove(ConfigKey(kWaveformGroup, kWaveformOptionsKey));
} else {
m_pConfig->setValue(ConfigKey(kWaveformGroup, kWaveformOptionsKey),
static_cast<int>(value));
}
emit waveformOptionsChanged();
}

PROPERTY_IMPL(kWaveformGroup, kBeatGridAlphaKey, double, waveformBeatGridAlpha, 90);
PROPERTY_IMPL(kControlsGroup,
kTooltipsKey,
mixxx::preferences::Tooltips,
Expand Down
106 changes: 104 additions & 2 deletions src/qml/qmlconfigproxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "preferences/constants.h"
#include "preferences/interface.h"
#include "preferences/usersettings.h"
#include "qml/qmlwaveformdisplay.h"

#define PROPERTY_DECL_ACCESSOR(TYPE, NAME) \
public: \
Expand All @@ -24,6 +25,10 @@
namespace mixxx {
namespace qml {

// The following typedefs are used to prevent clazy warnings
typedef QmlWaveformDisplay::Type QmlWaveformDisplayType;
typedef QmlWaveformDisplay::Options QmlWaveformDisplayOptions;

class QmlConfigProxy : public QObject {
Q_OBJECT
QML_NAMED_ELEMENT(Config)
Expand All @@ -36,6 +41,64 @@ class QmlConfigProxy : public QObject {
Q_PROPERTY(bool useAcceleration READ useAcceleration WRITE
set_useAcceleration NOTIFY useAccelerationChanged);

// Waveform group
Q_PROPERTY(bool waveformZoomSynchronization READ waveformZoomSynchronization
WRITE set_waveformZoomSynchronization NOTIFY
waveformZoomSynchronizationChanged);
Q_PROPERTY(bool waveformOverviewNormalized READ waveformOverviewNormalized
WRITE set_waveformOverviewNormalized NOTIFY
waveformOverviewNormalizedChanged);
// 1..10
Q_PROPERTY(double waveformDefaultZoom READ waveformDefaultZoom WRITE
set_waveformDefaultZoom NOTIFY waveformDefaultZoomChanged);
// [0..1]
Q_PROPERTY(double waveformPlayMarkerPosition READ waveformPlayMarkerPosition
WRITE set_waveformPlayMarkerPosition NOTIFY
waveformPlayMarkerPositionChanged);
Q_PROPERTY(bool waveformUntilMarkShowBeats READ waveformUntilMarkShowBeats
WRITE set_waveformUntilMarkShowBeats NOTIFY
waveformUntilMarkShowBeatsChanged);
Q_PROPERTY(bool waveformUntilMarkShowTime READ waveformUntilMarkShowTime
WRITE set_waveformUntilMarkShowTime NOTIFY
waveformUntilMarkShowTimeChanged);
// {1,2,3}, Qt::AlignTop, Qt::AlignVCenter, Qt::AlignBottom
Q_PROPERTY(double waveformUntilMarkAlign READ waveformUntilMarkAlign WRITE
set_waveformUntilMarkAlign NOTIFY
waveformUntilMarkAlignChanged);
Q_PROPERTY(int waveformUntilMarkTextPointSize READ
waveformUntilMarkTextPointSize WRITE
set_waveformUntilMarkTextPointSize NOTIFY
waveformUntilMarkTextPointSizeChanged);
// [0..1..]
Q_PROPERTY(double waveformVisualGainAll READ waveformVisualGainAll WRITE
set_waveformVisualGainAll NOTIFY
waveformVisualGainAllChanged);
// [0..1..]
Q_PROPERTY(double waveformVisualGainLow READ waveformVisualGainLow WRITE
set_waveformVisualGainLow NOTIFY
waveformVisualGainLowChanged);
// [0..1..]
Q_PROPERTY(double waveformVisualGainMedium READ waveformVisualGainMedium
WRITE set_waveformVisualGainMedium NOTIFY
waveformVisualGainMediumChanged);
// [0..1..]
Q_PROPERTY(double waveformVisualGainHigh READ waveformVisualGainHigh WRITE
set_waveformVisualGainHigh NOTIFY
waveformVisualGainHighChanged);
// Seconds
Q_PROPERTY(
int waveformEndOfTrackWarningTime READ waveformEndOfTrackWarningTime
WRITE set_waveformEndOfTrackWarningTime NOTIFY
waveformEndOfTrackWarningTimeChanged);
Q_PROPERTY(QmlWaveformDisplayType waveformType READ waveformType WRITE
set_waveformType NOTIFY waveformTypeChanged);
Q_PROPERTY(QmlWaveformDisplayOptions waveformOptions READ waveformOptions
WRITE set_waveformOptions NOTIFY waveformOptionsChanged);
// Percent, 0..100
Q_PROPERTY(double waveformBeatGridAlpha READ waveformBeatGridAlpha WRITE
set_waveformBeatGridAlpha NOTIFY
waveformBeatGridAlphaChanged);

// Library group
Q_PROPERTY(mixxx::preferences::Tooltips libraryTooltips READ libraryTooltips
WRITE set_libraryTooltips NOTIFY libraryTooltipsChanged);
Expand Down Expand Up @@ -188,8 +251,31 @@ class QmlConfigProxy : public QObject {
PROPERTY_DECL_ACCESSOR(bool, useAcceleration);

// Waveform settings
Q_INVOKABLE bool waveformZoomSynchronization();
Q_INVOKABLE double waveformDefaultZoom();
PROPERTY_DECL_ACCESSOR(bool, waveformZoomSynchronization);
PROPERTY_DECL_ACCESSOR(bool, waveformOverviewNormalized);
// 1..10
PROPERTY_DECL_ACCESSOR(double, waveformDefaultZoom);
// [0..1]
PROPERTY_DECL_ACCESSOR(double, waveformPlayMarkerPosition);
PROPERTY_DECL_ACCESSOR(bool, waveformUntilMarkShowBeats);
PROPERTY_DECL_ACCESSOR(bool, waveformUntilMarkShowTime);
// {1,2,3}, Qt::AlignTop, Qt::AlignVCenter, Qt::AlignBottom
PROPERTY_DECL_ACCESSOR(double, waveformUntilMarkAlign);
PROPERTY_DECL_ACCESSOR(int, waveformUntilMarkTextPointSize);
// [0..1..]
PROPERTY_DECL_ACCESSOR(double, waveformVisualGainAll);
// [0..1..]
PROPERTY_DECL_ACCESSOR(double, waveformVisualGainLow);
// [0..1..]
PROPERTY_DECL_ACCESSOR(double, waveformVisualGainMedium);
// [0..1..]
PROPERTY_DECL_ACCESSOR(double, waveformVisualGainHigh);
// Seconds
PROPERTY_DECL_ACCESSOR(int, waveformEndOfTrackWarningTime);
PROPERTY_DECL_ACCESSOR(QmlWaveformDisplayType, waveformType);
PROPERTY_DECL_ACCESSOR(QmlWaveformDisplayOptions, waveformOptions);
// Percent, 0..100
PROPERTY_DECL_ACCESSOR(double, waveformBeatGridAlpha);

// Library group
PROPERTY_DECL_ACCESSOR(mixxx::preferences::Tooltips, libraryTooltips);
Expand Down Expand Up @@ -255,6 +341,22 @@ class QmlConfigProxy : public QObject {
signals:
void multiSamplingLevelChanged();
void useAccelerationChanged();
void waveformZoomSynchronizationChanged();
void waveformOverviewNormalizedChanged();
void waveformDefaultZoomChanged();
void waveformPlayMarkerPositionChanged();
void waveformUntilMarkShowBeatsChanged();
void waveformUntilMarkShowTimeChanged();
void waveformUntilMarkAlignChanged();
void waveformUntilMarkTextPointSizeChanged();
void waveformVisualGainAllChanged();
void waveformVisualGainLowChanged();
void waveformVisualGainMediumChanged();
void waveformVisualGainHighChanged();
void waveformEndOfTrackWarningTimeChanged();
void waveformTypeChanged();
void waveformOptionsChanged();
void waveformBeatGridAlphaChanged();
void libraryTooltipsChanged();
void libraryInhibitScreensaverChanged();
void libraryHideMenuBarChanged();
Expand Down
2 changes: 2 additions & 0 deletions src/qml/qmltrackproxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,3 +146,5 @@ class QmlTrackProxy : public QObject {

} // namespace qml
} // namespace mixxx

Q_DECLARE_METATYPE(mixxx::qml::QmlTrackProxy*)
Loading
Loading