Skip to content

Commit

Permalink
feat: add context action to convert between downloads/monitors (fix #…
Browse files Browse the repository at this point in the history
  • Loading branch information
Bionus committed Feb 4, 2023
1 parent a6e1439 commit 207dffa
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/gui/src/main-window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,7 @@ void MainWindow::init(const QStringList &args, const QMap<QString, QString> &par
m_downloadsTab = new DownloadsTab(m_profile, m_downloadQueue, this);
ui->tabWidget->insertTab(m_tabs.size(), m_downloadsTab, m_downloadsTab->windowTitle());
connect(m_downloadsTab, &QWidget::windowTitleChanged, this, &MainWindow::tabTitleChanged);
connect(m_monitorsTab, &MonitorsTab::batchAddGroup, m_downloadsTab, &DownloadsTab::batchAddGroup);
ui->tabWidget->setCurrentIndex(0);

// "File" actions to load/save downloads list
Expand Down
13 changes: 13 additions & 0 deletions src/gui/src/tabs/downloads-tab.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#include "main-window.h"
#include "models/page.h"
#include "models/profile.h"
#include "monitoring/monitor-manager.h"
#include "progress-bar-delegate.h"


Expand Down Expand Up @@ -118,6 +119,7 @@ void DownloadsTab::batchDownloadsTableContextMenu(const QPoint &pos)

auto *menu = new QMenu(this);
menu->addAction(QIcon(":/images/icons/save.png"), tr("Download"), this, SLOT(batchSel()));
menu->addAction(QIcon(":/images/icons/copy.png"), tr("Copy to monitors"), [this]() { batchConvert(); });
menu->addSeparator();
menu->addAction(QIcon(":/images/icons/arrow-top.png"), tr("Move to top"), this, SLOT(batchMoveToTop()));
menu->addAction(QIcon(":/images/icons/arrow-up.png"), tr("Move up"), this, SLOT(batchMoveUp()));
Expand Down Expand Up @@ -444,6 +446,17 @@ bool DownloadsTab::isDownloading() const
return m_getAll;
}

void DownloadsTab::batchConvert()
{
QSet<int> rows = selectedRows(ui->tableBatchGroups);
for (const int row : rows) {
const DownloadQueryGroup &group = m_groupBatchs[row];
const bool notify = m_settings->value("Monitoring/enableTray", false).toBool();
Monitor monitor({ group.site }, 24 * 60 * 60, QDateTime::currentDateTimeUtc(), true, QString(), QString(), 0, true, group.query, group.postFiltering, notify);
m_profile->monitorManager()->add(monitor);
}
}


/* Batch download */
void DownloadsTab::batchSel()
Expand Down
1 change: 1 addition & 0 deletions src/gui/src/tabs/downloads-tab.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ class DownloadsTab : public QWidget
QIcon &getIcon(const QString &path);
bool isDownloading() const;
void batchDownloadsTableContextMenu(const QPoint &pos);
void batchConvert();

protected:
void changeEvent(QEvent *event) override;
Expand Down
18 changes: 18 additions & 0 deletions src/gui/src/tabs/monitors-tab.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <QShortcut>
#include <ui_monitors-tab.h>
#include <algorithm>
#include "downloader/download-query-group.h"
#include "logger.h"
#include "main-window.h"
#include "models/profile.h"
Expand Down Expand Up @@ -72,6 +73,8 @@ void MonitorsTab::monitorsTableContextMenu(const QPoint &pos)

auto *menu = new QMenu(this);
menu->addAction(QIcon(":/images/icons/edit.png"), tr("Edit"), [this, monitor]() { (new MonitorWindow(m_profile, monitor, this))->show(); });
menu->addAction(QIcon(":/images/icons/copy.png"), tr("Copy to downloads"), [this]() { convertSelected(); });
menu->addSeparator();
menu->addAction(QIcon(":/images/icons/remove.png"), tr("Remove"), [this]() { removeSelected(); });
menu->exec(QCursor::pos());
}
Expand All @@ -93,6 +96,21 @@ void MonitorsTab::removeSelected()
}
}

void MonitorsTab::convertSelected()
{
QSet<int> rows;
for (const QModelIndex &index : ui->tableMonitors->selectionModel()->selection().indexes()) {
rows.insert(index.row());
}

for (const int row : rows) {
const Monitor &monitor = m_monitorManager->monitors()[row];
for (Site *site : monitor.sites()) {
emit batchAddGroup(DownloadQueryGroup(m_settings, monitor.query(), 1, 200, -1, monitor.postFilters(), site));
}
}
}

void MonitorsTab::toggleMonitoring()
{
bool running = m_monitoringCenter->isRunning();
Expand Down
5 changes: 5 additions & 0 deletions src/gui/src/tabs/monitors-tab.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ namespace Ui
}


class DownloadQueryGroup;
class MainWindow;
class Monitor;
class MonitorManager;
Expand Down Expand Up @@ -41,6 +42,10 @@ class MonitorsTab : public QWidget
protected slots:
void monitorsTableContextMenu(const QPoint &pos);
void removeSelected();
void convertSelected();

signals:
void batchAddGroup(const DownloadQueryGroup &);

private:
Profile *m_profile;
Expand Down

0 comments on commit 207dffa

Please sign in to comment.