void GlobalSearchSettingsPage::UpdateLoggedInState(GlobalSearch* engine, QTreeWidgetItem* item, bool set_checked_state) { SearchProvider* provider = item->data(0, Qt::UserRole).value<SearchProvider*>(); const bool enabled = engine->is_provider_enabled(provider); const bool logged_in = provider->IsLoggedIn(); Qt::CheckState check_state = logged_in && enabled ? Qt::Checked : Qt::Unchecked; Qt::ItemFlags flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable; if (logged_in) flags |= Qt::ItemIsUserCheckable; if (set_checked_state) item->setData(0, Qt::CheckStateRole, check_state); item->setFlags(flags); if (logged_in) { item->setIcon(1, QIcon()); item->setText(1, QString()); } else { item->setIcon(1, warning_icon_); item->setText(1, tr("Not logged in") + " "); } }
void GlobalSearchSettingsPage::ConfigureProvider() { QTreeWidgetItem* item = ui_->sources->currentItem(); if (!item) return; SearchProvider* provider = item->data(0, Qt::UserRole).value<SearchProvider*>(); provider->ShowConfig(); }
void GlobalSearchSettingsPage::CurrentProviderChanged(QTreeWidgetItem* item) { if (!item) return; QTreeWidgetItem* root = ui_->sources->invisibleRootItem(); SearchProvider* provider = item->data(0, Qt::UserRole).value<SearchProvider*>(); const int row = root->indexOfChild(item); ui_->up->setEnabled(row != 0); ui_->down->setEnabled(row != root->childCount() - 1); ui_->configure->setEnabled(provider->can_show_config()); }
bool GlobalSearch::SetProviderEnabled(const SearchProvider* const_provider, bool enabled) { SearchProvider* provider = const_cast<SearchProvider*>(const_provider); if (!providers_.contains(provider)) return true; if (providers_[provider].enabled_ != enabled) { // If we try to enable this provider but it is not logged in, don't change // state, and show configuration menu, if any if (enabled && !provider->IsLoggedIn()) { provider->ShowConfig(); return false; } else { providers_[provider].enabled_ = enabled; emit ProviderToggled(provider, enabled); SaveProvidersSettings(); return true; } } return true; }