Changeset 83884 in vbox
- Timestamp:
- Apr 21, 2020 10:02:06 AM (5 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItem.cpp
r83672 r83884 495 495 return; 496 496 497 /* Initialize dragging for local VMs only: */ 498 if (!m_pNode->hasAtLeastOneCloudNode()) 499 { 500 QDrag *pDrag = new QDrag(pEvent->widget()); 501 model()->setCurrentDragObject(pDrag); 502 pDrag->setPixmap(toPixmap()); 503 pDrag->setMimeData(createMimeData()); 504 pDrag->exec(Qt::MoveAction | Qt::CopyAction, Qt::MoveAction); 505 } 497 /* Initialize dragging: */ 498 QDrag *pDrag = new QDrag(pEvent->widget()); 499 model()->setCurrentDragObject(pDrag); 500 pDrag->setPixmap(toPixmap()); 501 pDrag->setMimeData(createMimeData()); 502 pDrag->exec(Qt::MoveAction | Qt::CopyAction, Qt::MoveAction); 506 503 } 507 504 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp
r83883 r83884 683 683 UIChooserItemGroup *pGroupItem = pItem->toGroupItem(); 684 684 685 /* Make sure passed machine isn't immutable within own group: */ 686 if ( pGroupItem->isContainsLockedMachine() 687 && !m_groupItems.contains(pItem)) 688 return false; 689 /* Make sure passed group is not 'this': */ 690 if (pItem == this) 691 return false; 692 /* Make sure passed group is not among our parents: */ 693 const UIChooserItem *pTestedItem = this; 694 while (UIChooserItem *pParentOfTestedWidget = pTestedItem->parentItem()) 695 { 696 if (pItem == pParentOfTestedWidget) 685 /* For local items: */ 686 if ( node()->toGroupNode()->groupType() == UIChooserNodeGroupType_Local 687 && pItem->node()->toGroupNode()->groupType() == UIChooserNodeGroupType_Local) 688 { 689 /* Make sure passed machine isn't immutable within own group: */ 690 if ( pGroupItem->isContainsLockedMachine() 691 && !m_groupItems.contains(pItem)) 697 692 return false; 698 pTestedItem = pParentOfTestedWidget; 699 } 700 701 /* Allow finally: */ 702 return true; 693 /* Make sure passed group is not 'this': */ 694 if (pItem == this) 695 return false; 696 /* Make sure passed group is not among our parents: */ 697 const UIChooserItem *pTestedItem = this; 698 while (UIChooserItem *pParentOfTestedWidget = pTestedItem->parentItem()) 699 { 700 if (pItem == pParentOfTestedWidget) 701 return false; 702 pTestedItem = pParentOfTestedWidget; 703 } 704 705 /* Allow finally: */ 706 return true; 707 } 708 /* For cloud items: */ 709 else 710 if ( node()->toGroupNode()->groupType() == UIChooserNodeGroupType_Provider 711 && pItem->node()->toGroupNode()->groupType() == UIChooserNodeGroupType_Profile) 712 { 713 /* Make sure passed item is ours: */ 714 return m_groupItems.contains(pItem); 715 } 703 716 } 704 717 else if (pMimeData->hasFormat(UIChooserItemMachine::className())) … … 710 723 UIChooserItemMachine *pMachineItem = pItem->toMachineItem(); 711 724 712 /* Make sure passed machine isn't immutable within own group: */ 713 if ( pMachineItem->isLockedMachine() 714 && !m_machineItems.contains(pItem)) 715 return false; 716 switch (pEvent->proposedAction()) 717 { 718 case Qt::MoveAction: 725 /* For local items: */ 726 if ( node()->toGroupNode()->groupType() == UIChooserNodeGroupType_Local 727 && pMachineItem->node()->toMachineNode()->cache()->itemType() == UIVirtualMachineItem::ItemType_Local) 728 { 729 /* Make sure passed machine isn't immutable within own group: */ 730 if ( pMachineItem->isLockedMachine() 731 && !m_machineItems.contains(pItem)) 732 return false; 733 switch (pEvent->proposedAction()) 719 734 { 720 /* Make sure passed item is ours or there is no other item with such id: */ 721 return m_machineItems.contains(pItem) || !isContainsMachine(pMachineItem->id()); 735 case Qt::MoveAction: 736 { 737 /* Make sure passed item is ours or there is no other item with such id: */ 738 return m_machineItems.contains(pItem) || !isContainsMachine(pMachineItem->id()); 739 } 740 case Qt::CopyAction: 741 { 742 /* Make sure there is no other item with such id: */ 743 return !isContainsMachine(pMachineItem->id()); 744 } 745 default: 746 break; 722 747 } 723 case Qt::CopyAction: 724 { 725 /* Make sure there is no other item with such id: */ 726 return !isContainsMachine(pMachineItem->id()); 727 } 728 default: 729 break; 748 } 749 /* For cloud items: */ 750 else 751 if ( node()->toGroupNode()->groupType() == UIChooserNodeGroupType_Profile 752 && pMachineItem->node()->toMachineNode()->cache()->itemType() == UIVirtualMachineItem::ItemType_CloudReal) 753 { 754 /* Make sure passed item is ours: */ 755 return m_machineItems.contains(pItem); 730 756 } 731 757 } -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.cpp
r83883 r83884 394 394 UIChooserItemMachine *pMachineItem = pItem->toMachineItem(); 395 395 396 /* No drops for cloud items: */ 397 if ( node()->toMachineNode()->cache()->itemType() != UIVirtualMachineItem::ItemType_Local 398 || pMachineItem->node()->toMachineNode()->cache()->itemType() != UIVirtualMachineItem::ItemType_Local) 399 return false; 396 400 /* No drops for immutable item: */ 397 401 if (pMachineItem->isLockedMachine()) -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNode.h
r83672 r83884 105 105 virtual void updateAllNodes(const QUuid &uId) = 0; 106 106 107 /** Returns whether this node is a cloud node itself108 * or contains at least one cloud VM node child. */109 virtual bool hasAtLeastOneCloudNode() const = 0;110 111 107 /** Returns node position. */ 112 108 int position(); -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNodeGlobal.cpp
r83672 r83884 118 118 } 119 119 120 bool UIChooserNodeGlobal::hasAtLeastOneCloudNode() const121 {122 return false;123 }124 125 120 int UIChooserNodeGlobal::positionOf(UIChooserNode *pNode) 126 121 { -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNodeGlobal.h
r83672 r83884 77 77 virtual void updateAllNodes(const QUuid &uId) /* override */; 78 78 79 /** Returns whether this node is a cloud node itself80 * or contains at least one cloud VM node child. */81 virtual bool hasAtLeastOneCloudNode() const /* override */;82 83 79 /** Returns position of specified node inside this one. */ 84 80 virtual int positionOf(UIChooserNode *pNode) /* override */; -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNodeGroup.cpp
r83673 r83884 178 178 foreach (UIChooserNode *pNode, nodes()) 179 179 pNode->updateAllNodes(uId); 180 }181 182 bool UIChooserNodeGroup::hasAtLeastOneCloudNode() const183 {184 foreach (UIChooserNode *pNode, m_nodesGroup)185 if (pNode->hasAtLeastOneCloudNode())186 return true;187 188 foreach (UIChooserNode *pNode, m_nodesMachine)189 if (pNode->hasAtLeastOneCloudNode())190 return true;191 192 return false;193 180 } 194 181 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNodeGroup.h
r83673 r83884 81 81 virtual void updateAllNodes(const QUuid &uId) /* override */; 82 82 83 /** Returns whether this node is a cloud node itself84 * or contains at least one cloud VM node child. */85 virtual bool hasAtLeastOneCloudNode() const /* override */;86 87 83 /** Returns position of specified node inside this one. */ 88 84 virtual int positionOf(UIChooserNode *pNode) /* override */; -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNodeMachine.cpp
r83881 r83884 188 188 if (item()) 189 189 item()->updateItem(); 190 }191 192 bool UIChooserNodeMachine::hasAtLeastOneCloudNode() const193 {194 return cache()->itemType() != UIVirtualMachineItem::ItemType_Local;195 190 } 196 191 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNodeMachine.h
r83672 r83884 96 96 virtual void updateAllNodes(const QUuid &uId) /* override */; 97 97 98 /** Returns whether this node is a cloud node itself99 * or contains at least one cloud VM node child. */100 virtual bool hasAtLeastOneCloudNode() const /* override */;101 102 98 /** Returns position of specified node inside this one. */ 103 99 virtual int positionOf(UIChooserNode *pNode) /* override */;
Note:
See TracChangeset
for help on using the changeset viewer.