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.
openmw/components/contentselector/view/contentselector.hpp

109 lines
3.0 KiB
C++

#ifndef CONTENTSELECTOR_HPP
#define CONTENTSELECTOR_HPP
12 years ago
#include <QDialog>
#include "ui_datafilespage.h"
#include "../model/contentmodel.hpp"
class QSortFilterProxyModel;
namespace CSVDoc
{
class FileWidget;
class AdjusterWidget;
}
namespace ContentSelectorView
{
enum SelectorFlags
{
Flag_Content = 0x01, // gamefile combobox & addon list view
Flag_NewAddon = 0x02, // enable project button box (Create/Cancel) and file/adjuster widgets
Flag_LoadAddon = 0x04, // enable project button box (Open/Cancel)
Flag_Profile = 0x08 // enable profile combo box
};
class ContentSelector : public QWidget
{
Q_OBJECT
unsigned char mFlags;
bool mIgnoreProfileSignal;
static ContentSelector *mInstance;
static QStringList mFilePaths;
CSVDoc::FileWidget *mFileWidget;
CSVDoc::AdjusterWidget *mAdjusterWidget;
protected:
ContentSelectorModel::ContentModel *mContentModel;
QSortFilterProxyModel *mGameFileProxyModel;
QSortFilterProxyModel *mAddonProxyModel;
public:
explicit ContentSelector(QWidget *parent = 0, unsigned char flags = Flag_Content);
static void configure(QWidget *subject, unsigned char flags = Flag_Content);
static ContentSelector &instance();
static void addFiles(const QString &path);
void clearCheckStates();
void setCheckStates (const QStringList &list);
ContentSelectorModel::ContentFileList *CheckedItems();
QString projectFilename() const;
ContentSelectorModel::ContentFileList selectedFiles() const;
QAbstractItemModel *profilesModel() const;
void setGameFile (const QString &filename = "");
void addProfile (const QString &item, bool setAsCurrent = false);
void setProfile (int index);
int getProfileIndex (const QString &item) const;
QString getProfileText() const;
private:
Ui::DataFilesPage ui;
void buildContentModel();
void buildGameFileView();
void buildAddonView();
void buildProfilesView();
void buildNewAddonView();
void buildLoadAddonView();
bool isFlagged(SelectorFlags flag) const;
signals:
void accepted();
void rejected();
void signalCreateButtonClicked();
void signalProfileRenamed(QString,QString);
void signalProfileChangedByUser(QString,QString);
void signalProfileDeleted(QString);
void signalAddNewProfile(QString);
private slots:
void slotProfileTextChanged (const QString &text);
void slotCurrentProfileIndexChanged(int index);
void slotCurrentGameFileIndexChanged(int index);
void slotAddonTableItemClicked(const QModelIndex &index);
void slotUpdateCreateButton (bool);
// Action slots
void on_newProfileAction_triggered();
void on_deleteProfileAction_triggered();
};
}
#endif // CONTENTSELECTOR_HPP