#ifndef SECTIONCONTENT_H
#define SECTIONCONTENT_H

#include <QPointer>
#include <QWidget>
#include <QHash>
#include <QSharedPointer>
#include <QWeakPointer>

#include "ads/API.h"

ADS_NAMESPACE_BEGIN

class SectionContent
{
	friend class ContainerWidget;

private:
	SectionContent(QWidget* title, QWidget* content, const QString& uniqueName = QString()); ///< Do not use!

public:
	typedef QSharedPointer<SectionContent> RefPtr;
	typedef QWeakPointer<SectionContent> WeakPtr;

	virtual ~SectionContent();
	int uid() const;
	QString uniqueName() const;
	QWidget* titleWidget() const;
	QWidget* contentWidget() const;

	static RefPtr newSectionContent(QWidget* title, QWidget* content, const QString& uniqueName = QString());

private:
	const int _uid;
	const QString _uniqueName;
	QPointer<QWidget> _title;
	QPointer<QWidget> _content;

	static int NextUid;
	static QHash<int, SectionContent::WeakPtr> LookupMap;
	static QHash<QString, SectionContent::WeakPtr> LookupMapByName;
};

ADS_NAMESPACE_END
#endif