File indexing completed on 2024-04-28 05:27:03

0001 /*  This file is part of the KDE project
0002     SPDX-FileCopyrightText: 2000-2008 David Faure <faure@kde.org>
0003     SPDX-FileCopyrightText: 2008 Urs Wolfer <uwolfer @ kde.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006 */
0007 
0008 #ifndef FILETYPESVIEW_H
0009 #define FILETYPESVIEW_H
0010 
0011 #include <QLabel>
0012 #include <QList>
0013 #include <QMap>
0014 #include <QStackedWidget>
0015 
0016 #include <KCModule>
0017 #include <KSharedConfig>
0018 
0019 #include "typeslistitem.h"
0020 
0021 class QTreeWidget;
0022 class QTreeWidgetItem;
0023 class QPushButton;
0024 class KLineEdit;
0025 class FileTypeDetails;
0026 class FileGroupDetails;
0027 
0028 class FileTypesView : public KCModule
0029 {
0030     Q_OBJECT
0031 public:
0032     explicit FileTypesView(QObject *parent, const KPluginMetaData &data);
0033     ~FileTypesView() override;
0034 
0035     void load() override;
0036     void save() override;
0037     void defaults() override;
0038 
0039 protected Q_SLOTS:
0040     void addType();
0041     void removeType();
0042     void updateDisplay(QTreeWidgetItem *);
0043     void slotDoubleClicked(QTreeWidgetItem *);
0044     void slotFilter(const QString &patternFilter);
0045     void setDirty(bool state);
0046 
0047     void slotDatabaseChanged();
0048     void slotEmbedMajor(const QString &major, bool &embed);
0049     void multiApply(int type);
0050 
0051 private:
0052     void readFileTypes();
0053     void updateRemoveButton(TypesListItem *item);
0054 
0055 private:
0056     QTreeWidget *typesLV;
0057     QPushButton *m_removeTypeB;
0058 
0059     QStackedWidget *m_widgetStack;
0060     FileTypeDetails *m_details;
0061     FileGroupDetails *m_groupDetails;
0062     QLabel *m_emptyWidget;
0063 
0064     KLineEdit *patternFilterLE;
0065     QStringList removedList;
0066     bool m_dirty;
0067     bool m_removeButtonSaysRevert;
0068     QMap<QString, TypesListItem *> m_majorMap; // groups
0069     QList<TypesListItem *> m_itemList;
0070 
0071     KSharedConfig::Ptr m_fileTypesConfig;
0072 };
0073 
0074 #endif