AnnotationEditor: Merge dialogs

Change-Id: Ibabd7d0d328af8cae8a4ced6747db52b33274bf0
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Michael Winkelmann
2021-06-20 15:54:51 +02:00
parent ae8d9af6f4
commit be33e67fc5
12 changed files with 306 additions and 560 deletions

View File

@@ -636,7 +636,6 @@ extend_qtc_plugin(QmlDesigner
SOURCES_PREFIX components/annotationeditor SOURCES_PREFIX components/annotationeditor
SOURCES annotationcommenttab.cpp annotationcommenttab.h annotationcommenttab.ui SOURCES annotationcommenttab.cpp annotationcommenttab.h annotationcommenttab.ui
annotationeditordialog.cpp annotationeditordialog.h annotationeditordialog.ui annotationeditordialog.cpp annotationeditordialog.h annotationeditordialog.ui
globalannotationeditordialog.cpp globalannotationeditordialog.h globalannotationeditordialog.ui
annotationeditor.cpp annotationeditor.h annotationeditor.cpp annotationeditor.h
globalannotationeditor.cpp globalannotationeditor.h globalannotationeditor.cpp globalannotationeditor.h
defaultannotations.cpp defaultannotations.h defaultannotations.cpp defaultannotations.h

View File

@@ -2,7 +2,6 @@ HEADERS += $$PWD/annotationcommenttab.h
HEADERS += $$PWD/annotationeditordialog.h HEADERS += $$PWD/annotationeditordialog.h
HEADERS += $$PWD/annotationeditor.h HEADERS += $$PWD/annotationeditor.h
HEADERS += $$PWD/globalannotationeditor.h HEADERS += $$PWD/globalannotationeditor.h
HEADERS += $$PWD/globalannotationeditordialog.h
HEADERS += $$PWD/defaultannotations.h HEADERS += $$PWD/defaultannotations.h
HEADERS += $$PWD/annotationtableview.h HEADERS += $$PWD/annotationtableview.h
HEADERS += $$PWD/annotationtabwidget.h HEADERS += $$PWD/annotationtabwidget.h
@@ -11,14 +10,12 @@ SOURCES += $$PWD/annotationcommenttab.cpp
SOURCES += $$PWD/annotationeditordialog.cpp SOURCES += $$PWD/annotationeditordialog.cpp
SOURCES += $$PWD/annotationeditor.cpp SOURCES += $$PWD/annotationeditor.cpp
SOURCES += $$PWD/globalannotationeditor.cpp SOURCES += $$PWD/globalannotationeditor.cpp
SOURCES += $$PWD/globalannotationeditordialog.cpp
SOURCES += $$PWD/defaultannotations.cpp SOURCES += $$PWD/defaultannotations.cpp
SOURCES += $$PWD/annotationtableview.cpp SOURCES += $$PWD/annotationtableview.cpp
SOURCES += $$PWD/annotationtabwidget.cpp SOURCES += $$PWD/annotationtabwidget.cpp
FORMS += $$PWD/annotationcommenttab.ui FORMS += $$PWD/annotationcommenttab.ui
FORMS += $$PWD/annotationeditordialog.ui FORMS += $$PWD/annotationeditordialog.ui
FORMS += $$PWD/globalannotationeditordialog.ui
INCLUDEPATH += $$PWD INCLUDEPATH += $$PWD

View File

@@ -39,58 +39,193 @@
#include <QToolBar> #include <QToolBar>
namespace QmlDesigner { namespace QmlDesigner {
BasicAnnotationEditorDialog::BasicAnnotationEditorDialog(QWidget *parent) AnnotationEditorDialog::AnnotationEditorDialog(QWidget *parent,
const QString &targetId,
const QString &customId)
: QDialog(parent) : QDialog(parent)
, m_defaults(std::make_unique<DefaultAnnotationsModel>()) , m_defaults(std::make_unique<DefaultAnnotationsModel>())
, m_customId(customId)
, ui(std::make_unique<Ui::AnnotationEditorDialog>())
, m_statusIsActive(false)
{ {
ui->setupUi(this);
setGlobal(m_isGlobal);
setWindowFlag(Qt::Tool, true); setWindowFlag(Qt::Tool, true);
setModal(true); setModal(true);
loadDefaultAnnotations(DefaultAnnotationsModel::defaultJsonFilePath()); loadDefaultAnnotations(DefaultAnnotationsModel::defaultJsonFilePath());
ui->tabWidget->setDefaultAnnotations(defaultAnnotations());
ui->tableView->setDefaultAnnotations(defaultAnnotations());
connect(ui->tableView,
&AnnotationTableView::richTextEditorRequested,
this,
[&](int index, QString const &) {
switchToTabView();
ui->tabWidget->setCurrentIndex(index);
});
connect(ui->statusAddButton, &QPushButton::clicked, this, [&](bool) {
setStatusVisibility(true);
});
connect(ui->rbTableView,
&QRadioButton::clicked,
this,
&AnnotationEditorDialog::switchToTableView);
connect(ui->rbTabView,
&QRadioButton::clicked,
this, &AnnotationEditorDialog::switchToTabView);
setStatus(m_globalStatus);
switchToTabView();
connect(this, &QDialog::accepted, this, &AnnotationEditorDialog::acceptedClicked);
ui->targetIdEdit->setText(targetId);
connect(this, &QDialog::accepted, this, &BasicAnnotationEditorDialog::acceptedClicked);
} }
BasicAnnotationEditorDialog::~BasicAnnotationEditorDialog() {} AnnotationEditorDialog::~AnnotationEditorDialog() {
}
Annotation const &BasicAnnotationEditorDialog::annotation() const bool AnnotationEditorDialog::isGlobal() const {
return m_isGlobal;
}
void AnnotationEditorDialog::setGlobal(bool global) {
ui->annotationContainer->setVisible(!global);
ui->statusAddButton->setVisible(global);
ui->statusComboBox->setVisible(global);
setWindowTitle(global ? tr("Global Annotation Editor") : tr("Annotation Editor"));
if (m_isGlobal != global) {
m_isGlobal = global;
emit globalChanged();
}
}
AnnotationEditorDialog::ViewMode AnnotationEditorDialog::viewMode() const
{
return ui->rbTableView->isChecked() ? TableView : TabsView;
}
void AnnotationEditorDialog::setStatus(GlobalAnnotationStatus status)
{
m_globalStatus = status;
bool hasStatus = status.status() != GlobalAnnotationStatus::NoStatus;
if (hasStatus)
ui->statusComboBox->setCurrentIndex(int(status.status()));
setStatusVisibility(hasStatus);
}
GlobalAnnotationStatus AnnotationEditorDialog::globalStatus() const
{
return m_globalStatus;
}
void AnnotationEditorDialog::showStatusContainer(bool show)
{
ui->statusContainer->setVisible(show);
}
void AnnotationEditorDialog::switchToTabView()
{
m_annotation.setComments(ui->tableView->fetchComments());
ui->rbTabView->setChecked(true);
ui->tableView->hide();
ui->tabWidget->show();
fillFields();
}
void AnnotationEditorDialog::switchToTableView()
{
m_annotation.setComments(ui->tabWidget->fetchComments());
ui->rbTableView->setChecked(true);
ui->tabWidget->hide();
ui->tableView->show();
fillFields();
}
void AnnotationEditorDialog::acceptedClicked()
{
updateAnnotation();
emit AnnotationEditorDialog::acceptedDialog();
}
void AnnotationEditorDialog::fillFields()
{
ui->customIdEdit->setText(m_customId);
ui->tabWidget->setupComments(m_annotation.comments());
ui->tableView->setupComments(m_annotation.comments());
}
void AnnotationEditorDialog::updateAnnotation()
{
m_customId = ui->customIdEdit->text();
Annotation annotation;
switch (viewMode()) {
case TabsView:
annotation.setComments(ui->tabWidget->fetchComments());
break;
case TableView:
annotation.setComments(ui->tableView->fetchComments());
break;
}
m_annotation = annotation;
if (m_statusIsActive && m_isGlobal)
m_globalStatus.setStatus(ui->statusComboBox->currentIndex());
}
void AnnotationEditorDialog::addComment(const Comment &comment)
{
m_annotation.addComment(comment);
ui->tabWidget->addCommentTab(comment);
}
void AnnotationEditorDialog::removeComment(int index)
{
if ((m_annotation.commentsSize() > index) && (index >= 0)) {
m_annotation.removeComment(index);
ui->tabWidget->removeTab(index);
}
}
void AnnotationEditorDialog::setStatusVisibility(bool hasStatus)
{
ui->statusAddButton->setVisible(!hasStatus && m_isGlobal);
ui->statusComboBox->setVisible(hasStatus && m_isGlobal);
m_statusIsActive = hasStatus;
}
Annotation const &AnnotationEditorDialog::annotation() const
{ {
return m_annotation; return m_annotation;
} }
void BasicAnnotationEditorDialog::setAnnotation(const Annotation &annotation) void AnnotationEditorDialog::setAnnotation(const Annotation &annotation)
{ {
m_annotation = annotation; m_annotation = annotation;
fillFields(); fillFields();
} }
void BasicAnnotationEditorDialog::loadDefaultAnnotations(QString const &filename) void AnnotationEditorDialog::loadDefaultAnnotations(QString const &filename)
{ {
m_defaults->loadFromFile(filename); m_defaults->loadFromFile(filename);
} }
DefaultAnnotationsModel *BasicAnnotationEditorDialog::defaultAnnotations() const DefaultAnnotationsModel *AnnotationEditorDialog::defaultAnnotations() const
{ {
return m_defaults.get(); return m_defaults.get();
} }
AnnotationEditorDialog::AnnotationEditorDialog(QWidget *parent,
const QString &targetId,
const QString &customId)
: BasicAnnotationEditorDialog(parent)
, ui(new Ui::AnnotationEditorDialog)
, m_customId(customId)
{
ui->setupUi(this);
ui->targetIdEdit->setText(targetId);
setWindowTitle(annotationEditorTitle);
}
AnnotationEditorDialog::~AnnotationEditorDialog()
{
delete ui;
}
void AnnotationEditorDialog::setCustomId(const QString &customId) void AnnotationEditorDialog::setCustomId(const QString &customId)
{ {
m_customId = customId; m_customId = customId;
@@ -102,36 +237,5 @@ QString AnnotationEditorDialog::customId() const
return m_customId; return m_customId;
} }
void AnnotationEditorDialog::acceptedClicked()
{
updateAnnotation();
emit AnnotationEditorDialog::acceptedDialog();
}
void AnnotationEditorDialog::fillFields()
{
ui->customIdEdit->setText(m_customId);
ui->tabWidget->setupComments(m_annotation.comments());
}
void AnnotationEditorDialog::updateAnnotation()
{
m_customId = ui->customIdEdit->text();
Annotation annotation;
annotation.setComments(ui->tabWidget->fetchComments());
m_annotation = annotation;
}
void AnnotationEditorDialog::addComment(const Comment &comment)
{
m_annotation.addComment(comment);
ui->tabWidget->addCommentTab(comment);
}
void AnnotationEditorDialog::removeComment(int index)
{
m_annotation.removeComment(index);
ui->tabWidget->removeTab(index);
}
} //namespace QmlDesigner } //namespace QmlDesigner

View File

@@ -36,60 +36,62 @@ class AnnotationEditorDialog;
} }
class DefaultAnnotationsModel; class DefaultAnnotationsModel;
class BasicAnnotationEditorDialog : public QDialog class AnnotationEditorDialog : public QDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit BasicAnnotationEditorDialog(QWidget *parent); enum ViewMode { TableView, TabsView };
~BasicAnnotationEditorDialog();
explicit AnnotationEditorDialog(QWidget *parent,
const QString &targetId = {},
const QString &customId = {});
~AnnotationEditorDialog();
ViewMode viewMode() const;
Annotation const &annotation() const; Annotation const &annotation() const;
void setAnnotation(const Annotation &annotation); void setAnnotation(const Annotation &annotation);
QString customId() const;
void setCustomId(const QString &customId);
bool isGlobal() const;
void setGlobal(bool = true);
void loadDefaultAnnotations(QString const &filename); void loadDefaultAnnotations(QString const &filename);
DefaultAnnotationsModel *defaultAnnotations() const; DefaultAnnotationsModel *defaultAnnotations() const;
void setStatus(GlobalAnnotationStatus status);
GlobalAnnotationStatus globalStatus() const;
public slots:
void showStatusContainer(bool show);
void switchToTabView();
void switchToTableView();
private slots:
void acceptedClicked();
signals: signals:
void acceptedDialog(); //use instead of QDialog::accepted void acceptedDialog(); //use instead of QDialog::accepted
void globalChanged();
protected:
virtual void fillFields() = 0;
virtual void acceptedClicked() = 0;
Annotation m_annotation;
std::unique_ptr<DefaultAnnotationsModel> m_defaults;
};
class AnnotationEditorDialog : public BasicAnnotationEditorDialog
{
Q_OBJECT
public:
explicit AnnotationEditorDialog(QWidget *parent,
const QString &targetId,
const QString &customId);
~AnnotationEditorDialog();
void setCustomId(const QString &customId);
QString customId() const;
private slots:
void acceptedClicked() override;
private: private:
void fillFields() override; void fillFields();
void updateAnnotation(); void updateAnnotation();
void addComment(const Comment &comment); void addComment(const Comment &comment);
void removeComment(int index); void removeComment(int index);
private: void setStatusVisibility(bool hasStatus);
const QString annotationEditorTitle = {tr("Annotation Editor")};
Ui::AnnotationEditorDialog *ui;
std::unique_ptr<Ui::AnnotationEditorDialog> ui;
GlobalAnnotationStatus m_globalStatus = GlobalAnnotationStatus::NoStatus;
bool m_statusIsActive = false;
bool m_isGlobal = false;
Annotation m_annotation;
QString m_customId; QString m_customId;
std::unique_ptr<DefaultAnnotationsModel> m_defaults;
}; };
} //namespace QmlDesigner } //namespace QmlDesigner

View File

@@ -14,6 +14,98 @@
<string notr="true">Dialog</string> <string notr="true">Dialog</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QWidget" name="statusContainer" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="statusAddButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Add Status</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="statusComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<item>
<property name="text">
<string>In Progress</string>
</property>
</item>
<item>
<property name="text">
<string>In Review</string>
</property>
</item>
<item>
<property name="text">
<string>Done</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rbTabView">
<property name="text">
<string>Tab View</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rbTableView">
<property name="text">
<string>Table View</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item> <item>
<widget class="QWidget" name="annotationContainer" native="true"> <widget class="QWidget" name="annotationContainer" native="true">
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
@@ -75,6 +167,9 @@
</widget> </widget>
</widget> </widget>
</item> </item>
<item>
<widget class="AnnotationTableView" name="tableView"/>
</item>
<item> <item>
<widget class="QDialogButtonBox" name="buttonBox"> <widget class="QDialogButtonBox" name="buttonBox">
<property name="focusPolicy"> <property name="focusPolicy">
@@ -97,6 +192,11 @@
<header>annotationtabwidget.h</header> <header>annotationtabwidget.h</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget>
<class>AnnotationTableView</class>
<extends>QTableView</extends>
<header>annotationtableview.h</header>
</customwidget>
</customwidgets> </customwidgets>
<tabstops> <tabstops>
<tabstop>targetIdEdit</tabstop> <tabstop>targetIdEdit</tabstop>

View File

@@ -22,6 +22,7 @@
** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
** **
****************************************************************************/ ****************************************************************************/
#pragma once
#include <QItemDelegate> #include <QItemDelegate>
#include <QLabel> #include <QLabel>

View File

@@ -26,7 +26,8 @@
#include "globalannotationeditor.h" #include "globalannotationeditor.h"
#include "annotation.h" #include "annotation.h"
#include "globalannotationeditordialog.h" #include "annotationeditordialog.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <QMessageBox> #include <QMessageBox>
@@ -41,15 +42,18 @@ GlobalAnnotationEditor::~GlobalAnnotationEditor() {}
QWidget *GlobalAnnotationEditor::createWidget() QWidget *GlobalAnnotationEditor::createWidget()
{ {
auto* dialog = new GlobalAnnotationEditorDialog(Core::ICore::dialogParent(), auto *dialog = new AnnotationEditorDialog(Core::ICore::dialogParent());
this->m_modelNode.globalStatus());
dialog->setGlobal(true);
dialog->setStatus(m_modelNode.globalStatus());
dialog->setAnnotation(this->m_modelNode.globalAnnotation()); dialog->setAnnotation(this->m_modelNode.globalAnnotation());
QObject::connect(dialog, QObject::connect(dialog,
&GlobalAnnotationEditorDialog::acceptedDialog, &AnnotationEditorDialog::acceptedDialog,
this, this,
&GlobalAnnotationEditor::acceptedClicked); &GlobalAnnotationEditor::acceptedClicked);
QObject::connect(dialog, QObject::connect(dialog,
&GlobalAnnotationEditorDialog::rejected, &AnnotationEditorDialog::rejected,
this, this,
&GlobalAnnotationEditor::cancelClicked); &GlobalAnnotationEditor::cancelClicked);
return dialog; return dialog;
@@ -73,7 +77,7 @@ void GlobalAnnotationEditor::removeFullAnnotation()
void GlobalAnnotationEditor::acceptedClicked() void GlobalAnnotationEditor::acceptedClicked()
{ {
if (const auto *dialog = qobject_cast<GlobalAnnotationEditorDialog *>(widget())) { if (const auto *dialog = qobject_cast<AnnotationEditorDialog *>(widget())) {
auto &node = this->m_modelNode; auto &node = this->m_modelNode;
const Annotation annotation = dialog->annotation(); const Annotation annotation = dialog->annotation();

View File

@@ -31,7 +31,6 @@
#include "abstractaction.h" #include "abstractaction.h"
#include "annotation.h" #include "annotation.h"
#include "globalannotationeditordialog.h"
#include "editorproxy.h" #include "editorproxy.h"
#include "modelnode.h" #include "modelnode.h"

View File

@@ -1,179 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** 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 "globalannotationeditordialog.h"
#include "annotation.h"
#include "annotationcommenttab.h"
#include "ui_globalannotationeditordialog.h"
#include <timelineicons.h>
#include <utils/qtcassert.h>
#include <QAction>
#include <QMessageBox>
#include <QObject>
#include <QToolBar>
namespace QmlDesigner {
GlobalAnnotationEditorDialog::GlobalAnnotationEditorDialog(QWidget *parent,
GlobalAnnotationStatus status)
: BasicAnnotationEditorDialog(parent)
, ui(new Ui::GlobalAnnotationEditorDialog)
, m_globalStatus(status)
, m_statusIsActive(false)
{
ui->setupUi(this);
ui->tabWidget->setDefaultAnnotations(defaultAnnotations());
ui->tableView->setDefaultAnnotations(defaultAnnotations());
connect(ui->tableView,
&AnnotationTableView::richTextEditorRequested,
this,
[&](int index, QString const &) {
switchToTabView();
ui->tabWidget->setCurrentIndex(index);
});
connect(ui->statusAddButton, &QPushButton::clicked, this, [&](bool) {
setStatusVisibility(true);
});
connect(ui->rbTableView,
&QRadioButton::clicked,
this,
&GlobalAnnotationEditorDialog::switchToTableView);
connect(ui->rbTabView,
&QRadioButton::clicked,
this,
&GlobalAnnotationEditorDialog::switchToTabView);
setStatus(m_globalStatus);
setWindowTitle(globalEditorTitle);
switchToTabView();
}
GlobalAnnotationEditorDialog::~GlobalAnnotationEditorDialog()
{
delete ui;
}
GlobalAnnotationEditorDialog::ViewMode GlobalAnnotationEditorDialog::viewMode() const
{
return ui->rbTableView->isChecked() ? TableView : TabsView;
}
void GlobalAnnotationEditorDialog::setStatus(GlobalAnnotationStatus status)
{
m_globalStatus = status;
bool hasStatus = status.status() != GlobalAnnotationStatus::NoStatus;
if (hasStatus)
ui->statusComboBox->setCurrentIndex(int(status.status()));
setStatusVisibility(hasStatus);
}
GlobalAnnotationStatus GlobalAnnotationEditorDialog::globalStatus() const
{
return m_globalStatus;
}
void GlobalAnnotationEditorDialog::showStatusContainer(bool show)
{
ui->statusContainer->setVisible(show);
}
void GlobalAnnotationEditorDialog::switchToTabView()
{
m_annotation.setComments(ui->tableView->fetchComments());
ui->rbTabView->setChecked(true);
ui->tableView->hide();
ui->tabWidget->show();
fillFields();
}
void GlobalAnnotationEditorDialog::switchToTableView()
{
m_annotation.setComments(ui->tabWidget->fetchComments());
ui->rbTableView->setChecked(true);
ui->tabWidget->hide();
ui->tableView->show();
fillFields();
}
void GlobalAnnotationEditorDialog::acceptedClicked()
{
updateAnnotation();
emit GlobalAnnotationEditorDialog::acceptedDialog();
}
void GlobalAnnotationEditorDialog::fillFields()
{
ui->tabWidget->setupComments(m_annotation.comments());
ui->tableView->setupComments(m_annotation.comments());
}
void GlobalAnnotationEditorDialog::updateAnnotation()
{
Annotation annotation;
switch (viewMode()) {
case TabsView:
annotation.setComments(ui->tabWidget->fetchComments());
break;
case TableView:
annotation.setComments(ui->tableView->fetchComments());
break;
}
m_annotation = annotation;
if (m_statusIsActive)
m_globalStatus.setStatus(ui->statusComboBox->currentIndex());
}
void GlobalAnnotationEditorDialog::addComment(const Comment &comment)
{
m_annotation.addComment(comment);
ui->tabWidget->addCommentTab(comment);
}
void GlobalAnnotationEditorDialog::removeComment(int index)
{
if ((m_annotation.commentsSize() > index) && (index >= 0)) {
m_annotation.removeComment(index);
ui->tabWidget->removeTab(index);
}
}
void GlobalAnnotationEditorDialog::setStatusVisibility(bool hasStatus)
{
ui->statusAddButton->setVisible(!hasStatus);
ui->statusComboBox->setVisible(hasStatus);
m_statusIsActive = hasStatus;
}
} //namespace QmlDesigner

View File

@@ -1,80 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** 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 "annotationeditordialog.h"
namespace QmlDesigner {
namespace Ui {
class GlobalAnnotationEditorDialog;
}
class GlobalAnnotationEditorDialog : public BasicAnnotationEditorDialog
{
Q_OBJECT
public:
enum ViewMode {
TableView,
TabsView
};
explicit GlobalAnnotationEditorDialog(
QWidget *parent = nullptr, GlobalAnnotationStatus status = GlobalAnnotationStatus::NoStatus);
~GlobalAnnotationEditorDialog();
ViewMode viewMode() const;
void setStatus(GlobalAnnotationStatus status);
GlobalAnnotationStatus globalStatus() const;
public slots:
void showStatusContainer(bool show);
void switchToTabView();
void switchToTableView();
private slots:
void acceptedClicked() override;
private:
void fillFields() override;
void updateAnnotation();
void addComment(const Comment &comment);
void removeComment(int index);
void setStatusVisibility(bool hasStatus);
private:
const QString globalEditorTitle = {tr("Global Annotation Editor")};
Ui::GlobalAnnotationEditorDialog *ui;
GlobalAnnotationStatus m_globalStatus;
bool m_statusIsActive;
};
} //namespace QmlDesigner

View File

@@ -1,198 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QmlDesigner::GlobalAnnotationEditorDialog</class>
<widget class="QDialog" name="QmlDesigner::GlobalAnnotationEditorDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1344</width>
<height>819</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true">Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QWidget" name="statusContainer" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="statusAddButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Add Status</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="statusComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<item>
<property name="text">
<string>In Progress</string>
</property>
</item>
<item>
<property name="text">
<string>In Review</string>
</property>
</item>
<item>
<property name="text">
<string>Done</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rbTabView">
<property name="text">
<string>Tab View</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rbTableView">
<property name="text">
<string>Table View</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="AnnotationTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<property name="movable">
<bool>true</bool>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Tab 1</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Tab 2</string>
</attribute>
</widget>
</widget>
</item>
<item>
<widget class="AnnotationTableView" name="tableView"/>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>AnnotationTabWidget</class>
<extends>QTabWidget</extends>
<header>annotationtabwidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>AnnotationTableView</class>
<extends>QTableView</extends>
<header>annotationtableview.h</header>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>tabWidget</tabstop>
</tabstops>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>QmlDesigner::GlobalAnnotationEditorDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>261</x>
<y>473</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>QmlDesigner::GlobalAnnotationEditorDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>329</x>
<y>473</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -737,9 +737,6 @@ Project {
"annotationeditor/annotationeditordialog.cpp", "annotationeditor/annotationeditordialog.cpp",
"annotationeditor/annotationeditordialog.h", "annotationeditor/annotationeditordialog.h",
"annotationeditor/annotationeditordialog.ui", "annotationeditor/annotationeditordialog.ui",
"annotationeditor/globalannotationeditordialog.cpp",
"annotationeditor/globalannotationeditordialog.h",
"annotationeditor/globalannotationeditordialog.ui",
"annotationeditor/defaultannotations.cpp", "annotationeditor/defaultannotations.cpp",
"annotationeditor/defaultannotations.h", "annotationeditor/defaultannotations.h",
"annotationeditor/annotationtableview.cpp", "annotationeditor/annotationtableview.cpp",