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