mirror of https://github.com/OpenMW/openmw.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.5 KiB
C++
94 lines
2.5 KiB
C++
#ifndef CONTENTSELECTOR_HPP
|
|
#define CONTENTSELECTOR_HPP
|
|
|
|
#include <memory>
|
|
|
|
#include <QComboBox>
|
|
#include <QDialog>
|
|
#include <QMenu>
|
|
#include <QToolButton>
|
|
|
|
#include <components/contentselector/model/contentmodel.hpp>
|
|
|
|
class QSortFilterProxyModel;
|
|
|
|
namespace Ui
|
|
{
|
|
class ContentSelector;
|
|
}
|
|
|
|
namespace ContentSelectorView
|
|
{
|
|
class ContentSelector : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
QMenu* mContextMenu;
|
|
|
|
protected:
|
|
ContentSelectorModel::ContentModel* mContentModel;
|
|
QSortFilterProxyModel* mAddonProxyModel;
|
|
|
|
public:
|
|
explicit ContentSelector(QWidget* parent = nullptr, bool showOMWScripts = false);
|
|
|
|
~ContentSelector() override;
|
|
|
|
QString currentFile() const;
|
|
|
|
void addFiles(const QString& path, bool newfiles = false);
|
|
void sortFiles();
|
|
bool containsDataFiles(const QString& path);
|
|
void clearFiles();
|
|
void setNonUserContent(const QStringList& fileList);
|
|
void setProfileContent(const QStringList& fileList);
|
|
|
|
void clearCheckStates();
|
|
void setEncoding(const QString& encoding);
|
|
void setContentList(const QStringList& list);
|
|
|
|
ContentSelectorModel::ContentFileList selectedFiles() const;
|
|
|
|
void setGameFile(const QString& filename = QString(""));
|
|
|
|
bool isGamefileSelected() const;
|
|
|
|
QWidget* uiWidget() const;
|
|
|
|
QComboBox* languageBox() const;
|
|
|
|
QToolButton* refreshButton() const;
|
|
|
|
QLineEdit* searchFilter() const;
|
|
|
|
private:
|
|
std::unique_ptr<Ui::ContentSelector> ui;
|
|
|
|
void buildContentModel(bool showOMWScripts);
|
|
void buildGameFileView();
|
|
void buildAddonView();
|
|
void buildContextMenu();
|
|
void setGameFileSelected(int index, bool selected);
|
|
void setCheckStateForMultiSelectedItems(bool checked);
|
|
|
|
signals:
|
|
void signalCurrentGamefileIndexChanged(int);
|
|
|
|
void signalAddonDataChanged(const QModelIndex& topleft, const QModelIndex& bottomright);
|
|
void signalSelectedFilesChanged(QStringList selectedFiles);
|
|
|
|
private slots:
|
|
|
|
void slotCurrentGameFileIndexChanged(int index);
|
|
void slotAddonTableItemActivated(const QModelIndex& index);
|
|
void slotShowContextMenu(const QPoint& pos);
|
|
void slotCheckMultiSelectedItems();
|
|
void slotUncheckMultiSelectedItems();
|
|
void slotCopySelectedItemsPaths();
|
|
void slotSearchFilterTextChanged(const QString& newText);
|
|
void slotRowsMoved();
|
|
};
|
|
}
|
|
|
|
#endif // CONTENTSELECTOR_HPP
|