diff options
author | Lorenz Haas <lykurg@gmail.com> | 2013-04-29 23:15:50 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-05-14 09:14:25 +0200 |
commit | d288e3999b392a66270223bc6749b684c34d4e5d (patch) | |
tree | e2e3e6f8f659a38f2eb008e95c48075a1018be68 /src/plugins/cppeditor/cppquickfixes.h | |
parent | 7ef611047f386dfb547845787c84c9a36d8bc974 (diff) | |
download | qt-creator-d288e3999b392a66270223bc6749b684c34d4e5d.tar.gz |
CppEditor: Quick fix "Insert (Pure) Virtual Methods"
This quick fix inserts (pure) virtual functions of base classes to the
current class. For selecting the functions which should be inserted and
for choosing the insertion mode (only declarations or with definitions
inside, outside or in the implementation file) a dialog is shown.
Task-number: QTCREATORBUG-2210
Task-number: QTCREATORBUG-2692
Task-number: QTCREATORBUG-3908
Task-number: QTCREATORBUG-5868
Task-number: QTCREATORBUG-7982
Change-Id: I8e94905afcae4778986f4c3925a494e0c6b3b8ee
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src/plugins/cppeditor/cppquickfixes.h')
-rw-r--r-- | src/plugins/cppeditor/cppquickfixes.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/plugins/cppeditor/cppquickfixes.h b/src/plugins/cppeditor/cppquickfixes.h index c77e4d211c..63ba308ef3 100644 --- a/src/plugins/cppeditor/cppquickfixes.h +++ b/src/plugins/cppeditor/cppquickfixes.h @@ -36,9 +36,18 @@ #include <extensionsystem/iplugin.h> +#include <QDialog> + QT_BEGIN_NAMESPACE class QByteArray; +class QCheckBox; +class QComboBox; +class QDialogButtonBox; +class QStandardItem; +class QSortFilterProxyModel; +class QStandardItemModel; class QString; +class QTreeView; template <class> class QList; QT_END_NAMESPACE @@ -482,6 +491,78 @@ public: void match(const CppQuickFixInterface &interface, TextEditor::QuickFixOperations &result); }; +/*! + Insert (pure) virtual functions of a base class. + */ +class InsertVirtualMethodsDialog : public QDialog +{ + Q_OBJECT +public: + enum CustomItemRoles { + ClassOrFunction = Qt::UserRole + 1, + Implemented = Qt::UserRole + 2, + PureVirtual = Qt::UserRole + 3, + AccessSpec = Qt::UserRole + 4 + }; + + enum ImplementationMode { + ModeOnlyDeclarations = 0x00000001, + ModeInsideClass = 0x00000002, + ModeOutsideClass = 0x00000004, + ModeImplementationFile = 0x00000008 + }; + + InsertVirtualMethodsDialog(QWidget *parent = 0); + void initGui(); + void initData(); + virtual ImplementationMode implementationMode() const; + void setImplementationsMode(ImplementationMode mode); + virtual bool insertKeywordVirtual() const; + void setInsertKeywordVirtual(bool insert); + void setHasImplementationFile(bool file); + void setHasReimplementedFunctions(bool functions); + bool hideReimplementedFunctions() const; + virtual bool gather(); + +private slots: + void updateCheckBoxes(QStandardItem *item); + void setHideReimplementedFunctions(bool hide); + +private: + QTreeView *m_view; + QCheckBox *m_hideReimplementedFunctions; + QComboBox *m_insertMode; + QCheckBox *m_virtualKeyword; + QDialogButtonBox *m_buttons; + QList<bool> m_expansionStateNormal; + QList<bool> m_expansionStateReimp; + bool m_hasImplementationFile; + bool m_hasReimplementedFunctions; + + void saveExpansionState(); + void restoreExpansionState(); + +protected: + ImplementationMode m_implementationMode; + bool m_insertKeywordVirtual; + +public: + QStandardItemModel *classFunctionModel; + QSortFilterProxyModel *classFunctionFilterModel; +}; + +class InsertVirtualMethods: public CppQuickFixFactory +{ + Q_OBJECT +public: + InsertVirtualMethods(InsertVirtualMethodsDialog *dialog = new InsertVirtualMethodsDialog); + ~InsertVirtualMethods(); + void match(const CppQuickFixInterface &interface, TextEditor::QuickFixOperations &result); + +private: + InsertVirtualMethodsDialog *m_dialog; +}; + } // namespace Internal } // namespace CppEditor |