mirror of
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
synced 2024-11-15 13:15:43 +08:00
Refactorings to improve code, started to refactor secion content
This commit is contained in:
parent
938afb7357
commit
ad49745b18
@ -65,7 +65,7 @@ class QSplitter;
|
||||
//#define ADS_ANIMATION_DURATION 150
|
||||
|
||||
ADS_NAMESPACE_BEGIN
|
||||
class MainContainerWidget;
|
||||
class CMainContainerWidget;
|
||||
class SectionWidget;
|
||||
|
||||
enum DropArea
|
||||
@ -82,7 +82,7 @@ enum DropArea
|
||||
};
|
||||
Q_DECLARE_FLAGS(DropAreas, DropArea)
|
||||
|
||||
void deleteEmptySplitter(MainContainerWidget* container);
|
||||
void deleteEmptySplitter(CMainContainerWidget* container);
|
||||
QSplitter* findParentSplitter(QWidget* w);
|
||||
QSplitter* findImmediateSplitter(QWidget* w);
|
||||
|
||||
|
@ -35,7 +35,7 @@ namespace ads
|
||||
class SectionWidget;
|
||||
class DropOverlay;
|
||||
class InternalContentData;
|
||||
class MainContainerWidget;
|
||||
class CMainContainerWidget;
|
||||
|
||||
/**
|
||||
* @brief
|
||||
@ -51,7 +51,7 @@ class CContainerWidget : public QFrame
|
||||
friend class ContainerWidgetPrivate;
|
||||
|
||||
public:
|
||||
explicit CContainerWidget(MainContainerWidget* MainContainerWidget, QWidget *parent = nullptr);
|
||||
explicit CContainerWidget(CMainContainerWidget* MainContainerWidget, QWidget *parent = nullptr);
|
||||
virtual ~CContainerWidget();
|
||||
|
||||
/**
|
||||
@ -82,7 +82,7 @@ public:
|
||||
|
||||
void dumpLayout();
|
||||
|
||||
MainContainerWidget* mainContainerWidget() const {return m_MainContainerWidget;}
|
||||
CMainContainerWidget* mainContainerWidget() const {return m_MainContainerWidget;}
|
||||
|
||||
void addSectionWidget(SectionWidget* section);
|
||||
|
||||
@ -112,7 +112,7 @@ protected:
|
||||
QPointer<QSplitter> m_Splitter; // $mfreiholz: I'd like to remove this variable entirely,
|
||||
// because it changes during user interaction anyway.
|
||||
|
||||
MainContainerWidget* m_MainContainerWidget = 0;
|
||||
CMainContainerWidget* m_MainContainerWidget = 0;
|
||||
unsigned int m_zOrderIndex = 0;
|
||||
static unsigned int zOrderCounter;
|
||||
|
||||
|
@ -25,9 +25,9 @@ class QBoxLayout;
|
||||
#include "ads/SectionContent.h"
|
||||
|
||||
ADS_NAMESPACE_BEGIN
|
||||
class MainContainerWidget;
|
||||
class CMainContainerWidget;
|
||||
class SectionTitleWidget;
|
||||
class SectionContentWidget;
|
||||
class CSectionContentWidget;
|
||||
class InternalContentData;
|
||||
class SectionWidget;
|
||||
class CContainerWidget;
|
||||
@ -40,7 +40,7 @@ private:
|
||||
QPoint m_DragStartPosition;
|
||||
QPoint m_DragStartMousePosition;
|
||||
FloatingWidget* floatingWidget() const;
|
||||
MainContainerWidget* mainContainerWidget() const;
|
||||
CMainContainerWidget* mainContainerWidget() const;
|
||||
void moveFloatingWidget(QMouseEvent* ev);
|
||||
|
||||
private slots:
|
||||
@ -65,12 +65,12 @@ class FloatingWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
friend class MainContainerWidget;
|
||||
friend class CMainContainerWidget;
|
||||
friend class CFloatingTitleWidget;
|
||||
|
||||
public:
|
||||
FloatingWidget(MainContainerWidget* container, SectionContent::RefPtr sc, SectionTitleWidget* titleWidget, SectionContentWidget* contentWidget, QWidget* parent = NULL);
|
||||
FloatingWidget(MainContainerWidget* container, SectionWidget* sectionWidget);
|
||||
FloatingWidget(CMainContainerWidget* container, SectionContent::RefPtr sc, SectionTitleWidget* titleWidget, CSectionContentWidget* contentWidget, QWidget* parent = NULL);
|
||||
FloatingWidget(CMainContainerWidget* container, SectionWidget* sectionWidget);
|
||||
virtual ~FloatingWidget();
|
||||
|
||||
/**
|
||||
@ -79,7 +79,7 @@ public:
|
||||
unsigned int zOrderIndex() const;
|
||||
|
||||
CContainerWidget* containerWidget() const {return m_ContainerWidget;}
|
||||
MainContainerWidget* mainContainerWidget() const {return m_MainContainerWidget;}
|
||||
CMainContainerWidget* mainContainerWidget() const {return m_MainContainerWidget;}
|
||||
|
||||
public://private:
|
||||
bool takeContent(InternalContentData& data);
|
||||
@ -100,7 +100,7 @@ private slots:
|
||||
private:
|
||||
void setDraggingActive(bool Active);
|
||||
|
||||
MainContainerWidget* m_MainContainerWidget;
|
||||
CMainContainerWidget* m_MainContainerWidget;
|
||||
CContainerWidget* m_ContainerWidget;
|
||||
CContainerWidget* m_DropContainer;
|
||||
bool m_DraggingActive = false;
|
||||
|
@ -31,7 +31,7 @@
|
||||
ADS_NAMESPACE_BEGIN
|
||||
class SectionContent;
|
||||
class SectionTitleWidget;
|
||||
class SectionContentWidget;
|
||||
class CSectionContentWidget;
|
||||
|
||||
|
||||
class InternalContentData
|
||||
@ -45,7 +45,7 @@ public:
|
||||
|
||||
QSharedPointer<SectionContent> content;
|
||||
SectionTitleWidget* titleWidget;
|
||||
SectionContentWidget* contentWidget;
|
||||
CSectionContentWidget* contentWidget;
|
||||
};
|
||||
|
||||
|
||||
|
@ -46,7 +46,7 @@ class InternalContentData;
|
||||
* ContainerWidget is the main container to provide the docking
|
||||
* functionality. It manages multiple sections with all possible areas.
|
||||
*/
|
||||
class ADS_EXPORT_API MainContainerWidget : public CContainerWidget
|
||||
class ADS_EXPORT_API CMainContainerWidget : public CContainerWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@ -57,10 +57,11 @@ class ADS_EXPORT_API MainContainerWidget : public CContainerWidget
|
||||
friend class ContainerWidgetPrivate;
|
||||
friend class CFloatingTitleWidget;
|
||||
friend class CContainerWidget;
|
||||
friend class CSectionContentWidget;
|
||||
|
||||
public:
|
||||
explicit MainContainerWidget(QWidget *parent = nullptr);
|
||||
virtual ~MainContainerWidget();
|
||||
explicit CMainContainerWidget(QWidget *parent = nullptr);
|
||||
virtual ~CMainContainerWidget();
|
||||
|
||||
//
|
||||
// Public API
|
||||
|
@ -25,11 +25,11 @@ class QWidget;
|
||||
#include "ads/API.h"
|
||||
|
||||
ADS_NAMESPACE_BEGIN
|
||||
class MainContainerWidget;
|
||||
class CMainContainerWidget;
|
||||
|
||||
class ADS_EXPORT_API SectionContent
|
||||
{
|
||||
friend class MainContainerWidget;
|
||||
friend class CMainContainerWidget;
|
||||
|
||||
private:
|
||||
SectionContent();
|
||||
@ -58,13 +58,13 @@ public:
|
||||
* \param content The widget to use as content.
|
||||
* \return May return a invalid ref-pointer in case of invalid parameters.
|
||||
*/
|
||||
static RefPtr newSectionContent(const QString& uniqueName, MainContainerWidget* container, QWidget* title, QWidget* content);
|
||||
static RefPtr newSectionContent(const QString& uniqueName, CMainContainerWidget* container, QWidget* title, QWidget* content);
|
||||
|
||||
virtual ~SectionContent();
|
||||
int uid() const;
|
||||
QString uniqueName() const;
|
||||
MainContainerWidget* containerWidget() const;
|
||||
QWidget* titleWidget() const;
|
||||
CMainContainerWidget* containerWidget() const;
|
||||
QWidget* titleWidgetContent() const;
|
||||
QWidget* contentWidget() const;
|
||||
Flags flags() const;
|
||||
|
||||
@ -77,9 +77,9 @@ private:
|
||||
const int _uid;
|
||||
QString _uniqueName;
|
||||
|
||||
QPointer<MainContainerWidget> _containerWidget;
|
||||
QPointer<QWidget> _titleWidget;
|
||||
QPointer<QWidget> _contentWidget;
|
||||
QPointer<CMainContainerWidget> m_MainContainerWidget;
|
||||
QPointer<QWidget> m_TitleWidgetContent;
|
||||
QPointer<QWidget> m_ContentWidget;
|
||||
|
||||
// Optional attributes
|
||||
QString _title;
|
||||
|
@ -22,23 +22,64 @@
|
||||
#include "ads/API.h"
|
||||
#include "ads/SectionContent.h"
|
||||
|
||||
ADS_NAMESPACE_BEGIN
|
||||
class MainContainerWidget;
|
||||
namespace ads
|
||||
{
|
||||
class CMainContainerWidget;
|
||||
class SectionWidget;
|
||||
class SectionTitleWidget;
|
||||
|
||||
class SectionContentWidget : public QFrame
|
||||
|
||||
struct SectionContentWidgetPrivate;
|
||||
|
||||
|
||||
class CSectionContentWidget : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
friend class MainContainerWidget;
|
||||
private:
|
||||
SectionContentWidgetPrivate* d;
|
||||
friend class SectionContentWidgetPrivate;
|
||||
friend class CMainContainerWidget;
|
||||
|
||||
public:
|
||||
SectionContentWidget(SectionContent::RefPtr c, QWidget* parent = 0);
|
||||
virtual ~SectionContentWidget();
|
||||
enum Flag
|
||||
{
|
||||
None = 0,
|
||||
Closeable = 1,
|
||||
Maximizable = 2,
|
||||
AllFlags = Closeable | Maximizable
|
||||
};
|
||||
Q_DECLARE_FLAGS(Flags, Flag)
|
||||
|
||||
CSectionContentWidget(SectionContent::RefPtr c = SectionContent::RefPtr(), QWidget* parent = 0);
|
||||
virtual ~CSectionContentWidget();
|
||||
|
||||
/*!
|
||||
* Creates new content, associates it to <em>container</em> and takes ownership of
|
||||
* <em>title</em>- and <em>content</em>- widgets.
|
||||
* \param uniqueName An unique identifier across the entire process.
|
||||
* \param container The parent ContainerWidget in which this content will be active.
|
||||
* \param title The widget to use as title.
|
||||
* \param content The widget to use as content.
|
||||
* \return May return a invalid ref-pointer in case of invalid parameters.
|
||||
*/
|
||||
static CSectionContentWidget* newSectionContent(const QString& uniqueName,
|
||||
CMainContainerWidget* container, QWidget* title, QWidget* content);
|
||||
|
||||
int uid() const;
|
||||
QString uniqueName() const;
|
||||
CMainContainerWidget* containerWidget() const;
|
||||
QWidget* titleWidgetContent() const;
|
||||
QWidget* contentWidget() const;
|
||||
Flags flags() const;
|
||||
|
||||
QString visibleTitle() const;
|
||||
QString title() const;
|
||||
void setTitle(const QString& title);
|
||||
void setFlags(const Flags f);
|
||||
|
||||
private:
|
||||
SectionContent::RefPtr _content;
|
||||
};
|
||||
|
||||
ADS_NAMESPACE_END
|
||||
} // namespace ads
|
||||
#endif
|
||||
|
@ -27,7 +27,7 @@
|
||||
class QPushButton;
|
||||
|
||||
ADS_NAMESPACE_BEGIN
|
||||
class MainContainerWidget;
|
||||
class CMainContainerWidget;
|
||||
class SectionWidget;
|
||||
class FloatingWidget;
|
||||
|
||||
@ -36,7 +36,7 @@ class SectionTitleWidget : public QFrame
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(bool activeTab READ isActiveTab WRITE setActiveTab NOTIFY activeTabChanged)
|
||||
|
||||
friend class MainContainerWidget;
|
||||
friend class CMainContainerWidget;
|
||||
friend class SectionWidget;
|
||||
friend class CContainerWidget;
|
||||
|
||||
@ -66,7 +66,7 @@ protected:
|
||||
virtual void mouseMoveEvent(QMouseEvent* ev);
|
||||
|
||||
private:
|
||||
void startFloating(QMouseEvent* ev, MainContainerWidget* cw, SectionWidget* sectionwidget);
|
||||
void startFloating(QMouseEvent* ev, CMainContainerWidget* cw, SectionWidget* sectionwidget);
|
||||
void moveTab(QMouseEvent* ev);
|
||||
|
||||
signals:
|
||||
|
@ -33,9 +33,9 @@ class QMenu;
|
||||
#include "ads/FloatingWidget.h"
|
||||
|
||||
ADS_NAMESPACE_BEGIN
|
||||
class MainContainerWidget;
|
||||
class CMainContainerWidget;
|
||||
class SectionTitleWidget;
|
||||
class SectionContentWidget;
|
||||
class CSectionContentWidget;
|
||||
|
||||
// SectionWidget manages multiple instances of SectionContent.
|
||||
// It displays a title TAB, which is clickable and will switch to
|
||||
@ -43,10 +43,10 @@ class SectionContentWidget;
|
||||
class ADS_EXPORT_API SectionWidget : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
friend class MainContainerWidget;
|
||||
friend class CMainContainerWidget;
|
||||
friend class CContainerWidget;
|
||||
|
||||
explicit SectionWidget(MainContainerWidget* MainContainer, CContainerWidget* parent);
|
||||
explicit SectionWidget(CMainContainerWidget* MainContainer, CContainerWidget* parent);
|
||||
|
||||
public:
|
||||
virtual ~SectionWidget();
|
||||
@ -88,10 +88,10 @@ private slots:
|
||||
|
||||
private:
|
||||
const int _uid;
|
||||
QPointer<MainContainerWidget> m_MainContainerWidget;
|
||||
QPointer<CMainContainerWidget> m_MainContainerWidget;
|
||||
QList<SectionContent::RefPtr> m_Contents;
|
||||
QList<SectionTitleWidget*> m_TitleWidgets;
|
||||
QList<SectionContentWidget*> m_ContentWidgets;
|
||||
QList<CSectionContentWidget*> m_ContentWidgets;
|
||||
|
||||
QBoxLayout* _topLayout;
|
||||
QScrollArea* _tabsScrollArea;
|
||||
|
@ -44,7 +44,7 @@ static bool splitterContainsSectionWidget(QSplitter* splitter)
|
||||
return false;
|
||||
}
|
||||
|
||||
void deleteEmptySplitter(MainContainerWidget* container)
|
||||
void deleteEmptySplitter(CMainContainerWidget* container)
|
||||
{
|
||||
bool doAgain = false;
|
||||
do
|
||||
|
@ -20,6 +20,8 @@
|
||||
//============================================================================
|
||||
// INCLUDES
|
||||
//============================================================================
|
||||
#include <ads/MainContainerWidget.h>
|
||||
#include <ads/SectionContentWidget.h>
|
||||
#include "ads/ContainerWidget.h"
|
||||
|
||||
#include <QDebug>
|
||||
@ -39,17 +41,15 @@
|
||||
#include "ads/Internal.h"
|
||||
#include "ads/SectionWidget.h"
|
||||
#include "ads/SectionTitleWidget.h"
|
||||
#include "ads/SectionContentWidget.h"
|
||||
#include "ads/DropOverlay.h"
|
||||
#include "ads/Serialization.h"
|
||||
#include "ads/MainContainerWidget.h"
|
||||
|
||||
namespace ads
|
||||
{
|
||||
unsigned int CContainerWidget::zOrderCounter = 0;
|
||||
|
||||
//============================================================================
|
||||
CContainerWidget::CContainerWidget(MainContainerWidget* MainContainer, QWidget *parent)
|
||||
CContainerWidget::CContainerWidget(CMainContainerWidget* MainContainer, QWidget *parent)
|
||||
: QFrame(parent),
|
||||
m_MainContainerWidget(MainContainer)
|
||||
{
|
||||
@ -185,7 +185,7 @@ void CContainerWidget::dropIntoContainer(FloatingWidget* FloatingWidget, DropAre
|
||||
{
|
||||
std::cout << "Create new splitter" << std::endl;
|
||||
// we have no splitter yet - let us create one
|
||||
QSplitter* sp = MainContainerWidget::newSplitter(FloatingMainSplitter->orientation());
|
||||
QSplitter* sp = CMainContainerWidget::newSplitter(FloatingMainSplitter->orientation());
|
||||
if (l->count() > 0)
|
||||
{
|
||||
qWarning() << "Still items in layout. This should never happen.";
|
||||
@ -221,7 +221,7 @@ void CContainerWidget::dropIntoContainer(FloatingWidget* FloatingWidget, DropAre
|
||||
{
|
||||
std::cout << "Splitter with wrong orientation" << std::endl;
|
||||
// we have a splitter but with the wrong orientation
|
||||
QSplitter* sp = MainContainerWidget::newSplitter(orientation);
|
||||
QSplitter* sp = CMainContainerWidget::newSplitter(orientation);
|
||||
if (append)
|
||||
{
|
||||
QLayoutItem* li = l->replaceWidget(OldSplitter, sp);
|
||||
@ -313,7 +313,7 @@ void CContainerWidget::dropIntoSection(FloatingWidget* FloatingWidget,
|
||||
else
|
||||
{
|
||||
std::cout << "targetSectionSplitter->orientation() != Orientation" << std::endl;
|
||||
QSplitter* s = MainContainerWidget::newSplitter(Orientation);
|
||||
QSplitter* s = CMainContainerWidget::newSplitter(Orientation);
|
||||
if (FloatingMainSplitter->orientation() == Orientation || FloatingMainSplitter->count() == 1)
|
||||
{
|
||||
std::cout << "FloatingMainSplitter->orientation() == Orientation || FloatingMainSplitter->count() == 1" << std::endl;
|
||||
@ -431,7 +431,7 @@ void CContainerWidget::addSectionWidget(SectionWidget* section)
|
||||
// Create default splitter.
|
||||
if (!m_Splitter)
|
||||
{
|
||||
m_Splitter = MainContainerWidget::newSplitter(m_Orientation);
|
||||
m_Splitter = CMainContainerWidget::newSplitter(m_Orientation);
|
||||
m_MainLayout->addWidget(m_Splitter, 0, 0);
|
||||
}
|
||||
if (m_Splitter->indexOf(section) != -1)
|
||||
@ -459,7 +459,7 @@ SectionWidget* CContainerWidget::dropContentOuterHelper(QLayout* l, const Intern
|
||||
QSplitter* oldsp = findImmediateSplitter(this);
|
||||
if (!oldsp)
|
||||
{
|
||||
QSplitter* sp = MainContainerWidget::newSplitter(orientation);
|
||||
QSplitter* sp = CMainContainerWidget::newSplitter(orientation);
|
||||
if (l->count() > 0)
|
||||
{
|
||||
qWarning() << "Still items in layout. This should never happen.";
|
||||
@ -480,7 +480,7 @@ SectionWidget* CContainerWidget::dropContentOuterHelper(QLayout* l, const Intern
|
||||
}
|
||||
else
|
||||
{
|
||||
QSplitter* sp = MainContainerWidget::newSplitter(orientation);
|
||||
QSplitter* sp = CMainContainerWidget::newSplitter(orientation);
|
||||
if (append)
|
||||
{
|
||||
QLayoutItem* li = l->replaceWidget(oldsp, sp);
|
||||
@ -514,7 +514,7 @@ SectionWidget* CContainerWidget::insertNewSectionWidget(
|
||||
else
|
||||
{
|
||||
const int index = targetSectionSplitter->indexOf(targetSection);
|
||||
QSplitter* s = MainContainerWidget::newSplitter(Orientation);
|
||||
QSplitter* s = CMainContainerWidget::newSplitter(Orientation);
|
||||
s->addWidget(sw);
|
||||
s->addWidget(targetSection);
|
||||
targetSectionSplitter->insertWidget(index, s);
|
||||
@ -531,7 +531,7 @@ SectionWidget* CContainerWidget::addSectionContent(const SectionContent::RefPtr&
|
||||
InternalContentData data;
|
||||
data.content = sc;
|
||||
data.titleWidget = new SectionTitleWidget(sc, NULL);
|
||||
data.contentWidget = new SectionContentWidget(sc, NULL);
|
||||
data.contentWidget = new CSectionContentWidget(sc, NULL);
|
||||
|
||||
connect(data.titleWidget, SIGNAL(activeTabChanged()), this, SLOT(onActiveTabChanged()));
|
||||
return dropContent(data, sw, area, false);
|
||||
|
@ -17,6 +17,7 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include <ads/MainContainerWidget.h>
|
||||
#include <ads/SectionContentWidget.h>
|
||||
#include "ads/FloatingWidget.h"
|
||||
|
||||
#include <QBoxLayout>
|
||||
@ -28,7 +29,6 @@
|
||||
#include <QGuiApplication>
|
||||
|
||||
#include "ads/SectionTitleWidget.h"
|
||||
#include "ads/SectionContentWidget.h"
|
||||
#include "ads/Internal.h"
|
||||
#include "ads/SectionWidget.h"
|
||||
#include "ads/ContainerWidget.h"
|
||||
@ -92,7 +92,7 @@ FloatingWidget* CFloatingTitleWidget::floatingWidget() const
|
||||
return dynamic_cast<FloatingWidget*>(parentWidget());
|
||||
}
|
||||
|
||||
MainContainerWidget* CFloatingTitleWidget::mainContainerWidget() const
|
||||
CMainContainerWidget* CFloatingTitleWidget::mainContainerWidget() const
|
||||
{
|
||||
return floatingWidget()->mainContainerWidget();
|
||||
}
|
||||
@ -154,7 +154,7 @@ void CFloatingTitleWidget::onMaximizeButtonClicked()
|
||||
|
||||
|
||||
|
||||
FloatingWidget::FloatingWidget(MainContainerWidget* MainContainer, SectionContent::RefPtr sc, SectionTitleWidget* titleWidget, SectionContentWidget* contentWidget, QWidget* parent) :
|
||||
FloatingWidget::FloatingWidget(CMainContainerWidget* MainContainer, SectionContent::RefPtr sc, SectionTitleWidget* titleWidget, CSectionContentWidget* contentWidget, QWidget* parent) :
|
||||
QWidget(MainContainer, Qt::Window),
|
||||
m_MainContainerWidget(MainContainer)
|
||||
{
|
||||
@ -178,7 +178,7 @@ FloatingWidget::FloatingWidget(MainContainerWidget* MainContainer, SectionConten
|
||||
}
|
||||
|
||||
|
||||
FloatingWidget::FloatingWidget(MainContainerWidget* MainContainer, SectionWidget* sectionWidget)
|
||||
FloatingWidget::FloatingWidget(CMainContainerWidget* MainContainer, SectionWidget* sectionWidget)
|
||||
: QWidget(MainContainer, Qt::Window),
|
||||
m_MainContainerWidget(MainContainer)
|
||||
{
|
||||
@ -338,7 +338,7 @@ void FloatingWidget::titleMouseReleaseEvent()
|
||||
}
|
||||
|
||||
std::cout << "Dropped" << std::endl;
|
||||
MainContainerWidget* MainContainerWidget = mainContainerWidget();
|
||||
CMainContainerWidget* MainContainerWidget = mainContainerWidget();
|
||||
m_DropContainer->dropFloatingWidget(this, QCursor::pos());
|
||||
MainContainerWidget->dropOverlay()->hideDropOverlay();
|
||||
MainContainerWidget->sectionDropOverlay()->hideDropOverlay();
|
||||
@ -357,7 +357,7 @@ void FloatingWidget::updateDropOverlays(const QPoint& GlobalPos)
|
||||
{
|
||||
return;
|
||||
}
|
||||
MainContainerWidget* MainContainerWidget = mainContainerWidget();
|
||||
CMainContainerWidget* MainContainerWidget = mainContainerWidget();
|
||||
auto Containers = MainContainerWidget->m_Containers;
|
||||
CContainerWidget* TopContainer = nullptr;
|
||||
for (auto ContainerWidget : Containers)
|
||||
|
@ -16,7 +16,7 @@
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
******************************************************************************/
|
||||
|
||||
#include <ads/MainContainerWidget.h>
|
||||
#include <ads/SectionContentWidget.h>
|
||||
#include <QDebug>
|
||||
#include <QPaintEvent>
|
||||
#include <QPainter>
|
||||
@ -32,16 +32,16 @@
|
||||
#include "ads/Internal.h"
|
||||
#include "ads/SectionWidget.h"
|
||||
#include "ads/SectionTitleWidget.h"
|
||||
#include "ads/SectionContentWidget.h"
|
||||
#include "ads/DropOverlay.h"
|
||||
#include "ads/Serialization.h"
|
||||
|
||||
#include <iostream>
|
||||
#include "../include/ads/MainContainerWidget.h"
|
||||
|
||||
ADS_NAMESPACE_BEGIN
|
||||
|
||||
|
||||
QSplitter* MainContainerWidget::newSplitter(Qt::Orientation orientation, QWidget* parent)
|
||||
QSplitter* CMainContainerWidget::newSplitter(Qt::Orientation orientation, QWidget* parent)
|
||||
{
|
||||
QSplitter* s = new QSplitter(orientation, parent);
|
||||
s->setProperty("ads-splitter", QVariant(true));
|
||||
@ -51,7 +51,7 @@ QSplitter* MainContainerWidget::newSplitter(Qt::Orientation orientation, QWidget
|
||||
}
|
||||
|
||||
|
||||
MainContainerWidget::MainContainerWidget(QWidget *parent) :
|
||||
CMainContainerWidget::CMainContainerWidget(QWidget *parent) :
|
||||
CContainerWidget(this, parent)
|
||||
{
|
||||
m_SectionDropOverlay = new DropOverlay(this, DropOverlay::ModeSectionOverlay);
|
||||
@ -61,7 +61,7 @@ MainContainerWidget::MainContainerWidget(QWidget *parent) :
|
||||
m_Containers.append(this);
|
||||
}
|
||||
|
||||
MainContainerWidget::~MainContainerWidget()
|
||||
CMainContainerWidget::~CMainContainerWidget()
|
||||
{
|
||||
// Note: It's required to delete in 2 steps
|
||||
// Remove from list, and then delete.
|
||||
@ -83,7 +83,7 @@ MainContainerWidget::~MainContainerWidget()
|
||||
}
|
||||
|
||||
|
||||
bool MainContainerWidget::removeSectionContent(const SectionContent::RefPtr& sc)
|
||||
bool CMainContainerWidget::removeSectionContent(const SectionContent::RefPtr& sc)
|
||||
{
|
||||
ADS_Expects(!sc.isNull());
|
||||
|
||||
@ -128,7 +128,7 @@ bool MainContainerWidget::removeSectionContent(const SectionContent::RefPtr& sc)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MainContainerWidget::showSectionContent(const SectionContent::RefPtr& sc)
|
||||
bool CMainContainerWidget::showSectionContent(const SectionContent::RefPtr& sc)
|
||||
{
|
||||
ADS_Expects(!sc.isNull());
|
||||
|
||||
@ -183,7 +183,7 @@ bool MainContainerWidget::showSectionContent(const SectionContent::RefPtr& sc)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MainContainerWidget::hideSectionContent(const SectionContent::RefPtr& sc)
|
||||
bool CMainContainerWidget::hideSectionContent(const SectionContent::RefPtr& sc)
|
||||
{
|
||||
ADS_Expects(!sc.isNull());
|
||||
|
||||
@ -239,7 +239,7 @@ bool MainContainerWidget::hideSectionContent(const SectionContent::RefPtr& sc)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MainContainerWidget::raiseSectionContent(const SectionContent::RefPtr& sc)
|
||||
bool CMainContainerWidget::raiseSectionContent(const SectionContent::RefPtr& sc)
|
||||
{
|
||||
ADS_Expects(!sc.isNull());
|
||||
|
||||
@ -273,7 +273,7 @@ bool MainContainerWidget::raiseSectionContent(const SectionContent::RefPtr& sc)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MainContainerWidget::isSectionContentVisible(const SectionContent::RefPtr& sc)
|
||||
bool CMainContainerWidget::isSectionContentVisible(const SectionContent::RefPtr& sc)
|
||||
{
|
||||
ADS_Expects(!sc.isNull());
|
||||
|
||||
@ -304,7 +304,7 @@ bool MainContainerWidget::isSectionContentVisible(const SectionContent::RefPtr&
|
||||
return false;
|
||||
}
|
||||
|
||||
QMenu* MainContainerWidget::createContextMenu() const
|
||||
QMenu* CMainContainerWidget::createContextMenu() const
|
||||
{
|
||||
// Fill map with actions (sorted by key!)
|
||||
QMap<QString, QAction*> actions;
|
||||
@ -367,7 +367,7 @@ QMenu* MainContainerWidget::createContextMenu() const
|
||||
return m;
|
||||
}
|
||||
|
||||
QByteArray MainContainerWidget::saveState() const
|
||||
QByteArray CMainContainerWidget::saveState() const
|
||||
{
|
||||
ADS_NS_SER::InMemoryWriter writer;
|
||||
|
||||
@ -390,7 +390,7 @@ QByteArray MainContainerWidget::saveState() const
|
||||
return writer.toByteArray();
|
||||
}
|
||||
|
||||
bool MainContainerWidget::restoreState(const QByteArray& data)
|
||||
bool CMainContainerWidget::restoreState(const QByteArray& data)
|
||||
{
|
||||
if (data.isEmpty())
|
||||
return false;
|
||||
@ -409,7 +409,7 @@ bool MainContainerWidget::restoreState(const QByteArray& data)
|
||||
}
|
||||
|
||||
|
||||
QList<SectionContent::RefPtr> MainContainerWidget::contents() const
|
||||
QList<SectionContent::RefPtr> CMainContainerWidget::contents() const
|
||||
{
|
||||
QList<SectionContent::WeakPtr> wl = m_SectionContentIdMap.values();
|
||||
QList<SectionContent::RefPtr> sl;
|
||||
@ -422,13 +422,13 @@ QList<SectionContent::RefPtr> MainContainerWidget::contents() const
|
||||
return sl;
|
||||
}
|
||||
|
||||
QPointer<DropOverlay> MainContainerWidget::sectionDropOverlay() const
|
||||
QPointer<DropOverlay> CMainContainerWidget::sectionDropOverlay() const
|
||||
{
|
||||
return m_SectionDropOverlay;
|
||||
}
|
||||
|
||||
|
||||
QPointer<DropOverlay> MainContainerWidget::dropOverlay() const
|
||||
QPointer<DropOverlay> CMainContainerWidget::dropOverlay() const
|
||||
{
|
||||
return m_ContainerDropOverlay;
|
||||
}
|
||||
@ -437,7 +437,7 @@ QPointer<DropOverlay> MainContainerWidget::dropOverlay() const
|
||||
// PRIVATE API BEGINS HERE
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
QByteArray MainContainerWidget::saveHierarchy() const
|
||||
QByteArray CMainContainerWidget::saveHierarchy() const
|
||||
{
|
||||
/*
|
||||
# Data Format
|
||||
@ -524,7 +524,7 @@ QByteArray MainContainerWidget::saveHierarchy() const
|
||||
return ba;
|
||||
}
|
||||
|
||||
void MainContainerWidget::saveFloatingWidgets(QDataStream& out) const
|
||||
void CMainContainerWidget::saveFloatingWidgets(QDataStream& out) const
|
||||
{
|
||||
out << m_Floatings.count();
|
||||
for (int i = 0; i < m_Floatings.count(); ++i)
|
||||
@ -536,7 +536,7 @@ void MainContainerWidget::saveFloatingWidgets(QDataStream& out) const
|
||||
}
|
||||
}
|
||||
|
||||
void MainContainerWidget::saveSectionWidgets(QDataStream& out, QWidget* widget) const
|
||||
void CMainContainerWidget::saveSectionWidgets(QDataStream& out, QWidget* widget) const
|
||||
{
|
||||
QSplitter* sp = NULL;
|
||||
SectionWidget* sw = NULL;
|
||||
@ -599,7 +599,7 @@ void MainContainerWidget::saveSectionWidgets(QDataStream& out, QWidget* widget)
|
||||
}
|
||||
}
|
||||
|
||||
bool MainContainerWidget::saveSectionIndex(ADS_NS_SER::SectionIndexData& sid) const
|
||||
bool CMainContainerWidget::saveSectionIndex(ADS_NS_SER::SectionIndexData& sid) const
|
||||
{
|
||||
if (m_Sections.count() <= 0)
|
||||
return false;
|
||||
@ -627,7 +627,7 @@ bool MainContainerWidget::saveSectionIndex(ADS_NS_SER::SectionIndexData& sid) co
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MainContainerWidget::restoreHierarchy(const QByteArray& data)
|
||||
bool CMainContainerWidget::restoreHierarchy(const QByteArray& data)
|
||||
{
|
||||
QDataStream in(data);
|
||||
in.setVersion(QDataStream::Qt_4_5);
|
||||
@ -795,7 +795,7 @@ bool MainContainerWidget::restoreHierarchy(const QByteArray& data)
|
||||
return success;
|
||||
}
|
||||
|
||||
bool MainContainerWidget::restoreFloatingWidgets(QDataStream& in, int version, QList<FloatingWidget*>& floatings)
|
||||
bool CMainContainerWidget::restoreFloatingWidgets(QDataStream& in, int version, QList<FloatingWidget*>& floatings)
|
||||
{
|
||||
Q_UNUSED(version)
|
||||
|
||||
@ -838,7 +838,7 @@ bool MainContainerWidget::restoreFloatingWidgets(QDataStream& in, int version, Q
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MainContainerWidget::restoreSectionWidgets(QDataStream& in, int version, QSplitter* currentSplitter, QList<SectionWidget*>& sections, QList<SectionContent::RefPtr>& contentsToHide)
|
||||
bool CMainContainerWidget::restoreSectionWidgets(QDataStream& in, int version, QSplitter* currentSplitter, QList<SectionWidget*>& sections, QList<SectionContent::RefPtr>& contentsToHide)
|
||||
{
|
||||
if (in.atEnd())
|
||||
return true;
|
||||
@ -936,7 +936,7 @@ bool MainContainerWidget::restoreSectionWidgets(QDataStream& in, int version, QS
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MainContainerWidget::takeContent(const SectionContent::RefPtr& sc, InternalContentData& data)
|
||||
bool CMainContainerWidget::takeContent(const SectionContent::RefPtr& sc, InternalContentData& data)
|
||||
{
|
||||
ADS_Expects(!sc.isNull());
|
||||
|
||||
@ -967,7 +967,7 @@ bool MainContainerWidget::takeContent(const SectionContent::RefPtr& sc, Internal
|
||||
}
|
||||
|
||||
|
||||
void MainContainerWidget::onActionToggleSectionContentVisibility(bool visible)
|
||||
void CMainContainerWidget::onActionToggleSectionContentVisibility(bool visible)
|
||||
{
|
||||
QAction* a = qobject_cast<QAction*>(sender());
|
||||
if (!a)
|
||||
@ -986,13 +986,13 @@ void MainContainerWidget::onActionToggleSectionContentVisibility(bool visible)
|
||||
}
|
||||
|
||||
|
||||
void MainContainerWidget::hideContainerOverlay()
|
||||
void CMainContainerWidget::hideContainerOverlay()
|
||||
{
|
||||
m_ContainerDropOverlay->hideDropOverlay();
|
||||
}
|
||||
|
||||
|
||||
void MainContainerWidget::moveFloatingWidget(const QPoint& TargetPos)
|
||||
void CMainContainerWidget::moveFloatingWidget(const QPoint& TargetPos)
|
||||
{
|
||||
QPoint MousePos = mapFromGlobal(QCursor::pos());
|
||||
|
||||
|
@ -32,7 +32,7 @@ SectionContent::SectionContent() :
|
||||
{
|
||||
}
|
||||
|
||||
SectionContent::RefPtr SectionContent::newSectionContent(const QString& uniqueName, MainContainerWidget* container, QWidget* title, QWidget* content)
|
||||
SectionContent::RefPtr SectionContent::newSectionContent(const QString& uniqueName, CMainContainerWidget* container, QWidget* title, QWidget* content)
|
||||
{
|
||||
auto SectionContentNameMap = container->m_SectionContentNameMap;
|
||||
auto SectionContentIdMap = container->m_SectionContentIdMap;
|
||||
@ -55,9 +55,9 @@ SectionContent::RefPtr SectionContent::newSectionContent(const QString& uniqueNa
|
||||
|
||||
QSharedPointer<SectionContent> sc(new SectionContent());
|
||||
sc->_uniqueName = uniqueName;
|
||||
sc->_containerWidget = container;
|
||||
sc->_titleWidget = title;
|
||||
sc->_contentWidget = content;
|
||||
sc->m_MainContainerWidget = container;
|
||||
sc->m_TitleWidgetContent = title;
|
||||
sc->m_ContentWidget = content;
|
||||
|
||||
SectionContentIdMap.insert(sc->uid(), sc);
|
||||
SectionContentNameMap.insert(sc->uniqueName(), sc);
|
||||
@ -66,16 +66,16 @@ SectionContent::RefPtr SectionContent::newSectionContent(const QString& uniqueNa
|
||||
|
||||
SectionContent::~SectionContent()
|
||||
{
|
||||
auto SectionContentNameMap = _containerWidget->m_SectionContentNameMap;
|
||||
auto SectionContentIdMap = _containerWidget->m_SectionContentIdMap;
|
||||
auto SectionContentNameMap = m_MainContainerWidget->m_SectionContentNameMap;
|
||||
auto SectionContentIdMap = m_MainContainerWidget->m_SectionContentIdMap;
|
||||
|
||||
if (_containerWidget)
|
||||
if (m_MainContainerWidget)
|
||||
{
|
||||
SectionContentIdMap.remove(_uid);
|
||||
SectionContentNameMap.remove(_uniqueName);
|
||||
}
|
||||
delete _titleWidget;
|
||||
delete _contentWidget;
|
||||
delete m_TitleWidgetContent;
|
||||
delete m_ContentWidget;
|
||||
}
|
||||
|
||||
int SectionContent::uid() const
|
||||
@ -88,19 +88,19 @@ QString SectionContent::uniqueName() const
|
||||
return _uniqueName;
|
||||
}
|
||||
|
||||
MainContainerWidget* SectionContent::containerWidget() const
|
||||
CMainContainerWidget* SectionContent::containerWidget() const
|
||||
{
|
||||
return _containerWidget;
|
||||
return m_MainContainerWidget;
|
||||
}
|
||||
|
||||
QWidget* SectionContent::titleWidget() const
|
||||
QWidget* SectionContent::titleWidgetContent() const
|
||||
{
|
||||
return _titleWidget;
|
||||
return m_TitleWidgetContent;
|
||||
}
|
||||
|
||||
QWidget* SectionContent::contentWidget() const
|
||||
{
|
||||
return _contentWidget;
|
||||
return m_ContentWidget;
|
||||
}
|
||||
|
||||
SectionContent::Flags SectionContent::flags() const
|
||||
|
@ -16,14 +16,49 @@
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
******************************************************************************/
|
||||
|
||||
#include "ads/SectionContentWidget.h"
|
||||
|
||||
#include <ads/MainContainerWidget.h>
|
||||
#include <QBoxLayout>
|
||||
#include "../include/ads/SectionContentWidget.h"
|
||||
#include "../include/ads/SectionTitleWidget.h"
|
||||
|
||||
ADS_NAMESPACE_BEGIN
|
||||
namespace ads
|
||||
{
|
||||
struct SectionContentWidgetPrivate
|
||||
{
|
||||
CSectionContentWidget* _this;
|
||||
int Uid;
|
||||
QString UniqueName;
|
||||
QPointer<CMainContainerWidget> MainContainerWidget;
|
||||
QPointer<QWidget> TitleWidgetContent;
|
||||
QPointer<QWidget> ContentWidget;
|
||||
// Optional attributes
|
||||
QString Title;
|
||||
CSectionContentWidget::Flags Flags = CSectionContentWidget::AllFlags;
|
||||
|
||||
SectionContentWidget::SectionContentWidget(SectionContent::RefPtr c, QWidget* parent) :
|
||||
|
||||
|
||||
/* Note: This method could be a problem in static build environment
|
||||
* since it may begin with 0 for every module which uses ADS.
|
||||
*/
|
||||
static int GetNextUid()
|
||||
{
|
||||
static int NextUid = 0;
|
||||
return ++NextUid;
|
||||
}
|
||||
|
||||
|
||||
SectionContentWidgetPrivate(CSectionContentWidget* _public)
|
||||
: _this(_public),
|
||||
Uid(GetNextUid())
|
||||
{
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
CSectionContentWidget::CSectionContentWidget(SectionContent::RefPtr c, QWidget* parent) :
|
||||
QFrame(parent),
|
||||
d(new SectionContentWidgetPrivate(this)),
|
||||
_content(c)
|
||||
{
|
||||
QBoxLayout* l = new QBoxLayout(QBoxLayout::TopToBottom);
|
||||
@ -33,9 +68,100 @@ SectionContentWidget::SectionContentWidget(SectionContent::RefPtr c, QWidget* pa
|
||||
setLayout(l);
|
||||
}
|
||||
|
||||
SectionContentWidget::~SectionContentWidget()
|
||||
|
||||
CSectionContentWidget* CSectionContentWidget::newSectionContent(const QString& uniqueName,
|
||||
CMainContainerWidget* container, QWidget* title, QWidget* content)
|
||||
{
|
||||
layout()->removeWidget(_content->contentWidget());
|
||||
auto SectionContentNameMap = container->m_SectionContentNameMap;
|
||||
auto SectionContentIdMap = container->m_SectionContentIdMap;
|
||||
|
||||
if (uniqueName.isEmpty())
|
||||
{
|
||||
qFatal("Can not create SectionContent with empty uniqueName");
|
||||
return nullptr;
|
||||
}
|
||||
else if (SectionContentNameMap.contains(uniqueName))
|
||||
{
|
||||
qFatal("Can not create SectionContent with already used uniqueName");
|
||||
return nullptr;
|
||||
}
|
||||
else if (!container || !title || !content)
|
||||
{
|
||||
qFatal("Can not create SectionContent with NULL values");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CSectionContentWidget* sc(new CSectionContentWidget());
|
||||
sc->d->UniqueName = uniqueName;
|
||||
sc->d->MainContainerWidget = container;
|
||||
sc->d->TitleWidgetContent = title;
|
||||
sc->d->ContentWidget = content;
|
||||
|
||||
//SectionContentIdMap.insert(sc->uid(), sc);
|
||||
//SectionContentNameMap.insert(sc->uniqueName(), sc);
|
||||
return sc;
|
||||
}
|
||||
|
||||
ADS_NAMESPACE_END
|
||||
CSectionContentWidget::~CSectionContentWidget()
|
||||
{
|
||||
layout()->removeWidget(_content->contentWidget());
|
||||
delete d;
|
||||
}
|
||||
|
||||
|
||||
int CSectionContentWidget::uid() const
|
||||
{
|
||||
return d->Uid;
|
||||
}
|
||||
|
||||
|
||||
QString CSectionContentWidget::uniqueName() const
|
||||
{
|
||||
return d->UniqueName;
|
||||
}
|
||||
|
||||
|
||||
CMainContainerWidget* CSectionContentWidget::containerWidget() const
|
||||
{
|
||||
return d->MainContainerWidget;
|
||||
}
|
||||
|
||||
QWidget* CSectionContentWidget::titleWidgetContent() const
|
||||
{
|
||||
return d->TitleWidgetContent.data();
|
||||
}
|
||||
|
||||
|
||||
QWidget* CSectionContentWidget::contentWidget() const
|
||||
{
|
||||
return d->ContentWidget;
|
||||
}
|
||||
|
||||
CSectionContentWidget::Flags CSectionContentWidget::flags() const
|
||||
{
|
||||
return d->Flags;
|
||||
}
|
||||
|
||||
|
||||
QString CSectionContentWidget::visibleTitle() const
|
||||
{
|
||||
return d->Title.isEmpty() ? d->UniqueName : d->Title;
|
||||
}
|
||||
|
||||
|
||||
QString CSectionContentWidget::title() const
|
||||
{
|
||||
return d->Title;
|
||||
}
|
||||
|
||||
void CSectionContentWidget::setTitle(const QString& title)
|
||||
{
|
||||
d->Title = title;
|
||||
}
|
||||
|
||||
void CSectionContentWidget::setFlags(const Flags f)
|
||||
{
|
||||
d->Flags = f;
|
||||
}
|
||||
|
||||
} // namespace ads
|
||||
|
@ -16,6 +16,7 @@
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
******************************************************************************/
|
||||
|
||||
#include <ads/MainContainerWidget.h>
|
||||
#include "ads/SectionTitleWidget.h"
|
||||
|
||||
#include <QString>
|
||||
@ -36,8 +37,6 @@
|
||||
#include "ads/SectionContent.h"
|
||||
#include "ads/SectionWidget.h"
|
||||
#include "ads/FloatingWidget.h"
|
||||
#include <ads/MainContainerWidget.h>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
ADS_NAMESPACE_BEGIN
|
||||
@ -51,14 +50,14 @@ SectionTitleWidget::SectionTitleWidget(SectionContent::RefPtr content, QWidget*
|
||||
QBoxLayout* l = new QBoxLayout(QBoxLayout::LeftToRight);
|
||||
l->setContentsMargins(0, 0, 0, 0);
|
||||
l->setSpacing(0);
|
||||
l->addWidget(content->titleWidget());
|
||||
l->addWidget(content->titleWidgetContent());
|
||||
setLayout(l);
|
||||
}
|
||||
|
||||
|
||||
SectionTitleWidget::~SectionTitleWidget()
|
||||
{
|
||||
layout()->removeWidget(m_Content->titleWidget());
|
||||
layout()->removeWidget(m_Content->titleWidgetContent());
|
||||
}
|
||||
|
||||
bool SectionTitleWidget::isActiveTab() const
|
||||
@ -130,7 +129,7 @@ void SectionTitleWidget::mouseReleaseEvent(QMouseEvent* ev)
|
||||
{
|
||||
SectionWidget* section = nullptr;
|
||||
CContainerWidget* cw = findParentContainerWidget(this);
|
||||
MainContainerWidget* mcw = cw->mainContainerWidget();
|
||||
CMainContainerWidget* mcw = cw->mainContainerWidget();
|
||||
std::cout << "SectionTitleWidget::mouseReleaseEvent" << std::endl;
|
||||
|
||||
//m_FloatingWidget.clear();
|
||||
@ -164,7 +163,7 @@ void SectionTitleWidget::mouseReleaseEvent(QMouseEvent* ev)
|
||||
}
|
||||
|
||||
|
||||
void SectionTitleWidget::startFloating(QMouseEvent* ev, MainContainerWidget* cw, SectionWidget* sectionwidget)
|
||||
void SectionTitleWidget::startFloating(QMouseEvent* ev, CMainContainerWidget* cw, SectionWidget* sectionwidget)
|
||||
{
|
||||
std::cout << "SectionTitleWidget::startFloating" << std::endl;
|
||||
|
||||
@ -246,7 +245,7 @@ void SectionTitleWidget::mouseMoveEvent(QMouseEvent* ev)
|
||||
|
||||
// TODO make a member with the main container widget and assign it on
|
||||
// creation
|
||||
MainContainerWidget* MainContainerWidget = findParentContainerWidget(this)->mainContainerWidget();
|
||||
CMainContainerWidget* MainContainerWidget = findParentContainerWidget(this)->mainContainerWidget();
|
||||
ev->accept();
|
||||
|
||||
|
||||
|
@ -44,13 +44,13 @@
|
||||
#include "ads/DropOverlay.h"
|
||||
#include "ads/SectionContent.h"
|
||||
#include "ads/SectionTitleWidget.h"
|
||||
#include "ads/SectionContentWidget.h"
|
||||
#include <ads/SectionContentWidget.h>
|
||||
#include "ads/FloatingWidget.h"
|
||||
#include <ads/MainContainerWidget.h>
|
||||
|
||||
ADS_NAMESPACE_BEGIN
|
||||
|
||||
SectionWidget::SectionWidget(MainContainerWidget* MainContainer, CContainerWidget* parent) :
|
||||
SectionWidget::SectionWidget(CMainContainerWidget* MainContainer, CContainerWidget* parent) :
|
||||
QFrame(parent),
|
||||
_uid(GetNextUid()),
|
||||
m_MainContainerWidget(MainContainer),
|
||||
@ -174,7 +174,7 @@ void SectionWidget::addContent(const SectionContent::RefPtr& c)
|
||||
_tabsLayout->insertWidget(_tabsLayout->count() - _tabsLayoutInitCount, title);
|
||||
QObject::connect(title, SIGNAL(clicked()), this, SLOT(onSectionTitleClicked()));
|
||||
|
||||
SectionContentWidget* content = new SectionContentWidget(c, NULL);
|
||||
CSectionContentWidget* content = new CSectionContentWidget(c, NULL);
|
||||
m_ContentWidgets.append(content);
|
||||
_contentsLayout->addWidget(content);
|
||||
|
||||
@ -247,7 +247,7 @@ bool SectionWidget::takeContentAt(int index, InternalContentData& data)
|
||||
}
|
||||
|
||||
// Content wrapper widget (CONTENT)
|
||||
SectionContentWidget* content = m_ContentWidgets.takeAt(index);
|
||||
CSectionContentWidget* content = m_ContentWidgets.takeAt(index);
|
||||
if (content)
|
||||
{
|
||||
_contentsLayout->removeWidget(content);
|
||||
|
@ -13,18 +13,12 @@ SectionContentListModel::~SectionContentListModel()
|
||||
{
|
||||
}
|
||||
|
||||
void SectionContentListModel::init(ADS_NS::MainContainerWidget* cw)
|
||||
void SectionContentListModel::init(ADS_NS::CMainContainerWidget* cw)
|
||||
{
|
||||
#if QT_VERSION >= 0x050000
|
||||
beginResetModel();
|
||||
_cw = cw;
|
||||
_contents = _cw->contents();
|
||||
endResetModel();
|
||||
#else
|
||||
_cw = cw;
|
||||
_contents = _cw->contents();
|
||||
reset();
|
||||
#endif
|
||||
}
|
||||
|
||||
int SectionContentListModel::columnCount(const QModelIndex& parent) const
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include "ads/API.h"
|
||||
#include "ads/SectionContent.h"
|
||||
ADS_NAMESPACE_BEGIN
|
||||
class MainContainerWidget;
|
||||
class CMainContainerWidget;
|
||||
ADS_NAMESPACE_END
|
||||
|
||||
class SectionContentListModel : public QAbstractTableModel
|
||||
@ -27,7 +27,7 @@ public:
|
||||
|
||||
SectionContentListModel(QObject* parent);
|
||||
virtual ~SectionContentListModel();
|
||||
void init(ADS_NS::MainContainerWidget* cw);
|
||||
void init(ADS_NS::CMainContainerWidget* cw);
|
||||
|
||||
virtual int columnCount(const QModelIndex &parent) const;
|
||||
virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const;
|
||||
@ -40,7 +40,7 @@ public:
|
||||
private:
|
||||
QHash<int, QString> _headers;
|
||||
|
||||
ADS_NS::MainContainerWidget* _cw;
|
||||
ADS_NS::CMainContainerWidget* _cw;
|
||||
QList<ADS_NS::SectionContent::RefPtr> _contents;
|
||||
};
|
||||
|
||||
|
@ -16,7 +16,7 @@ public:
|
||||
class Values
|
||||
{
|
||||
public:
|
||||
ADS_NS::MainContainerWidget* cw;
|
||||
ADS_NS::CMainContainerWidget* cw;
|
||||
};
|
||||
|
||||
SectionContentListWidget(QWidget* parent);
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
static int CONTENT_COUNT = 0;
|
||||
|
||||
static ADS_NS::SectionContent::RefPtr createLongTextLabelSC(ADS_NS::MainContainerWidget* container)
|
||||
static ADS_NS::SectionContent::RefPtr createLongTextLabelSC(ADS_NS::CMainContainerWidget* container)
|
||||
{
|
||||
QWidget* w = new QWidget();
|
||||
QBoxLayout* bl = new QBoxLayout(QBoxLayout::TopToBottom);
|
||||
@ -39,7 +39,7 @@ static ADS_NS::SectionContent::RefPtr createLongTextLabelSC(ADS_NS::MainContaine
|
||||
return sc;
|
||||
}
|
||||
|
||||
static ADS_NS::SectionContent::RefPtr createCalendarSC(ADS_NS::MainContainerWidget* container)
|
||||
static ADS_NS::SectionContent::RefPtr createCalendarSC(ADS_NS::CMainContainerWidget* container)
|
||||
{
|
||||
QCalendarWidget* w = new QCalendarWidget();
|
||||
|
||||
@ -47,7 +47,7 @@ static ADS_NS::SectionContent::RefPtr createCalendarSC(ADS_NS::MainContainerWidg
|
||||
return ADS_NS::SectionContent::newSectionContent(QString("uname-%1").arg(index), container, new IconTitleWidget(QIcon(), QString("Calendar %1").arg(index)), w);
|
||||
}
|
||||
|
||||
static ADS_NS::SectionContent::RefPtr createFileSystemTreeSC(ADS_NS::MainContainerWidget* container)
|
||||
static ADS_NS::SectionContent::RefPtr createFileSystemTreeSC(ADS_NS::CMainContainerWidget* container)
|
||||
{
|
||||
QTreeView* w = new QTreeView();
|
||||
w->setFrameShape(QFrame::NoFrame);
|
||||
@ -93,7 +93,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
connect(ui->actionContentList, SIGNAL(triggered()), this, SLOT(showSectionContentListDialog()));
|
||||
|
||||
// ADS - Create main container (ContainerWidget).
|
||||
_container = new ADS_NS::MainContainerWidget();
|
||||
_container = new ADS_NS::CMainContainerWidget();
|
||||
connect(_container, SIGNAL(activeTabChanged(const SectionContent::RefPtr&, bool)), this, SLOT(onActiveTabChanged(const SectionContent::RefPtr&, bool)));
|
||||
connect(_container, SIGNAL(sectionContentVisibilityChanged(SectionContent::RefPtr,bool)), this, SLOT(onSectionContentVisibilityChanged(SectionContent::RefPtr,bool)));
|
||||
setCentralWidget(_container);
|
||||
@ -117,7 +117,7 @@ void MainWindow::createContent()
|
||||
{
|
||||
// ADS - Adding some contents.
|
||||
// Test #1: Use high-level public API
|
||||
ADS_NS::MainContainerWidget* cw = _container;
|
||||
ADS_NS::CMainContainerWidget* cw = _container;
|
||||
ADS_NS::SectionWidget* sw = nullptr;
|
||||
|
||||
sw = _container->addSectionContent(createLongTextLabelSC(cw), nullptr, ADS_NS::CenterDropArea);
|
||||
@ -136,7 +136,7 @@ void MainWindow::createContent()
|
||||
|
||||
#if 0
|
||||
// Issue #2: If the first drop is not into CenterDropArea, the application crashes.
|
||||
ADS_NS::MainContainerWidget* cw = _container;
|
||||
ADS_NS::CMainContainerWidget* cw = _container;
|
||||
ADS_NS::SectionWidget* sw = NULL;
|
||||
|
||||
sw = _container->addSectionContent(createLongTextLabelSC(cw), sw, ADS_NS::LeftDropArea);
|
||||
@ -162,7 +162,7 @@ void MainWindow::showSectionContentListDialog()
|
||||
void MainWindow::onActiveTabChanged(const ADS_NS::SectionContent::RefPtr& sc, bool active)
|
||||
{
|
||||
Q_UNUSED(active);
|
||||
IconTitleWidget* itw = dynamic_cast<IconTitleWidget*>(sc->titleWidget());
|
||||
IconTitleWidget* itw = dynamic_cast<IconTitleWidget*>(sc->titleWidgetContent());
|
||||
if (itw)
|
||||
{
|
||||
itw->polishUpdate();
|
||||
|
@ -37,7 +37,7 @@ protected:
|
||||
|
||||
private:
|
||||
Ui::MainWindow *ui;
|
||||
ADS_NS::MainContainerWidget* _container;
|
||||
ADS_NS::CMainContainerWidget* _container;
|
||||
void createContent();
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user