|
|
|
@ -22,9 +22,7 @@ |
|
|
|
|
* along with OpenBoard. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#include <QScriptValue> |
|
|
|
|
#include <QScriptEngine> |
|
|
|
|
#include <QUrl> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "UBApplicationController.h" |
|
|
|
|
|
|
|
|
@ -67,6 +65,9 @@ |
|
|
|
|
|
|
|
|
|
#include "ui_mainWindow.h" |
|
|
|
|
|
|
|
|
|
#ifdef Q_WS_MAC |
|
|
|
|
#include <Carbon/Carbon.h> |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#include "core/memcheck.h" |
|
|
|
|
|
|
|
|
@ -85,6 +86,7 @@ UBApplicationController::UBApplicationController(UBBoardView *pControlView, |
|
|
|
|
, mAutomaticCheckForUpdates(false) |
|
|
|
|
, mCheckingForUpdates(false) |
|
|
|
|
, mIsShowingDesktop(false) |
|
|
|
|
, mHttp(0) |
|
|
|
|
{ |
|
|
|
|
mDisplayManager = new UBDisplayManager(this); |
|
|
|
|
|
|
|
|
@ -119,7 +121,7 @@ UBApplicationController::UBApplicationController(UBBoardView *pControlView, |
|
|
|
|
QTimer::singleShot (1000, this, SLOT (checkAtLaunch())); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef Q_OS_LINUX |
|
|
|
|
#ifdef Q_WS_X11 |
|
|
|
|
mMainWindow->setStyleSheet("QToolButton { font-size: 11px}"); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
@ -136,6 +138,8 @@ UBApplicationController::~UBApplicationController() |
|
|
|
|
delete mBlackScene; |
|
|
|
|
delete mMirror; |
|
|
|
|
|
|
|
|
|
if (mHttp) delete mHttp; |
|
|
|
|
|
|
|
|
|
delete(mOpenSankoreImporter); |
|
|
|
|
mOpenSankoreImporter = NULL; |
|
|
|
|
} |
|
|
|
@ -475,53 +479,82 @@ void UBApplicationController::showDesktop(bool dontSwitchFrontProcess) |
|
|
|
|
UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void UBApplicationController::checkUpdate(QString urlString) |
|
|
|
|
{ |
|
|
|
|
//connect(networkAccessManager, &QNetworkAccessManager::finished,
|
|
|
|
|
// this, &UBApplicationController::updateRequestFinished);
|
|
|
|
|
|
|
|
|
|
connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)), |
|
|
|
|
this, SLOT(updateRequestFinished(QNetworkReply*))); |
|
|
|
|
|
|
|
|
|
networkAccessManager->get(QNetworkRequest(QUrl(urlString))); |
|
|
|
|
#if defined(QT_NO_DEBUG) |
|
|
|
|
/*
|
|
|
|
|
if(mHttp) |
|
|
|
|
mHttp->deleteLater(); |
|
|
|
|
QUrl url(urlString); |
|
|
|
|
mHttp = new QHttpPart(url.host()); |
|
|
|
|
connect(mHttp, SIGNAL(requestFinished(int,bool)), this, SLOT(updateRequestFinished(int,bool))); |
|
|
|
|
connect(mHttp, SIGNAL(responseHeaderReceived(QHttpResponseHeader)), this, SLOT(updateHeaderReceived(QHttpResponseHeader))); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
mHttp->get(url.path()); |
|
|
|
|
|
|
|
|
|
*/ |
|
|
|
|
if(mHttpreply) |
|
|
|
|
mHttpreply->deleteLater(); |
|
|
|
|
QUrl url(urlString); |
|
|
|
|
mHttpreply = qnam.get(QNetworkRequest(url)); |
|
|
|
|
connect(mHttpreply, SIGNAL(requestFinished(int,bool)), this, SLOT(updateRequestFinished(int,bool))); |
|
|
|
|
connect(mHttpreply, SIGNAL(responseHeaderReceived(QHttpResponseHeader)), this, SLOT(updateHeaderReceived(QHttpResponseHeader))); |
|
|
|
|
// mHttpreply->setUrl(url.path());
|
|
|
|
|
//mHttp->get(url.path());
|
|
|
|
|
#else |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void UBApplicationController::updateRequestFinished(QNetworkReply * reply) |
|
|
|
|
{ |
|
|
|
|
if (reply->error()) { |
|
|
|
|
qWarning() << "HTTP Error"; |
|
|
|
|
return; |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
// Check if we are being redirected. If so, call checkUpdate again
|
|
|
|
|
QVariant redirect_target = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); |
|
|
|
|
|
|
|
|
|
if (!redirect_target.isNull()) { |
|
|
|
|
// The returned URL might be relative. resolved() creates an absolute url from it
|
|
|
|
|
QUrl redirect_url(reply->url().resolved(redirect_target.toUrl())); |
|
|
|
|
|
|
|
|
|
checkUpdate(redirect_url.toString()); |
|
|
|
|
return; |
|
|
|
|
/*
|
|
|
|
|
void UBApplicationController::updateHeaderReceived(QHttpResponseHeader header) |
|
|
|
|
{ |
|
|
|
|
if(header.statusCode() == 302 && header.hasKey("Location")){ |
|
|
|
|
mHttp->close(); |
|
|
|
|
checkUpdate(header.value("Location")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
void UBApplicationController::updateHeaderReceived(QNetworkRequest header ) |
|
|
|
|
{ |
|
|
|
|
//if(header.attribute(QNetworkRequest::HttpStatusCodeAttribute) == 302 && header.header(QNetworkRequest::LocationHeader)){
|
|
|
|
|
// mHttp->close();
|
|
|
|
|
mHttpreply->close(); |
|
|
|
|
//checkUpdate(header.value("Location"));
|
|
|
|
|
// }
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// No error and no redirect => we read the whole response
|
|
|
|
|
|
|
|
|
|
QString responseString = QString(reply->readAll()); |
|
|
|
|
void UBApplicationController::updateRequestFinished(int id, bool error) |
|
|
|
|
{ |
|
|
|
|
if (error){ |
|
|
|
|
qWarning() << "http command id" << id << "return an error"; |
|
|
|
|
} |
|
|
|
|
else{ |
|
|
|
|
/* QString responseString = QString(mHttp->readAll());
|
|
|
|
|
qDebug() << responseString; |
|
|
|
|
|
|
|
|
|
if (!responseString.isEmpty() && |
|
|
|
|
responseString.contains("version") && |
|
|
|
|
responseString.contains("url")) { |
|
|
|
|
|
|
|
|
|
reply->close(); |
|
|
|
|
reply->deleteLater(); |
|
|
|
|
|
|
|
|
|
if (!responseString.isEmpty() && responseString.contains("version") && responseString.contains("url")){ |
|
|
|
|
mHttp->close(); |
|
|
|
|
mHttp->deleteLater(); |
|
|
|
|
mHttp = 0; |
|
|
|
|
downloadJsonFinished(responseString); |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
QString responseString = QString(mHttpreply->readAll()); |
|
|
|
|
qDebug() << responseString; |
|
|
|
|
if (!responseString.isEmpty() && responseString.contains("version") && responseString.contains("url")){ |
|
|
|
|
mHttpreply->close(); |
|
|
|
|
mHttpreply->deleteLater(); |
|
|
|
|
mHttpreply = 0; |
|
|
|
|
downloadJsonFinished(responseString); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void UBApplicationController::downloadJsonFinished(QString currentJson) |
|
|
|
|