File indexing completed on 2024-04-14 04:56:33

0001 /*
0002     This class provides the network search toolbar.
0003 
0004     SPDX-FileCopyrightText: 2018-2023 Alexander Reinholdt <alexander.reinholdt@kdemail.net>
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef SMB4KNETWORKSEARCHTOOLBAR_H
0009 #define SMB4KNETWORKSEARCHTOOLBAR_H
0010 
0011 // application specific includes
0012 #include "core/smb4kglobal.h"
0013 
0014 // Qt includes
0015 #include <QList>
0016 #include <QListIterator>
0017 #include <QToolBar>
0018 
0019 // KDE includes
0020 #include <KComboBox>
0021 #include <KDualAction>
0022 
0023 class Smb4KNetworkSearchToolBar : public QToolBar
0024 {
0025     Q_OBJECT
0026 
0027 public:
0028     /**
0029      * Constructor
0030      */
0031     Smb4KNetworkSearchToolBar(QWidget *parent = nullptr);
0032 
0033     /**
0034      * Destructor
0035      */
0036     ~Smb4KNetworkSearchToolBar();
0037 
0038     /**
0039      * Sets the focus to the search combo box
0040      */
0041     void prepareInput();
0042 
0043     /**
0044      * Set the active state
0045      *
0046      * @param active          The state
0047      */
0048     void setActiveState(bool active);
0049 
0050     /**
0051      * Set the search result
0052      *
0053      * @param list            The list of search results
0054      */
0055     void setSearchResults(const QList<SharePtr> &list);
0056 
0057     /**
0058      * Clear the search
0059      */
0060     void clearSearch();
0061 
0062     /**
0063      * Set the completion items. This function should be invoked before the
0064      * search toolbar is shown.
0065      *
0066      * @param items         The list of completion strings
0067      */
0068     void setCompletionItems(const QStringList &items);
0069 
0070     /**
0071      * Get the completion strings.
0072      *
0073      * @returns the completion strings
0074      */
0075     QStringList completionItems() const;
0076 
0077 Q_SIGNALS:
0078     /**
0079      * Emitted when the search toolbar is to be closed (should be hidden)
0080      */
0081     void closeSearchBar();
0082 
0083     /**
0084      * Emitted when a search should be done
0085      */
0086     void search(const QString &item);
0087 
0088     /**
0089      * Emitted when a search should be stopped
0090      */
0091     void abort();
0092 
0093     /**
0094      * Emitted when either the up or down action was clicked
0095      */
0096     void jumpToResult(const QString &url);
0097 
0098     /**
0099      * Emitted when the search is cleared
0100      */
0101     void clearSearchResults();
0102 
0103 protected Q_SLOTS:
0104     /**
0105      * Called when the return key was pressed
0106      */
0107     void slotReturnKeyPressed(const QString &text);
0108 
0109     /**
0110      * Called when the search dual action is toggled
0111      */
0112     void slotSearchActionTriggered();
0113 
0114     /**
0115      * Called when the close button was pressed
0116      */
0117     void slotCloseButtonPressed();
0118 
0119     /**
0120      * Called when the down action was triggered
0121      */
0122     void slotDownActionTriggered();
0123 
0124     /**
0125      * Called when the up action was triggered
0126      */
0127     void slotUpActionTriggered();
0128 
0129     /**
0130      * Called when the search is cleared
0131      */
0132     void slotClearSearch();
0133 
0134 private:
0135     QStringList m_searchResults;
0136     QStringListIterator m_iterator;
0137     KComboBox *m_searchComboBox;
0138     KDualAction *m_searchAction;
0139     QAction *m_downAction;
0140     QAction *m_upAction;
0141     QAction *m_clearAction;
0142 };
0143 
0144 #endif