- FEATURE: Added right click menu in search engine to clear completion history

This commit is contained in:
Christophe Dumez 2009-07-12 06:42:38 +00:00
parent 106f7cdd32
commit 0d63f46035
4 changed files with 94 additions and 66 deletions

View File

@ -4,6 +4,7 @@
- FEATURE: Display total amount of uploaded data in finished list
- FEATURE: Resizing a column in a search results tab affects all tabs
- FEATURE: Search results tab columns are now remembered upon startup
- FEATURE: Added right click menu in search engine to clear completion history
- BUGFIX: Provide more helpful explanation when an I/O error occured
- COSMETIC: Redesigned program preferences
- COSMETIC: Updated icons set

View File

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>search_engine</class>
<widget class="QWidget" name="search_engine">
@ -53,6 +54,9 @@
<height>22</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
</widget>
</item>
<item>

View File

@ -39,6 +39,7 @@
#include <iostream>
#include <QTimer>
#include <QDir>
#include <QMenu>
#include "searchEngine.h"
#include "bittorrent.h"
@ -53,9 +54,8 @@ SearchEngine::SearchEngine(bittorrent *BTSession, QSystemTrayIcon *myTrayIcon, b
setupUi(this);
// new qCompleter to the search pattern
startSearchHistory();
searchCompleter = new QCompleter(searchHistory, this);
searchCompleter->setCaseSensitivity(Qt::CaseInsensitive);
search_pattern->setCompleter(searchCompleter);
searchCompleter = 0;
createCompleter();
// Add close tab button
closeTab_button = new QPushButton();
closeTab_button->setIcon(QIcon(QString::fromUtf8(":/Icons/gnome-shutdown.png")));
@ -79,6 +79,7 @@ SearchEngine::SearchEngine(bittorrent *BTSession, QSystemTrayIcon *myTrayIcon, b
loadEngineSettings();
// Update nova.py search plugin if necessary
updateNova();
connect(search_pattern, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(displayPatternContextMenu(QPoint)));
}
SearchEngine::~SearchEngine(){
@ -94,9 +95,23 @@ SearchEngine::~SearchEngine(){
}
delete searchTimeout;
delete searchProcess;
if(searchCompleter)
delete searchCompleter;
}
void SearchEngine::displayPatternContextMenu(QPoint) {
QMenu myMenu(this);
QAction clearHistoryAct(tr("Clear history"), &myMenu);
myMenu.addAction(&clearHistoryAct);
QAction *act = myMenu.exec(QCursor::pos());
if(act != 0) {
if(act == &clearHistoryAct) {
searchHistory.clear();
createCompleter();
}
}
}
void SearchEngine::tab_changed(int t)
{//when we switch from a tab that is not empty to another that is empty the download button
//doesn't have to be available
@ -178,12 +193,9 @@ void SearchEngine::on_search_button_clicked(){
// verify the max size of the history
if(searchHistory.size() > SEARCHHISTORY_MAXSIZE)
searchHistory = searchHistory.mid(searchHistory.size()/2,searchHistory.size()/2);
searchCompleter = new QCompleter(searchHistory, this);
searchCompleter->setCaseSensitivity(Qt::CaseInsensitive);
search_pattern->setCompleter(searchCompleter);
createCompleter();
}
// Getting checked search engines
Q_ASSERT(!enabled_engines.empty());
QStringList params;
@ -203,6 +215,14 @@ void SearchEngine::on_search_button_clicked(){
searchTimeout->start(180000); // 3min
}
void SearchEngine::createCompleter() {
if(searchCompleter)
delete searchCompleter;
searchCompleter = new QCompleter(searchHistory, this);
searchCompleter->setCaseSensitivity(Qt::CaseInsensitive);
search_pattern->setCompleter(searchCompleter);
}
void SearchEngine::propagateSectionResized(int index, int , int newsize) {
foreach(SearchTab * tab, all_tab) {
tab->getCurrentTreeView()->setColumnWidth(index, newsize);

View File

@ -36,6 +36,7 @@
#include <QProcess>
#include <QList>
#include <QPair>
#include <QPointer>
#include "ui_search.h"
#include "engineSelectDlg.h"
#include "SearchTab.h"
@ -57,7 +58,7 @@ class SearchEngine : public QWidget, public Ui::search_engine{
bool no_search_results;
QByteArray search_result_line_truncated;
unsigned long nb_search_results;
QCompleter *searchCompleter;
QPointer<QCompleter> searchCompleter;
QStringList searchHistory;
bittorrent *BTSession;
QSystemTrayIcon *myTrayIcon;
@ -94,6 +95,8 @@ class SearchEngine : public QWidget, public Ui::search_engine{
void saveResultsColumnsWidth();
void downloadFinished(int exitcode, QProcess::ExitStatus);
void downloadTorrent(QString engine_url, QString torrent_url);
void displayPatternContextMenu(QPoint);
void createCompleter();
};
#endif