summaryrefslogtreecommitdiffstats
path: root/logic/lists/ScreenshotList.cpp
blob: 0565d0a46245fef6b67934054dc5edaffa590dd1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "ScreenshotList.h"
#include <QDir>
#include <QIcon>

ScreenshotList::ScreenshotList(BaseInstance *instance, QObject *parent)
	: QAbstractListModel(parent), m_instance(instance)
{
}

int ScreenshotList::rowCount(const QModelIndex &) const
{
	return m_screenshots.size();
}

QVariant ScreenshotList::data(const QModelIndex &index, int role) const
{
	if (!index.isValid())
		return QVariant();

	switch (role)
	{
	case Qt::DecorationRole:
		return QIcon(m_screenshots.at(index.row())->file);
	case Qt::DisplayRole:
		return m_screenshots.at(index.row())->timestamp;
	case Qt::ToolTipRole:
		return m_screenshots.at(index.row())->timestamp;
	case Qt::TextAlignmentRole:
		return (int)(Qt::AlignHCenter | Qt::AlignVCenter);
	default:
		return QVariant();
	}
}

QVariant ScreenshotList::headerData(int section, Qt::Orientation orientation, int role) const
{
	return QVariant();
}

Qt::ItemFlags ScreenshotList::flags(const QModelIndex &index) const
{
	return Qt::ItemIsSelectable | Qt::ItemIsEnabled;
}

Task *ScreenshotList::load()
{
	return new ScreenshotLoadTask(this);
}

ScreenshotLoadTask::ScreenshotLoadTask(ScreenshotList *list) : m_list(list)
{
}

ScreenshotLoadTask::~ScreenshotLoadTask()
{
}

void ScreenshotLoadTask::executeTask()
{
	auto dir = QDir(m_list->instance()->minecraftRoot());
	if (!dir.cd("screenshots"))
	{
		emitFailed("Selected instance does not have any screenshots!");
		return;
	}
	dir.setNameFilters(QStringList() << "*.png");
	this->m_results = QList<ScreenShot *>();
	for (auto file : dir.entryList())
	{
		ScreenShot *shot = new ScreenShot();
		shot->timestamp = file.left(file.length() - 4);
		shot->file = dir.absoluteFilePath(file);
		m_results.append(shot);
	}
	m_list->loadShots(m_results);
	emitSucceeded();
}