mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-01 18:55:52 +00:00
- Fixed search engine bug that prevented a torrent from appearing more
than once among all tabs
This commit is contained in:
parent
fe455970f1
commit
1cc039c147
@ -47,13 +47,14 @@ SearchTab::SearchTab(SearchEngine *parent) : QWidget()
|
|||||||
|
|
||||||
setLayout(box);
|
setLayout(box);
|
||||||
// Set Search results list model
|
// Set Search results list model
|
||||||
SearchListModel = new QStandardItemModel(0,5);
|
SearchListModel = new QStandardItemModel(0,6);
|
||||||
SearchListModel->setHeaderData(SEARCH_NAME, Qt::Horizontal, tr("Name", "i.e: file name"));
|
SearchListModel->setHeaderData(SEARCH_NAME, Qt::Horizontal, tr("Name", "i.e: file name"));
|
||||||
SearchListModel->setHeaderData(SEARCH_SIZE, Qt::Horizontal, tr("Size", "i.e: file size"));
|
SearchListModel->setHeaderData(SEARCH_SIZE, Qt::Horizontal, tr("Size", "i.e: file size"));
|
||||||
SearchListModel->setHeaderData(SEARCH_SEEDERS, Qt::Horizontal, tr("Seeders", "i.e: Number of full sources"));
|
SearchListModel->setHeaderData(SEARCH_SEEDERS, Qt::Horizontal, tr("Seeders", "i.e: Number of full sources"));
|
||||||
SearchListModel->setHeaderData(SEARCH_LEECHERS, Qt::Horizontal, tr("Leechers", "i.e: Number of partial sources"));
|
SearchListModel->setHeaderData(SEARCH_LEECHERS, Qt::Horizontal, tr("Leechers", "i.e: Number of partial sources"));
|
||||||
SearchListModel->setHeaderData(SEARCH_ENGINE, Qt::Horizontal, tr("Search engine"));
|
SearchListModel->setHeaderData(SEARCH_ENGINE, Qt::Horizontal, tr("Search engine"));
|
||||||
resultsBrowser->setModel(SearchListModel);
|
resultsBrowser->setModel(SearchListModel);
|
||||||
|
resultsBrowser->hideColumn(URL_COLUMN); // Hide url column
|
||||||
SearchDelegate = new SearchListDelegate();
|
SearchDelegate = new SearchListDelegate();
|
||||||
resultsBrowser->setItemDelegate(SearchDelegate);
|
resultsBrowser->setItemDelegate(SearchDelegate);
|
||||||
// Make search list header clickable for sorting
|
// Make search list header clickable for sorting
|
||||||
|
@ -24,6 +24,8 @@
|
|||||||
|
|
||||||
#include "ui_search.h"
|
#include "ui_search.h"
|
||||||
|
|
||||||
|
#define URL_COLUMN 5
|
||||||
|
|
||||||
class SearchListDelegate;
|
class SearchListDelegate;
|
||||||
class SearchEngine;
|
class SearchEngine;
|
||||||
class QTreeView;
|
class QTreeView;
|
||||||
|
@ -243,7 +243,8 @@ void SearchEngine::searchStarted(){
|
|||||||
void SearchEngine::downloadSelectedItem(const QModelIndex& index){
|
void SearchEngine::downloadSelectedItem(const QModelIndex& index){
|
||||||
int row = index.row();
|
int row = index.row();
|
||||||
// Get Item url
|
// Get Item url
|
||||||
QString url = searchResultsUrls.value(all_tab.at(tabWidget->currentIndex())->getCurrentSearchListModel()->data(all_tab.at(tabWidget->currentIndex())->getCurrentSearchListModel()->index(row, NAME)).toString());
|
QStandardItemModel *model = all_tab.at(tabWidget->currentIndex())->getCurrentSearchListModel();
|
||||||
|
QString url = model->data(model->index(index.row(), URL_COLUMN)).toString();
|
||||||
// Download from url
|
// Download from url
|
||||||
BTSession->downloadFromUrl(url);
|
BTSession->downloadFromUrl(url);
|
||||||
// Set item color to RED
|
// Set item color to RED
|
||||||
@ -375,21 +376,17 @@ void SearchEngine::appendSearchResult(QString line){
|
|||||||
}
|
}
|
||||||
QString url = parts.takeFirst().trimmed();
|
QString url = parts.takeFirst().trimmed();
|
||||||
QString filename = parts.first().trimmed();
|
QString filename = parts.first().trimmed();
|
||||||
// XXX: Two results can't have the same name (right?)
|
parts << url;
|
||||||
if(searchResultsUrls.contains(filename)){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Add item to search result list
|
// Add item to search result list
|
||||||
int row = currentSearchTab->getCurrentSearchListModel()->rowCount();
|
int row = currentSearchTab->getCurrentSearchListModel()->rowCount();
|
||||||
currentSearchTab->getCurrentSearchListModel()->insertRow(row);
|
currentSearchTab->getCurrentSearchListModel()->insertRow(row);
|
||||||
for(int i=0; i<5; ++i){
|
for(int i=0; i<6; ++i){
|
||||||
if(parts.at(i).trimmed().toFloat() == -1 && i != SIZE)
|
if(parts.at(i).trimmed().toFloat() == -1 && i != SIZE)
|
||||||
currentSearchTab->getCurrentSearchListModel()->setData(currentSearchTab->getCurrentSearchListModel()->index(row, i), tr("Unknown"));
|
currentSearchTab->getCurrentSearchListModel()->setData(currentSearchTab->getCurrentSearchListModel()->index(row, i), tr("Unknown"));
|
||||||
else
|
else
|
||||||
currentSearchTab->getCurrentSearchListModel()->setData(currentSearchTab->getCurrentSearchListModel()->index(row, i), QVariant(parts.at(i).trimmed()));
|
currentSearchTab->getCurrentSearchListModel()->setData(currentSearchTab->getCurrentSearchListModel()->index(row, i), QVariant(parts.at(i).trimmed()));
|
||||||
}
|
}
|
||||||
// Add url to searchResultsUrls associative array
|
// Add url to searchResultsUrls associative array
|
||||||
searchResultsUrls.insert(filename, url);
|
|
||||||
no_search_results = false;
|
no_search_results = false;
|
||||||
++nb_search_results;
|
++nb_search_results;
|
||||||
// Enable clear & download buttons
|
// Enable clear & download buttons
|
||||||
@ -440,7 +437,8 @@ void SearchEngine::on_download_button_clicked(){
|
|||||||
foreach(const QModelIndex &index, selectedIndexes){
|
foreach(const QModelIndex &index, selectedIndexes){
|
||||||
if(index.column() == NAME){
|
if(index.column() == NAME){
|
||||||
// Get Item url
|
// Get Item url
|
||||||
QString url = searchResultsUrls.value(index.data().toString());
|
QStandardItemModel *model = all_tab.at(tabWidget->currentIndex())->getCurrentSearchListModel();
|
||||||
|
QString url = model->data(model->index(index.row(), URL_COLUMN)).toString();
|
||||||
BTSession->downloadFromUrl(url);
|
BTSession->downloadFromUrl(url);
|
||||||
all_tab.at(tabWidget->currentIndex())->setRowColor(index.row(), "red");
|
all_tab.at(tabWidget->currentIndex())->setRowColor(index.row(), "red");
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,6 @@ class SearchEngine : public QWidget, public Ui::search_engine{
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
// Search related
|
// Search related
|
||||||
QHash<QString, QString> searchResultsUrls;
|
|
||||||
QProcess *searchProcess;
|
QProcess *searchProcess;
|
||||||
bool search_stopped;
|
bool search_stopped;
|
||||||
bool no_search_results;
|
bool no_search_results;
|
||||||
|
Loading…
Reference in New Issue
Block a user