Optimizes includes and forward declarations.

Fixes a bug where SectionWidget removes itself from _sections list during a qDeleteAll call on _sections.. that was stupid..
This commit is contained in:
mfreiholz
2016-02-26 12:43:14 +01:00
parent 74f6ba333f
commit 06304b9818
15 changed files with 125 additions and 80 deletions
+9 -9
View File
@@ -1,10 +1,8 @@
#ifndef ADS_API_H
#define ADS_API_H
#include <QByteArray>
#include <QDataStream>
#include <QIODevice>
#include <QSharedPointer>
#include <QFlags>
class QWidget;
class QSplitter;
// DLL Export API
@@ -38,6 +36,8 @@ class QSplitter;
//#define ADS_ANIMATION_DURATION 150
ADS_NAMESPACE_BEGIN
class ContainerWidget;
class SectionWidget;
enum DropArea
{
@@ -52,11 +52,11 @@ enum DropArea
};
Q_DECLARE_FLAGS(DropAreas, DropArea)
void deleteEmptySplitter(class ContainerWidget* container);
class ContainerWidget* findParentContainerWidget(class QWidget* w);
class SectionWidget* findParentSectionWidget(class QWidget* w);
QSplitter* findParentSplitter(class QWidget* w);
QSplitter* findImmediateSplitter(class QWidget* w);
void deleteEmptySplitter(ContainerWidget* container);
ContainerWidget* findParentContainerWidget(QWidget* w);
SectionWidget* findParentSectionWidget(QWidget* w);
QSplitter* findParentSplitter(QWidget* w);
QSplitter* findImmediateSplitter(QWidget* w);
ADS_NAMESPACE_END
#endif
@@ -1,21 +1,21 @@
#ifndef ADS_CONTAINERWIDGET_H
#define ADS_CONTAINERWIDGET_H
#include <QList>
#include <QPointer>
#include <QFrame>
#include <QGridLayout>
#include <QPoint>
#include <QList>
class QPoint;
class QSplitter;
class QMenu;
class QGridLayout;
#include "ads/API.h"
#include "ads/Internal.h"
#include "ads/SectionContent.h"
#include "ads/SectionWidget.h"
#include "ads/FloatingWidget.h"
ADS_NAMESPACE_BEGIN
class SectionWidget;
class InternalContentData;
@@ -28,6 +28,7 @@ class ADS_EXPORT_API ContainerWidget : public QFrame
Q_OBJECT
Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged)
friend class SectionContent;
friend class SectionWidget;
friend class FloatingWidget;
friend class SectionTitleWidget;
@@ -35,6 +36,7 @@ class ADS_EXPORT_API ContainerWidget : public QFrame
public:
explicit ContainerWidget(QWidget *parent = NULL);
virtual ~ContainerWidget();
//
// Public API
@@ -132,12 +134,20 @@ signals:
void activeTabChanged(const SectionContent::RefPtr& sc, bool active);
private:
// Elements inside container.
QList<SectionWidget*> _sections;
QList<FloatingWidget*> _floatings;
QHash<int, HiddenSectionItem> _hiddenSectionContents;
// Helper lookup maps, restricted to this container.
QHash<int, SectionContent::WeakPtr> _scLookupMapById;
QHash<QString, SectionContent::WeakPtr> _scLookupMapByName;
QHash<int, SectionWidget*> _swLookupMapById;
//QHash<ContainerWidget*, QHash<int, SectionWidget*> > _swLookupMapByContainer; // TODO Do we really need it?
// Layout stuff
QGridLayout* _mainLayout;
Qt::Orientation _orientation;
@@ -1,12 +1,13 @@
#ifndef DROP_OVERLAY_H
#define DROP_OVERLAY_H
#include <QFrame>
#include <QRect>
#include <QFrame>
#include "ads/API.h"
ADS_NAMESPACE_BEGIN
class DropSplitAreas;
// DropOverlay paints a translucent rectangle over another widget.
// It can also show different types of drop area indicators.
@@ -26,7 +27,7 @@ protected:
virtual void moveEvent(QMoveEvent* e);
private:
class DropSplitAreas* _splitAreas;
DropSplitAreas* _splitAreas;
bool _fullAreaDrop;
};
@@ -2,7 +2,6 @@
#define FLOATINGWIDGET_H
#include <QWidget>
#include <QFrame>
class QBoxLayout;
#include "ads/API.h"
+5 -2
View File
@@ -5,7 +5,10 @@
#include <QWeakPointer>
#include "ads/API.h"
#include "ads/SectionContent.h"
#define SCLookupMapById(X) X->_scLookupMapById
#define SCLookupMapByName(X) X->_scLookupMapByName
#define SWLookupMapById(X) X->_swLookupMapById
ADS_NAMESPACE_BEGIN
class SectionContent;
@@ -22,7 +25,7 @@ public:
InternalContentData();
~InternalContentData();
SectionContent::RefPtr content;
QSharedPointer<SectionContent> content;
SectionTitleWidget* titleWidget;
SectionContentWidget* contentWidget;
};
@@ -1,11 +1,10 @@
#ifndef SECTIONCONTENT_H
#define SECTIONCONTENT_H
#include <QPointer>
#include <QWidget>
#include <QHash>
#include <QSharedPointer>
#include <QWeakPointer>
#include <QPointer>
class QWidget;
#include "ads/API.h"
@@ -51,7 +50,7 @@ private:
const int _uid;
QString _uniqueName;
ContainerWidget* _containerWidget;
QPointer<ContainerWidget> _containerWidget;
QPointer<QWidget> _titleWidget;
QPointer<QWidget> _contentWidget;
@@ -59,8 +58,6 @@ private:
QString _title;
static int GetNextUid();
static QHash<int, SectionContent::WeakPtr>& GetLookupMap();
static QHash<QString, SectionContent::WeakPtr>& GetLookupMapByName();
};
ADS_NAMESPACE_END
@@ -1,8 +1,9 @@
#ifndef SECTION_TITLE_WIDGET_H
#define SECTION_TITLE_WIDGET_H
#include <QFrame>
#include <QPointer>
#include <QPoint>
#include <QFrame>
#include "ads/API.h"
#include "ads/SectionContent.h"
@@ -2,8 +2,8 @@
#define SECTION_WIDGET_H
#include <QDebug>
#include <QPointer>
#include <QList>
#include <QHash>
#include <QFrame>
class QBoxLayout;
class QStackedLayout;
@@ -56,7 +56,7 @@ private slots:
private:
const int _uid;
ContainerWidget* _container;
QPointer<ContainerWidget> _container;
QList<SectionContent::RefPtr> _contents;
QList<SectionTitleWidget*> _sectionTitles;
QList<SectionContentWidget*> _sectionContents;
@@ -69,12 +69,6 @@ private:
SectionTitleWidget* _mousePressTitleWidget;
static int GetNextUid();
static QHash<int, SectionWidget*>& GetLookupMap();
static QHash<ContainerWidget*, QHash<int, SectionWidget*> >& GetLookupMapByContainer();
// static int NextUid;
// static QHash<int, SectionWidget*> LookupMap;
// static QHash<ContainerWidget*, QHash<int, SectionWidget*> > LookupMapByContainer;
};
ADS_NAMESPACE_END