Changeset 85893 in vbox
- Timestamp:
- Aug 26, 2020 5:26:53 PM (4 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/runtime/information
- Files:
-
- 3 edited
-
UIInformationConfiguration.cpp (modified) (6 diffs)
-
UIInformationConfiguration.h (modified) (3 diffs)
-
UIInformationRuntime.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationConfiguration.cpp
r83978 r85893 19 19 20 20 /* Qt includes: */ 21 #include <QAction> 21 22 #include <QApplication> 23 #include <QClipboard> 22 24 #include <QHeaderView> 25 #include <QMenu> 23 26 #include <QTableWidget> 24 27 #include <QTextDocument> … … 39 42 , m_pMainLayout(0) 40 43 , m_pTableWidget(0) 44 , m_pCopyWholeTableAction(0) 41 45 , m_iColumCount(3) 42 46 , m_iRowLeftMargin(0.2 * qApp->style()->pixelMetric(QStyle::PM_LayoutLeftMargin)) … … 56 60 { 57 61 createTableItems(); 62 } 63 64 void UIInformationConfiguration::sltHandleTableContextMenuRequest(const QPoint &position) 65 { 66 if (!m_pCopyWholeTableAction) 67 return; 68 69 QMenu menu(this); 70 menu.addAction(m_pCopyWholeTableAction); 71 menu.exec(mapToGlobal(position)); 72 } 73 74 void UIInformationConfiguration::sltCopyTableToClipboard() 75 { 76 QClipboard *pClipboard = QApplication::clipboard(); 77 if (!pClipboard) 78 return; 79 pClipboard->setText(tableData(), QClipboard::Clipboard); 58 80 } 59 81 … … 69 91 m_strUSBTitle = QApplication::translate("UIVMInformationDialog", "USB"); 70 92 m_strSharedFoldersTitle = QApplication::translate("UIVMInformationDialog", "Shared Folders"); 93 if (m_pCopyWholeTableAction) 94 m_pCopyWholeTableAction->setText(QApplication::translate("UIVMInformationDialog", "Copy All")); 71 95 createTableItems(); 72 96 } … … 160 184 m_pTableWidget->setFocusPolicy(Qt::NoFocus); 161 185 m_pTableWidget->setSelectionMode(QAbstractItemView::NoSelection); 186 m_pTableWidget->setContextMenuPolicy(Qt::CustomContextMenu); 187 connect(m_pTableWidget, &QTableWidget::customContextMenuRequested, 188 this, &UIInformationConfiguration::sltHandleTableContextMenuRequest); 162 189 m_pMainLayout->addWidget(m_pTableWidget); 163 190 } 191 m_pCopyWholeTableAction = new QAction(this); 192 connect(m_pCopyWholeTableAction, &QAction::triggered, 193 this, &UIInformationConfiguration::sltCopyTableToClipboard); 164 194 } 165 195 … … 217 247 return textDocument.toPlainText(); 218 248 } 249 250 QString UIInformationConfiguration::tableData() const 251 { 252 AssertReturn(m_pTableWidget, QString()); 253 AssertReturn(m_pTableWidget->columnCount() == 3, QString()); 254 QStringList data; 255 for (int i = 0; i < m_pTableWidget->rowCount(); ++i) 256 { 257 /* Skip the first column as it contains only icon and no text: */ 258 QTableWidgetItem *pItem = m_pTableWidget->item(i, 1); 259 QString strColumn1 = pItem ? pItem->text() : QString(); 260 pItem = m_pTableWidget->item(i, 2); 261 QString strColumn2 = pItem ? pItem->text() : QString(); 262 if (strColumn2.isEmpty()) 263 data << strColumn1; 264 else 265 data << strColumn1 << ": " << strColumn2; 266 data << "\n"; 267 } 268 return data.join(QString()); 269 } -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationConfiguration.h
r83978 r85893 60 60 61 61 void sltMachineDataChanged(); 62 void sltHandleTableContextMenuRequest(const QPoint &position); 63 void sltCopyTableToClipboard(); 62 64 63 65 private: … … 71 73 void resetTable(); 72 74 QString removeHtmlFromString(const QString &strOriginal); 75 QString tableData() const; 73 76 74 77 CMachine m_machine; … … 76 79 QVBoxLayout *m_pMainLayout; 77 80 QTableWidget *m_pTableWidget; 81 QAction *m_pCopyWholeTableAction; 82 78 83 const int m_iColumCount; 79 84 const int m_iRowLeftMargin; -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationRuntime.cpp
r85891 r85893 73 73 void updateClipboardMode(KClipboardMode enmMode = KClipboardMode_Max); 74 74 void updateDnDMode(KDnDMode enmMode = KDnDMode_Max); 75 QString tableData() ;75 QString tableData() const; 76 76 77 77 protected: … … 416 416 } 417 417 418 QString UIRuntimeInfoWidget::tableData() 419 { 420 QStringList stringData; 418 QString UIRuntimeInfoWidget::tableData() const 419 { 420 AssertReturn(columnCount() == 3, QString()); 421 QStringList data; 421 422 for (int i = 0; i < rowCount(); ++i) 422 423 { 423 /* Skip the first column as it is used for icon: */ 424 for (int j = 1; j < columnCount(); ++j) 425 { 426 QTableWidgetItem *pItem = item(i, j); 427 if (!pItem || pItem->text().isEmpty()) 428 continue; 429 stringData << pItem->text(); 430 if (j == 1) 431 stringData << ": "; 432 } 433 stringData << "\n"; 434 } 435 return stringData.join(QString()); 436 } 437 424 /* Skip the first column as it contains only icon and no text: */ 425 QTableWidgetItem *pItem = item(i, 1); 426 QString strColumn1 = pItem ? pItem->text() : QString(); 427 pItem = item(i, 2); 428 QString strColumn2 = pItem ? pItem->text() : QString(); 429 if (strColumn2.isEmpty()) 430 data << strColumn1; 431 else 432 data << strColumn1 << ": " << strColumn2; 433 data << "\n"; 434 } 435 return data.join(QString()); 436 } 438 437 439 438 void UIRuntimeInfoWidget::updateInfoRow(InfoRow enmLine, const QString &strColumn0, const QString &strColumn1)
Note:
See TracChangeset
for help on using the changeset viewer.

