File indexing completed on 2024-10-06 04:35:41

0001 /*
0002     smb4ktooltip  -  Provides tooltips for Smb4K
0003 
0004     SPDX-FileCopyrightText: 2020-2023 Alexander Reinholdt <alexander.reinholdt@kdemail.net>
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef SMB4KTOOLTIP_H
0009 #define SMB4KTOOLTIP_H
0010 
0011 // application specific includes
0012 #include <smb4kglobal.h>
0013 
0014 // Qt includes
0015 #include <QHBoxLayout>
0016 #include <QPoint>
0017 #include <QWindow>
0018 
0019 // KDE includes
0020 #include <KToolTipWidget>
0021 
0022 // Forward declaration
0023 class Smb4KBasicNetworkItem;
0024 
0025 class Smb4KToolTip : public KToolTipWidget
0026 {
0027     Q_OBJECT
0028 
0029 public:
0030     /**
0031      * The constructor
0032      */
0033     Smb4KToolTip(QWidget *parent = nullptr);
0034 
0035     /**
0036      * The destructor
0037      */
0038     ~Smb4KToolTip();
0039 
0040     /**
0041      * This enumeration determines the kind of tooltip
0042      * this is to be shown.
0043      *
0044      * @enum NetworkItem  Tooltip reflecting a remote network item
0045      * @enum MountedShare Tooltip reflecting a mounted share
0046      */
0047     enum Type { NetworkItem, MountedShare, Unknown };
0048 
0049     /**
0050      * Set up the tooltip.
0051      */
0052     void setupToolTip(Type type, NetworkItemPtr item);
0053 
0054     /**
0055      * Show the tooltip
0056      */
0057     void show(const QPoint &pos, QWindow *transientParent);
0058 
0059     /**
0060      * Update the tooltip
0061      */
0062     void update();
0063 
0064 private:
0065     void setupNetworkItemContents();
0066     void setupMountedShareContents();
0067     NetworkItemPtr m_item;
0068     Type m_type;
0069     QWidget *m_contentsWidget;
0070     QHBoxLayout *m_mainLayout;
0071 };
0072 
0073 #endif