TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicruntimemanager.cpp
Go to the documentation of this file.
1 #include "musicruntimemanager.h"
2 #include "musicconfigmanager.h"
3 #include "musicsettingmanager.h"
4 #include "musicnetworkthread.h"
5 #include "musicqmmputils.h"
6 #include "musicfileutils.h"
7 #include "musiccodecutils.h"
8 #include "ttkversion.h"
9 
10 #include <QFont>
11 #include <QApplication>
12 
13 namespace TTK
14 {
18  static quint64 directorySize(const QString &dirName);
22  static void checkCacheSize();
26  static QString languageCore(int index);
30  static QString languageQmmp(int index);
31 
32 }
33 
34 quint64 TTK::directorySize(const QString &dirName)
35 {
36  quint64 size = 0;
37  if(QFileInfo(dirName).isDir())
38  {
39  QDir dir(dirName);
40  const QFileInfoList &fileList = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::Hidden | QDir::NoSymLinks | QDir::NoDotAndDotDot);
41  for(const QFileInfo &fin : qAsConst(fileList))
42  {
43  if(fin.isDir())
44  {
45  size += directorySize(fin.absoluteFilePath());
46  }
47  else
48  {
49  size += fin.size();
50  }
51  }
52  }
53  return size;
54 }
55 
57 {
58  const bool disabled = G_SETTING_PTR->value(MusicSettingManager::DownloadCacheEnable).toInt();
59  if(!disabled)
60  {
61  return;
62  }
63 
64  const quint64 cacheSize = G_SETTING_PTR->value(MusicSettingManager::DownloadCacheSize).toInt() * TTK_SN_MB2B;
65  const QString &path = G_SETTING_PTR->value(MusicSettingManager::DownloadMusicDirPath).toString();
66  quint64 size = directorySize(path);
67  if(size > cacheSize)
68  {
69  const QFileInfoList &fileList = QDir(path).entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
70  for(const QFileInfo &fin : qAsConst(fileList))
71  {
72  size -= fin.size();
73  QFile::remove(fin.absoluteFilePath());
74  if(size <= cacheSize)
75  {
76  break;
77  }
78  }
79  }
80 }
81 
82 QString TTK::languageCore(int index)
83 {
84  QString lan(LANGUAGE_DIR_FULL);
85  switch(index)
86  {
87  case 0: return lan.append("cn.ln");
88  case 1: return lan.append("tc.ln");
89  case 2: return lan.append("en.ln");
90  default: return {};
91  }
92 }
93 
94 QString TTK::languageQmmp(int index)
95 {
96  QString lan(LANGUAGE_DIR_FULL);
97  switch(index)
98  {
99  case 0: return lan.append("cnq.ln");
100  case 1: return lan.append("tcq.ln");
101  case 2: return lan.append("enq.ln");
102  default: return {};
103  }
104 }
105 
106 
108 {
109  TTK_INFO_STREAM("MusicApplication Run");
110 
111 #if !TTK_QT_VERSION_CHECK(5,0,0)
113 #endif
115 
116 #ifdef Q_OS_UNIX
117  QFont font;
118  font.setPixelSize(13);
119  qApp->setFont(font);
120 #endif
121 
122  //detect the current network state
123  G_NETWORK_PTR->start();
124 
125  MusicConfigManager manager;
126  manager.fromFile(COFIG_PATH_FULL);
127  manager.readBuffer();
128 
130  G_NETWORK_PTR->setBlockNetwork(G_SETTING_PTR->value(MusicSettingManager::CloseNetWorkMode).toBool());
131 }
132 
134 {
135  const int index = G_SETTING_PTR->value(MusicSettingManager::LanguageIndex).toInt();
136  return {TTK::languageCore(index), TTK::languageQmmp(index)};
137 }
138 
140 {
142 }
static QString languageQmmp(int index)
bool fromFile(const QString &name)
static quint64 directorySize(const QString &dirName)
static QString languageCore(int index)
TTK_MODULE_EXPORT void updateConfig()
voidpf void uLong size
Definition: ioapi.h:136
The class of the xml config manager.
#define qAsConst
Definition: ttkqtglobal.h:53
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:67
The namespace of the process utils.
Definition: ttkcompat.h:24
#define LANGUAGE_DIR_FULL
Definition: musicobject.h:144
static void checkCacheSize()
#define COFIG_PATH_FULL
Definition: musicobject.h:133
bool configVersionCheck() const
TTK_MODULE_EXPORT void setLocalCodec(const char *format="UTF-8")
#define G_NETWORK_PTR
#define TTK_SN_MB2B
Definition: ttkglobal.h:314
QStringList translator() const
#define TTK_CONFIG_VERSION_STR
Definition: ttkversion.h:168
#define G_SETTING_PTR