aboutsummaryrefslogtreecommitdiff
path: root/libs/uibase/src/modrepositoryfileinfo.cpp
blob: 2b0f7290a5db2223912eb33c7b054acde15d58bc (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
78
79
80
81
#include <uibase/modrepositoryfileinfo.h>
#include <uibase/json.h>

MOBase::ModRepositoryFileInfo::ModRepositoryFileInfo(
    const ModRepositoryFileInfo& reference)
    : QObject(reference.parent()), name(reference.name), uri(reference.uri),
      description(reference.description), version(reference.version),
      categoryID(reference.categoryID), modName(reference.modName),
      gameName(reference.gameName), modID(reference.modID), fileID(reference.fileID),
      fileSize(reference.fileSize), fileCategory(reference.fileCategory),
      repository(reference.repository), userData(reference.userData),
      author(reference.author), uploader(reference.uploader),
      uploaderUrl(reference.uploaderUrl)
{}

MOBase::ModRepositoryFileInfo::ModRepositoryFileInfo(QString gameName, int modID,
                                                     int fileID)
    : name(), uri(), description(), version(), categoryID(0), modName(),
      gameName(gameName), modID(modID), fileID(fileID), fileSize(0),
      fileCategory(TYPE_UNKNOWN), repository(), userData(), author(), uploader(),
      uploaderUrl()

{}

MOBase::ModRepositoryFileInfo
MOBase::ModRepositoryFileInfo::createFromJson(const QString& data)
{
  QVariantList result = QtJson::parse(data).toList();

  while (result.length() < 18) {
    result.append(QVariant());
  }

  ModRepositoryFileInfo newInfo;

  newInfo.gameName = result.at(0).toString();
  newInfo.fileID   = result.at(1).toInt();
  newInfo.name     = result.at(2).toString();
  newInfo.uri      = result.at(3).toString();
  newInfo.version.parse(result.at(4).toString());
  newInfo.description = result.at(5).toString();
  newInfo.categoryID  = result.at(6).toInt();
  newInfo.fileSize    = result.at(7).toUInt();
  newInfo.modID       = result.at(8).toInt();
  newInfo.modName     = result.at(9).toString();
  newInfo.newestVersion.parse(result.at(10).toString());
  newInfo.fileName     = result.at(11).toString();
  newInfo.fileCategory = result.at(12).toInt();
  newInfo.repository   = result.at(13).toString();
  newInfo.userData     = result.at(14).toMap();
  newInfo.author       = result.at(15).toString();
  newInfo.uploader     = result.at(16).toString();
  newInfo.uploaderUrl  = result.at(17).toString();

  return newInfo;
}

QString MOBase::ModRepositoryFileInfo::toString() const
{
  return QString("[ "
                 "\"%1\",%2,\"%3\",\"%4\",\"%5\",\"%6\",%7,%8,%9,\"%10\",\"%11\",\"%"
                 "12\",%13,\"%14\",%15 ]")
      .arg(gameName)
      .arg(fileID)
      .arg(name)
      .arg(uri)
      .arg(version.canonicalString())
      .arg(description.mid(0).replace("\"", "'"))
      .arg(categoryID)
      .arg(fileSize)
      .arg(modID)
      .arg(modName)
      .arg(newestVersion.canonicalString())
      .arg(fileName)
      .arg(fileCategory)
      .arg(repository)
      .arg(QString(QtJson::serialize(userData)))
      .arg(author)
      .arg(uploader)
      .arg(uploaderUrl);
}