Save chats and tabs in new settings system
This commit is contained in:
+4
-57
@@ -7,7 +7,6 @@
|
||||
#include <QDebug>
|
||||
#include <QStandardPaths>
|
||||
#include <boost/foreach.hpp>
|
||||
#include <boost/property_tree/json_parser.hpp>
|
||||
|
||||
namespace chatterino {
|
||||
WindowManager *WindowManager::instance = nullptr;
|
||||
@@ -70,8 +69,6 @@ widgets::Window &WindowManager::createWindow()
|
||||
{
|
||||
auto *window = new widgets::Window("external", this->channelManager, this->colorScheme, false);
|
||||
|
||||
window->loadDefaults();
|
||||
|
||||
this->windows.push_back(window);
|
||||
|
||||
return *window;
|
||||
@@ -92,65 +89,15 @@ widgets::Window *WindowManager::windowAt(int index)
|
||||
return this->windows.at(index);
|
||||
}
|
||||
|
||||
void WindowManager::load()
|
||||
{
|
||||
const auto &settingsPath = getSettingsPath();
|
||||
boost::property_tree::ptree tree;
|
||||
|
||||
try {
|
||||
boost::property_tree::read_json(settingsPath, tree);
|
||||
} catch (const boost::property_tree::json_parser_error &ex) {
|
||||
qDebug() << "Error using property_tree::readJson: " << QString::fromStdString(ex.message());
|
||||
|
||||
getMainWindow().loadDefaults();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Read a list of windows
|
||||
try {
|
||||
BOOST_FOREACH (const boost::property_tree::ptree::value_type &v,
|
||||
tree.get_child("windows.")) {
|
||||
qDebug() << QString::fromStdString(v.first.data());
|
||||
const auto &type = v.second.get<std::string>("type", "unknown");
|
||||
|
||||
if (type == "main") {
|
||||
getMainWindow().load(v.second);
|
||||
} else {
|
||||
qDebug() << "Unhandled window type: " << type.c_str();
|
||||
}
|
||||
}
|
||||
} catch (boost::property_tree::ptree_error &) {
|
||||
// can't read windows
|
||||
}
|
||||
|
||||
// if the main window was not loaded properly, load defaults
|
||||
if (!getMainWindow().isLoaded()) {
|
||||
getMainWindow().loadDefaults();
|
||||
}
|
||||
|
||||
// If there are no windows, create a default main window
|
||||
}
|
||||
|
||||
void WindowManager::save()
|
||||
{
|
||||
auto &settingsPath = getSettingsPath();
|
||||
boost::property_tree::ptree tree;
|
||||
assert(this->mainWindow);
|
||||
|
||||
// Create windows array
|
||||
boost::property_tree::ptree windows;
|
||||
this->mainWindow->save();
|
||||
|
||||
{
|
||||
// save main window
|
||||
auto child = getMainWindow().save();
|
||||
windows.push_back(std::make_pair("", child));
|
||||
for (widgets::Window *window : this->windows) {
|
||||
window->save();
|
||||
}
|
||||
|
||||
// TODO: iterate through rest of windows and add them to the "windows" ptree
|
||||
|
||||
tree.add_child("windows", windows);
|
||||
|
||||
boost::property_tree::write_json(settingsPath, tree);
|
||||
}
|
||||
|
||||
} // namespace chatterino
|
||||
|
||||
Reference in New Issue
Block a user