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() + } + } + } + } +}