Skip to content

Commit 916ce3b

Browse files
committed
Update audio
1 parent 84e5ed0 commit 916ce3b

33 files changed

Lines changed: 611 additions & 177 deletions

src/libs/application/dspxmodel/src/AudioClip.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ namespace dspx {
2121
Q_PROPERTY(QString fileName MEMBER fileName)
2222
Q_PROPERTY(QString formatEntryClassName MEMBER formatEntryClassName)
2323
Q_PROPERTY(QVariant userData MEMBER userData)
24+
Q_PROPERTY(QString sha512 MEMBER sha512)
2425
public:
2526
QString absoluteDir;
2627
QString relativeDir;

src/libs/application/dspxmodel/src/selectionmodel/ClipSelectionModel.cpp

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,16 @@ namespace dspx {
109109
}
110110
connectItem(item);
111111
selectedItems.insert(item);
112+
const auto clipType = item->type();
113+
selectedClipTypes[item] = clipType;
114+
switch (clipType) {
115+
case Clip::Singing:
116+
++selectedSingingClipCount;
117+
break;
118+
case Clip::Audio:
119+
++selectedAudioClipCount;
120+
break;
121+
}
112122

113123
// Update clipToClipSequence
114124
auto clipSeq = item->clipSequence();
@@ -128,6 +138,18 @@ namespace dspx {
128138
if (!selectedItems.remove(item)) {
129139
return false;
130140
}
141+
if (selectedClipTypes.contains(item)) {
142+
const auto clipType = selectedClipTypes.value(item);
143+
switch (clipType) {
144+
case Clip::Singing:
145+
--selectedSingingClipCount;
146+
break;
147+
case Clip::Audio:
148+
--selectedAudioClipCount;
149+
break;
150+
}
151+
}
152+
selectedClipTypes.remove(item);
131153

132154
// Update clipSequencesWithSelectedItems
133155
auto clipSeq = clipToClipSequence.value(item);
@@ -164,8 +186,12 @@ namespace dspx {
164186
return;
165187
}
166188
const int oldCount = selectedItems.size();
189+
const int oldSingingClipCount = selectedSingingClipCount;
190+
const int oldAudioClipCount = selectedAudioClipCount;
167191
bool selectionChanged = removeFromSelection(item);
168192
bool countChanged = selectionChanged && oldCount != selectedItems.size();
193+
bool singingClipCountChanged = selectionChanged && oldSingingClipCount != selectedSingingClipCount;
194+
bool audioClipCountChanged = selectionChanged && oldAudioClipCount != selectedAudioClipCount;
169195
bool currentChanged = false;
170196
bool clipSequencesChanged = selectionChanged;
171197

@@ -181,6 +207,12 @@ namespace dspx {
181207
if (countChanged) {
182208
Q_EMIT q_ptr->selectedCountChanged();
183209
}
210+
if (singingClipCountChanged) {
211+
Q_EMIT q_ptr->selectedSingingClipCountChanged();
212+
}
213+
if (audioClipCountChanged) {
214+
Q_EMIT q_ptr->selectedAudioClipCountChanged();
215+
}
184216
}
185217
if (clipSequencesChanged) {
186218
Q_EMIT q_ptr->clipSequencesWithSelectedItemsChanged();
@@ -231,6 +263,16 @@ namespace dspx {
231263
return d->selectedItems.size();
232264
}
233265

266+
int ClipSelectionModel::selectedSingingClipCount() const {
267+
Q_D(const ClipSelectionModel);
268+
return d->selectedSingingClipCount;
269+
}
270+
271+
int ClipSelectionModel::selectedAudioClipCount() const {
272+
Q_D(const ClipSelectionModel);
273+
return d->selectedAudioClipCount;
274+
}
275+
234276
QList<ClipSequence *> ClipSelectionModel::clipSequencesWithSelectedItems() const {
235277
Q_D(const ClipSelectionModel);
236278
return d->clipSequencesWithSelectedItems.keys();
@@ -243,6 +285,8 @@ namespace dspx {
243285

244286
void ClipSelectionModelPrivate::select(Clip *item, SelectionModel::SelectionCommand command) {
245287
const int oldCount = selectedItems.size();
288+
const int oldSingingClipCount = selectedSingingClipCount;
289+
const int oldAudioClipCount = selectedAudioClipCount;
246290
bool selectionChanged = false;
247291

248292
if (command & SelectionModel::ClearPreviousSelection) {
@@ -270,6 +314,12 @@ namespace dspx {
270314
if (oldCount != selectedItems.size()) {
271315
Q_EMIT q_ptr->selectedCountChanged();
272316
}
317+
if (oldSingingClipCount != selectedSingingClipCount) {
318+
Q_EMIT q_ptr->selectedSingingClipCountChanged();
319+
}
320+
if (oldAudioClipCount != selectedAudioClipCount) {
321+
Q_EMIT q_ptr->selectedAudioClipCountChanged();
322+
}
273323
}
274324
if (clipSequencesChanged) {
275325
Q_EMIT q_ptr->clipSequencesWithSelectedItemsChanged();

src/libs/application/dspxmodel/src/selectionmodel/ClipSelectionModel.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ namespace dspx {
2121
Q_PROPERTY(Clip *currentItem READ currentItem NOTIFY currentItemChanged)
2222
Q_PROPERTY(QList<Clip *> selectedItems READ selectedItems NOTIFY selectedItemsChanged)
2323
Q_PROPERTY(int selectedCount READ selectedCount NOTIFY selectedCountChanged)
24+
Q_PROPERTY(int selectedSingingClipCount READ selectedSingingClipCount NOTIFY selectedSingingClipCountChanged)
25+
Q_PROPERTY(int selectedAudioClipCount READ selectedAudioClipCount NOTIFY selectedAudioClipCountChanged)
2426
Q_PROPERTY(QList<ClipSequence *> clipSequencesWithSelectedItems READ clipSequencesWithSelectedItems NOTIFY clipSequencesWithSelectedItemsChanged)
2527

2628
public:
@@ -29,6 +31,8 @@ namespace dspx {
2931
Clip *currentItem() const;
3032
QList<Clip *> selectedItems() const;
3133
int selectedCount() const;
34+
int selectedSingingClipCount() const;
35+
int selectedAudioClipCount() const;
3236
QList<ClipSequence *> clipSequencesWithSelectedItems() const;
3337

3438
Q_INVOKABLE bool isItemSelected(Clip *item) const;
@@ -37,6 +41,8 @@ namespace dspx {
3741
void currentItemChanged();
3842
void selectedItemsChanged();
3943
void selectedCountChanged();
44+
void selectedSingingClipCountChanged();
45+
void selectedAudioClipCountChanged();
4046
void clipSequencesWithSelectedItemsChanged();
4147
void itemSelected(Clip *item, bool selected);
4248

@@ -48,4 +54,4 @@ namespace dspx {
4854

4955
}
5056

51-
#endif //DIFFSCOPE_DSPX_MODEL_CLIPSELECTIONMODEL_H
57+
#endif //DIFFSCOPE_DSPX_MODEL_CLIPSELECTIONMODEL_H

src/libs/application/dspxmodel/src/selectionmodel/ClipSelectionModel_p.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef DIFFSCOPE_DSPX_MODEL_CLIPSELECTIONMODEL_P_H
22
#define DIFFSCOPE_DSPX_MODEL_CLIPSELECTIONMODEL_P_H
33

4+
#include <QHash>
45
#include <QSet>
56

67
#include <dspxmodel/ClipSelectionModel.h>
@@ -17,6 +18,9 @@ namespace dspx {
1718
ClipSelectionModel *q_ptr;
1819
SelectionModel *selectionModel;
1920
QSet<Clip *> selectedItems;
21+
QHash<Clip *, Clip::ClipType> selectedClipTypes;
22+
int selectedSingingClipCount = 0;
23+
int selectedAudioClipCount = 0;
2024
Clip *currentItem = nullptr;
2125
QSet<Clip *> connectedItems;
2226

@@ -37,4 +41,4 @@ namespace dspx {
3741

3842
}
3943

40-
#endif //DIFFSCOPE_DSPX_MODEL_CLIPSELECTIONMODEL_P_H
44+
#endif //DIFFSCOPE_DSPX_MODEL_CLIPSELECTIONMODEL_P_H

src/libs/application/uishell/src/qml/InitializationFailureWarningDialog.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import SVSCraft.UIComponents.impl
1212

1313
MessageBoxDialog {
1414
id: dialog
15-
width: 400
15+
width: 600
1616
icon: SVS.Warning
1717
hasContextHelp: true
1818
text: qsTr("%1 exited abnormally during the last initialization").arg(Application.displayName)

src/plugins/audio/audiocontext/AudioClipAudioContext.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#define DIFFSCOPE_AUDIO_AUDIOCLIPAUDIOCONTEXT_H
33

44
#include <QObject>
5-
#include <QString>
5+
#include <qqmlintegration.h>
66

77
namespace Core {
88
class ProjectWindowInterface;
@@ -28,6 +28,8 @@ namespace Audio {
2828

2929
class AudioClipAudioContext : public QObject {
3030
Q_OBJECT
31+
QML_ELEMENT
32+
QML_UNCREATABLE("")
3133
Q_DECLARE_PRIVATE(AudioClipAudioContext)
3234
Q_PROPERTY(Core::ProjectWindowInterface *windowHandle READ windowHandle CONSTANT)
3335
Q_PROPERTY(dspx::AudioClip *clip READ clip CONSTANT)

src/plugins/audio/internal/AudioPlugin.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include <audio/internal/AudioAndMidiPage.h>
2222
#include <audio/internal/AudioOutputPage.h>
2323
#include <audio/internal/AudioPreference.h>
24-
#include <audio/internal/InsertAudioClipAddOn.h>
24+
#include <audio/internal/AudioClipAddOn.h>
2525
#include <audio/internal/ProjectAudioAddOn.h>
2626
#include <audio/internal/PlaybackAddOn.h>
2727
#include <audio/internal/PlaybackPage.h>
@@ -48,6 +48,7 @@ namespace Audio::Internal {
4848
initializeAudioPreference();
4949
initializeSettings();
5050
initializeAudioSystem();
51+
initializePropertyEditors();
5152
initializeHelpContents();
5253
initializeWindows();
5354
qCInfo(lcAudioPlugin) << "Initialized";
@@ -89,6 +90,14 @@ namespace Audio::Internal {
8990
sc->addPage(audioAndMidiPage);
9091
}
9192

93+
void AudioPlugin::initializePropertyEditors() {
94+
auto component = new QQmlComponent(Core::RuntimeInterface::qmlEngine(), "DiffScope.Audio", "AudioPropertyEditor", this);
95+
if (component->isError()) {
96+
qFatal() << component->errorString();
97+
}
98+
Core::RuntimeInterface::instance()->addObject("org.diffscope.core.propertyeditor.clip", component);
99+
}
100+
92101
void AudioPlugin::initializeHelpContents() {
93102
auto component = new QQmlComponent(Core::RuntimeInterface::qmlEngine(), "DiffScope.Audio", "AudioOutputWelcomeWizardPage", this);
94103
if (component->isError()) {
@@ -99,7 +108,7 @@ namespace Audio::Internal {
99108

100109
void AudioPlugin::initializeWindows() {
101110
Core::ProjectWindowInterfaceRegistry::instance()->attach<ProjectAudioAddOn>();
102-
Core::ProjectWindowInterfaceRegistry::instance()->attach<InsertAudioClipAddOn>();
111+
Core::ProjectWindowInterfaceRegistry::instance()->attach<AudioClipAddOn>();
103112
Core::ProjectWindowInterfaceRegistry::instance()->attach<PlaybackAddOn>();
104113
}
105114
}

src/plugins/audio/internal/AudioPlugin.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ namespace Audio::Internal {
2222
void initializeAudioPreference();
2323
void initializeAudioSystem();
2424
static void initializeSettings();
25+
void initializePropertyEditors();
2526
void initializeHelpContents();
2627
static void initializeWindows();
2728
};

0 commit comments

Comments
 (0)