QmlDesigner: Remove Switchsplittabwidget

Removed the unused class Switchsplittabwidget from the codebase.

Change-Id: Idb0071d4e6bb54b6a08e6026f8768f9239a5c342
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Mahmoud Badri
2020-10-20 11:09:04 +03:00
parent 3614ab81ce
commit 1a8c802f56
7 changed files with 0 additions and 284 deletions

View File

@@ -29,7 +29,6 @@ add_qtc_plugin(QmlDesigner
qmldesignerplugin.cpp qmldesignerplugin.h
settingspage.cpp settingspage.h settingspage.ui
shortcutmanager.cpp shortcutmanager.h
switchsplittabwidget.cpp switchsplittabwidget.h
designermcumanager.cpp designermcumanager.h
EXPLICIT_MOC
components/propertyeditor/propertyeditorvalue.h

View File

@@ -24,7 +24,6 @@
****************************************************************************/
#include "designmodewidget.h"
#include "switchsplittabwidget.h"
#include <designeractionmanager.h>

View File

@@ -50,7 +50,6 @@ namespace QmlDesigner {
class ItemLibraryWidget;
class CrumbleBar;
class DocumentWarningWidget;
class SwitchSplitTabWidget;
namespace Internal {
@@ -103,8 +102,6 @@ private: // functions
void aboutToShowWorkspaces();
private: // variables
SwitchSplitTabWidget* m_centralTabWidget = nullptr;
QPointer<QWidget> m_bottomSideBar;
Core::EditorToolBar *m_toolBar;
CrumbleBar *m_crumbleBar;

View File

@@ -2,7 +2,6 @@ HEADERS += $$PWD/qmldesignerconstants.h \
$$PWD/shortcutmanager.h \
$$PWD/qmldesignerplugin.h \
$$PWD/designmodewidget.h \
$$PWD/switchsplittabwidget.h \
$$PWD/designersettings.h \
$$PWD/generateresource.h \
$$PWD/settingspage.h \
@@ -16,7 +15,6 @@ HEADERS += $$PWD/qmldesignerconstants.h \
SOURCES += $$PWD/qmldesignerplugin.cpp \
$$PWD/shortcutmanager.cpp \
$$PWD/designmodewidget.cpp \
$$PWD/switchsplittabwidget.cpp \
$$PWD/designersettings.cpp \
$$PWD/generateresource.cpp \
$$PWD/settingspage.cpp \

View File

@@ -933,8 +933,6 @@ Project {
"designmodecontext.h",
"designmodewidget.cpp",
"designmodewidget.h",
"switchsplittabwidget.cpp",
"switchsplittabwidget.h",
"documentmanager.cpp",
"documentmanager.h",
"documentwarningwidget.cpp",

View File

@@ -1,212 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2016 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 "switchsplittabwidget.h"
#include <theme.h>
#include <utils/utilsicons.h>
#include <utils/fileutils.h>
#include <QVector>
#include <QBoxLayout>
#include <QTabBar>
#include <QToolButton>
#include <QSplitter>
#include <QLayoutItem>
#include <QEvent>
namespace QmlDesigner {
SwitchSplitTabWidget::SwitchSplitTabWidget(QWidget *parent)
: QWidget(parent)
, m_splitter(new QSplitter)
, m_tabBar(new QTabBar)
, m_tabBarBackground(new QWidget)
{
// setting object names for css
setObjectName("backgroundWidget");
m_splitter->setObjectName("centralTabWidget");
m_splitter->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
m_splitter->setHandleWidth(0);
QString sheet = QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/centerwidget.css"));
m_tabBarBackground->setStyleSheet(Theme::replaceCssColors(sheet));
m_tabBar->setObjectName("centralTabBar");
m_tabBar->setShape(QTabBar::RoundedEast);
m_tabBar->setDocumentMode(false);
// add a faketab to have the possibility to unselect all tabs
m_tabBar->addTab(QString());
selectFakeTab();
m_tabBarBackground->setObjectName("tabBarBackground");
connect(m_tabBar, &QTabBar::tabBarClicked, [this] (int index) {
if (index != -1)
updateSplitterSizes(index - fakeTab);
});
setLayout(new QHBoxLayout);
layout()->setContentsMargins(0, 0, 0, 0);
layout()->setSpacing(0);
layout()->addWidget(m_splitter);
m_tabBarBackground->setLayout(new QVBoxLayout);
m_tabBarBackground->layout()->setContentsMargins(0, 0, 0, 0);
m_tabBarBackground->layout()->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));
m_tabBarBackground->layout()->addWidget(m_tabBar);
auto horizontalButton = new QToolButton;
horizontalButton->setObjectName("centralTabBar");
horizontalButton->setIcon(Utils::Icon({{QLatin1String(":/qmldesigner/images/spliteditorvertically.png"),
Utils::Theme::IconsBaseColor}}).icon());
horizontalButton->setIconSize(QSize(8, 16));
connect(horizontalButton, &QToolButton::clicked, [this] () {
m_splitter->setOrientation(Qt::Vertical);
updateSplitterSizes();
selectFakeTab();
});
auto verticalButton = new QToolButton;
verticalButton->setObjectName("centralTabBar");
verticalButton->setIcon(Utils::Icon({{QLatin1String(":/qmldesigner/images/spliteditorhorizontally.png"),
Utils::Theme::IconsBaseColor}}).icon());
verticalButton->setIconSize(QSize(8, 16));
connect(verticalButton, &QToolButton::clicked, [this] () {
m_splitter->setOrientation(Qt::Horizontal);
updateSplitterSizes();
selectFakeTab();
});
m_tabBarBackground->layout()->addWidget(horizontalButton);
m_tabBarBackground->layout()->addWidget(verticalButton);
layout()->addWidget(m_tabBarBackground);
updateSplitButtons();
}
int SwitchSplitTabWidget::count() const
{
return m_splitter->count();
}
QWidget *SwitchSplitTabWidget::currentWidget() const
{
QList<int> sizes = m_splitter->sizes();
for (int i = 0; i < count(); ++i) {
if (sizes.at(i) > 0 && m_splitter->widget(i)->hasFocus())
return m_splitter->widget(i);
}
return nullptr;
}
void SwitchSplitTabWidget::updateSplitterSizes(int index)
{
QVector<int> splitterSizes(m_splitter->count());
int splitterFullSize = 0;
bool isHorizontal = m_splitter->orientation() == Qt::Horizontal;
for (int i = 0; i < m_splitter->count(); ++i) {
auto widget = m_splitter->widget(i);
splitterFullSize += isHorizontal ? widget->width() : widget->height();
}
if (index > -1) {
// collapse all but the one at index
splitterSizes.fill(0);
splitterSizes.replace(index, splitterFullSize);
} else {
// distribute full size among enabled tabs
int divisor = splitterSizes.count();
for (int i = 0; i < m_splitter->count(); ++i) {
if (!m_tabBar->isTabEnabled(i + fakeTab))
--divisor;
}
int splitSize = splitterFullSize / divisor;
for (int i = 0; i < m_splitter->count(); ++i)
splitterSizes.replace(i, m_tabBar->isTabEnabled(i + fakeTab) ? splitSize : 0);
}
m_splitter->setSizes(splitterSizes.toList());
}
int SwitchSplitTabWidget::addTab(QWidget *w, const QString &label)
{
m_splitter->addWidget(w);
const int newIndex = m_tabBar->addTab(label);
if (mode() == TabMode) {
m_tabBar->setCurrentIndex(newIndex);
updateSplitterSizes(newIndex - fakeTab);
}
if (mode() == SplitMode)
updateSplitterSizes();
updateSplitButtons();
return newIndex;
}
QWidget *SwitchSplitTabWidget::takeTabWidget(const int index)
{
if (index == -1 || index > count() - 1)
return nullptr;
QWidget *widget = m_splitter->widget(index);
widget->setParent(nullptr);
m_tabBar->removeTab(index + fakeTab);
// TODO: set which mode and tab is the current one
updateSplitButtons();
return widget;
}
void SwitchSplitTabWidget::switchTo(QWidget *widget)
{
if (widget == nullptr || currentWidget() == widget)
return;
const int widgetIndex = m_splitter->indexOf(widget);
Q_ASSERT(widgetIndex != -1);
if (mode() == TabMode) {
updateSplitterSizes(widgetIndex);
m_tabBar->setCurrentIndex(widgetIndex + fakeTab);
}
widget->setFocus();
}
void SwitchSplitTabWidget::updateSplitButtons()
{
const bool isTabBarNecessary = count() > 1;
m_tabBarBackground->setVisible(isTabBarNecessary);
}
void SwitchSplitTabWidget::selectFakeTab()
{
m_tabBar->setCurrentIndex(0);
}
SwitchSplitTabWidget::Mode SwitchSplitTabWidget::mode() const
{
const bool isTabBarNecessary = count() > 1;
const int fakeTabPosition = 0;
const int hasSelectedTab = m_tabBar->currentIndex() > fakeTabPosition;
// Note: When splitting the view by dragging from the side of the view, SplitMode is not detected
return (isTabBarNecessary && !hasSelectedTab) ? SplitMode : TabMode;
}
} // namespace QmlDesigner

View File

@@ -1,63 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2016 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 <QWidget>
QT_BEGIN_NAMESPACE
class QTabBar;
class QSplitter;
class QPushButton;
QT_END_NAMESPACE
namespace QmlDesigner {
class SwitchSplitTabWidget : public QWidget
{
Q_OBJECT
enum Mode { SplitMode, TabMode };
public:
explicit SwitchSplitTabWidget(QWidget *parent = nullptr);
int count() const;
QWidget *currentWidget() const;
int addTab(QWidget *widget, const QString &label);
QWidget *takeTabWidget(const int index);
void switchTo(QWidget *widget);
private:
void updateSplitterSizes(int index = -1);
void updateSplitButtons();
void selectFakeTab();
Mode mode() const;
QSplitter *m_splitter = nullptr;
QTabBar *m_tabBar = nullptr;
QWidget *m_tabBarBackground = nullptr;
const int fakeTab = 1;
};
} // namespace QmlDesigner