Sharedialog: retrive thumbnail from server for shares

Initial patch for #2726. Request a thumbnail from the server if files are to be
shared.
This commit is contained in:
Roeland Jago Douma 2015-01-21 13:51:16 +01:00 committed by Roeland Jago Douma
parent 72ec7ccde2
commit d7f5e89a1d
2 changed files with 58 additions and 0 deletions

View File

@ -208,6 +208,13 @@ void ShareDialog::getShares()
OcsShareJob *job = new OcsShareJob("GET", url, _account, this);
connect(job, SIGNAL(jobFinished(QString)), this, SLOT(slotSharesFetched(QString)));
job->start();
if (QFileInfo(_localPath).isFile()) {
QUrl url2 = Account::concatUrlPath(AccountManager::instance()->account()->url(), QString("index.php/apps/files/api/v1/thumbnail/150/150/%1").arg(_sharePath));
ThumbnailJob *job2 = new ThumbnailJob(url2, AccountManager::instance()->account(), this);
connect(job2, SIGNAL(jobFinished(int, QByteArray)), SLOT(slotThumbnailFetched(int, QByteArray)));
job2->start();
}
}
void ShareDialog::slotSharesFetched(const QString &reply)
@ -504,6 +511,18 @@ void ShareDialog::slotNextSyncFinished( const SyncResult& result )
}
#endif
void ShareDialog::slotThumbnailFetched(const int &statusCode, const QByteArray &reply)
{
if (statusCode != 200) {
qDebug() << Q_FUNC_INFO << "Status code: " << statusCode;
return;
}
QPixmap p;
p.loadFromData(reply, "PNG");
_ui->label_icon->setPixmap(p);
}
OcsShareJob::OcsShareJob(const QByteArray &verb, const QUrl &url, AccountPtr account, QObject* parent)
: AbstractNetworkJob(account, "", parent),
_verb(verb),
@ -546,4 +565,25 @@ bool OcsShareJob::finished()
return true;
}
ThumbnailJob::ThumbnailJob(const QUrl &url, AccountPtr account, QObject* parent)
: AbstractNetworkJob(account, "", parent),
_url(url)
{
setIgnoreCredentialFailure(true);
}
void ThumbnailJob::start()
{
qDebug() << Q_FUNC_INFO;
setReply(getRequest(_url));
setupConnections(reply());
AbstractNetworkJob::start();
}
bool ThumbnailJob::finished()
{
emit jobFinished(reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), reply()->readAll());
return true;
}
}

View File

@ -41,6 +41,23 @@ private:
QList<QPair<QString, QString> > _postParams;
};
class ThumbnailJob : public AbstractNetworkJob {
Q_OBJECT
public:
explicit ThumbnailJob(const QUrl& url, AccountPtr account, QObject* parent = 0);
public slots:
void start() Q_DECL_OVERRIDE;
signals:
void jobFinished(int statusCode, QByteArray reply);
private slots:
virtual bool finished() Q_DECL_OVERRIDE;
private:
QUrl _url;
};
namespace Ui {
class ShareDialog;
}
@ -71,6 +88,7 @@ private slots:
void slotCheckBoxExpireClicked();
void slotPasswordReturnPressed();
void slotPushButtonCopyLinkPressed();
void slotThumbnailFetched(const int &statusCode, const QByteArray &reply);
private:
void displayError(int code);
void displayInfo( const QString& msg );