mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2026-01-03 14:12:30 -06:00
Clean up code related to show/hide columns
This commit is contained in:
@@ -116,11 +116,13 @@ SearchJobWidget::SearchJobWidget(SearchHandler *searchHandler, QWidget *parent)
|
||||
// its size is 0, because explicitly 'showing' the column isn't enough
|
||||
// in the above scenario.
|
||||
for (int i = 0; i < SearchSortModel::DL_LINK; ++i)
|
||||
{
|
||||
if ((m_ui->resultsBrowser->columnWidth(i) <= 0) && !m_ui->resultsBrowser->isColumnHidden(i))
|
||||
m_ui->resultsBrowser->resizeColumnToContents(i);
|
||||
}
|
||||
|
||||
header()->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
connect(header(), &QWidget::customContextMenuRequested, this, &SearchJobWidget::displayToggleColumnsMenu);
|
||||
connect(header(), &QWidget::customContextMenuRequested, this, &SearchJobWidget::displayColumnHeaderMenu);
|
||||
connect(header(), &QHeaderView::sectionResized, this, &SearchJobWidget::saveSettings);
|
||||
connect(header(), &QHeaderView::sectionMoved, this, &SearchJobWidget::saveSettings);
|
||||
connect(header(), &QHeaderView::sortIndicatorChanged, this, &SearchJobWidget::saveSettings);
|
||||
@@ -450,7 +452,19 @@ void SearchJobWidget::saveSettings() const
|
||||
Preferences::instance()->setSearchTabHeaderState(header()->saveState());
|
||||
}
|
||||
|
||||
void SearchJobWidget::displayToggleColumnsMenu(const QPoint &)
|
||||
int SearchJobWidget::visibleColumnsCount() const
|
||||
{
|
||||
int count = 0;
|
||||
for (int i = 0, iMax = m_ui->resultsBrowser->header()->count(); i < iMax; ++i)
|
||||
{
|
||||
if (!m_ui->resultsBrowser->isColumnHidden(i))
|
||||
++count;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
void SearchJobWidget::displayColumnHeaderMenu()
|
||||
{
|
||||
auto menu = new QMenu(this);
|
||||
menu->setAttribute(Qt::WA_DeleteOnClose);
|
||||
@@ -458,36 +472,22 @@ void SearchJobWidget::displayToggleColumnsMenu(const QPoint &)
|
||||
|
||||
for (int i = 0; i < SearchSortModel::DL_LINK; ++i)
|
||||
{
|
||||
QAction *myAct = menu->addAction(m_searchListModel->headerData(i, Qt::Horizontal, Qt::DisplayRole).toString());
|
||||
myAct->setCheckable(true);
|
||||
myAct->setChecked(!m_ui->resultsBrowser->isColumnHidden(i));
|
||||
myAct->setData(i);
|
||||
}
|
||||
|
||||
connect(menu, &QMenu::triggered, this, [this](const QAction *action)
|
||||
{
|
||||
int visibleCols = 0;
|
||||
for (int i = 0; i < SearchSortModel::DL_LINK; ++i)
|
||||
const auto columnName = m_searchListModel->headerData(i, Qt::Horizontal, Qt::DisplayRole).toString();
|
||||
QAction *action = menu->addAction(columnName, this, [this, i](const bool checked)
|
||||
{
|
||||
if (!m_ui->resultsBrowser->isColumnHidden(i))
|
||||
++visibleCols;
|
||||
if (!checked && (visibleColumnsCount() <= 1))
|
||||
return;
|
||||
|
||||
if (visibleCols > 1)
|
||||
break;
|
||||
}
|
||||
m_ui->resultsBrowser->setColumnHidden(i, !checked);
|
||||
|
||||
const int col = action->data().toInt();
|
||||
if (checked && (m_ui->resultsBrowser->columnWidth(i) <= 5))
|
||||
m_ui->resultsBrowser->resizeColumnToContents(i);
|
||||
|
||||
if ((!m_ui->resultsBrowser->isColumnHidden(col)) && (visibleCols == 1))
|
||||
return;
|
||||
|
||||
m_ui->resultsBrowser->setColumnHidden(col, !m_ui->resultsBrowser->isColumnHidden(col));
|
||||
|
||||
if ((!m_ui->resultsBrowser->isColumnHidden(col)) && (m_ui->resultsBrowser->columnWidth(col) <= 5))
|
||||
m_ui->resultsBrowser->resizeColumnToContents(col);
|
||||
|
||||
saveSettings();
|
||||
});
|
||||
saveSettings();
|
||||
});
|
||||
action->setCheckable(true);
|
||||
action->setChecked(!m_ui->resultsBrowser->isColumnHidden(i));
|
||||
}
|
||||
|
||||
menu->popup(QCursor::pos());
|
||||
}
|
||||
|
||||
@@ -88,6 +88,9 @@ signals:
|
||||
protected:
|
||||
void keyPressEvent(QKeyEvent *event) override;
|
||||
|
||||
private slots:
|
||||
void displayColumnHeaderMenu();
|
||||
|
||||
private:
|
||||
enum class AddTorrentOption
|
||||
{
|
||||
@@ -102,7 +105,6 @@ private:
|
||||
void filterSearchResults(const QString &name);
|
||||
void showFilterContextMenu(const QPoint &);
|
||||
void contextMenuEvent(QContextMenuEvent *event) override;
|
||||
void displayToggleColumnsMenu(const QPoint &);
|
||||
void onItemDoubleClicked(const QModelIndex &index);
|
||||
void searchFinished(bool cancelled);
|
||||
void searchFailed();
|
||||
@@ -115,6 +117,7 @@ private:
|
||||
NameFilteringMode filteringMode() const;
|
||||
QHeaderView *header() const;
|
||||
void setRowColor(int row, const QColor &color);
|
||||
int visibleColumnsCount() const;
|
||||
|
||||
void downloadTorrents(AddTorrentOption option = AddTorrentOption::Default);
|
||||
void openTorrentPages() const;
|
||||
|
||||
Reference in New Issue
Block a user