-
Notifications
You must be signed in to change notification settings - Fork 0
/
armynamelist.h
105 lines (93 loc) · 3.65 KB
/
armynamelist.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
#ifndef ARMYNAMELIST_H
#define ARMYNAMELIST_H
#include "loaddatafiles.h"
#include <QComboBox>
#include <QListView>
#include <QStringListModel>
#include <QMainWindow>
#include <QTableView>
#include <QAbstractTableModel>
#include <vector>
#include <QDebug>
// Considers that each army category has only a sequential name and no random names
class ArmyModel : public QAbstractTableModel {
QList<QString> category, name;
public:
ArmyModel(QObject * parent = {}) : QAbstractTableModel{parent} {}
int rowCount(const QModelIndex &) const override { return category.count(); }
int columnCount(const QModelIndex &) const override { return 2; }
QVariant data(const QModelIndex &index, int role) const override
{
if (!index.isValid() || role != Qt::DisplayRole) {
return QVariant();
}
if (index.column() == 0) {
return category[index.row()];
} else if (index.column() == 1) {
return name[index.row()];
}
return QVariant();
}
QVariant headerData(int section, Qt::Orientation orientation, int role) const override {
if (orientation != Qt::Horizontal || role != Qt::DisplayRole) return {};
switch (section) {
case 0: return "Category";
case 1: return "Name";
default: return {};
}
}
void populateData(const QList<QString> &categoryList,const QList<QString> &nameList)
{
category.clear();
category = categoryList;
name.clear();
name = nameList;
}
};
class ArmyNameSet
{
public:
QString armyCategoryName;
std::vector<QStringList> nameList;
std::vector<QString> nameTypeCategories;
QStringList* operator[](const QString category)
{
for(int idx = 0; idx<nameTypeCategories.size() ; idx++)
if(category == nameTypeCategories[idx])
return &nameList[idx];
return nullptr;
}
};
class ArmyNameList : public QMainWindow
{
Q_OBJECT
public:
explicit ArmyNameList(QWidget *parent = nullptr);
void Update(QListView* listView);
void Clear(QListView* listView, QComboBox *box, QComboBox* box2);
void LoadNameList(TreeItem* treeArmyName);
void LoadCategories(QComboBox* box);
void LoadCategoryNames(QComboBox* box);
void LoadNames(int catIndex, int typeIndex, QListView* listView);
void AddCategory(QString name, TreeItem* treeArmyName);
void AddType(QString name, int catIndex, TreeItem* treeArmyName);
void EditNameList(int catIndex, int typeIndex, std::vector<QString> *names, TreeItem *treeArmyName);
void EditName(int catIndex, int typeIndex, int nameIndex, QString name, TreeItem *treeArmyName);
void EditCategory(QString name, int catIndex, TreeItem* treeArmyName);
void EditType(QString name, int catIndex, int typeIndex, TreeItem* treeArmyName);
void RemoveCategory(int catIndex, TreeItem* treeArmyName);
void RemoveType(int catIndex, int typeIndex, TreeItem* treeArmyName);
private:
ArmyNameSet GenerateArmyNameSet(TreeItem* treeNameSet);
signals:
private:
int selectedCategory = 0;
ArmyModel* armyListModel;
QStringListModel* armyList;
std::vector<ArmyNameSet> armyNameSetList;
std::vector<QString> categories = {"machine_defense", "machine_assault_1", "machine_assault_2", "machine_assault_3", "defense_army",
"assault_army", "slave_army", "clone_army", "undead_army", "robotic_army", "robotic_defense_army",
"psionic_army", "xenomorph_army", "gene_warrior_army", "occupation_army", "robotic_occupation_army",
"primitive_army", "industrial_army", "postatomic_army"};
};
#endif // ARMYNAMELIST_H