summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2019-02-18 13:07:09 +0000
committervboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2019-02-18 13:07:09 +0000
commit75095a2f09996d99f53bc0bc27c70358a3d750fa (patch)
tree2296a30f3779f145be7baa966368b9df860887be
parent6be711e8cd9e11f4994184e95141a1c72ac5f0de (diff)
downloadVirtualBox-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
-rw-r--r--src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItem.cpp3
-rw-r--r--src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItem.h11
-rw-r--r--src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGlobal.cpp8
-rw-r--r--src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGlobal.h4
-rw-r--r--src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp76
-rw-r--r--src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.h9
-rw-r--r--src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.cpp8
-rw-r--r--src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.h4
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 */;