- Timestamp:
- Jul 29, 2021 2:55:13 PM (3 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 4 edited
-
medium/UIMediumItem.cpp (modified) (7 diffs)
-
medium/UIMediumItem.h (modified) (1 diff)
-
notificationcenter/UINotificationObjects.cpp (modified) (1 diff)
-
notificationcenter/UINotificationObjects.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumItem.cpp
r90300 r90412 242 242 } 243 243 244 void UIMediumItem::sltHandleMediumRemoveRequest(CMedium comMedium) 245 { 246 /* Close medium finally: */ 247 comMedium.Close(); 248 if (!comMedium.isOk()) 249 msgCenter().cannotCloseMedium(medium(), comMedium, treeWidget()); 250 } 251 244 252 void UIMediumItem::refresh() 245 253 { … … 414 422 return false; 415 423 416 /* Remember some of hard-disk attributes: */417 CMedium hardDisk = medium().medium();418 419 424 /* Propose to remove medium storage: */ 420 425 if (!maybeRemoveStorage()) 421 426 return false; 422 423 /* Close hard-disk: */424 hardDisk.Close();425 if (!hardDisk.isOk())426 {427 msgCenter().cannotCloseMedium(medium(), hardDisk, treeWidget());428 return false;429 }430 427 431 428 /* True by default: */ … … 473 470 bool UIMediumItemHD::maybeRemoveStorage() 474 471 { 475 /* Remember some of hard-disk attributes: */ 476 CMedium hardDisk = medium().medium(); 477 QString strLocation = location(); 472 /* Acquire medium: */ 473 CMedium comMedium = medium().medium(); 478 474 479 475 /* We don't want to try to delete inaccessible storage as it will most likely fail. … … 483 479 bool fDeleteStorage = false; 484 480 qulonglong uCapability = 0; 485 QVector<KMediumFormatCapabilities> capabilities = hardDisk.GetMediumFormat().GetCapabilities(); 486 foreach (KMediumFormatCapabilities capability, capabilities) 481 foreach (KMediumFormatCapabilities capability, comMedium.GetMediumFormat().GetCapabilities()) 487 482 uCapability |= capability; 488 483 if (state() != KMediumState_Inaccessible && uCapability & KMediumFormatCapabilities_File) 489 484 { 490 int rc = msgCenter().confirmDeleteHardDiskStorage( strLocation, treeWidget());485 int rc = msgCenter().confirmDeleteHardDiskStorage(location(), treeWidget()); 491 486 if (rc == AlertButton_Cancel) 492 487 return false; … … 497 492 if (fDeleteStorage) 498 493 { 499 /* Prepare delete storage progress: */ 500 CProgress progress = hardDisk.DeleteStorage(); 501 if (!hardDisk.isOk()) 502 { 503 msgCenter().cannotDeleteHardDiskStorage(hardDisk, strLocation, treeWidget()); 504 return false; 505 } 506 /* Show delete storage progress: */ 507 msgCenter().showModalProgressDialog(progress, UIMediumItem::tr("Removing medium ..."), 508 ":/progress_media_delete_90px.png", treeWidget()); 509 if (!progress.isOk() || progress.GetResultCode() != 0) 510 { 511 msgCenter().cannotDeleteHardDiskStorage(progress, strLocation, treeWidget()); 512 return false; 513 } 514 } 494 /* Deleting medium storage first of all: */ 495 UINotificationProgressMediumDeletingStorage *pNotification = new UINotificationProgressMediumDeletingStorage(comMedium); 496 connect(pNotification, &UINotificationProgressMediumDeletingStorage::sigMediumStorageDeleted, 497 this, &UIMediumItemHD::sltHandleMediumRemoveRequest); 498 notificationCenter().append(pNotification); 499 } 500 /* Otherwise go to last step immediatelly: */ 501 else 502 sltHandleMediumRemoveRequest(comMedium); 515 503 516 504 /* True by default: */ … … 539 527 return false; 540 528 541 /* Remember some of optical-disk attributes: */542 CMedium image = medium().medium();543 544 529 /* Close optical-disk: */ 545 image.Close(); 546 if (!image.isOk()) 547 { 548 msgCenter().cannotCloseMedium(medium(), image, treeWidget()); 549 return false; 550 } 530 sltHandleMediumRemoveRequest(medium().medium()); 551 531 552 532 /* True by default: */ … … 608 588 return false; 609 589 610 /* Remember some of floppy-disk attributes: */611 CMedium image = medium().medium();612 613 590 /* Close floppy-disk: */ 614 image.Close(); 615 if (!image.isOk()) 616 { 617 msgCenter().cannotCloseMedium(medium(), image, treeWidget()); 618 return false; 619 } 591 sltHandleMediumRemoveRequest(medium().medium()); 620 592 621 593 /* True by default: */ -
trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumItem.h
r90300 r90412 124 124 /** Handles medium move progress result. */ 125 125 void sltHandleMoveProgressFinished(); 126 127 /** Handles @a comMedium remove request. */ 128 void sltHandleMediumRemoveRequest(CMedium comMedium); 126 129 127 130 private: -
trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp
r90411 r90412 175 175 176 176 /********************************************************************************************************************************* 177 * Class UINotificationProgressMediumDeletingStorage implementation. * 178 *********************************************************************************************************************************/ 179 180 UINotificationProgressMediumDeletingStorage::UINotificationProgressMediumDeletingStorage(const CMedium &comMedium) 181 : m_comMedium(comMedium) 182 { 183 connect(this, &UINotificationProgress::sigProgressFinished, 184 this, &UINotificationProgressMediumDeletingStorage::sltHandleProgressFinished); 185 } 186 187 QString UINotificationProgressMediumDeletingStorage::name() const 188 { 189 return UINotificationProgress::tr("Deleting medium storage ..."); 190 } 191 192 QString UINotificationProgressMediumDeletingStorage::details() const 193 { 194 return UINotificationProgress::tr("<b>Location:</b> %1").arg(m_strLocation); 195 } 196 197 CProgress UINotificationProgressMediumDeletingStorage::createProgress(COMResult &comResult) 198 { 199 /* Acquire location: */ 200 m_strLocation = m_comMedium.GetLocation(); 201 if (!m_comMedium.isOk()) 202 { 203 /* Store COM result: */ 204 comResult = m_comMedium; 205 /* Return progress-wrapper: */ 206 return CProgress(); 207 } 208 209 /* Initialize progress-wrapper: */ 210 CProgress comProgress = m_comMedium.DeleteStorage(); 211 /* Store COM result: */ 212 comResult = m_comMedium; 213 /* Return progress-wrapper: */ 214 return comProgress; 215 } 216 217 void UINotificationProgressMediumDeletingStorage::sltHandleProgressFinished() 218 { 219 if (!error().isEmpty()) 220 emit sigMediumStorageDeleted(m_comMedium); 221 } 222 223 224 /********************************************************************************************************************************* 177 225 * Class UINotificationProgressMachineCopy implementation. * 178 226 *********************************************************************************************************************************/ -
trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h
r90411 r90412 166 166 /** Holds the final location. */ 167 167 QString m_strTo; 168 }; 169 170 /** UINotificationProgress extension for deleting medium storage functionality. */ 171 class SHARED_LIBRARY_STUFF UINotificationProgressMediumDeletingStorage : public UINotificationProgress 172 { 173 Q_OBJECT; 174 175 signals: 176 177 /** Notifies listeners about @a comMedium storage was deleted. */ 178 void sigMediumStorageDeleted(const CMedium &comMedium); 179 180 public: 181 182 /** Constructs deleting medium storage notification-progress. 183 * @param comMedium Brings the medium which storage being deleted. */ 184 UINotificationProgressMediumDeletingStorage(const CMedium &comMedium); 185 186 protected: 187 188 /** Returns object name. */ 189 virtual QString name() const /* override final */; 190 /** Returns object details. */ 191 virtual QString details() const /* override final */; 192 /** Creates and returns started progress-wrapper. */ 193 virtual CProgress createProgress(COMResult &comResult) /* override final */; 194 195 private slots: 196 197 /** Handles signal about progress being finished. */ 198 void sltHandleProgressFinished(); 199 200 private: 201 202 /** Holds the medium which storage being deleted. */ 203 CMedium m_comMedium; 204 /** Holds the medium location. */ 205 QString m_strLocation; 168 206 }; 169 207
Note:
See TracChangeset
for help on using the changeset viewer.

