File indexing completed on 2024-09-22 05:15:45

0001 /*
0002     This file is part of the Okteta Kasten module, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2006-2009 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #ifndef KASTEN_SEARCHCONTROLLER_HPP
0010 #define KASTEN_SEARCHCONTROLLER_HPP
0011 
0012 // controller
0013 #include "searchuserqueryable.hpp"
0014 // libfinddialog
0015 #include "finddirection.hpp"
0016 // Kasten gui
0017 #include <Kasten/AbstractXmlGuiController>
0018 
0019 class KXMLGUIClient;
0020 class QAction;
0021 class QWidget;
0022 
0023 namespace Kasten {
0024 
0025 class SearchDialog;
0026 class SearchTool;
0027 
0028 class SearchController : public AbstractXmlGuiController
0029                        , public If::SearchUserQueryable
0030 {
0031     Q_OBJECT
0032 
0033 public:
0034     SearchController(KXMLGUIClient* guiClient, QWidget* parentWidget);
0035     ~SearchController() override;
0036 
0037 public: // AbstractXmlGuiController API
0038     void setTargetModel(AbstractModel* model) override;
0039 
0040 public: // SearchUserQueryable API
0041     bool queryContinue(FindDirection direction) const override;
0042 
0043 private:
0044     void showDialog(FindDirection Direction);
0045 
0046 private Q_SLOTS: // action slots
0047     void find();
0048     void findNext();
0049     void findPrevious();
0050 
0051     void onDataNotFound();
0052 
0053 private:
0054     QWidget* mParentWidget;
0055 
0056     QAction* mFindAction;
0057     QAction* mFindNextAction;
0058     QAction* mFindPrevAction;
0059 
0060     SearchDialog* mSearchDialog = nullptr;
0061     SearchTool* mTool;
0062 };
0063 
0064 }
0065 
0066 #endif