mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-07-03 12:15:59 +08:00
* 更换搜索服务器域名为星火的域名 * 更新搜索服务器为线上服务器 * 完成搜索功能 * 解决搜索结果图标锯齿问题 * 更新appitem的样式 * 完成应用搜索列表的滚动问题 * 合并master分支 * 添加一些文件到忽略列表 * 更新项目结构 * 更新搜索列表UI * 添加 QtNetworkService库
108 lines
3.8 KiB
C++
108 lines
3.8 KiB
C++
/**********************************************************
|
|
Author: Qt君
|
|
微信公众号: Qt君(文章首发)
|
|
Website: qtbig.com(后续更新)
|
|
Email: 2088201923@qq.com
|
|
QQ交流群: 732271126
|
|
LISCENSE: MIT
|
|
**********************************************************/
|
|
#ifndef HTTP_RESPONSE_H
|
|
#define HTTP_RESPONSE_H
|
|
|
|
#include <QNetworkReply>
|
|
#include <QMultiMap>
|
|
#include <functional>
|
|
#include <QTimer>
|
|
|
|
namespace AeaQt {
|
|
|
|
class HttpResponseTimeout : public QObject {
|
|
Q_OBJECT
|
|
public:
|
|
HttpResponseTimeout(QNetworkReply *parent = NULL, const int timeout = -1) : QObject(parent) {
|
|
if (timeout > 0)
|
|
QTimer::singleShot(timeout, this, SLOT(onTimeout()));
|
|
}
|
|
|
|
private slots:
|
|
void onTimeout() {
|
|
QNetworkReply *reply = static_cast<QNetworkReply*>(parent());
|
|
if (reply->isRunning()) {
|
|
reply->abort();
|
|
reply->deleteLater();
|
|
}
|
|
}
|
|
};
|
|
|
|
class HttpResponse : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
/*
|
|
* Support Reflex Method
|
|
* default: AutoInfer
|
|
* AutoInfer: Automatic derivation based on type
|
|
*/
|
|
enum SupportMethod {
|
|
Invalid = 0,
|
|
AutoInfer,
|
|
onResponse_QNetworkReply_A_Pointer, /* method: void function(QNetworkReply* reply); Is_AutoInfer: true */
|
|
onResponse_QByteArray, /* method: void function(QByteArray data); Is_AutoInfer: true */
|
|
onResponse_QVariantMap, /* method: void function(QVariantMap map); Is_AutoInfer: true */
|
|
onDownloadProgress_qint64_qint64, /* method: void function(qint64 bytesReceived, qint64 bytesTotal); Is_AutoInfer: true */
|
|
onError_QNetworkReply_To_NetworkError, /* method: void function(QNetworkReply::NetworkError error); Is_AutoInfer: true */
|
|
onError_QString, /* method: void function(QString errorString); Is_AutoInfer: true */
|
|
onError_QNetworkReply_To_NetworkError_QNetworkReply_A_Pointer, /* method: void function(QNetworkReply::NetworkError error, QNetworkReply* reply); Is_AutoInfer: true */
|
|
onError_QString_QNetworkReply_A_Poniter/* method: void function(QString errorString, QNetworkReply* reply); Is_AutoInfer: true */
|
|
};
|
|
|
|
explicit HttpResponse(QNetworkReply *networkReply,
|
|
const QMultiMap<SupportMethod, QPair<QString, QVariant> > &slotsMap,
|
|
const int &timeout,
|
|
bool isBlock);
|
|
|
|
virtual ~HttpResponse();
|
|
|
|
QNetworkReply *networkReply();
|
|
|
|
protected:
|
|
void slotsMapOperation(QMultiMap<SupportMethod, QPair<QString, QVariant> > &slotsMap);
|
|
|
|
signals:
|
|
void finished(QNetworkReply *reply);
|
|
void finished(QByteArray data);
|
|
void finished(QVariantMap map);
|
|
void error(QString errorString);
|
|
void error(QNetworkReply::NetworkError error);
|
|
void error(QString errorString, QNetworkReply *reply);
|
|
void error(QNetworkReply::NetworkError error, QNetworkReply *reply);
|
|
void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
|
|
|
|
private slots:
|
|
void onFinished();
|
|
void onError(QNetworkReply::NetworkError error);
|
|
void onDownloadProgress(qint64 bytesReceived, qint64 bytesTotal);
|
|
|
|
private:
|
|
HttpResponse();
|
|
|
|
private:
|
|
QMultiMap<SupportMethod, QPair<QString, QVariant> > m_slotsMap;
|
|
QNetworkReply *m_networkReply;
|
|
};
|
|
|
|
}
|
|
|
|
Q_DECLARE_METATYPE(std::function<void (QNetworkReply*)>)
|
|
Q_DECLARE_METATYPE(std::function<void (QByteArray)>)
|
|
Q_DECLARE_METATYPE(std::function<void (QVariantMap)>)
|
|
|
|
Q_DECLARE_METATYPE(std::function<void (QString)>)
|
|
Q_DECLARE_METATYPE(std::function<void (QNetworkReply::NetworkError)>)
|
|
Q_DECLARE_METATYPE(std::function<void (QNetworkReply::NetworkError, QNetworkReply *)>)
|
|
Q_DECLARE_METATYPE(std::function<void (QString, QNetworkReply *)>)
|
|
|
|
Q_DECLARE_METATYPE(std::function<void (qint64, qint64)>)
|
|
|
|
#endif // HTTP_RESPONSE_H
|