VR-Forces 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 #include <unordered_map>
29 
30 class QObject;
31 
32 namespace makVrv
33 {
34  class DtDe;
35 
38 
41 
43  template <>
44  inline const char* creatorTypeName<DtWidgetIconStyleManagerEventFilter>(void) { return "DtWidgetIconStyleManagerEventFilterCreator"; }
45 
50  {
52 
53  public:
56 
59 
62  const DtWidgetIconStyleManagerEventFilter &other) = delete;
63 
66  const DtWidgetIconStyleManagerEventFilter &other) = delete;
67 
68  protected:
71 
74  virtual bool eventFilter(QObject*, QEvent*) override;
75 
76  protected:
78  };
79 
152  : public DtVirtualBaseClass
153  {
155  public:
157  typedef std::vector<std::pair<int, DtQIconConfigurations> > DtIndexableQIconConfigurations;
158 
159  public:
163  static DtWidgetIconStyleManager& instance(DtDe& de);
164 
166  static void registerInstance(DtDe& de, DtWidgetIconStyleManager* instance);
167 
168  public:
170  DtWidgetIconStyleManager() = delete;
171 
174  const DtWidgetIconStyleManager &other) = delete;
175 
177  DtWidgetIconStyleManager &operator=(
178  const DtWidgetIconStyleManager &other) = delete;
179 
180  public:
184  virtual void manageWidget(QObject* widgetToManage, const std::string& iconFileNameOrPath);
185 
189  virtual void manageWidget(QObject* widgetToManage, const DtQIconConfigurations& iconConfigurations);
190 
195  virtual void manageIndexableWidget(QObject* indexedWidgetToManage,
196  int index, const DtQIconConfigurations& iconConfigurations);
197 
200  virtual void unmanageWidget(QObject* widgetToUnmanage);
201 
211  virtual void unmanageIndexableWidget(QObject* indexedWidgetToUnmanage, int index, bool shiftWidgetIndicesAfterRemoval = false);
212 
215  virtual void clearCache(bool refreshIcons = true);
216 
222  virtual QPixmap generateThemedPixmap(const std::string& iconFileNameOrPath, const QSize& pixmapSize=QSize(16,16),
224 
227  virtual QIcon createQIconBasedOnConfigurations(const DtQIconConfigurations& configurations);
228 
233  virtual bool getPixmapFromSVGAndColorMappings(const std::string& iconFileNameOrPath,
234  const std::vector<std::pair<QColor, QColor>> colorMappings, QPixmap* resultIcon) const;
235 
241  boost::signalslib::signal<void()> signal_refreshApplicationIcons;
242 
243  protected:
244 
247 
249  virtual ~DtWidgetIconStyleManager();
250 
252  virtual void slot_darkModeEnabledChanged(bool enabled);
253 
255  virtual void slot_lightModeDarkModeIconsEnabledChanged(bool enabled);
256 
258  virtual void updateAllManagedIcons();
259 
262  virtual void updateIcon(QObject* widget, const DtQIconConfigurations& iconConfigurations);
263 
266  virtual void updateIndexedIcon(QObject* indexedWidget, const DtIndexableQIconConfigurations& iconConfigurations);
267 
273  virtual QPixmap* findOrLoadBaseIconPixmap(const std::string& iconFileNameOrFilePath);
274 
280  virtual QPixmap* findOrLoadBaseIconThemedPixmap(const std::string& iconFileNameOrFilePath);
281 
286  virtual QPixmap* findOrGenerateThemedPixmap(const DtQIconConfiguration& iconConfiguration);
287 
294  virtual QPixmap* findOrGenerateThemedPixmap(const std::string& iconFileNameOrPath,
295  DtQIconConfigurationMode iconModeOfGeneratedPixmap, DtQIconConfigurationState iconStateOfGeneratedPixmap);
296 
299  virtual std::string iconsDirectory(const std::string& iconFileNameOrPath) const;
300 
303  virtual bool iconExistsOnDiskOrInCache(const std::string& iconFilePath) const;
304 
308  virtual std::string iconFilePath(const std::string& iconFileNameOrPath) const;
309 
329  virtual void generateAndAppendAdditionalIconConfigurationsIfNeeded(
330  QIcon& iconToAppendToIfNeeded, const DtQIconConfigurations& iconConfigurations);
331 
340  virtual QPixmap generateThemedPixmap(const std::string& iconFileNameOrPath,
341  DtQIconConfigurationMode iconModeOfGeneratedPixmap = DtQIconConfigurationMode::Normal, DtQIconConfigurationState iconStateOfGeneratedPixmap = DtQIconConfigurationState::Off) const;
342 
343  protected:
345 
347 
349  std::map<QPointer<QObject>, DtQIconConfigurations> myWidgetsToManage;
350 
354 
356  std::map<std::string, QPixmap*> myBaseIconPixmapCache;
357 
359  std::unordered_map<DtQIconConfiguration, QPixmap*> myGeneratedPixmapCache;
360 
363  };
364 
365 }
friend DtWidgetIconStyleManagerEventFilterCreator
Definition: DtWidgetIconStyleManager.h:51
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:37
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:241
Contains makVrv::DtQIconConfiguration class declaration.
#define DT_DLL_VRVCOREQT
Definition: vrvCoreQt.h:20
Contains makVrv::DtHeaderParser class declaration.
Contains DLL export macros.
std::unordered_map< DtQIconConfiguration, QPixmap * > myGeneratedPixmapCache
Mapping a DtQIconConfiguration to a generated QPixmap.
Definition: DtWidgetIconStyleManager.h:359
std::map< std::string, QPixmap * > myBaseIconPixmapCache
Mapping a filepath to the cached QPixmap for the asset pointed to by the filepath.
Definition: DtWidgetIconStyleManager.h:356
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:23
Contains makVrv::DtVirtualBaseClass class.
DtDe & myDe
Definition: DtWidgetIconStyleManager.h:77
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtDe & myDe
Definition: DtWidgetIconStyleManager.h:344
DtQIconConfigurationState
Duplicate of Qt&#39;s QIcon::State.
Definition: DtQIconConfiguration.h:30
DtWidgetIconStyleManagerEventFilter * myEventFilter
Event filter to detect changes to enable state of some widget types.
Definition: DtWidgetIconStyleManager.h:362
Event filter used by the widget icon style manager. The widget icon style manager uses this event fil...
Definition: DtWidgetIconStyleManager.h:49
A single configuration for an icon. The icon configuration is used by the DtWidgetIconStyleManager to...
Definition: DtQIconConfiguration.h:59
const char * creatorTypeName< DtWidgetIconStyleManagerEventFilter >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtWidgetIconStyleManager.h:44
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:349
DtQIconConfigurationMode
Duplicate of Qt&#39;s QIcon::Mode.
Definition: DtQIconConfiguration.h:21
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:353
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:76
A collection of icon configurations. The collection maintains flags indicating whether to generate ic...
Definition: DtQIconConfiguration.h:131
std::vector< std::pair< int, DtQIconConfigurations > > DtIndexableQIconConfigurations
Vector of mappings between a DtQIconConfigurations and the index to apply the configuration to...
Definition: DtWidgetIconStyleManager.h:157
The widget icon style manager chooses the icons of QWidgets based on whether the VR-Vantage applicati...
Definition: DtWidgetIconStyleManager.h:151
DtSignalConnectionManager myConnections
Definition: DtWidgetIconStyleManager.h:346

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)