Changeset 84217 in vbox
- Timestamp:
- May 8, 2020 2:49:50 PM (4 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 5 edited
-
globals/UIActionPoolManager.cpp (modified) (3 diffs)
-
globals/UIMessageCenter.cpp (modified) (2 diffs)
-
globals/UIMessageCenter.h (modified) (2 diffs)
-
manager/UIVirtualBoxManager.cpp (modified) (4 diffs)
-
manager/UIVirtualMachineItemCloud.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp
r83859 r84217 1090 1090 }; 1091 1091 1092 /** Simpleaction extension, used as 'Perform Discard' action class. */1093 class UIActionSimpleSelectorCommonPerformDiscard : public UIAction Simple1092 /** Polymorphic menu action extension, used as 'Perform Discard' action class. */ 1093 class UIActionSimpleSelectorCommonPerformDiscard : public UIActionPolymorphicMenu 1094 1094 { 1095 1095 Q_OBJECT; … … 1099 1099 /** Constructs action passing @a pParent to the base-class. */ 1100 1100 UIActionSimpleSelectorCommonPerformDiscard(UIActionPool *pParent) 1101 : UIActionSimple(pParent, 1102 ":/vm_discard_32px.png", ":/vm_discard_16px.png", 1103 ":/vm_discard_disabled_32px.png", ":/vm_discard_disabled_16px.png") 1104 {} 1101 : UIActionPolymorphicMenu(pParent, 1102 ":/vm_discard_32px.png", ":/vm_discard_16px.png", 1103 ":/vm_discard_disabled_32px.png", ":/vm_discard_disabled_16px.png") 1104 { 1105 /* Hide menu always: */ 1106 hideMenu(); 1107 } 1105 1108 1106 1109 protected: … … 1115 1118 virtual void retranslateUi() /* override */ 1116 1119 { 1117 setIconText(QApplication::translate("UIActionPool", "Discard")); 1118 setName(QApplication::translate("UIActionPool", "D&iscard Saved State...")); 1119 setStatusTip(QApplication::translate("UIActionPool", "Discard saved state of selected virtual machines")); 1120 setToolTip(simplifyText(text()) + (shortcut().isEmpty() ? QString() : QString(" (%1)").arg(shortcut().toString()))); 1120 switch (state()) 1121 { 1122 case 0: 1123 { 1124 setIconText(QApplication::translate("UIActionPool", "Discard")); 1125 setName(QApplication::translate("UIActionPool", "D&iscard Saved State...")); 1126 setStatusTip(QApplication::translate("UIActionPool", "Discard saved state of selected virtual machines")); 1127 setToolTip(simplifyText(text()) + (shortcut().isEmpty() ? QString() : QString(" (%1)").arg(shortcut().toString()))); 1128 break; 1129 } 1130 case 1: 1131 { 1132 setIconText(QApplication::translate("UIActionPool", "Terminate")); 1133 setName(QApplication::translate("UIActionPool", "&Terminate Cloud Instance...")); 1134 setStatusTip(QApplication::translate("UIActionPool", "Terminate cloud instance of selected virtual machines")); 1135 setToolTip(simplifyText(text()) + (shortcut().isEmpty() ? QString() : QString(" (%1)").arg(shortcut().toString()))); 1136 break; 1137 } 1138 default: 1139 break; 1140 } 1121 1141 } 1122 1142 }; -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
r84184 r84217 838 838 } 839 839 840 bool UIMessageCenter::confirmTerminateCloudInstance(const QString &strNames) const 841 { 842 return questionBinary(0, MessageType_Question, 843 tr("<p>Are you sure you want to terminate the cloud instance " 844 "of the following virtual machines?</p><p><b>%1</b></p>") 845 .arg(strNames), 846 0 /* auto-confirm id */, 847 tr("Terminate", "cloud instance")); 848 } 849 840 850 bool UIMessageCenter::confirmResetMachine(const QString &strNames) const 841 851 { … … 892 902 .arg(CMachine(machine).GetName()), 893 903 UIErrorString::formatErrorInfo(machine)); 904 } 905 906 void UIMessageCenter::cannotTerminateCloudInstance(const CCloudMachine &comMachine) const 907 { 908 error(0, MessageType_Error, 909 tr("Failed to terminate the cloud instance of the virtual machine <b>%1</b>.") 910 .arg(CCloudMachine(comMachine).GetName()), 911 UIErrorString::formatErrorInfo(comMachine)); 912 } 913 914 void UIMessageCenter::cannotTerminateCloudInstance(const CProgress &comProgress, const QString &strMachineName) const 915 { 916 error(0, MessageType_Error, 917 tr("Failed to terminate the cloud instance of the virtual machine <b>%1</b>.") 918 .arg(strMachineName), 919 UIErrorString::formatErrorInfo(comProgress)); 894 920 } 895 921 -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h
r84184 r84217 281 281 bool warnAboutInaccessibleMedia() const; 282 282 bool confirmDiscardSavedState(const QString &strNames) const; 283 bool confirmTerminateCloudInstance(const QString &strNames) const; 283 284 bool confirmResetMachine(const QString &strNames) const; 284 285 bool confirmACPIShutdownMachine(const QString &strNames) const; … … 287 288 void cannotResumeMachine(const CConsole &console) const; 288 289 void cannotDiscardSavedState(const CMachine &machine) const; 290 void cannotTerminateCloudInstance(const CCloudMachine &comMachine) const; 291 void cannotTerminateCloudInstance(const CProgress &comProgress, const QString &strMachineName) const; 289 292 void cannotSaveMachineState(const CMachine &machine); 290 293 void cannotSaveMachineState(const CProgress &progress, const QString &strMachineName); -
trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp
r84189 r84217 26 26 #include "UIActionPoolManager.h" 27 27 #include "UICloudMachineSettingsDialog.h" 28 #include "UICloudNetworkingStuff.h" 28 29 #include "UICloudProfileManager.h" 29 30 #include "UIDesktopServices.h" … … 760 761 AssertMsgReturnVoid(!items.isEmpty(), ("At least one item should be selected!\n")); 761 762 762 /* Prepare the list of the machines to be discarded: */ 763 QStringList machineNames; 763 /* Prepare the list of the machines to be discarded/terminated: */ 764 QStringList machinesToDiscard; 765 QStringList machinesToTerminate; 764 766 QList<UIVirtualMachineItem*> itemsToDiscard; 767 QList<UIVirtualMachineItem*> itemsToTerminate; 765 768 foreach (UIVirtualMachineItem *pItem, items) 766 769 { 767 770 if (isActionEnabled(UIActionIndexST_M_Group_S_Discard, QList<UIVirtualMachineItem*>() << pItem)) 768 771 { 769 machineNames << pItem->name(); 770 itemsToDiscard << pItem; 771 } 772 } 773 AssertMsg(!machineNames.isEmpty(), ("This action should not be allowed!")); 774 775 /* Confirm discarding saved VM state: */ 776 if (!msgCenter().confirmDiscardSavedState(machineNames.join(", "))) 772 if (pItem->itemType() == UIVirtualMachineItemType_Local) 773 { 774 machinesToDiscard << pItem->name(); 775 itemsToDiscard << pItem; 776 } 777 else if (pItem->itemType() == UIVirtualMachineItemType_CloudReal) 778 { 779 machinesToTerminate << pItem->name(); 780 itemsToTerminate << pItem; 781 } 782 } 783 } 784 AssertMsg(!machinesToDiscard.isEmpty() || !machinesToTerminate.isEmpty(), ("This action should not be allowed!")); 785 786 /* Confirm discarding/terminating: */ 787 if ( (machinesToDiscard.isEmpty() || !msgCenter().confirmDiscardSavedState(machinesToDiscard.join(", "))) 788 && (machinesToTerminate.isEmpty() || !msgCenter().confirmTerminateCloudInstance(machinesToTerminate.join(", ")))) 777 789 return; 778 790 779 /* For every confirmed item : */791 /* For every confirmed item to discard: */ 780 792 foreach (UIVirtualMachineItem *pItem, itemsToDiscard) 781 793 { 782 794 /* Open a session to modify VM: */ 795 AssertPtrReturnVoid(pItem); 783 796 CSession comSession = uiCommon().openSession(pItem->id()); 784 797 if (comSession.isNull()) … … 793 806 /* Unlock machine finally: */ 794 807 comSession.UnlockMachine(); 808 } 809 810 /* For every confirmed item to terminate: */ 811 foreach (UIVirtualMachineItem *pItem, itemsToTerminate) 812 { 813 /* Get cloud machine: */ 814 AssertPtrReturnVoid(pItem); 815 UIVirtualMachineItemCloud *pCloudItem = pItem->toCloud(); 816 AssertPtrReturnVoid(pCloudItem); 817 CCloudMachine comMachine = pCloudItem->machine(); 818 819 /* Acquire machine name: */ 820 QString strName; 821 if (!cloudMachineName(comMachine, strName)) 822 continue; 823 824 /* Prepare terminate cloud instance progress: */ 825 CProgress comProgress = comMachine.Terminate(); 826 if (!comMachine.isOk()) 827 { 828 msgCenter().cannotTerminateCloudInstance(comMachine); 829 continue; 830 } 831 832 /* Show terminate cloud instance progress: */ 833 msgCenter().showModalProgressDialog(comProgress, strName, ":/progress_media_delete_90px.png"); /// @todo use proper icon 834 if (!comProgress.isOk() || comProgress.GetResultCode() != 0) 835 msgCenter().cannotTerminateCloudInstance(comProgress, strName); 795 836 } 796 837 } … … 1887 1928 UIVirtualMachineItem *pItem = currentItem(); 1888 1929 1930 /* Discard/Terminate action is deremined by 1st item: */ 1931 if ( pItem 1932 && ( pItem->itemType() == UIVirtualMachineItemType_CloudFake 1933 || pItem->itemType() == UIVirtualMachineItemType_CloudReal)) 1934 { 1935 actionPool()->action(UIActionIndexST_M_Group_S_Discard)->toActionPolymorphicMenu()->setState(1); 1936 actionPool()->action(UIActionIndexST_M_Machine_S_Discard)->toActionPolymorphicMenu()->setState(1); 1937 } 1938 else 1939 { 1940 actionPool()->action(UIActionIndexST_M_Group_S_Discard)->toActionPolymorphicMenu()->setState(0); 1941 actionPool()->action(UIActionIndexST_M_Machine_S_Discard)->toActionPolymorphicMenu()->setState(0); 1942 } 1943 1889 1944 /* Start/Show action is deremined by 1st item: */ 1890 1945 if (pItem && pItem->accessible()) -
trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItemCloud.cpp
r84201 r84217 185 185 bool UIVirtualMachineItemCloud::isItemSaved() const 186 186 { 187 return false; 187 return accessible() 188 && machineState() == KCloudMachineState_Stopped; 188 189 } 189 190
Note:
See TracChangeset
for help on using the changeset viewer.

