summaryrefslogtreecommitdiff
path: root/src/plugins/cppeditor/cppquickfixes.h
diff options
context:
space:
mode:
authorLorenz Haas <lykurg@gmail.com>2013-04-29 23:15:50 +0200
committerNikolai Kosjar <nikolai.kosjar@digia.com>2013-05-14 09:14:25 +0200
commitd288e3999b392a66270223bc6749b684c34d4e5d (patch)
treee2e3e6f8f659a38f2eb008e95c48075a1018be68 /src/plugins/cppeditor/cppquickfixes.h
parent7ef611047f386dfb547845787c84c9a36d8bc974 (diff)
downloadqt-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.h81
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