lok: calc - send other views our selection in their co-ordinates.
[LibreOffice.git] / include / vcl / IconThemeSelector.hxx
blob0fcd66d1f263a0cb95cc207ad7a2dc27ba04aaf9
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 */
10 #ifndef INCLUDED_VCL_ICONTHEMESELECTOR_HXX
11 #define INCLUDED_VCL_ICONTHEMESELECTOR_HXX
13 #include <rtl/ustring.hxx>
15 #include <vcl/dllapi.h>
17 #include <vector>
19 // forward declaration of unit test class. Required for friend relationship.
20 class IconThemeSelectorTest;
22 namespace vcl {
23 class IconThemeInfo;
25 /** This class helps to choose an icon theme from a list of installed themes.
27 * The following factors influence the selection:
28 * -# When high contrast mode is enabled, the high contrast icon theme is selected (if it is installed).
29 * -# When a preferred theme has been set (e.g., in the gnome desktop settings), that theme is selected.
31 class VCL_DLLPUBLIC IconThemeSelector {
32 public:
33 IconThemeSelector();
35 /** Select an icon theme from the list of installed themes.
37 * If high contrast mode has been enabled, the highcontrast theme will be selected (if it is available).
39 * @pre
40 * @p installedThemes must not be empty
42 OUString
43 SelectIconTheme(
44 const std::vector<IconThemeInfo>& installedThemes,
45 const OUString& theme
46 ) const;
48 /** Select the standard icon theme for a desktop environment from a list of installed themes.
50 * If a preferred theme has been set, this one will take precedence.
52 * The same logic as in SelectIconTheme() will apply.
54 * @pre
55 * @p installedThemes must not be empty
57 OUString
58 SelectIconThemeForDesktopEnvironment(
59 const std::vector<IconThemeInfo>& installedThemes,
60 const OUString& desktopEnvironment) const;
62 void
63 SetUseHighContrastTheme(bool);
65 void
66 SetPreferredIconTheme(const OUString&, bool bDarkIconTheme);
68 bool
69 operator==(const vcl::IconThemeSelector&) const;
71 bool
72 operator!=(const vcl::IconThemeSelector&) const;
74 private:
75 /** Return the first element of the themes, or the fallback if the vector is empty */
76 static OUString
77 ReturnFallback(const std::vector<IconThemeInfo>& installedThemes);
79 /** The name of the icon theme which is used as fallback */
80 static const OUStringLiteral FALLBACK_ICON_THEME_ID;
83 static OUString
84 GetIconThemeForDesktopEnvironment(const OUString& desktopEnvironment);
86 OUString mPreferredIconTheme;
87 bool mUseHighContrastTheme;
88 bool mPreferDarkIconTheme;
90 friend class ::IconThemeSelectorTest;
93 } /* namespace vcl */
95 #endif // INCLUDED_VCL_ICONTHEMESELECTOR_HXX
97 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */