commit 329abdc368eccf29c1691f81090ac975c671f6e9
parent 61e59909d7476ced7ac0950b4bba0b2951334868
Author: cfillion <cfillion@users.noreply.github.com>
Date: Thu, 5 Jan 2017 04:24:50 -0500
manager: remember window position, size and list state
Diffstat:
4 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/src/config.cpp b/src/config.cpp
@@ -36,6 +36,7 @@ static const auto_char *PRERELEASES_KEY = AUTO_STR("prereleases");
static const auto_char *PROMPTOBSOLETE_KEY = AUTO_STR("promptobsolete");
static const auto_char *ABOUT_GRP = AUTO_STR("about");
+static const auto_char *MANAGER_GRP = AUTO_STR("manager");
static const auto_char *BROWSER_GRP = AUTO_STR("browser");
static const auto_char *SHOWDESCS_KEY = AUTO_STR("showdescs");
@@ -151,6 +152,7 @@ void Config::read(const Path &path)
windowState.about = getString(ABOUT_GRP, STATE_KEY, windowState.about);
windowState.browser = getString(BROWSER_GRP, STATE_KEY, windowState.browser);
+ windowState.manager = getString(MANAGER_GRP, STATE_KEY, windowState.manager);
readRemotes();
restoreSelfRemote();
@@ -172,6 +174,8 @@ void Config::write()
setString(ABOUT_GRP, STATE_KEY, windowState.about);
setString(BROWSER_GRP, STATE_KEY, windowState.browser);
+ setString(MANAGER_GRP, STATE_KEY, windowState.manager);
+
writeRemotes();
}
diff --git a/src/config.hpp b/src/config.hpp
@@ -28,6 +28,7 @@ class Path;
struct WindowState {
std::string about;
std::string browser;
+ std::string manager;
};
struct BrowserOpts {
diff --git a/src/manager.cpp b/src/manager.cpp
@@ -67,11 +67,23 @@ void Manager::onInit()
setAnchor(getControl(IDCANCEL), AnchorAll);
setAnchor(m_apply, AnchorAll);
+ auto data = m_serializer.read(m_reapack->config()->windowState.manager, 1);
+ restoreState(data);
+ m_list->restoreState(data);
+
refresh();
m_list->autoSizeHeader();
}
+void Manager::onClose()
+{
+ Serializer::Data data;
+ saveState(data);
+ m_list->saveState(data);
+ m_reapack->config()->windowState.manager = m_serializer.write(data);
+}
+
void Manager::onCommand(const int id, int)
{
switch(id) {
diff --git a/src/manager.hpp b/src/manager.hpp
@@ -45,6 +45,7 @@ protected:
void onInit() override;
void onCommand(int, int) override;
bool onKeyDown(int, int) override;
+ void onClose() override;
private:
struct RemoteMods {
@@ -91,6 +92,8 @@ private:
boost::optional<bool> m_autoInstall;
boost::optional<bool> m_bleedingEdge;
boost::optional<bool> m_promptObsolete;
+
+ Serializer m_serializer;
};
class NetworkConfig : public Dialog {