From 6d77d826c15807e80ccfff749908332e09c9f6f6 Mon Sep 17 00:00:00 2001 From: Maxim Monastirsky Date: Wed, 30 Nov 2022 22:47:04 +0200 Subject: sd: sensible naming for created cell styles Instead of "user1", "user2" etc. now we have - e.g. magenta-dark-first-row, which makes them a lot easier to identify. Change-Id: I2db5e20f5f1d46d14034acb15b0f95c58a3f7611 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143514 Tested-by: Jenkins Reviewed-by: Maxim Monastirsky --- sd/source/ui/table/TableDesignPane.cxx | 35 +++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/sd/source/ui/table/TableDesignPane.cxx b/sd/source/ui/table/TableDesignPane.cxx index aa331c3dcda1..cab67aa87f4f 100644 --- a/sd/source/ui/table/TableDesignPane.cxx +++ b/sd/source/ui/table/TableDesignPane.cxx @@ -97,6 +97,8 @@ const std::string_view gPropNames[CB_COUNT] = "UseBandingColumnStyle" }; +constexpr std::u16string_view aTableStyleBaseName = u"table"; + TableDesignWidget::TableDesignWidget(weld::Builder& rBuilder, ViewShellBase& rBase) : mrBase(rBase) , m_xMenu(rBuilder.weld_menu("menu")) @@ -207,15 +209,14 @@ IMPL_LINK(TableDesignWidget, implContextMenuHandler, const Point*, pPoint, void) namespace { - OUString getNewValidTableStyleName(const Reference& rTableFamily) + OUString getNewStyleName(const Reference& rFamily, std::u16string_view rBaseName) { - OUString aName; + OUString aName(rBaseName); sal_Int32 nIndex = 1; - do + while(rFamily->hasByName(aName)) { - aName = "table" + OUString::number(nIndex++); + aName = rBaseName + OUString::number(nIndex++); } - while(rTableFamily->hasByName(aName)); return aName; } @@ -228,7 +229,7 @@ void TableDesignWidget::InsertStyle() Reference xFactory(mxTableFamily, UNO_QUERY_THROW); Reference xTableFamily(mxTableFamily, UNO_QUERY_THROW); Reference xTableStyle(xFactory->createInstance(), UNO_QUERY_THROW); - const OUString aName(getNewValidTableStyleName(xTableFamily)); + const OUString aName(getNewStyleName(xTableFamily, aTableStyleBaseName)); xTableFamily->insertByName(aName, Any(xTableStyle)); Reference xCellStyle(mxCellFamily->getByName("default"), UNO_QUERY_THROW); @@ -255,33 +256,35 @@ void TableDesignWidget::CloneStyle() { try { - Reference xSrcTableStyle(mxTableFamily->getByIndex(m_xValueSet->GetSelectedItemId() - 1), UNO_QUERY_THROW); + Reference xSrcTableStyle(mxTableFamily->getByIndex(m_xValueSet->GetSelectedItemId() - 1), UNO_QUERY_THROW); Reference xFactory(mxTableFamily, UNO_QUERY_THROW); Reference xTableFamily(mxTableFamily, UNO_QUERY_THROW); - Reference xDestTableStyle(xFactory->createInstance(), UNO_QUERY_THROW); - const OUString aName(getNewValidTableStyleName(xTableFamily)); + Reference xDestTableStyle(xFactory->createInstance(), UNO_QUERY_THROW); + const OUString aName(getNewStyleName(xTableFamily, aTableStyleBaseName)); xTableFamily->insertByName(aName, Any(xDestTableStyle)); - for (sal_Int32 i = 0; i < xDestTableStyle->getCount(); ++i) + auto aNames(xSrcTableStyle->getElementNames()); + for (const auto& name : aNames) { - Reference xSrcCellStyle(xSrcTableStyle->getByIndex(i), UNO_QUERY); + Reference xSrcCellStyle(xSrcTableStyle->getByName(name), UNO_QUERY); if (xSrcCellStyle && xSrcCellStyle->isUserDefined()) { Reference xCellFactory(mxCellFamily, UNO_QUERY_THROW); Reference xDestCellStyle(xCellFactory->createInstance(), UNO_QUERY_THROW); xDestCellStyle->setParentStyle(xSrcCellStyle->getParentStyle()); - mxCellFamily->insertByName(xDestCellStyle->getName(), Any(xDestCellStyle)); + const OUString aStyleName(getNewStyleName(mxCellFamily, Concat2View(aName + "-" + name))); + mxCellFamily->insertByName(aStyleName, Any(xDestCellStyle)); rtl::Reference xSrcStyleSheet = static_cast(xSrcCellStyle.get()); rtl::Reference xDestStyleSheet = static_cast(xDestCellStyle.get()); xDestStyleSheet->GetItemSet().Put(xSrcStyleSheet->GetItemSet()); - xDestTableStyle->replaceByIndex(i, Any(xDestCellStyle)); + xDestTableStyle->replaceByName(name, Any(xDestCellStyle)); } else - xDestTableStyle->replaceByIndex(i, Any(xSrcCellStyle)); + xDestTableStyle->replaceByName(name, Any(xSrcCellStyle)); } updateControls(); @@ -386,7 +389,9 @@ void TableDesignWidget::EditStyle(std::string_view rCommand) if (!bUserDefined) { - mxCellFamily->insertByName(xCellStyle->getName(), Any(xCellStyle)); + Reference xNamed(xTableStyle, UNO_QUERY_THROW); + const OUString aStyleName(getNewStyleName(mxCellFamily, Concat2View(xNamed->getName() + "-" + OUString::fromUtf8(rCommand)))); + mxCellFamily->insertByName(aStyleName, Any(xCellStyle)); xTableStyle->replaceByName(OUString::fromUtf8(rCommand), Any(xCellStyle)); } -- cgit