VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtWidgetIconStyleManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCoreQt/vrvCoreQt.h>
13 
14 #include <vrvCore/DtHeaderParser.h>
17 
20 #include <vrvUtil/signalslib.h>
21 #include <vrvUtil/DtUnicode.h>
22 
23 #include <QtGui/QIcon>
24 #include <QtGui/QColor>
25 
26 #include <QtCore/QPointer>
27 #include <utility>
28 
29 class QObject;
30 
31 namespace makVrv
32 {
33  class DtDe;
34 
37 
40 
42  template <>
43  inline const char* creatorTypeName<DtWidgetIconStyleManagerEventFilter>(void) { return "DtWidgetIconStyleManagerEventFilterCreator"; }
44 
49  {
51 
52  public:
55 
58 
61  const DtWidgetIconStyleManagerEventFilter &other) = delete;
62 
65  const DtWidgetIconStyleManagerEventFilter &other) = delete;
66 
67  protected:
70 
73  virtual bool eventFilter(QObject*, QEvent*) override;
74 
75  protected:
77  };
78 
149  : public DtVirtualBaseClass
150  {
152  public:
154  typedef std::vector<std::pair<int, DtQIconConfigurations> > DtIndexableQIconConfigurations;
155 
156  public:
160  static DtWidgetIconStyleManager& instance(DtDe& de);
161 
163  static void registerInstance(DtDe& de, DtWidgetIconStyleManager* instance);
164 
165  public:
167  DtWidgetIconStyleManager() = delete;
168 
171  const DtWidgetIconStyleManager &other) = delete;
172 
174  DtWidgetIconStyleManager &operator=(
175  const DtWidgetIconStyleManager &other) = delete;
176 
177  public:
181  virtual void manageWidget(QObject* widgetToManage, const std::string& iconFileNameOrPath);
182 
186  virtual void manageWidget(QObject* widgetToManage, const DtQIconConfigurations& iconConfigurations);
187 
192  virtual void manageIndexableWidget(QObject* indexedWidgetToManage,
193  int index, const DtQIconConfigurations& iconConfigurations);
194 
197  virtual void unmanageWidget(QObject* widgetToManage);
198 
201  virtual void clearCache(bool refreshIcons = true);
202 
208  virtual QPixmap generateThemedPixmap(const std::string& iconFileNameOrPath, const QSize& pixmapSize=QSize(16,16),
209  QIcon::Mode iconModeOfGeneratedPixmap = QIcon::Normal, QIcon::State iconStateOfGeneratedPixmap = QIcon::Off);
210 
213  virtual QIcon createQIconBasedOnConfigurations(const DtQIconConfigurations& configurations);
214 
220  boost::signalslib::signal<void()> signal_refreshApplicationIcons;
221 
222  protected:
223 
226 
228  virtual ~DtWidgetIconStyleManager();
229 
231  virtual void slot_darkModeEnabledChanged(bool enabled);
232 
234  virtual void slot_lightModeDarkModeIconsEnabledChanged(bool enabled);
235 
237  virtual void updateAllManagedIcons(bool lightDarkModeIconsEnabled);
238 
241  virtual void updateIcon(QObject* widget,
242  const DtQIconConfigurations& iconConfigurations, bool lightDarkModeIconsEnabled);
243 
246  virtual void updateIndexedIcon(QObject* indexedWidget,
247  const DtIndexableQIconConfigurations& iconConfigurations, bool lightDarkModeIconsEnabled);
248 
253  virtual QPixmap findOrCreatePixmapInCache(const std::string& filePath);
254 
260  virtual QPixmap findOrCreateThemedPixmapInCache(const std::string& fileNameOrPath);
261 
264  virtual std::string iconsDirectory(const std::string& iconFileNameOrPath) const;
265 
268  virtual bool iconExistsOnDiskOrInCache(const std::string& iconFilePath) const;
269 
273  virtual std::string iconFilePath(const std::string& iconFileNameOrPath) const;
274 
294  virtual void generateAndAppendAdditionalIconConfigurationsIfNeeded(
295  QIcon& iconToAppendToIfNeeded, const DtQIconConfigurations& iconConfigurations) const;
296 
302  virtual QPixmap generateThemedPixmap(const std::string& iconFileNameOrPath,
303  QIcon::Mode iconModeOfGeneratedPixmap = QIcon::Normal, QIcon::State iconStateOfGeneratedPixmap = QIcon::Off) const;
304 
309  virtual bool getPixmapFromSVGAndColorMappings(const std::string& iconFileNameOrPath,
310  const std::vector<std::pair<QColor, QColor>> colorMappings, QPixmap& resultIcon) const;
311 
312  protected:
314 
316 
318  std::map<QPointer<QObject>, DtQIconConfigurations> myWidgetsToManage;
319 
323 
325  std::map<std::string, QPixmap> myFilepathsToPixmapCache;
326 
329  };
330 
331 }
friend DtWidgetIconStyleManagerEventFilterCreator
Definition: DtWidgetIconStyleManager.h:50
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
DtVirtualBaseClassCreator< DtWidgetIconStyleManagerEventFilter > DtWidgetIconStyleManagerEventFilterCreator
DtWidgetIconStyleManagerEventFilterCreator.
Definition: DtWidgetIconStyleManager.h:36
boost::signalslib::signal< void()> signal_refreshApplicationIcons
Emitted when the manager has updated all of its managed widgets If a widget is managing its own icon ...
Definition: DtWidgetIconStyleManager.h:220
Contains makVrv::DtQIconConfiguration class declaration.
#define DT_DLL_VRVCOREQT
Definition: vrvCoreQt.h:20
Contains makVrv::DtHeaderParser class declaration.
Contains DLL export macros.
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
Contains makVrv::DtVirtualBaseClass class.
DtDe & myDe
Definition: DtWidgetIconStyleManager.h:76
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtDe & myDe
Definition: DtWidgetIconStyleManager.h:313
DtWidgetIconStyleManagerEventFilter * myEventFilter
Event filter to detect changes to enable state of some widget types.
Definition: DtWidgetIconStyleManager.h:328
Event filter used by the widget icon style manager. The widget icon style manager uses this event fil...
Definition: DtWidgetIconStyleManager.h:48
std::map< std::string, QPixmap > myFilepathsToPixmapCache
Mapping a filepath to the cached QPixmap for the asset pointed to by the filepath.
Definition: DtWidgetIconStyleManager.h:325
const char * creatorTypeName< DtWidgetIconStyleManagerEventFilter >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtWidgetIconStyleManager.h:43
Base class to provide boost signal/slot management.
std::map< QPointer< QObject >, DtQIconConfigurations > myWidgetsToManage
Mapping a QObject (UI element with the icon) and its configuration.
Definition: DtWidgetIconStyleManager.h:318
std::map< QPointer< QObject >, DtIndexableQIconConfigurations > myIndexedWidgetsToManage
Mapping an indexed QObject (UI element with indices where each index can have an icon) and its config...
Definition: DtWidgetIconStyleManager.h:322
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
A collection of icon configurations. The collection maintains flags indicating whether to generate ic...
Definition: DtQIconConfiguration.h:75
std::vector< std::pair< int, DtQIconConfigurations > > DtIndexableQIconConfigurations
Vector of mappings between a DtQIconConfigurations and the index to apply the configuration to...
Definition: DtWidgetIconStyleManager.h:154
The widget icon style manager chooses the icons of QWidgets based on whether the VR-Vantage applicati...
Definition: DtWidgetIconStyleManager.h:148
DtSignalConnectionManager myConnections
Definition: DtWidgetIconStyleManager.h:315

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)