clean window restore config settings
This commit is contained in:
parent
30a2507d74
commit
8ccf036c6d
4 changed files with 40 additions and 58 deletions
|
@ -32,19 +32,17 @@ public:
|
||||||
this->recentMap = "";
|
this->recentMap = "";
|
||||||
this->mapSortOrder = MapSortOrder::Group;
|
this->mapSortOrder = MapSortOrder::Group;
|
||||||
this->prettyCursors = true;
|
this->prettyCursors = true;
|
||||||
this->restoreGeometry = false;
|
|
||||||
}
|
}
|
||||||
void setRecentProject(QString project);
|
void setRecentProject(QString project);
|
||||||
void setRecentMap(QString map);
|
void setRecentMap(QString map);
|
||||||
void setMapSortOrder(MapSortOrder order);
|
void setMapSortOrder(MapSortOrder order);
|
||||||
void setPrettyCursors(bool enabled);
|
void setPrettyCursors(bool enabled);
|
||||||
void setGeometry(QByteArrayList);//
|
void setGeometry(QByteArray, QByteArray, QByteArray, QByteArray, QByteArray);
|
||||||
QString getRecentProject();
|
QString getRecentProject();
|
||||||
QString getRecentMap();
|
QString getRecentMap();
|
||||||
MapSortOrder getMapSortOrder();
|
MapSortOrder getMapSortOrder();
|
||||||
bool getPrettyCursors();
|
bool getPrettyCursors();
|
||||||
bool getRestoreWindowGeometry();
|
QMap<QString, QByteArray> getGeometry();
|
||||||
QByteArrayList getGeometry();
|
|
||||||
protected:
|
protected:
|
||||||
QString getConfigFilepath();
|
QString getConfigFilepath();
|
||||||
void parseConfigKeyValue(QString key, QString value);
|
void parseConfigKeyValue(QString key, QString value);
|
||||||
|
@ -53,12 +51,10 @@ protected:
|
||||||
private:
|
private:
|
||||||
QString recentProject;
|
QString recentProject;
|
||||||
QString recentMap;
|
QString recentMap;
|
||||||
QString unicodeByteArray(QByteArray);
|
QString stringFromByteArray(QByteArray);
|
||||||
QByteArray bytesFromString(QString);
|
QByteArray bytesFromString(QString);
|
||||||
MapSortOrder mapSortOrder;
|
MapSortOrder mapSortOrder;
|
||||||
bool prettyCursors;
|
bool prettyCursors;
|
||||||
//
|
|
||||||
bool restoreGeometry;
|
|
||||||
QByteArray windowGeometry;
|
QByteArray windowGeometry;
|
||||||
QByteArray windowState;
|
QByteArray windowState;
|
||||||
QByteArray mapSplitterState;
|
QByteArray mapSplitterState;
|
||||||
|
|
|
@ -119,12 +119,6 @@ void PorymapConfig::parseConfigKeyValue(QString key, QString value) {
|
||||||
this->mapSortOrder = MapSortOrder::Group;
|
this->mapSortOrder = MapSortOrder::Group;
|
||||||
logWarn(QString("Invalid config value for map_sort_order: '%1'. Must be 'group', 'area', or 'layout'.").arg(value));
|
logWarn(QString("Invalid config value for map_sort_order: '%1'. Must be 'group', 'area', or 'layout'.").arg(value));
|
||||||
}
|
}
|
||||||
} else if (key == "restore_geometry") {
|
|
||||||
bool ok;
|
|
||||||
this->restoreGeometry = value.toInt(&ok);
|
|
||||||
if (!ok) {
|
|
||||||
logWarn(QString("Invalid config value for restore_geometry: '%1'. Must be 0 or 1.").arg(value));
|
|
||||||
}
|
|
||||||
} else if (key == "window_geometry") {
|
} else if (key == "window_geometry") {
|
||||||
this->windowGeometry = bytesFromString(value);
|
this->windowGeometry = bytesFromString(value);
|
||||||
} else if (key == "window_state") {
|
} else if (key == "window_state") {
|
||||||
|
@ -146,16 +140,15 @@ QMap<QString, QString> PorymapConfig::getKeyValueMap() {
|
||||||
map.insert("recent_map", this->recentMap);
|
map.insert("recent_map", this->recentMap);
|
||||||
map.insert("pretty_cursors", this->prettyCursors ? "1" : "0");
|
map.insert("pretty_cursors", this->prettyCursors ? "1" : "0");
|
||||||
map.insert("map_sort_order", mapSortOrderMap.value(this->mapSortOrder));
|
map.insert("map_sort_order", mapSortOrderMap.value(this->mapSortOrder));
|
||||||
map.insert("restore_geometry", this->restoreGeometry ? "1" : "0");
|
map.insert("window_geometry", stringFromByteArray(this->windowGeometry));
|
||||||
map.insert("window_geometry", unicodeByteArray(this->windowGeometry));
|
map.insert("window_state", stringFromByteArray(this->windowState));
|
||||||
map.insert("window_state", unicodeByteArray(this->windowState));
|
map.insert("map_splitter_state", stringFromByteArray(this->mapSplitterState));
|
||||||
map.insert("map_splitter_state", unicodeByteArray(this->mapSplitterState));
|
map.insert("events_splitter_state", stringFromByteArray(this->eventsSlpitterState));
|
||||||
map.insert("events_splitter_state", unicodeByteArray(this->eventsSlpitterState));
|
map.insert("main_splitter_state", stringFromByteArray(this->mainSplitterState));
|
||||||
map.insert("main_splitter_state", unicodeByteArray(this->mainSplitterState));
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString PorymapConfig::unicodeByteArray(QByteArray bytearray) {
|
QString PorymapConfig::stringFromByteArray(QByteArray bytearray) {
|
||||||
QString ret;
|
QString ret;
|
||||||
for (auto ch : bytearray) {
|
for (auto ch : bytearray) {
|
||||||
ret += QString::number(static_cast<int>(ch)) + ":";
|
ret += QString::number(static_cast<int>(ch)) + ":";
|
||||||
|
@ -192,13 +185,13 @@ void PorymapConfig::setPrettyCursors(bool enabled) {
|
||||||
this->save();
|
this->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PorymapConfig::setGeometry(QByteArrayList geometry) {
|
void PorymapConfig::setGeometry(QByteArray windowGeometry_, QByteArray windowState_, QByteArray mapSplitterState_,
|
||||||
this->restoreGeometry = true;
|
QByteArray eventsSlpitterState_, QByteArray mainSplitterState_) {
|
||||||
this->windowGeometry = geometry[0];
|
this->windowGeometry = windowGeometry_;
|
||||||
this->windowState = geometry[1];
|
this->windowState = windowState_;
|
||||||
this->mapSplitterState = geometry[2];
|
this->mapSplitterState = mapSplitterState_;
|
||||||
this->eventsSlpitterState = geometry[3];
|
this->eventsSlpitterState = eventsSlpitterState_;
|
||||||
this->mainSplitterState = geometry[4];
|
this->mainSplitterState = mainSplitterState_;
|
||||||
this->save();
|
this->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,18 +211,14 @@ bool PorymapConfig::getPrettyCursors() {
|
||||||
return this->prettyCursors;
|
return this->prettyCursors;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PorymapConfig::getRestoreWindowGeometry() {
|
QMap<QString, QByteArray> PorymapConfig::getGeometry() {
|
||||||
return this->restoreGeometry;
|
QMap<QString, QByteArray> geometry;
|
||||||
}
|
|
||||||
|
|
||||||
QByteArrayList PorymapConfig::getGeometry() {
|
geometry.insert("window_geometry", this->windowGeometry);
|
||||||
QByteArrayList geometry;
|
geometry.insert("window_state", this->windowState);
|
||||||
|
geometry.insert("map_splitter_state", this->mapSplitterState);
|
||||||
geometry.append(this->windowGeometry);
|
geometry.insert("events_splitter_state", this->eventsSlpitterState);
|
||||||
geometry.append(this->windowState);
|
geometry.insert("main_splitter_state", this->mainSplitterState);
|
||||||
geometry.append(this->mapSplitterState);
|
|
||||||
geometry.append(this->eventsSlpitterState);
|
|
||||||
geometry.append(this->mainSplitterState);
|
|
||||||
|
|
||||||
return geometry;
|
return geometry;
|
||||||
}
|
}
|
||||||
|
|
|
@ -208,14 +208,13 @@ void MainWindow::loadUserSettings() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::restoreWindowState() {
|
void MainWindow::restoreWindowState() {
|
||||||
if (porymapConfig.getRestoreWindowGeometry()) {
|
logInfo("Restoring window geometry from previous session.");
|
||||||
logInfo("Restoring window geometry from previous session.");
|
QMap<QString, QByteArray> geometry = porymapConfig.getGeometry();
|
||||||
this->restoreGeometry(porymapConfig.getGeometry()[0]);
|
this->restoreGeometry(geometry.value("window_geometry"));
|
||||||
this->restoreState(porymapConfig.getGeometry()[1]);
|
this->restoreState(geometry.value("window_state"));
|
||||||
this->ui->splitter_map->restoreState(porymapConfig.getGeometry()[2]);
|
this->ui->splitter_map->restoreState(geometry.value("map_splitter_state"));
|
||||||
this->ui->splitter_events->restoreState(porymapConfig.getGeometry()[3]);
|
this->ui->splitter_events->restoreState(geometry.value("events_splitter_state"));
|
||||||
this->ui->splitter_main->restoreState(porymapConfig.getGeometry()[4]);
|
this->ui->splitter_main->restoreState(geometry.value("main_splitter_state"));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MainWindow::openRecentProject() {
|
bool MainWindow::openRecentProject() {
|
||||||
|
@ -753,7 +752,7 @@ void MainWindow::onNewMapCreated() {
|
||||||
|
|
||||||
Map *newMap = editor->project->addNewMapToGroup(newMapName, newMapGroup, newMap_);
|
Map *newMap = editor->project->addNewMapToGroup(newMapName, newMapGroup, newMap_);
|
||||||
|
|
||||||
qDebug() << "Created a new map named" << newMapName;
|
logInfo(QString("Created a new map named %1.").arg(newMapName));
|
||||||
|
|
||||||
editor->project->saveMap(newMap);
|
editor->project->saveMap(newMap);
|
||||||
editor->project->saveAllDataStructures();
|
editor->project->saveAllDataStructures();
|
||||||
|
@ -1804,15 +1803,13 @@ void MainWindow::on_actionTileset_Editor_triggered()
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::closeEvent(QCloseEvent *event) {
|
void MainWindow::closeEvent(QCloseEvent *event) {
|
||||||
QByteArrayList geometry;
|
porymapConfig.setGeometry(
|
||||||
|
this->saveGeometry(),
|
||||||
geometry.append(this->saveGeometry());
|
this->saveState(),
|
||||||
geometry.append(this->saveState());
|
this->ui->splitter_map->saveState(),
|
||||||
geometry.append(this->ui->splitter_map->saveState());
|
this->ui->splitter_events->saveState(),
|
||||||
geometry.append(this->ui->splitter_events->saveState());
|
this->ui->splitter_main->saveState()
|
||||||
geometry.append(this->ui->splitter_main->saveState());
|
);
|
||||||
|
|
||||||
porymapConfig.setGeometry(geometry);
|
|
||||||
|
|
||||||
QMainWindow::closeEvent(event);
|
QMainWindow::closeEvent(event);
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,8 +61,8 @@ void NewMapPopup::on_pushButton_NewMap_Accept_clicked() {
|
||||||
Map *newMap = new Map;
|
Map *newMap = new Map;
|
||||||
MapLayout *layout = new MapLayout;
|
MapLayout *layout = new MapLayout;
|
||||||
|
|
||||||
// If map name is not unique, use default value. Also replace spaces with underscores.
|
// If map name is not unique, use default value. Also use only valid characters.
|
||||||
QString newMapName = this->ui->lineEdit_NewMap_Name->text().replace(" ","_");
|
QString newMapName = this->ui->lineEdit_NewMap_Name->text().remove(QRegularExpression("[^a-zA-Z0-9_]+"));
|
||||||
if (project->mapNames->contains(newMapName) || newMapName.isEmpty()) {
|
if (project->mapNames->contains(newMapName) || newMapName.isEmpty()) {
|
||||||
newMapName = project->getNewMapName();
|
newMapName = project->getNewMapName();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue