Changeset 66695 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- Apr 27, 2017 3:01:50 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 115088
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/hostnetwork
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/hostnetwork/UIHostNetworkManager.cpp
r66681 r66695 49 49 50 50 51 /** Tree-widget column tags. */ 52 enum 53 { 54 Column_Name, 55 Column_IPv4, 56 Column_IPv6, 57 Column_Max, 58 }; 59 60 51 61 /** Host Network Manager: Tree-widget item. */ 52 62 class UIItemHostNetwork : public QITreeWidgetItem, public UIDataHostNetwork … … 59 69 /** Returns item name. */ 60 70 QString name() const { return m_interface.m_strName; } 71 72 private: 73 74 /** Returns CIDR for a passed @a strMask. */ 75 static int maskToCidr(const QString &strMask); 61 76 }; 62 77 … … 68 83 void UIItemHostNetwork::updateFields() 69 84 { 70 /* Compose item name/tool-tip: */ 71 setText(0, m_interface.m_strName); 85 /* Compose item fields: */ 86 setText(Column_Name, m_interface.m_strName); 87 setText(Column_IPv4, QString("%1/%2").arg(m_interface.m_strInterfaceAddress).arg(maskToCidr(m_interface.m_strInterfaceMask))); 88 setText(Column_IPv6, !m_interface.m_fIpv6Supported ? QString() : 89 QString("%1/%2").arg(m_interface.m_strInterfaceAddress6).arg(maskToCidr(m_interface.m_strInterfaceMaskLength6))); 90 91 /* Compose item tool-tip: */ 72 92 const QString strTable("<table cellspacing=5>%1</table>"); 73 93 const QString strHeader("<tr><td><nobr>%1: </nobr></td><td><nobr>%2</nobr></td></tr>"); … … 124 144 125 145 /* Assign tool-tip finally: */ 126 setToolTip(0, strTable.arg(strToolTip)); 146 setToolTip(Column_Name, strTable.arg(strToolTip)); 147 } 148 149 /* static */ 150 int UIItemHostNetwork::maskToCidr(const QString &strMask) 151 { 152 /* Parse passed mask: */ 153 QList<int> address; 154 foreach (const QString &strValue, strMask.split('.')) 155 address << strValue.toInt(); 156 157 /* Calculate CIDR: */ 158 int iCidr = 0; 159 for (int i = 0; i < 4 || i < address.size(); ++i) 160 { 161 switch(address.at(i)) 162 { 163 case 0x80: iCidr += 1; break; 164 case 0xC0: iCidr += 2; break; 165 case 0xE0: iCidr += 3; break; 166 case 0xF0: iCidr += 4; break; 167 case 0xF8: iCidr += 5; break; 168 case 0xFC: iCidr += 6; break; 169 case 0xFE: iCidr += 7; break; 170 case 0xFF: iCidr += 8; break; 171 /* Return CIDR prematurelly: */ 172 default: return iCidr; 173 } 174 } 175 176 /* Return CIDR: */ 177 return iCidr; 127 178 } 128 179 … … 214 265 m_pToolBar->updateLayout(); 215 266 #endif 267 268 /* Translate tree-widget: */ 269 const QStringList fields = QStringList() 270 << tr("Name") 271 << tr("IPv4 address/mask") 272 << tr("IPv6 address/mask"); 273 m_pTreeWidget->setHeaderLabels(fields); 274 } 275 276 void UIHostNetworkManager::resizeEvent(QResizeEvent *pEvent) 277 { 278 /* Call to base-class: */ 279 QIWithRetranslateUI<QMainWindow>::resizeEvent(pEvent); 280 281 /* Adjust tree-widget: */ 282 sltAdjustTreeWidget(); 283 } 284 285 void UIHostNetworkManager::showEvent(QShowEvent *pEvent) 286 { 287 /* Call to base-class: */ 288 QIWithRetranslateUI<QMainWindow>::showEvent(pEvent); 289 290 /* Adjust tree-widget: */ 291 sltAdjustTreeWidget(); 216 292 } 217 293 … … 264 340 createItemForNetworkHost(data, true); 265 341 266 /* Sort list by the 1st column: */267 m_pTreeWidget->sortByColumn(0, Qt::AscendingOrder);342 /* Adjust tree-widget: */ 343 sltAdjustTreeWidget(); 268 344 } 269 345 } … … 359 435 loadHostNetwork(comInterface, data); 360 436 updateItemForNetworkHost(data, true, pItem); 437 438 /* Adjust tree-widget: */ 439 sltAdjustTreeWidget(); 361 440 } 362 441 } … … 433 512 /* Remove interface from the tree: */ 434 513 delete pItem; 514 515 /* Adjust tree-widget: */ 516 sltAdjustTreeWidget(); 435 517 } 436 518 } 437 519 } 438 520 } 521 } 522 523 void UIHostNetworkManager::sltAdjustTreeWidget() 524 { 525 /* Get the tree-widget abstract interface: */ 526 QAbstractItemView *pItemView = m_pTreeWidget; 527 /* Get the tree-widget header-view: */ 528 QHeaderView *pItemHeader = m_pTreeWidget->header(); 529 530 /* Calculate the total tree-widget width: */ 531 const int iTotal = m_pTreeWidget->viewport()->width(); 532 /* Look for a minimum width hints for non-important columns: */ 533 const int iMinWidth1 = qMax(pItemView->sizeHintForColumn(Column_IPv4), pItemHeader->sectionSizeHint(Column_IPv4)); 534 const int iMinWidth2 = qMax(pItemView->sizeHintForColumn(Column_IPv6), pItemHeader->sectionSizeHint(Column_IPv6)); 535 /* Propose suitable width hints for non-important columns: */ 536 const int iWidth1 = iMinWidth1 < iTotal / Column_Max ? iMinWidth1 : iTotal / Column_Max; 537 const int iWidth2 = iMinWidth2 < iTotal / Column_Max ? iMinWidth2 : iTotal / Column_Max; 538 /* Apply the proposal: */ 539 m_pTreeWidget->setColumnWidth(Column_IPv4, iWidth1); 540 m_pTreeWidget->setColumnWidth(Column_IPv6, iWidth2); 541 m_pTreeWidget->setColumnWidth(Column_Name, iTotal - iWidth1 - iWidth2); 439 542 } 440 543 … … 631 734 { 632 735 /* Configure tree-widget: */ 633 m_pTreeWidget->header()->hide();634 736 m_pTreeWidget->setRootIsDecorated(false); 635 737 m_pTreeWidget->setAlternatingRowColors(true); 636 738 m_pTreeWidget->setContextMenuPolicy(Qt::CustomContextMenu); 637 739 m_pTreeWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 638 m_pTreeWidget->sortItems(0, Qt::AscendingOrder); 740 m_pTreeWidget->setColumnCount(Column_Max); 741 m_pTreeWidget->setSortingEnabled(true); 742 m_pTreeWidget->sortByColumn(Column_Name, Qt::AscendingOrder); 639 743 connect(m_pTreeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), 640 744 this, SLOT(sltHandleCurrentItemChange())); … … 707 811 } 708 812 709 /* Sort list by the 1st column: */710 m_pTreeWidget->sortByColumn(0, Qt::AscendingOrder);711 813 /* Choose the 1st item as current initially: */ 712 814 m_pTreeWidget->setCurrentItem(m_pTreeWidget->topLevelItem(0)); 713 815 sltHandleCurrentItemChange(); 816 817 /* Adjust tree-widget: */ 818 sltAdjustTreeWidget(); 714 819 } 715 820 } -
trunk/src/VBox/Frontends/VirtualBox/src/hostnetwork/UIHostNetworkManager.h
r66681 r66695 54 54 protected: 55 55 56 /** Handles translation event. */ 57 virtual void retranslateUi() /* override */; 56 /** @name Event-handling stuff. 57 * @{ */ 58 /** Handles translation event. */ 59 virtual void retranslateUi() /* override */; 60 61 /** Handles resize @a pEvent. */ 62 virtual void resizeEvent(QResizeEvent *pEvent) /* override */; 63 64 /** Handles show @a pEvent. */ 65 virtual void showEvent(QShowEvent *pEvent) /* override */; 66 /** @} */ 58 67 59 68 private slots: … … 71 80 /** @name Tree-widget stuff. 72 81 * @{ */ 73 /** Handles host network tree current item change. */ 82 /** Handles command to adjust tree-widget. */ 83 void sltAdjustTreeWidget(); 84 85 /** Handles tree-widget current item change. */ 74 86 void sltHandleCurrentItemChange(); 75 /** Handles context menu request for @a position of host network tree. */87 /** Handles context menu request for tree-widget @a position. */ 76 88 void sltHandleContextMenuRequest(const QPoint &position); 77 89 /** @} */
Note:
See TracChangeset
for help on using the changeset viewer.