File indexing completed on 2024-04-28 17:06:18
0001 /* 0002 SPDX-FileCopyrightText: 2000-2008 Csaba Karai <krusader@users.sourceforge.net> 0003 SPDX-FileCopyrightText: 2004-2022 Krusader Krew <https://krusader.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef KRVIEWFACTORY_H 0009 #define KRVIEWFACTORY_H 0010 0011 // QtCore 0012 #include <QList> 0013 #include <QString> 0014 // QtGui 0015 #include <QKeySequence> 0016 // QtWidgets 0017 #include <QWidget> 0018 0019 class KrView; 0020 class KConfig; 0021 0022 /** Abstract container for KrView implementation classes. Created internally by KrViewFactory. */ 0023 class KrViewInstance 0024 { 0025 friend class KrView; 0026 0027 public: 0028 inline int id() const 0029 { 0030 return m_id; 0031 } 0032 inline QString name() const 0033 { 0034 return m_name; 0035 } 0036 inline QString description() const 0037 { 0038 return m_description; 0039 } 0040 inline QString iconName() const 0041 { 0042 return m_iconName; 0043 } 0044 inline QKeySequence shortcut() const 0045 { 0046 return m_shortcut; 0047 } 0048 0049 virtual KrView *create(QWidget *w, KConfig *cfg) = 0; 0050 0051 protected: 0052 KrViewInstance(int id, const QString &name, const QString &desc, const QString &iconName, const QKeySequence &shortcut); 0053 virtual ~KrViewInstance() 0054 { 0055 } 0056 0057 private: 0058 const int m_id; 0059 const QString m_name; 0060 const QString m_description; 0061 const QString m_iconName; 0062 const QKeySequence m_shortcut; 0063 0064 QList<KrView *> m_objects; // direct access in KrView 0065 }; 0066 0067 /** Factory for KrView implementations. This is a hidden singleton. */ 0068 class KrViewFactory 0069 { 0070 friend class KrViewInstance; 0071 0072 public: 0073 static KrView *createView(int id, QWidget *widget, KConfig *cfg); 0074 static const QList<KrViewInstance *> ®isteredViews() 0075 { 0076 return self().m_registeredViews; 0077 } 0078 static int defaultViewId() 0079 { 0080 return self().m_defaultViewId; 0081 } 0082 0083 private: 0084 KrViewFactory(); 0085 void init(); 0086 void registerView(KrViewInstance *); 0087 KrViewInstance *viewInstance(int id); 0088 0089 static KrViewFactory &self(); 0090 0091 QList<KrViewInstance *> m_registeredViews; 0092 int m_defaultViewId; 0093 }; 0094 0095 #endif /* __KRVIEWFACTORY_H__ */