aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/GeneralDialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/dialog/GeneralDialog.cpp')
-rw-r--r--src/ui/dialog/GeneralDialog.cpp62
1 files changed, 35 insertions, 27 deletions
diff --git a/src/ui/dialog/GeneralDialog.cpp b/src/ui/dialog/GeneralDialog.cpp
index 9367aa44..b477a65b 100644
--- a/src/ui/dialog/GeneralDialog.cpp
+++ b/src/ui/dialog/GeneralDialog.cpp
@@ -27,6 +27,9 @@
#include "GeneralDialog.h"
+#include <exception>
+
+#include "spdlog/spdlog.h"
#include "ui/struct/SettingsObject.h"
GpgFrontend::UI::GeneralDialog::GeneralDialog(std::string name, QWidget *parent)
@@ -53,7 +56,7 @@ void GpgFrontend::UI::GeneralDialog::slot_restore_settings() noexcept {
int width =
general_windows_state.Check("window_size").Check("width", 400),
height =
- general_windows_state.Check("window_size").Check("height", 247);
+ general_windows_state.Check("window_size").Check("height", 300);
size_ = {width, height};
@@ -86,21 +89,16 @@ void GpgFrontend::UI::GeneralDialog::slot_restore_settings() noexcept {
SPDLOG_DEBUG("this dialog size width: {} height: {}", size_.width(),
size_.height());
+ }
- if (parent_pos != QPoint{0, 0}) {
- QPoint parent_center{parent_pos.x() + parent_size.width() / 2,
- parent_pos.y() + parent_size.height() / 2};
-
- pos_ = {parent_center.x() - size_.width() / 2,
- parent_center.y() - size_.height() / 2};
-
- // record parent_pos_
- this->parent_pos_ = parent_pos;
- this->parent_size_ = parent_size;
- }
+ // By default move to center of parent
+ // Or, move to center of screen
+ if (parent() != nullptr) {
+ movePos2CenterOfParent();
+ } else {
+ movePos2CenterOfScreen();
}
- this->move(pos_);
this->resize(size_);
}
@@ -129,7 +127,7 @@ void GpgFrontend::UI::GeneralDialog::slot_save_settings() noexcept {
}
}
-void GpgFrontend::UI::GeneralDialog::setPosCenterOfScreen() {
+void GpgFrontend::UI::GeneralDialog::movePos2CenterOfScreen() {
auto *screen = QGuiApplication::primaryScreen();
QRect geo = screen->availableGeometry();
int screen_width = geo.width();
@@ -147,22 +145,32 @@ void GpgFrontend::UI::GeneralDialog::setPosCenterOfScreen() {
* @brief
*
*/
-void GpgFrontend::UI::GeneralDialog::movePosition2CenterOfParent() {
- SPDLOG_DEBUG("parent pos x: {} y: {}", parent_pos_.x(), parent_pos_.y());
+void GpgFrontend::UI::GeneralDialog::movePos2CenterOfParent() {
+ try {
+ SPDLOG_DEBUG("parent pos x: {} y: {}", parent_pos_.x(), parent_pos_.y());
- SPDLOG_DEBUG("parent size width: {}", parent_size_.width(),
- "height:", parent_size_.height());
+ SPDLOG_DEBUG("parent size width: {}, height: {}", parent_size_.width(),
+ parent_size_.height());
- if (parent_pos_ != QPoint{0, 0} && parent_size_ != QSize{0, 0}) {
- SPDLOG_DEBUG("update current dialog position now");
- QPoint parent_center{parent_pos_.x() + parent_size_.width() / 2,
- parent_pos_.y() + parent_size_.height() / 2};
+ if (parent_pos_ != QPoint{0, 0} && parent_size_ != QSize{0, 0}) {
+ SPDLOG_DEBUG("update current dialog position now");
+ QPoint parent_center{parent_pos_.x() + parent_size_.width() / 2,
+ parent_pos_.y() + parent_size_.height() / 2};
- // update size of current dialog
- size_ = this->size();
+ // update size of current dialog
+ size_ = this->size();
- pos_ = {parent_center.x() - size_.width() / 2,
- parent_center.y() - size_.height() / 2};
- this->move(pos_);
+ pos_ = {parent_center.x() - size_.width() / 2,
+ parent_center.y() - size_.height() / 2};
+ SPDLOG_DEBUG("target dialog position, x: {}, y: {}", pos_.x(), pos_.y());
+ this->move(pos_);
+ }
+ } catch (std::exception &e) {
+ SPDLOG_WARN(
+ "error occurred when move to poition of center of parent, exception: "
+ "{}",
+ e.what());
+ } catch (...) {
+ SPDLOG_WARN("error occurred when move to poition of center of parent.");
}
} \ No newline at end of file