blob: 5c4972f085071e6657a4a700cc49f5ad15261eb3 (
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
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
|
#include "aoapplication.h"
#include "courtroom.h"
#include "file_functions.h"
#include <QDir>
#include <QDebug>
#include <QStandardPaths>
#include <QRegExp>
#ifdef BASE_OVERRIDE
#include "base_override.h"
#endif
//this is a quite broad generalization
//the most common OSes(mac and windows) are _usually_ case insensitive
//however, there do exist mac installations with case sensitive filesystems
//in that case, define CASE_SENSITIVE_FILESYSTEM and compile on a mac
#if (defined (LINUX) || defined (__linux__))
#define CASE_SENSITIVE_FILESYSTEM
#endif
QString base_path = "";
QString AOApplication::get_base_path()
{
if (base_path == "")
{
#ifdef BASE_OVERRIDE
base_path = base_override;
#elif defined(ANDROID)
QString sdcard_storage = getenv("SECONDARY_STORAGE");
if (dir_exists(sdcard_storage + "/AO2/")){
base_path = sdcard_storage + "/AO2/";
}else{
QString external_storage = getenv("EXTERNAL_STORAGE");
base_path = external_storage + "/AO2/";
}
#else
base_path = QDir::currentPath() + "/base/";
#endif
}
return base_path;
}
QString AOApplication::get_data_path()
{
return get_base_path() + "data/";
}
QString AOApplication::get_theme_path()
{
return get_base_path() + "themes/" + current_theme.toLower() + "/";
}
QString AOApplication::get_default_theme_path()
{
return get_base_path() + "themes/default/";
}
QString AOApplication::get_character_path(QString p_character)
{
return get_base_path() + "characters/" + p_character.toLower() + "/";
}
QString AOApplication::get_demothings_path()
{
QString default_path = "misc/demothings/";
QString alt_path = "misc/RosterImages";
if (dir_exists(default_path))
return get_base_path() + default_path;
else if (dir_exists(alt_path))
return get_base_path() + alt_path;
else
return get_base_path() + default_path;
}
QString AOApplication::get_sounds_path()
{
return get_base_path() + "sounds/general/";
}
QString AOApplication::get_music_path(QString p_song)
{
#ifndef CASE_SENSITIVE_FILESYSTEM
return get_base_path() + "sounds/music/" + p_song;
#else
return get_case_sensitive_path(get_base_path() + "sounds/music/", p_song);
#endif
}
QString AOApplication::get_background_path()
{
if (courtroom_constructed)
return w_courtroom->get_background_path();
//this function being called when the courtroom isn't constructed makes no sense
return "";
}
QString AOApplication::get_default_background_path()
{
return get_base_path() + "background/default/";
}
QString AOApplication::get_evidence_path()
{
QString default_path = "evidence/";
QString alt_path = "items/";
if (dir_exists(default_path))
return get_base_path() + default_path;
else if (dir_exists(alt_path))
return get_base_path() + alt_path;
else
return get_base_path() + default_path;
}
QString AOApplication::get_case_sensitive_path(QString p_dir, QString p_file) {
qDebug() << "calling get_case_sensitive_path";
QRegExp file_rx = QRegExp(p_file, Qt::CaseInsensitive);
QStringList files = QDir(p_dir).entryList();
int result = files.indexOf(file_rx);
if (result != -1) {
QString path = p_dir + files.at(result);
qDebug() << "returning " << path;
return path;
}
//if nothing is found, let the caller handle the missing file
return p_dir + p_file;
}
QString Courtroom::get_background_path()
{
return ao_app->get_base_path() + "background/" + current_background.toLower() + "/";
}
QString Courtroom::get_default_background_path()
{
return ao_app->get_base_path() + "background/default/";
}
|