From b7b6132395941081c6a57f68cb4cd255fb3f32d8 Mon Sep 17 00:00:00 2001 From: Andreas Butti Date: Fri, 1 Feb 2019 22:10:59 +0100 Subject: [PATCH] fixed #819 Toolbar ID working, but there is a double delete which needs to be fixed... --- src/control/Control.cpp | 33 +-------------- src/gui/dialog/ToolbarManageDialog.cpp | 3 ++ src/gui/toolbarMenubar/model/ToolbarModel.cpp | 42 ++++++++++++++++++- src/gui/toolbarMenubar/model/ToolbarModel.h | 1 + 4 files changed, 46 insertions(+), 33 deletions(-) diff --git a/src/control/Control.cpp b/src/control/Control.cpp index 6c76526e..554d8cd5 100644 --- a/src/control/Control.cpp +++ b/src/control/Control.cpp @@ -1029,38 +1029,7 @@ void Control::customizeToolbars() ToolbarData* data = new ToolbarData(*this->win->getSelectedToolbar()); ToolbarModel* model = this->win->getToolbarModel(); - - for (int i = 0; i < 100; i++) - { - string id = data->getId() + " Copy"; - - if (i != 0) - { - id += " "; - id += std::to_string(i); - } - - if (!model->existsId(id)) - { - if (i != 0) - { - string filename = data->getName(); - filename += " "; - filename += _("Copy"); - filename += " "; - filename += std::to_string(i); - - data->setName(filename); - } - else - { - data->setName(data->getName() + " " + _("Copy")); - } - data->setId(id); - break; - } - } - + model->initCopyNameId(data); model->add(data); this->win->toolbarSelected(data); this->win->updateToolbarMenu(); diff --git a/src/gui/dialog/ToolbarManageDialog.cpp b/src/gui/dialog/ToolbarManageDialog.cpp index c2e9eded..1d32d5fd 100644 --- a/src/gui/dialog/ToolbarManageDialog.cpp +++ b/src/gui/dialog/ToolbarManageDialog.cpp @@ -91,6 +91,8 @@ void ToolbarManageDialog::buttonNewCallback(GtkButton* button, ToolbarManageDial ToolbarData* data = new ToolbarData(false); data->setName(_("New")); + data->setId("custom"); + dlg->tbModel->initCopyNameId(data); dlg->addToolbarData(data); } @@ -129,6 +131,7 @@ void ToolbarManageDialog::buttonCopyCallback(GtkButton* button, ToolbarManageDia if (dlg->selected) { ToolbarData* data = new ToolbarData(*dlg->selected); + dlg->tbModel->initCopyNameId(data); dlg->addToolbarData(data); } } diff --git a/src/gui/toolbarMenubar/model/ToolbarModel.cpp b/src/gui/toolbarMenubar/model/ToolbarModel.cpp index e7c7f8c2..458c394e 100644 --- a/src/gui/toolbarMenubar/model/ToolbarModel.cpp +++ b/src/gui/toolbarMenubar/model/ToolbarModel.cpp @@ -2,6 +2,7 @@ #include "ToolbarData.h" #include +#include #include @@ -90,13 +91,52 @@ bool ToolbarModel::parse(string filename, bool predefined) return true; } +void ToolbarModel::initCopyNameId(ToolbarData* data) +{ + XOJ_CHECK_TYPE(ToolbarModel); + + for (int i = 0; i < 100; i++) + { + string id = data->getId() + " Copy"; + + if (i != 0) + { + id += " "; + id += std::to_string(i); + } + + if (!existsId(id)) + { + if (i != 0) + { + string filename = data->getName(); + filename += " "; + filename += _("Copy"); + filename += " "; + filename += std::to_string(i); + + data->setName(filename); + } + else + { + data->setName(data->getName() + " " + _("Copy")); + } + data->setId(id); + break; + } + } +} + bool ToolbarModel::existsId(string id) { XOJ_CHECK_TYPE(ToolbarModel); for (ToolbarData* data : this->toolbars) { - if (data->getId() == id) return true; + if (data->getId() == id) + { + return true; + } } return false; } diff --git a/src/gui/toolbarMenubar/model/ToolbarModel.h b/src/gui/toolbarMenubar/model/ToolbarModel.h index 11918d76..c76ed443 100644 --- a/src/gui/toolbarMenubar/model/ToolbarModel.h +++ b/src/gui/toolbarMenubar/model/ToolbarModel.h @@ -29,6 +29,7 @@ public: void remove(ToolbarData* data); void save(Path filename); bool existsId(string id); + void initCopyNameId(ToolbarData* data); private: void parseGroup(GKeyFile* config, const char* group, bool predefined);