Browse Source

Add more copy field actions to search widget

Closes #10250.
adaptive-webui-19844
Chocobo1 6 years ago
parent
commit
4f5302adf8
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 52
      src/gui/search/searchjobwidget.cpp
  2. 11
      src/gui/search/searchjobwidget.h

52
src/gui/search/searchjobwidget.cpp

@ -217,7 +217,7 @@ void SearchJobWidget::downloadTorrents()
downloadTorrent(rowIndex); downloadTorrent(rowIndex);
} }
void SearchJobWidget::openTorrentPages() void SearchJobWidget::openTorrentPages() const
{ {
const QModelIndexList rows {m_ui->resultsBrowser->selectionModel()->selectedRows()}; const QModelIndexList rows {m_ui->resultsBrowser->selectionModel()->selectedRows()};
for (const QModelIndex &rowIndex : rows) { for (const QModelIndex &rowIndex : rows) {
@ -228,21 +228,35 @@ void SearchJobWidget::openTorrentPages()
} }
} }
void SearchJobWidget::copyTorrentURLs() void SearchJobWidget::copyTorrentURLs() const
{
copyField(SearchSortModel::DESC_LINK);
}
void SearchJobWidget::copyTorrentDownloadLinks() const
{
copyField(SearchSortModel::DL_LINK);
}
void SearchJobWidget::copyTorrentNames() const
{
copyField(SearchSortModel::NAME);
}
void SearchJobWidget::copyField(const int column) const
{ {
const QModelIndexList rows {m_ui->resultsBrowser->selectionModel()->selectedRows()}; const QModelIndexList rows {m_ui->resultsBrowser->selectionModel()->selectedRows()};
QStringList urls; QStringList list;
for (const QModelIndex &rowIndex : rows) { for (const QModelIndex &rowIndex : rows) {
const QString descrLink = m_proxyModel->data( const QString field = m_proxyModel->data(
m_proxyModel->index(rowIndex.row(), SearchSortModel::DESC_LINK)).toString(); m_proxyModel->index(rowIndex.row(), column)).toString();
if (!descrLink.isEmpty()) if (!field.isEmpty())
urls << descrLink; list << field;
} }
if (!urls.empty()) { if (!list.empty())
QClipboard *clipboard = QApplication::clipboard(); QApplication::clipboard()->setText(list.join('\n'));
clipboard->setText(urls.join('\n'));
}
} }
void SearchJobWidget::setStatus(Status value) void SearchJobWidget::setStatus(Status value)
@ -385,8 +399,20 @@ void SearchJobWidget::contextMenuEvent(QContextMenuEvent *event)
GuiIconProvider::instance()->getIcon("application-x-mswinurl"), tr("Open description page")); GuiIconProvider::instance()->getIcon("application-x-mswinurl"), tr("Open description page"));
connect(openDescriptionAction, &QAction::triggered, this, &SearchJobWidget::openTorrentPages); connect(openDescriptionAction, &QAction::triggered, this, &SearchJobWidget::openTorrentPages);
const QAction *copyDescriptionAction = menu->addAction( QMenu *copySubMenu = menu->addMenu(
GuiIconProvider::instance()->getIcon("edit-copy"), tr("Copy description page URL")); GuiIconProvider::instance()->getIcon("edit-copy"), tr("Copy"));
const QAction *copyNamesAction = copySubMenu->addAction(
GuiIconProvider::instance()->getIcon("edit-copy"), tr("Name"));
connect(copyNamesAction, &QAction::triggered, this, &SearchJobWidget::copyTorrentNames);
const QAction *copyDownloadLinkAction = copySubMenu->addAction(
GuiIconProvider::instance()->getIcon("edit-copy"), tr("Download link"));
connect(copyDownloadLinkAction, &QAction::triggered
, this, &SearchJobWidget::copyTorrentDownloadLinks);
const QAction *copyDescriptionAction = copySubMenu->addAction(
GuiIconProvider::instance()->getIcon("edit-copy"), tr("Description page URL"));
connect(copyDescriptionAction, &QAction::triggered, this, &SearchJobWidget::copyTorrentURLs); connect(copyDescriptionAction, &QAction::triggered, this, &SearchJobWidget::copyTorrentURLs);
menu->popup(event->globalPos()); menu->popup(event->globalPos());

11
src/gui/search/searchjobwidget.h

@ -82,10 +82,6 @@ public:
void cancelSearch(); void cancelSearch();
void downloadTorrents();
void openTorrentPages();
void copyTorrentURLs();
signals: signals:
void resultsCountUpdated(); void resultsCountUpdated();
void statusChanged(); void statusChanged();
@ -114,6 +110,13 @@ private:
QHeaderView *header() const; QHeaderView *header() const;
void setRowColor(int row, const QColor &color); void setRowColor(int row, const QColor &color);
void downloadTorrents();
void openTorrentPages() const;
void copyTorrentURLs() const;
void copyTorrentDownloadLinks() const;
void copyTorrentNames() const;
void copyField(int column) const;
static QString statusText(Status st); static QString statusText(Status st);
static CachedSettingValue<NameFilteringMode> &nameFilteringModeSetting(); static CachedSettingValue<NameFilteringMode> &nameFilteringModeSetting();

Loading…
Cancel
Save