-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwaverapplication.cpp
166 lines (131 loc) · 10.8 KB
/
waverapplication.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/*
This file is part of Waver
Copyright (C) 2021 Peter Papp
Please visit https://launchpad.net/waver for details
*/
#include "waverapplication.h"
WaverApplication::WaverApplication(int &argc, char **argv) : QGuiApplication(argc, argv)
{
qRegisterMetaType<TimedChunk>("TimedChunk");
waverThread = nullptr;
waver = nullptr;
setOrganizationName("4phun");
setOrganizationDomain("pppphun.com");
setApplicationName("Waver");
setApplicationVersion(VERSION_SUB == 0 ? QString("%1.%2").arg(VERSION_MAJOR).arg(VERSION_MINOR) : QString("%1.%2.%3").arg(VERSION_MAJOR).arg(VERSION_MINOR).arg(VERSION_SUB));
setWindowIcon(QIcon("qrc:/images/waver.png"));
if ((QSysInfo::productType().compare("windows", Qt::CaseInsensitive) == 0) || (QSysInfo::productType().compare("winrt", Qt::CaseInsensitive) == 0)) {
QQuickStyle::setStyle("Universal");
}
else {
QQuickStyle::setStyle("Material");
}
notificationsHandler = nullptr;
}
WaverApplication::~WaverApplication()
{
if (notificationsHandler != nullptr) {
delete notificationsHandler;
}
emit shutdownWaver();
while (!waver->isShutdownCompleted()) {
QThread::currentThread()->msleep(50);
}
if (waverThread != nullptr) {
waverThread->quit();
waverThread->wait();
waverThread->deleteLater();
}
}
void WaverApplication::setQmlApplicationEngine(QQmlApplicationEngine *qmlApplicationEngine)
{
this->qmlApplicationEngine = qmlApplicationEngine;
waverThread = new QThread();
waver = new Waver();
waverThread->setObjectName("waverThread");
waver->moveToThread(waverThread);
QObject::connect(waverThread, &QThread::started, waver, &Waver::run);
QObject::connect(waverThread, &QThread::finished, waver, &Waver::deleteLater);
QQuickWindow *uiMainWindow = qobject_cast<QQuickWindow *>(this->qmlApplicationEngine->rootObjects().at(0));
QObject::connect(waver, SIGNAL(explorerAddItem(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)), uiMainWindow, SLOT(explorerAddItem(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)));
QObject::connect(waver, SIGNAL(explorerDisableQueueable(QVariant)), uiMainWindow, SLOT(explorerDisableQueueable(QVariant)));
QObject::connect(waver, SIGNAL(explorerRemoveAboveLevel(QVariant)), uiMainWindow, SLOT(explorerRemoveAboveLevel(QVariant)));
QObject::connect(waver, SIGNAL(explorerRemoveChildren(QVariant)), uiMainWindow, SLOT(explorerRemoveChildren(QVariant)));
QObject::connect(waver, SIGNAL(explorerRemoveItem(QVariant)), uiMainWindow, SLOT(explorerRemoveItem(QVariant)));
QObject::connect(waver, SIGNAL(explorerSetBusy(QVariant,QVariant)), uiMainWindow, SLOT(explorerSetBusy(QVariant,QVariant)));
QObject::connect(waver, SIGNAL(explorerSetFlagExtra(QVariant,QVariant)), uiMainWindow, SLOT(explorerSetFlagExtra(QVariant,QVariant)));
QObject::connect(waver, SIGNAL(explorerSetError(QVariant,QVariant,QVariant)), uiMainWindow, SLOT(explorerSetError(QVariant,QVariant,QVariant)));
QObject::connect(waver, SIGNAL(explorerSetSelected(QVariant,QVariant)), uiMainWindow, SLOT(explorerSetSelected(QVariant,QVariant)));
QObject::connect(waver, SIGNAL(explorerSetTitle(QVariant,QVariant)), uiMainWindow, SLOT(explorerSetTitle(QVariant,QVariant)));
QObject::connect(waver, SIGNAL(explorerSortChildren(QVariant)), uiMainWindow, SLOT(explorerSortChildren(QVariant)));
QObject::connect(waver, SIGNAL(explorerToggleSelected(QVariant)), uiMainWindow, SLOT(explorerToggleSelected(QVariant)));
QObject::connect(waver, SIGNAL(uiSetImage(QVariant)), uiMainWindow, SLOT(setImage(QVariant)));
QObject::connect(waver, SIGNAL(uiSetTempImage(QVariant)), uiMainWindow, SLOT(setTempImage(QVariant)));
QObject::connect(waver, SIGNAL(uiSetStatusText(QVariant)), uiMainWindow, SLOT(setStatusText(QVariant)));
QObject::connect(waver, SIGNAL(uiSetStatusTempText(QVariant)), uiMainWindow, SLOT(setStatusTempText(QVariant)));
QObject::connect(waver, SIGNAL(uiSetPeakMeter(QVariant,QVariant,QVariant)), uiMainWindow, SLOT(setPeakMeter(QVariant,QVariant,QVariant)));
QObject::connect(waver, SIGNAL(uiSetPeakMeterReplayGain(QVariant)), uiMainWindow, SLOT(setPeakMeterReplayGain(QVariant)));
QObject::connect(waver, SIGNAL(uiSetShuffleCountdown(QVariant)), uiMainWindow, SLOT(setShuffleCountdown(QVariant)));
QObject::connect(waver, SIGNAL(uiSetFavorite(QVariant)), uiMainWindow, SLOT(setFavorite(QVariant)));
QObject::connect(waver, SIGNAL(uiShowSearchCriteria()), uiMainWindow, SLOT(showSearchCriteria()));
QObject::connect(waver, SIGNAL(uiSetTrackBusy(QVariant)), uiMainWindow, SLOT(setTrackBusy(QVariant)));
QObject::connect(waver, SIGNAL(uiSetTrackData(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)), uiMainWindow, SLOT(setTrackData(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)));
QObject::connect(waver, SIGNAL(uiSetTrackLength(QVariant)), uiMainWindow, SLOT(setTrackLength(QVariant)));
QObject::connect(waver, SIGNAL(uiSetTrackPosition(QVariant,QVariant)), uiMainWindow, SLOT(setTrackPosition(QVariant,QVariant)));
QObject::connect(waver, SIGNAL(uiSetTrackDecoding(QVariant,QVariant)), uiMainWindow, SLOT(setTrackDecoding(QVariant,QVariant)));
QObject::connect(waver, SIGNAL(uiSetTrackTags(QVariant)), uiMainWindow, SLOT(setTrackTags(QVariant)));
QObject::connect(waver, SIGNAL(uiSetTrackAmpacheURL(QVariant)), uiMainWindow, SLOT(setTrackAmpacheURL(QVariant)));
QObject::connect(waver, SIGNAL(uiSetTitleCurlySpecial(QVariant)), uiMainWindow, SLOT(setTitleCurlySpecial(QVariant)));
QObject::connect(waver ,SIGNAL(uiSetFontSize(QVariant)), uiMainWindow, SLOT(setFontSize(QVariant)));
QObject::connect(waver, SIGNAL(playlistAddItem(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)), uiMainWindow, SLOT(playlistAddItem(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)));
QObject::connect(waver, SIGNAL(playlistClearItems()), uiMainWindow, SLOT(playlistClearItems()));
QObject::connect(waver, SIGNAL(playlistBusy(QVariant,QVariant)), uiMainWindow, SLOT(playlistBusy(QVariant,QVariant)));
QObject::connect(waver, SIGNAL(playlistDecoding(QVariant,QVariant,QVariant)), uiMainWindow, SLOT(playlistDecoding(QVariant,QVariant,QVariant)));
QObject::connect(waver, SIGNAL(playlistBigBusy(QVariant)), uiMainWindow, SLOT(playlistBigBusy(QVariant)));
QObject::connect(waver, SIGNAL(playlistTotalTime(QVariant)), uiMainWindow, SLOT(playlistTotalTime(QVariant)));
QObject::connect(waver, SIGNAL(playlistSelected(QVariant,QVariant)), uiMainWindow, SLOT(playlistSelected(QVariant,QVariant)));
QObject::connect(waver, SIGNAL(uiPromptServerPsw(QVariant,QVariant)), uiMainWindow, SLOT(promptServerPsw(QVariant,QVariant)));
QObject::connect(uiMainWindow, SIGNAL(addNewServer(QString,QString,QString)), waver, SLOT(addServer(QString,QString,QString)));
QObject::connect(uiMainWindow, SIGNAL(deleteServer(QString)), waver, SLOT(deleteServer(QString)));
QObject::connect(uiMainWindow, SIGNAL(setServerPassword(QString,QString)), waver, SLOT(setServerPassword(QString,QString)));
QObject::connect(uiMainWindow, SIGNAL(explorerItemClicked(QString,int,QString)), waver, SLOT(explorerItemClicked(QString,int,QString)));
QObject::connect(uiMainWindow, SIGNAL(playlistItemClicked(int,int)), waver, SLOT(playlistItemClicked(int,int)));
QObject::connect(uiMainWindow, SIGNAL(playlistItemDragDropped(int,int)), waver, SLOT(playlistItemDragDropped(int,int)));
QObject::connect(uiMainWindow, SIGNAL(playlistExplorerItemDragDropped(QString,QString,int)), waver, SLOT(playlistExplorerItemDragDropped(QString,QString,int)));
QObject::connect(uiMainWindow, SIGNAL(positioned(double)), waver, SLOT(positioned(double)));
QObject::connect(uiMainWindow, SIGNAL(previousButton(int)), waver, SLOT(previousButton(int)));
QObject::connect(uiMainWindow, SIGNAL(nextButton()), waver, SLOT(nextButton()));
QObject::connect(uiMainWindow, SIGNAL(playButton()), waver, SLOT(playButton()));
QObject::connect(uiMainWindow, SIGNAL(pauseButton()), waver, SLOT(pauseButton()));
QObject::connect(uiMainWindow, SIGNAL(ppButton()), waver, SLOT(ppButton()));
QObject::connect(uiMainWindow, SIGNAL(stopButton()), waver, SLOT(stopButton()));
QObject::connect(uiMainWindow, SIGNAL(favoriteButton(bool)), waver, SLOT(favoriteButton(bool)));
QObject::connect(uiMainWindow, SIGNAL(searchCriteriaEntered(QString)), waver, SLOT(searchCriteriaEntered(QString)));
QObject::connect(waver, SIGNAL(optionsAsRequested(QVariant)), uiMainWindow, SLOT(optionsAsRequested(QVariant)));
QObject::connect(waver, SIGNAL(eqAsRequested(QVariant)), uiMainWindow, SLOT(eqAsRequested(QVariant)));
QObject::connect(uiMainWindow, SIGNAL(requestOptions()), waver, SLOT(requestOptions()));
QObject::connect(uiMainWindow, SIGNAL(requestEQ(int)), waver, SLOT(requestEQ(int)));
QObject::connect(uiMainWindow, SIGNAL(updatedOptions(QString)), waver, SLOT(updatedOptions(QString)));
QObject::connect(waver, SIGNAL(uiHistoryAdd(QVariant)), uiMainWindow, SLOT(historyAdd(QVariant)));
QObject::connect(waver, SIGNAL(uiHistoryRemove(QVariant)), uiMainWindow, SLOT(historyRemove(QVariant)));
QObject::connect(waver, SIGNAL(uiRaise()), uiMainWindow, SLOT(bringToFront()));
QObject::connect(waver, SIGNAL(uiSetIsSnap(QVariant)), uiMainWindow, SLOT(quickStartGuideSetIsSnap(QVariant)));
QObject::connect(uiMainWindow, SIGNAL(peakUILag(int)), waver, SLOT(peakUILag(int)));
QObject::connect(uiMainWindow, SIGNAL(saveGeometry(int,int,int,int)), this, SLOT(uiSaveGeometry(int,int,int,int)));
QObject::connect(waver, SIGNAL(explorerGetSearchResult(QVariant,QVariant)), uiMainWindow, SLOT(explorerGetSearchResult(QVariant,QVariant)));
QObject::connect(uiMainWindow, SIGNAL(searchResult(QString,QString,QString)), waver, SLOT(searchResult(QString,QString,QString)));
QObject::connect(this, SIGNAL(shutdownWaver()), waver, SLOT(shutdown()));
QSettings settings;
uiMainWindow->setGeometry(settings.value("MainWindow/x", 150).toInt(), settings.value("MainWindow/y", 150).toInt(), settings.value("MainWindow/width", uiMainWindow->width()).toInt(), settings.value("MainWindow/height", uiMainWindow->height()).toInt());
notificationsHandler = new NotificationsHandler(waver);
waverThread->start();
}
void WaverApplication::uiSaveGeometry(int x, int y, int width, int height)
{
QSettings settings;
settings.setValue("MainWindow/x", x);
settings.setValue("MainWindow/y", y);
settings.setValue("MainWindow/width", width);
settings.setValue("MainWindow/height", height);
settings.sync();
}