Instead of Color, we have Light and Dark in the registry. So each theme extension will specify dark and light color values for each "customizable element" like DocColor etc. Under appearance we have three radio buttons - light/dark/system. If system is selected then light/dark colors are switched based on the system's theme. if explicitly light/dark is selected - that color is used from the registry. ColorConfigValue now has three entries nColor, nLightColor, nDarkColor. nColor is used as a cache for the color being used at the moment. This is to avoid otherwise expensive function calls + hundreds of modifications in the codebase just to change nColor. nColor is cached either when the theme is loaded or when changes are committed in `ColorConfig_Impl::ImplCommit()`. Now, if Automatic theme is selected then themes is disabled and the application uses the system colors. If some other scheme is selected like "CustomTheme" etc, then LibreOffice themes/UI color customization is enabled and the theme colors are used. Instead of a scroll window, now we have a combobox for the registry entries and a single color dropdown to select the color value. This color dropdown is for convinience in case the user wants to change some specific color that's bothering him. For themeing, theme extensions should be used. API CHANGE + remove Color in favour of Light and Dark + AppBackground has additional two - BackgroundType and Bitmap + remove officecfg::Office::Common::Misc::Appearnce in favor of officecfg::Office::Common::Appearance::ApplicationAppearance + move LibreofficeTheme under officecfg::Office::Common::Appearance UI + it looks like https://i.imgur.com/UMxjfuC.png which is a little different from how the [mockup] on the ticket describes it, and that's because of lack of time due to upcomming feature freeze. + system/light/dark allow the user to switch between light/dark modes based on either the system theme (system) or by manually specifying light/dark. + ui themeing and color customization is disabled when automatic theme is selected, and enabled otherwise. [mockup]: https://bug-attachments.documentfoundation.org/attachment.cgi?id=197469 Change-Id: I1a7f70dfe44b81f863814f87e8d46e146c0e3d5a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174835 Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org> Tested-by: Jenkins Reviewed-by: Sahil Gautam <sahil.gautam.extern@allotropia.de>
184 lines
6.2 KiB
C++
184 lines
6.2 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
* with this work for additional information regarding copyright
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
*/
|
|
|
|
#include <fstream>
|
|
#include <treeopt.hxx>
|
|
|
|
#include <treeopt.hrc>
|
|
#include <helpids.h>
|
|
#include <svx/dialogs.hrc>
|
|
#include <svx/svxids.hrc>
|
|
|
|
namespace
|
|
{
|
|
struct PageIdToFileNameMap_Impl
|
|
{
|
|
sal_uInt16 m_nPageId;
|
|
OUString m_sContent;
|
|
};
|
|
}
|
|
|
|
static PageIdToFileNameMap_Impl FileMap_Impl[] = {
|
|
|
|
// { PAGE-ID, CONTENT },
|
|
|
|
// ProductName, SID_GENERAL_OPTIONS
|
|
{ RID_SFXPAGE_GENERAL, u""_ustr }, // UserData
|
|
|
|
{ OFA_TP_MISC, u""_ustr }, // General
|
|
|
|
{ OFA_TP_VIEW, u""_ustr }, // View
|
|
|
|
{ RID_SFXPAGE_PRINTOPTIONS, u""_ustr }, // Print
|
|
|
|
{ RID_SFXPAGE_PATH, u""_ustr }, // Paths
|
|
|
|
{ RID_SVX_FONT_SUBSTITUTION, u""_ustr }, // Fonts
|
|
|
|
{ RID_SVXPAGE_INET_SECURITY, u""_ustr }, // Security
|
|
|
|
{ RID_SVXPAGE_APPEARANCE, u""_ustr }, // Appearance
|
|
{ RID_SVXPAGE_ACCESSIBILITYCONFIG, u""_ustr }, // Accessibility
|
|
{ RID_SVXPAGE_OPTIONS_JAVA, u""_ustr }, // Java
|
|
{ RID_SVXPAGE_BASICIDE_OPTIONS, u""_ustr }, // BasicIDEOptions
|
|
{ RID_SVXPAGE_ONLINEUPDATE, u""_ustr }, // OnlineUpdate
|
|
{ RID_SVXPAGE_OPENCL, u""_ustr }, // OpenCL
|
|
|
|
// LanguageSettings, SID_LANGUAGE_OPTIONS
|
|
{ OFA_TP_LANGUAGES, u""_ustr }, // Languages
|
|
{ RID_SFXPAGE_LINGU, u""_ustr }, // WritingAids
|
|
{ RID_SVXPAGE_JSEARCH_OPTIONS, u""_ustr }, // SearchingInJapanese
|
|
{ RID_SVXPAGE_ASIAN_LAYOUT, u""_ustr }, // AsianLayout
|
|
{ RID_SVXPAGE_OPTIONS_CTL, u""_ustr }, // ComplexTextLayout
|
|
{ RID_SVXPAGE_LANGTOOL_OPTIONS, u""_ustr }, // LanguageTool Server
|
|
{ RID_SVXPAGE_DEEPL_OPTIONS, u""_ustr }, // DeepL Server
|
|
|
|
// Internet, SID_INET_DLG
|
|
{ RID_SVXPAGE_INET_PROXY, u""_ustr }, // Proxy
|
|
{ RID_SVXPAGE_INET_MAIL, u""_ustr }, // Email
|
|
|
|
// Load/Save, SID_FILTER_DLG
|
|
{ RID_SFXPAGE_SAVE, u""_ustr }, // General
|
|
{ SID_OPTFILTER_MSOFFICE, u""_ustr }, // VBA Properties
|
|
{ RID_OFAPAGE_MSFILTEROPT2, u""_ustr }, // Microsoft Office
|
|
{ RID_OFAPAGE_HTMLOPT, u""_ustr }, // HTML Compatibility
|
|
|
|
// Writer, SID_SW_EDITOPTIONS
|
|
{ RID_SW_TP_OPTLOAD_PAGE, u""_ustr }, // General
|
|
{ RID_SW_TP_CONTENT_OPT, u""_ustr }, // View
|
|
{ RID_SW_TP_OPTSHDWCRSR, u""_ustr }, // FormattingAids
|
|
{ RID_SVXPAGE_GRID, u""_ustr }, // Grid
|
|
{ RID_SW_TP_STD_FONT, u""_ustr }, // BasicFontsWestern
|
|
{ RID_SW_TP_STD_FONT_CJK, u""_ustr }, // BasicFontsAsian
|
|
{ RID_SW_TP_STD_FONT_CTL, u""_ustr }, // BasicFontsCTL
|
|
{ RID_SW_TP_OPTPRINT_PAGE, u""_ustr }, // Print
|
|
{ RID_SW_TP_OPTTABLE_PAGE, u""_ustr }, // Table
|
|
{ RID_SW_TP_REDLINE_OPT, u""_ustr }, // Changes
|
|
{ RID_SW_TP_COMPARISON_OPT, u""_ustr }, // Comparison
|
|
{ RID_SW_TP_OPTCOMPATIBILITY_PAGE, u""_ustr }, // Compatibility
|
|
{ RID_SW_TP_OPTCAPTION_PAGE, u""_ustr }, // AutoCaption
|
|
{ RID_SW_TP_MAILCONFIG, u""_ustr }, // MailMerge
|
|
{ RID_SW_TP_OPTTEST_PAGE, u""_ustr }, // Internal Test (only in dev build)
|
|
|
|
// WriterWeb, SID_SW_ONLINEOPTIONS
|
|
{ RID_SW_TP_HTML_CONTENT_OPT, u""_ustr }, // View
|
|
{ RID_SW_TP_HTML_OPTSHDWCRSR, u""_ustr }, // FormattingAids
|
|
{ RID_SW_TP_HTML_OPTGRID_PAGE, u""_ustr }, // Grid
|
|
{ RID_SW_TP_HTML_OPTPRINT_PAGE, u""_ustr }, // Print
|
|
{ RID_SW_TP_HTML_OPTTABLE_PAGE, u""_ustr }, // Table
|
|
{ RID_SW_TP_BACKGROUND, u""_ustr }, // Background
|
|
{ RID_SW_TP_OPTTEST_PAGE, u""_ustr }, // Internal Test (only in dev build)
|
|
|
|
// Math, SID_SM_EDITOPTIONS
|
|
{ SID_SM_TP_PRINTOPTIONS, u""_ustr }, // Settings
|
|
|
|
// Calc, SID_SC_EDITOPTIONS
|
|
{ SID_SC_TP_LAYOUT, u""_ustr }, // General
|
|
{ RID_SC_TP_DEFAULTS, u""_ustr }, // Defaults
|
|
{ SID_SC_TP_CONTENT, u""_ustr }, // View
|
|
{ SID_SC_TP_CALC, u""_ustr }, // Calculate
|
|
{ SID_SC_TP_FORMULA, u""_ustr }, // Formula
|
|
{ SID_SC_TP_USERLISTS, u""_ustr }, // SortLists
|
|
{ SID_SC_TP_CHANGES, u""_ustr }, // Changes
|
|
{ SID_SC_TP_COMPATIBILITY, u""_ustr }, // Compatibility
|
|
{ SID_SC_TP_GRID, u""_ustr }, // Grid
|
|
{ RID_SC_TP_PRINT, u""_ustr }, // Print
|
|
|
|
// Impress, SID_SD_EDITOPTIONS
|
|
{ SID_SI_TP_MISC, u""_ustr }, // General
|
|
{ SID_SI_TP_CONTENTS, u""_ustr }, // View
|
|
{ SID_SI_TP_SNAP, u""_ustr }, // Grid
|
|
{ SID_SI_TP_PRINT, u""_ustr }, // Print
|
|
|
|
// Draw, SID_SD_GRAPHIC_OPTIONS
|
|
{ SID_SD_TP_MISC, u""_ustr }, // General
|
|
{ SID_SD_TP_CONTENTS, u""_ustr }, // View
|
|
{ SID_SD_TP_SNAP, u""_ustr }, // Grid
|
|
{ SID_SD_TP_PRINT, u""_ustr }, // Print
|
|
|
|
// Charts, SID_SCH_EDITOPTIONS
|
|
{ RID_OPTPAGE_CHART_DEFCOLORS, u""_ustr }, // DefaultColor
|
|
|
|
// Base, SID_SB_STARBASEOPTIONS
|
|
{ SID_SB_CONNECTIONPOOLING, u""_ustr }, // Connections
|
|
{ SID_SB_DBREGISTEROPTIONS, u""_ustr } // Databases
|
|
};
|
|
|
|
void TreeOptHelper::storeStringsOfDialog(sal_uInt16 nPageId, const OUString& sPageStrings)
|
|
{
|
|
for (PageIdToFileNameMap_Impl& rEntry : FileMap_Impl)
|
|
{
|
|
if (rEntry.m_nPageId == nPageId)
|
|
{
|
|
rEntry.m_sContent = sPageStrings.replaceAll("~", "");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
return the strings of:
|
|
- labels,
|
|
- check buttons,
|
|
- radio buttons,
|
|
- toggle buttons,
|
|
- link buttons,
|
|
- buttons
|
|
|
|
TODO:
|
|
- accessible-names
|
|
- accessible-descriptions
|
|
- tooltip-texts
|
|
*/
|
|
OUString TreeOptHelper::getStringsFromDialog(sal_uInt16 nPageId)
|
|
{
|
|
if (nPageId == 0)
|
|
return OUString();
|
|
|
|
for (PageIdToFileNameMap_Impl& rEntry : FileMap_Impl)
|
|
{
|
|
if (rEntry.m_nPageId == nPageId)
|
|
return rEntry.m_sContent;
|
|
}
|
|
|
|
return OUString();
|
|
}
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|