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 setSortingEnabled(
false);
43 insertRow(rowCount());
44 int rowIndex = rowCount() - 1;
46 auto pBar =
new QProgressBar();
47 pBar->setAlignment(Qt::AlignCenter);
51 QPushButton *abortButton =
new QPushButton(tr(
"Abort"));
53 connect (abortButton, &QPushButton::clicked, [
this, url]()
55 this->requestUrlAbort(url.toString());
58 setItem(rowIndex, IDX_URL_COLUMN,
new QTableWidgetItem(url.toString()));
59 setCellWidget(rowIndex, IDX_PROGRESS_COLUMN, pBar);
60 setCellWidget(rowIndex, IDX_ABORT_COLUMN, abortButton);
62 setSortingEnabled(
true);
66 int WadseekerSitesTable::findRow(
const QString &text)
68 QList<QTableWidgetItem *> list = findItems(text, Qt::MatchFixedString);
70 return list.first()->row();
75 int WadseekerSitesTable::findRow(
const QUrl &url)
77 return findRow(url.toString());
81 void WadseekerSitesTable::removeUrl(
const QUrl &url)
83 int row = findRow(url);
88 void WadseekerSitesTable::addService(
const QString &service)
90 if (findRow(service) < 0)
92 setSortingEnabled(
false);
94 insertRow(rowCount());
95 int rowIndex = rowCount() - 1;
97 auto pBar =
new QProgressBar();
98 pBar->setAlignment(Qt::AlignCenter);
102 QPushButton *abortButton =
new QPushButton(tr(
"Abort"));
104 connect (abortButton, &QPushButton::clicked, [
this, service]()
106 this->serviceAbortRequested(service);
109 setItem(rowIndex, IDX_URL_COLUMN,
new QTableWidgetItem(service));
110 setCellWidget(rowIndex, IDX_PROGRESS_COLUMN, pBar);
111 setCellWidget(rowIndex, IDX_ABORT_COLUMN, abortButton);
113 setSortingEnabled(
true);
117 void WadseekerSitesTable::removeService(
const QString &service)
119 int row = findRow(service);
124 void WadseekerSitesTable::requestUrlAbort(
const QString &urlAsString)
126 emit urlAbortRequested(urlAsString);
129 void WadseekerSitesTable::setUrlProgress(
const QUrl &url, qint64 current, qint64 total)
131 int row = findRow(url);
135 auto pBar = (QProgressBar *) this->cellWidget(row, IDX_PROGRESS_COLUMN);
136 pBar->setMaximum(total);
137 pBar->setValue(current);
141 void WadseekerSitesTable::showEvent(QShowEvent *pEvent)
144 if (!d.bAlreadyShownOnce)
148 QHeaderView *pHeader = horizontalHeader();
151 pHeader->setSectionResizeMode(IDX_URL_COLUMN, QHeaderView::Stretch);
153 pHeader->resizeSection(IDX_PROGRESS_COLUMN, 85);