Extract code to get list of connected screens into a re-usable function

Right now it's duplicated twice, and once we add per-screen-arrangement
memory for window sizes as well, it will be duplicated four times unless
we put it into a function.
wilder
Nate Graham 6 years ago
parent a3d5591706
commit 803b9f16e0
  1. 27
      src/gui/kwindowconfig.cpp
  2. 8
      src/gui/kwindowconfig.h

@ -84,13 +84,7 @@ void KWindowConfig::saveWindowPosition(const QWindow *window, KConfigGroup &conf
// Prepend the names of all connected screens so that we save the position
// on a per-screen-arrangement basis, since people often like to have
// windows positioned differently depending on their screen arrangements
QStringList names;
const auto screens = QGuiApplication::screens();
names.reserve(screens.length());
for (auto screen : screens) {
names << screen->name();
}
const QString allScreens = names.join(QStringLiteral(" "));
const QString allScreens = allConnectedScreens();
config.writeEntry(allScreens + QStringLiteral(" XPosition"), window->x(), options);
config.writeEntry(allScreens + QStringLiteral(" YPosition"), window->y(), options);
}
@ -112,13 +106,7 @@ void KWindowConfig::restoreWindowPosition(QWindow *window, const KConfigGroup &c
return;
}
QStringList names;
const auto screens = QGuiApplication::screens();
names.reserve(screens.length());
for (auto screen : screens) {
names << screen->name();
}
const QString allScreens = names.join(QStringLiteral(" "));
const QString allScreens = allConnectedScreens();
const int xPos = config.readEntry(allScreens + QStringLiteral(" XPosition"), -1);
const int yPos = config.readEntry(allScreens + QStringLiteral(" YPosition"), -1);
@ -129,3 +117,14 @@ void KWindowConfig::restoreWindowPosition(QWindow *window, const KConfigGroup &c
window->setX(xPos);
window->setY(yPos);
}
QString KWindowConfig::allConnectedScreens()
{
QStringList names;
const auto screens = QGuiApplication::screens();
names.reserve(screens.length());
for (auto screen : screens) {
names << screen->name();
}
return names.join(QStringLiteral(" "));
}

@ -82,6 +82,12 @@ KCONFIGGUI_EXPORT void saveWindowPosition(const QWindow *window, KConfigGroup &c
* @since 5.74
*/
KCONFIGGUI_EXPORT void restoreWindowPosition(QWindow *window, const KConfigGroup &config);
}
/**
* Convenience function to get a space-separated list of all connected screens.
*
* @since 5.75
*/
QString allConnectedScreens();
}
#endif // KWINDOWCONFIG_H

Loading…
Cancel
Save