/* This file is part of KDDockWidgets. Copyright (C) 2018-2019 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com Author: Sérgio Martins This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /** * @file * @brief The QWidget counter part of TabWidgetWidget. Handles GUI while TabWidget handles state. * * @author Sérgio Martins \ */ #include "TabWidgetWidget_p.h" #include "Frame_p.h" #include "Config.h" using namespace KDDockWidgets; TabWidgetWidget::TabWidgetWidget(Frame *parent) : QTabWidget(parent) , TabWidget(this, parent) , m_tabBar(Config::self().frameWorkWidgetFactory()->createTabBar(this)) { setTabBar(m_tabBar); } TabBar *TabWidgetWidget::tabBar() const { return m_tabBar; } int TabWidgetWidget::numDockWidgets() const { return count(); } void TabWidgetWidget::removeDockWidget(DockWidgetBase *dw) { removeTab(indexOf(dw)); } int TabWidgetWidget::indexOfDockWidget(DockWidgetBase *dw) const { return indexOf(dw); } void TabWidgetWidget::paintEvent(QPaintEvent *p) { // When count is 1 we want to use the same background as a regular QWidget // Otherwise it looks weird because the colors change when transforming a QDockWidget into FloatingWindow if (count() > 1) QTabWidget::paintEvent(p); } void TabWidgetWidget::tabInserted(int) { onTabInserted(); } void TabWidgetWidget::tabRemoved(int) { onTabRemoved(); } bool TabWidgetWidget::isPositionDraggable(QPoint p) const { if (tabPosition() != QTabWidget::North) { qWarning() << Q_FUNC_INFO << "Not implemented yet. Only North is supported"; return false; } return p.y() >= 0 && p.y() <= QTabWidget::tabBar()->height(); } void TabWidgetWidget::setCurrentDockWidget(int index) { setCurrentIndex(index); } void TabWidgetWidget::insertDockWidget(int index, DockWidgetBase *dw, const QIcon &icon, const QString &title) { insertTab(index, dw, icon, title); } void TabWidgetWidget::setTabBarAutoHide(bool b) { QTabWidget::setTabBarAutoHide(b); } DockWidgetBase *TabWidgetWidget::dockwidgetAt(int index) const { return qobject_cast(widget(index)); } int TabWidgetWidget::currentIndex() const { return QTabWidget::currentIndex(); }