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") + " "); } }
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; }