-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathabstractmodels.h
141 lines (116 loc) · 3.68 KB
/
abstractmodels.h
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/* This file (abstractmodels.h) is part of Rocket Launcher 2.0 - A cross platform
* front end for all DOOM engine source ports.
*
* Copyright (C) Hypnotoad
*
* Rocket Launcher is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Rocket Launcher is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Rocket Launcher. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ABSTRACTMODELS_H
#define ABSTRACTMODELS_H
#include <QAbstractListModel>
#include <QStringList>
#include <QFileInfoList>
#include <QList>
#include <QPixmap>
#include <QDir>
#include <QSettings>
#include "configs.h"
enum EngineType
{
Engine_Default,
Engine_ZDoom,
Engine_Oldschool,
Engine_DosBox
};
enum EnginePic
{
Pic_Default,
Pic_Zandronum,
Pic_Zdoom,
Pic_GZdoom,
Pic_Chocolate,
Pic_Eternity,
Pic_PrBoom,
Pic_Odamex,
Pic_ZDaemon,
Pic_Legacy,
Pic_Retro,
Pic_Vavoom,
Pic_Doomsday,
Pic_Edge
};
struct EngineInfo
{
QString path;
QString name;
EngineType type;
EnginePic EngineImage;
};
inline bool operator==(const EngineInfo &e1, const EngineInfo &e2)
{
return e1.name == e2.name;
}
//==================ENGINES===========================
class EngineListModel : public QAbstractListModel {
Q_OBJECT
signals:
void updateCombo(const QString text);
void updateComboIndex(int index);
public:
explicit EngineListModel(QObject* parent = 0);
int rowCount(const QModelIndex &parent = QModelIndex()) const;
QVariant data(const QModelIndex &index, int role) const;
void setCurrentEngine(const int index);
QString addEngine(QFileInfo file);
EngineInfo *getCurrentEngine();
QString updateEngine(QString engine, QString path, EngineType type, EnginePic pic, bool known);
bool EngineSet;
void LoadEngineData();
EngineType getEngineType();
QString DoomExePath;
void removeRow(int row, const QModelIndex &parent = QModelIndex());
QSettings EngineSettings;
void SaveEngineData();
EngineType getEngineTypeFromIndex(const QModelIndex &index);
EnginePic getEnginePicFromIndex(const QModelIndex &index);
void addDefaultEngine(QString path);
void setNameFromIndex(QString name, const QModelIndex &index);
void setPathFromIndex(QString path, const QModelIndex &index);
void setTypeFromIndex(EngineType type, const QModelIndex &index);
void setPicFromIndex(EnginePic pic, const QModelIndex &index);
void setDoomExeSave();
private:
QList<EngineInfo> Engines_;
EngineInfo *selectedEngine_;
int SearchEngines(const QString name);
QDir m_mainAppPath;
void setupDosbox(QString path);
void setDoomExe();
};
//================Configs=================
class ConfigListModel : public QAbstractListModel {
Q_OBJECT
public:
explicit ConfigListModel(QObject* parent = 0);
int rowCount(const QModelIndex &parent = QModelIndex()) const;
QVariant data(const QModelIndex &index, int role) const;
void addRocket(const RocketFile &file);
void removeRow(int row, const QModelIndex &parent = QModelIndex());
RocketFile *getSelectedRocket(const QModelIndex &index);
RocketFile failRocket;
RocketFile *getRocketFromRow(int row);
private:
QList<RocketFile> rockets;
};
#endif // ABSTRACTMODELS_H