diff --git a/scwx-qt/source/scwx/qt/ui/edit_marker_dialog.cpp b/scwx-qt/source/scwx/qt/ui/edit_marker_dialog.cpp index a6aaa4d4..4f310488 100644 --- a/scwx-qt/source/scwx/qt/ui/edit_marker_dialog.cpp +++ b/scwx-qt/source/scwx/qt/ui/edit_marker_dialog.cpp @@ -23,6 +23,9 @@ namespace scwx::qt::ui static const std::string logPrefix_ = "scwx::qt::ui::edit_marker_dialog"; static const auto logger_ = scwx::util::Logger::Create(logPrefix_); +static const QString addingTitle_ = QObject::tr("Add Location Marker"); +static const QString editingTitle_ = QObject::tr("Edit Location Marker"); + class EditMarkerDialog::Impl { public: @@ -32,6 +35,7 @@ public: void show_icon_file_dialog(); void set_icon_color(const std::string& color); + void set_adding(bool adding); void connect_signals(); @@ -58,6 +62,24 @@ QIcon EditMarkerDialog::Impl::get_colored_icon( QColor(QString::fromStdString(color))); } +void EditMarkerDialog::Impl::set_adding(bool adding) +{ + if (adding == adding_) + { + return; + } + + if (adding) + { + self_->setWindowTitle(addingTitle_); + } + else + { + self_->setWindowTitle(editingTitle_); + } + adding_ = adding; +} + EditMarkerDialog::EditMarkerDialog(QWidget* parent) : QDialog(parent), p {std::make_unique(this)}, @@ -84,7 +106,7 @@ EditMarkerDialog::~EditMarkerDialog() void EditMarkerDialog::setup() { - setup(0, 0); + setup(0.0, 0.0); } void EditMarkerDialog::setup(double latitude, double longitude) @@ -102,11 +124,10 @@ void EditMarkerDialog::setup(double latitude, double longitude) static_cast(color.blue()), static_cast(color.alpha())})); - setup(p->editId_); - p->adding_ = true; + setup(p->editId_, true); } -void EditMarkerDialog::setup(types::MarkerId id) +void EditMarkerDialog::setup(types::MarkerId id, bool adding) { std::optional marker = p->markerManager_->get_marker(id); if (!marker) @@ -115,7 +136,7 @@ void EditMarkerDialog::setup(types::MarkerId id) } p->editId_ = id; - p->adding_ = false; + p->set_adding(adding); const std::string iconColorStr = util::color::ToArgbString(marker->iconColor); @@ -300,6 +321,8 @@ void EditMarkerDialog::Impl::set_icon_color(const std::string& color) void EditMarkerDialog::Impl::handle_accepted() { + // switch to editing to that canceling after applying does not delete it + set_adding(false); markerManager_->set_marker(editId_, self_->get_marker_info()); } diff --git a/scwx-qt/source/scwx/qt/ui/edit_marker_dialog.hpp b/scwx-qt/source/scwx/qt/ui/edit_marker_dialog.hpp index c20ebe27..3990b6c0 100644 --- a/scwx-qt/source/scwx/qt/ui/edit_marker_dialog.hpp +++ b/scwx-qt/source/scwx/qt/ui/edit_marker_dialog.hpp @@ -21,7 +21,7 @@ public: void setup(); void setup(double latitude, double longitude); - void setup(types::MarkerId id); + void setup(types::MarkerId id, bool adding = false); [[nodiscard]] types::MarkerInfo get_marker_info() const; diff --git a/scwx-qt/source/scwx/qt/ui/marker_dialog.ui b/scwx-qt/source/scwx/qt/ui/marker_dialog.ui index 641775a5..6256b756 100644 --- a/scwx-qt/source/scwx/qt/ui/marker_dialog.ui +++ b/scwx-qt/source/scwx/qt/ui/marker_dialog.ui @@ -11,7 +11,7 @@ - Marker Manager + Location Marker Manager