diff options
author | Saturn&Eric <[email protected]> | 2024-01-23 07:21:28 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2024-01-23 07:21:28 +0000 |
commit | 56acf161d439ce73eceaa145c40fe703bb2c3f02 (patch) | |
tree | a5d4790a6b2efc8786a3c0f74a07f5a8032d4e94 /src/ui/dialog/GeneralDialog.cpp | |
parent | fix: use more secure cdn links (diff) | |
parent | fix: solve issues on detected gnupg path function and fix linking errors on w... (diff) | |
download | GpgFrontend-56acf161d439ce73eceaa145c40fe703bb2c3f02.tar.gz GpgFrontend-56acf161d439ce73eceaa145c40fe703bb2c3f02.zip |
Merge pull request #126 from saturneric/dev/2.1.1/main
Develop 2.1.2.1
Diffstat (limited to 'src/ui/dialog/GeneralDialog.cpp')
-rw-r--r-- | src/ui/dialog/GeneralDialog.cpp | 113 |
1 files changed, 62 insertions, 51 deletions
diff --git a/src/ui/dialog/GeneralDialog.cpp b/src/ui/dialog/GeneralDialog.cpp index d4b6613e..386573a3 100644 --- a/src/ui/dialog/GeneralDialog.cpp +++ b/src/ui/dialog/GeneralDialog.cpp @@ -1,7 +1,7 @@ -/* - * Copyright (c) 2022. Saturneric +/** + * Copyright (C) 2021 Saturneric <[email protected]> * - * This file is part of GpgFrontend. + * This file is part of GpgFrontend. * * GpgFrontend is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,17 +20,21 @@ * the gpg4usb project, which is under GPL-3.0-or-later. * * All the source code of GpgFrontend was modified and released by - * Saturneric<[email protected]> starting on May 12, 2021. + * Saturneric <[email protected]> starting on May 12, 2021. * * SPDX-License-Identifier: GPL-3.0-or-later + * */ #include "GeneralDialog.h" #include "ui/struct/SettingsObject.h" +#include "ui/struct/settings/WindowStateSO.h" + +namespace GpgFrontend { -GpgFrontend::UI::GeneralDialog::GeneralDialog(std::string name, QWidget *parent) - : name_(std::move(name)), QDialog(parent) { +GpgFrontend::UI::GeneralDialog::GeneralDialog(QString name, QWidget *parent) + : QDialog(parent), name_(std::move(name)) { slot_restore_settings(); connect(this, &QDialog::finished, this, &GeneralDialog::slot_save_settings); } @@ -42,37 +46,37 @@ void GpgFrontend::UI::GeneralDialog::slot_restore_settings() noexcept { update_rect_cache(); SettingsObject general_windows_state(name_ + "_dialog_state"); - bool window_save = general_windows_state.Check("window_save", false); + auto window_state = WindowStateSO(general_windows_state); // Restore window size & location - if (window_save) { - int x = general_windows_state.Check("window_pos").Check("x", 0), - y = general_windows_state.Check("window_pos").Check("y", 0); - SPDLOG_DEBUG("stored dialog pos, x: {}, y: {}", x, y); + if (window_state.window_save) { + int x = window_state.x; + int y = window_state.y; + GF_UI_LOG_DEBUG("stored dialog pos, x: {}, y: {}", x, y); QPoint relative_pos = {x, y}; QPoint pos = parent_rect_.topLeft() + relative_pos; - SPDLOG_DEBUG("relative dialog pos, x: {}, y: {}", relative_pos.x(), - relative_pos.y()); + GF_UI_LOG_DEBUG("relative dialog pos, x: {}, y: {}", relative_pos.x(), + relative_pos.y()); - int width = general_windows_state.Check("window_size").Check("width", 0), - height = - general_windows_state.Check("window_size").Check("height", 0); - SPDLOG_DEBUG("stored dialog size, width: {}, height: {}", width, height); + int width = window_state.width; + int height = window_state.height; + GF_UI_LOG_DEBUG("stored dialog size, width: {}, height: {}", width, + height); - QRect target_rect_ = {pos.x(), pos.y(), width, height}; - SPDLOG_DEBUG("dialog stored target rect, width: {}, height: {}", width, - height); + QRect target_rect = {pos.x(), pos.y(), width, height}; + GF_UI_LOG_DEBUG("dialog stored target rect, width: {}, height: {}", width, + height); // check for valid - if (width > 0 && height > 0 && screen_rect_.contains(target_rect_)) { - this->setGeometry(target_rect_); + if (width > 0 && height > 0 && screen_rect_.contains(target_rect)) { + this->setGeometry(target_rect); this->rect_restored_ = true; } } } catch (...) { - SPDLOG_ERROR("error at restoring settings"); + GF_UI_LOG_ERROR("error at restoring settings"); } } @@ -82,24 +86,26 @@ void GpgFrontend::UI::GeneralDialog::slot_save_settings() noexcept { update_rect_cache(); - SPDLOG_DEBUG("dialog pos, x: {}, y: {}", rect_.x(), rect_.y()); - SPDLOG_DEBUG("dialog size, width: {}, height: {}", rect_.width(), - rect_.height()); + GF_UI_LOG_DEBUG("dialog pos, x: {}, y: {}", rect_.x(), rect_.y()); + GF_UI_LOG_DEBUG("dialog size, width: {}, height: {}", rect_.width(), + rect_.height()); // window position relative to parent auto relative_pos = rect_.topLeft() - parent_rect_.topLeft(); - SPDLOG_DEBUG("store dialog pos, x: {}, y: {}", relative_pos.x(), - relative_pos.y()); + GF_UI_LOG_DEBUG("store dialog pos, x: {}, y: {}", relative_pos.x(), + relative_pos.y()); - general_windows_state["window_pos"]["x"] = relative_pos.x(); - general_windows_state["window_pos"]["y"] = relative_pos.y(); + WindowStateSO window_state; + window_state.x = relative_pos.x(); + window_state.y = relative_pos.y(); + window_state.width = rect_.width(); + window_state.height = rect_.height(); + window_state.window_save = true; - general_windows_state["window_size"]["width"] = rect_.width(); - general_windows_state["window_size"]["height"] = rect_.height(); - general_windows_state["window_save"] = true; + general_windows_state.Store(window_state.Json()); } catch (...) { - SPDLOG_ERROR(name_, "error"); + GF_UI_LOG_ERROR("general dialog: {}, caught exception", name_); } } @@ -108,8 +114,8 @@ void GpgFrontend::UI::GeneralDialog::setPosCenterOfScreen() { int screen_width = screen_rect_.width(); int screen_height = screen_rect_.height(); - SPDLOG_DEBUG("dialog current screen available geometry", screen_width, - screen_height); + GF_UI_LOG_DEBUG("dialog current screen available geometry", screen_width, + screen_height); // update rect of current dialog rect_ = this->geometry(); @@ -126,14 +132,14 @@ void GpgFrontend::UI::GeneralDialog::movePosition2CenterOfParent() { update_rect_cache(); // log for debug - SPDLOG_DEBUG("parent pos x: {} y: {}", parent_rect_.x(), parent_rect_.y()); - SPDLOG_DEBUG("parent size width: {}, height: {}", parent_rect_.width(), - parent_rect_.height()); - SPDLOG_DEBUG("parent center pos x: {}, y: {}", parent_rect_.center().x(), - parent_rect_.center().y()); - SPDLOG_DEBUG("dialog pos x: {} y: {}", rect_.x(), rect_.y()); - SPDLOG_DEBUG("dialog size width: {} height: {}", rect_.width(), - rect_.height()); + GF_UI_LOG_DEBUG("parent pos x: {} y: {}", parent_rect_.x(), parent_rect_.y()); + GF_UI_LOG_DEBUG("parent size width: {}, height: {}", parent_rect_.width(), + parent_rect_.height()); + GF_UI_LOG_DEBUG("parent center pos x: {}, y: {}", parent_rect_.center().x(), + parent_rect_.center().y()); + GF_UI_LOG_DEBUG("dialog pos x: {} y: {}", rect_.x(), rect_.y()); + GF_UI_LOG_DEBUG("dialog size width: {} height: {}", rect_.width(), + rect_.height()); if (parent_rect_.topLeft() != QPoint{0, 0} && parent_rect_.size() != QSize{0, 0}) { @@ -143,8 +149,9 @@ void GpgFrontend::UI::GeneralDialog::movePosition2CenterOfParent() { QPoint target_position = parent_rect_.center() - QPoint(rect_.width() / 2, rect_.height() / 2); - SPDLOG_DEBUG("update position to parent's center, target pos, x:{}, y: {}", - target_position.x(), target_position.y()); + GF_UI_LOG_DEBUG( + "update position to parent's center, target pos, x:{}, y: {}", + target_position.x(), target_position.y()); this->move(target_position); } else { @@ -191,18 +198,22 @@ void GpgFrontend::UI::GeneralDialog::update_rect_cache() { * @brief * */ -bool GpgFrontend::UI::GeneralDialog::isRectRestored() { return rect_restored_; } +auto GpgFrontend::UI::GeneralDialog::isRectRestored() -> bool { + return rect_restored_; +} /** * @brief * */ void GpgFrontend::UI::GeneralDialog::showEvent(QShowEvent *event) { - SPDLOG_DEBUG("General Dialog named {} is about to show, caught show event", - name_); + GF_UI_LOG_DEBUG("General Dialog named {} is about to show, caught show event", + name_); // default position strategy if (!isRectRestored()) movePosition2CenterOfParent(); - QWidget::showEvent(event); -}
\ No newline at end of file + QDialog::showEvent(event); +} + +} // namespace GpgFrontend
\ No newline at end of file |