Changeset 77330 in vbox for trunk/src/VBox/Frontends/VirtualBox
- Timestamp:
- Feb 15, 2019 11:04:00 AM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 128861
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/medium/viso
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoBrowserBase.cpp
r77322 r77330 29 29 #include "QIToolButton.h" 30 30 #include "UIIconPool.h" 31 #include "UIToolBar.h"32 31 #include "UIVisoBrowserBase.h" 33 32 … … 151 150 *********************************************************************************************************************************/ 152 151 153 UIVisoBrowserBase::UIVisoBrowserBase(QWidget *pParent /* = 0 */ , QMenu *pMenu /*= 0*/)152 UIVisoBrowserBase::UIVisoBrowserBase(QWidget *pParent /* = 0 */) 154 153 : QIWithRetranslateUI<QWidget>(pParent) 155 154 , m_pTreeView(0) 156 , m_pVerticalToolBar(0)157 , m_pMenu(pMenu)158 155 , m_pMainLayout(0) 159 156 , m_pLocationSelector(0) … … 204 201 m_pTreeView->installEventFilter(this); 205 202 } 206 207 m_pVerticalToolBar = new UIToolBar;208 if (m_pVerticalToolBar)209 {210 m_pVerticalToolBar->setOrientation(Qt::Vertical);211 m_pMainLayout->addWidget(m_pVerticalToolBar, 0, 5, 6, 1);212 }213 203 } 214 204 … … 253 243 pKeyEvent->key() == Qt::Key_Enter)) 254 244 { 255 sltExpandCollapseTreeView();245 updateTreeViewGeometry(false); 256 246 } 257 247 } 258 248 else if (pEvent->type() == QEvent::FocusOut) 259 249 { 260 sltExpandCollapseTreeView();250 updateTreeViewGeometry(false); 261 251 } 262 252 } … … 296 286 return; 297 287 m_pTreeView->setExpanded(modelIndex, true); 298 m_pTreeView->hide();288 updateTreeViewGeometry(false); 299 289 emit sigTreeViewVisibilityChanged(m_pTreeView->isVisible()); 300 290 } … … 314 304 if (!fShow) 315 305 { 316 m_pTreeView->hide(); 317 emit sigTreeViewVisibilityChanged(m_pTreeView->isVisible()); 318 m_pTreeView->clearFocus(); 306 if (!m_pTreeView->isVisible()) 319 307 return; 308 else 309 { 310 m_pTreeView->hide(); 311 emit sigTreeViewVisibilityChanged(m_pTreeView->isVisible()); 312 m_pTreeView->clearFocus(); 313 return; 314 } 320 315 } 321 316 if (!m_pLocationSelector) -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoBrowserBase.h
r77321 r77330 33 33 class QGridLayout; 34 34 class QLabel; 35 class QMenu;36 35 class QSplitter; 37 36 class QVBoxLayout; … … 39 38 class QTreeView; 40 39 class UILocationSelector; 41 class UIToolBar;42 40 43 41 class UIVisoBrowserBase : public QIWithRetranslateUI<QWidget> … … 50 48 51 49 public: 52 /** @p pMenu is the pointer to the menu related to this browser widget. 53 * any member actions will be added to this menu. */ 54 UIVisoBrowserBase(QWidget *pParent = 0, QMenu *pMenu = 0); 50 51 UIVisoBrowserBase(QWidget *pParent = 0); 55 52 ~UIVisoBrowserBase(); 56 53 virtual void showHideHiddenObjects(bool bShow) = 0; … … 79 76 80 77 QTreeView *m_pTreeView; 81 UIToolBar *m_pVerticalToolBar; 82 QMenu *m_pMenu; 83 QGridLayout *m_pMainLayout; 78 QGridLayout *m_pMainLayout; 84 79 85 80 private slots: -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoContentBrowser.cpp
r77321 r77330 37 37 #include "UIIconPool.h" 38 38 #include "UIPathOperations.h" 39 #include "UIToolBar.h"40 39 #include "UIVisoContentBrowser.h" 41 42 43 40 44 41 /********************************************************************************************************************************* 45 42 * UIVisoContentTableView definition. * 46 43 *********************************************************************************************************************************/ 44 47 45 /** An QTableView extension mainly used to handle dropeed file objects from the host browser. */ 48 46 class UIVisoContentTableView : public QTableView … … 155 153 *********************************************************************************************************************************/ 156 154 157 UIVisoContentBrowser::UIVisoContentBrowser(QWidget *pParent , QMenu *pMenu /* = 0 */)158 : UIVisoBrowserBase(pParent , pMenu)155 UIVisoContentBrowser::UIVisoContentBrowser(QWidget *pParent) 156 : UIVisoBrowserBase(pParent) 159 157 , m_pTableView(0) 160 158 , m_pModel(0) 161 159 , m_pTableProxyModel(0) 162 160 , m_pTreeProxyModel(0) 163 , m_pRemoveAction(0)164 , m_pNewDirectoryAction(0)165 , m_pRenameAction(0)166 , m_pResetAction(0)167 161 { 168 162 prepareObjects(); … … 246 240 void UIVisoContentBrowser::retranslateUi() 247 241 { 248 if (m_pRemoveAction)249 {250 m_pRemoveAction->setToolTip(QApplication::translate("UIVisoCreator", "Remove selected file objects from VISO"));251 m_pRemoveAction->setText(QApplication::translate("UIVisoCreator", "Remove"));252 }253 if (m_pNewDirectoryAction)254 {255 m_pNewDirectoryAction->setToolTip(QApplication::translate("UIVisoCreator", "Create a new directory under the current location"));256 m_pNewDirectoryAction->setText(QApplication::translate("UIVisoCreator", "New Directory"));257 }258 if (m_pResetAction)259 {260 m_pResetAction->setToolTip(QApplication::translate("UIVisoCreator", "Reset ISO content."));261 m_pResetAction->setText(QApplication::translate("UIVisoCreator", "Reset"));262 }263 if (m_pRenameAction)264 m_pRenameAction->setToolTip(QApplication::translate("UIVisoCreator", "Rename the selected object"));265 266 242 UICustomFileSystemItem *pRootItem = rootItem(); 267 243 if (pRootItem) … … 451 427 m_pTableView->setDragDropMode(QAbstractItemView::DropOnly); 452 428 } 453 454 m_pRemoveAction = new QAction(this);455 if (m_pRemoveAction)456 {457 m_pVerticalToolBar->addAction(m_pRemoveAction);458 m_pRemoveAction->setIcon(UIIconPool::iconSetFull(":/file_manager_delete_24px.png", ":/file_manager_delete_16px.png",459 ":/file_manager_delete_disabled_24px.png", ":/file_manager_delete_disabled_16px.png"));460 m_pRemoveAction->setEnabled(false);461 if (m_pMenu)462 m_pMenu->addAction(m_pRemoveAction);463 }464 465 m_pNewDirectoryAction = new QAction(this);466 if (m_pNewDirectoryAction)467 {468 m_pVerticalToolBar->addAction(m_pNewDirectoryAction);469 m_pNewDirectoryAction->setIcon(UIIconPool::iconSetFull(":/file_manager_new_directory_24px.png", ":/file_manager_new_directory_16px.png",470 ":/file_manager_new_directory_disabled_24px.png", ":/file_manager_new_directory_disabled_16px.png"));471 m_pNewDirectoryAction->setEnabled(true);472 if (m_pMenu)473 m_pMenu->addAction(m_pNewDirectoryAction);474 }475 476 m_pRenameAction = new QAction(this);477 if (m_pRenameAction)478 {479 /** @todo Handle rename correctly in the m_entryMap as well and then enable this rename action. */480 /* m_pVerticalToolBar->addAction(m_pRenameAction); */481 m_pRenameAction->setIcon(UIIconPool::iconSet(":/file_manager_rename_16px.png", ":/file_manager_rename_disabled_16px.png"));482 m_pRenameAction->setEnabled(false);483 }484 485 m_pVerticalToolBar->addSeparator();486 487 m_pResetAction = new QAction(this);488 if (m_pResetAction)489 {490 m_pVerticalToolBar->addAction(m_pResetAction);491 m_pResetAction->setIcon(UIIconPool::iconSet(":/cd_remove_16px.png", ":/cd_remove_disabled_16px.png"));492 m_pResetAction->setEnabled(true);493 if (m_pMenu)494 m_pMenu->addAction(m_pResetAction);495 }496 497 429 retranslateUi(); 498 430 } … … 510 442 } 511 443 512 if (m_p NewDirectoryAction)513 connect(m_p NewDirectoryAction, &QAction::triggered,514 this, &UIVisoContentBrowser::sltHandle CreateNewDirectory);444 if (m_pTableView->selectionModel()) 445 connect(m_pTableView->selectionModel(), &QItemSelectionModel::selectionChanged, 446 this, &UIVisoContentBrowser::sltHandleTableSelectionChanged); 515 447 if (m_pModel) 516 448 connect(m_pModel, &UICustomFileSystemModel::sigItemRenamed, 517 449 this, &UIVisoContentBrowser::sltHandleItemRenameAttempt); 518 if (m_pRemoveAction)519 connect(m_pRemoveAction, &QAction::triggered,520 this, &UIVisoContentBrowser::sltHandleRemoveItems);521 if (m_pResetAction)522 connect(m_pResetAction, &QAction::triggered,523 this, &UIVisoContentBrowser::sltHandleResetAction);524 if (m_pRenameAction)525 connect(m_pRenameAction, &QAction::triggered,526 this,&UIVisoContentBrowser::sltHandleItemRenameAction);527 if (m_pTableView->selectionModel())528 connect(m_pTableView->selectionModel(), &QItemSelectionModel::selectionChanged,529 this, &UIVisoContentBrowser::sltHandleTableSelectionChanged);530 450 531 451 } … … 789 709 { 790 710 Q_UNUSED(deselected); 791 if (m_pRemoveAction) 792 m_pRemoveAction->setEnabled(!selected.isEmpty()); 793 if (m_pRenameAction) 794 m_pRenameAction->setEnabled(!selected.isEmpty()); 711 emit sigTableSelectionChanged(selected.isEmpty()); 795 712 } 796 713 -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoContentBrowser.h
r76913 r77330 48 48 Q_OBJECT; 49 49 50 signals: 51 52 void sigTableSelectionChanged(bool fIsSelectionEmpty); 53 50 54 public: 51 55 52 UIVisoContentBrowser(QWidget *pParent = 0 , QMenu *pMenu = 0);56 UIVisoContentBrowser(QWidget *pParent = 0); 53 57 ~UIVisoContentBrowser(); 54 58 /** Adds file objests from the host file system. @p pathList consists of list of paths to there objects. */ … … 58 62 59 63 void setVisoName(const QString &strName); 64 65 public slots: 66 67 void sltHandleCreateNewDirectory(); 68 /** Handles the signal we get from the model during setData call. Restores the old name of the file object 69 * to @p strOldName if need be. */ 70 void sltHandleItemRenameAttempt(UICustomFileSystemItem *pItem, QString strOldName, QString strNewName); 71 void sltHandleRemoveItems(); 72 void sltHandleResetAction(); 73 void sltHandleItemRenameAction(); 60 74 61 75 protected: … … 74 88 private slots: 75 89 76 void sltHandleCreateNewDirectory();77 /** Handles the signal we get from the model during setData call. Restores the old name of the file object78 * to @p strOldName if need be. */79 void sltHandleItemRenameAttempt(UICustomFileSystemItem *pItem, QString strOldName, QString strNewName);80 void sltHandleItemRenameAction();81 void sltHandleRemoveItems();82 90 void sltHandleTableSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected); 83 void sltHandleResetAction();84 91 void sltHandleDroppedItems(QStringList pathList); 85 92 … … 109 116 UICustomFileSystemProxyModel *m_pTableProxyModel; 110 117 UIVisoContentTreeProxyModel *m_pTreeProxyModel; 111 QAction *m_pRemoveAction;112 QAction *m_pNewDirectoryAction;113 QAction *m_pRenameAction;114 QAction *m_pResetAction;115 118 116 119 QString m_strVisoName; -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.cpp
r77322 r77330 19 19 #include <QMenuBar> 20 20 #include <QPushButton> 21 #include <QSplitter>22 21 #include <QStyle> 23 #include <Q VBoxLayout>22 #include <QGridLayout> 24 23 25 24 /* GUI includes: */ … … 36 35 UIVisoCreator::UIVisoCreator(QWidget *pParent /* =0 */, const QString& strMachineName /* = QString() */) 37 36 : QIWithRetranslateUI<QIMainDialog>(pParent) 37 , m_pActionConfiguration(0) 38 , m_pActionOptions(0) 39 , m_pAddAction(0) 40 , m_pRemoveAction(0) 41 , m_pNewDirectoryAction(0) 42 , m_pRenameAction(0) 43 , m_pResetAction(0) 38 44 , m_pMainLayout(0) 39 , m_pHorizontalSplitter(0)40 45 , m_pHostBrowser(0) 41 46 , m_pVisoBrowser(0) 42 47 , m_pButtonBox(0) 43 48 , m_pToolBar(0) 44 , m_pActionConfiguration(0) 45 , m_pActionOptions(0) 49 , m_pVerticalToolBar(0) 46 50 , m_pCentralWidget(0) 47 51 , m_pMainMenu(0) 48 , m_pHostBrowserMenu(0)49 , m_pVisoContentBrowserMenu(0)50 52 , m_strMachineName(strMachineName) 51 53 , m_pCreatorOptionsPanel(0) … … 54 56 m_visoOptions.m_strVisoName = !strMachineName.isEmpty() ? strMachineName : "ad-hoc"; 55 57 prepareActions(); 56 prepareObjects(); 58 prepareWidgets(); 59 populateMenuMainToolbar(); 57 60 prepareConnections(); 58 61 manageEscapeShortCut(); 62 retranslateUi(); 59 63 } 60 64 … … 114 118 if (m_pMainMenu) 115 119 m_pMainMenu->setTitle(tr("VISO")); 116 if (m_pHostBrowserMenu) 117 m_pHostBrowserMenu->setTitle(tr("Host Browser")); 118 if (m_pVisoContentBrowserMenu) 119 m_pVisoContentBrowserMenu->setTitle(tr("VISO Browser")); 120 121 if (m_pAddAction) 122 { 123 m_pAddAction->setToolTip(QApplication::translate("UIVisoCreator", "Add selected file objects to VISO")); 124 m_pAddAction->setText(QApplication::translate("UIVisoCreator", "Add")); 125 } 126 127 if (m_pRemoveAction) 128 { 129 m_pRemoveAction->setToolTip(QApplication::translate("UIVisoCreator", "Remove selected file objects from VISO")); 130 m_pRemoveAction->setText(QApplication::translate("UIVisoCreator", "Remove")); 131 } 132 if (m_pNewDirectoryAction) 133 { 134 m_pNewDirectoryAction->setToolTip(QApplication::translate("UIVisoCreator", "Create a new directory under the current location")); 135 m_pNewDirectoryAction->setText(QApplication::translate("UIVisoCreator", "New Directory")); 136 } 137 if (m_pResetAction) 138 { 139 m_pResetAction->setToolTip(QApplication::translate("UIVisoCreator", "Reset ISO content.")); 140 m_pResetAction->setText(QApplication::translate("UIVisoCreator", "Reset")); 141 } 142 if (m_pRenameAction) 143 m_pRenameAction->setToolTip(QApplication::translate("UIVisoCreator", "Rename the selected object")); 120 144 } 121 145 … … 182 206 } 183 207 184 void UIVisoCreator::prepareObjects() 208 void UIVisoCreator::sltHandleHostBrowserTableSelectionChanged(bool fIsSelectionEmpty) 209 { 210 if (m_pAddAction) 211 m_pAddAction->setEnabled(!fIsSelectionEmpty); 212 } 213 214 void UIVisoCreator::sltHandleContentBrowserTableSelectionChanged(bool fIsSelectionEmpty) 215 { 216 if (m_pRemoveAction) 217 m_pRemoveAction->setEnabled(!fIsSelectionEmpty); 218 } 219 220 void UIVisoCreator::prepareWidgets() 185 221 { 186 222 m_pCentralWidget = new QWidget; … … 189 225 setCentralWidget(m_pCentralWidget); 190 226 191 m_pMainLayout = new Q VBoxLayout;227 m_pMainLayout = new QGridLayout; 192 228 m_pCentralWidget->setLayout(m_pMainLayout); 193 229 if (!m_pMainLayout || !menuBar()) … … 211 247 if (m_pActionOptions) 212 248 m_pMainMenu->addAction(m_pActionOptions); 213 m_pHostBrowserMenu = m_pMainMenu->addMenu(tr("Host Browser"));214 m_pVisoContentBrowserMenu = m_pMainMenu->addMenu(tr("VISO Browser"));215 249 216 250 m_pToolBar = new UIToolBar(parentWidget()); … … 221 255 m_pToolBar->setIconSize(QSize(iIconMetric, iIconMetric)); 222 256 m_pToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); 223 /* Add toolbar actions: */ 224 if (m_pActionConfiguration) 225 m_pToolBar->addAction(m_pActionConfiguration); 226 if (m_pActionOptions) 227 m_pToolBar->addAction(m_pActionOptions); 228 m_pMainLayout->addWidget(m_pToolBar); 229 } 230 231 m_pHorizontalSplitter = new QSplitter; 232 if (!m_pHorizontalSplitter) 233 return; 234 235 m_pMainLayout->addWidget(m_pHorizontalSplitter); 236 /* Make sure m_pHorizontalSplitter takes all the extra space: */ 237 m_pMainLayout->setStretch(m_pMainLayout->indexOf(m_pHorizontalSplitter), 2); 238 m_pHorizontalSplitter->setOrientation(Qt::Horizontal); 239 m_pHorizontalSplitter->setHandleWidth(1); 240 241 m_pHostBrowser = new UIVisoHostBrowser(0 /* parent */, m_pHostBrowserMenu); 257 m_pMainLayout->addWidget(m_pToolBar, 0, 0, 1, 5); 258 } 259 260 m_pHostBrowser = new UIVisoHostBrowser(0 /* parent */); 242 261 if (m_pHostBrowser) 243 262 { 244 m_pHorizontalSplitter->addWidget(m_pHostBrowser); 263 m_pMainLayout->addWidget(m_pHostBrowser, 1, 0, 1, 2); 264 m_pMainLayout->setColumnStretch(m_pMainLayout->indexOf(m_pHostBrowser), 2); 265 } 266 267 prepareVerticalToolBar(); 268 if (m_pVerticalToolBar) 269 { 270 m_pMainLayout->addWidget(m_pVerticalToolBar, 1, 2, 1, 1); 271 m_pMainLayout->setColumnStretch(m_pMainLayout->indexOf(m_pVerticalToolBar), 1); 272 } 273 274 m_pVisoBrowser = new UIVisoContentBrowser(0 /* parent */); 275 if (m_pVisoBrowser) 276 { 277 m_pMainLayout->addWidget(m_pVisoBrowser, 1, 3, 1, 2); 278 m_pVisoBrowser->setVisoName(m_visoOptions.m_strVisoName); 279 m_pMainLayout->setColumnStretch(m_pMainLayout->indexOf(m_pVisoBrowser), 2); 280 } 281 282 m_pConfigurationPanel = new UIVisoConfigurationPanel(this); 283 if (m_pConfigurationPanel) 284 { 285 m_pMainLayout->addWidget(m_pConfigurationPanel, 2, 0, 1, 5); 286 m_pConfigurationPanel->hide(); 287 m_pConfigurationPanel->setVisoName(m_visoOptions.m_strVisoName); 288 m_pConfigurationPanel->setVisoCustomOptions(m_visoOptions.m_customOptions); 289 installEventFilter(m_pConfigurationPanel); 290 } 291 292 m_pCreatorOptionsPanel = new UIVisoCreatorOptionsPanel(this); 293 if (m_pCreatorOptionsPanel) 294 { 295 m_pCreatorOptionsPanel->setShowHiddenbjects(m_browserOptions.m_fShowHiddenObjects); 296 m_pMainLayout->addWidget(m_pCreatorOptionsPanel, 3, 0, 1, 5); 297 m_pCreatorOptionsPanel->hide(); 298 } 299 300 m_pButtonBox = new QIDialogButtonBox; 301 if (m_pButtonBox) 302 { 303 m_pButtonBox->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); 304 m_pButtonBox->button(QDialogButtonBox::Cancel)->setShortcut(Qt::Key_Escape); 305 m_pMainLayout->addWidget(m_pButtonBox, 4, 3, 1, 5, Qt::AlignRight); 306 } 307 } 308 309 void UIVisoCreator::prepareConnections() 310 { 311 if (m_pHostBrowser) 312 { 245 313 connect(m_pHostBrowser, &UIVisoHostBrowser::sigAddObjectsToViso, 246 314 this, &UIVisoCreator::sltHandleAddObjectsToViso); 247 315 connect(m_pHostBrowser, &UIVisoHostBrowser::sigTreeViewVisibilityChanged, 248 316 this, &UIVisoCreator::sltHandleBrowserTreeViewVisibilityChanged); 249 } 250 251 m_pVisoBrowser = new UIVisoContentBrowser(0 /* parent */, m_pVisoContentBrowserMenu); 317 connect(m_pHostBrowser, &UIVisoHostBrowser::sigTableSelectionChanged, 318 this, &UIVisoCreator::sltHandleHostBrowserTableSelectionChanged); 319 } 320 252 321 if (m_pVisoBrowser) 253 { 254 m_pHorizontalSplitter->addWidget(m_pVisoBrowser); 255 m_pVisoBrowser->setVisoName(m_visoOptions.m_strVisoName); 256 } 257 258 m_pConfigurationPanel = new UIVisoConfigurationPanel(this); 259 if (m_pConfigurationPanel) 260 { 261 m_pMainLayout->addWidget(m_pConfigurationPanel); 262 m_panelActionMap.insert(m_pConfigurationPanel, m_pActionConfiguration); 263 m_pConfigurationPanel->hide(); 264 m_pConfigurationPanel->setVisoName(m_visoOptions.m_strVisoName); 265 m_pConfigurationPanel->setVisoCustomOptions(m_visoOptions.m_customOptions); 266 installEventFilter(m_pConfigurationPanel); 267 } 268 269 m_pCreatorOptionsPanel = new UIVisoCreatorOptionsPanel(this); 270 if (m_pCreatorOptionsPanel) 271 { 272 m_pCreatorOptionsPanel->setShowHiddenbjects(m_browserOptions.m_fShowHiddenObjects); 273 m_pMainLayout->addWidget(m_pCreatorOptionsPanel); 274 m_panelActionMap.insert(m_pCreatorOptionsPanel, m_pActionOptions); 275 m_pCreatorOptionsPanel->hide(); 276 } 277 278 m_pButtonBox = new QIDialogButtonBox; 279 if (m_pButtonBox) 280 { 281 m_pButtonBox->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); 282 m_pButtonBox->button(QDialogButtonBox::Cancel)->setShortcut(Qt::Key_Escape); 283 m_pMainLayout->addWidget(m_pButtonBox); 284 } 285 retranslateUi(); 286 } 287 288 void UIVisoCreator::prepareConnections() 289 { 322 connect(m_pVisoBrowser, &UIVisoContentBrowser::sigTableSelectionChanged, 323 this, &UIVisoCreator::sltHandleContentBrowserTableSelectionChanged); 324 290 325 if (m_pButtonBox) 291 326 { … … 315 350 this, &UIVisoCreator::sltHandleHidePanel); 316 351 } 352 353 if (m_pAddAction) 354 connect(m_pAddAction, &QAction::triggered, 355 m_pHostBrowser, &UIVisoHostBrowser::sltHandleAddAction); 356 357 if (m_pNewDirectoryAction) 358 connect(m_pNewDirectoryAction, &QAction::triggered, 359 m_pVisoBrowser, &UIVisoContentBrowser::sltHandleCreateNewDirectory); 360 if (m_pRemoveAction) 361 connect(m_pRemoveAction, &QAction::triggered, 362 m_pVisoBrowser, &UIVisoContentBrowser::sltHandleRemoveItems); 363 if (m_pResetAction) 364 connect(m_pResetAction, &QAction::triggered, 365 m_pVisoBrowser, &UIVisoContentBrowser::sltHandleResetAction); 366 if (m_pRenameAction) 367 connect(m_pRenameAction, &QAction::triggered, 368 m_pVisoBrowser,&UIVisoContentBrowser::sltHandleItemRenameAction); 317 369 } 318 370 … … 327 379 ":/file_manager_options_disabled_32px.png", 328 380 ":/file_manager_options_disabled_16px.png")); 381 m_panelActionMap.insert(m_pConfigurationPanel, m_pActionConfiguration); 329 382 } 330 383 … … 338 391 ":/file_manager_options_disabled_32px.png", 339 392 ":/file_manager_options_disabled_16px.png")); 340 } 341 } 342 393 m_panelActionMap.insert(m_pCreatorOptionsPanel, m_pActionOptions); 394 } 395 396 m_pAddAction = new QAction(this); 397 if (m_pAddAction) 398 { 399 m_pAddAction->setIcon(UIIconPool::iconSetFull(":/file_manager_copy_to_guest_24px.png", 400 ":/file_manager_copy_to_guest_16px.png", 401 ":/file_manager_copy_to_guest_disabled_24px.png", 402 ":/file_manager_copy_to_guest_disabled_16px.png")); 403 m_pAddAction->setText(QApplication::translate("UIVisoCreator", "Add")); 404 m_pAddAction->setEnabled(false); 405 } 406 m_pRemoveAction = new QAction(this); 407 if (m_pRemoveAction) 408 { 409 m_pRemoveAction->setIcon(UIIconPool::iconSetFull(":/file_manager_delete_24px.png", ":/file_manager_delete_16px.png", 410 ":/file_manager_delete_disabled_24px.png", ":/file_manager_delete_disabled_16px.png")); 411 m_pRemoveAction->setEnabled(false); 412 } 413 414 m_pNewDirectoryAction = new QAction(this); 415 if (m_pNewDirectoryAction) 416 { 417 m_pNewDirectoryAction->setIcon(UIIconPool::iconSetFull(":/file_manager_new_directory_24px.png", ":/file_manager_new_directory_16px.png", 418 ":/file_manager_new_directory_disabled_24px.png", ":/file_manager_new_directory_disabled_16px.png")); 419 m_pNewDirectoryAction->setEnabled(true); 420 } 421 422 //m_pRenameAction = new QAction(this); 423 if (m_pRenameAction) 424 { 425 /** @todo Handle rename correctly in the m_entryMap as well and then enable this rename action. */ 426 /* m_pVerticalToolBar->addAction(m_pRenameAction); */ 427 m_pRenameAction->setIcon(UIIconPool::iconSet(":/file_manager_rename_16px.png", ":/file_manager_rename_disabled_16px.png")); 428 m_pRenameAction->setEnabled(false); 429 } 430 431 m_pResetAction = new QAction(this); 432 if (m_pResetAction) 433 { 434 m_pResetAction->setIcon(UIIconPool::iconSet(":/cd_remove_16px.png", ":/cd_remove_disabled_16px.png")); 435 m_pResetAction->setEnabled(true); 436 } 437 } 438 439 void UIVisoCreator::populateMenuMainToolbar() 440 { 441 if (!m_pMainMenu || !m_pToolBar) 442 return; 443 444 m_pToolBar->addAction(m_pActionConfiguration); 445 m_pMainMenu->addAction(m_pActionConfiguration); 446 447 m_pToolBar->addAction(m_pActionOptions); 448 m_pMainMenu->addAction(m_pActionOptions); 449 m_pMainMenu->addSeparator(); 450 m_pMainMenu->addAction(m_pAddAction); 451 m_pMainMenu->addAction(m_pRemoveAction); 452 m_pMainMenu->addAction(m_pNewDirectoryAction); 453 m_pMainMenu->addAction(m_pResetAction); 454 } 343 455 344 456 void UIVisoCreator::hidePanel(UIDialogPanel* panel) … … 401 513 m_visiblePanelsList.back()->setCloseButtonShortCut(QKeySequence(Qt::Key_Escape)); 402 514 } 515 516 void UIVisoCreator::prepareVerticalToolBar() 517 { 518 m_pVerticalToolBar = new UIToolBar; 519 if (!m_pVerticalToolBar) 520 return; 521 522 m_pVerticalToolBar->setOrientation(Qt::Vertical); 523 524 /* Add to dummy QWidget to toolbar to center the action icons vertically: */ 525 QWidget *topSpacerWidget = new QWidget(this); 526 topSpacerWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); 527 topSpacerWidget->setVisible(true); 528 QWidget *bottomSpacerWidget = new QWidget(this); 529 bottomSpacerWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); 530 bottomSpacerWidget->setVisible(true); 531 532 m_pVerticalToolBar->addWidget(topSpacerWidget); 533 m_pVerticalToolBar->addAction(m_pAddAction); 534 m_pVerticalToolBar->addAction(m_pRemoveAction); 535 m_pVerticalToolBar->addAction(m_pNewDirectoryAction); 536 m_pVerticalToolBar->addAction(m_pResetAction); 537 538 m_pVerticalToolBar->addWidget(bottomSpacerWidget); 539 } -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.h
r77322 r77330 38 38 class QMenu; 39 39 class QSplitter; 40 class Q VBoxLayout;40 class QGridLayout; 41 41 class QIDialogButtonBox; 42 42 class UIActionPool; … … 81 81 void sltHandleHidePanel(UIDialogPanel *pPanel); 82 82 void sltHandleBrowserTreeViewVisibilityChanged(bool fVisible); 83 void sltHandleHostBrowserTableSelectionChanged(bool fIsSelectionEmpty); 84 void sltHandleContentBrowserTableSelectionChanged(bool fIsSelectionEmpty); 83 85 84 86 private: … … 99 101 }; 100 102 101 void prepare Objects();103 void prepareWidgets(); 102 104 void prepareConnections(); 103 105 void prepareActions(); 106 /** Creates and configures the vertical toolbar. Should be called after prepareActions() */ 107 void prepareVerticalToolBar(); 108 /* Populates the main menu and toolbard with already created actions. 109 * Leave out the vertical toolbar which is handled in prepareVerticalToolBar. */ 110 void populateMenuMainToolbar(); 104 111 /** Set the root index of the m_pTableModel to the current index of m_pTreeModel. */ 105 112 void setTableRootIndex(QModelIndex index = QModelIndex() ); … … 108 115 void showPanel(UIDialogPanel *panel); 109 116 /** Makes sure escape key is assigned to only a single widget. This is done by checking 110 several things in the following order:111 - when tree views of browser panes are visible esc. key used to close those. thus it is taken from the dialog and panels112 - when there are no more panels visible assign it to the parent dialog113 - grab it from the dialog as soon as a panel becomes visible again114 - assign it to the most recently "unhidden" panel */117 * several things in the following order: 118 * - when tree views of browser panes are visible esc. key used to close those. thus it is taken from the dialog and panels 119 * - when there are no more panels visible assign it to the parent dialog 120 * - grab it from the dialog as soon as a panel becomes visible again 121 * - assign it to the most recently "unhidden" panel */ 115 122 void manageEscapeShortCut(); 116 123 117 QVBoxLayout *m_pMainLayout; 118 QSplitter *m_pHorizontalSplitter; 124 QAction *m_pActionConfiguration; 125 QAction *m_pActionOptions; 126 QAction *m_pAddAction; 127 QAction *m_pRemoveAction; 128 QAction *m_pNewDirectoryAction; 129 QAction *m_pRenameAction; 130 QAction *m_pResetAction; 131 132 QGridLayout *m_pMainLayout; 119 133 UIVisoHostBrowser *m_pHostBrowser; 120 134 UIVisoContentBrowser *m_pVisoBrowser; 121 135 QIDialogButtonBox *m_pButtonBox; 122 136 UIToolBar *m_pToolBar; 123 QAction *m_pActionConfiguration; 124 QAction *m_pActionOptions; 137 UIToolBar *m_pVerticalToolBar; 125 138 VisoOptions m_visoOptions; 126 139 BrowserOptions m_browserOptions; 127 140 QWidget *m_pCentralWidget; 128 141 QMenu *m_pMainMenu; 129 QMenu *m_pHostBrowserMenu;130 QMenu *m_pVisoContentBrowserMenu;131 142 QString m_strMachineName; 132 143 UIVisoCreatorOptionsPanel *m_pCreatorOptionsPanel; -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.cpp
r77308 r77330 16 16 */ 17 17 /* Qt includes: */ 18 #include <QAction>19 18 #include <QAbstractItemModel> 20 #include <QDialog>21 #include <QDir>22 19 #include <QFileSystemModel> 23 20 #include <QGridLayout> 24 21 #include <QHeaderView> 25 #include <QLabel>26 #include <QLineEdit>27 #include <QListView>28 #include <QMenu>29 22 #include <QMimeData> 30 23 #include <QTableView> … … 33 26 34 27 /* GUI includes: */ 35 #include "QIToolButton.h"36 #include "UIIconPool.h"37 #include "UIToolBar.h"38 28 #include "UIVisoHostBrowser.h" 39 40 41 29 42 30 /********************************************************************************************************************************* … … 120 108 *********************************************************************************************************************************/ 121 109 122 UIVisoHostBrowser::UIVisoHostBrowser(QWidget *pParent /* = 0 */ , QMenu *pMenu /* = 0 */)123 : UIVisoBrowserBase(pParent , pMenu)110 UIVisoHostBrowser::UIVisoHostBrowser(QWidget *pParent /* = 0 */) 111 : UIVisoBrowserBase(pParent) 124 112 , m_pTreeModel(0) 125 113 , m_pTableModel(0) 126 , m_pAddAction(0)127 114 , m_pTableView(0) 128 115 { … … 137 124 void UIVisoHostBrowser::retranslateUi() 138 125 { 139 if (m_pAddAction)140 {141 m_pAddAction->setToolTip(QApplication::translate("UIVisoCreator", "Add selected file objects to ISO"));142 m_pAddAction->setText(QApplication::translate("UIVisoCreator", "Add"));143 }144 126 } 145 127 … … 200 182 } 201 183 202 m_pAddAction = new QAction(this);203 if (m_pAddAction)204 {205 m_pVerticalToolBar->addAction(m_pAddAction);206 m_pAddAction->setIcon(UIIconPool::iconSetFull(":/file_manager_copy_to_guest_24px.png",207 ":/file_manager_copy_to_guest_16px.png",208 ":/file_manager_copy_to_guest_disabled_24px.png",209 ":/file_manager_copy_to_guest_disabled_16px.png"));210 m_pAddAction->setText(QApplication::translate("UIVisoCreator", "Add"));211 m_pAddAction->setEnabled(false);212 if (m_pMenu)213 m_pMenu->addAction(m_pAddAction);214 }215 216 184 retranslateUi(); 217 185 } … … 227 195 connect(m_pTableView->selectionModel(), &QItemSelectionModel::selectionChanged, 228 196 this, &UIVisoHostBrowser::sltHandleTableSelectionChanged); 229 if (m_pAddAction)230 connect(m_pAddAction, &QAction::triggered,231 this, &UIVisoHostBrowser::sltHandleAddAction);232 197 } 233 198 … … 235 200 { 236 201 Q_UNUSED(deselected); 237 if (m_pAddAction) 238 m_pAddAction->setEnabled(!selected.isEmpty()); 202 emit sigTableSelectionChanged(selected.isEmpty()); 239 203 } 240 204 -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.h
r77308 r77330 41 41 42 42 void sigAddObjectsToViso(QStringList pathList); 43 void sigTableSelectionChanged(bool fIsSelectionEmpty); 43 44 44 45 public: 45 46 46 UIVisoHostBrowser(QWidget *pParent = 0 , QMenu *pMenu = 0);47 UIVisoHostBrowser(QWidget *pParent = 0); 47 48 ~UIVisoHostBrowser(); 48 49 virtual void showHideHiddenObjects(bool bShow) /* override */; 49 50 QString currentPath() const; 50 51 void setCurrentPath(const QString &strPath); 52 53 public slots: 54 55 void sltHandleAddAction(); 51 56 52 57 protected: … … 61 66 62 67 void sltHandleTableSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected); 63 void sltHandleAddAction();64 68 65 69 private: … … 71 75 UIVisoHostBrowserModel *m_pTreeModel; 72 76 UIVisoHostBrowserModel *m_pTableModel; 73 QAction *m_pAddAction;74 77 QTableView *m_pTableView; 75 78 };
Note:
See TracChangeset
for help on using the changeset viewer.