-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathutil.cpp
134 lines (109 loc) · 3.64 KB
/
util.cpp
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
#include <QStandardPaths>
#include <QProcess>
#include <QDebug>
#include <QApplication>
#include <QDir>
#include "util.h"
#include "taglib/fileref.h"
Util::Util(QObject *parent)
: QObject(parent)
{
}
Util *Util::instance()
{
static Util* instance = new Util;
return instance;
}
QObject *Util::qmlInstance(QQmlEngine *engine, QJSEngine *scriptEngine)
{
Q_UNUSED(engine);
Q_UNUSED(scriptEngine);
return Util::instance(); // C++ and QML instance
}
QString Util::getDisplayTime(const QString &xFileName)
{
uint t = getTimeMSec(xFileName);
return getDisplayTime(t);
}
QString Util::getDisplayTime(uint xTimeMSec) {
//uint milliseconds = p_time%1000;
uint seconds = (xTimeMSec/1000)%60;
uint minutes = (xTimeMSec/(1000*60))%60;
uint hours = (xTimeMSec/(1000*60*60)); //%24;
QString str_hours = (hours < 10) ? "0" + QString::number(hours) : QString::number(hours);
QString str_minutes = (minutes < 10) ? "0" + QString::number(minutes) : QString::number(minutes);
QString str_seconds = (seconds < 10) ? "0" + QString::number(seconds) : QString::number(seconds);
QString t(str_hours + ":" + str_minutes + ":" + str_seconds);
return t;
}
uint Util::getTimeMSec(const QString &xFileName) {
TagLib::FileRef f(xFileName.toUtf8().constData());
uint len = f.file()->audioProperties()->lengthInMilliseconds();
return len;
}
QString Util::getTagTitle(const QString &xFileName) {
TagLib::FileRef f(xFileName.toUtf8().constData());
QString len = QString(f.file()->tag()->title().toCString());
return len;
}
QString Util::getTagAlbum(const QString &xFileName) {
TagLib::FileRef f(xFileName.toUtf8().constData());
QString len = QString(f.file()->tag()->album().toCString());
return len;
}
QString Util::getTagArtist(const QString &xFileName) {
TagLib::FileRef f(xFileName.toUtf8().constData());
QString len = QString(f.file()->tag()->artist().toCString());
return len;
}
QString Util::getTagGenre(const QString &xFileName) {
TagLib::FileRef f(xFileName.toUtf8().constData());
QString len = QString(f.file()->tag()->genre().toCString());
return len;
}
QString Util::toCamelCase(const QString &xString)
{
QStringList parts = xString.split(' ', QString::SkipEmptyParts);
for (int i = 0; i < parts.size(); ++i)
parts[i].replace(0, 1, parts[i][0].toUpper());
return parts.join(" ");
}
int Util::getTagYear(const QString &xFileName) {
TagLib::FileRef f(xFileName.toUtf8().constData());
int len = f.file()->tag()->year();
return len;
}
QString Util::getAppConfigLocation()
{
// find + create the folder
QDir dir(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation));
if (!dir.exists())
dir.mkpath(".");
return QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
}
QString Util::getCacheLocation()
{
return QStandardPaths::locate(QStandardPaths::CacheLocation, QString(), QStandardPaths::LocateDirectory);
}
QString Util::getMusicLocation()
{
return QStandardPaths::locate(QStandardPaths::MusicLocation, QString(), QStandardPaths::LocateDirectory);
}
QString Util::getHomeLocation()
{
return QStandardPaths::locate(QStandardPaths::HomeLocation, QString(), QStandardPaths::LocateDirectory);
}
QStringList Util::getAndroidStorageLocations()
{
// GenericDataLocation = user folder
QStringList system_environment = QProcess::systemEnvironment();
QStringList result;
for (auto s: system_environment) {
if (s.contains("STORAGE="))
result.append(s.split("=")[1]);
}
return result;
}
QString Util::appendFile(QString &xString) {
return QString("file://" + xString);
}