Skip to content

Commit 3cc5636

Browse files
committed
Make auto track count an option that is on by default
1 parent 6ca4a55 commit 3cc5636

6 files changed

Lines changed: 74 additions & 3 deletions

File tree

src/application/service/settings_service.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ SettingsService::SettingsService()
3333
, m_velocity { Settings::velocity(100) }
3434
, m_visibleLines { Settings::visibleLines(32) }
3535
, m_trackHeaderFontSize { Settings::trackHeaderFontSize(20) }
36+
, m_autoTrackCount { Settings::autoTrackCount() }
3637
, m_recordingEnabled { Settings::recordingEnabled() }
3738
, m_audioBackend { static_cast<int>(Settings::audioBackend()) }
3839
, m_audioBufferSize { Settings::audioBufferSize() }
@@ -166,6 +167,20 @@ void SettingsService::setTrackHeaderFontSize(int trackHeaderFontSize)
166167
}
167168
}
168169

170+
bool SettingsService::autoTrackCount() const
171+
{
172+
return m_autoTrackCount;
173+
}
174+
175+
void SettingsService::setAutoTrackCount(bool enabled)
176+
{
177+
if (m_autoTrackCount != enabled) {
178+
m_autoTrackCount = enabled;
179+
Settings::setAutoTrackCount(enabled);
180+
emit autoTrackCountChanged();
181+
}
182+
}
183+
169184
bool SettingsService::recordingEnabled() const
170185
{
171186
return m_recordingEnabled;

src/application/service/settings_service.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class SettingsService : public QObject
3131
Q_PROPERTY(bool uiUpdatesDisabledDuringPlayback READ uiUpdatesDisabledDuringPlayback WRITE setUiUpdatesDisabledDuringPlayback NOTIFY uiUpdatesDisabledDuringPlaybackChanged)
3232
Q_PROPERTY(int visibleLines READ visibleLines WRITE setVisibleLines NOTIFY visibleLinesChanged)
3333
Q_PROPERTY(int trackHeaderFontSize READ trackHeaderFontSize WRITE setTrackHeaderFontSize NOTIFY trackHeaderFontSizeChanged)
34+
Q_PROPERTY(bool autoTrackCount READ autoTrackCount WRITE setAutoTrackCount NOTIFY autoTrackCountChanged)
3435
Q_PROPERTY(bool recordingEnabled READ recordingEnabled WRITE setRecordingEnabled NOTIFY recordingEnabledChanged)
3536
Q_PROPERTY(int audioBackend READ audioBackend WRITE setAudioBackend NOTIFY audioBackendChanged)
3637
Q_PROPERTY(bool multiThreadedPlaybackEnabled READ multiThreadedPlaybackEnabled WRITE setMultiThreadedPlaybackEnabled NOTIFY multiThreadedPlaybackEnabledChanged)
@@ -77,6 +78,9 @@ class SettingsService : public QObject
7778
virtual Q_INVOKABLE int trackHeaderFontSize() const;
7879
virtual Q_INVOKABLE void setTrackHeaderFontSize(int trackHeaderFontSize);
7980

81+
virtual Q_INVOKABLE bool autoTrackCount() const;
82+
virtual Q_INVOKABLE void setAutoTrackCount(bool autoTrackCount);
83+
8084
virtual Q_INVOKABLE bool recordingEnabled() const;
8185
virtual Q_INVOKABLE void setRecordingEnabled(bool enabled);
8286

@@ -134,6 +138,7 @@ class SettingsService : public QObject
134138

135139
void visibleLinesChanged();
136140
void trackHeaderFontSizeChanged();
141+
void autoTrackCountChanged();
137142
void recordingEnabledChanged();
138143
void audioBackendChanged();
139144
void multiThreadedPlaybackEnabledChanged();
@@ -161,6 +166,7 @@ class SettingsService : public QObject
161166
int m_velocity;
162167
int m_visibleLines;
163168
int m_trackHeaderFontSize;
169+
bool m_autoTrackCount;
164170

165171
bool m_recordingEnabled;
166172
int m_audioBackend;

src/infra/settings.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ const auto velocityKey = "velocity";
5858

5959
const auto trackHeaderFontSizeKey = "trackHeaderFontSize";
6060
const auto uiUpdatesDisabledDuringPlaybackKey = "uiUpdatesDisabledDuringPlayback";
61+
const auto autoTrackCountKey = "autoTrackCount";
6162
const auto visibleLinesKey = "visibleLines";
6263
const auto windowSizeKey = "size";
6364

@@ -259,6 +260,23 @@ void setVisibleLines(int visibleLines)
259260
settings.endGroup();
260261
}
261262

263+
bool autoTrackCount()
264+
{
265+
QSettings settings;
266+
settings.beginGroup(settingsGroupEditor);
267+
const auto enabled = settings.value(autoTrackCountKey, true).toBool();
268+
settings.endGroup();
269+
return enabled;
270+
}
271+
272+
void setAutoTrackCount(bool enabled)
273+
{
274+
QSettings settings;
275+
settings.beginGroup(settingsGroupEditor);
276+
settings.setValue(autoTrackCountKey, enabled);
277+
settings.endGroup();
278+
}
279+
262280
int trackHeaderFontSize(int defaultTrackHeaderFontSize)
263281
{
264282
QSettings settings;

src/infra/settings.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ void setVelocity(int velocity);
5858
int visibleLines(int defaultVisibleLines);
5959
void setVisibleLines(int visibleLines);
6060

61+
bool autoTrackCount();
62+
void setAutoTrackCount(bool autoTrackCount);
63+
64+
6165
int trackHeaderFontSize(int defaultTrackHeaderFontSize);
6266
void setTrackHeaderFontSize(int trackHeaderFontSize);
6367

src/view/qml/Dialogs/SettingsDialog_GeneralSettings.qml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ GroupBox {
3131
Layout.fillWidth: true
3232
GridLayout {
3333
columns: 9
34-
rows: 5
34+
rows: 6
3535
width: parent.width
3636
Label {
3737
text: qsTr("Number of lines visible:")
@@ -155,6 +155,26 @@ GroupBox {
155155
ToolTip.visible: hovered
156156
ToolTip.text: qsTr("Width of a drawn automation curve, in pixels")
157157
}
158+
Label {
159+
text: qsTr("Auto Track Count:")
160+
Layout.column: 0
161+
Layout.columnSpan: 2
162+
Layout.row: 5
163+
Layout.fillWidth: true
164+
}
165+
CheckBox {
166+
id: autoTrackCountCheckBox
167+
Layout.column: 4
168+
Layout.columnSpan: 5
169+
Layout.row: 5
170+
Layout.fillWidth: true
171+
checked: settingsService.autoTrackCount
172+
onCheckedChanged: settingsService.setAutoTrackCount(checked)
173+
ToolTip.delay: Constants.toolTipDelay
174+
ToolTip.timeout: Constants.toolTipTimeout
175+
ToolTip.visible: hovered
176+
ToolTip.text: qsTr("Automatically adjust the number of visible tracks based on window width")
177+
}
158178
}
159179
}
160180

src/view/qml/Editor/EditorView.qml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,12 @@ FocusScope {
134134
// The track area is what the columns actually share, so a narrow window shows fewer of them
135135
// instead of squeezing all six into headers too small to read.
136136
function _updateVisibleUnitCount() {
137-
const fitting = Math.floor(trackArea.width / Constants.minUnitWidth);
138-
editorService.setVisibleUnitCount(Math.max(Constants.minVisibleUnitCount, Math.min(Constants.maxVisibleUnitCount, fitting)));
137+
if (settingsService.autoTrackCount) {
138+
const fitting = Math.floor(trackArea.width / Constants.minUnitWidth);
139+
editorService.setVisibleUnitCount(Math.max(Constants.minVisibleUnitCount, Math.min(Constants.maxVisibleUnitCount, fitting)));
140+
} else {
141+
editorService.setVisibleUnitCount(Constants.maxVisibleUnitCount);
142+
}
139143
}
140144
function _setTrackDimensions(track) {
141145
const unitWidth = trackArea.width / editorService.visibleUnitCount();
@@ -347,6 +351,10 @@ FocusScope {
347351
mixerService.cleared.connect(_clearMixerSettings);
348352
UiService.deleteUnusedPatternsConfirmed.connect(deleteUnusedPatterns);
349353
mouseHandler.editorFocusRequested.connect(forceActiveFocus);
354+
settingsService.autoTrackCountChanged.connect(() => {
355+
_updateVisibleUnitCount();
356+
_updateAllTrackDimensions();
357+
});
350358
}
351359
function _lineNumberColumnHeight() {
352360
return trackArea.height - Constants.trackHeaderHeight - Constants.columnHeaderHeight;

0 commit comments

Comments
 (0)