Browse Source

- Fixed search engine bug that prevented a torrent from appearing more

than once among all tabs
adaptive-webui-19844
Christophe Dumez 16 years ago
parent
commit
1cc039c147
  1. 3
      src/SearchTab.cpp
  2. 2
      src/SearchTab.h
  3. 14
      src/searchEngine.cpp
  4. 1
      src/searchEngine.h

3
src/SearchTab.cpp

@ -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

2
src/SearchTab.h

@ -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;

14
src/searchEngine.cpp

@ -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");
} }

1
src/searchEngine.h

@ -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…
Cancel
Save