File indexing completed on 2024-06-23 05:14:24

0001 /* -*- mode: c++; c-basic-offset:4 -*-
0002     view/tabwidget.h
0003 
0004     This file is part of Kleopatra, the KDE keymanager
0005     SPDX-FileCopyrightText: 2007 Klarälvdalens Datakonsult AB
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #pragma once
0011 
0012 #include <QWidget>
0013 
0014 #include <memory>
0015 #include <vector>
0016 
0017 #include <utils/pimpl_ptr.h>
0018 
0019 class QAbstractItemView;
0020 
0021 class KConfigGroup;
0022 class KActionCollection;
0023 class KConfig;
0024 
0025 namespace Kleo
0026 {
0027 
0028 class AbstractKeyListModel;
0029 class AbstractKeyListSortFilterProxyModel;
0030 class KeyFilter;
0031 class KeyListModelInterface;
0032 class SearchBar;
0033 
0034 class TabWidget : public QWidget
0035 {
0036     Q_OBJECT
0037 public:
0038     explicit TabWidget(QWidget *parent = nullptr, Qt::WindowFlags f = {});
0039     ~TabWidget() override;
0040 
0041     void setFlatModel(AbstractKeyListModel *model);
0042     AbstractKeyListModel *flatModel() const;
0043     void setHierarchicalModel(AbstractKeyListModel *model);
0044     AbstractKeyListModel *hierarchicalModel() const;
0045 
0046     QAbstractItemView *addView(const QString &title = QString(), const QString &keyFilterID = QString(), const QString &searchString = QString());
0047     QAbstractItemView *addView(const KConfigGroup &group);
0048     QAbstractItemView *
0049     addTemporaryView(const QString &title = QString(), AbstractKeyListSortFilterProxyModel *proxy = nullptr, const QString &tabToolTip = QString());
0050 
0051     void loadViews(const KConfig *cfg);
0052     void saveViews(KConfig *cfg) const;
0053 
0054     std::vector<QAbstractItemView *> views() const;
0055     QAbstractItemView *currentView() const;
0056     KeyListModelInterface *currentModel() const;
0057 
0058     unsigned int count() const;
0059 
0060     void createActions(KActionCollection *collection);
0061     void connectSearchBar(SearchBar *sb);
0062 
0063     void setMultiSelection(bool on);
0064 
0065     QString stringFilter() const;
0066 
0067 public Q_SLOTS:
0068     void setKeyFilter(const std::shared_ptr<Kleo::KeyFilter> &filter);
0069     void setStringFilter(const QString &filter);
0070 
0071 Q_SIGNALS:
0072     void viewAdded(QAbstractItemView *view);
0073     void viewAboutToBeRemoved(QAbstractItemView *view);
0074 
0075     void currentViewChanged(QAbstractItemView *view);
0076     void stringFilterChanged(const QString &filter);
0077     void keyFilterChanged(const std::shared_ptr<Kleo::KeyFilter> &filter);
0078 
0079     void enableChangeStringFilter(bool enable);
0080     void enableChangeKeyFilter(bool enable);
0081 
0082 private:
0083     class Private;
0084     kdtools::pimpl_ptr<Private> d;
0085 };
0086 
0087 }