office-gobmx/sfx2
Justin Luth da86bfd89e tdf#160349: add .uno:ChangeTheme to notebookbar to toggle dark mode
A temporary (ugly, but appropriate) icon has been assigned.

The toggle can be customize-assigned to keyboard, menu, and toolbar,
and can be found by searching for "Dark Mode".

In the menu, it is checked when in Dark mode,
and in the toolbar it is "depressed" or highlighted as active.

Dark mode has been added to the view tab of notebookbar.ui.
I added it as NOT VISIBLE, for several reasons.
- dark mode is rather new and not so stable, so don't over-promote it.
- notebookbars cannot be infinitely customized by the end user,
  so developers have to add all items. Users only enable or disable.
- toggling dark mode really ought to be done at the OS level,
  and typically should be a one-time setting,
  therefore not appropriate to waste precious toolbar space.

The primary benefit of making it available in the menu
is for QA testers who want to easily switch back and forth.
WARNING: by customizing the notebookbar, you prevent seeing
any future NBB changes made to the program
(until you reset to defaults or blow away the user profile).

Dark Mode can easily be added to a menu, toolbar or keyboard shortcut
by the end user, so I didn't bother adding it anywhere else.

To avoid completely cluttering up this commit,
I only added Dark mode to the main notebookbar.
Once this commit has been finalized,
the other writer-apps and notebookbars can
also gain this command.

Change-Id: Ia7594ad81e305ead922abd0ad7b41d6fc0413053
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166781
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
2024-05-03 17:58:15 +02:00
..
classification
doc
inc Moving parts of readonly checks from model to view. 2024-03-21 16:32:09 +01:00
qa UnoApiTest::loadFromURL -> UnoApiTest::loadFromFile 2024-01-03 07:51:28 +01:00
sdi tdf#160349: add .uno:ChangeTheme to notebookbar to toggle dark mode 2024-05-03 17:58:15 +02:00
source tdf#160349: add .uno:ChangeTheme to notebookbar to toggle dark mode 2024-05-03 17:58:15 +02:00
uiconfig/ui tdf#151159 Rename All Applications to All Documents in Start Center 2024-03-15 06:35:56 +01:00
util
AllLangMoTarget_sfx2.mk
CppunitTest_sfx2_classification.mk
CppunitTest_sfx2_controlleritem.mk
CppunitTest_sfx2_dialogs_test.mk
CppunitTest_sfx2_doc.mk
CppunitTest_sfx2_metadatable.mk
CppunitTest_sfx2_misc.mk
CppunitTest_sfx2_view.mk
CustomTarget_classification.mk makefile simplification: replace $(call gb_CustomTarget_get_workdir,foo) 2024-05-03 16:06:14 +02:00
IwyuFilter_sfx2.yaml
JunitTest_sfx2_complex.mk
JunitTest_sfx2_unoapi.mk
Library_sfx.mk Move ObjectInspectorWidgets code into cxx file 2024-04-25 20:36:19 +02:00
Makefile
Module_sfx2.mk
Package_classification.mk
PythonTest_sfx2_python.mk
README.md
UIConfig_sfx.mk
UITest_sfx2_doc.mk uitest: Clean up redundant usage of gb_UITest_use_oneprocess 2023-11-06 09:26:43 +01:00

Legacy Framework

SFX is the "old" framework, used for historical reasons.

An attempt of documentation of this module is located in [git:sfx2/doc].

It contains base classes for document model, view and controller, used by "old" applications like sw, sc, sd (while "new" applications are based on the "new" UNO based framework in "framework").

The SFX framework is based on dispatching slots identified by integers (SlotIDs) to SfxShells, and there is a dedicated IDL compiler (svidl) involved that generates C++ slot headers from SDI files in modules' sdi/ subdirectory.

Documentation about SFX dispatch, SDI etc.: https://wiki.openoffice.org/wiki/Framework/Article/Implementation_of_the_Dispatch_API_In_SFX2

Document load/save code is maintained in [git:sfx2/source/doc/docfile.cxx] SfxMedium class, which handles all the twisty load and save corner cases.

[git:sfx2/source/appl/sfxhelp.cxx] Start procedure for the online help viewer top level window; handling of help URL creation and dispatch.

There are also some UNO services here that could really be implemented anywhere, e.g. the DocumentProperties or DocumentMetadataAccess.

Notable files: sfx2/source/dialog/backingwindow.cxx Startcenter buttons and the corresponding event handler.