Fix OpenCS crashing since commit 9d6145 by showing gamefiles if the content selector was created from OpenCS.

celladd
cc9cii 10 years ago
parent 5e2839977b
commit c4625b94e5

@ -24,7 +24,7 @@ CSVDoc::FileDialog::FileDialog(QWidget *parent) :
resize(400, 400);
setObjectName ("FileDialog");
mSelector = new ContentSelectorView::ContentSelector (ui.contentSelectorWidget);
mSelector = new ContentSelectorView::ContentSelector (ui.contentSelectorWidget, true);
mAdjusterWidget = new AdjusterWidget (this);
}
@ -147,7 +147,7 @@ void CSVDoc::FileDialog::slotUpdateAcceptButton(int)
void CSVDoc::FileDialog::slotUpdateAcceptButton(const QString &name, bool)
{
bool success = (mSelector->selectedFiles().size() > 0);
bool success = !mSelector->selectedFiles().empty();
bool isNew = (mAction == ContentAction_New);

@ -9,13 +9,14 @@
#include "components/esm/esmreader.hpp"
ContentSelectorModel::ContentModel::ContentModel(QObject *parent, QIcon warningIcon) :
ContentSelectorModel::ContentModel::ContentModel(QObject *parent, QIcon warningIcon, bool showGameFiles) :
QAbstractTableModel(parent),
mWarningIcon(warningIcon),
mMimeType ("application/omwcontent"),
mMimeTypes (QStringList() << mMimeType),
mColumnCount (1),
mDropActions (Qt::MoveAction)
mDropActions (Qt::MoveAction),
mShowGameFiles(showGameFiles)
{
setEncoding ("win1252");
uncheckAll();
@ -110,9 +111,14 @@ Qt::ItemFlags ContentSelectorModel::ContentModel::flags(const QModelIndex &index
if (!file)
return Qt::NoItemFlags;
//game files are not shown
//game files are not shown (unless OpenCS)
if (file->isGameFile())
return Qt::NoItemFlags;
{
if(mShowGameFiles)
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable;
else
return Qt::NoItemFlags;
}
Qt::ItemFlags returnFlags;
@ -463,7 +469,7 @@ void ContentSelectorModel::ContentModel::addFiles(const QString &path)
file->setDescription(QString::fromUtf8(fileReader.getDesc().c_str()));
// HACK
// Load order constraint of Bloodmoon.esm needing Tribunal.esm is missing
// Load order constraint of Bloodmoon.esm needing Tribunal.esm is missing
// from the file supplied by Bethesda, so we have to add it ourselves
if (file->fileName().compare("Bloodmoon.esm", Qt::CaseInsensitive) == 0)
{

@ -23,7 +23,7 @@ namespace ContentSelectorModel
{
Q_OBJECT
public:
explicit ContentModel(QObject *parent, QIcon warningIcon);
explicit ContentModel(QObject *parent, QIcon warningIcon, bool showGameFiles = false);
~ContentModel();
void setEncoding(const QString &encoding);
@ -66,6 +66,7 @@ namespace ContentSelectorModel
void addFile(EsmFile *file);
const EsmFile *item(int row) const;
EsmFile *item(int row);
bool mShowGameFiles;
void sortFiles();

@ -13,21 +13,21 @@
#include <QDir>
#include <assert.h>
ContentSelectorView::ContentSelector::ContentSelector(QWidget *parent) :
ContentSelectorView::ContentSelector::ContentSelector(QWidget *parent, bool showGameFiles) :
QObject(parent)
{
ui.setupUi(parent);
ui.addonView->setDragDropMode(QAbstractItemView::InternalMove);
buildContentModel();
buildContentModel(showGameFiles);
buildGameFileView();
buildAddonView();
}
void ContentSelectorView::ContentSelector::buildContentModel()
void ContentSelectorView::ContentSelector::buildContentModel(bool showGameFiles)
{
QIcon warningIcon(ui.addonView->style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(QSize(16, 15)));
mContentModel = new ContentSelectorModel::ContentModel(this, warningIcon);
mContentModel = new ContentSelectorModel::ContentModel(this, warningIcon, showGameFiles);
}
void ContentSelectorView::ContentSelector::buildGameFileView()

@ -23,7 +23,7 @@ namespace ContentSelectorView
public:
explicit ContentSelector(QWidget *parent = 0);
explicit ContentSelector(QWidget *parent = 0, bool showGameFiles = false);
QString currentFile() const;
@ -48,7 +48,7 @@ namespace ContentSelectorView
Ui::ContentSelector ui;
void buildContentModel();
void buildContentModel(bool showGameFiles);
void buildGameFileView();
void buildAddonView();
void setGameFileSelected(int index, bool selected);

Loading…
Cancel
Save