TTKMusicPlayer  4.1.3.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicurlutils.cpp
Go to the documentation of this file.
1 #include "musicurlutils.h"
2 #include "ttkplatformsystem.h"
3 
4 #include <QUrl>
5 #include <QProcess>
6 #include <QDesktopServices>
7 #ifdef Q_OS_WIN
8 # define WIN32_LEAN_AND_MEAN
9 # include <qt_windows.h>
10 # include <shellapi.h>
11 #endif
12 
13 bool TTK::Url::execute(const QString &path)
14 {
15 #ifdef Q_OS_WIN
16  ShellExecuteW(0, L"open", path.toStdWString().c_str(), nullptr, nullptr, SW_SHOWNORMAL);
17  return true;
18 #else
19  return QProcess::startDetached(path, {});
20 #endif
21 }
22 
23 bool TTK::Url::openUrl(const QString &path, bool local)
24 {
25  if(path.isEmpty())
26  {
27  return false;
28  }
29 
30  if(local)
31  {
32 #ifdef Q_OS_WIN
33  QString p = path;
34  p.replace(TTK_SEPARATOR, "\\");
35  p = "/select," + p;
36  ShellExecuteW(0, L"open", L"explorer.exe", p.toStdWString().c_str(), nullptr, SW_SHOWNORMAL);
37  return true;
38 #elif defined Q_OS_UNIX
40  {
41  return QProcess::startDetached("nautilus", {path});
42  }
43 #endif
44  }
45  return QDesktopServices::openUrl(local ? QUrl::fromLocalFile(path) : QUrl(path, QUrl::TolerantMode));
46 }
47 
48 QString TTK::Url::urlEncode(QString &data)
49 {
50  data.replace("+", "%2B");
51  data.replace("/", "%2F");
52  data.replace("=", "%3D");
53  return data;
54 }
55 
56 QString TTK::Url::urlDecode(QString &data)
57 {
58  data.replace("%2B", "+");
59  data.replace("%2F", "/");
60  data.replace("%3D", "=");
61  return data;
62 }
63 
64 QByteArray TTK::Url::urlEncode(QByteArray &data)
65 {
66  data.replace("+", "%2B");
67  data.replace("/", "%2F");
68  data.replace("=", "%3D");
69  return data;
70 }
71 
72 QByteArray TTK::Url::urlDecode(QByteArray &data)
73 {
74  data.replace("%2B", "+");
75  data.replace("%2F", "/");
76  data.replace("%3D", "=");
77  return data;
78 }
79 
80 QString TTK::Url::urlPrettyEncode(QString &data)
81 {
82 #if TTK_QT_VERSION_CHECK(5,0,0)
83  data = QUrl(data).toString(QUrl::FullyEncoded);
84 #else
85  data = QUrl(data).toEncoded();
86 #endif
87  return data;
88 }
89 
90 QString TTK::Url::urlPrettyDecode(QString &data)
91 {
92 #if TTK_QT_VERSION_CHECK(5,0,0)
93  data = QUrl(data).toString();
94 #else
95  data = QByteArray::fromPercentEncoding(data.toUtf8());
96 #endif
97  return data;
98 }
99 
100 QByteArray TTK::Url::urlPrettyEncode(QByteArray &data)
101 {
102 #if TTK_QT_VERSION_CHECK(5,0,0)
103  data = QUrl(data).toString(QUrl::FullyEncoded).toUtf8();
104 #else
105  data = QUrl(data).toEncoded();
106 #endif
107  return data;
108 }
109 
110 QByteArray TTK::Url::urlPrettyDecode(QByteArray &data)
111 {
112 #if TTK_QT_VERSION_CHECK(5,0,0)
113  data = QUrl::fromEncoded(data).toString(QUrl::FullyDecoded).toUtf8();
114 #else
115  data = QByteArray::fromPercentEncoding(data);
116 #endif
117  return data;
118 }
TTK_MODULE_EXPORT QString urlEncode(QString &data)
TTK_MODULE_EXPORT bool execute(const QString &path)
TTK_MODULE_EXPORT QString urlPrettyEncode(QString &data)
TTK_MODULE_EXPORT QString urlDecode(QString &data)
static System systemName()
#define TTK_SEPARATOR
Definition: ttkglobal.h:196
#define local
Definition: unzip.c:91
TTK_MODULE_EXPORT bool openUrl(const QString &path, bool local=true)
TTK_MODULE_EXPORT QString urlPrettyDecode(QString &data)