diff --git a/src/appshell/appshell.qrc b/src/appshell/appshell.qrc
index 76ba6319c4..f2cf205c77 100644
--- a/src/appshell/appshell.qrc
+++ b/src/appshell/appshell.qrc
@@ -12,6 +12,7 @@
qml/DevTools/CrashHandler/CrashHandlerDevTools.qml
qml/AboutDialog.qml
qml/AboutMusicXMLDialog.qml
+ qml/AlphaWelcomePopup.qml
qml/resources/mu_logo.svg
qml/shared/AccentColorsList.qml
qml/shared/ThemeSamplesList.qml
diff --git a/src/appshell/appshellmodule.cpp b/src/appshell/appshellmodule.cpp
index 2782dfb2c3..cc72e08ce0 100644
--- a/src/appshell/appshellmodule.cpp
+++ b/src/appshell/appshellmodule.cpp
@@ -136,6 +136,7 @@ void AppShellModule::resolveImports()
ir->registerUri(Uri("musescore://about/musicxml"), ContainerMeta(ContainerType::QmlDialog, "AboutMusicXMLDialog.qml"));
ir->registerUri(Uri("musescore://firstLaunchSetup"),
ContainerMeta(ContainerType::QmlDialog, "FirstLaunchSetup/FirstLaunchSetupDialog.qml"));
+ ir->registerUri(Uri("audacity://alphaWelcomePopup"), ContainerMeta(ContainerType::QmlDialog, "AlphaWelcomePopup.qml"));
ir->registerUri(Uri("audacity://preferences"), ContainerMeta(ContainerType::QmlDialog, "Preferences/PreferencesDialog.qml"));
}
}
diff --git a/src/appshell/internal/startupscenario.cpp b/src/appshell/internal/startupscenario.cpp
index 6893e6d5b3..5d2df2c24a 100644
--- a/src/appshell/internal/startupscenario.cpp
+++ b/src/appshell/internal/startupscenario.cpp
@@ -31,6 +31,7 @@ using namespace muse::actions;
using namespace au::project;
static const muse::UriQuery FIRST_LAUNCH_SETUP_URI("musescore://firstLaunchSetup?floating=true");
+static const muse::Uri ALPHA_WELCOME_POPUP("audacity://alphaWelcomePopup");
static const muse::Uri HOME_URI("musescore://home");
static const muse::Uri PROJECT_URI("audacity://project");
@@ -122,7 +123,7 @@ void StartupScenario::runAfterSplashScreen()
}
StartupModeType modeType = resolveStartupModeType();
-//! TODO AU4
+ //! TODO AU4
// bool isMainInstance = multiInstancesProvider()->isMainInstance();
if (/*isMainInstance && */ sessionsManager()->hasProjectsForRestore()) {
modeType = StartupModeType::Recovery;
@@ -175,6 +176,12 @@ void StartupScenario::onStartupPageOpened(StartupModeType modeType)
{
TRACEFUNC;
+#ifndef MUSE_APP_UNSTABLE
+ if (modeType != StartupModeType::FirstLaunch) {
+ interactive()->openSync(ALPHA_WELCOME_POPUP);
+ }
+#endif
+
switch (modeType) {
case StartupModeType::StartEmpty:
break;
@@ -195,7 +202,10 @@ void StartupScenario::onStartupPageOpened(StartupModeType modeType)
} break;
case StartupModeType::FirstLaunch: {
dispatcher()->dispatch("file-new");
- interactive()->open(FIRST_LAUNCH_SETUP_URI);
+ interactive()->openSync(FIRST_LAUNCH_SETUP_URI);
+#ifndef MUSE_APP_UNSTABLE
+ interactive()->openSync(ALPHA_WELCOME_POPUP);
+#endif
} break;
}
}
diff --git a/src/appshell/qml/AlphaWelcomePopup.qml b/src/appshell/qml/AlphaWelcomePopup.qml
new file mode 100644
index 0000000000..6418a0e153
--- /dev/null
+++ b/src/appshell/qml/AlphaWelcomePopup.qml
@@ -0,0 +1,165 @@
+/*
+ * Audacity: A Digital Audio Editor
+ */
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Layouts 1.15
+
+import Muse.Ui 1.0
+import Muse.UiComponents 1.0
+
+StyledDialogView {
+ id: root
+
+ title: qsTrc("appshell/about", "Audacity 4")
+
+ contentHeight: 578
+ contentWidth: 560
+
+ background.color: ui.theme.backgroundSecondaryColor
+
+ ColumnLayout {
+ anchors.fill: parent
+
+ ColumnLayout {
+
+ anchors.fill: parent
+
+ spacing: 24
+ anchors.margins: 24
+
+ StyledTextLabel {
+ text: "Notes on Audacity 4 - Alpha 1"
+
+ font.pixelSize: 16
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Rectangle {
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ width: 512
+ height: 426
+
+ color: ui.theme.textFieldColor
+ border.width: 1
+ border.color: ui.theme.strokeColor
+
+ clip: true
+
+ StyledFlickable {
+ anchors.fill: parent
+ anchors.margins: 16
+
+ contentHeight: message.implicitHeight
+
+ ScrollBar.vertical: StyledScrollBar {
+ id: scrollBar
+ policy: ScrollBar.AlwaysOn
+ }
+
+ StyledTextLabel {
+ id: message
+
+ width: parent.width
+ horizontalAlignment: Text.AlignLeft
+ wrapMode: Text.WordWrap
+
+ text: "What am I testing in this build?
" +
+
+ "The purpose of this early-stage alpha release is to provide a build for our
" +
+ "community so they can test core aspects of Audacity’s functionality. This will
" +
+ "greatly help us spot issues and refine the experience. When reporting issues,
" +
+ "please keep them limited to these six areas.
" +
+
+ "• Recording & playback
" +
+ "• Editing audio
" +
+ "• Applying destructive and realtime effects
" +
+ "• Exporting projects and audio files
" +
+ "• Customising the interface to your liking
" +
+ "• Anything related to the interface (dialogs, popups, entering text values, viewing
" +
+ " on multiple monitors, etc.)
" +
+
+ "Please log issues on GitHub (requires a free GitHub account):
" +
+
+ "We really value your feedback at this stage - it directly shapes Audacity 4’s
" +
+ "development
" +
+
+ "Link to bug report
" +
+
+ "New features & improvements in Audacity 4
" +
+
+ "• A new interface
" +
+ "• Multiple colour theming options
" +
+ "• Multiple clip visualisation options
" +
+ "• When working with the ‘modern’ clip style, you can change the colour of clips
" +
+ " as well as tracks
" +
+ "• A new Customise toolbar widget, accessible via the ‘cog’ icon on the far right
" +
+ " of the top bar
" +
+ "• A new Workspaces feature, which can be used to save different layouts of the
" +
+ " interface
" +
+ "• A persistent playhead
" +
+ "• Clips can be moved around freely - no longer obstructed by other clips
" +
+ "• Recording can be initiated from any position in the timeline
" +
+ "• Multiple clips can be selected and edited at the same time
" +
+ "• When full clips are selected by clicking on their header, drag handles appear
" +
+ " that allow them to be trimmed or time-stretched
" +
+ "• Multiple clips can be grouped together. This feature can be found by selecting
" +
+ " the ‘...’ icon on the clip header, or by right-clicking on selected clips
" +
+ "• A new split tool for splitting clips quickly. You can toggle this feature by
" +
+ " pressing the S key. If you hold the S key down, the feature will be temporarily
" +
+ " enabled until you release the S key
" +
+ "• New settings & shortcuts for ‘ripple’ editing, which allow you to delete and
" +
+ " paste clips, whilst preserving synchronisation across your project. Along with
" +
+ " our grouping feature, this is intended as a replacement to the ‘Sync-lock’
" +
+ " feature found in Audacity 3. The new shortcuts for ‘ripple editing’ can be found
" +
+ " in Preferences > Shortcuts
" +
+ "• Tools like the Selection, Multi, and Draw functions are now built directly into the
" +
+ " main workflow, eliminating the need for separate buttons. For example, when
" +
+ " you zoom in to the sample level, the Draw tool activates automatically. As a
" +
+ " result, the Selection and Multi tools are no longer required, since all their
" +
+ " features are always available by default. This streamlines the interface by
" +
+ " reducing complexity without sacrificing functionality.
" +
+ "• The looping feature has been improved
" +
+
+ "Missing features in this alpha release
" +
+
+ "These features are currently in development and will be included in the main
" +
+ "release of Audacity 4.0
" +
+
+ "• Macros
" +
+ "• Spectrogram
" +
+ "• Label tracks
" +
+ "• Label track editor
" +
+ "• Metadata editor
" +
+ "• The plugin manager
" +
+ "• Cloud uploading
" +
+ "• OpenVino plugin support
" +
+ "• Numerous native Audacity effects
" +
+ "• The ‘Envelope’ tool
"
+ }
+ }
+ }
+ }
+
+ SeparatorLine {}
+
+ RowLayout {
+ Layout.alignment: Qt.AlignRight
+ Layout.rightMargin: 12
+ Layout.bottomMargin: 12
+
+ spacing: 12
+
+ FlatButton {
+ text: qsTrc("global", "OK")
+
+ accentButton: true
+
+ onClicked: {
+ root.accept()
+ }
+ }
+ }
+ }
+}