diff --git a/src/base/searchengine.cpp b/src/base/searchengine.cpp index 5bb5bd1a9..fd3898fab 100644 --- a/src/base/searchengine.cpp +++ b/src/base/searchengine.cpp @@ -310,6 +310,11 @@ QString SearchEngine::categoryFullName(const QString &categoryName) return tr(m_categoryNames.value(categoryName).toUtf8().constData()); } +QString SearchEngine::pluginFullName(const QString &pluginName) +{ + return pluginInfo(pluginName) ? pluginInfo(pluginName)->fullName : QString(); +} + QString SearchEngine::pluginsLocation() { return QString("%1/engines").arg(engineLocation()); diff --git a/src/base/searchengine.h b/src/base/searchengine.h index ab27aa7e0..aa360fa2f 100644 --- a/src/base/searchengine.h +++ b/src/base/searchengine.h @@ -88,6 +88,7 @@ public: static qreal getPluginVersion(QString filePath); static QString categoryFullName(const QString &categoryName); + QString pluginFullName(const QString &pluginName); static QString pluginsLocation(); signals: diff --git a/src/gui/search/pluginselectdlg.ui b/src/gui/search/pluginselectdlg.ui index a87d23c6c..8f9ff31e8 100644 --- a/src/gui/search/pluginselectdlg.ui +++ b/src/gui/search/pluginselectdlg.ui @@ -16,7 +16,7 @@ Search plugins - + @@ -82,16 +82,13 @@ You can get new search engine plugins here: <a href="http://plugins.qbittorrent.org">http://plugins.qbittorrent.org</a> - - Qt::AutoText - true - + diff --git a/src/gui/search/pluginsourcedlg.ui b/src/gui/search/pluginsourcedlg.ui index a2ca22d95..9b0411e1d 100644 --- a/src/gui/search/pluginsourcedlg.ui +++ b/src/gui/search/pluginsourcedlg.ui @@ -1,7 +1,8 @@ - + + PluginSourceDlg - - + + 0 0 @@ -9,36 +10,36 @@ 76 - + Plugin source - + - - + + 75 true true - + Search plugin source: - + - - + + Local file - - + + Web link diff --git a/src/gui/search/searchwidget.cpp b/src/gui/search/searchwidget.cpp index 9c8345bf2..5e3130bc6 100644 --- a/src/gui/search/searchwidget.cpp +++ b/src/gui/search/searchwidget.cpp @@ -61,7 +61,6 @@ #include "mainwindow.h" #include "addnewtorrentdialog.h" #include "guiiconprovider.h" -#include "lineedit.h" #include "pluginselectdlg.h" #include "searchsortmodel.h" #include "searchtab.h" @@ -78,13 +77,8 @@ SearchWidget::SearchWidget(MainWindow *mainWindow) { setupUi(this); - m_searchPattern = new LineEdit(this); - searchBarLayout->insertWidget(0, m_searchPattern); - connect(m_searchPattern, SIGNAL(returnPressed()), searchButton, SLOT(click())); - QString searchPatternHint; QTextStream stream(&searchPatternHint, QIODevice::WriteOnly); - stream << "

" << tr("A phrase to search for.") << "
" << tr("Spaces in a search term may be protected by double quotes.") @@ -99,7 +93,6 @@ SearchWidget::SearchWidget(MainWindow *mainWindow) "Search phrase example, illustrates quotes usage, double quoted" "pair of space delimited words, the whole pair is highlighted") << "

" << flush; - m_searchPattern->setToolTip(searchPatternHint); // Icons @@ -108,7 +101,6 @@ SearchWidget::SearchWidget(MainWindow *mainWindow) goToDescBtn->setIcon(GuiIconProvider::instance()->getIcon("application-x-mswinurl")); pluginsButton->setIcon(GuiIconProvider::instance()->getIcon("preferences-system-network")); copyURLBtn->setIcon(GuiIconProvider::instance()->getIcon("edit-copy")); - tabWidget->setTabsClosable(true); connect(tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int))); m_searchEngine = new SearchEngine; @@ -122,28 +114,45 @@ SearchWidget::SearchWidget(MainWindow *mainWindow) fillCatCombobox(); fillPluginComboBox(); + connect(m_searchPattern, SIGNAL(returnPressed()), searchButton, SLOT(click())); connect(m_searchPattern, SIGNAL(textEdited(QString)), this, SLOT(searchTextEdited(QString))); - connect(selectPlugin, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(selectMultipleBox(const QString &))); + connect(selectPlugin, SIGNAL(currentIndexChanged(int)), this, SLOT(selectMultipleBox(int))); } void SearchWidget::fillCatCombobox() { comboCategory->clear(); comboCategory->addItem(SearchEngine::categoryFullName("all"), QVariant("all")); - foreach (QString cat, m_searchEngine->supportedCategories()) { - qDebug("Supported category: %s", qPrintable(cat)); - comboCategory->addItem(SearchEngine::categoryFullName(cat), QVariant(cat)); + comboCategory->insertSeparator(1); + + using QStrPair = QPair; + QList tmpList; + foreach (const QString &cat, m_searchEngine->supportedCategories()) + tmpList << qMakePair(SearchEngine::categoryFullName(cat), cat); + std::sort(tmpList.begin(), tmpList.end(), [](const QStrPair &l, const QStrPair &r) { return (l.first < r.first); } ); + + foreach (const QStrPair &p, tmpList) { + qDebug("Supported category: %s", qPrintable(p.second)); + comboCategory->addItem(p.first, QVariant(p.second)); } } void SearchWidget::fillPluginComboBox() { selectPlugin->clear(); - selectPlugin->addItem(tr("All enabled"), QVariant("enabled")); selectPlugin->addItem(tr("All plugins"), QVariant("all")); - foreach (QString name, m_searchEngine->enabledPlugins()) - selectPlugin->addItem(name, QVariant(name)); - selectPlugin->addItem(tr("Multiple..."), QVariant("multi")); + selectPlugin->addItem(tr("Only enabled"), QVariant("enabled")); + selectPlugin->addItem(tr("Select..."), QVariant("multi")); + selectPlugin->insertSeparator(3); + + using QStrPair = QPair; + QList tmpList; + foreach (const QString &name, m_searchEngine->enabledPlugins()) + tmpList << qMakePair(m_searchEngine->pluginFullName(name), name); + std::sort(tmpList.begin(), tmpList.end(), [](const QStrPair &l, const QStrPair &r) { return (l.first < r.first); } ); + + foreach (const QStrPair &p, tmpList) + selectPlugin->addItem(p.first, QVariant(p.second)); } QString SearchWidget::selectedCategory() const @@ -190,9 +199,10 @@ void SearchWidget::tab_changed(int t) } } -void SearchWidget::selectMultipleBox(const QString &text) +void SearchWidget::selectMultipleBox(int index) { - if (text == tr("Multiple...")) + Q_UNUSED(index); + if (selectedPlugin() == "multi") on_pluginsButton_clicked(); } diff --git a/src/gui/search/searchwidget.h b/src/gui/search/searchwidget.h index b39aeacb0..b2514daaa 100644 --- a/src/gui/search/searchwidget.h +++ b/src/gui/search/searchwidget.h @@ -38,7 +38,6 @@ #include "ui_searchwidget.h" class MainWindow; -class LineEdit; class SearchEngine; struct SearchResult; class SearchTab; @@ -71,7 +70,7 @@ private slots: void searchStarted(); void searchFinished(bool cancelled); void searchFailed(); - void selectMultipleBox(const QString &text); + void selectMultipleBox(int index); void addTorrentToSession(const QString &source); @@ -84,7 +83,6 @@ private: QString selectedCategory() const; QString selectedPlugin() const; - LineEdit *m_searchPattern; SearchEngine *m_searchEngine; QPointer m_currentSearchTab; // Selected tab QPointer m_activeSearchTab; // Tab with running search diff --git a/src/gui/search/searchwidget.ui b/src/gui/search/searchwidget.ui index e3d539135..d3acb07f0 100644 --- a/src/gui/search/searchwidget.ui +++ b/src/gui/search/searchwidget.ui @@ -6,7 +6,7 @@ 0 0 - 1382 + 843 669
@@ -17,13 +17,36 @@ - + - + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + 0 + 0 + + Search @@ -33,74 +56,74 @@ - - - 0 - 1 - + + true - + - - - - - false - - - Download - - - - - - - false - - - Go to description page - - - - - - - false - - - Copy description page URL - - - - - - - Qt::Horizontal - - - - 601 - 20 - - - - - - - - Search plugins... - - - - + + + false + + + Download + + + + + + + false + + + Go to description page + + + + + + + false + + + Copy description page URL + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + Search plugins... + +
+ + + LineEdit + QLineEdit +
lineedit.h
+
+