aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/GeneralDialog.cpp
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2022-12-22 10:30:36 +0000
committerSaturneric <[email protected]>2022-12-22 10:30:36 +0000
commit3cb623b07e50d9e95dace9966dc0337e72f57dc2 (patch)
treedfe994f28f0a6dee6151febf3b50f22adceab74e /src/ui/dialog/GeneralDialog.cpp
parentMerge pull request #70 from saturneric/dev/2.0.8/saturneric (diff)
parentfix: continue to solve ubuntu 18.04 build issues (diff)
downloadGpgFrontend-3cb623b07e50d9e95dace9966dc0337e72f57dc2.tar.gz
GpgFrontend-3cb623b07e50d9e95dace9966dc0337e72f57dc2.zip
fix: solve conflictsv2.0.10
Diffstat (limited to 'src/ui/dialog/GeneralDialog.cpp')
-rw-r--r--src/ui/dialog/GeneralDialog.cpp91
1 files changed, 89 insertions, 2 deletions
diff --git a/src/ui/dialog/GeneralDialog.cpp b/src/ui/dialog/GeneralDialog.cpp
index d07c2497..6fd2f32c 100644
--- a/src/ui/dialog/GeneralDialog.cpp
+++ b/src/ui/dialog/GeneralDialog.cpp
@@ -50,7 +50,6 @@ void GpgFrontend::UI::GeneralDialog::slot_restore_settings() noexcept {
int x = general_windows_state.Check("window_pos").Check("x", 100),
y = general_windows_state.Check("window_pos").Check("y", 100);
- this->move({x, y});
pos_ = {x, y};
int width =
@@ -58,9 +57,56 @@ void GpgFrontend::UI::GeneralDialog::slot_restore_settings() noexcept {
height =
general_windows_state.Check("window_size").Check("height", 247);
- this->resize({width, height});
size_ = {width, height};
+ if (this->parent() != nullptr) {
+ LOG(INFO) << "parent address" << this->parent();
+
+ QPoint parent_pos = {0, 0};
+ QSize parent_size = {0, 0};
+
+ auto *parent_widget = qobject_cast<QWidget *>(this->parent());
+ if (parent_widget != nullptr) {
+ parent_pos = parent_widget->pos();
+ parent_size = parent_widget->size();
+ }
+
+ auto *parent_dialog = qobject_cast<QDialog *>(this->parent());
+ if (parent_dialog != nullptr) {
+ parent_pos = parent_dialog->pos();
+ parent_size = parent_dialog->size();
+ }
+
+ auto *parent_window = qobject_cast<QMainWindow *>(this->parent());
+ if (parent_window != nullptr) {
+ parent_pos = parent_window->pos();
+ parent_size = parent_window->size();
+ }
+
+ LOG(INFO) << "parent pos x:" << parent_pos.x()
+ << "y:" << parent_pos.y();
+
+ LOG(INFO) << "parent size width:" << parent_size.width()
+ << "height:" << parent_size.height();
+
+ LOG(INFO) << "this dialog size width:" << size_.width()
+ << "height:" << 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;
+ }
+ }
+
+ this->move(pos_);
+ this->resize(size_);
}
} catch (...) {
@@ -78,6 +124,9 @@ void GpgFrontend::UI::GeneralDialog::slot_save_settings() noexcept {
general_windows_state["window_pos"]["x"] = pos().x();
general_windows_state["window_pos"]["y"] = pos().y();
+ // update size of current dialog
+ size_ = this->size();
+
general_windows_state["window_size"]["width"] = size_.width();
general_windows_state["window_size"]["height"] = size_.height();
general_windows_state["window_save"] = true;
@@ -86,3 +135,41 @@ void GpgFrontend::UI::GeneralDialog::slot_save_settings() noexcept {
LOG(ERROR) << name_ << "error";
}
}
+
+void GpgFrontend::UI::GeneralDialog::setPosCenterOfScreen() {
+ auto *screen = QGuiApplication::primaryScreen();
+ QRect geo = screen->availableGeometry();
+ int screen_width = geo.width();
+ int screen_height = geo.height();
+
+ LOG(INFO) << "primary screen available geometry" << screen_width
+ << screen_height;
+
+ pos_ = QPoint((screen_width - QWidget::width()) / 2,
+ (screen_height - QWidget::height()) / 2);
+ this->move(pos_);
+}
+
+/**
+ * @brief
+ *
+ */
+void GpgFrontend::UI::GeneralDialog::movePosition2CenterOfParent() {
+ LOG(INFO) << "parent pos x:" << parent_pos_.x() << "y:" << parent_pos_.y();
+
+ LOG(INFO) << "parent size width:" << parent_size_.width()
+ << "height:" << parent_size_.height();
+
+ if (parent_pos_ != QPoint{0, 0} && parent_size_ != QSize{0, 0}) {
+ LOG(INFO) << "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();
+
+ pos_ = {parent_center.x() - size_.width() / 2,
+ parent_center.y() - size_.height() / 2};
+ this->move(pos_);
+ }
+} \ No newline at end of file