parent
d60738b507
commit
a082cc2c5a
@ -1,164 +0,0 @@ |
|||||||
/*
|
|
||||||
* 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 "UBCapturePublisher.h" |
|
||||||
|
|
||||||
#include "frameworks/UBStringUtils.h" |
|
||||||
|
|
||||||
#include "core/UBApplication.h" |
|
||||||
#include "core/UBSettings.h" |
|
||||||
|
|
||||||
#include "gui/UBMainWindow.h" |
|
||||||
|
|
||||||
#include "board/UBBoardController.h" |
|
||||||
|
|
||||||
#include "network/UBServerXMLHttpRequest.h" |
|
||||||
#include "network/UBNetworkAccessManager.h" |
|
||||||
|
|
||||||
#include "domain/UBGraphicsScene.h" |
|
||||||
|
|
||||||
#include "core/memcheck.h" |
|
||||||
|
|
||||||
UBCapturePublisher::UBCapturePublisher(const QPixmap& pixmap, QObject *parent) |
|
||||||
: UBAbstractPublisher(parent) |
|
||||||
, mPixmap(pixmap) |
|
||||||
{ |
|
||||||
connect(this, SIGNAL(authenticated(const QUuid&, const QString&)) |
|
||||||
, this, SLOT(postPixmap(const QUuid&, const QString&))); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
void UBCapturePublisher::publish() |
|
||||||
{ |
|
||||||
UBAbstractPublisher::authenticate(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
void UBCapturePublisher::postPixmap(const QUuid& tokenUuid, const QString& encryptedBase64Token) |
|
||||||
{ |
|
||||||
UBCapturePublishingDialog dialog(UBApplication::mainWindow); |
|
||||||
|
|
||||||
QString defaultEMail = UBSettings::settings()->uniboardWebEMail->get().toString(); |
|
||||||
dialog.email->setText(defaultEMail); |
|
||||||
|
|
||||||
QString defaultAuthor = UBSettings::settings()->uniboardWebAuthor->get().toString(); |
|
||||||
dialog.author->setText(defaultAuthor); |
|
||||||
|
|
||||||
if (dialog.exec() == QDialog::Accepted) |
|
||||||
{ |
|
||||||
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); |
|
||||||
UBApplication::showMessage(tr("Preparing capture for upload..."), true); |
|
||||||
|
|
||||||
QString title = dialog.title->text(); |
|
||||||
QString description = dialog.description->toPlainText(); |
|
||||||
QString email = dialog.email->text(); |
|
||||||
QString author = dialog.author->text(); |
|
||||||
|
|
||||||
QPixmap pix(mPixmap); |
|
||||||
|
|
||||||
if (mPixmap.hasAlpha()) |
|
||||||
{ |
|
||||||
if (UBApplication::boardController->activeScene()->isDarkBackground()) |
|
||||||
pix.fill(Qt::black); |
|
||||||
else |
|
||||||
pix.fill(Qt::white); |
|
||||||
|
|
||||||
QPainter p(&pix); |
|
||||||
p.drawPixmap(0, 0, mPixmap); |
|
||||||
} |
|
||||||
|
|
||||||
QByteArray bytes; |
|
||||||
QBuffer buffer(&bytes); |
|
||||||
buffer.open(QIODevice::WriteOnly); |
|
||||||
pix.save(&buffer, "JPG", 80); |
|
||||||
buffer.close(); |
|
||||||
|
|
||||||
QUrl publishingEndpoint = QUrl(UBSettings::settings()->capturesPublishingUrl); |
|
||||||
|
|
||||||
mPublishImageOnWebUploadRequest = new UBServerXMLHttpRequest(UBNetworkAccessManager::defaultAccessManager() |
|
||||||
, "application/octet-stream"); |
|
||||||
|
|
||||||
mPublishImageOnWebUploadRequest->setVerbose(true); |
|
||||||
|
|
||||||
connect(mPublishImageOnWebUploadRequest, SIGNAL(finished(bool, const QByteArray&)), this, SLOT(publishImageOnWebUploadResponse(bool, const QByteArray&))); |
|
||||||
|
|
||||||
mWebUploadPublishingUuid = QUuid::createUuid(); |
|
||||||
|
|
||||||
mPublishImageOnWebUploadRequest->addHeader("Publishing-UUID", UBStringUtils::toCanonicalUuid(mWebUploadPublishingUuid)); |
|
||||||
mPublishImageOnWebUploadRequest->addHeader("Document-Title", title); |
|
||||||
mPublishImageOnWebUploadRequest->addHeader("Document-Author", author); |
|
||||||
mPublishImageOnWebUploadRequest->addHeader("Document-AuthorEMail", email); |
|
||||||
mPublishImageOnWebUploadRequest->addHeader("Document-Description", description); |
|
||||||
mPublishImageOnWebUploadRequest->addHeader("Deletion-Token", UBStringUtils::toCanonicalUuid(QUuid::createUuid())); |
|
||||||
mPublishImageOnWebUploadRequest->addHeader("Token-UUID", UBStringUtils::toCanonicalUuid(tokenUuid)); |
|
||||||
mPublishImageOnWebUploadRequest->addHeader("Token-Encrypted", encryptedBase64Token); |
|
||||||
|
|
||||||
mPublishImageOnWebUploadRequest->post(publishingEndpoint, bytes); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
UBApplication::showMessage(tr("Publication canceled ...")); |
|
||||||
QApplication::restoreOverrideCursor(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
void UBCapturePublisher::publishImageOnWebUploadResponse(bool success, const QByteArray& payload) |
|
||||||
{ |
|
||||||
QUrl url(QString::fromUtf8(payload)); |
|
||||||
|
|
||||||
if (success && url.isValid()) |
|
||||||
{ |
|
||||||
UBApplication::showMessage(tr("Capture Published to the Web.")); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
UBApplication::showMessage(tr("Error Publishing Capture to the Web: %1").arg(QString::fromUtf8(payload))); |
|
||||||
} |
|
||||||
|
|
||||||
if (mPublishImageOnWebUploadRequest) |
|
||||||
{ |
|
||||||
mPublishImageOnWebUploadRequest->deleteLater(); |
|
||||||
mPublishImageOnWebUploadRequest = 0; |
|
||||||
} |
|
||||||
|
|
||||||
QApplication::restoreOverrideCursor(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
UBCapturePublishingDialog::UBCapturePublishingDialog(QWidget *parent) |
|
||||||
: QDialog(parent) |
|
||||||
{ |
|
||||||
Ui::capturePublishingDialog::setupUi(this); |
|
||||||
|
|
||||||
connect(dialogButtons, SIGNAL(accepted()), this, SLOT(accept())); |
|
||||||
connect(dialogButtons, SIGNAL(rejected()), this, SLOT(reject())); |
|
||||||
|
|
||||||
connect(title, SIGNAL(textChanged(const QString&)), this, SLOT(updateUIState(const QString&))); |
|
||||||
connect(email, SIGNAL(textChanged(const QString&)), this, SLOT(updateUIState(const QString&))); |
|
||||||
|
|
||||||
dialogButtons->button(QDialogButtonBox::Ok)->setEnabled(false); |
|
||||||
dialogButtons->button(QDialogButtonBox::Ok)->setText(tr("Publish")); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
void UBCapturePublishingDialog::updateUIState(const QString& string) |
|
||||||
{ |
|
||||||
Q_UNUSED(string); |
|
||||||
|
|
||||||
bool ok = title->text().length() > 0 |
|
||||||
&& email->text().length() > 0; |
|
||||||
|
|
||||||
dialogButtons->button(QDialogButtonBox::Ok)->setEnabled(ok); |
|
||||||
} |
|
@ -1,61 +0,0 @@ |
|||||||
/*
|
|
||||||
* 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/>.
|
|
||||||
*/ |
|
||||||
#ifndef UBCAPTUREPUBLISHER_H |
|
||||||
#define UBCAPTUREPUBLISHER_H |
|
||||||
|
|
||||||
#include <QtGui> |
|
||||||
|
|
||||||
#include "ui_capturePublishing.h" |
|
||||||
|
|
||||||
#include "UBAbstractPublisher.h" |
|
||||||
|
|
||||||
class UBServerXMLHttpRequest; |
|
||||||
|
|
||||||
class UBCapturePublisher : public UBAbstractPublisher |
|
||||||
{ |
|
||||||
Q_OBJECT |
|
||||||
|
|
||||||
public: |
|
||||||
explicit UBCapturePublisher(const QPixmap& pixmap, QObject *parent = 0); |
|
||||||
|
|
||||||
void publish(); |
|
||||||
|
|
||||||
private slots: |
|
||||||
|
|
||||||
void publishImageOnWebUploadResponse(bool success, const QByteArray& payload); |
|
||||||
void postPixmap(const QUuid& tokenUuid, const QString& encryptedBase64Token); |
|
||||||
|
|
||||||
private: |
|
||||||
|
|
||||||
UBServerXMLHttpRequest *mPublishImageOnWebUploadRequest; |
|
||||||
QUuid mWebUploadPublishingUuid; |
|
||||||
QPixmap mPixmap; |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
class UBCapturePublishingDialog : public QDialog, public Ui::capturePublishingDialog |
|
||||||
{ |
|
||||||
Q_OBJECT; |
|
||||||
|
|
||||||
public: |
|
||||||
UBCapturePublishingDialog(QWidget *parent = 0); |
|
||||||
~UBCapturePublishingDialog(){} |
|
||||||
|
|
||||||
private slots: |
|
||||||
void updateUIState(const QString& string); |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
#endif // UBCAPTUREPUBLISHER_H
|
|
Loading…
Reference in new issue