diff options
author | David Schulz <david.schulz@qt.io> | 2018-07-13 11:13:32 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2018-07-23 13:05:35 +0000 |
commit | da739959ea80a8758b260441a4e3151e7fa7b770 (patch) | |
tree | efaa5acf72e17452505812905433703c7ae775f2 | |
parent | f4f2ecc7c51b245a395324f322cb8809c48268fb (diff) |
Move PathChooserDelegate to Utils
Change-Id: I94b3c0b60477145f0f084719fc1cf5f3f4a98534
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | src/libs/utils/delegates.cpp (renamed from src/libs/utils/annotateditemdelegate.cpp) | 66 | ||||
-rw-r--r-- | src/libs/utils/delegates.h (renamed from src/libs/utils/annotateditemdelegate.h) | 27 | ||||
-rw-r--r-- | src/libs/utils/utils-lib.pri | 4 | ||||
-rw-r--r-- | src/libs/utils/utils.qbs | 4 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppincludehierarchy.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cppeditor/cpptypehierarchy.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmljseditor/qmljseditor.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmljseditor/qmljsoutlinetreeview.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qnx/pathchooserdelegate.cpp | 103 | ||||
-rw-r--r-- | src/plugins/qnx/pathchooserdelegate.h | 65 | ||||
-rw-r--r-- | src/plugins/qnx/qnx.pro | 2 | ||||
-rw-r--r-- | src/plugins/qnx/qnx.qbs | 2 |
12 files changed, 100 insertions, 181 deletions
diff --git a/src/libs/utils/annotateditemdelegate.cpp b/src/libs/utils/delegates.cpp index ca844341f0..bbc1a42265 100644 --- a/src/libs/utils/annotateditemdelegate.cpp +++ b/src/libs/utils/delegates.cpp @@ -23,7 +23,7 @@ ** ****************************************************************************/ -#include "annotateditemdelegate.h" +#include "delegates.h" #include <QPainter> #include <QApplication> @@ -111,3 +111,67 @@ QSize AnnotatedItemDelegate::sizeHint(const QStyleOptionViewItem &option, return QApplication::style()->sizeFromContents(QStyle::CT_ItemViewItem, &opt, QSize(), nullptr); } + +PathChooserDelegate::PathChooserDelegate(QObject *parent) + : QStyledItemDelegate(parent) + , m_kind(Utils::PathChooser::ExistingDirectory) +{ +} + +void PathChooserDelegate::setExpectedKind(Utils::PathChooser::Kind kind) +{ + m_kind = kind; +} + +void PathChooserDelegate::setPromptDialogFilter(const QString &filter) +{ + m_filter = filter; +} + +QWidget *PathChooserDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + Q_UNUSED(option); + Q_UNUSED(index); + + Utils::PathChooser *editor = new Utils::PathChooser(parent); + + editor->setHistoryCompleter(m_historyKey); + editor->setAutoFillBackground(true); // To hide the text beneath the editor widget + editor->lineEdit()->setMinimumWidth(0); + + connect(editor, &Utils::PathChooser::browsingFinished, this, [this, editor]() { + emit const_cast<PathChooserDelegate*>(this)->commitData(editor); + }); + + return editor; +} + +void PathChooserDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const +{ + if (auto *pathChooser = qobject_cast<Utils::PathChooser *>(editor)) { + pathChooser->setExpectedKind(m_kind); + pathChooser->setPromptDialogFilter(m_filter); + pathChooser->setPath(index.model()->data(index, Qt::EditRole).toString()); + } +} + +void PathChooserDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const +{ + Utils::PathChooser *pathChooser = qobject_cast<Utils::PathChooser *>(editor); + if (!pathChooser) + return; + + model->setData(index, pathChooser->path(), Qt::EditRole); +} + +void PathChooserDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + Q_UNUSED(index); + + editor->setGeometry(option.rect); +} + +void PathChooserDelegate::setHistoryCompleter(const QString &key) +{ + m_historyKey = key; +} diff --git a/src/libs/utils/annotateditemdelegate.h b/src/libs/utils/delegates.h index ffbcfbd9f4..7deab7a372 100644 --- a/src/libs/utils/annotateditemdelegate.h +++ b/src/libs/utils/delegates.h @@ -26,6 +26,7 @@ #pragma once #include "utils_global.h" +#include "pathchooser.h" #include <QStyledItemDelegate> @@ -54,4 +55,30 @@ private: QString m_delimiter; }; +class QTCREATOR_UTILS_EXPORT PathChooserDelegate : public QStyledItemDelegate +{ +public: + explicit PathChooserDelegate(QObject *parent = nullptr); + + void setExpectedKind(PathChooser::Kind kind); + void setPromptDialogFilter(const QString &filter); + + QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, + const QModelIndex &index) const override; + + void setEditorData(QWidget *editor, const QModelIndex &index) const override; + void setModelData(QWidget *editor, QAbstractItemModel *model, + const QModelIndex &index) const override; + + void updateEditorGeometry(QWidget *editor, + const QStyleOptionViewItem &option, const QModelIndex &index) const override; + + void setHistoryCompleter(const QString &key); + +private: + PathChooser::Kind m_kind; + QString m_filter; + QString m_historyKey; +}; + } // Utils diff --git a/src/libs/utils/utils-lib.pri b/src/libs/utils/utils-lib.pri index 7de656218b..0cd5f68e12 100644 --- a/src/libs/utils/utils-lib.pri +++ b/src/libs/utils/utils-lib.pri @@ -74,7 +74,7 @@ SOURCES += \ $$PWD/crumblepath.cpp \ $$PWD/historycompleter.cpp \ $$PWD/buildablehelperlibrary.cpp \ - $$PWD/annotateditemdelegate.cpp \ + $$PWD/delegates.cpp \ $$PWD/fileinprojectfinder.cpp \ $$PWD/statuslabel.cpp \ $$PWD/outputformatter.cpp \ @@ -184,7 +184,7 @@ HEADERS += \ $$PWD/crumblepath.h \ $$PWD/historycompleter.h \ $$PWD/buildablehelperlibrary.h \ - $$PWD/annotateditemdelegate.h \ + $$PWD/delegates.h \ $$PWD/fileinprojectfinder.h \ $$PWD/statuslabel.h \ $$PWD/outputformatter.h \ diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs index d6f02202e9..c277c21427 100644 --- a/src/libs/utils/utils.qbs +++ b/src/libs/utils/utils.qbs @@ -39,8 +39,6 @@ Project { files: [ "QtConcurrentTools", "algorithm.h", - "annotateditemdelegate.cpp", - "annotateditemdelegate.h", "ansiescapecodehandler.cpp", "ansiescapecodehandler.h", "appmainwindow.cpp", @@ -71,6 +69,8 @@ Project { "crumblepath.cpp", "crumblepath.h", "declarationmacros.h", + "delegates.cpp", + "delegates.h", "detailsbutton.cpp", "detailsbutton.h", "detailswidget.cpp", diff --git a/src/plugins/cppeditor/cppincludehierarchy.cpp b/src/plugins/cppeditor/cppincludehierarchy.cpp index 22bebf3daf..27a8cca993 100644 --- a/src/plugins/cppeditor/cppincludehierarchy.cpp +++ b/src/plugins/cppeditor/cppincludehierarchy.cpp @@ -42,7 +42,7 @@ #include <cplusplus/CppDocument.h> -#include <utils/annotateditemdelegate.h> +#include <utils/delegates.h> #include <utils/dropsupport.h> #include <utils/fileutils.h> #include <utils/navigationtreeview.h> diff --git a/src/plugins/cppeditor/cpptypehierarchy.cpp b/src/plugins/cppeditor/cpptypehierarchy.cpp index ad581602f0..1b9d51851a 100644 --- a/src/plugins/cppeditor/cpptypehierarchy.cpp +++ b/src/plugins/cppeditor/cpptypehierarchy.cpp @@ -34,7 +34,7 @@ #include <coreplugin/editormanager/editormanager.h> #include <cpptools/cppelementevaluator.h> #include <utils/algorithm.h> -#include <utils/annotateditemdelegate.h> +#include <utils/delegates.h> #include <utils/navigationtreeview.h> #include <utils/dropsupport.h> diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index a9e063245e..bf7c50b9e8 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -70,7 +70,7 @@ #include <texteditor/texteditoractionhandler.h> #include <texteditor/textmark.h> -#include <utils/annotateditemdelegate.h> +#include <utils/delegates.h> #include <utils/changeset.h> #include <utils/qtcassert.h> #include <utils/uncommentselection.h> diff --git a/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp b/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp index d89b84a3b5..9e7efe7efd 100644 --- a/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp +++ b/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp @@ -26,7 +26,7 @@ #include "qmljsoutlinetreeview.h" #include "qmloutlinemodel.h" -#include <utils/annotateditemdelegate.h> +#include <utils/delegates.h> #include <QMenu> namespace QmlJSEditor { diff --git a/src/plugins/qnx/pathchooserdelegate.cpp b/src/plugins/qnx/pathchooserdelegate.cpp deleted file mode 100644 index 2b37c0d9b7..0000000000 --- a/src/plugins/qnx/pathchooserdelegate.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 BlackBerry Limited. All rights reserved. -** Contact: KDAB (info@kdab.com) -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "pathchooserdelegate.h" - -#include <utils/pathchooser.h> -#include <utils/fancylineedit.h> - -namespace Qnx { -namespace Internal { - -PathChooserDelegate::PathChooserDelegate(QObject *parent) - : QStyledItemDelegate(parent) - , m_kind(Utils::PathChooser::ExistingDirectory) -{ -} - -void PathChooserDelegate::setExpectedKind(Utils::PathChooser::Kind kind) -{ - m_kind = kind; -} - -void PathChooserDelegate::setPromptDialogFilter(const QString &filter) -{ - m_filter = filter; -} - -QWidget *PathChooserDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - Q_UNUSED(option); - Q_UNUSED(index); - - Utils::PathChooser *editor = new Utils::PathChooser(parent); - - editor->setHistoryCompleter(m_historyKey); - editor->setAutoFillBackground(true); // To hide the text beneath the editor widget - editor->lineEdit()->setMinimumWidth(0); - - connect(editor, &Utils::PathChooser::browsingFinished, this, [this, editor]() { - emit const_cast<PathChooserDelegate*>(this)->commitData(editor); - }); - - return editor; -} - -void PathChooserDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const -{ - QString value = index.model()->data(index, Qt::EditRole).toString(); - - Utils::PathChooser *pathChooser = qobject_cast<Utils::PathChooser *>(editor); - if (!pathChooser) - return; - - pathChooser->setExpectedKind(m_kind); - pathChooser->setPromptDialogFilter(m_filter); - pathChooser->setPath(value); -} - -void PathChooserDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const -{ - Utils::PathChooser *pathChooser = qobject_cast<Utils::PathChooser *>(editor); - if (!pathChooser) - return; - - model->setData(index, pathChooser->path(), Qt::EditRole); -} - -void PathChooserDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - Q_UNUSED(index); - - editor->setGeometry(option.rect); -} - -void PathChooserDelegate::setHistoryCompleter(const QString &key) -{ - m_historyKey = key; -} - -} // namespace Internal -} // namespace Qnx diff --git a/src/plugins/qnx/pathchooserdelegate.h b/src/plugins/qnx/pathchooserdelegate.h deleted file mode 100644 index c8158b423f..0000000000 --- a/src/plugins/qnx/pathchooserdelegate.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 BlackBerry Limited. All rights reserved. -** Contact: KDAB (info@kdab.com) -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include <QStyledItemDelegate> - -#include <utils/pathchooser.h> - -namespace Qnx { -namespace Internal { - -// TODO: This whole class should probably go into utils - -class PathChooserDelegate : public QStyledItemDelegate -{ - Q_OBJECT -public: - explicit PathChooserDelegate(QObject *parent = 0); - - void setExpectedKind(Utils::PathChooser::Kind kind); - void setPromptDialogFilter(const QString &filter); - - QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, - const QModelIndex &index) const; - - void setEditorData(QWidget *editor, const QModelIndex &index) const; - void setModelData(QWidget *editor, QAbstractItemModel *model, - const QModelIndex &index) const; - - void updateEditorGeometry(QWidget *editor, - const QStyleOptionViewItem &option, const QModelIndex &index) const; - - void setHistoryCompleter(const QString &key); - -private: - Utils::PathChooser::Kind m_kind; - QString m_filter; - QString m_historyKey; -}; - -} // namespace Internal -} // namespace Qnx diff --git a/src/plugins/qnx/qnx.pro b/src/plugins/qnx/qnx.pro index 49f9d55b77..50a35847d8 100644 --- a/src/plugins/qnx/qnx.pro +++ b/src/plugins/qnx/qnx.pro @@ -14,7 +14,6 @@ SOURCES += qnxplugin.cpp \ qnxqtversion.cpp \ qnxdeployconfiguration.cpp \ qnxdevice.cpp \ - pathchooserdelegate.cpp \ qnxdevicetester.cpp \ qnxdeviceprocesssignaloperation.cpp \ qnxdeviceprocesslist.cpp \ @@ -41,7 +40,6 @@ HEADERS += qnxplugin.h\ qnxqtversion.h \ qnxdeployconfiguration.h \ qnxdevice.h \ - pathchooserdelegate.h \ qnxdevicetester.h \ qnxdeviceprocesssignaloperation.h \ qnxdeviceprocesslist.h \ diff --git a/src/plugins/qnx/qnx.qbs b/src/plugins/qnx/qnx.qbs index 8740daf0ce..6965b5eb16 100644 --- a/src/plugins/qnx/qnx.qbs +++ b/src/plugins/qnx/qnx.qbs @@ -18,8 +18,6 @@ QtcPlugin { "qnxdeployqtlibrariesdialog.cpp", "qnxdeployqtlibrariesdialog.h", "qnxdeployqtlibrariesdialog.ui", - "pathchooserdelegate.cpp", - "pathchooserdelegate.h", "qnxtoolchain.cpp", "qnxtoolchain.h", "qnx.qrc", |