PreferencesSearchPageWidget::PreferencesSearchPageWidget(QWidget *parent) : QWidget(parent), m_defaultSearchEngine(SettingsManager::getValue(QLatin1String("Search/DefaultSearchEngine")).toString()), m_ui(new Ui::PreferencesSearchPageWidget) { m_ui->setupUi(this); QStandardItemModel *searchEnginesModel(new QStandardItemModel(this)); searchEnginesModel->setHorizontalHeaderLabels(QStringList({tr("Name"), tr("Keyword")})); const QStringList searchEngines(SearchEnginesManager::getSearchEngines()); for (int i = 0; i < searchEngines.count(); ++i) { const SearchEnginesManager::SearchEngineDefinition searchEngine(SearchEnginesManager::getSearchEngine(searchEngines.at(i))); if (searchEngine.identifier.isEmpty()) { continue; } m_searchEngines[searchEngine.identifier] = qMakePair(false, searchEngine); QList<QStandardItem*> items({new QStandardItem(searchEngine.icon, searchEngine.title), new QStandardItem(searchEngine.keyword)}); items[0]->setData(searchEngine.identifier, Qt::UserRole); items[0]->setToolTip(searchEngine.description); items[0]->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDragEnabled); items[1]->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDragEnabled); searchEnginesModel->appendRow(items); } m_ui->searchViewWidget->setModel(searchEnginesModel); m_ui->searchViewWidget->setItemDelegateForColumn(1, new SearchKeywordDelegate(this)); m_ui->searchSuggestionsCheckBox->setChecked(SettingsManager::getValue(QLatin1String("Search/SearchEnginesSuggestions")).toBool()); QMenu *addSearchMenu(new QMenu(m_ui->addSearchButton)); addSearchMenu->addAction(tr("New…")); addSearchMenu->addAction(tr("Readd"))->setMenu(new QMenu(m_ui->addSearchButton)); m_ui->addSearchButton->setMenu(addSearchMenu); m_ui->moveDownSearchButton->setIcon(ThemesManager::getIcon(QLatin1String("arrow-down"))); m_ui->moveUpSearchButton->setIcon(ThemesManager::getIcon(QLatin1String("arrow-up"))); updateReaddSearchMenu(); connect(m_ui->searchFilterLineEdit, SIGNAL(textChanged(QString)), m_ui->searchViewWidget, SLOT(setFilterString(QString))); connect(m_ui->searchViewWidget, SIGNAL(canMoveDownChanged(bool)), m_ui->moveDownSearchButton, SLOT(setEnabled(bool))); connect(m_ui->searchViewWidget, SIGNAL(canMoveUpChanged(bool)), m_ui->moveUpSearchButton, SLOT(setEnabled(bool))); connect(m_ui->searchViewWidget, SIGNAL(needsActionsUpdate()), this, SLOT(updateSearchActions())); connect(m_ui->searchViewWidget, SIGNAL(modified()), this, SIGNAL(settingsModified())); connect(m_ui->addSearchButton->menu()->actions().at(0), SIGNAL(triggered()), this, SLOT(addSearchEngine())); connect(m_ui->addSearchButton->menu()->actions().at(1)->menu(), SIGNAL(triggered(QAction*)), this, SLOT(readdSearchEngine(QAction*))); connect(m_ui->editSearchButton, SIGNAL(clicked()), this, SLOT(editSearchEngine())); connect(m_ui->removeSearchButton, SIGNAL(clicked()), this, SLOT(removeSearchEngine())); connect(m_ui->moveDownSearchButton, SIGNAL(clicked()), m_ui->searchViewWidget, SLOT(moveDownRow())); connect(m_ui->moveUpSearchButton, SIGNAL(clicked()), m_ui->searchViewWidget, SLOT(moveUpRow())); }
PreferencesSearchPageWidget::PreferencesSearchPageWidget(QWidget *parent) : QWidget(parent), m_ui(new Ui::PreferencesSearchPageWidget) { m_ui->setupUi(this); ItemModel *searchEnginesModel(new ItemModel(this)); searchEnginesModel->setHorizontalHeaderLabels({tr("Name"), tr("Keyword")}); searchEnginesModel->setHeaderData(0, Qt::Horizontal, 250, HeaderViewWidget::WidthRole); searchEnginesModel->setExclusive(true); const QString defaultSearchEngine(SettingsManager::getOption(SettingsManager::Search_DefaultSearchEngineOption).toString()); const QStringList searchEngines(SearchEnginesManager::getSearchEngines()); for (int i = 0; i < searchEngines.count(); ++i) { const SearchEnginesManager::SearchEngineDefinition searchEngine(SearchEnginesManager::getSearchEngine(searchEngines.at(i))); if (!searchEngine.isValid()) { continue; } m_searchEngines[searchEngine.identifier] = {false, searchEngine}; searchEnginesModel->appendRow(createRow(searchEngine, (searchEngine.identifier == defaultSearchEngine))); } m_ui->searchViewWidget->setModel(searchEnginesModel); m_ui->searchViewWidget->setItemDelegateForColumn(0, new SearchEngineTitleDelegate(this)); m_ui->searchViewWidget->setItemDelegateForColumn(1, new SearchEngineKeywordDelegate(this)); m_ui->searchViewWidget->setExclusive(true); m_ui->searchSuggestionsCheckBox->setChecked(SettingsManager::getOption(SettingsManager::Search_SearchEnginesSuggestionsOption).toBool()); QMenu *addSearchEngineMenu(new QMenu(m_ui->addSearchButton)); addSearchEngineMenu->addAction(tr("New…"), this, &PreferencesSearchPageWidget::createSearchEngine); addSearchEngineMenu->addAction(tr("File…"), this, &PreferencesSearchPageWidget::importSearchEngine); addSearchEngineMenu->addAction(tr("Readd"))->setMenu(new QMenu(m_ui->addSearchButton)); m_ui->addSearchButton->setMenu(addSearchEngineMenu); m_ui->moveDownSearchButton->setIcon(ThemesManager::createIcon(QLatin1String("arrow-down"))); m_ui->moveUpSearchButton->setIcon(ThemesManager::createIcon(QLatin1String("arrow-up"))); updateReaddSearchEngineMenu(); connect(m_ui->searchFilterLineEditWidget, &LineEditWidget::textChanged, m_ui->searchViewWidget, &ItemViewWidget::setFilterString); connect(m_ui->searchViewWidget, &ItemViewWidget::canMoveRowDownChanged, m_ui->moveDownSearchButton, &QToolButton::setEnabled); connect(m_ui->searchViewWidget, &ItemViewWidget::canMoveRowUpChanged, m_ui->moveUpSearchButton, &QToolButton::setEnabled); connect(m_ui->searchViewWidget, &ItemViewWidget::needsActionsUpdate, this, &PreferencesSearchPageWidget::updateSearchEngineActions); connect(m_ui->searchViewWidget, &ItemViewWidget::modified, this, &PreferencesSearchPageWidget::settingsModified); connect(m_ui->addSearchButton->menu()->actions().at(2)->menu(), &QMenu::triggered, this, &PreferencesSearchPageWidget::readdSearchEngine); connect(m_ui->editSearchButton, &QPushButton::clicked, this, &PreferencesSearchPageWidget::editSearchEngine); connect(m_ui->updateSearchButton, &QPushButton::clicked, this, &PreferencesSearchPageWidget::updateSearchEngine); connect(m_ui->removeSearchButton, &QPushButton::clicked, this, &PreferencesSearchPageWidget::removeSearchEngine); connect(m_ui->moveDownSearchButton, &QToolButton::clicked, m_ui->searchViewWidget, &ItemViewWidget::moveDownRow); connect(m_ui->moveUpSearchButton, &QToolButton::clicked, m_ui->searchViewWidget, &ItemViewWidget::moveUpRow); }