@@ -65,7 +65,7 @@ MainWindow::MainWindow(CUploadEngineList* engineList, LogWindow* logWindow, QWid
6565 ui->treeView ->setColumnWidth (0 , 150 ); // Filename column
6666 ui->treeView ->setColumnWidth (1 , 150 ); // Status column
6767 ui->treeView ->setColumnWidth (2 , 150 ); // Progress column
68-
68+ ui-> treeView -> setSelectionBehavior (QAbstractItemView::SelectRows);
6969 connect (ui->treeView , &QTreeView::doubleClicked, this , &MainWindow::itemDoubleClicked);
7070 connect (ui->treeView , &QTreeView::customContextMenuRequested, this , &MainWindow::onCustomContextMenu);
7171
@@ -310,11 +310,33 @@ void MainWindow::onCustomContextMenu(const QPoint& point) {
310310 contextMenu->setDefaultAction (viewCodeAction);
311311
312312 if (internalItem->task ) {
313- auto uploadResult = internalItem->task ->uploadResult ();
314- QString url = QString::fromUtf8 (uploadResult->getDirectUrl ().c_str ());
315- if (url.isEmpty ()) {
316- url = QString::fromUtf8 (uploadResult->getDownloadUrl ().c_str ());
313+ auto * uploadResult = internalItem->task ->uploadResult ();
314+ QString directUrl = QString::fromStdString (uploadResult->getDirectUrl ());
315+ QString viewUrl = QString::fromStdString (uploadResult->getDownloadUrl ());
316+
317+ if (!directUrl.isEmpty ()) {
318+ QAction* copyDirectLinkAction = new QAction (tr (" Copy direct link" ), contextMenu);
319+ copyDirectLinkAction->setShortcut (QKeySequence (Qt::CTRL + Qt::Key_C));
320+ connect (copyDirectLinkAction, &QAction::triggered, [directUrl](bool checked) {
321+ QClipboard* clipboard = QApplication::clipboard ();
322+ clipboard->setText (directUrl);
323+ });
324+ contextMenu->addAction (copyDirectLinkAction);
325+ }
326+
327+ if (!viewUrl.isEmpty ()) {
328+ QAction* copyViewLinkAction = new QAction (tr (" Copy view link" ), contextMenu);
329+ if (directUrl.isEmpty ()) {
330+ copyViewLinkAction->setShortcut (QKeySequence (Qt::CTRL + Qt::Key_C));
331+ }
332+ connect (copyViewLinkAction, &QAction::triggered, [viewUrl](bool checked) {
333+ QClipboard* clipboard = QApplication::clipboard ();
334+ clipboard->setText (viewUrl);
335+ });
336+ contextMenu->addAction (copyViewLinkAction);
317337 }
338+ contextMenu->addSeparator ();
339+ QString url = directUrl.isEmpty () ? viewUrl : directUrl;
318340 if (!url.isEmpty ()) {
319341 QAction* viewInBrowser = new QAction (tr (" Open in browser" ), contextMenu);
320342 connect (viewInBrowser, &QAction::triggered, [url](bool checked)
0 commit comments