diff options
author | vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> | 2019-02-18 13:07:09 +0000 |
---|---|---|
committer | vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> | 2019-02-18 13:07:09 +0000 |
commit | 75095a2f09996d99f53bc0bc27c70358a3d750fa (patch) | |
tree | 2296a30f3779f145be7baa966368b9df860887be | |
parent | 6be711e8cd9e11f4994184e95141a1c72ac5f0de (diff) | |
download | VirtualBox-svn-75095a2f09996d99f53bc0bc27c70358a3d750fa.tar.gz |
FE/Qt: bugref:9373: VirtualBox Manager: Chooser pane: Integrate Favorite children layout, unused for now.
git-svn-id: https://www.virtualbox.org/svn/vbox/trunk@77346 cfe28804-0f27-0410-a406-dd0f0b0b656f
8 files changed, 91 insertions, 32 deletions
diff --git a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItem.cpp b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItem.cpp index c518d5db191..d72f4548fec 100644 --- a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItem.cpp +++ b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItem.cpp @@ -192,10 +192,11 @@ private: * Class UIChooserItem implementation. * *********************************************************************************************************************************/ -UIChooserItem::UIChooserItem(UIChooserItem *pParent, bool fTemporary, +UIChooserItem::UIChooserItem(UIChooserItem *pParent, bool fFavorite, bool fTemporary, int iDefaultValue /* = 100 */, int iHoveredValue /* = 90 */) : QIWithRetranslateUI4<QIGraphicsWidget>(pParent) , m_pParent(pParent) + , m_fFavorite(fFavorite) , m_fTemporary(fTemporary) , m_fRoot(!pParent) , m_iLevel(-1) diff --git a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItem.h b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItem.h index f508142dbd6..10899c47393 100644 --- a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItem.h +++ b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItem.h @@ -102,16 +102,19 @@ signals: public: /** Constructs item passing @a pParent to the base-class. + * @param fFavorite Brings whether this item created directly in favorite container. * @param fTemporary Brings whether this item created for temporary needs. * @param iDefaultValue Brings default value for hovering animation. * @param iHoveredValue Brings hovered value for hovering animation. */ - UIChooserItem(UIChooserItem *pParent, bool fTemporary, + UIChooserItem(UIChooserItem *pParent, bool fFavorite, bool fTemporary, int iDefaultValue = 100, int iHoveredValue = 90); /** @name Item stuff. * @{ */ /** Returns parent reference. */ UIChooserItem *parentItem() const { return m_pParent; } + /** Returns whether item is favorite. */ + bool isFavorite() const { return m_fFavorite; } /** Returns whether item is temporary. */ bool isTemporary() const { return m_fTemporary; } @@ -164,8 +167,8 @@ public: /** @name Children stuff. * @{ */ - /** Adds child @a pItem to certain @a iPosition. */ - virtual void addItem(UIChooserItem *pItem, int iPosition) = 0; + /** Adds possible @a fFavorite child @a pItem to certain @a iPosition. */ + virtual void addItem(UIChooserItem *pItem, bool fFavorite, int iPosition) = 0; /** Removes child @a pItem. */ virtual void removeItem(UIChooserItem *pItem) = 0; @@ -328,6 +331,8 @@ private: * @{ */ /** Holds the item's parent item. */ UIChooserItem *m_pParent; + /** Holds whether item is favorite. */ + bool m_fFavorite; /** Holds whether item is temporary. */ bool m_fTemporary; diff --git a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGlobal.cpp b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGlobal.cpp index 89deb37ea9b..845c8f9c2cd 100644 --- a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGlobal.cpp +++ b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGlobal.cpp @@ -35,7 +35,7 @@ UIChooserItemGlobal::UIChooserItemGlobal(UIChooserItem *pParent, int iPosition /* = -1 */) - : UIChooserItem(pParent, pParent->isTemporary(), 0, 100) + : UIChooserItem(pParent, false /* favorite? */, pParent->isTemporary(), 0, 100) , m_iPosition(iPosition) , m_iDefaultLightnessMin(0) , m_iDefaultLightnessMax(0) @@ -53,7 +53,7 @@ UIChooserItemGlobal::UIChooserItemGlobal(UIChooserItem *pParent, UIChooserItemGlobal::UIChooserItemGlobal(UIChooserItem *pParent, UIChooserItemGlobal *pCopyFrom, int iPosition /* = -1 */) - : UIChooserItem(pParent, pParent->isTemporary(), 0, 100) + : UIChooserItem(pParent, false /* favorite? */, pParent->isTemporary(), 0, 100) , m_iPosition(iPosition) , m_iDefaultLightnessMin(0) , m_iDefaultLightnessMax(0) @@ -195,7 +195,7 @@ QString UIChooserItemGlobal::definition() const return QString("n=%1").arg("GLOBAL"); } -void UIChooserItemGlobal::addItem(UIChooserItem *, int) +void UIChooserItemGlobal::addItem(UIChooserItem *, bool, int) { AssertMsgFailed(("Global graphics item do NOT support children!")); } @@ -389,7 +389,7 @@ void UIChooserItemGlobal::prepare() /* Add item to the parent: */ AssertPtrReturnVoid(parentItem()); - parentItem()->addItem(this, m_iPosition); + parentItem()->addItem(this, false, m_iPosition); /* Configure connections: */ connect(gpManager, &UIVirtualBoxManager::sigWindowRemapped, diff --git a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGlobal.h b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGlobal.h index c4bb64d32d0..02cf10e974d 100644 --- a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGlobal.h +++ b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGlobal.h @@ -105,8 +105,8 @@ protected: /** @name Children stuff. * @{ */ - /** Adds child @a pItem to certain @a iPosition. */ - virtual void addItem(UIChooserItem *pItem, int iPosition) /* override */; + /** Adds possible @a fFavorite child @a pItem to certain @a iPosition. */ + virtual void addItem(UIChooserItem *pItem, bool fFavorite, int iPosition) /* override */; /** Removes child @a pItem. */ virtual void removeItem(UIChooserItem *pItem) /* override */; diff --git a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp index 238db4e0579..fd97d99faf2 100644 --- a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp +++ b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp @@ -44,7 +44,7 @@ *********************************************************************************************************************************/ UIChooserItemGroup::UIChooserItemGroup(QGraphicsScene *pScene) - : UIChooserItem(0, false /* temporary? */) + : UIChooserItem(0, false /* favorite? */, false /* temporary? */) , m_fMainRoot(true) , m_fClosed(false) , m_iAdditionalHeight(0) @@ -53,6 +53,8 @@ UIChooserItemGroup::UIChooserItemGroup(QGraphicsScene *pScene) , m_pEnterButton(0) , m_pExitButton(0) , m_pNameEditorWidget(0) + , m_pContainerFavorite(0) + , m_pLayoutFavorite(0) , m_pScrollArea(0) , m_pContainer(0) , m_pLayout(0) @@ -78,7 +80,7 @@ UIChooserItemGroup::UIChooserItemGroup(QGraphicsScene *pScene) UIChooserItemGroup::UIChooserItemGroup(QGraphicsScene *pScene, UIChooserItemGroup *pCopyFrom, bool fMainRoot) - : UIChooserItem(0, true /* temporary? */) + : UIChooserItem(0, false /* favorite? */, true /* temporary? */) , m_fMainRoot(fMainRoot) , m_fClosed(pCopyFrom->isClosed()) , m_iAdditionalHeight(0) @@ -88,6 +90,8 @@ UIChooserItemGroup::UIChooserItemGroup(QGraphicsScene *pScene, , m_pEnterButton(0) , m_pExitButton(0) , m_pNameEditorWidget(0) + , m_pContainerFavorite(0) + , m_pLayoutFavorite(0) , m_pScrollArea(0) , m_pContainer(0) , m_pLayout(0) @@ -118,7 +122,7 @@ UIChooserItemGroup::UIChooserItemGroup(UIChooserItem *pParent, const QString &strName, bool fOpened /* = false */, int iPosition /* = -1 */) - : UIChooserItem(pParent, pParent->isTemporary()) + : UIChooserItem(pParent, pParent->isFavorite(), pParent->isTemporary()) , m_fMainRoot(false) , m_fClosed(!fOpened) , m_iAdditionalHeight(0) @@ -128,6 +132,8 @@ UIChooserItemGroup::UIChooserItemGroup(UIChooserItem *pParent, , m_pEnterButton(0) , m_pExitButton(0) , m_pNameEditorWidget(0) + , m_pContainerFavorite(0) + , m_pLayoutFavorite(0) , m_pScrollArea(0) , m_pContainer(0) , m_pLayout(0) @@ -140,7 +146,7 @@ UIChooserItemGroup::UIChooserItemGroup(UIChooserItem *pParent, /* Add item to the parent: */ AssertMsg(parentItem(), ("Incorrect parent passed!")); - parentItem()->addItem(this, iPosition); + parentItem()->addItem(this, false, iPosition); connect(this, &UIChooserItemGroup::sigToggleStarted, model(), &UIChooserModel::sigToggleStarted); connect(this, &UIChooserItemGroup::sigToggleFinished, @@ -166,7 +172,7 @@ UIChooserItemGroup::UIChooserItemGroup(UIChooserItem *pParent, UIChooserItemGroup::UIChooserItemGroup(UIChooserItem *pParent, UIChooserItemGroup *pCopyFrom, int iPosition /* = -1 */) - : UIChooserItem(pParent, pParent->isTemporary()) + : UIChooserItem(pParent, pParent->isFavorite(), pParent->isTemporary()) , m_fMainRoot(false) , m_fClosed(pCopyFrom->isClosed()) , m_iAdditionalHeight(0) @@ -176,6 +182,8 @@ UIChooserItemGroup::UIChooserItemGroup(UIChooserItem *pParent, , m_pEnterButton(0) , m_pExitButton(0) , m_pNameEditorWidget(0) + , m_pContainerFavorite(0) + , m_pLayoutFavorite(0) , m_pScrollArea(0) , m_pContainer(0) , m_pLayout(0) @@ -188,7 +196,7 @@ UIChooserItemGroup::UIChooserItemGroup(UIChooserItem *pParent, /* Add item to the parent: */ AssertMsg(parentItem(), ("Incorrect parent passed!")); - parentItem()->addItem(this, iPosition); + parentItem()->addItem(this, false, iPosition); connect(this, &UIChooserItemGroup::sigToggleStarted, model(), &UIChooserModel::sigToggleStarted); connect(this, &UIChooserItemGroup::sigToggleFinished, @@ -520,7 +528,7 @@ void UIChooserItemGroup::handleRootStatusChange() updateMinimumHeaderSize(); } -void UIChooserItemGroup::addItem(UIChooserItem *pItem, int iPosition) +void UIChooserItemGroup::addItem(UIChooserItem *pItem, bool fFavorite, int iPosition) { /* Check item type: */ switch (pItem->type()) @@ -545,12 +553,18 @@ void UIChooserItemGroup::addItem(UIChooserItem *pItem, int iPosition) AssertMsg(!m_globalItems.contains(pItem), ("Global-item already added!")); if (iPosition < 0 || iPosition >= m_globalItems.size()) { - m_pLayoutGlobal->addItem(pItem); + if (fFavorite) + m_pLayoutFavorite->addItem(pItem); + else + m_pLayoutGlobal->addItem(pItem); m_globalItems.append(pItem); } else { - m_pLayoutGlobal->insertItem(iPosition, pItem); + if (fFavorite) + m_pLayoutFavorite->insertItem(iPosition, pItem); + else + m_pLayoutGlobal->insertItem(iPosition, pItem); m_globalItems.insert(iPosition, pItem); } break; @@ -844,7 +858,12 @@ void UIChooserItemGroup::updateLayout() /* Adjust scroll-view geometry: */ QSize viewSize = pView->size(); viewSize.setHeight(viewSize.height() - iPreviousVerticalIndent); - m_pScrollArea->resize(viewSize); + /* Adjust favorite children container: */ + m_pContainerFavorite->resize(viewSize.width(), m_pContainerFavorite->minimumSizeHint().height()); + m_pContainerFavorite->setPos(0, iPreviousVerticalIndent); + iPreviousVerticalIndent += m_pContainerFavorite->minimumSizeHint().height(); + /* Adjust other children scroll-area: */ + m_pScrollArea->resize(viewSize.width(), viewSize.height() - m_pContainerFavorite->minimumSizeHint().height()); m_pScrollArea->setPos(0, iPreviousVerticalIndent); } /* Header (non-root-item): */ @@ -888,16 +907,25 @@ void UIChooserItemGroup::updateLayout() /* Adjust scroll-view geometry: */ QSize itemSize = size().toSize(); itemSize.setHeight(itemSize.height() - iPreviousVerticalIndent); - m_pScrollArea->resize(itemSize); + /* Adjust favorite children container: */ + m_pContainerFavorite->resize(itemSize.width(), m_pContainerFavorite->minimumSizeHint().height()); + m_pContainerFavorite->setPos(0, iPreviousVerticalIndent); + iPreviousVerticalIndent += m_pContainerFavorite->minimumSizeHint().height(); + /* Adjust other children scroll-area: */ + m_pScrollArea->resize(itemSize.width(), itemSize.height() - m_pContainerFavorite->minimumSizeHint().height()); m_pScrollArea->setPos(0, iPreviousVerticalIndent); } /* No body for closed group: */ if (isClosed()) + { + m_pContainerFavorite->hide(); m_pScrollArea->hide(); + } /* Body for opened group: */ else { + m_pContainerFavorite->show(); m_pScrollArea->show(); foreach (UIChooserItem *pItem, items()) pItem->updateLayout(); @@ -1287,6 +1315,22 @@ void UIChooserItemGroup::prepare() m_enterButtonSize = m_pEnterButton ? m_pEnterButton->minimumSizeHint().toSize() : QSize(0, 0); m_exitButtonSize = m_pExitButton ? m_pExitButton->minimumSizeHint().toSize() : QSize(0, 0); + /* Prepare favorite children container: */ + m_pContainerFavorite = new QIGraphicsWidget(this); + if (m_pContainerFavorite) + { + /* Make it always above other children scroll-area: */ + m_pContainerFavorite->setZValue(1); + + /* Prepare favorite children layout: */ + m_pLayoutFavorite = new QGraphicsLinearLayout(Qt::Vertical, m_pContainerFavorite); + if (m_pLayoutFavorite) + { + m_pLayoutFavorite->setContentsMargins(0, 0, 0, 0); + m_pLayoutFavorite->setSpacing(0); + } + } + /* Prepare scroll-area: */ m_pScrollArea = new UIGraphicsScrollArea(Qt::Vertical, this); if (m_pScrollArea) @@ -1481,7 +1525,8 @@ int UIChooserItemGroup::minimumWidthHintForGroup(bool fGroupOpened) const if (hasItems()) { /* We have to take maximum children width into account: */ - iProposedWidth = m_pContainer->minimumSizeHint().width(); + iProposedWidth = qMax(m_pContainerFavorite->minimumSizeHint().width(), + m_pContainer->minimumSizeHint().width()); } } /* Other items, including temporary roots: */ @@ -1498,7 +1543,8 @@ int UIChooserItemGroup::minimumWidthHintForGroup(bool fGroupOpened) const if (fGroupOpened) { /* We have to take maximum children width into account: */ - iProposedWidth = m_pContainer->minimumSizeHint().width(); + iProposedWidth = qMax(m_pContainerFavorite->minimumSizeHint().width(), + m_pContainer->minimumSizeHint().width()); } /* And 2 margins at last - left and right: */ @@ -1521,7 +1567,8 @@ int UIChooserItemGroup::minimumHeightHintForGroup(bool fGroupOpened) const if (hasItems()) { /* We have to take maximum children height into account: */ - iProposedHeight = m_pContainer->minimumSizeHint().height(); + iProposedHeight += m_pContainerFavorite->minimumSizeHint().height(); + iProposedHeight += m_pContainer->minimumSizeHint().height(); } } /* Other items, including temporary roots: */ @@ -1539,6 +1586,7 @@ int UIChooserItemGroup::minimumHeightHintForGroup(bool fGroupOpened) const if (fGroupOpened) { /* We have to take maximum children height into account: */ + iProposedHeight += m_pContainerFavorite->minimumSizeHint().height(); iProposedHeight += m_pContainer->minimumSizeHint().height(); } diff --git a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.h b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.h index 14a8a7af620..d90ba8ceac8 100644 --- a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.h +++ b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.h @@ -151,8 +151,8 @@ protected: /** @name Children stuff. * @{ */ - /** Adds child @a pItem to certain @a iPosition. */ - virtual void addItem(UIChooserItem *pItem, int iPosition) /* override */; + /** Adds possible @a fFavorite child @a pItem to certain @a iPosition. */ + virtual void addItem(UIChooserItem *pItem, bool fFavorite, int iPosition) /* override */; /** Removes child @a pItem. */ virtual void removeItem(UIChooserItem *pItem) /* override */; @@ -361,6 +361,11 @@ private: /** @name Children stuff. * @{ */ + /** Holds the favorite children container instance. */ + QIGraphicsWidget *m_pContainerFavorite; + /** Holds the favorite children layout instance. */ + QGraphicsLinearLayout *m_pLayoutFavorite; + /** Holds the children scroll-area instance. */ UIGraphicsScrollArea *m_pScrollArea; /** Holds the children container instance. */ diff --git a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.cpp b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.cpp index 1c11e1f99a5..a6b094e3bd7 100644 --- a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.cpp +++ b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.cpp @@ -44,7 +44,7 @@ UIChooserItemMachine::UIChooserItemMachine(UIChooserItem *pParent, const CMachine &machine, int iPosition /* = -1 */) - : UIChooserItem(pParent, pParent->isTemporary(), 0, 100) + : UIChooserItem(pParent, false /* favorite? */, pParent->isTemporary(), 0, 100) , UIVirtualMachineItem(machine) , m_iPosition(iPosition) , m_iDefaultLightnessMin(0) @@ -65,7 +65,7 @@ UIChooserItemMachine::UIChooserItemMachine(UIChooserItem *pParent, UIChooserItemMachine::UIChooserItemMachine(UIChooserItem *pParent, UIChooserItemMachine *pCopyFrom, int iPosition /* = -1 */) - : UIChooserItem(pParent, pParent->isTemporary(), 0, 100) + : UIChooserItem(pParent, false /* favorite? */, pParent->isTemporary(), 0, 100) , UIVirtualMachineItem(pCopyFrom->machine()) , m_iPosition(iPosition) , m_iDefaultLightnessMin(0) @@ -254,7 +254,7 @@ QString UIChooserItemMachine::definition() const return QString("m=%1").arg(name()); } -void UIChooserItemMachine::addItem(UIChooserItem*, int) +void UIChooserItemMachine::addItem(UIChooserItem*, bool, int) { AssertMsgFailed(("Machine graphics item do NOT support children!")); } @@ -590,7 +590,7 @@ void UIChooserItemMachine::prepare() /* Add item to the parent: */ AssertPtrReturnVoid(parentItem()); - parentItem()->addItem(this, m_iPosition); + parentItem()->addItem(this, false, m_iPosition); /* Configure connections: */ connect(gpManager, &UIVirtualBoxManager::sigWindowRemapped, diff --git a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.h b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.h index 2600f354c4b..693d371acaa 100644 --- a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.h +++ b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.h @@ -119,8 +119,8 @@ protected: /** @name Children stuff. * @{ */ - /** Adds child @a pItem to certain @a iPosition. */ - virtual void addItem(UIChooserItem *pItem, int iPosition) /* override */; + /** Adds possible @a fFavorite child @a pItem to certain @a iPosition. */ + virtual void addItem(UIChooserItem *pItem, bool fFavorite, int iPosition) /* override */; /** Removes child @a pItem. */ virtual void removeItem(UIChooserItem *pItem) /* override */; |