Skip to content

Commit

Permalink
Refactor dlna module[147968]
Browse files Browse the repository at this point in the history
  • Loading branch information
guofeng committed Sep 2, 2019
1 parent 01261d6 commit 4430f7b
Show file tree
Hide file tree
Showing 27 changed files with 555 additions and 108 deletions.
2 changes: 1 addition & 1 deletion ChangeLog
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ v2.9.0.0 Final 2019.06.29
添加播放可视化。
其他优化。

v2.9.1.0 Final 2019.00.00
v2.10.0.0 Final 2019.09.20
播放列表优化。
添加DLNA模块。
优化传歌至移动设备。
Expand Down
1 change: 1 addition & 0 deletions TTKModule/TTKCore/musicCoreKits/musicabstractthread.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
================================================= */

#include <QThread>
#include <QStringList>
#include "musicglobaldefine.h"

/*! @brief The class of the abstract thread.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ MusicDesktopWallpaperThread::MusicDesktopWallpaperThread(QObject *parent)
m_timer = new QTimer(this);
connect(m_timer, SIGNAL(timeout()), SLOT(timeout()));

setInterval(20*MT_S2MS);
setInterval(20 * MT_S2MS);
}

MusicDesktopWallpaperThread::~MusicDesktopWallpaperThread()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
* with this program; If not, see <http://www.gnu.org/licenses/>.
================================================= */

#include <QStringList>
#include <QFileInfoList>
#include "musicabstractthread.h"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
* with this program; If not, see <http://www.gnu.org/licenses/>.
================================================= */

#include <QStringList>
#include "musicabstractthread.h"

class QProcess;
Expand Down
108 changes: 108 additions & 0 deletions TTKModule/TTKCore/musicUtilsKits/musicurlutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,16 @@
#include <shellapi.h>
#endif

const std::string ASCII_MAP(R"("%<>[\]^_`{|})");
const std::string HEX_NUM_MAP("0123456789ABCDEF");

unsigned char Number2Char(const char h, const char l)
{
unsigned char hh = std::find(std::begin(HEX_NUM_MAP), std::end(HEX_NUM_MAP), h) - std::begin(HEX_NUM_MAP);
unsigned char ll = std::find(std::begin(HEX_NUM_MAP), std::end(HEX_NUM_MAP), l) - std::begin(HEX_NUM_MAP);
return (hh << 4) + ll;
}

bool MusicUtils::Url::openUrl(const QString &exe, const QString &path)
{
#ifdef Q_OS_WIN
Expand Down Expand Up @@ -68,3 +78,101 @@ void MusicUtils::Url::urlDecode(QByteArray &data)
data.replace("%2F", "/");
data.replace("%3D", "=");
}

void MusicUtils::Url::urlPrettyEncode(QString &data)
{
std::string url = data.toStdString();
data.clear();

for(auto it = url.begin(); it != url.end(); ++it)
{
if(((*it >> 7) & 1) || (std::count(std::begin(ASCII_MAP), std::end(ASCII_MAP), *it)))
{
data.push_back('%');
data.push_back(HEX_NUM_MAP[(*it >> 4) & 0x0F]);
data.push_back(HEX_NUM_MAP[*it & 0x0F]);
}
else
{
data.push_back(*it);
}
}
}

void MusicUtils::Url::urlPrettyDecode(QString &data)
{
std::string url = data.toStdString();
data.clear();

for(auto it = url.begin(); it != url.end(); ++it)
{
if(*it == '%')
{
if(std::next(it++) == url.end())
{
M_LOGGER_ERROR("Url is invalid");
return;
}

data.push_back(Number2Char(*it, *std::next(it)));
if(std::next(it++) == url.end())
{
M_LOGGER_ERROR("Url is invalid");
return;
}
}
else
{
data.push_back(*it);
}
}
}

void MusicUtils::Url::urlPrettyEncode(QByteArray &data)
{
std::string url = data.toStdString();
data.clear();

for(auto it = url.begin(); it != url.end(); ++it)
{
if(((*it >> 7) & 1) || (std::count(std::begin(ASCII_MAP), std::end(ASCII_MAP), *it)))
{
data.push_back('%');
data.push_back(HEX_NUM_MAP[(*it >> 4) & 0x0F]);
data.push_back(HEX_NUM_MAP[*it & 0x0F]);
}
else
{
data.push_back(*it);
}
}
}

void MusicUtils::Url::urlPrettyDecode(QByteArray &data)
{
std::string url = data.toStdString();
data.clear();

for(auto it = url.begin(); it != url.end(); ++it)
{
if(*it == '%')
{
if(std::next(it++) == url.end())
{
M_LOGGER_ERROR("Url is invalid");
return;
}

data.push_back(Number2Char(*it, *std::next(it)));
if(std::next(it++) == url.end())
{
M_LOGGER_ERROR("Url is invalid");
return;
}
}
else
{
data.push_back(*it);
}
}
}
17 changes: 17 additions & 0 deletions TTKModule/TTKCore/musicUtilsKits/musicurlutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,23 @@ namespace MusicUtils
*/
MUSIC_UTILS_EXPORT void urlDecode(QByteArray &data);

/*!
* Pretty encode the data into url.
*/
MUSIC_UTILS_EXPORT void urlPrettyEncode(QString &data);
/*!
* Pretty decode the data into url.
*/
MUSIC_UTILS_EXPORT void urlPrettyDecode(QString &data);
/*!
* Pretty encode the data into url.
*/
MUSIC_UTILS_EXPORT void urlPrettyEncode(QByteArray &data);
/*!
* Pretty decode the data into url.
*/
MUSIC_UTILS_EXPORT void urlPrettyDecode(QByteArray &data);

}
}

Expand Down
1 change: 1 addition & 0 deletions TTKModule/TTKWidget/musicToolsKits/musictoolsetswidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "musicnetworkconnectiontestwidget.h"
#include "musicvolumegainwidget.h"
#include "musicsoundtouchwidget.h"
#include "musicsongdlnatransferwidget.h"
#include "musicsongringtonemakerwidget.h"
#include "musicmessagebox.h"
#include "musicapplication.h"
Expand Down
7 changes: 5 additions & 2 deletions TTKModule/TTKWidget/musicToolsSetsKits/MusicToolsSetsKits.pri
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ HEADERS += \
$$PWD/musicsoundkmicrowidget.h \
$$PWD/musicsoundkmicrosearchwidget.h \
$$PWD/musicsoundkmicrosettingpopwidget.h \
$$PWD/musicspectrumwidget.h
$$PWD/musicspectrumwidget.h \
$$PWD/musicsongdlnatransferwidget.h

}

Expand All @@ -62,6 +63,8 @@ SOURCES += \
$$PWD/musicsoundkmicrowidget.cpp \
$$PWD/musicsoundkmicrosearchwidget.cpp \
$$PWD/musicsoundkmicrosettingpopwidget.cpp \
$$PWD/musicspectrumwidget.cpp
$$PWD/musicspectrumwidget.cpp \
$$PWD/musicsongdlnatransferwidget.cpp

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#include "musicsongdlnatransferwidget.h"
#include "ui_musicsongdlnatransferwidget.h"

#include "qdlna/dlnafinder.h"

MusicSongDlnaTransferWidget::MusicSongDlnaTransferWidget(QWidget *parent)
: MusicAbstractMoveDialog(parent),
m_ui(new Ui::MusicSongDlnaTransferWidget)
{
m_ui->setupUi(this);

m_dlnaFinder = new DlnaFinder(this);
connect(m_dlnaFinder, SIGNAL(finished()), SLOT(scanFinished()));
}

MusicSongDlnaTransferWidget::~MusicSongDlnaTransferWidget()
{
delete m_dlnaFinder;
delete m_ui;
}

void MusicSongDlnaTransferWidget::startToScan()
{
m_dlnaFinder->find();
}

void MusicSongDlnaTransferWidget::scanFinished()
{
m_dlnaFinder->clientNames();
}

int MusicSongDlnaTransferWidget::exec()
{
setBackgroundPixmap(m_ui->background, size());
return MusicAbstractMoveDialog::exec();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#ifndef MUSICSONGDLNATRANSFERWIDGET_H
#define MUSICSONGDLNATRANSFERWIDGET_H

/* =================================================
* This file is part of the TTK Music Player project
* Copyright (C) 2015 - 2019 Greedysky Studio
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License along
* with this program; If not, see <http://www.gnu.org/licenses/>.
================================================= */

#include "musicabstractmovedialog.h"

namespace Ui {
class MusicSongDlnaTransferWidget;
}

class DlnaFinder;

/*! @brief The class of the song dlna transfer widget.
* @author Greedysky <greedysky@163.com>
*/
class MUSIC_TOOLSET_EXPORT MusicSongDlnaTransferWidget : public MusicAbstractMoveDialog
{
Q_OBJECT
TTK_DECLARE_MODULE(MusicSongDlnaTransferWidget)
public:
/*!
* Object contsructor.
*/
explicit MusicSongDlnaTransferWidget(QWidget *parent = nullptr);

virtual ~MusicSongDlnaTransferWidget();

Q_SIGNALS:

public Q_SLOTS:
/*!
* Start to scan dlna devices.
*/
void startToScan();
/*!
* Scan dlna devices finished.
*/
void scanFinished();
/*!
* Override exec function.
*/
virtual int exec();

private:
Ui::MusicSongDlnaTransferWidget *m_ui;

DlnaFinder *m_dlnaFinder;

};

#endif // MUSICSONGDLNATRANSFERWIDGET_H
1 change: 1 addition & 0 deletions TTKModule/TTKWidget/musicUiKits/MusicUiKits.pri
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ FORMS += \
$$PWD/musicToolsetsKits/musicsongringtonemakerwidget.ui \
$$PWD/musicToolsetsKits/musicsoundkmicrowidget.ui \
$$PWD/musicToolsetsKits/musicspectrumwidget.ui \
$$PWD/musicToolsetsKits/musicsongdlnatransferwidget.ui \
$$PWD/musicToolsKits/musicwebmusicradioplaywidget.ui \
$$PWD/musicToolsKits/musicconnecttransferwidget.ui \
$$PWD/musicToolsKits/musiccloudfilemanagerdialog.ui \
Expand Down
Loading

0 comments on commit 4430f7b

Please sign in to comment.