23 #include "wadseekersitestable.h"
25 #include <QHeaderView>
26 #include <QProgressBar>
27 #include <QPushButton>
30 WadseekerSitesTable::WadseekerSitesTable(QWidget *pParent)
33 d.bAlreadyShownOnce =
false;
36 void WadseekerSitesTable::addUrl(
const QUrl &url)
41 addSite(url.toString(), [
this, url]() {
42 this->requestUrlAbort(url.toString());
47 int WadseekerSitesTable::findRow(
const QString &text)
49 QList<QTableWidgetItem *> list = findItems(text, Qt::MatchFixedString);
51 return list.first()->row();
56 int WadseekerSitesTable::findRow(
const QUrl &url)
58 return findRow(url.toString());
62 void WadseekerSitesTable::removeUrl(
const QUrl &url)
64 int row = findRow(url);
69 void WadseekerSitesTable::addService(
const QString &service)
71 if (findRow(service) < 0)
73 addSite(service, [
this, service]() {
74 this->serviceAbortRequested(service);
79 void WadseekerSitesTable::addSite(
const QString &text, std::function<
void(
void)> onAbort)
81 setSortingEnabled(
false);
83 insertRow(rowCount());
84 int rowIndex = rowCount() - 1;
86 auto pBar =
new QProgressBar();
87 pBar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
88 pBar->setFixedWidth(PROGRESS_COLUMN_WIDTH);
89 pBar->setAlignment(Qt::AlignCenter);
93 QPushButton *abortButton =
new QPushButton(tr(
"Abort"));
94 connect(abortButton, &QPushButton::clicked, onAbort);
96 setItem(rowIndex, IDX_URL_COLUMN,
new QTableWidgetItem(text));
97 setCellWidget(rowIndex, IDX_PROGRESS_COLUMN, pBar);
98 setCellWidget(rowIndex, IDX_ABORT_COLUMN, abortButton);
100 setSortingEnabled(
true);
103 void WadseekerSitesTable::removeService(
const QString &service)
105 int row = findRow(service);
110 void WadseekerSitesTable::requestUrlAbort(
const QString &urlAsString)
112 emit urlAbortRequested(urlAsString);
115 void WadseekerSitesTable::setUrlProgress(
const QUrl &url, qint64 current, qint64 total)
117 int row = findRow(url);
121 auto pBar = (QProgressBar *) this->cellWidget(row, IDX_PROGRESS_COLUMN);
122 pBar->setMaximum(total);
123 pBar->setValue(current);
127 void WadseekerSitesTable::showEvent(QShowEvent *pEvent)
130 if (!d.bAlreadyShownOnce)
134 QHeaderView *pHeader = horizontalHeader();
137 pHeader->setSectionResizeMode(IDX_URL_COLUMN, QHeaderView::Stretch);
138 pHeader->setSectionResizeMode(IDX_PROGRESS_COLUMN, QHeaderView::Fixed);
140 pHeader->resizeSection(IDX_PROGRESS_COLUMN, PROGRESS_COLUMN_WIDTH);