Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion src/dbus/VoiceNoteDBusService.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2025 UnionTech Software Technology Co., Ltd.
// SPDX-FileCopyrightText: 2025 - 2026 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

Expand Down Expand Up @@ -53,6 +53,22 @@ bool VoiceNoteDBusService::initDBusService()
return true;
}

void VoiceNoteDBusService::ActivateWindow()
{
qInfo() << "D-Bus: ActivateWindow called";

auto windows = qApp->topLevelWindows();
if (!windows.isEmpty()) {
QWindow *window = windows.first();
window->showNormal();
window->raise();
window->requestActivate();
qInfo() << " Window activated successfully";
} else {
qWarning() << " No top-level windows found";
}
}

QString VoiceNoteDBusService::GetNotesList()
{
qInfo() << "D-Bus: GetNotesList called";
Expand Down
5 changes: 4 additions & 1 deletion src/dbus/VoiceNoteDBusService.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2025 UnionTech Software Technology Co., Ltd.
// SPDX-FileCopyrightText: 2025 - 2026 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

Expand All @@ -25,6 +25,9 @@ public slots:

// D-Bus接口2: 录音
bool RecordVoice(int folderId, int noteId);

// D-Bus接口3: 激活窗口(从最小化恢复并显示到前台)
void ActivateWindow();
};

#endif // VOICENOTEDBUSSERVICE_H
Expand Down
20 changes: 18 additions & 2 deletions src/main.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Copyright (C) 2020 ~ 2020 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
// Copyright (C) 2020 - 2026 Deepin Technology Co., Ltd.
// SPDX-FileCopyrightText: 2023 - 2026 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

Expand Down Expand Up @@ -44,6 +44,20 @@
DWIDGET_USE_NAMESPACE
DCORE_USE_NAMESPACE

static void activateExistingInstanceViaDBus()
{
QDBusInterface iface("org.deepin.voicenote",
"/org/deepin/voicenote",
"org.deepin.voicenote",
QDBusConnection::sessionBus());
if (iface.isValid()) {
qInfo() << "Calling ActivateWindow on existing instance via D-Bus";
iface.asyncCall("ActivateWindow");
} else {
qWarning() << "D-Bus interface not available:" << QDBusConnection::sessionBus().lastError().message();
}
}

int main(int argc, char *argv[])
{
#ifdef __mips64
Expand All @@ -67,13 +81,15 @@ int main(int argc, char *argv[])
DGuiApplicationHelper::instance()->setSingleInstanceInterval(-1);
if (!DGuiApplicationHelper::instance()->setSingleInstance(app->applicationName(), DGuiApplicationHelper::UserScope)) {
qWarning() << "Another instance of deepin-voice-note is already running";
activateExistingInstanceViaDBus();
QCoreApplication::exit(0);
}
});
#else
DGuiApplicationHelper::instance()->setSingleInstanceInterval(-1);
if (!DGuiApplicationHelper::instance()->setSingleInstance(app->applicationName(), DGuiApplicationHelper::UserScope)) {
qWarning() << "Another instance of deepin-voice-note is already running";
activateExistingInstanceViaDBus();
return 0;
}
#endif
Expand Down
Loading