File indexing completed on 2024-05-19 05:49:14

0001 /*
0002     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QButtonGroup>
0010 #include <QWidget>
0011 
0012 #include <KMessageWidget>
0013 
0014 #include "fileListHelper.h"
0015 
0016 #include "ui_multipleFileListBase.h"
0017 
0018 class MultipleFileList : public QWidget, public Ui::MultipleFileListBase
0019 {
0020     Q_OBJECT
0021 
0022 public:
0023     MultipleFileList(QWidget *parent, const QString &descriptionText);
0024     ~MultipleFileList() override;
0025 
0026     bool isOneOfCategoryEmpty() const;
0027 
0028     QStringList paths(int categoryIndex);
0029 
0030     void addPaths(int categoryIndex, const QStringList &paths);
0031 
0032     int addCategory(const QString &itemName, const QString &buttonName);
0033 
0034 public Q_SLOTS:
0035     void removeAllItems();
0036 
0037 Q_SIGNALS:
0038     void fileListChanged();
0039 
0040 private Q_SLOTS:
0041 
0042     void updateButtons();
0043 
0044     void removeSelectedItem();
0045     void moveUpItem();
0046     void moveDownItem();
0047 
0048 protected Q_SLOTS:
0049     void addItem(QAbstractButton *button);
0050 
0051     void modifyItem();
0052     void modifyItem(QTreeWidgetItem *item);
0053 
0054 protected:
0055     void addItemInternal(QTreeWidgetItem *categoryItem, const QString &path);
0056     void moveItem(int direction);
0057     void unselectAllItems();
0058 
0059     void updateEmptyItems();
0060     void removeEmptyItems();
0061 
0062     void addEmptyItem(QTreeWidgetItem *item);
0063     bool isEmptyItem(QTreeWidgetItem *item) const;
0064 
0065     bool isFileListsEmpty() const;
0066     int categoryCount(int index) const;
0067 
0068     QTreeWidgetItem *findCategoryOfChild(QTreeWidgetItem *childItem);
0069 
0070     FileListHelper mFileListHelper;
0071 
0072     QButtonGroup mAddButtons;
0073 
0074 private:
0075     KMessageWidget *mWarningBox = nullptr;
0076     bool mMissingFiles = false;
0077 };