mirror of
https://gitlab.com/kelteseth/ScreenPlay.git
synced 2024-11-20 01:34:04 +01:00
Fix remove all call
We need to first stop all currently running wallpaper, before we remove the timelines
This commit is contained in:
parent
2f481e0846
commit
d32b093651
@ -35,8 +35,8 @@ public:
|
||||
const std::shared_ptr<MonitorListModel>& mlm,
|
||||
const std::shared_ptr<Settings>& settings);
|
||||
|
||||
Q_INVOKABLE QCoro::QmlTask removeAllWallpapers(bool saveToProfile = false);
|
||||
Q_INVOKABLE bool removeAllWidgets(bool saveToProfile = false);
|
||||
Q_INVOKABLE QCoro::QmlTask removeAllRunningWallpapers(bool saveToProfile = false);
|
||||
Q_INVOKABLE bool removeAllRunningWidgets(bool saveToProfile = false);
|
||||
Q_INVOKABLE QCoro::QmlTask removeWallpaperAt(const int timelineIndex, const QString timelineIdentifier, const int monitorIndex);
|
||||
|
||||
Q_INVOKABLE ScreenPlayWallpaper* getWallpaperByAppID(const QString& appID);
|
||||
|
@ -470,23 +470,37 @@ Control {
|
||||
}
|
||||
|
||||
ToolButton {
|
||||
text: "❌ Reset" //qsTr("Remove all timeline ranges")
|
||||
id: btnReset
|
||||
text: resetting ? qsTr("Reseting...") : qsTr("❌ Reset")
|
||||
property bool resetting: false
|
||||
enabled: !resetting
|
||||
z: 99
|
||||
anchors {
|
||||
right: parent.right
|
||||
top: parent.top
|
||||
}
|
||||
onClicked: {
|
||||
timeline.removeAll();
|
||||
App.screenPlayManager.removeAllTimlineSections().then(result => {
|
||||
console.log("resetting", btnReset.resetting);
|
||||
btnReset.resetting = true;
|
||||
App.screenPlayManager.removeAllRunningWallpapers().then(result => {
|
||||
if (!result.success) {
|
||||
console.error("removeAllTimlineSections failed");
|
||||
btnReset.resetting = false;
|
||||
return;
|
||||
}
|
||||
const position = 1.0;
|
||||
const identifier = App.util.generateRandomString(4);
|
||||
const sectionObject = timeline.addSection(identifier, position);
|
||||
App.screenPlayManager.addTimelineAt(sectionObject.index, sectionObject.relativeLinePosition, sectionObject.identifier);
|
||||
App.screenPlayManager.removeAllTimlineSections().then(result => {
|
||||
if (!result.success) {
|
||||
console.error("removeAllTimlineSections failed");
|
||||
btnReset.resetting = false;
|
||||
return;
|
||||
}
|
||||
timeline.removeAll();
|
||||
const position = 1.0;
|
||||
const identifier = App.util.generateRandomString(4);
|
||||
const sectionObject = timeline.addSection(identifier, position);
|
||||
App.screenPlayManager.addTimelineAt(sectionObject.index, sectionObject.relativeLinePosition, sectionObject.identifier);
|
||||
btnReset.resetting = false;
|
||||
});
|
||||
});
|
||||
}
|
||||
anchors {
|
||||
|
@ -189,7 +189,7 @@ Util.Popup {
|
||||
font.family: App.settings.font
|
||||
enabled: App.screenPlayManager.activeWallpaperCounter > 0
|
||||
onClicked: {
|
||||
if (!App.screenPlayManager.removeAllWallpapers(true))
|
||||
if (!App.screenPlayManager.removeAllRunningWallpapers(true))
|
||||
print("Unable to close all wallpaper!");
|
||||
}
|
||||
}
|
||||
@ -204,7 +204,7 @@ Util.Popup {
|
||||
font.family: App.settings.font
|
||||
enabled: App.screenPlayManager.activeWidgetsCounter > 0
|
||||
onClicked: {
|
||||
if (!App.screenPlayManager.removeAllWidgets())
|
||||
if (!App.screenPlayManager.removeAllRunningWidgets())
|
||||
print("Unable to close all widgets!");
|
||||
}
|
||||
}
|
||||
|
@ -285,14 +285,15 @@ Rectangle {
|
||||
icon.width: root.iconWidth
|
||||
icon.height: root.iconHeight
|
||||
onClicked: {
|
||||
App.screenPlayManager.removeAllWallpapers(true);
|
||||
App.screenPlayManager.removeAllWidgets(true);
|
||||
App.screenPlayManager.removeAllRunningWidgets(false);
|
||||
// Saves profiles.json
|
||||
App.screenPlayManager.removeAllRunningWallpapers(true);
|
||||
miStopAll.isPlaying = true;
|
||||
miMuteAll.soundEnabled = true;
|
||||
}
|
||||
|
||||
hoverEnabled: true
|
||||
ToolTip.text: qsTr("Close All Content")
|
||||
ToolTip.text: qsTr("Stop All Running Content")
|
||||
ToolTip.visible: hovered
|
||||
}
|
||||
}
|
||||
|
@ -125,7 +125,7 @@ void App::init()
|
||||
// m_monitorListModel.get(),
|
||||
// &MonitorListModel::monitorConfigurationChanged,
|
||||
// m_screenPlayManager.get(), [this]() {
|
||||
// m_screenPlayManager->removeAllWallpapers(true);
|
||||
// m_screenPlayManager->removeAllRunningWallpapers(true);
|
||||
// });
|
||||
}
|
||||
|
||||
@ -140,8 +140,8 @@ QString App::version() const
|
||||
*/
|
||||
void App::exit()
|
||||
{
|
||||
m_screenPlayManager->removeAllWallpapers(false);
|
||||
m_screenPlayManager->removeAllWidgets(false);
|
||||
m_screenPlayManager->removeAllRunningWallpapers(false);
|
||||
m_screenPlayManager->removeAllRunningWidgets(false);
|
||||
// Must be called inside a separate event loop otherwise we
|
||||
// would kill the qml engine while it is calling this function.
|
||||
// A single shot timer is a handy woraround for this.
|
||||
|
@ -165,13 +165,14 @@ void ScreenPlayManager::setSelectedTimelineIndex(const int selectedTimelineIndex
|
||||
/*!
|
||||
\brief Removes all wallpaper entries in the profiles.json.
|
||||
*/
|
||||
QCoro::QmlTask ScreenPlayManager::removeAllWallpapers(bool saveToProfile)
|
||||
QCoro::QmlTask ScreenPlayManager::removeAllRunningWallpapers(bool saveToProfile)
|
||||
{
|
||||
return QCoro::QmlTask([this]() -> QCoro::Task<Result> {
|
||||
return QCoro::QmlTask([this, saveToProfile]() -> QCoro::Task<Result> {
|
||||
// call with coro
|
||||
const bool success = co_await m_screenPlayTimelineManager.removeAllWallpaperFromActiveTimlineSections();
|
||||
qDebug() << "Task: removeAllWallpaperFromActiveTimlineSections" << success;
|
||||
// emit requestSaveProfiles();
|
||||
if (saveToProfile)
|
||||
emit requestSaveProfiles();
|
||||
co_return Result { success };
|
||||
}());
|
||||
}
|
||||
@ -179,7 +180,7 @@ QCoro::QmlTask ScreenPlayManager::removeAllWallpapers(bool saveToProfile)
|
||||
/*!
|
||||
\brief Removes all widgets and resets the activeWidgetCounter to 0.
|
||||
*/
|
||||
bool ScreenPlayManager::removeAllWidgets(bool saveToProfile)
|
||||
bool ScreenPlayManager::removeAllRunningWidgets(bool saveToProfile)
|
||||
{
|
||||
if (m_screenPlayWidgets.empty()) {
|
||||
return false;
|
||||
@ -229,6 +230,7 @@ bool ScreenPlayManager::requestProjectSettingsAtMonitorIndex(const int index)
|
||||
if (!activeTimelineSection) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO CHANGE TO WP SECTION
|
||||
for (const auto& wallpaper : std::as_const(activeTimelineSection->activeWallpaperList)) {
|
||||
if (wallpaper->monitors()[0] == index) {
|
||||
@ -328,7 +330,7 @@ QCoro::QmlTask ScreenPlayManager::removeAllTimlineSections()
|
||||
const bool success = co_await m_screenPlayTimelineManager.removeAllTimlineSections();
|
||||
qDebug() << "Task: removeAllTimlineSections" << success;
|
||||
// emit requestSaveProfiles();
|
||||
// removeAllWallpapers();
|
||||
// removeAllRunningWallpapers();
|
||||
co_return Result { success };
|
||||
}());
|
||||
}
|
||||
|
@ -100,7 +100,9 @@ bool WallpaperTimelineSection::activateTimeline()
|
||||
|
||||
QCoro::Task<bool> WallpaperTimelineSection::deactivateTimeline()
|
||||
{
|
||||
|
||||
if (activeWallpaperList.empty()) {
|
||||
co_return true;
|
||||
}
|
||||
status = Status::Closing;
|
||||
for (auto& activeWallpaper : activeWallpaperList) {
|
||||
activeWallpaper->close();
|
||||
|
Loading…
Reference in New Issue
Block a user