summaryrefslogtreecommitdiffstats
path: root/smb4k/browser/smb4knetworkbrowseritem.h
diff options
context:
space:
mode:
Diffstat (limited to 'smb4k/browser/smb4knetworkbrowseritem.h')
-rw-r--r--smb4k/browser/smb4knetworkbrowseritem.h222
1 files changed, 222 insertions, 0 deletions
diff --git a/smb4k/browser/smb4knetworkbrowseritem.h b/smb4k/browser/smb4knetworkbrowseritem.h
new file mode 100644
index 0000000..141ae04
--- /dev/null
+++ b/smb4k/browser/smb4knetworkbrowseritem.h
@@ -0,0 +1,222 @@
+/***************************************************************************
+ smb4knetworkbrowseritem - Smb4K's network browser list item.
+ -------------------
+ begin : Mo Jan 8 2007
+ copyright : (C) 2007 by Alexander Reinholdt
+ email : dustpuppy@users.berlios.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef SMB4KNETWORKBROWSERITEM_H
+#define SMB4KNETWORKBROWSERITEM_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// Qt includes
+#include <qpixmap.h>
+
+// KDE includes
+#include <klistview.h>
+
+// application specific includes
+#include "../core/smb4knetworkitems.h"
+
+class Smb4KNetworkBrowser;
+class Smb4KNetworkBrowserItem : public KListViewItem
+{
+ public:
+ /**
+ * The constructor for toplevel (workgroup) items.
+ *
+ * @param parent The parent list view.
+ *
+ * @param item The Smb4KWorkgroupItem that carries all the data
+ * needed to set up a "workgroup item".
+ */
+ Smb4KNetworkBrowserItem( QListView *parent, Smb4KWorkgroupItem *item );
+
+ /**
+ * The constructor for the host items.
+ *
+ * @param parent The parent list view item.
+ *
+ * @param item The Smb4KHostItem that carries all the data.
+ */
+ Smb4KNetworkBrowserItem( QListViewItem *parent, Smb4KHostItem *item );
+
+ /**
+ * The constructor for the share items.
+ *
+ * @param parent The parent list view item.
+ *
+ * @param item The Smb4KShareItem that carries all the data.
+ */
+ Smb4KNetworkBrowserItem( QListViewItem *parent, Smb4KShareItem *item );
+
+ /**
+ * The destructor.
+ */
+ virtual ~Smb4KNetworkBrowserItem();
+
+ /**
+ * Enumeration that determines the type of the item.
+ */
+ enum ItemType{ Workgroup, Host, Share };
+
+ /**
+ * This function returns the type of the item according to the ItemType
+ * enumeration.
+ *
+ * @returns the type of the item.
+ */
+ Smb4KNetworkBrowserItem::ItemType type();
+
+ /**
+ * This function returns a pointer to the Smb4KWorkgroupItem object if it
+ * is present or NULL if it is not.
+ *
+ * @returns a pointer to the workgroup item or NULL.
+ */
+ Smb4KWorkgroupItem *workgroupItem();
+
+ /**
+ * This function returns a pointer to the Smb4KHostItem object if it
+ * is present or NULL if it is not.
+ *
+ * @returns a pointer to the host item or NULL.
+ */
+ Smb4KHostItem *hostItem();
+
+ /**
+ * This function returns a pointer to the Smb4KShareItem object if it
+ * is present or NULL if it is not.
+ *
+ * @returns a pointer to the share item or NULL.
+ */
+ Smb4KShareItem *shareItem();
+
+ /**
+ * This function updates the internal Smb4KWorkgroupItem object.
+ *
+ * @param item A Smb4KWorkgroupItem object
+ */
+ void update( Smb4KWorkgroupItem *item );
+
+ /**
+ * This function updates the internal Smb4KHostItem object and
+ * changes the text that's being displayed in the browser. Use this,
+ * if you have to alter the item in the browser.
+ *
+ * @param item A Smb4KHostItem
+ */
+ void update( Smb4KHostItem *item );
+
+ /**
+ * This function updates the internal Smb4KShareItem object and
+ * changes the text that's being displayed in the browser. Use this,
+ * if you have to alter the item in the browser.
+ *
+ * @param item A Smb4KShareItem
+ */
+ void update( Smb4KShareItem *item );
+
+ /**
+ * This is a convenience function. It returns TRUE if the item is a
+ * printer share and FALSE otherwise.
+ *
+ * @returns TRUE if the item is a printer share and FALSE otherwise.
+ */
+ bool isPrinter();
+
+ /**
+ * Tell the item that the share it represents is mounted. The icon will be
+ * changed by this function and the item text will be set to italic by
+ * Smb4KNetworkBrowserItem::paintCell().
+ *
+ * @param mounted TRUE if the share is mounted and FALSE otherwise
+ */
+ void setMounted( bool mounted = true );
+
+ /**
+ * Tells whether the respective share is shown as mounted or not. For non-share
+ * items this function will always return FALSE.
+ *
+ * @returns TRUE if the share is mounted and FALSE otherwise.
+ */
+ bool isMounted();
+
+ /**
+ * Returns the icon of this item in "Desktop" size.
+ *
+ * @returns a pixmap
+ */
+ const QPixmap &desktopIcon() { return m_desktop_icon; }
+
+ protected:
+ /**
+ * Reimplemented from QListViewItem.
+ */
+ void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align );
+
+ private:
+ /**
+ * This function sets the icon of the item according to
+ * the type and other factors.
+ */
+ void setIcon();
+
+ /**
+ * The type of the item.
+ */
+ ItemType m_type;
+
+ /**
+ * This enumeration enumerates the columns of the item.
+ */
+ enum Columns{ Network = 0, Type = 1, IP = 2, Comment = 3 };
+
+ /**
+ * The workgroup item
+ */
+ Smb4KWorkgroupItem m_workgroup;
+
+ /**
+ * The host item
+ */
+ Smb4KHostItem m_host;
+
+ /**
+ * The share item
+ */
+ Smb4KShareItem m_share;
+
+ /**
+ * Tells us that the share item is mounted
+ */
+ bool m_mounted;
+
+ /**
+ * The icon in "DesktopIcon" format
+ */
+ QPixmap m_desktop_icon;
+};
+
+#endif