summaryrefslogtreecommitdiff
path: root/sd/source/core/stlsheet.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/core/stlsheet.cxx')
-rw-r--r--sd/source/core/stlsheet.cxx126
1 files changed, 77 insertions, 49 deletions
diff --git a/sd/source/core/stlsheet.cxx b/sd/source/core/stlsheet.cxx
index 3cd669294b1a..585d0b6cbfae 100644
--- a/sd/source/core/stlsheet.cxx
+++ b/sd/source/core/stlsheet.cxx
@@ -580,55 +580,76 @@ bool SdStyleSheet::HasClearParentSupport() const
return true;
}
-void SdStyleSheet::SetHelpId( const OUString& r, sal_uLong nId )
+namespace
{
- SfxStyleSheet::SetHelpId( r, nId );
+struct ApiNameMap
+{
+ OUStringLiteral mpApiName;
+ sal_uInt32 mnHelpId;
+} const pApiNameMap[]
+ = { { OUStringLiteral("title"), HID_PSEUDOSHEET_TITLE },
+ { OUStringLiteral("subtitle"), HID_PSEUDOSHEET_SUBTITLE },
+ { OUStringLiteral("background"), HID_PSEUDOSHEET_BACKGROUND },
+ { OUStringLiteral("backgroundobjects"), HID_PSEUDOSHEET_BACKGROUNDOBJECTS },
+ { OUStringLiteral("notes"), HID_PSEUDOSHEET_NOTES },
+ { OUStringLiteral("standard"), HID_STANDARD_STYLESHEET_NAME },
+ { OUStringLiteral("objectwitharrow"), HID_POOLSHEET_OBJWITHARROW },
+ { OUStringLiteral("objectwithshadow"), HID_POOLSHEET_OBJWITHSHADOW },
+ { OUStringLiteral("objectwithoutfill"), HID_POOLSHEET_OBJWITHOUTFILL },
+ { OUStringLiteral("text"), HID_POOLSHEET_TEXT },
+ { OUStringLiteral("textbody"), HID_POOLSHEET_TEXTBODY },
+ { OUStringLiteral("textbodyjustfied"), HID_POOLSHEET_TEXTBODY_JUSTIFY },
+ { OUStringLiteral("textbodyindent"), HID_POOLSHEET_TEXTBODY_INDENT },
+ { OUStringLiteral("title"), HID_POOLSHEET_TITLE },
+ { OUStringLiteral("title1"), HID_POOLSHEET_TITLE1 },
+ { OUStringLiteral("title2"), HID_POOLSHEET_TITLE2 },
+ { OUStringLiteral("headline"), HID_POOLSHEET_HEADLINE },
+ { OUStringLiteral("headline1"), HID_POOLSHEET_HEADLINE1 },
+ { OUStringLiteral("headline2"), HID_POOLSHEET_HEADLINE2 },
+ { OUStringLiteral("measure"), HID_POOLSHEET_MEASURE } };
+
+OUString GetApiNameForHelpId(sal_uLong nId)
+{
+ if ((nId >= HID_PSEUDOSHEET_OUTLINE1) && (nId <= HID_PSEUDOSHEET_OUTLINE9))
+ return "outline" + OUStringLiteral1('1' + (nId - HID_PSEUDOSHEET_OUTLINE1));
- if( (nId >= HID_PSEUDOSHEET_OUTLINE1) && ( nId <= HID_PSEUDOSHEET_OUTLINE9 ) )
- {
- msApiName = "outline";
- msApiName += OUStringLiteral1( '1' + (nId - HID_PSEUDOSHEET_OUTLINE1) );
- }
- else
+ for (const auto& i : pApiNameMap)
+ if (nId == i.mnHelpId)
+ return i.mpApiName;
+
+ return OUString();
+}
+
+sal_uInt32 GetHelpIdForApiName(const OUString& sName)
+{
+ OUString sRest;
+ if (sName.startsWith("outline", &sRest))
{
- static struct ApiNameMap
+ if (sRest.getLength() == 1)
{
- OUStringLiteral mpApiName;
- sal_uInt32 mnHelpId;
- }
- const pApiNameMap[] =
- {
- { OUStringLiteral("title"), HID_PSEUDOSHEET_TITLE },
- { OUStringLiteral("subtitle"), HID_PSEUDOSHEET_SUBTITLE },
- { OUStringLiteral("background"), HID_PSEUDOSHEET_BACKGROUND },
- { OUStringLiteral("backgroundobjects"),HID_PSEUDOSHEET_BACKGROUNDOBJECTS },
- { OUStringLiteral("notes"), HID_PSEUDOSHEET_NOTES },
- { OUStringLiteral("standard"), HID_STANDARD_STYLESHEET_NAME },
- { OUStringLiteral("objectwitharrow"), HID_POOLSHEET_OBJWITHARROW },
- { OUStringLiteral("objectwithshadow"), HID_POOLSHEET_OBJWITHSHADOW },
- { OUStringLiteral("objectwithoutfill"),HID_POOLSHEET_OBJWITHOUTFILL },
- { OUStringLiteral("text"), HID_POOLSHEET_TEXT },
- { OUStringLiteral("textbody"), HID_POOLSHEET_TEXTBODY },
- { OUStringLiteral("textbodyjustfied"), HID_POOLSHEET_TEXTBODY_JUSTIFY },
- { OUStringLiteral("textbodyindent"), HID_POOLSHEET_TEXTBODY_INDENT },
- { OUStringLiteral("title"), HID_POOLSHEET_TITLE },
- { OUStringLiteral("title1"), HID_POOLSHEET_TITLE1 },
- { OUStringLiteral("title2"), HID_POOLSHEET_TITLE2 },
- { OUStringLiteral("headline"), HID_POOLSHEET_HEADLINE },
- { OUStringLiteral("headline1"), HID_POOLSHEET_HEADLINE1 },
- { OUStringLiteral("headline2"), HID_POOLSHEET_HEADLINE2 },
- { OUStringLiteral("measure"), HID_POOLSHEET_MEASURE }
- };
-
- for (std::size_t i = 0; i != SAL_N_ELEMENTS(pApiNameMap); ++i)
- {
- if( nId == pApiNameMap[i].mnHelpId )
- {
- msApiName = pApiNameMap[i].mpApiName;
- break;
- }
+ sal_Unicode ch = sRest.toChar();
+ if ('1' <= ch && ch <= '9')
+ return HID_PSEUDOSHEET_OUTLINE1 + ch - '1';
}
+ // No other pre-defined names start with "outline"
+ return 0;
}
+
+ for (const auto& i : pApiNameMap)
+ if (sName == i.mpApiName)
+ return i.mnHelpId;
+
+ return 0;
+}
+}
+
+void SdStyleSheet::SetHelpId( const OUString& r, sal_uLong nId )
+{
+ SfxStyleSheet::SetHelpId( r, nId );
+
+ const OUString sNewApiName = GetApiNameForHelpId(nId);
+ if (!sNewApiName.isEmpty())
+ msApiName = sNewApiName;
}
OUString SdStyleSheet::GetFamilyString( SfxStyleFamily eFamily )
@@ -828,6 +849,18 @@ Sequence< OUString > SAL_CALL SdStyleSheet::getSupportedServiceNames()
return aNameSequence;
}
+bool SdStyleSheet::SetName(const OUString& rNewName, bool bReindexNow)
+{
+ const bool bResult = SfxUnoStyleSheet::SetName(rNewName, bReindexNow);
+ // Don't overwrite predefined API names
+ if (bResult && GetHelpIdForApiName(msApiName) == 0)
+ {
+ msApiName = rNewName;
+ Broadcast(SfxHint(SfxHintId::DataChanged));
+ }
+ return bResult;
+}
+
// XNamed
OUString SAL_CALL SdStyleSheet::getName()
{
@@ -840,12 +873,7 @@ void SAL_CALL SdStyleSheet::setName( const OUString& rName )
{
SolarMutexGuard aGuard;
throwIfDisposed();
-
- if( SetName( rName ) )
- {
- msApiName = rName;
- Broadcast(SfxHint(SfxHintId::DataChanged));
- }
+ SetName(rName);
}
// XStyle