fix(settings): bring the running window forward with the new instance's activation token

main
reionwong 1 week ago
parent 46538f94ba
commit e0868c107e

@ -73,17 +73,22 @@ int main(int argc, char** argv)
base::dbus::Connection* bus = application.sessionBus();
if (bus && !bus->requestName(kService)) {
base::dbus::Proxy existing(bus, kService, kPath, kService);
const std::string token = application.takeActivationToken();
if (!accessPoint.empty())
existing.call("joinWifi", accessPoint);
existing.call("joinWifi", accessPoint, token);
else
existing.call("switchToPage", module);
existing.call("switchToPage", module, token);
return 0;
}
settings::SettingsWindow window;
base::dbus::Object object(bus, kPath, kService);
object.addMethod("switchToPage", [&window](const std::string& name) { window.switchToPage(name); });
object.addMethod("joinWifi", [&window](const std::string& name) { window.joinWifi(name); });
object.addMethod("switchToPage", [&window](const std::string& name, const std::string& token) {
window.switchToPage(name, token);
});
object.addMethod("joinWifi", [&window](const std::string& name, const std::string& token) {
window.joinWifi(name, token);
});
if (bus)
object.publish();

@ -398,7 +398,7 @@ void SettingsWindow::switchToIndex(int index)
navigate(entries[size_t(index)]->id, entries[size_t(index)]->id);
}
void SettingsWindow::switchToPage(const std::string& name)
void SettingsWindow::switchToPage(const std::string& name, const std::string& activationToken)
{
const PageInfo* page = nullptr;
for (const PageInfo& info : pages()) {
@ -421,13 +421,13 @@ void SettingsWindow::switchToPage(const std::string& name)
}
// A minimized window is shown again.
if (m_revealed)
m_window->activate();
m_window->activate(activationToken);
}
void SettingsWindow::joinWifi(const std::string& accessPoint)
void SettingsWindow::joinWifi(const std::string& accessPoint, const std::string& activationToken)
{
m_pendingWifiJoin = accessPoint;
switchToPage("wlan");
switchToPage("wlan", activationToken);
wifiJoinRequested.emit();
}

@ -49,9 +49,11 @@ public:
cutefish::base::Signal<> revealedChanged;
// A sidebar page or a named sub page, as -m and switchToPage() name them.
void switchToPage(const std::string& name);
// A shown window comes forward, with the activation token another
// instance was started with.
void switchToPage(const std::string& name, const std::string& activationToken = {});
// Opens the Wi-Fi page to join an access point's enterprise network.
void joinWifi(const std::string& accessPoint);
void joinWifi(const std::string& accessPoint, const std::string& activationToken = {});
// Taken by the Wi-Fi page once it can ask for the network.
std::string takePendingWifiJoin();
// After joinWifi() switched pages, also when the Wi-Fi page was already

Loading…
Cancel
Save