summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2021-12-17 09:19:20 +0100
committerMiklos Vajna <vmiklos@collabora.com>2021-12-17 11:40:09 +0100
commit4bbbd15fb8e8269a8bdfd188d3ca2a2a84c00922 (patch)
tree02092477d27d6662eb5613e11b3fc4280aa05ea6 /svx
parentb33a4d3c4acc37b9284c611caaaa661d2fe34db8 (diff)
sd theme: add a "theme" palette to the color picker
This implements listing the current theme colors (which depend on what is the master page of the current slide) in the color picker and also allows picking those colors. The colors are picked as-is for now, not yet setting the color theme index in the document model. Change-Id: I2553725c29c2a9f9de80f86b38d22a06bf9c0364 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126994 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
Diffstat (limited to 'svx')
-rw-r--r--svx/source/styles/ColorSets.cxx15
-rw-r--r--svx/source/tbxctrls/PaletteManager.cxx27
2 files changed, 40 insertions, 2 deletions
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();