diff --git a/AdvancedDockingSystem/AdvancedDockingSystem.pro b/AdvancedDockingSystem/AdvancedDockingSystem.pro index 59525f9..ac85b97 100644 --- a/AdvancedDockingSystem/AdvancedDockingSystem.pro +++ b/AdvancedDockingSystem/AdvancedDockingSystem.pro @@ -1,6 +1,6 @@ TARGET = AdvancedDockingSystem #VERSION = 0.1.0 -#CONFIG += adsBuildShared +CONFIG += adsBuildShared QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets diff --git a/AdvancedDockingSystem/include/ads/SectionContent.h b/AdvancedDockingSystem/include/ads/SectionContent.h index 05c7de4..d5d8a75 100644 --- a/AdvancedDockingSystem/include/ads/SectionContent.h +++ b/AdvancedDockingSystem/include/ads/SectionContent.h @@ -43,19 +43,24 @@ public: QWidget* titleWidget() const; QWidget* contentWidget() const; + QString visibleTitle() const; + QString title() const; + void setTitle(const QString& title); + private: const int _uid; QString _uniqueName; - ContainerWidget* _container; - QPointer _title; - QPointer _content; + + ContainerWidget* _containerWidget; + QPointer _titleWidget; + QPointer _contentWidget; + + // Optional attributes + QString _title; static int GetNextUid(); static QHash& GetLookupMap(); static QHash& GetLookupMapByName(); - - //static QHash LookupMap; - //static QHash LookupMapByName; }; ADS_NAMESPACE_END diff --git a/AdvancedDockingSystem/src/ContainerWidget.cpp b/AdvancedDockingSystem/src/ContainerWidget.cpp index 7f4de13..7c3754b 100644 --- a/AdvancedDockingSystem/src/ContainerWidget.cpp +++ b/AdvancedDockingSystem/src/ContainerWidget.cpp @@ -213,7 +213,7 @@ QMenu* ContainerWidget::createContextMenu() const const QList& contents = sw->contents(); foreach (const SectionContent::RefPtr& sc, contents) { - QAction* a = new QAction(QIcon(), sc->uniqueName(), NULL); + QAction* a = new QAction(QIcon(), sc->visibleTitle(), NULL); a->setObjectName(QString("ads-action-sc-%1").arg(QString::number(sc->uid()))); a->setProperty("uid", sc->uid()); a->setProperty("type", "section"); @@ -235,7 +235,7 @@ QMenu* ContainerWidget::createContextMenu() const hiddenIter.next(); const SectionContent::RefPtr sc = hiddenIter.value().data.content; - QAction* a = new QAction(QIcon(), sc->uniqueName(), NULL); + QAction* a = new QAction(QIcon(), sc->visibleTitle(), NULL); a->setObjectName(QString("ads-action-sc-%1").arg(QString::number(sc->uid()))); a->setProperty("uid", sc->uid()); a->setProperty("type", "section"); @@ -255,7 +255,7 @@ QMenu* ContainerWidget::createContextMenu() const const FloatingWidget* fw = _floatings.at(i); const SectionContent::RefPtr sc = fw->content(); - QAction* a = new QAction(QIcon(), sc->uniqueName(), NULL); + QAction* a = new QAction(QIcon(), sc->visibleTitle(), NULL); a->setObjectName(QString("ads-action-sc-%1").arg(QString::number(sc->uid()))); a->setProperty("uid", sc->uid()); a->setProperty("type", "floating"); diff --git a/AdvancedDockingSystem/src/SectionContent.cpp b/AdvancedDockingSystem/src/SectionContent.cpp index fc39acf..254e1c4 100644 --- a/AdvancedDockingSystem/src/SectionContent.cpp +++ b/AdvancedDockingSystem/src/SectionContent.cpp @@ -30,9 +30,9 @@ SectionContent::RefPtr SectionContent::newSectionContent(const QString& uniqueNa QSharedPointer sc(new SectionContent()); sc->_uniqueName = uniqueName; - sc->_container = container; - sc->_title = title; - sc->_content = content; + sc->_containerWidget = container; + sc->_titleWidget = title; + sc->_contentWidget = content; GetLookupMap().insert(sc->uid(), sc); if (!sc->uniqueName().isEmpty()) @@ -45,8 +45,8 @@ SectionContent::~SectionContent() { GetLookupMap().remove(_uid); GetLookupMapByName().remove(_uniqueName); - delete _title; - delete _content; + delete _titleWidget; + delete _contentWidget; } int SectionContent::uid() const @@ -61,17 +61,34 @@ QString SectionContent::uniqueName() const ContainerWidget* SectionContent::containerWidget() const { - return _container; + return _containerWidget; } QWidget* SectionContent::titleWidget() const { - return _title; + return _titleWidget; } QWidget* SectionContent::contentWidget() const { - return _content; + return _contentWidget; +} + +QString SectionContent::visibleTitle() const +{ + if (_title.isEmpty()) + return _uniqueName; + return _title; +} + +QString SectionContent::title() const +{ + return _title; +} + +void SectionContent::setTitle(const QString& title) +{ + _title = title; } int SectionContent::GetNextUid() diff --git a/AdvancedDockingSystemDemo/src/main.cpp b/AdvancedDockingSystemDemo/src/main.cpp index c038141..ec99d8b 100644 --- a/AdvancedDockingSystemDemo/src/main.cpp +++ b/AdvancedDockingSystemDemo/src/main.cpp @@ -9,7 +9,7 @@ int main(int argc, char *argv[]) QApplication a(argc, argv); a.setQuitOnLastWindowClosed(true); - Q_INIT_RESOURCE(ads); + //Q_INIT_RESOURCE(ads); // Load style sheet QFile f(":/stylesheets/default-windows.css"); diff --git a/AdvancedDockingSystemDemo/src/mainwindow.cpp b/AdvancedDockingSystemDemo/src/mainwindow.cpp index 836991d..f86cfb1 100644 --- a/AdvancedDockingSystemDemo/src/mainwindow.cpp +++ b/AdvancedDockingSystemDemo/src/mainwindow.cpp @@ -32,7 +32,9 @@ static ADS_NS::SectionContent::RefPtr createLongTextLabelSC(ADS_NS::ContainerWid bl->addWidget(l); const int index = ++CONTENT_COUNT; - return ADS_NS::SectionContent::newSectionContent(QString("uname-%1").arg(index), container, new IconTitleWidget(QIcon(), QString("Label %1").arg(index)), w); + ADS_NS::SectionContent::RefPtr sc = ADS_NS::SectionContent::newSectionContent(QString("uname-%1").arg(index), container, new IconTitleWidget(QIcon(), QString("Label %1").arg(index)), w); + sc->setTitle("Ein Label " + QString::number(index)); + return sc; } static ADS_NS::SectionContent::RefPtr createCalendarSC(ADS_NS::ContainerWidget* container) diff --git a/README.md b/README.md index fdd3466..8b1039b 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,8 @@ Items sorted by priority - [ ] `ContainerWidget::showSectionContent` needs to insert the SC at the correct preferred position of SW - [ ] Empty splitters, if only 2 or 1 items are in container - [ ] Restore: Handle out-of-screen geometry for floating widgets +- [ ] Find an alternative impl for current static QHash, e.g. `SectionContent::GetLookupMap`. + It does not work, if linking from DLL AND EXE ### Beta 0.1 - [x] Improve FloatingWidget (Remove maximize button, only support close-button which hides the widget) @@ -54,6 +56,10 @@ Items sorted by priority - [x] Clean up of unused e.g. count()<=1 QSplitters doesn't work well #BUG - [x] Show close button on right corner of SectionWidget. How to safe last section position? - [x] Serialize state of `_hiddenSectionContents` +- [x] Add "title" to SectionContent object, which will be used in visible areas to display contents name. +- [ ] It should be possible to catch the "activeTabChanged" signal for EXTERN_API users +- [x] Add API function to set an SC as active-tab +- [ ] Use scrolling for SectionWidget tabs? ### Some day... - [ ] Drop indicator images should be fully visible over the DropOverlay rectangle