TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicstringutils.cpp
Go to the documentation of this file.
1 #include "musicstringutils.h"
2 #include "musicsettingmanager.h"
3 
4 #include <QTextDocument>
5 
6 static QString makeFilePrefix(MusicSettingManager::Config type, const QString &path)
7 {
8  QString dir = G_SETTING_PTR->value(type).toString();
9  if(dir.isEmpty())
10  {
11  dir = QDir(path).canonicalPath();
12  if(!dir.endsWith(TTK_SEPARATOR))
13  {
14  dir.append(TTK_SEPARATOR);
15  }
16  }
17 
18  if(!QDir(dir).exists())
19  {
20  QDir().mkpath(dir);
21  }
22  return dir;
23 }
24 
25 
27 {
29 }
30 
32 {
34 }
35 
36 QString TTK::String::pefix(const QString &name)
37 {
38  return TTK::String::pefix(name, TTK_DOT);
39 }
40 
41 QString TTK::String::pefix(const QString &name, const QString &prefix)
42 {
43  return name.left(name.indexOf(prefix));
44 }
45 
46 QString TTK::String::suffix(const QString &name)
47 {
48  return TTK::String::suffix(name, TTK_DOT);
49 }
50 
51 QString TTK::String::suffix(const QString &name, const QString &suffix)
52 {
53  return name.right(name.length() - name.lastIndexOf(suffix) - suffix.length());
54 }
55 
56 QString TTK::String::splitToken(const QString &name)
57 {
58  return TTK::String::splitToken(name, TTK_DOT, "?");
59 }
60 
61 QString TTK::String::splitToken(const QString &name, const QString &prefix, const QString &suffix, bool revert)
62 {
63  if(revert)
64  {
65  const QString &data = TTK::String::suffix(name, prefix);
66  return TTK::String::pefix(data, suffix);
67  }
68  else
69  {
70  const QString &data = TTK::String::pefix(name, prefix);
71  return TTK::String::suffix(data, suffix);
72  }
73 }
74 
75 QStringList TTK::String::split(const QString &value, const QString &key)
76 {
77  QStringList strings = value.split(QString(" %1 ").arg(key));
78  if(strings.isEmpty() || strings.count() == 1)
79  {
80  strings = value.split(key);
81  }
82  return strings;
83 }
84 
85 QString TTK::String::removeToken(const QString &value, const QString &key)
86 {
87  QString s = value;
88  s.remove(key);
89  if(s.contains(key))
90  {
91  s = TTK::String::removeToken(key);
92  }
93  return s;
94 }
95 
96 bool TTK::String::isChinese(const QChar &c)
97 {
98 #ifdef Q_CC_MSVC
99  return '\xa9\x96' == c || (c.unicode() >= 0x4e00 && c.unicode() <= 0x9fa5);
100 #else
101  return L'〇' == c || (c.unicode() >= 0x4e00 && c.unicode() <= 0x9fa5);
102 #endif
103 }
104 
105 bool TTK::String::isNetworkUrl(const QString &path)
106 {
107  return path.startsWith(HTTP_PROTOCOL) || path.startsWith(HTTPS_PROTOCOL);
108 }
109 
110 QString TTK::String::convertHtmlToPlain(const QString &value)
111 {
112  QTextDocument text;
113  text.setHtml(value);
114  return text.toPlainText();
115 }
116 
118 {
119  static QStringList acs{"\\", "/", "?", "*", "\"", ":", "<", ">", "|"};
120  return acs;
121 }
122 
123 bool TTK::String::isCharValid(const QString &value)
124 {
125  for(const QString &ac : TTK::String::characters())
126  {
127  if(value.contains(ac))
128  {
129  return true;
130  }
131  }
132  return false;
133 }
134 
135 QString TTK::String::charactersReplace(const QString &value)
136 {
137  QString s(TTK::String::convertHtmlToPlain(value));
138 
139  for(const QString &ac : TTK::String::characters())
140  {
141  if(s.contains(ac))
142  {
143  s.replace(ac, " ");
144  }
145  }
146  return s;
147 }
TTK_MODULE_EXPORT QString charactersReplace(const QString &value)
TTK_MODULE_EXPORT QString convertHtmlToPlain(const QString &value)
#define HTTP_PROTOCOL
Definition: ttkglobal.h:208
static constexpr wchar_t key[]
TTK_MODULE_EXPORT bool isChinese(const QChar &c)
TTK_MODULE_EXPORT bool isCharValid(const QString &value)
TTK_MODULE_EXPORT QStringList characters()
#define TTK_DOT
Definition: ttkglobal.h:193
static QString makeFilePrefix(MusicSettingManager::Config type, const QString &path)
TTK_MODULE_EXPORT QString pefix(const QString &name)
#define HTTPS_PROTOCOL
Definition: ttkglobal.h:209
const char * name
Definition: http_parser.c:458
TTK_MODULE_EXPORT QString suffix(const QString &name)
TTK_MODULE_EXPORT QString removeToken(const QString &value, const QString &key=" ")
#define TTK_SEPARATOR
Definition: ttkglobal.h:195
TTK_MODULE_EXPORT QString lrcDirPrefix()
#define MUSIC_DIR_FULL
Definition: musicobject.h:125
TTK_MODULE_EXPORT QStringList split(const QString &value, const QString &key=TTK_DEFAULT_STR)
TTK_MODULE_EXPORT QString splitToken(const QString &name)
#define LRC_DIR_FULL
Definition: musicobject.h:124
TTK_MODULE_EXPORT QString musicDirPrefix()
TTK_MODULE_EXPORT bool isNetworkUrl(const QString &path)
#define G_SETTING_PTR