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 }