diff --git a/phoenixresources.qrc b/phoenixresources.qrc
index 4abbaaeeb..3893dedda 100644
--- a/phoenixresources.qrc
+++ b/phoenixresources.qrc
@@ -374,5 +374,6 @@
resources/images/icons/toolbarSaveCodeDisabled_icon.png
resources/images/icons/toolbarSaveCodeEnabled_icon.png
resources/images/icons/toolbarSaveCodePressed_icon.png
+ resources/images/icons/aisler_donut-cloud_logo_icon.png
diff --git a/resources/images/icons/aisler_donut-cloud_logo_icon.png b/resources/images/icons/aisler_donut-cloud_logo_icon.png
new file mode 100644
index 000000000..2aa5d79a4
Binary files /dev/null and b/resources/images/icons/aisler_donut-cloud_logo_icon.png differ
diff --git a/src/dialogs/fabuploadprogress.cpp b/src/dialogs/fabuploadprogress.cpp
index bfe9ecf45..43cb457a9 100644
--- a/src/dialogs/fabuploadprogress.cpp
+++ b/src/dialogs/fabuploadprogress.cpp
@@ -11,6 +11,7 @@
#include
#include
#include
+#include
#include
@@ -50,6 +51,12 @@ void FabUploadProgress::init(QNetworkAccessManager *manager, QString filename)
void FabUploadProgress::doUpload()
{
+ QSettings settings;
+ QString upload_url_str = settings.value("aisler/" + mFilepath, "").toString();
+ if (!upload_url_str.isEmpty()) {
+ uploadMultipart(QUrl(upload_url_str), mFilepath);
+ return;
+ }
QUrl new_url("https://fritzing.org/fab/upload");
QNetworkRequest request(new_url);
QNetworkReply *reply = mManager->get(request);
@@ -69,20 +76,22 @@ void FabUploadProgress::onRequestUploadFinished()
int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
if(statusCode == 301 || statusCode==302) {
QUrl redirectUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
- qDebug() << redirectUrl.toString();
+// qDebug() << redirectUrl.toString();
QNetworkRequest request(redirectUrl);
QNetworkReply *r = mManager->get(request);
connect(r, SIGNAL(finished()), this, SLOT(onRequestUploadFinished()));
connect(r, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onError(QNetworkReply::NetworkError)));
} else {
- qDebug() << statusCode << Qt::endl;
+// qDebug() << statusCode << Qt::endl;
auto d = reply->readAll();
- qDebug() << d << Qt::endl << Qt::flush;
+// qDebug() << d << Qt::endl << Qt::flush;
auto j = NetworkHelper::string_to_hash(d);
- qDebug() << j["upload_url"].toString() << Qt::endl << Qt::flush;
+// qDebug() << j["upload_url"].toString() << Qt::endl << Qt::flush;
QUrl upload_url(QUrl::fromUserInput(j["upload_url"].toString()));
QUrl project_url(j["project_url"].toString());
uploadMultipart(upload_url, mFilepath);
+ QSettings settings;
+ settings.setValue("aisler/" + mFilepath, j["upload_url"].toString());
}
} else {
httpError(reply);
@@ -93,14 +102,14 @@ void FabUploadProgress::onRequestUploadFinished()
void FabUploadProgress::uploadMultipart(const QUrl &url, const QString &file_path)
{
- qDebug() << url.toString() << Qt::endl << Qt::flush;
+// qDebug() << url.toString() << Qt::endl << Qt::flush;
QHttpMultiPart *httpMultiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
QFile *file = new QFile(file_path);
QHttpPart imagePart;
imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"upload[file]\"; filename=\"" + QFileInfo(*file).fileName() + "\""));
imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/octet-stream"));
- qDebug() << httpMultiPart->boundary();
+// qDebug() << httpMultiPart->boundary();
file->open(QIODevice::ReadOnly);
imagePart.setBodyDevice(file);
@@ -117,7 +126,7 @@ void FabUploadProgress::uploadMultipart(const QUrl &url, const QString &file_pat
connect(reply, SIGNAL(uploadProgress(qint64, qint64)), this, SLOT (uploadProgress(qint64, qint64)));
auto r = reply->request();
- qDebug() << NetworkHelper::debugRequest(r);
+// qDebug() << NetworkHelper::debugRequest(r);
}
void FabUploadProgress::uploadProgress(qint64 bytesSent, qint64 bytesTotal) {
@@ -159,9 +168,9 @@ void FabUploadProgress::uploadDone() {
qDebug() << "----------Finished--------------" << Qt::endl;
if (reply->error() == QNetworkReply::NoError) {
auto d = reply->readAll();
- qDebug() << d << Qt::endl << Qt::flush;
+// qDebug() << d << Qt::endl << Qt::flush;
auto j = NetworkHelper::string_to_hash(d);
- qDebug() << j["upload_url"].toString() << Qt::endl << Qt::flush;
+// qDebug() << j["upload_url"].toString() << Qt::endl << Qt::flush;
QUrl callback_url(QUrl::fromUserInput(j["callback"].toString()));
mRedirect_url = j["redirect"].toString();
mActivity = 0;
@@ -174,7 +183,7 @@ void FabUploadProgress::uploadDone() {
void FabUploadProgress::checkProcessingStatus(QUrl url)
{
- qDebug() << url.toString() << Qt::endl << Qt::flush;
+// qDebug() << url.toString() << Qt::endl << Qt::flush;
QNetworkRequest request(url);
QNetworkReply *reply = mManager->get(request);
connect(reply, SIGNAL(finished()), this, SLOT(updateProcessingStatus()));
@@ -187,13 +196,13 @@ void FabUploadProgress::updateProcessingStatus()
if (reply->error() == QNetworkReply::NoError) {
auto d = reply->readAll();
- qDebug() << d << Qt::endl << Qt::flush;
+// qDebug() << d << Qt::endl << Qt::flush;
auto j = NetworkHelper::string_to_hash(d);
// Produce a funny number which is growing most of the time,
// and somewhat related to what is really happening. It should
// change on every signal, so if it stops, there is a problem.
int progress = j["progress"].toInt();
- qDebug() << progress;
+// qDebug() << progress;
QString message(j["message"].toString());
if (progress < 0) {
apiError(message);
diff --git a/src/sketch/welcomeview.cpp b/src/sketch/welcomeview.cpp
index 90c4c0604..f388d0294 100644
--- a/src/sketch/welcomeview.cpp
+++ b/src/sketch/welcomeview.cpp
@@ -377,12 +377,22 @@ QWidget * WelcomeView::initRecent() {
frameLayout->addWidget(titleFrame);
m_recentListWidget = new QListWidget();
+ m_recentLinksListWidget = new QListWidget();
m_recentListWidget->setObjectName("recentList");
+ m_recentLinksListWidget->setObjectName("recentList");
m_recentListWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ m_recentLinksListWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
connect(m_recentListWidget, SIGNAL(itemClicked (QListWidgetItem *)), this, SLOT(recentItemClicked(QListWidgetItem *)));
+ connect(m_recentLinksListWidget, SIGNAL(itemClicked (QListWidgetItem *)), this, SLOT(blogItemClicked(QListWidgetItem *)));
- frameLayout->addWidget(m_recentListWidget);
+ QFrame * listsFrame = new QFrame;
+ QHBoxLayout * listsFrameLayout = new QHBoxLayout;
+ zeroMargin(listsFrameLayout);
+ listsFrameLayout->addWidget(m_recentListWidget);
+ listsFrameLayout->addWidget(m_recentLinksListWidget);
+ listsFrame ->setLayout(listsFrameLayout);
+ frameLayout->addWidget(listsFrame);
QStringList names;
names << "recentSpace" << "recentNewSketch" << "recentOpenSketch";
@@ -653,23 +663,39 @@ void WelcomeView::showEvent(QShowEvent * event) {
void WelcomeView::updateRecent() {
if (!m_recentListWidget) return;
+ if (!m_recentLinksListWidget) return;
QSettings settings;
auto files = settings.value("recentFileList").toStringList();
m_recentListWidget->clear();
+ m_recentLinksListWidget->clear();
auto gotOne = false;
QIcon icon(":/resources/images/icons/WS-fzz-icon.png");
+ QIcon icon2(":/resources/images/icons/aisler_donut-cloud_logo_icon.png");
+
for (int i = 0; i < files.size(); ++i) {
QFileInfo finfo(files[i]);
if (!finfo.exists()) continue;
gotOne = true;
auto item = new QListWidgetItem(icon, finfo.fileName());
+ QListWidgetItem * itemLinks = nullptr;
item->setData(Qt::UserRole, finfo.absoluteFilePath());
item->setToolTip(finfo.absoluteFilePath());
+ QString link = settings.value("aisler/" + finfo.absoluteFilePath(), "").toString();
+ if (!link.isEmpty()) {
+ int pos = link.lastIndexOf(QChar('/'));
+ link = link.left(pos);
+ itemLinks = new QListWidgetItem(icon2, "Fritzing Fab");
+ itemLinks->setData(RefRole, link);
+ itemLinks->setToolTip(link);
+ } else {
+ itemLinks = new QListWidgetItem(QString(""));
+ }
m_recentListWidget->addItem(item);
+ m_recentLinksListWidget->addItem(itemLinks);
}
if (!gotOne) {
diff --git a/src/sketch/welcomeview.h b/src/sketch/welcomeview.h
index 4062b2819..2c52e341d 100644
--- a/src/sketch/welcomeview.h
+++ b/src/sketch/welcomeview.h
@@ -153,6 +153,7 @@ protected slots:
QWidget * m_projectsUberFrame = nullptr;
QLabel * m_tip = nullptr;
QListWidget * m_recentListWidget = nullptr;
+ QListWidget * m_recentLinksListWidget = nullptr;
QWidget * m_fabUberFrame = nullptr;
QWidget * m_shopUberFrame = nullptr;
QLabel * m_projectsLabel = nullptr;