mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-01-06 15:04:34 +08:00
parent
ab0c82965c
commit
2f9c5cdb22
@ -55,6 +55,7 @@
|
|||||||
#include "base/utils/fs.h"
|
#include "base/utils/fs.h"
|
||||||
#include "base/utils/misc.h"
|
#include "base/utils/misc.h"
|
||||||
#include "autoexpandabledialog.h"
|
#include "autoexpandabledialog.h"
|
||||||
|
#include "lineedit.h"
|
||||||
#include "properties/proplistdelegate.h"
|
#include "properties/proplistdelegate.h"
|
||||||
#include "raisedmessagebox.h"
|
#include "raisedmessagebox.h"
|
||||||
#include "torrentcontentfiltermodel.h"
|
#include "torrentcontentfiltermodel.h"
|
||||||
@ -169,6 +170,7 @@ const int AddNewTorrentDialog::maxPathHistoryLength;
|
|||||||
AddNewTorrentDialog::AddNewTorrentDialog(const BitTorrent::AddTorrentParams &inParams, QWidget *parent)
|
AddNewTorrentDialog::AddNewTorrentDialog(const BitTorrent::AddTorrentParams &inParams, QWidget *parent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
, m_ui(new Ui::AddNewTorrentDialog)
|
, m_ui(new Ui::AddNewTorrentDialog)
|
||||||
|
, m_filterLine(new LineEdit(this))
|
||||||
, m_torrentParams(inParams)
|
, m_torrentParams(inParams)
|
||||||
, m_storeDialogSize(SETTINGS_KEY(u"DialogSize"_qs))
|
, m_storeDialogSize(SETTINGS_KEY(u"DialogSize"_qs))
|
||||||
, m_storeDefaultCategory(SETTINGS_KEY(u"DefaultCategory"_qs))
|
, m_storeDefaultCategory(SETTINGS_KEY(u"DefaultCategory"_qs))
|
||||||
@ -242,6 +244,12 @@ AddNewTorrentDialog::AddNewTorrentDialog(const BitTorrent::AddTorrentParams &inP
|
|||||||
|
|
||||||
connect(m_ui->contentTreeView->header(), &QWidget::customContextMenuRequested, this, &AddNewTorrentDialog::displayColumnHeaderMenu);
|
connect(m_ui->contentTreeView->header(), &QWidget::customContextMenuRequested, this, &AddNewTorrentDialog::displayColumnHeaderMenu);
|
||||||
|
|
||||||
|
// Torrent content filtering
|
||||||
|
m_filterLine->setPlaceholderText(tr("Filter files..."));
|
||||||
|
m_filterLine->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||||
|
connect(m_filterLine, &LineEdit::textChanged, this, &AddNewTorrentDialog::handleFilterTextChanged);
|
||||||
|
m_ui->contentFilterLayout->insertWidget(3, m_filterLine);
|
||||||
|
|
||||||
loadState();
|
loadState();
|
||||||
// Signal / slots
|
// Signal / slots
|
||||||
connect(m_ui->doNotDeleteTorrentCheckBox, &QCheckBox::clicked, this, &AddNewTorrentDialog::doNotDeleteTorrentClicked);
|
connect(m_ui->doNotDeleteTorrentCheckBox, &QCheckBox::clicked, this, &AddNewTorrentDialog::doNotDeleteTorrentClicked);
|
||||||
@ -912,6 +920,8 @@ void AddNewTorrentDialog::setupTreeview()
|
|||||||
{
|
{
|
||||||
m_ui->labelCommentData->setText(tr("Not Available", "This comment is unavailable"));
|
m_ui->labelCommentData->setText(tr("Not Available", "This comment is unavailable"));
|
||||||
m_ui->labelDateData->setText(tr("Not Available", "This date is unavailable"));
|
m_ui->labelDateData->setText(tr("Not Available", "This date is unavailable"));
|
||||||
|
// Prevent crash if something is typed in the filter. m_contentModel is not initialized at this point
|
||||||
|
m_filterLine->blockSignals(true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -949,6 +959,8 @@ void AddNewTorrentDialog::setupTreeview()
|
|||||||
if (const QByteArray state = m_storeTreeHeaderState; !state.isEmpty())
|
if (const QByteArray state = m_storeTreeHeaderState; !state.isEmpty())
|
||||||
m_ui->contentTreeView->header()->restoreState(state);
|
m_ui->contentTreeView->header()->restoreState(state);
|
||||||
|
|
||||||
|
m_filterLine->blockSignals(false);
|
||||||
|
|
||||||
// Hide useless columns after loading the header state
|
// Hide useless columns after loading the header state
|
||||||
m_ui->contentTreeView->hideColumn(PROGRESS);
|
m_ui->contentTreeView->hideColumn(PROGRESS);
|
||||||
m_ui->contentTreeView->hideColumn(REMAINING);
|
m_ui->contentTreeView->hideColumn(REMAINING);
|
||||||
@ -1045,3 +1057,18 @@ void AddNewTorrentDialog::renameSelectedFile()
|
|||||||
m_ui->contentTreeView->renameSelectedFile(fileStorageAdaptor);
|
m_ui->contentTreeView->renameSelectedFile(fileStorageAdaptor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AddNewTorrentDialog::handleFilterTextChanged(const QString &filter)
|
||||||
|
{
|
||||||
|
const QString pattern = Utils::String::wildcardToRegexPattern(filter);
|
||||||
|
m_contentModel->setFilterRegularExpression(QRegularExpression(pattern, QRegularExpression::CaseInsensitiveOption));
|
||||||
|
if (filter.isEmpty())
|
||||||
|
{
|
||||||
|
m_ui->contentTreeView->collapseAll();
|
||||||
|
m_ui->contentTreeView->expand(m_contentModel->index(0, 0));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_ui->contentTreeView->expandAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -53,6 +53,7 @@ namespace Ui
|
|||||||
class AddNewTorrentDialog;
|
class AddNewTorrentDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class LineEdit;
|
||||||
class PropListDelegate;
|
class PropListDelegate;
|
||||||
class TorrentContentFilterModel;
|
class TorrentContentFilterModel;
|
||||||
class TorrentFileGuard;
|
class TorrentFileGuard;
|
||||||
@ -92,6 +93,7 @@ private slots:
|
|||||||
void contentLayoutChanged();
|
void contentLayoutChanged();
|
||||||
void doNotDeleteTorrentClicked(bool checked);
|
void doNotDeleteTorrentClicked(bool checked);
|
||||||
void renameSelectedFile();
|
void renameSelectedFile();
|
||||||
|
void handleFilterTextChanged(const QString &filter);
|
||||||
|
|
||||||
void accept() override;
|
void accept() override;
|
||||||
void reject() override;
|
void reject() override;
|
||||||
@ -123,6 +125,7 @@ private:
|
|||||||
int m_savePathIndex = -1;
|
int m_savePathIndex = -1;
|
||||||
int m_downloadPathIndex = -1;
|
int m_downloadPathIndex = -1;
|
||||||
bool m_useDownloadPath = false;
|
bool m_useDownloadPath = false;
|
||||||
|
LineEdit *m_filterLine = nullptr;
|
||||||
std::unique_ptr<TorrentFileGuard> m_torrentGuard;
|
std::unique_ptr<TorrentFileGuard> m_torrentGuard;
|
||||||
BitTorrent::AddTorrentParams m_torrentParams;
|
BitTorrent::AddTorrentParams m_torrentParams;
|
||||||
|
|
||||||
|
@ -415,9 +415,12 @@
|
|||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Maximum</enum>
|
||||||
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>168</width>
|
<width>165</width>
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
Loading…
Reference in New Issue
Block a user