#ifndef SECTION_WIDGET_H #define SECTION_WIDGET_H #include #include #include #include #include "ads.h" #include "section_content.h" class QBoxLayout; class QStackedLayout; ADS_NAMESPACE_BEGIN class ContainerWidget; class SectionTitleWidget; class SectionContentWidget; // SectionWidget manages multiple instances of SectionContent. // It displays a title TAB, which is clickable and will switch to // the contents associated to the title when clicked. class SectionWidget : public QFrame { Q_OBJECT public: explicit SectionWidget(ContainerWidget* parent); virtual ~SectionWidget(); int uid() const; ContainerWidget* containerWidget() const; QRect titleAreaGeometry() const; QRect contentAreaGeometry() const; QList contents() const { return _contents; } void addContent(SectionContent::RefPtr c); void addContent(const InternalContentData& data, bool autoActivate); InternalContentData take(int uid, bool del = true); public slots: void setCurrentIndex(int index); protected: virtual void paintEvent(QPaintEvent*); private slots: void onSectionTitleClicked(); private: const int _uid; ContainerWidget* _container; QList _contents; QList _sectionTitles; QList _sectionContents; QBoxLayout *_tabsLayout; QStackedLayout *_contentsLayout; QPoint _mousePressPoint; SectionContent::RefPtr _mousePressContent; SectionTitleWidget* _mousePressTitleWidget; static int NextUid; static QHash LookupMap; }; ADS_NAMESPACE_END #endif