Changeset 75897 in vbox
- Timestamp:
- Dec 3, 2018 12:29:15 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 127101
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/guestctrl
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.cpp
r75835 r75897 349 349 connect(m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_S_MoveToGuest), &QAction::triggered, 350 350 this, &UIGuestControlFileManager::sltMoveHostToGuest); 351 352 351 layout ->addWidget(m_pVerticalToolBar); 353 352 } … … 393 392 connect(m_pActionPool->action(UIActionIndex_M_GuestControlFileManager_T_FileOperations), &QAction::toggled, 394 393 this, &UIGuestControlFileManager::sltPanelActionToggled); 394 395 #ifdef TEST_COPY 396 397 m_pToolBar->addSeparator(); 398 QAction *pSession = new QAction("session", this); 399 QAction *pCopy = new QAction("Copy", this); 400 m_pToolBar->addAction(pSession); 401 m_pToolBar->addAction(pCopy); 402 403 connect(pSession, &QAction::triggered, 404 this, &UIGuestControlFileManager::sltTestSession); 405 connect(pCopy, &QAction::triggered, 406 this, &UIGuestControlFileManager::sltTestCopy); 407 408 #endif 395 409 396 410 #ifdef VBOX_WS_MAC … … 810 824 } 811 825 826 void UIGuestControlFileManager::sltTestSession() 827 { 828 createSession("vbox", "password"); 829 } 830 831 void UIGuestControlFileManager::sltTestCopy() 832 { 833 QStringList sources; 834 sources << "/home/serkan/misos/xenialpup-7.5-uefi.iso"; 835 if ( m_pGuestFileTable) 836 m_pGuestFileTable->copyHostToGuest(sources, false, "/home/vbox/test"); 837 } 838 812 839 #include "UIGuestControlFileManager.moc" -
trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManager.h
r75835 r75897 125 125 void sltHandleOptionsUpdated(); 126 126 127 void sltTestCopy(); 128 void sltTestSession(); 129 127 130 private: 128 131 … … 170 173 QStringList getFsObjInfoStringList(const T &fsObjectInfo) const; 171 174 void appendLog(const QString &strLog, FileManagerLogType eLogType); 172 173 175 CGuest m_comGuest; 174 176 CGuestSession m_comGuestSession; -
trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerOperationsPanel.cpp
r75827 r75897 22 22 /* Qt includes: */ 23 23 # include <QHBoxLayout> 24 # include <QGridLayout> 24 25 # include <QLabel> 25 26 # include <QMenu> … … 65 66 void sigProgressComplete(QUuid progressId); 66 67 void sigProgressFail(QString strErrorString, FileManagerLogType eLogType); 68 void sigFocusIn(QWidget *pWidget); 69 void sigFocusOut(QWidget *pWidget); 67 70 68 71 protected: 69 72 70 73 virtual void retranslateUi() /* override */; 71 //virtual void focusInEvent(QFocusEvent *pEvent) /* override */;72 //virtual void focusOutEvent(QFocusEvent *pEvent) /* override */;74 virtual void focusInEvent(QFocusEvent *pEvent) /* override */; 75 virtual void focusOutEvent(QFocusEvent *pEvent) /* override */; 73 76 74 77 private slots: … … 79 82 80 83 private: 81 84 enum OperationStatus 85 { 86 OperationStatus_NotStarted, 87 OperationStatus_Working, 88 OperationStatus_Paused, 89 OperationStatus_Canceled, 90 OperationStatus_Succeded, 91 OperationStatus_Failed, 92 OperationStatus_Invalid, 93 OperationStatus_Max 94 95 }; 82 96 void prepare(); 83 97 void prepareWidgets(); … … 85 99 void cleanupEventHandler(); 86 100 101 OperationStatus m_eStatus; 87 102 CProgress m_comProgress; 88 103 UIProgressEventHandler *m_pEventHandler; 89 Q HBoxLayout *m_pMainLayout;104 QGridLayout *m_pMainLayout; 90 105 QProgressBar *m_pProgressBar; 91 106 QIToolButton *m_pCancelButton; 92 107 QILabel *m_pStatusLabel; 108 QILabel *m_pPercentageLabel; 93 109 }; 94 110 … … 100 116 UIFileOperationProgressWidget::UIFileOperationProgressWidget(const CProgress &comProgress, QWidget *pParent /* = 0 */) 101 117 : QIWithRetranslateUI<QFrame>(pParent) 118 , m_eStatus(OperationStatus_NotStarted) 102 119 , m_comProgress(comProgress) 103 120 , m_pEventHandler(0) … … 106 123 , m_pCancelButton(0) 107 124 , m_pStatusLabel(0) 125 , m_pPercentageLabel(0) 108 126 { 109 127 prepare(); … … 134 152 { 135 153 if (m_pCancelButton) 136 m_pCancelButton->setToolTip(UIGuestControlFileManager::tr("Close the pane")); 154 m_pCancelButton->setToolTip(UIGuestControlFileManager::tr("Cancel")); 155 156 switch (m_eStatus) 157 { 158 case OperationStatus_NotStarted: 159 m_pStatusLabel->setText(UIGuestControlFileManager::tr("Not yet started")); 160 break; 161 case OperationStatus_Working: 162 m_pStatusLabel->setText(UIGuestControlFileManager::tr("Working")); 163 break; 164 case OperationStatus_Paused: 165 m_pStatusLabel->setText(UIGuestControlFileManager::tr("Paused")); 166 break; 167 case OperationStatus_Canceled: 168 m_pStatusLabel->setText(UIGuestControlFileManager::tr("Canceled")); 169 break; 170 case OperationStatus_Succeded: 171 m_pStatusLabel->setText(UIGuestControlFileManager::tr("Succeded")); 172 break; 173 case OperationStatus_Failed: 174 m_pStatusLabel->setText(UIGuestControlFileManager::tr("Failed")); 175 break; 176 case OperationStatus_Invalid: 177 case OperationStatus_Max: 178 default: 179 m_pStatusLabel->setText(UIGuestControlFileManager::tr("Invalid")); 180 break; 181 } 182 } 183 184 void UIFileOperationProgressWidget::focusInEvent(QFocusEvent *pEvent) 185 { 186 QFrame::focusInEvent(pEvent); 187 emit sigFocusIn(this); 188 } 189 190 void UIFileOperationProgressWidget::focusOutEvent(QFocusEvent *pEvent) 191 { 192 QFrame::focusOutEvent(pEvent); 193 emit sigFocusOut(this); 137 194 } 138 195 … … 146 203 void UIFileOperationProgressWidget::prepareWidgets() 147 204 { 148 m_pMainLayout = new Q HBoxLayout;205 m_pMainLayout = new QGridLayout; 149 206 if (!m_pMainLayout) 150 207 return; … … 158 215 if (!m_comProgress.isNull() && !m_comProgress.GetCancelable()) 159 216 m_pCancelButton->setEnabled(false); 160 m_pMainLayout->addWidget(m_pCancelButton );217 m_pMainLayout->addWidget(m_pCancelButton, 0, 0, 1, 1); 161 218 } 162 219 … … 166 223 m_pProgressBar->setMinimum(0); 167 224 m_pProgressBar->setMaximum(100); 168 m_pProgressBar->setTextVisible(true); 169 m_pMainLayout->addWidget(m_pProgressBar); 225 /* Hide the QProgressBar's text since in MacOS it never shows: */ 226 m_pProgressBar->setTextVisible(false); 227 m_pMainLayout->addWidget(m_pProgressBar, 0, 1, 1, 2); 170 228 } 171 229 m_pStatusLabel = new QILabel; 172 230 if (m_pStatusLabel) 173 231 { 174 m_pMainLayout->addWidget(m_pStatusLabel); 175 m_pStatusLabel->setText(UIGuestControlFileManager::tr("Idle")); 176 } 177 m_pMainLayout->addStretch(); 232 m_pStatusLabel->setContextMenuPolicy(Qt::NoContextMenu); 233 m_pMainLayout->addWidget(m_pStatusLabel, 0, 3, 1, 1); 234 } 235 236 m_pPercentageLabel = new QILabel; 237 if (m_pPercentageLabel) 238 { 239 m_pPercentageLabel->setContextMenuPolicy(Qt::NoContextMenu); 240 m_pMainLayout->addWidget(m_pPercentageLabel, 1, 1, 1, 4); 241 } 178 242 179 243 setLayout(m_pMainLayout); 244 retranslateUi(); 180 245 } 181 246 … … 189 254 connect(m_pEventHandler, &UIProgressEventHandler::sigProgressTaskComplete, 190 255 this, &UIFileOperationProgressWidget::sltHandleProgressComplete); 191 m_pStatusLabel->setText(UIGuestControlFileManager::tr("Working")); 256 m_eStatus = OperationStatus_Working; 257 retranslateUi(); 192 258 } 193 259 … … 203 269 Q_UNUSED(iPercent); 204 270 m_pProgressBar->setValue(iPercent); 205 271 if (m_pPercentageLabel) 272 m_pPercentageLabel->setText(QString("%1%").arg(QString::number(iPercent))); 206 273 } 207 274 … … 215 282 { 216 283 emit sigProgressFail(UIErrorString::formatErrorInfo(m_comProgress), FileManagerLogType_Error); 217 if (m_pStatusLabel) 218 m_pStatusLabel->setText(UIGuestControlFileManager::tr("Failed")); 284 m_eStatus = OperationStatus_Failed; 219 285 } 220 286 else 221 287 { 222 288 emit sigProgressComplete(m_comProgress.GetId()); 223 if (m_pStatusLabel) 224 m_pStatusLabel->setText(UIGuestControlFileManager::tr("Succeeded")); 225 } 289 m_eStatus = OperationStatus_Succeded; 290 } 291 if (m_pProgressBar) 292 m_pProgressBar->setEnabled(false); 293 retranslateUi(); 226 294 } 227 295 … … 232 300 if (m_pCancelButton) 233 301 m_pCancelButton->setEnabled(false); 234 if (m_pStatusLabel)235 m_pStatusLabel->setText(UIGuestControlFileManager::tr("Canceled"));236 302 if (m_pProgressBar) 237 303 m_pProgressBar->setEnabled(false); 304 m_eStatus = OperationStatus_Canceled; 305 retranslateUi(); 238 306 } 239 307 … … 250 318 , m_pContainerLayout(0) 251 319 , m_pContainerSpaceItem(0) 320 , m_pWidgetInFocus(0) 252 321 { 253 322 prepare(); … … 262 331 if (!pOperationsWidget) 263 332 return; 333 m_widgetSet.insert(pOperationsWidget); 264 334 m_pContainerLayout->insertWidget(m_pContainerLayout->count() - 1, pOperationsWidget); 265 335 … … 268 338 connect(pOperationsWidget, &UIFileOperationProgressWidget::sigProgressFail, 269 339 this, &UIGuestControlFileManagerOperationsPanel::sigFileOperationFail); 340 341 connect(pOperationsWidget, &UIFileOperationProgressWidget::sigFocusIn, 342 this, &UIGuestControlFileManagerOperationsPanel::sltHandleWidgetFocusIn); 343 connect(pOperationsWidget, &UIFileOperationProgressWidget::sigFocusOut, 344 this, &UIGuestControlFileManagerOperationsPanel::sltHandleWidgetFocusOut); 270 345 } 271 346 … … 311 386 QMenu *menu = new QMenu(this); 312 387 313 QAction *pCleanFinished = menu->addAction(UIGuestControlFileManager::tr("Clean Finished")); 314 QAction *pCleanAll = menu->addAction(UIGuestControlFileManager::tr("Clean All")); 315 316 connect(pCleanFinished, &QAction::triggered, 317 this, &UIGuestControlFileManagerOperationsPanel::sltCleanFinished); 318 connect(pCleanAll, &QAction::triggered, 319 this, &UIGuestControlFileManagerOperationsPanel::sltCleanAll); 388 if (m_pWidgetInFocus) 389 { 390 QAction *pRemoveSelected = menu->addAction(UIGuestControlFileManager::tr("Remove Selected")); 391 connect(pRemoveSelected, &QAction::triggered, 392 this, &UIGuestControlFileManagerOperationsPanel::sltRemoveSelected); 393 } 394 395 QAction *pRemoveFinished = menu->addAction(UIGuestControlFileManager::tr("Remove Finished")); 396 QAction *pRemoveAll = menu->addAction(UIGuestControlFileManager::tr("Remove All")); 397 398 connect(pRemoveFinished, &QAction::triggered, 399 this, &UIGuestControlFileManagerOperationsPanel::sltRemoveFinished); 400 connect(pRemoveAll, &QAction::triggered, 401 this, &UIGuestControlFileManagerOperationsPanel::sltRemoveAll); 320 402 321 403 menu->exec(pEvent->globalPos()); … … 323 405 } 324 406 325 void UIGuestControlFileManagerOperationsPanel::sltCleanFinished() 326 { 327 // QList<int> listOfRowsToRemove; 328 // for (int i = 0; i < m_pListView->count(); ++i) 329 // { 330 // UIFileOperationProgressWidget* pProgressWidget = 331 // qobject_cast<UIFileOperationProgressWidget*>(m_pListView->itemWidget(m_pListView->item(i))); 332 // if (pProgressWidget) 333 // { 334 // if (pProgressWidget->isCanceled() || pProgressWidget->isCompleted()) 335 // listOfRowsToRemove << i; 336 // } 337 // } 338 // foreach (int row, listOfRowsToRemove) 339 // { 340 // /* This will delete the progress widget as well: */ 341 // QListWidgetItem *pItem = m_pListView->takeItem(row); 342 // delete m_pListView->itemWidget(pItem); 343 // delete pItem; 344 // } 345 } 346 347 void UIGuestControlFileManagerOperationsPanel::sltCleanAll() 348 { 349 //m_pListView->clear(); 350 //m_pListView->setRowCount(0); 407 void UIGuestControlFileManagerOperationsPanel::sltRemoveFinished() 408 { 409 QList<UIFileOperationProgressWidget*> widgetsToRemove; 410 foreach (QWidget *pWidget, m_widgetSet) 411 { 412 UIFileOperationProgressWidget *pProgressWidget = qobject_cast<UIFileOperationProgressWidget*>(pWidget); 413 if (pProgressWidget && pProgressWidget->isCompleted()) 414 { 415 delete pProgressWidget; 416 widgetsToRemove << pProgressWidget; 417 } 418 } 419 foreach (UIFileOperationProgressWidget *pWidget, widgetsToRemove) 420 m_widgetSet.remove(pWidget); 421 } 422 423 void UIGuestControlFileManagerOperationsPanel::sltRemoveAll() 424 { 425 foreach (QWidget *pWidget, m_widgetSet) 426 { 427 if (pWidget) 428 { 429 delete pWidget; 430 } 431 } 432 m_widgetSet.clear(); 433 } 434 435 void UIGuestControlFileManagerOperationsPanel::sltRemoveSelected() 436 { 437 if (!m_pWidgetInFocus) 438 return; 439 delete m_pWidgetInFocus; 440 m_widgetSet.remove(m_pWidgetInFocus); 441 } 442 443 void UIGuestControlFileManagerOperationsPanel::sltHandleWidgetFocusIn(QWidget *pWidget) 444 { 445 if (!pWidget) 446 return; 447 m_pWidgetInFocus = pWidget; 448 } 449 450 void UIGuestControlFileManagerOperationsPanel::sltHandleWidgetFocusOut(QWidget *pWidget) 451 { 452 if (!pWidget) 453 return; 454 m_pWidgetInFocus = 0; 351 455 } 352 456 -
trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestControlFileManagerOperationsPanel.h
r75788 r75897 68 68 private slots: 69 69 70 void sltCleanFinished(); 71 void sltCleanAll(); 70 void sltRemoveFinished(); 71 void sltRemoveAll(); 72 void sltRemoveSelected(); 73 74 void sltHandleWidgetFocusIn(QWidget *pWidget); 75 void sltHandleWidgetFocusOut(QWidget *pWidget); 72 76 73 77 private: … … 75 79 /** @name Member variables. 76 80 * @{ */ 77 QScrollArea *m_pScrollArea; 78 QWidget *m_pContainerWidget; 79 QVBoxLayout *m_pContainerLayout; 80 QSpacerItem *m_pContainerSpaceItem; 81 QScrollArea *m_pScrollArea; 82 QWidget *m_pContainerWidget; 83 QVBoxLayout *m_pContainerLayout; 84 QSpacerItem *m_pContainerSpaceItem; 85 QWidget *m_pWidgetInFocus; 86 QSet<QWidget*> m_widgetSet; 81 87 /** @} */ 82 88 -
trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestFileTable.cpp
r75760 r75897 330 330 } 331 331 332 void UIGuestFileTable::copyHostToGuest(const QStringList &hostSourcePathList, bool fDeleteAfterSuccessfulCopy /* = false */) 332 void UIGuestFileTable::copyHostToGuest(const QStringList &hostSourcePathList, bool fDeleteAfterSuccessfulCopy /* = false */, 333 const QString &strDestination /* = QString() */) 333 334 { 334 335 if (!checkGuestSession()) … … 337 338 QVector<QString> aFilters; 338 339 QVector<QString> aFlags; 339 QString strDestinationPath = currentDirectoryPath(); 340 QString strDestinationPath = strDestination; 341 if (strDestinationPath.isEmpty()) 342 strDestinationPath = currentDirectoryPath(); 343 340 344 if (strDestinationPath.isEmpty()) 341 345 { -
trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestFileTable.h
r75760 r75897 43 43 void initGuestFileTable(const CGuestSession &session); 44 44 void copyGuestToHost(const QString& hostDestinationPath, bool fDeleteAfterSuccessfulCopy = false); 45 void copyHostToGuest(const QStringList &hostSourcePathList, bool fDeleteAfterSuccessfulCopy = false); 45 void copyHostToGuest(const QStringList &hostSourcePathList, bool fDeleteAfterSuccessfulCopy = false, 46 const QString &strDestination = QString()); 46 47 47 48 signals:
Note:
See TracChangeset
for help on using the changeset viewer.