diff options
Diffstat (limited to 'smb4k/browser/smb4knetworkbrowser_part.h')
-rw-r--r-- | smb4k/browser/smb4knetworkbrowser_part.h | 377 |
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 |