mirror of
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
synced 2025-01-24 05:22:06 +08:00
Adds optional "title" attribute to SectionContent and show it in visible
areas e.g. context-menu. Build as shared library by default.
This commit is contained in:
parent
7e41d18a6d
commit
0e831ee55f
@ -1,6 +1,6 @@
|
||||
TARGET = AdvancedDockingSystem
|
||||
#VERSION = 0.1.0
|
||||
#CONFIG += adsBuildShared
|
||||
CONFIG += adsBuildShared
|
||||
|
||||
QT += core gui
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
@ -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<QWidget> _title;
|
||||
QPointer<QWidget> _content;
|
||||
|
||||
ContainerWidget* _containerWidget;
|
||||
QPointer<QWidget> _titleWidget;
|
||||
QPointer<QWidget> _contentWidget;
|
||||
|
||||
// Optional attributes
|
||||
QString _title;
|
||||
|
||||
static int GetNextUid();
|
||||
static QHash<int, SectionContent::WeakPtr>& GetLookupMap();
|
||||
static QHash<QString, SectionContent::WeakPtr>& GetLookupMapByName();
|
||||
|
||||
//static QHash<int, SectionContent::WeakPtr> LookupMap;
|
||||
//static QHash<QString, SectionContent::WeakPtr> LookupMapByName;
|
||||
};
|
||||
|
||||
ADS_NAMESPACE_END
|
||||
|
@ -213,7 +213,7 @@ QMenu* ContainerWidget::createContextMenu() const
|
||||
const QList<SectionContent::RefPtr>& 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");
|
||||
|
@ -30,9 +30,9 @@ SectionContent::RefPtr SectionContent::newSectionContent(const QString& uniqueNa
|
||||
|
||||
QSharedPointer<SectionContent> 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()
|
||||
|
@ -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");
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user