summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editeng/source/items/textitem.cxx2
-rw-r--r--include/sfx2/objsh.hxx1
-rw-r--r--include/svx/ColorSets.hxx2
-rw-r--r--include/svx/strings.hrc13
-rw-r--r--sd/source/ui/docshell/docshell.cxx25
-rw-r--r--sd/source/ui/inc/DrawDocShell.hxx2
-rw-r--r--sfx2/source/doc/objcont.cxx2
-rw-r--r--svx/source/styles/ColorSets.cxx15
-rw-r--r--svx/source/tbxctrls/PaletteManager.cxx27
9 files changed, 87 insertions, 2 deletions
diff --git a/editeng/source/items/textitem.cxx b/editeng/source/items/textitem.cxx
index 32c269480c5a..f3338f300567 100644
--- a/editeng/source/items/textitem.cxx
+++ b/editeng/source/items/textitem.cxx
@@ -1521,6 +1521,8 @@ void SvxColorItem::dumpAsXml(xmlTextWriterPtr pWriter) const
std::stringstream ss;
ss << mColor;
(void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("value"), BAD_CAST(ss.str().c_str()));
+ (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("theme-index"),
+ BAD_CAST(OString::number(maThemeIndex).getStr()));
OUString aStr;
IntlWrapper aIntlWrapper(SvtSysLocale().GetUILanguageTag());
diff --git a/include/sfx2/objsh.hxx b/include/sfx2/objsh.hxx
index cbdf256c6c67..553489e14aa9 100644
--- a/include/sfx2/objsh.hxx
+++ b/include/sfx2/objsh.hxx
@@ -558,6 +558,7 @@ public:
StarBASIC* GetBasic() const;
virtual std::set<Color> GetDocColors();
+ virtual std::vector<Color> GetThemeColors();
// Accessibility Check
virtual sfx::AccessibilityIssueCollection runAccessibilityCheck();
diff --git a/include/svx/ColorSets.hxx b/include/svx/ColorSets.hxx
index c4aa0ae2b9bc..ac9008cbeb32 100644
--- a/include/svx/ColorSets.hxx
+++ b/include/svx/ColorSets.hxx
@@ -92,6 +92,8 @@ public:
static std::unique_ptr<Theme> FromAny(const css::uno::Any& rVal);
void UpdateSdrPage(SdrPage* pPage);
+
+ std::vector<Color> GetColors() const;
};
} // end of namespace svx
diff --git a/include/svx/strings.hrc b/include/svx/strings.hrc
index 8505c410a3df..2e00e3c4c1a7 100644
--- a/include/svx/strings.hrc
+++ b/include/svx/strings.hrc
@@ -1118,7 +1118,20 @@
#define RID_SVXSTR_CHARFONTNAME_NOTAVAILABLE NC_("RID_SVXSTR_CHARFONTNAME_NOTAVAILABLE", "Font Name. The current font is not available and will be substituted.")
#define RID_SVXSTR_CUSTOM_PAL NC_("RID_SVXSTR_CUSTOM_PAL", "custom")
#define RID_SVXSTR_DOC_COLORS NC_("RID_SVXSTR_DOC_COLORS", "Document colors")
+#define RID_SVXSTR_THEME_COLORS NC_("RID_SVXSTR_THEME_COLORS", "Theme colors")
#define RID_SVXSTR_DOC_COLOR_PREFIX NC_("RID_SVXSTR_DOC_COLOR_PREFIX", "Document Color")
+#define RID_SVXSTR_THEME_COLOR1 NC_("RID_SVXSTR_THEME_COLOR1", "Background - Dark 1")
+#define RID_SVXSTR_THEME_COLOR2 NC_("RID_SVXSTR_THEME_COLOR2", "Text - Light 1")
+#define RID_SVXSTR_THEME_COLOR3 NC_("RID_SVXSTR_THEME_COLOR3", "Background - Dark 2")
+#define RID_SVXSTR_THEME_COLOR4 NC_("RID_SVXSTR_THEME_COLOR4", "Text - Light 2")
+#define RID_SVXSTR_THEME_COLOR5 NC_("RID_SVXSTR_THEME_COLOR5", "Accent 1")
+#define RID_SVXSTR_THEME_COLOR6 NC_("RID_SVXSTR_THEME_COLOR6", "Accent 2")
+#define RID_SVXSTR_THEME_COLOR7 NC_("RID_SVXSTR_THEME_COLOR7", "Accent 3")
+#define RID_SVXSTR_THEME_COLOR8 NC_("RID_SVXSTR_THEME_COLOR8", "Accent 4")
+#define RID_SVXSTR_THEME_COLOR9 NC_("RID_SVXSTR_THEME_COLOR9", "Accent 5")
+#define RID_SVXSTR_THEME_COLOR10 NC_("RID_SVXSTR_THEME_COLOR10", "Accent 6")
+#define RID_SVXSTR_THEME_COLOR11 NC_("RID_SVXSTR_THEME_COLOR11", "Hyperlink")
+#define RID_SVXSTR_THEME_COLOR12 NC_("RID_SVXSTR_THEME_COLOR12", "Followed Hyperlink")
#define RID_SVX_EXTRUSION_BAR NC_("RID_SVX_EXTRUSION_BAR", "Extrusion")
#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_ON_OFF NC_("RID_SVXSTR_UNDO_APPLY_EXTRUSION_ON_OFF", "Apply Extrusion On/Off")
diff --git a/sd/source/ui/docshell/docshell.cxx b/sd/source/ui/docshell/docshell.cxx
index 886efb0f7acb..78279687a039 100644
--- a/sd/source/ui/docshell/docshell.cxx
+++ b/sd/source/ui/docshell/docshell.cxx
@@ -59,6 +59,8 @@
#include <ViewShellBase.hxx>
#include <sfx2/notebookbar/SfxNotebookBar.hxx>
#include <comphelper/lok.hxx>
+#include <DrawViewShell.hxx>
+#include <sdpage.hxx>
using namespace sd;
#define ShellClass_DrawDocShell
@@ -485,6 +487,29 @@ void DrawDocShell::ClearUndoBuffer()
pUndoManager->Clear();
}
+std::vector<Color> DrawDocShell::GetThemeColors()
+{
+ auto pViewShell = dynamic_cast<sd::DrawViewShell*>(GetViewShell());
+ if (!pViewShell)
+ {
+ return {};
+ }
+
+ SdPage* pPage = pViewShell->getCurrentPage();
+ svx::Theme* pTheme = pPage->getSdrPageProperties().GetTheme();
+ if (!pPage->IsMasterPage())
+ {
+ pTheme = pPage->TRG_GetMasterPage().getSdrPageProperties().GetTheme();
+ }
+
+ if (!pTheme)
+ {
+ return {};
+ }
+
+ return pTheme->GetColors();
+}
+
} // end of namespace sd
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/inc/DrawDocShell.hxx b/sd/source/ui/inc/DrawDocShell.hxx
index 850d4f448a03..5f15ffe9922f 100644
--- a/sd/source/ui/inc/DrawDocShell.hxx
+++ b/sd/source/ui/inc/DrawDocShell.hxx
@@ -201,6 +201,8 @@ public:
void ClearUndoBuffer();
+ std::vector<Color> GetThemeColors() override;
+
protected:
SdDrawDocument* mpDoc;
diff --git a/sfx2/source/doc/objcont.cxx b/sfx2/source/doc/objcont.cxx
index fa1d444bb6be..8313cfc3dc75 100644
--- a/sfx2/source/doc/objcont.cxx
+++ b/sfx2/source/doc/objcont.cxx
@@ -321,6 +321,8 @@ std::set<Color> SfxObjectShell::GetDocColors()
return empty;
}
+std::vector<Color> SfxObjectShell::GetThemeColors() { return std::vector<Color>(); }
+
sfx::AccessibilityIssueCollection SfxObjectShell::runAccessibilityCheck()
{
sfx::AccessibilityIssueCollection aCollection;
diff --git a/svx/source/styles/ColorSets.cxx b/svx/source/styles/ColorSets.cxx
index 30a9dd423d78..c77e6ccf2d76 100644
--- a/svx/source/styles/ColorSets.cxx
+++ b/svx/source/styles/ColorSets.cxx
@@ -312,6 +312,21 @@ void Theme::UpdateSdrPage(SdrPage* pPage)
}
}
+std::vector<Color> Theme::GetColors() const
+{
+ if (!mpColorSet)
+ {
+ return {};
+ }
+
+ std::vector<Color> aColors;
+ for (size_t i = 0; i < 12; ++i)
+ {
+ aColors.push_back(mpColorSet->getColor(i));
+ }
+ return aColors;
+}
+
} // end of namespace svx
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/tbxctrls/PaletteManager.cxx b/svx/source/tbxctrls/PaletteManager.cxx
index d2395778ff8f..8b0a85deb101 100644
--- a/svx/source/tbxctrls/PaletteManager.cxx
+++ b/svx/source/tbxctrls/PaletteManager.cxx
@@ -45,7 +45,7 @@
PaletteManager::PaletteManager() :
mnMaxRecentColors(Application::GetSettings().GetStyleSettings().GetColorValueSetColumnCount()),
- mnNumOfPalettes(2),
+ mnNumOfPalettes(3),
mnCurrentPalette(0),
mnColorCount(0),
mpBtnUpdater(nullptr),
@@ -141,6 +141,28 @@ void PaletteManager::ReloadColorSet(SvxColorValueSet &rColorSet)
++nIx;
}
}
+ else if (mnCurrentPalette == mnNumOfPalettes - 2)
+ {
+ SfxObjectShell* pObjectShell = SfxObjectShell::Current();
+ if (pObjectShell)
+ {
+ std::vector<Color> aColors = pObjectShell->GetThemeColors();
+ mnColorCount = aColors.size();
+ rColorSet.Clear();
+ std::vector<OUString> aNames = {
+ SvxResId(RID_SVXSTR_THEME_COLOR1), SvxResId(RID_SVXSTR_THEME_COLOR2),
+ SvxResId(RID_SVXSTR_THEME_COLOR3), SvxResId(RID_SVXSTR_THEME_COLOR4),
+ SvxResId(RID_SVXSTR_THEME_COLOR5), SvxResId(RID_SVXSTR_THEME_COLOR6),
+ SvxResId(RID_SVXSTR_THEME_COLOR7), SvxResId(RID_SVXSTR_THEME_COLOR8),
+ SvxResId(RID_SVXSTR_THEME_COLOR9), SvxResId(RID_SVXSTR_THEME_COLOR10),
+ SvxResId(RID_SVXSTR_THEME_COLOR11), SvxResId(RID_SVXSTR_THEME_COLOR12),
+ };
+ for (int i = 0; i < 12; ++i)
+ {
+ rColorSet.InsertItem(i, aColors[i], aNames[i]);
+ }
+ }
+ }
else if( mnCurrentPalette == mnNumOfPalettes - 1 )
{
// Add doc colors to palette
@@ -188,6 +210,7 @@ std::vector<OUString> PaletteManager::GetPaletteList()
{
aPaletteNames.push_back( (*it).GetName() );
}
+ aPaletteNames.push_back(SvxResId(RID_SVXSTR_THEME_COLORS));
aPaletteNames.push_back( SvxResId ( RID_SVXSTR_DOC_COLORS ) );
return aPaletteNames;
@@ -245,7 +268,7 @@ OUString PaletteManager::GetPaletteName()
OUString PaletteManager::GetSelectedPalettePath()
{
- if(mnCurrentPalette != mnNumOfPalettes - 1 && mnCurrentPalette != 0)
+ if (mnCurrentPalette < m_Palettes.size() && mnCurrentPalette != 0)
return m_Palettes[mnCurrentPalette - 1]->GetPath();
else
return OUString();