Skip to content

Commit 562dc0e

Browse files
committed
feat: allow user to set screen privacy on upload
1 parent eeb81cf commit 562dc0e

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

resources/icon.png

-48.1 KB
Loading

src/screenshotdisplay.cpp

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <QShortcut>
1818
#include <QToolTip>
1919
#include <QCursor>
20+
#include <QCheckBox>
2021
#include <QWheelEvent>
2122

2223
ScreenshotDisplay::ScreenshotDisplay(const QPixmap& pixmap, QWidget* parent, ConfigManager* configManager)
@@ -429,22 +430,46 @@ void ScreenshotDisplay::onPublishRequested() {
429430
qDebug() << "Network Error:" << reply->errorString();
430431
});
431432

432-
connect(reply, &QNetworkReply::finished, this, [reply, file, tempFilePath, this, progressDialog, screenGeometry]() {
433+
connect(reply, &QNetworkReply::finished, this, [reply, file, tempFilePath, this, progressDialog, screenGeometry, loginInfo]() {
433434
progressDialog->close();
434435

435436
if (reply->error() == QNetworkReply::NoError) {
436437
QByteArray response = reply->readAll();
437438
QJsonDocument jsonResponse = QJsonDocument::fromJson(response);
438439
QJsonObject jsonObject = jsonResponse.object();
439440
QString url = jsonObject["url"].toString();
441+
QString id = QString::number(jsonObject["id"].toInt());
440442
QString link = SCREEN_ME_HOST + "/" + url;
441443

442444
QMessageBox msgBox(this);
443445
msgBox.setWindowTitle("Screenshot Uploaded");
444-
msgBox.setText("Screenshot uploaded successfully! Link: " + link);
446+
msgBox.setText("Screenshot uploaded successfully ! Link: " + link);
445447
QPushButton* copyButton = msgBox.addButton(tr("Copy"), QMessageBox::ActionRole);
446448
msgBox.addButton(QMessageBox::Ok);
447449

450+
QCheckBox* privateCheckBox = nullptr;
451+
if (!loginInfo["token"].toString().isEmpty()) {
452+
privateCheckBox = new QCheckBox("Private", &msgBox);
453+
msgBox.setCheckBox(privateCheckBox);
454+
455+
connect(privateCheckBox, &QCheckBox::toggled, this, [id, loginInfo](bool checked) {
456+
QNetworkAccessManager* manager = new QNetworkAccessManager();
457+
QUrl url(SCREEN_ME_HOST + "/api/screenshot/" + id);
458+
QNetworkRequest request(url);
459+
460+
request.setRawHeader("Authorization", "Bearer " + loginInfo["token"].toString().toUtf8());
461+
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
462+
463+
QJsonObject json;
464+
json["privacy"] = checked ? "private" : "public";
465+
QJsonDocument doc(json);
466+
QByteArray data = doc.toJson();
467+
468+
QNetworkReply* reply = manager->sendCustomRequest(request, "PATCH", data);
469+
connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater);
470+
});
471+
}
472+
448473
connect(copyButton, &QPushButton::clicked, [link]() {
449474
QClipboard* clipboard = QGuiApplication::clipboard();
450475
clipboard->setText(link);
@@ -475,9 +500,9 @@ void ScreenshotDisplay::onPublishRequested() {
475500
emit screenshotClosed();
476501
});
477502
}
478-
479503
}
480504

505+
481506
void ScreenshotDisplay::onCloseRequested() {
482507
close();
483508
}

0 commit comments

Comments
 (0)