summaryrefslogtreecommitdiffstats
path: root/smb4k/browser/smb4knetworkbrowser_part.h
diff options
context:
space:
mode:
Diffstat (limited to 'smb4k/browser/smb4knetworkbrowser_part.h')
-rw-r--r--smb4k/browser/smb4knetworkbrowser_part.h377
1 files changed, 377 insertions, 0 deletions
diff --git a/smb4k/browser/smb4knetworkbrowser_part.h b/smb4k/browser/smb4knetworkbrowser_part.h
new file mode 100644
index 0000000..a3351dc
--- /dev/null
+++ b/smb4k/browser/smb4knetworkbrowser_part.h
@@ -0,0 +1,377 @@
+/***************************************************************************
+ smb4knetworkbrowser_part - This Part encapsulates the network
+ browser of Smb4K.
+ -------------------
+ begin : Fr Jan 5 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 SMB4KNETWORKBROWSERPART_H
+#define SMB4KNETWORKBROWSERPART_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// KDE includes
+#include <kactionclasses.h>
+#include <kparts/part.h>
+#include <kparts/factory.h>
+
+// Qt includes
+#include <qptrlist.h>
+#include <qlistview.h>
+
+// forward declarations
+class Smb4KNetworkBrowser;
+class Smb4KNetworkBrowserItem;
+class Smb4KWorkgroupItem;
+class Smb4KHostItem;
+class Smb4KShareItem;
+
+/**
+ * This is one of the parts of Smb4K. It contains the network browser.
+ *
+ * @author Alexander Reinholdt <dustpuppy@users.berlios.de>
+ */
+
+class Smb4KNetworkBrowserPart : public KParts::Part
+{
+ Q_OBJECT
+
+ public:
+ /**
+ * Mode enumeration
+ */
+ enum Mode { Normal, KonqPlugin };
+
+ /**
+ * The constructor.
+ *
+ * @param parentWidget The parent widget
+ *
+ * @param widgetName The name the widget should have
+ *
+ * @param parent The parent object
+ *
+ * @param name The name this object should have
+ *
+ * @param mode Determines in which mode the KPart should be started
+ */
+ Smb4KNetworkBrowserPart( QWidget *parentWidget = 0,
+ const char *widgetName = 0,
+ QObject *parent = 0,
+ const char *name = 0,
+ Mode mode = Normal );
+
+ /**
+ * The destructor.
+ */
+ virtual ~Smb4KNetworkBrowserPart();
+
+ protected:
+ /**
+ * Reimplemented from KParts::Part.
+ */
+ void customEvent( QCustomEvent *e );
+
+ protected slots:
+ /**
+ * This slot is called if the user requests the context menu. It shows
+ * the menu with the actions defined for the widget.
+ *
+ * @param item The item for which the popup menu has been
+ * requested or NULL.
+ *
+ * @param pos The position where user clicked.
+ *
+ * @param col The column where the user clicked.
+ */
+ void slotContextMenuRequested( QListViewItem *item, const QPoint &pos, int col );
+
+ /**
+ * Is called when the selection changed. This slot takes care of the
+ * actions being enabled or disabled accordingly. All widget specific
+ * stuff has to be done in the browser widget itself.
+ *
+ * @param item The selection list view item.
+ */
+ void slotSelectionChanged( QListViewItem *item );
+
+ /**
+ * Is called when the user pressed a mouse button somewhere in the widget.
+ * In addition to Smb4KNetworkBrowserPart::slotSelectionChanged() this slot
+ * takes care of the actions being enabled or disabled accordingly. All
+ * widget specific stuff has to be done in the browser widget itself.
+ *
+ * @param item The selection list view item.
+ */
+ void slotPressed( QListViewItem *item );
+
+ /**
+ * This slot is called when an item of the browser's list view has been opened.
+ * It is used to invoke the functions of the scanner that need to be run.
+ *
+ * @param item The list view item that has been opened.
+ */
+ void slotItemExpanded( QListViewItem *item );
+
+ /**
+ * This slot is called when an item of the browser's list view has been closed.
+ *
+ * @param item The list view item that has been closed.
+ */
+ void slotItemCollapsed( QListViewItem *item );
+
+ /**
+ * This slot is invoked when the user executed an item. It is used to mount
+ * shares.
+ *
+ * @param item The list view item that has been executed.
+ */
+ void slotItemExecuted( QListViewItem *item );
+
+ /**
+ * This slot is called when the user moved the mouse over an @p item in the
+ * network browser's list view and a tool tip is about to be shown. It will
+ * initiate any actions that have to be taken by the scanner to complete
+ * the information on the network items shown in the browser.
+ *
+ * @param item The item for which the additional info should
+ * be retrieved
+ */
+ void slotAboutToShowToolTip( Smb4KNetworkBrowserItem *item );
+
+ /**
+ * This slot receives the workgroups/domains found by the scanner. It takes
+ * a list of workgroup items @p list and inserts the respective workgroups
+ * into the browser window. Obsolete items will be deleted from the network
+ * browser.
+ *
+ * @param list A list of Smb4KWorkgroupItem objects
+ */
+ void slotWorkgroups( const QValueList<Smb4KWorkgroupItem *> &list );
+
+ /**
+ * This slot receives the list of workgroup/domain members that were found
+ * by the scanner. It takes this @p list and inserts it into the list view.
+ * The parent of the items is the workgroup/domain item with the name
+ * @p workgroup. Obsolete items will be deleted from the network browser.
+ *
+ * @param workgroup The workgroup where the hosts belong
+ *
+ * @param list A list of Smb4KHostItem objects
+ */
+ void slotWorkgroupMembers( const QString &workgroup, const QValueList<Smb4KHostItem *> &list );
+
+ /**
+ * This slot receives the list of shared resources a host provides. It takes
+ * this @p list and inserts its items as children of @p host into the list
+ * view. Obsolete items will be deleted from the network browser.
+ *
+ * @param host The host where the shares belong
+ *
+ * @param list The list of shares that belong to @p host
+ */
+ void slotShares( const QString &host, const QValueList<Smb4KShareItem *> &list );
+
+ /**
+ * This slot takes a Smb4KHostItem object @p item, reads the IP address entry
+ * from it and updates the list view item representing the host with it.
+ *
+ * @param item A Smb4KHostItem with an updated IP address.
+ */
+ void slotAddIPAddress( Smb4KHostItem *item );
+
+ /**
+ * This slot adds additional information to a browser item. It takes an
+ * Smb4KHostItem @p item, searches the assossiated browser item and updates its
+ * contents.
+ *
+ * @param item A Smb4KHostItem with updated contents.
+ */
+ void slotAddInformation( Smb4KHostItem *item );
+
+ /**
+ * This slots is connected to the Smb4KScanner::hostAdded() signal and inserts
+ * a single host in the list view. If the host is already present, nothing is
+ * done.
+ *
+ * @param item A Smb4KHostItem that is to be added to the
+ * list view.
+ */
+ void slotInsertHost( Smb4KHostItem *item );
+
+ /**
+ * Rescan the network. This slot is connected to the 'Rescan' action.
+ */
+ void slotRescan();
+
+ /**
+ * Abort a network scan. This slot is connected to the 'Abort' action.
+ */
+ void slotAbort();
+
+ /**
+ * Manually mount a share. This slot is connected to the 'Mount Manually'
+ * action and opens a mount dialog.
+ */
+ void slotMountManually();
+
+ /**
+ * Provide authentication for the current network object. This slot is
+ * connected to the 'Authentication' action.
+ */
+ void slotAuthentication();
+
+ /**
+ * Provide custom options for a server or share. This slot is connected
+ * to the 'Custom Options' action.
+ */
+ void slotCustomOptions();
+
+ /**
+ * Bookmark a remote share. This slot is connected to the 'Add Bookmark'
+ * action.
+ */
+ void slotBookmark();
+
+ /**
+ * Preview a share. This slot is connected to the 'Preview' action.
+ */
+ void slotPreview();
+
+ /**
+ * Print a document on a remote printer. This slot is connected to the
+ * 'Print File' action.
+ */
+ void slotPrint();
+
+ /**
+ * Mount a remote share. This slot is connected to the 'Mount' action.
+ */
+ void slotMount();
+
+ /**
+ * Unmount a share. This slot is only relevant in the Konqueror plugin
+ * mode.
+ */
+ void slotUnmount();
+
+ /**
+ * This slot is invoked by the Smb4KMounter::updated() signal and changes
+ * the text and icon of all shares that are already mounted.
+ */
+ void slotMarkMountedShares();
+
+ /**
+ * This slot is connected to the Smb4KCore::runStateChanged() signal and
+ * is used to enable/disable actions.
+ */
+ void slotRunStateChanged();
+
+ private:
+ /**
+ * Set up the actions
+ */
+ void setupActions();
+
+ /**
+ * Load settings for the widget or the actions.
+ */
+ void loadSettings();
+
+ /**
+ * The action menu
+ */
+ KActionMenu *m_menu;
+
+ /**
+ * The network browser widget
+ */
+ Smb4KNetworkBrowser *m_widget;
+
+ /**
+ * Determines with which mode the KPart will be started
+ */
+ Mode m_mode;
+};
+
+
+class KInstance;
+class KAboutData;
+
+class Smb4KNetworkBrowserPartFactory : public KParts::Factory
+{
+ Q_OBJECT
+
+ public:
+ /**
+ * The constructor
+ */
+ Smb4KNetworkBrowserPartFactory();
+
+ /**
+ * The destructor
+ */
+ virtual ~Smb4KNetworkBrowserPartFactory();
+
+ /**
+ * Reimplemented from KParts::Factory. This function is used to
+ * create a part object.
+ *
+ * @param parentWidget The parent of the part's widget.
+ *
+ * @param widgetName The name of the part's widget.
+ *
+ * @param parent The parent of the part.
+ *
+ * @param name The name of the part.
+ *
+ * @param classname The class name of the part. This should be "KParts::Part".
+ *
+ * @param args A list of additional arguments. They have to be provided as
+ * name="value" pairs. At the moment this function understands
+ * the following pairs:
+ * konqplugin="true"|"false".
+ */
+ virtual KParts::Part *createPartObject( QWidget *parentWidget, const char *widgetName,
+ QObject *parent, const char *name,
+ const char *classname, const QStringList &args = QStringList() );
+
+ /**
+ * The instance
+ */
+ static KInstance *instance();
+
+ private:
+ /**
+ * The factory's instance.
+ */
+ static KInstance *m_instance;
+
+ /**
+ * The factory's KAboutData object
+ */
+ static KAboutData *m_about;
+};
+
+#endif