Audacity
3.2.0
modules
sharing
mod-cloud-audiocom
menus
AudioComMenus.cpp
Go to the documentation of this file.
1
/* SPDX-License-Identifier: GPL-2.0-or-later */
2
/*!********************************************************************
3
4
Audacity: A Digital Audio Editor
5
6
AudioComMenus.cpp
7
8
Dmitry Vedenko
9
10
**********************************************************************/
11
12
#include "
BasicUI.h
"
13
#include "
CloudProjectFileIOExtensions.h
"
14
#include "
CloudProjectMixdownUtils.h
"
15
#include "
CommandContext.h
"
16
#include "
MenuRegistry.h
"
17
18
#include "
sync/MixdownUploader.h
"
19
#include "
sync/ProjectCloudExtension.h
"
20
21
#include "
ProjectWindow.h
"
22
23
#include "
ui/dialogs/ProjectsListDialog.h
"
24
#include "
ui/dialogs/ShareAudioDialog.h
"
25
26
#include "
CommonCommandFlags.h
"
27
28
namespace
29
{
30
using namespace
audacity::cloud::audiocom
;
31
using namespace
audacity::cloud::audiocom::sync
;
32
33
void
OnSaveToCloud
(
const
CommandContext
& context)
34
{
35
SaveToCloud
(context.
project
, UploadMode::Normal);
36
}
37
38
void
OnOpenFromCloud
(
const
CommandContext
& context)
39
{
40
ProjectsListDialog
dialog {
ProjectWindow::Find
(&context.
project
),
41
&context.
project
};
42
43
dialog.ShowModal();
44
}
45
46
void
OnUpdateMixdown
(
const
CommandContext
& context)
47
{
48
UploadMixdown
(
49
context.
project
,
50
[](
auto
&
project
,
auto
state)
51
{
52
if (state != MixdownState::Succeeded)
53
return;
54
55
auto& projectCloudExtension = ProjectCloudExtension::Get(project);
56
57
BasicUI::OpenInDefaultBrowser(
58
projectCloudExtension.GetCloudProjectPage());
59
});
60
}
61
62
void
OnShareAudio
(
const
CommandContext
& context)
63
{
64
ShareAudioDialog
dialog {
65
context.
project
,
66
ProjectWindow::Find
(&context.
project
),
67
};
68
69
dialog.ShowModal();
70
}
71
72
const
ReservedCommandFlag
&
IsCloudProjectFlag
()
73
{
74
static
ReservedCommandFlag
flag
{
75
[](
const
AudacityProject
&
project
)
76
{
return
ProjectCloudExtension::Get
(
project
).IsCloudProject(); },
77
CommandFlagOptions
{ [](
const
TranslatableString
&) {
78
return
XO
(
"Previews can be updated only for Cloud projects"
);
79
} }.QuickTest()
80
.Priority(1)
81
};
82
return
flag
;
83
}
84
85
using namespace
MenuRegistry
;
86
87
AttachedItem
sSaveAttachment
{
Command
(
88
wxT
(
"SaveToCloud"
),
XXO
(
"Save &To Cloud..."
),
89
OnSaveToCloud
,
AlwaysEnabledFlag
),
90
wxT
(
"File/Save"
) };
91
92
AttachedItem
sMixdownAttachment
{
Command
(
93
wxT
(
"UpdateMixdown"
),
94
XXO
(
"&Update Cloud Audio Preview"
),
95
OnUpdateMixdown
,
IsCloudProjectFlag
()),
96
wxT
(
"File/Save"
) };
97
98
AttachedItem
sOpenAttachment
{
Command
(
99
wxT
(
"OpenFromCloud"
),
100
XXO
(
"Open Fro&m Cloud..."
),
OnOpenFromCloud
,
101
AlwaysEnabledFlag
),
102
wxT
(
"File/Basic"
) };
103
104
AttachedItem
sShareAttachment
{
Command
(
105
wxT
(
"ShareAudio"
),
XXO
(
"S&hare Audio..."
),
106
OnShareAudio
,
WaveTracksExistFlag
()),
107
wxT
(
"File/Import-Export"
) };
108
109
}
// namespace
wxT
wxT("CloseDown"))
BasicUI.h
Toolkit-neutral facade for basic user interface services.
CloudProjectFileIOExtensions.h
CloudProjectMixdownUtils.h
CommandContext.h
AlwaysEnabledFlag
constexpr CommandFlag AlwaysEnabledFlag
Definition:
CommandFlag.h:34
WaveTracksExistFlag
const ReservedCommandFlag & WaveTracksExistFlag()
Definition:
CommonCommandFlags.cpp:254
CommonCommandFlags.h
XO
XO("Cut/Copy/Paste")
XXO
XXO("&Cut/Copy/Paste Toolbar")
MenuRegistry.h
MixdownUploader.h
ProjectCloudExtension.h
ProjectWindow.h
ProjectsListDialog.h
ShareAudioDialog.h
project
const auto project
Definition:
TestWaveTrackMaker.cpp:18
flag
static std::once_flag flag
Definition:
WaveformView.cpp:1084
AudacityProject
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
Definition:
Project.h:90
CommandContext
CommandContext provides additional information to an 'Apply()' command. It provides the project,...
Definition:
CommandContext.h:37
CommandContext::project
AudacityProject & project
Definition:
CommandContext.h:71
ProjectWindow::Find
static ProjectWindow * Find(AudacityProject *pProject)
Definition:
ProjectWindow.cpp:418
Registry::RegisteredItem
Generates classes whose instances register items at construction.
Definition:
Registry.h:388
ReservedCommandFlag
Definition:
CommandFlag.h:88
TranslatableString
Holds a msgid for the translation catalog; may also bind format arguments.
Definition:
TranslatableString.h:32
audacity::cloud::audiocom::ShareAudioDialog
Definition:
ShareAudioDialog.h:41
audacity::cloud::audiocom::sync::ProjectsListDialog
Definition:
ProjectsListDialog.h:34
BasicUI::Get
Services * Get()
Fetch the global instance, or nullptr if none is yet installed.
Definition:
BasicUI.cpp:200
MenuRegistry
Definition:
MenuRegistry.cpp:19
MenuRegistry::Command
constexpr auto Command
Definition:
MenuRegistry.h:456
anonymous_namespace{AudioComMenus.cpp}::OnSaveToCloud
void OnSaveToCloud(const CommandContext &context)
Definition:
AudioComMenus.cpp:33
anonymous_namespace{AudioComMenus.cpp}::sMixdownAttachment
AttachedItem sMixdownAttachment
Definition:
AudioComMenus.cpp:92
anonymous_namespace{AudioComMenus.cpp}::sSaveAttachment
AttachedItem sSaveAttachment
Definition:
AudioComMenus.cpp:87
anonymous_namespace{AudioComMenus.cpp}::OnOpenFromCloud
void OnOpenFromCloud(const CommandContext &context)
Definition:
AudioComMenus.cpp:38
anonymous_namespace{AudioComMenus.cpp}::IsCloudProjectFlag
const ReservedCommandFlag & IsCloudProjectFlag()
Definition:
AudioComMenus.cpp:72
anonymous_namespace{AudioComMenus.cpp}::sShareAttachment
AttachedItem sShareAttachment
Definition:
AudioComMenus.cpp:104
anonymous_namespace{AudioComMenus.cpp}::OnShareAudio
void OnShareAudio(const CommandContext &context)
Definition:
AudioComMenus.cpp:62
anonymous_namespace{AudioComMenus.cpp}::sOpenAttachment
AttachedItem sOpenAttachment
Definition:
AudioComMenus.cpp:98
anonymous_namespace{AudioComMenus.cpp}::OnUpdateMixdown
void OnUpdateMixdown(const CommandContext &context)
Definition:
AudioComMenus.cpp:46
audacity::cloud::audiocom::sync
Definition:
CloudSyncService.h:31
audacity::cloud::audiocom::sync::UploadMixdown
void UploadMixdown(AudacityProject &project, std::function< void(AudacityProject &, MixdownState)> onComplete)
Definition:
CloudProjectMixdownUtils.cpp:71
audacity::cloud::audiocom::sync::SaveToCloud
void SaveToCloud(AudacityProject &project, UploadMode mode, CreateSnapshotCallback snapshotCallback)
Definition:
CloudProjectFileIOExtensions.cpp:302
audacity::cloud::audiocom
Definition:
CloudLibrarySettings.cpp:17
CommandFlagOptions
Definition:
CommandFlag.h:37
Generated by
1.9.3