Changeset 50964 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- Apr 3, 2014 2:18:01 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 93122
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
r50960 r50964 706 706 /* Create medium-item for corresponding medium: */ 707 707 UIMediumItem *pMediumItem = createMediumItem(medium); 708 AssertPtrReturnVoid(pMediumItem); 708 709 /* Make sure medium-item was created: */ 710 if (!pMediumItem) 711 return; 709 712 710 713 /* If medium-item change allowed and … … 727 730 { 728 731 /* Disable 'refresh' action: */ 729 m_pActionRefresh->setEnabled(false); 732 if (m_pActionRefresh) 733 m_pActionRefresh->setEnabled(false); 730 734 731 735 /* Reset and show progress-bar: */ 732 m_pProgressBar->setMaximum(vboxGlobal().mediumIDs().size()); 733 m_pProgressBar->setValue(0); 734 m_pProgressBar->show(); 736 if (m_pProgressBar) 737 { 738 m_pProgressBar->setMaximum(vboxGlobal().mediumIDs().size()); 739 m_pProgressBar->setValue(0); 740 m_pProgressBar->show(); 741 } 735 742 736 743 /* Reset inaccessibility flags: */ … … 740 747 741 748 /* Reset tab-widget icons: */ 742 mTabWidget->setTabIcon(TabIndex_HD, m_iconHD); 743 mTabWidget->setTabIcon(TabIndex_CD, m_iconCD); 744 mTabWidget->setTabIcon(TabIndex_FD, m_iconFD); 749 if (mTabWidget) 750 { 751 mTabWidget->setTabIcon(TabIndex_HD, m_iconHD); 752 mTabWidget->setTabIcon(TabIndex_CD, m_iconCD); 753 mTabWidget->setTabIcon(TabIndex_FD, m_iconFD); 754 } 745 755 746 756 /* Repopulate tree-widgets content: */ … … 769 779 770 780 /* Advance progress-bar: */ 771 m_pProgressBar->setValue(m_pProgressBar->value() + 1); 781 if (m_pProgressBar) 782 m_pProgressBar->setValue(m_pProgressBar->value() + 1); 772 783 } 773 784 … … 775 786 { 776 787 /* Hide progress-bar: */ 777 m_pProgressBar->hide(); 788 if (m_pProgressBar) 789 m_pProgressBar->hide(); 778 790 779 791 /* Enable 'refresh' action: */ 780 m_pActionRefresh->setEnabled(true); 792 if (m_pActionRefresh) 793 m_pActionRefresh->setEnabled(true); 781 794 782 795 /* Re-fetch all current medium-items: */ … … 846 859 /* Get current tree-widget: */ 847 860 QTreeWidget *pTreeWidget = currentTreeWidget(); 848 849 /* If another tree-widget was focused before, 850 * move focus to current tree-widget: */ 851 if (qobject_cast<QTreeWidget*>(focusWidget())) 852 pTreeWidget->setFocus(); 861 if (pTreeWidget) 862 { 863 /* If another tree-widget was focused before, 864 * move focus to current tree-widget: */ 865 if (qobject_cast<QTreeWidget*>(focusWidget())) 866 pTreeWidget->setFocus(); 867 } 853 868 854 869 /* Update action icons: */ … … 881 896 void UIMediumManager::sltHandleContextMenuCall(const QPoint &position) 882 897 { 883 /* Get current tree-widget / item: */898 /* Get current tree-widget: */ 884 899 QTreeWidget *pTreeWidget = currentTreeWidget(); 900 AssertPtrReturnVoid(pTreeWidget); 901 902 /* Make sure underlaying item was found: */ 885 903 QTreeWidgetItem *pItem = pTreeWidget->itemAt(position); 886 887 /* Skip further actions if item was not found: */888 904 if (!pItem) 889 905 return; … … 891 907 /* Make sure that item is current one: */ 892 908 setCurrentItem(pTreeWidget, pItem); 909 893 910 /* Show item context menu: */ 894 m_pContextMenu->exec(pTreeWidget->viewport()->mapToGlobal(position)); 911 if (m_pContextMenu) 912 m_pContextMenu->exec(pTreeWidget->viewport()->mapToGlobal(position)); 895 913 } 896 914 … … 1003 1021 /* Create copy-action: */ 1004 1022 m_pActionCopy = new QAction(this); 1023 AssertPtrReturnVoid(m_pActionCopy); 1005 1024 { 1006 1025 /* Configure copy-action: */ … … 1011 1030 /* Create modify-action: */ 1012 1031 m_pActionModify = new QAction(this); 1032 AssertPtrReturnVoid(m_pActionModify); 1013 1033 { 1014 1034 /* Configure modify-action: */ … … 1019 1039 /* Create remove-action: */ 1020 1040 m_pActionRemove = new QAction(this); 1041 AssertPtrReturnVoid(m_pActionRemove); 1021 1042 { 1022 1043 /* Configure remove-action: */ … … 1027 1048 /* Create release-action: */ 1028 1049 m_pActionRelease = new QAction(this); 1050 AssertPtrReturnVoid(m_pActionRelease); 1029 1051 { 1030 1052 /* Configure release-action: */ … … 1035 1057 /* Create refresh-action: */ 1036 1058 m_pActionRefresh = new QAction(this); 1059 AssertPtrReturnVoid(m_pActionRefresh); 1037 1060 { 1038 1061 /* Configure refresh-action: */ … … 1054 1077 /* Create menu-bar-menu: */ 1055 1078 m_pMenu = menuBar()->addMenu(QString()); 1079 AssertPtrReturnVoid(m_pMenu); 1056 1080 { 1057 1081 /* Configure menu-bar-menu: */ … … 1068 1092 /* Create context-menu: */ 1069 1093 m_pContextMenu = new QMenu(this); 1094 AssertPtrReturnVoid(m_pContextMenu); 1070 1095 { 1071 1096 /* Configure contex-menu: */ … … 1091 1116 /* Create tool-bar: */ 1092 1117 m_pToolBar = new UIToolBar(this); 1118 AssertPtrReturnVoid(m_pToolBar); 1093 1119 { 1094 1120 /* Configure tool-bar: */ … … 1097 1123 m_pToolBar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); 1098 1124 /* Add tool-bar actions: */ 1099 m_pToolBar->addAction(m_pActionCopy); 1100 m_pToolBar->addAction(m_pActionModify); 1101 m_pToolBar->addAction(m_pActionRemove); 1102 m_pToolBar->addAction(m_pActionRelease); 1103 m_pToolBar->addAction(m_pActionRefresh); 1125 if (m_pActionCopy) 1126 m_pToolBar->addAction(m_pActionCopy); 1127 if (m_pActionModify) 1128 m_pToolBar->addAction(m_pActionModify); 1129 if (m_pActionRemove) 1130 m_pToolBar->addAction(m_pActionRemove); 1131 if (m_pActionRelease) 1132 m_pToolBar->addAction(m_pActionRelease); 1133 if (m_pActionRefresh) 1134 m_pToolBar->addAction(m_pActionRefresh); 1104 1135 /* Integrate tool-bar into dialog: */ 1105 1136 QVBoxLayout *pMainLayout = qobject_cast<QVBoxLayout*>(centralWidget()->layout()); … … 1213 1244 /* Create progress-bar: */ 1214 1245 m_pProgressBar = new UIEnumerationProgressBar; 1246 AssertPtrReturnVoid(m_pProgressBar); 1215 1247 { 1216 1248 /* Configure progress-bar: */ … … 1242 1274 /* Clear tree-widgets: */ 1243 1275 QTreeWidget *pTreeWidgetHD = treeWidget(UIMediumType_HardDisk); 1276 if (pTreeWidgetHD) 1277 { 1278 setCurrentItem(pTreeWidgetHD, 0); 1279 pTreeWidgetHD->clear(); 1280 } 1244 1281 QTreeWidget *pTreeWidgetCD = treeWidget(UIMediumType_DVD); 1282 if (pTreeWidgetCD) 1283 { 1284 setCurrentItem(pTreeWidgetCD, 0); 1285 pTreeWidgetCD->clear(); 1286 } 1245 1287 QTreeWidget *pTreeWidgetFD = treeWidget(UIMediumType_Floppy); 1246 setCurrentItem(pTreeWidgetHD, 0); 1247 setCurrentItem(pTreeWidgetCD, 0); 1248 setCurrentItem(pTreeWidgetFD, 0); 1249 pTreeWidgetHD->clear(); 1250 pTreeWidgetCD->clear(); 1251 pTreeWidgetFD->clear(); 1288 if (pTreeWidgetFD) 1289 { 1290 setCurrentItem(pTreeWidgetFD, 0); 1291 pTreeWidgetFD->clear(); 1292 } 1252 1293 1253 1294 /* Create medium-items (do not change current one): */ … … 1258 1299 1259 1300 /* Select first item as current one if nothing selected: */ 1260 if ( !mediumItem(UIMediumType_HardDisk))1301 if (pTreeWidgetHD && !mediumItem(UIMediumType_HardDisk)) 1261 1302 if (QTreeWidgetItem *pItem = pTreeWidgetHD->topLevelItem(0)) 1262 1303 setCurrentItem(pTreeWidgetHD, pItem); 1263 if ( !mediumItem(UIMediumType_DVD))1304 if (pTreeWidgetCD && !mediumItem(UIMediumType_DVD)) 1264 1305 if (QTreeWidgetItem *pItem = pTreeWidgetCD->topLevelItem(0)) 1265 1306 setCurrentItem(pTreeWidgetCD, pItem); 1266 if ( !mediumItem(UIMediumType_Floppy))1307 if (pTreeWidgetFD && !mediumItem(UIMediumType_Floppy)) 1267 1308 if (QTreeWidgetItem *pItem = pTreeWidgetFD->topLevelItem(0)) 1268 1309 setCurrentItem(pTreeWidgetFD, pItem); … … 1309 1350 /* Calculate actions accessibility: */ 1310 1351 bool fNotInEnumeration = !vboxGlobal().isMediumEnumerationInProgress(); 1311 bool fActionEnabledCopy = currentMediumType() == UIMediumType_HardDisk &&1312 fNotInEnumeration && pMediumItem && checkMediumFor(pMediumItem, Action_Copy);1313 bool fActionEnabledModify = currentMediumType() == UIMediumType_HardDisk &&1314 fNotInEnumeration && pMediumItem && checkMediumFor(pMediumItem, Action_Modify);1315 bool fActionEnabledRemove = fNotInEnumeration && pMediumItem && checkMediumFor(pMediumItem, Action_Remove);1316 bool fActionEnabledRelease = fNotInEnumeration && pMediumItem && checkMediumFor(pMediumItem, Action_Release);1317 1352 1318 1353 /* Apply actions accessibility: */ 1319 m_pActionCopy->setEnabled(fActionEnabledCopy); 1320 m_pActionModify->setEnabled(fActionEnabledModify); 1321 m_pActionRemove->setEnabled(fActionEnabledRemove); 1322 m_pActionRelease->setEnabled(fActionEnabledRelease); 1354 if (m_pActionCopy) 1355 { 1356 bool fActionEnabledCopy = currentMediumType() == UIMediumType_HardDisk && 1357 fNotInEnumeration && pMediumItem && checkMediumFor(pMediumItem, Action_Copy); 1358 m_pActionCopy->setEnabled(fActionEnabledCopy); 1359 } 1360 if (m_pActionModify) 1361 { 1362 bool fActionEnabledModify = currentMediumType() == UIMediumType_HardDisk && 1363 fNotInEnumeration && pMediumItem && checkMediumFor(pMediumItem, Action_Modify); 1364 m_pActionModify->setEnabled(fActionEnabledModify); 1365 } 1366 if (m_pActionRemove) 1367 { 1368 bool fActionEnabledRemove = fNotInEnumeration && pMediumItem && checkMediumFor(pMediumItem, Action_Remove); 1369 m_pActionRemove->setEnabled(fActionEnabledRemove); 1370 } 1371 if (m_pActionRelease) 1372 { 1373 bool fActionEnabledRelease = fNotInEnumeration && pMediumItem && checkMediumFor(pMediumItem, Action_Release); 1374 m_pActionRelease->setEnabled(fActionEnabledRelease); 1375 } 1323 1376 } 1324 1377 1325 1378 void UIMediumManager::updateActionIcons() 1326 1379 { 1327 QString strPrefix; 1328 switch (currentMediumType()) 1329 { 1330 case UIMediumType_HardDisk: strPrefix = "hd"; break; 1331 case UIMediumType_DVD: strPrefix = "cd"; break; 1332 case UIMediumType_Floppy: strPrefix = "fd"; break; 1333 default: break; 1334 } 1335 AssertReturnVoid(!strPrefix.isNull()); 1336 m_pActionCopy->setIcon(UIIconPool::iconSetFull(QSize(22, 22), QSize(16, 16), 1337 QString(":/%1_copy_22px.png").arg(strPrefix), 1338 QString(":/%1_copy_16px.png").arg(strPrefix), 1339 QString(":/%1_copy_disabled_22px.png").arg(strPrefix), 1340 QString(":/%1_copy_disabled_16px.png").arg(strPrefix))); 1341 m_pActionModify->setIcon(UIIconPool::iconSetFull(QSize(22, 22), QSize(16, 16), 1342 QString(":/%1_modify_22px.png").arg(strPrefix), 1343 QString(":/%1_modify_16px.png").arg(strPrefix), 1344 QString(":/%1_modify_disabled_22px.png").arg(strPrefix), 1345 QString(":/%1_modify_disabled_16px.png").arg(strPrefix))); 1346 m_pActionRemove->setIcon(UIIconPool::iconSetFull(QSize(22, 22), QSize(16, 16), 1347 QString(":/%1_remove_22px.png").arg(strPrefix), 1348 QString(":/%1_remove_16px.png").arg(strPrefix), 1349 QString(":/%1_remove_disabled_22px.png").arg(strPrefix), 1350 QString(":/%1_remove_disabled_16px.png").arg(strPrefix))); 1351 m_pActionRelease->setIcon(UIIconPool::iconSetFull(QSize(22, 22), QSize(16, 16), 1352 QString(":/%1_release_22px.png").arg(strPrefix), 1353 QString(":/%1_release_16px.png").arg(strPrefix), 1354 QString(":/%1_release_disabled_22px.png").arg(strPrefix), 1355 QString(":/%1_release_disabled_16px.png").arg(strPrefix))); 1356 if (m_pActionRefresh->icon().isNull()) 1380 QString strPrefix = "hd"; 1381 if (mTabWidget) 1382 { 1383 switch (currentMediumType()) 1384 { 1385 case UIMediumType_HardDisk: strPrefix = "hd"; break; 1386 case UIMediumType_DVD: strPrefix = "cd"; break; 1387 case UIMediumType_Floppy: strPrefix = "fd"; break; 1388 default: break; 1389 } 1390 } 1391 if (m_pActionCopy) 1392 m_pActionCopy->setIcon(UIIconPool::iconSetFull(QSize(22, 22), QSize(16, 16), 1393 QString(":/%1_copy_22px.png").arg(strPrefix), 1394 QString(":/%1_copy_16px.png").arg(strPrefix), 1395 QString(":/%1_copy_disabled_22px.png").arg(strPrefix), 1396 QString(":/%1_copy_disabled_16px.png").arg(strPrefix))); 1397 if (m_pActionModify) 1398 m_pActionModify->setIcon(UIIconPool::iconSetFull(QSize(22, 22), QSize(16, 16), 1399 QString(":/%1_modify_22px.png").arg(strPrefix), 1400 QString(":/%1_modify_16px.png").arg(strPrefix), 1401 QString(":/%1_modify_disabled_22px.png").arg(strPrefix), 1402 QString(":/%1_modify_disabled_16px.png").arg(strPrefix))); 1403 if (m_pActionRemove) 1404 m_pActionRemove->setIcon(UIIconPool::iconSetFull(QSize(22, 22), QSize(16, 16), 1405 QString(":/%1_remove_22px.png").arg(strPrefix), 1406 QString(":/%1_remove_16px.png").arg(strPrefix), 1407 QString(":/%1_remove_disabled_22px.png").arg(strPrefix), 1408 QString(":/%1_remove_disabled_16px.png").arg(strPrefix))); 1409 if (m_pActionRelease) 1410 m_pActionRelease->setIcon(UIIconPool::iconSetFull(QSize(22, 22), QSize(16, 16), 1411 QString(":/%1_release_22px.png").arg(strPrefix), 1412 QString(":/%1_release_16px.png").arg(strPrefix), 1413 QString(":/%1_release_disabled_22px.png").arg(strPrefix), 1414 QString(":/%1_release_disabled_16px.png").arg(strPrefix))); 1415 if (m_pActionRefresh && m_pActionRefresh->icon().isNull()) 1357 1416 m_pActionRefresh->setIcon(UIIconPool::iconSetFull(QSize(22, 22), QSize(16, 16), 1358 1417 ":/refresh_22px.png", ":/refresh_16px.png", … … 1401 1460 *pfInaccessible = true; 1402 1461 1403 mTabWidget->setTabIcon(iTab, vboxGlobal().warningIcon()); 1462 if (mTabWidget) 1463 mTabWidget->setTabIcon(iTab, vboxGlobal().warningIcon()); 1404 1464 1405 1465 break; … … 1435 1495 } 1436 1496 1437 if (*pfInaccessible) 1438 mTabWidget->setTabIcon(iTab, vboxGlobal().warningIcon()); 1439 else 1440 mTabWidget->setTabIcon(iTab, *pIcon); 1497 if (mTabWidget) 1498 { 1499 if (*pfInaccessible) 1500 mTabWidget->setTabIcon(iTab, vboxGlobal().warningIcon()); 1501 else 1502 mTabWidget->setTabIcon(iTab, *pIcon); 1503 } 1441 1504 1442 1505 break; … … 1475 1538 { 1476 1539 /* Just clear information panes: */ 1477 m_pTypePane->clear(); 1478 m_pLocationPane->clear(); 1479 m_pFormatPane->clear(); 1480 m_pDetailsPane->clear(); 1481 m_pUsagePane->clear(); 1540 if (m_pTypePane) 1541 m_pTypePane->clear(); 1542 if (m_pLocationPane) 1543 m_pLocationPane->clear(); 1544 if (m_pFormatPane) 1545 m_pFormatPane->clear(); 1546 if (m_pDetailsPane) 1547 m_pDetailsPane->clear(); 1548 if (m_pUsagePane) 1549 m_pUsagePane->clear(); 1482 1550 } 1483 1551 /* If current item is set: */ … … 1489 1557 formatPaneText(QApplication::translate("VBoxMediaManagerDlg", "<i>Not Attached</i>"), false) : 1490 1558 formatPaneText(pCurrentItem->usage()); 1491 m_pTypePane->setText(pCurrentItem->hardDiskType()); 1492 m_pLocationPane->setText(formatPaneText(pCurrentItem->location(), true, "end")); 1493 m_pFormatPane->setText(pCurrentItem->hardDiskFormat()); 1494 m_pDetailsPane->setText(strDetails); 1495 m_pUsagePane->setText(strUsage); 1559 if (m_pTypePane) 1560 m_pTypePane->setText(pCurrentItem->hardDiskType()); 1561 if (m_pLocationPane) 1562 m_pLocationPane->setText(formatPaneText(pCurrentItem->location(), true, "end")); 1563 if (m_pFormatPane) 1564 m_pFormatPane->setText(pCurrentItem->hardDiskFormat()); 1565 if (m_pDetailsPane) 1566 m_pDetailsPane->setText(strDetails); 1567 if (m_pUsagePane) 1568 m_pUsagePane->setText(strUsage); 1496 1569 } 1497 1570 1498 1571 /* Enable/disable information-panes container: */ 1499 mHDContainer->setEnabled(pCurrentItem); 1572 if (mHDContainer) 1573 mHDContainer->setEnabled(pCurrentItem); 1500 1574 } 1501 1575 … … 1509 1583 { 1510 1584 /* Just clear information panes: */ 1511 mIpCD1->clear(); 1512 mIpCD2->clear(); 1585 if (mIpCD1) 1586 mIpCD1->clear(); 1587 if (mIpCD2) 1588 mIpCD2->clear(); 1513 1589 } 1514 1590 /* If current item is set: */ … … 1519 1595 formatPaneText(QApplication::translate("VBoxMediaManagerDlg", "<i>Not Attached</i>"), false) : 1520 1596 formatPaneText(pCurrentItem->usage()); 1521 mIpCD1->setText(formatPaneText(pCurrentItem->location(), true, "end")); 1522 mIpCD2->setText(strUsage); 1597 if (mIpCD1) 1598 mIpCD1->setText(formatPaneText(pCurrentItem->location(), true, "end")); 1599 if (mIpCD2) 1600 mIpCD2->setText(strUsage); 1523 1601 } 1524 1602 1525 1603 /* Enable/disable information-panes container: */ 1526 mCDContainer->setEnabled(pCurrentItem); 1604 if (mCDContainer) 1605 mCDContainer->setEnabled(pCurrentItem); 1527 1606 } 1528 1607 … … 1536 1615 { 1537 1616 /* Just clear information panes: */ 1538 mIpFD1->clear(); 1539 mIpFD2->clear(); 1617 if (mIpFD1) 1618 mIpFD1->clear(); 1619 if (mIpFD2) 1620 mIpFD2->clear(); 1540 1621 } 1541 1622 /* If current item is set: */ … … 1546 1627 formatPaneText(QApplication::translate("VBoxMediaManagerDlg", "<i>Not Attached</i>"), false) : 1547 1628 formatPaneText(pCurrentItem->usage()); 1548 mIpFD1->setText(formatPaneText(pCurrentItem->location(), true, "end")); 1549 mIpFD2->setText(strUsage); 1629 if (mIpFD1) 1630 mIpFD1->setText(formatPaneText(pCurrentItem->location(), true, "end")); 1631 if (mIpFD2) 1632 mIpFD2->setText(strUsage); 1550 1633 } 1551 1634 1552 1635 /* Enable/disable information-panes container: */ 1553 mFDContainer->setEnabled(pCurrentItem); 1636 if (mFDContainer) 1637 mFDContainer->setEnabled(pCurrentItem); 1554 1638 } 1555 1639 … … 1573 1657 void UIMediumManager::retranslateUi() 1574 1658 { 1575 /* Translate uic generated strings: */ 1576 Ui::UIMediumManager::retranslateUi(this); 1577 1578 /* Menu: */ 1579 m_pMenu->setTitle(QApplication::translate("VBoxMediaManagerDlg", "&Actions")); 1580 /* Action names: */ 1581 m_pActionCopy->setText(QApplication::translate("VBoxMediaManagerDlg", "&Copy...")); 1582 m_pActionModify->setText(QApplication::translate("VBoxMediaManagerDlg", "&Modify...")); 1583 m_pActionRemove->setText(QApplication::translate("VBoxMediaManagerDlg", "R&emove")); 1584 m_pActionRelease->setText(QApplication::translate("VBoxMediaManagerDlg", "Re&lease")); 1585 m_pActionRefresh->setText(QApplication::translate("VBoxMediaManagerDlg", "Re&fresh")); 1586 /* Action tool-tips: */ 1587 m_pActionCopy->setToolTip(m_pActionCopy->text().remove('&') + QString(" (%1)").arg(m_pActionCopy->shortcut().toString())); 1588 m_pActionModify->setToolTip(m_pActionModify->text().remove('&') + QString(" (%1)").arg(m_pActionModify->shortcut().toString())); 1589 m_pActionRemove->setToolTip(m_pActionRemove->text().remove('&') + QString(" (%1)").arg(m_pActionRemove->shortcut().toString())); 1590 m_pActionRelease->setToolTip(m_pActionRelease->text().remove('&') + QString(" (%1)").arg(m_pActionRelease->shortcut().toString())); 1591 m_pActionRefresh->setToolTip(m_pActionRefresh->text().remove('&') + QString(" (%1)").arg(m_pActionRefresh->shortcut().toString())); 1592 /* Action status-tips: */ 1593 m_pActionCopy->setStatusTip(QApplication::translate("VBoxMediaManagerDlg", "Copy an existing disk image file")); 1594 m_pActionModify->setStatusTip(QApplication::translate("VBoxMediaManagerDlg", "Modify the attributes of the selected disk image file")); 1595 m_pActionRemove->setStatusTip(QApplication::translate("VBoxMediaManagerDlg", "Remove the selected disk image file")); 1596 m_pActionRelease->setStatusTip(QApplication::translate("VBoxMediaManagerDlg", "Release the selected disk image file by detaching it from the machines")); 1597 m_pActionRefresh->setStatusTip(QApplication::translate("VBoxMediaManagerDlg", "Refresh the list of disk image files")); 1598 1599 /* Tool-bar: */ 1659 // TODO: Rename translation context in .nls files! 1660 /* Most of these translations were moved from VBoxMediaManagerDlg.ui file 1661 * to keep old translation context.. */ 1662 1663 /* Translate window title: */ 1664 setWindowTitle(QApplication::translate("VBoxMediaManagerDlg", "Virtual Media Manager")); 1665 1666 /* Translate menu: */ 1667 if (m_pMenu) 1668 m_pMenu->setTitle(QApplication::translate("VBoxMediaManagerDlg", "&Actions")); 1669 1670 /* Translate actions: */ 1671 if (m_pActionCopy) 1672 { 1673 m_pActionCopy->setText(QApplication::translate("VBoxMediaManagerDlg", "&Copy...")); 1674 m_pActionCopy->setToolTip(m_pActionCopy->text().remove('&') + QString(" (%1)").arg(m_pActionCopy->shortcut().toString())); 1675 m_pActionCopy->setStatusTip(QApplication::translate("VBoxMediaManagerDlg", "Copy an existing disk image file")); 1676 } 1677 if (m_pActionModify) 1678 { 1679 m_pActionModify->setText(QApplication::translate("VBoxMediaManagerDlg", "&Modify...")); 1680 m_pActionModify->setToolTip(m_pActionModify->text().remove('&') + QString(" (%1)").arg(m_pActionModify->shortcut().toString())); 1681 m_pActionModify->setStatusTip(QApplication::translate("VBoxMediaManagerDlg", "Modify the attributes of the selected disk image file")); 1682 } 1683 if (m_pActionRemove) 1684 { 1685 m_pActionRemove->setText(QApplication::translate("VBoxMediaManagerDlg", "R&emove")); 1686 m_pActionRemove->setToolTip(m_pActionRemove->text().remove('&') + QString(" (%1)").arg(m_pActionRemove->shortcut().toString())); 1687 m_pActionRemove->setStatusTip(QApplication::translate("VBoxMediaManagerDlg", "Remove the selected disk image file")); 1688 } 1689 if (m_pActionRelease) 1690 { 1691 m_pActionRelease->setText(QApplication::translate("VBoxMediaManagerDlg", "Re&lease")); 1692 m_pActionRelease->setToolTip(m_pActionRelease->text().remove('&') + QString(" (%1)").arg(m_pActionRelease->shortcut().toString())); 1693 m_pActionRelease->setStatusTip(QApplication::translate("VBoxMediaManagerDlg", "Release the selected disk image file by detaching it from the machines")); 1694 } 1695 if (m_pActionRefresh) 1696 { 1697 m_pActionRefresh->setText(QApplication::translate("VBoxMediaManagerDlg", "Re&fresh")); 1698 m_pActionRefresh->setToolTip(m_pActionRefresh->text().remove('&') + QString(" (%1)").arg(m_pActionRefresh->shortcut().toString())); 1699 m_pActionRefresh->setStatusTip(QApplication::translate("VBoxMediaManagerDlg", "Refresh the list of disk image files")); 1700 } 1701 1702 /* Translate tool-bar: */ 1600 1703 #ifdef Q_WS_MAC 1601 1704 # ifdef QT_MAC_USE_COCOA … … 1604 1707 the with doesn't match if the text increase. So manually adjust the size 1605 1708 after changing the text. */ 1606 m_pToolBar->updateLayout(); 1709 if (m_pToolBar) 1710 m_pToolBar->updateLayout(); 1607 1711 # endif /* QT_MAC_USE_COCOA */ 1608 1712 #endif /* Q_WS_MAC */ 1609 1713 1610 // TODO: Just rename translation context in .nls files! 1611 /* Translations moved from VBoxMediaManagerDlg.ui file to keep old translation context: */ 1612 setWindowTitle(QApplication::translate("VBoxMediaManagerDlg", "Virtual Media Manager")); 1613 mTabWidget->setTabText(0, tr("&Hard drives")); 1714 /* Translate tab-widget: */ 1715 if (mTabWidget) 1716 { 1717 mTabWidget->setTabText(TabIndex_HD, tr("&Hard drives")); 1718 mTabWidget->setTabText(TabIndex_CD, tr("&Optical disks")); 1719 mTabWidget->setTabText(TabIndex_FD, tr("&Floppy disks")); 1720 } 1721 1722 /* Translate HD tree-widget: */ 1614 1723 QTreeWidget *pTreeWidgetHD = treeWidget(UIMediumType_HardDisk); 1615 pTreeWidgetHD->headerItem()->setText(0, QApplication::translate("VBoxMediaManagerDlg", "Name")); 1616 pTreeWidgetHD->headerItem()->setText(1, QApplication::translate("VBoxMediaManagerDlg", "Virtual Size")); 1617 pTreeWidgetHD->headerItem()->setText(2, QApplication::translate("VBoxMediaManagerDlg", "Actual Size")); 1618 m_pTypeLabel->setText(QApplication::translate("VBoxMediaManagerDlg", "Type:")); 1619 m_pLocationLabel->setText(QApplication::translate("VBoxMediaManagerDlg", "Location:")); 1620 m_pFormatLabel->setText(QApplication::translate("VBoxMediaManagerDlg", "Format:")); 1621 m_pDetailsLabel->setText(QApplication::translate("VBoxMediaManagerDlg", "Storage details:")); 1622 m_pUsageLabel->setText(QApplication::translate("VBoxMediaManagerDlg", "Attached to:")); 1623 mTabWidget->setTabText(1, tr("&Optical disks")); 1724 if (pTreeWidgetHD) 1725 { 1726 pTreeWidgetHD->headerItem()->setText(0, QApplication::translate("VBoxMediaManagerDlg", "Name")); 1727 pTreeWidgetHD->headerItem()->setText(1, QApplication::translate("VBoxMediaManagerDlg", "Virtual Size")); 1728 pTreeWidgetHD->headerItem()->setText(2, QApplication::translate("VBoxMediaManagerDlg", "Actual Size")); 1729 } 1730 1731 /* Translate HD information-labels: */ 1732 if (m_pTypeLabel) 1733 m_pTypeLabel->setText(QApplication::translate("VBoxMediaManagerDlg", "Type:")); 1734 if (m_pLocationLabel) 1735 m_pLocationLabel->setText(QApplication::translate("VBoxMediaManagerDlg", "Location:")); 1736 if (m_pFormatLabel) 1737 m_pFormatLabel->setText(QApplication::translate("VBoxMediaManagerDlg", "Format:")); 1738 if (m_pDetailsLabel) 1739 m_pDetailsLabel->setText(QApplication::translate("VBoxMediaManagerDlg", "Storage details:")); 1740 if (m_pUsageLabel) 1741 m_pUsageLabel->setText(QApplication::translate("VBoxMediaManagerDlg", "Attached to:")); 1742 1743 /* Translate CD tree-widget: */ 1624 1744 QTreeWidget *pTreeWidgetCD = treeWidget(UIMediumType_DVD); 1625 pTreeWidgetCD->headerItem()->setText(0, QApplication::translate("VBoxMediaManagerDlg", "Name")); 1626 pTreeWidgetCD->headerItem()->setText(1, QApplication::translate("VBoxMediaManagerDlg", "Size")); 1627 mLbCD1->setText(QApplication::translate("VBoxMediaManagerDlg", "Location:")); 1628 mLbCD2->setText(QApplication::translate("VBoxMediaManagerDlg", "Attached to:")); 1629 mTabWidget->setTabText(2, tr("&Floppy disks")); 1745 if (pTreeWidgetCD) 1746 { 1747 pTreeWidgetCD->headerItem()->setText(0, QApplication::translate("VBoxMediaManagerDlg", "Name")); 1748 pTreeWidgetCD->headerItem()->setText(1, QApplication::translate("VBoxMediaManagerDlg", "Size")); 1749 } 1750 1751 /* Translate CD information-labels: */ 1752 if (mLbCD1) 1753 mLbCD1->setText(QApplication::translate("VBoxMediaManagerDlg", "Location:")); 1754 if (mLbCD2) 1755 mLbCD2->setText(QApplication::translate("VBoxMediaManagerDlg", "Attached to:")); 1756 1757 /* Translate FD tree-widget: */ 1630 1758 QTreeWidget *pTreeWidgetFD = treeWidget(UIMediumType_Floppy); 1631 pTreeWidgetFD->headerItem()->setText(0, QApplication::translate("VBoxMediaManagerDlg", "Name")); 1632 pTreeWidgetFD->headerItem()->setText(1, QApplication::translate("VBoxMediaManagerDlg", "Size")); 1633 mLbFD1->setText(QApplication::translate("VBoxMediaManagerDlg", "Location:")); 1634 mLbFD2->setText(QApplication::translate("VBoxMediaManagerDlg", "Attached to:")); 1635 1636 /* Progress-bar: */ 1637 m_pProgressBar->setText(QApplication::translate("VBoxMediaManagerDlg", "Checking accessibility")); 1759 if (pTreeWidgetFD) 1760 { 1761 pTreeWidgetFD->headerItem()->setText(0, QApplication::translate("VBoxMediaManagerDlg", "Name")); 1762 pTreeWidgetFD->headerItem()->setText(1, QApplication::translate("VBoxMediaManagerDlg", "Size")); 1763 } 1764 1765 /* Translate FD information-labels: */ 1766 if (mLbFD1) 1767 mLbFD1->setText(QApplication::translate("VBoxMediaManagerDlg", "Location:")); 1768 if (mLbFD2) 1769 mLbFD2->setText(QApplication::translate("VBoxMediaManagerDlg", "Attached to:")); 1770 1771 /* Translate progress-bar: */ 1772 if (m_pProgressBar) 1773 { 1774 m_pProgressBar->setText(QApplication::translate("VBoxMediaManagerDlg", "Checking accessibility")); 1638 1775 #ifdef Q_WS_MAC 1639 /* Make sure that the widgets aren't jumping around 1640 * while the progress-bar get visible. */ 1641 m_pProgressBar->adjustSize(); 1642 int h = m_pProgressBar->height(); 1643 mButtonBox->setMinimumHeight(h + 12); 1776 /* Make sure that the widgets aren't jumping around 1777 * while the progress-bar get visible. */ 1778 m_pProgressBar->adjustSize(); 1779 int h = m_pProgressBar->height(); 1780 if (mButtonBox) 1781 mButtonBox->setMinimumHeight(h + 12); 1644 1782 #endif /* Q_WS_MAC */ 1645 1646 /* Button-box: */ 1647 mButtonBox->button(QDialogButtonBox::Ok)->setText(tr("C&lose")); 1783 } 1648 1784 1649 1785 /* Full refresh if there is at least one item present: */ 1650 if (pTreeWidgetHD->topLevelItemCount() || pTreeWidgetCD->topLevelItemCount() || pTreeWidgetFD->topLevelItemCount()) 1786 if ( (pTreeWidgetHD && pTreeWidgetHD->topLevelItemCount()) 1787 || (pTreeWidgetCD && pTreeWidgetCD->topLevelItemCount()) 1788 || (pTreeWidgetFD && pTreeWidgetFD->topLevelItemCount())) 1651 1789 sltRefreshAll(); 1652 1790 } … … 1664 1802 case UIMediumType_HardDisk: 1665 1803 { 1666 pMediumItem = createHardDiskItem(medium);1667 AssertPtrReturn(pMediumItem, 0);1668 if (p MediumItem->id() == m_strCurrentIdHD)1804 /* Make sure corresponding tree-widget exists: */ 1805 QTreeWidget *pTreeWidget = treeWidget(UIMediumType_HardDisk); 1806 if (pTreeWidget) 1669 1807 { 1670 setCurrentItem(treeWidget(UIMediumType_HardDisk), pMediumItem); 1671 m_strCurrentIdHD = QString(); 1808 /* Recursively create hard-drive item: */ 1809 pMediumItem = createHardDiskItem(medium); 1810 /* Make sure item was created: */ 1811 if (!pMediumItem) 1812 break; 1813 if (pMediumItem->id() == m_strCurrentIdHD) 1814 { 1815 setCurrentItem(pTreeWidget, pMediumItem); 1816 m_strCurrentIdHD = QString(); 1817 } 1672 1818 } 1673 1819 break; … … 1676 1822 case UIMediumType_DVD: 1677 1823 { 1678 pMediumItem = new UIMediumItemCD(medium, treeWidget(UIMediumType_DVD)); 1679 LogRel2(("UIMediumManager: Optical medium-item with ID={%s} created.\n", medium.id().toAscii().constData())); 1680 AssertPtrReturn(pMediumItem, 0); 1681 if (pMediumItem->id() == m_strCurrentIdCD) 1824 /* Make sure corresponding tree-widget exists: */ 1825 QTreeWidget *pTreeWidget = treeWidget(UIMediumType_DVD); 1826 if (pTreeWidget) 1682 1827 { 1683 setCurrentItem(treeWidget(UIMediumType_DVD), pMediumItem); 1684 m_strCurrentIdCD = QString(); 1828 /* Create optical-disk item: */ 1829 pMediumItem = new UIMediumItemCD(medium, pTreeWidget); 1830 /* Make sure item was created: */ 1831 if (!pMediumItem) 1832 break; 1833 LogRel2(("UIMediumManager: Optical medium-item with ID={%s} created.\n", medium.id().toAscii().constData())); 1834 if (pMediumItem->id() == m_strCurrentIdCD) 1835 { 1836 setCurrentItem(pTreeWidget, pMediumItem); 1837 m_strCurrentIdCD = QString(); 1838 } 1685 1839 } 1686 1840 break; … … 1689 1843 case UIMediumType_Floppy: 1690 1844 { 1691 pMediumItem = new UIMediumItemFD(medium, treeWidget(UIMediumType_Floppy)); 1692 LogRel2(("UIMediumManager: Floppy medium-item with ID={%s} created.\n", medium.id().toAscii().constData())); 1693 AssertPtrReturn(pMediumItem, 0); 1694 if (pMediumItem->id() == m_strCurrentIdFD) 1845 /* Make sure corresponding tree-widget exists: */ 1846 QTreeWidget *pTreeWidget = treeWidget(UIMediumType_Floppy); 1847 if (pTreeWidget) 1695 1848 { 1696 setCurrentItem(treeWidget(UIMediumType_Floppy), pMediumItem); 1697 m_strCurrentIdFD = QString(); 1849 /* Create floppy-disk item: */ 1850 pMediumItem = new UIMediumItemFD(medium, pTreeWidget); 1851 /* Make sure item was created: */ 1852 if (!pMediumItem) 1853 break; 1854 LogRel2(("UIMediumManager: Floppy medium-item with ID={%s} created.\n", medium.id().toAscii().constData())); 1855 if (pMediumItem->id() == m_strCurrentIdFD) 1856 { 1857 setCurrentItem(pTreeWidget, pMediumItem); 1858 m_strCurrentIdFD = QString(); 1859 } 1698 1860 } 1699 1861 break; … … 1701 1863 default: AssertMsgFailed(("Medium-type unknown: %d\n", type)); break; 1702 1864 } 1703 AssertPtrReturn(pMediumItem, 0); 1865 1866 /* Make sure item was created: */ 1867 if (!pMediumItem) 1868 return 0; 1704 1869 1705 1870 /* Update tab-icons: */ … … 1719 1884 AssertReturn(!medium.medium().isNull(), 0); 1720 1885 1721 /* Get corresponding tree-widget: */1886 /* Make sure corresponding tree-widget exists: */ 1722 1887 QTreeWidget *pTreeWidget = treeWidget(UIMediumType_HardDisk); 1723 1724 /* Search for existing medium-item: */ 1725 UIMediumItem *pMediumItem = searchItem(pTreeWidget, CheckIfSuitableByID(medium.id())); 1726 1727 /* If medium-item do not exists: */ 1728 if (!pMediumItem) 1729 { 1730 /* If medium have a parent: */ 1731 if (medium.parentID() != UIMedium::nullID()) 1732 { 1733 /* Try to find parent medium-item: */ 1734 UIMediumItem *pParentMediumItem = searchItem(pTreeWidget, CheckIfSuitableByID(medium.parentID())); 1735 /* If parent medium-item was not found: */ 1736 if (!pParentMediumItem) 1888 if (pTreeWidget) 1889 { 1890 /* Search for existing medium-item: */ 1891 UIMediumItem *pMediumItem = searchItem(pTreeWidget, CheckIfSuitableByID(medium.id())); 1892 1893 /* If medium-item do not exists: */ 1894 if (!pMediumItem) 1895 { 1896 /* If medium have a parent: */ 1897 if (medium.parentID() != UIMedium::nullID()) 1737 1898 { 1738 /* Make sure corresponding parent medium is already cached! */ 1739 UIMedium parentMedium = vboxGlobal().medium(medium.parentID()); 1740 if (parentMedium.isNull()) 1741 AssertMsgFailed(("Parent medium with ID={%s} was not found!\n", medium.parentID().toAscii().constData())); 1742 /* Try to create parent medium-item: */ 1743 else 1744 pParentMediumItem = createHardDiskItem(parentMedium); 1899 /* Try to find parent medium-item: */ 1900 UIMediumItem *pParentMediumItem = searchItem(pTreeWidget, CheckIfSuitableByID(medium.parentID())); 1901 /* If parent medium-item was not found: */ 1902 if (!pParentMediumItem) 1903 { 1904 /* Make sure corresponding parent medium is already cached! */ 1905 UIMedium parentMedium = vboxGlobal().medium(medium.parentID()); 1906 if (parentMedium.isNull()) 1907 AssertMsgFailed(("Parent medium with ID={%s} was not found!\n", medium.parentID().toAscii().constData())); 1908 /* Try to create parent medium-item: */ 1909 else 1910 pParentMediumItem = createHardDiskItem(parentMedium); 1911 } 1912 /* If parent medium-item was found: */ 1913 if (pParentMediumItem) 1914 { 1915 pMediumItem = new UIMediumItemHD(medium, pParentMediumItem); 1916 LogRel2(("UIMediumManager: Child hard-drive medium-item with ID={%s} created.\n", medium.id().toAscii().constData())); 1917 } 1745 1918 } 1746 /* If parent medium-item was found: */1747 if ( pParentMediumItem)1919 /* Else just create item as top-level one: */ 1920 if (!pMediumItem) 1748 1921 { 1749 pMediumItem = new UIMediumItemHD(medium, p ParentMediumItem);1750 LogRel2(("UIMediumManager: Childhard-drive medium-item with ID={%s} created.\n", medium.id().toAscii().constData()));1922 pMediumItem = new UIMediumItemHD(medium, pTreeWidget); 1923 LogRel2(("UIMediumManager: Root hard-drive medium-item with ID={%s} created.\n", medium.id().toAscii().constData())); 1751 1924 } 1752 1925 } 1753 /* Else just create item as top-level one: */ 1754 if (!pMediumItem) 1755 { 1756 pMediumItem = new UIMediumItemHD(medium, pTreeWidget); 1757 LogRel2(("UIMediumManager: Root hard-drive medium-item with ID={%s} created.\n", medium.id().toAscii().constData())); 1758 } 1759 } 1760 1761 /* Return created medium-item: */ 1762 return pMediumItem; 1926 1927 /* Return created medium-item: */ 1928 return pMediumItem; 1929 } 1930 1931 /* Return null by default: */ 1932 return 0; 1763 1933 } 1764 1934 … … 1768 1938 UIMediumType type = medium.type(); 1769 1939 1770 /* Search for existing medium-item , create if was not found: */1940 /* Search for existing medium-item: */ 1771 1941 UIMediumItem *pMediumItem = searchItem(treeWidget(type), CheckIfSuitableByID(medium.id())); 1772 if (!pMediumItem) pMediumItem = createMediumItem(medium); 1773 AssertPtrReturnVoid(pMediumItem); 1942 1943 /* Create item if doesn't exists: */ 1944 if (!pMediumItem) 1945 pMediumItem = createMediumItem(medium); 1946 1947 /* Make sure item was created: */ 1948 if (!pMediumItem) 1949 return; 1774 1950 1775 1951 /* Update medium-item: */ … … 1802 1978 } 1803 1979 1804 /* Ignore medium-item (if it was not found): */1980 /* Make sure item was found: */ 1805 1981 if (!pMediumItem) 1806 1982 return; … … 1855 2031 UIMediumType UIMediumManager::currentMediumType() const 1856 2032 { 2033 /* Invalid if tab-widget doesn't exists: */ 2034 if (!mTabWidget) 2035 return UIMediumType_Invalid; 2036 1857 2037 /* Return current medium type: */ 1858 2038 switch (mTabWidget->currentIndex())
Note:
See TracChangeset
for help on using the changeset viewer.