File indexing completed on 2024-12-01 04:37:18
0001 /* 0002 smb4knetworkbrowseritem - Smb4K's network browser list item. 0003 0004 SPDX-FileCopyrightText: 2007-2021 Alexander Reinholdt <alexander.reinholdt@kdemail.net> 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 // application specific includes 0009 #include "smb4knetworkbrowseritem.h" 0010 #include "core/smb4kglobal.h" 0011 #include "core/smb4khost.h" 0012 #include "core/smb4kshare.h" 0013 #include "core/smb4kworkgroup.h" 0014 0015 // Qt includes 0016 #include <QApplication> 0017 #include <QBrush> 0018 #include <QDebug> 0019 0020 using namespace Smb4KGlobal; 0021 0022 Smb4KNetworkBrowserItem::Smb4KNetworkBrowserItem(QTreeWidget *parent, const NetworkItemPtr &item) 0023 : QTreeWidgetItem(parent, item->type()) 0024 , m_item(item) 0025 { 0026 switch (m_item->type()) { 0027 case Workgroup: { 0028 WorkgroupPtr workgroup = m_item.staticCast<Smb4KWorkgroup>(); 0029 setText(Network, workgroup->workgroupName()); 0030 setIcon(Network, workgroup->icon()); 0031 break; 0032 } 0033 case Host: { 0034 HostPtr host = m_item.staticCast<Smb4KHost>(); 0035 setText(Network, host->hostName()); 0036 setText(IP, host->ipAddress()); 0037 setText(Comment, host->comment()); 0038 0039 if (host->isMasterBrowser()) { 0040 for (int i = 0; i < columnCount(); ++i) { 0041 QBrush brush(Qt::darkBlue); 0042 setForeground(i, brush); 0043 } 0044 } 0045 0046 setIcon(Network, host->icon()); 0047 break; 0048 } 0049 case Share: { 0050 SharePtr share = m_item.staticCast<Smb4KShare>(); 0051 setText(Network, share->shareName()); 0052 setText(Type, share->shareTypeString()); 0053 setText(Comment, share->comment()); 0054 0055 if (!share->isPrinter() && share->isMounted()) { 0056 for (int i = 0; i < columnCount(); ++i) { 0057 QFont f = font(i); 0058 f.setItalic(true); 0059 setFont(i, f); 0060 } 0061 } 0062 0063 setIcon(Network, share->icon()); 0064 break; 0065 } 0066 default: { 0067 break; 0068 } 0069 } 0070 } 0071 0072 Smb4KNetworkBrowserItem::Smb4KNetworkBrowserItem(QTreeWidgetItem *parent, const NetworkItemPtr &item) 0073 : QTreeWidgetItem(parent, item->type()) 0074 , m_item(item) 0075 { 0076 switch (m_item->type()) { 0077 case Workgroup: { 0078 WorkgroupPtr workgroup = m_item.staticCast<Smb4KWorkgroup>(); 0079 setText(Network, workgroup->workgroupName()); 0080 setIcon(Network, workgroup->icon()); 0081 break; 0082 } 0083 case Host: { 0084 HostPtr host = m_item.staticCast<Smb4KHost>(); 0085 setText(Network, host->hostName()); 0086 setText(IP, host->ipAddress()); 0087 setText(Comment, host->comment()); 0088 0089 if (host->isMasterBrowser()) { 0090 for (int i = 0; i < columnCount(); ++i) { 0091 QBrush brush(Qt::darkBlue); 0092 setForeground(i, brush); 0093 } 0094 } 0095 0096 setIcon(Network, host->icon()); 0097 break; 0098 } 0099 case Share: { 0100 SharePtr share = m_item.staticCast<Smb4KShare>(); 0101 setText(Network, share->shareName()); 0102 setText(Type, share->shareTypeString()); 0103 setText(Comment, share->comment()); 0104 0105 if (!share->isPrinter() && share->isMounted()) { 0106 for (int i = 0; i < columnCount(); ++i) { 0107 QFont f = font(i); 0108 f.setItalic(true); 0109 setFont(i, f); 0110 } 0111 } 0112 0113 setIcon(Network, share->icon()); 0114 break; 0115 } 0116 default: { 0117 break; 0118 } 0119 } 0120 } 0121 0122 Smb4KNetworkBrowserItem::~Smb4KNetworkBrowserItem() 0123 { 0124 } 0125 0126 WorkgroupPtr Smb4KNetworkBrowserItem::workgroupItem() 0127 { 0128 if (!m_item || (m_item->type() != Workgroup)) { 0129 return WorkgroupPtr(); 0130 } 0131 0132 return m_item.staticCast<Smb4KWorkgroup>(); 0133 } 0134 0135 HostPtr Smb4KNetworkBrowserItem::hostItem() 0136 { 0137 if (!m_item || (m_item->type() != Host)) { 0138 return HostPtr(); 0139 } 0140 0141 return m_item.staticCast<Smb4KHost>(); 0142 } 0143 0144 SharePtr Smb4KNetworkBrowserItem::shareItem() 0145 { 0146 if (!m_item || (m_item->type() != Share)) { 0147 return SharePtr(); 0148 } 0149 0150 return m_item.staticCast<Smb4KShare>(); 0151 } 0152 0153 NetworkItemPtr Smb4KNetworkBrowserItem::networkItem() 0154 { 0155 return m_item; 0156 } 0157 0158 void Smb4KNetworkBrowserItem::update() 0159 { 0160 switch (m_item->type()) { 0161 case Host: { 0162 HostPtr host = m_item.staticCast<Smb4KHost>(); 0163 0164 // Adjust the item's color. 0165 if (host->isMasterBrowser()) { 0166 for (int i = 0; i < columnCount(); ++i) { 0167 QBrush brush(Qt::darkBlue); 0168 setForeground(i, brush); 0169 } 0170 } else { 0171 for (int i = 0; i < columnCount(); ++i) { 0172 QBrush brush = QApplication::palette().text(); 0173 setForeground(i, brush); 0174 } 0175 } 0176 0177 // Set the IP address 0178 setText(IP, host->ipAddress()); 0179 0180 // Set the comment 0181 setText(Comment, host->comment()); 0182 break; 0183 } 0184 case Share: { 0185 SharePtr share = m_item.staticCast<Smb4KShare>(); 0186 0187 // Set the comment 0188 setText(Comment, share->comment()); 0189 0190 // Set the icon 0191 setIcon(Network, share->icon()); 0192 0193 // Set the font 0194 for (int i = 0; i < columnCount(); ++i) { 0195 QFont f = font(i); 0196 f.setItalic(share->isMounted()); 0197 setFont(i, f); 0198 } 0199 0200 break; 0201 } 0202 default: { 0203 break; 0204 } 0205 } 0206 }