SearchWidget::SearchWidget(MainWindow *mainWindow) : QWidget(mainWindow) , m_ui(new Ui::SearchWidget()) , m_mainWindow(mainWindow) , m_isNewQueryString(false) , m_noSearchResults(true) { m_ui->setupUi(this); QString searchPatternHint; QTextStream stream(&searchPatternHint, QIODevice::WriteOnly); stream << "<html><head/><body><p>" << tr("A phrase to search for.") << "<br>" << tr("Spaces in a search term may be protected by double quotes.") << "</p><p>" << tr("Example:", "Search phrase example") << "<br>" << tr("<b>foo bar</b>: search for <b>foo</b> and <b>bar</b>", "Search phrase example, illustrates quotes usage, a pair of " "space delimited words, individal words are highlighted") << "<br>" << tr("<b>"foo bar"</b>: search for <b>foo bar</b>", "Search phrase example, illustrates quotes usage, double quoted" "pair of space delimited words, the whole pair is highlighted") << "</p></body></html>" << flush; m_ui->m_searchPattern->setToolTip(searchPatternHint); // Icons m_ui->searchButton->setIcon(GuiIconProvider::instance()->getIcon("edit-find")); m_ui->downloadButton->setIcon(GuiIconProvider::instance()->getIcon("download")); m_ui->goToDescBtn->setIcon(GuiIconProvider::instance()->getIcon("application-x-mswinurl")); m_ui->pluginsButton->setIcon(GuiIconProvider::instance()->getIcon("preferences-system-network")); m_ui->copyURLBtn->setIcon(GuiIconProvider::instance()->getIcon("edit-copy")); connect(m_ui->tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int))); m_searchEngine = new SearchEngine; connect(m_searchEngine, SIGNAL(searchStarted()), SLOT(searchStarted())); connect(m_searchEngine, SIGNAL(newSearchResults(QList<SearchResult>)), SLOT(appendSearchResults(QList<SearchResult>))); connect(m_searchEngine, SIGNAL(searchFinished(bool)), SLOT(searchFinished(bool))); connect(m_searchEngine, SIGNAL(searchFailed()), SLOT(searchFailed())); connect(m_searchEngine, SIGNAL(torrentFileDownloaded(QString)), SLOT(addTorrentToSession(QString))); // Fill in category combobox fillCatCombobox(); fillPluginComboBox(); connect(m_ui->m_searchPattern, SIGNAL(returnPressed()), m_ui->searchButton, SLOT(click())); connect(m_ui->m_searchPattern, SIGNAL(textEdited(QString)), this, SLOT(searchTextEdited(QString))); connect(m_ui->selectPlugin, SIGNAL(currentIndexChanged(int)), this, SLOT(selectMultipleBox(int))); }
SearchWidget::SearchWidget(MainWindow *mainWindow) : QWidget(mainWindow) , m_ui(new Ui::SearchWidget()) , m_tabStatusChangedMapper(new QSignalMapper(this)) , m_mainWindow(mainWindow) , m_isNewQueryString(false) { m_ui->setupUi(this); QString searchPatternHint; QTextStream stream(&searchPatternHint, QIODevice::WriteOnly); stream << "<html><head/><body><p>" << tr("A phrase to search for.") << "<br>" << tr("Spaces in a search term may be protected by double quotes.") << "</p><p>" << tr("Example:", "Search phrase example") << "<br>" << tr("<b>foo bar</b>: search for <b>foo</b> and <b>bar</b>", "Search phrase example, illustrates quotes usage, a pair of " "space delimited words, individal words are highlighted") << "<br>" << tr("<b>"foo bar"</b>: search for <b>foo bar</b>", "Search phrase example, illustrates quotes usage, double quoted" "pair of space delimited words, the whole pair is highlighted") << "</p></body></html>" << flush; m_ui->m_searchPattern->setToolTip(searchPatternHint); #ifndef Q_OS_MAC // Icons m_ui->searchButton->setIcon(GuiIconProvider::instance()->getIcon("edit-find")); m_ui->downloadButton->setIcon(GuiIconProvider::instance()->getIcon("download")); m_ui->goToDescBtn->setIcon(GuiIconProvider::instance()->getIcon("application-x-mswinurl")); m_ui->pluginsButton->setIcon(GuiIconProvider::instance()->getIcon("preferences-system-network")); m_ui->copyURLBtn->setIcon(GuiIconProvider::instance()->getIcon("edit-copy")); #else // On macOS the icons overlap the text otherwise QSize iconSize = m_ui->tabWidget->iconSize(); iconSize.setWidth(iconSize.width() + 16); m_ui->tabWidget->setIconSize(iconSize); #endif connect(m_ui->tabWidget, &QTabWidget::tabCloseRequested, this, &SearchWidget::closeTab); connect(m_ui->tabWidget, &QTabWidget::currentChanged, this, &SearchWidget::tabChanged); connect(m_tabStatusChangedMapper, static_cast<void (QSignalMapper::*)(QWidget *)>(&QSignalMapper::mapped) , this, &SearchWidget::tabStatusChanged); // NOTE: Although SearchManager is Application-wide component now, we still create it the legacy way. auto *searchManager = new SearchPluginManager; const auto onPluginChanged = [this]() { fillPluginComboBox(); fillCatCombobox(); selectActivePage(); }; connect(searchManager, &SearchPluginManager::pluginInstalled, this, onPluginChanged); connect(searchManager, &SearchPluginManager::pluginUninstalled, this, onPluginChanged); connect(searchManager, &SearchPluginManager::pluginUpdated, this, onPluginChanged); connect(searchManager, &SearchPluginManager::pluginEnabled, this, onPluginChanged); // Fill in category combobox onPluginChanged(); connect(m_ui->m_searchPattern, &LineEdit::returnPressed, m_ui->searchButton, &QPushButton::click); connect(m_ui->m_searchPattern, &LineEdit::textEdited, this, &SearchWidget::searchTextEdited); connect(m_ui->selectPlugin, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged) , this, &SearchWidget::selectMultipleBox); connect(m_ui->selectPlugin, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged) , this, &SearchWidget::fillCatCombobox); }