File indexing completed on 2024-10-06 10:25:52

0001 /*
0002     smb4knetworkbrowser  -  The network browser widget of Smb4K.
0003 
0004     SPDX-FileCopyrightText: 2007-2023 Alexander Reinholdt <alexander.reinholdt@kdemail.net>
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef SMB4KNETWORKBROWSER_H
0009 #define SMB4KNETWORKBROWSER_H
0010 
0011 // Qt includes
0012 #include <QTreeWidget>
0013 
0014 // forward declarations
0015 class Smb4KNetworkBrowserItem;
0016 class Smb4KToolTip;
0017 
0018 /**
0019  * This is the network neighborhood browser widget.
0020  *
0021  * @author Alexander Reinholdt <alexander.reinholdt@kdemail.net>
0022  */
0023 
0024 class Smb4KNetworkBrowser : public QTreeWidget
0025 {
0026     Q_OBJECT
0027 
0028 public:
0029     /**
0030      * The constructor
0031      *
0032      * @param parent        The parent widget
0033      */
0034     explicit Smb4KNetworkBrowser(QWidget *parent = nullptr);
0035 
0036     /**
0037      * The destructor
0038      */
0039     ~Smb4KNetworkBrowser();
0040 
0041     /**
0042      * Enumeration for the columns in the list view.
0043      */
0044     enum Columns { Network = 0, Type = 1, IP = 2, Comment = 3 };
0045 
0046     /**
0047      * The tooltip
0048      */
0049     Smb4KToolTip *toolTip();
0050 
0051 protected:
0052     /**
0053      * Reimplemented from QWidget.
0054      */
0055     bool event(QEvent *e) override;
0056 
0057     /**
0058      * Reimplemented from QAbstractItemView. This function handles
0059      * mouse press events.
0060      *
0061      * @param e             The mouse event object
0062      */
0063     void mousePressEvent(QMouseEvent *e) override;
0064 
0065     /**
0066      * Reimplemented from QAbstractItemView. This function handles
0067      * mouse move events.
0068      *
0069      * @param e             The mouse event object
0070      */
0071     void mouseMoveEvent(QMouseEvent *e) override;
0072 
0073 protected Q_SLOTS:
0074     /**
0075      * This slot is called when the user activated an item. It is used
0076      * to open the item if it is expandable.
0077      * @param item          The item that has been activated.
0078      * @param column        The column where the item was activated.
0079      */
0080     void slotItemActivated(QTreeWidgetItem *item, int column);
0081 
0082     /**
0083      * Take care that only shares are selected when the user marks multiple
0084      * shares.
0085      */
0086     void slotItemSelectionChanged();
0087 
0088 private:
0089     Smb4KToolTip *m_toolTip;
0090 };
0091 
0092 #endif