diff options
Diffstat (limited to 'src/usagestatisticplugin.cpp')
-rw-r--r-- | src/usagestatisticplugin.cpp | 61 |
1 files changed, 37 insertions, 24 deletions
diff --git a/src/usagestatisticplugin.cpp b/src/usagestatisticplugin.cpp index d4e2555..bcd5856 100644 --- a/src/usagestatisticplugin.cpp +++ b/src/usagestatisticplugin.cpp @@ -31,6 +31,7 @@ #include <coreplugin/actionmanager/command.h> #include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/coreconstants.h> +#include <coreplugin/infobar.h> #include <KUserFeedback/Provider> #include <KUserFeedback/ApplicationVersionSource> @@ -58,7 +59,6 @@ #include "services/datasubmitter.h" #include "ui/usagestatisticpage.h" -#include "ui/outputpane.h" #include "common/utils.h" @@ -74,9 +74,6 @@ bool UsageStatisticPlugin::initialize(const QStringList &arguments, QString *err Q_UNUSED(arguments) Q_UNUSED(errorString) - // We have to create a pane here because of OutputPaneManager internal initialization order - createOutputPane(); - return true; } @@ -132,8 +129,6 @@ bool UsageStatisticPlugin::delayedInitialize() restoreSettings(); - configureOutputPane(); - showFirstTimeMessage(); return true; @@ -154,21 +149,6 @@ void UsageStatisticPlugin::createUsageStatisticPage() this, &UsageStatisticPlugin::storeSettings); } -void UsageStatisticPlugin::createOutputPane() -{ - m_outputPane = std::make_unique<OutputPane>(); -} - -void UsageStatisticPlugin::configureOutputPane() -{ - Q_ASSERT(m_outputPane); - - m_outputPane->setProvider(m_provider); - - connect(m_provider.get(), &KUserFeedback::Provider::showEncouragementMessage, - this, &UsageStatisticPlugin::showEncouragementMessage); -} - void UsageStatisticPlugin::storeSettings() { if (m_provider) { @@ -218,17 +198,50 @@ static bool runFirstTime(const KUserFeedback::Provider &provider) return false; } +static bool telemetryLevelNotSet(const KUserFeedback::Provider &provider) +{ + return provider.telemetryMode() == KUserFeedback::Provider::NoTelemetry; +} + void UsageStatisticPlugin::showFirstTimeMessage() { - if (m_provider && runFirstTime(*m_provider)) { + if (m_provider && runFirstTime(*m_provider) && telemetryLevelNotSet(*m_provider)) { showEncouragementMessage(); } } +static Core::InfoBarEntry makeInfoBarEntry() +{ + static auto infoText = UsageStatisticPlugin::tr( + "We make Qt Creator for you. Would you like to help us make it even better?"); + static auto customButtonInfoText = UsageStatisticPlugin::tr("Adjust usage statistics settings"); + static auto cancelButtonInfoText = UsageStatisticPlugin::tr("Decide later"); + + static auto hideEncouragementMessageCallback = []() { + if (auto infoBar = Core::ICore::infoBar()) { + infoBar->removeInfo(Constants::ENC_MSG_INFOBAR_ENTRY_ID); + } + }; + + static auto showUsageStatisticsSettingsCallback = []() { + hideEncouragementMessageCallback(); + Core::ICore::showOptionsDialog(Constants::USAGE_STATISTIC_PAGE_ID); + }; + + Core::InfoBarEntry entry(Constants::ENC_MSG_INFOBAR_ENTRY_ID, infoText); + entry.setCustomButtonInfo(customButtonInfoText, showUsageStatisticsSettingsCallback); + entry.setCancelButtonInfo(cancelButtonInfoText, hideEncouragementMessageCallback); + + return entry; +} + void UsageStatisticPlugin::showEncouragementMessage() { - if (m_outputPane) { - m_outputPane->flash(); + if (auto infoBar = Core::ICore::infoBar()) { + if (!infoBar->containsInfo(Constants::ENC_MSG_INFOBAR_ENTRY_ID)) { + static auto infoBarEntry = makeInfoBarEntry(); + infoBar->addInfo(infoBarEntry); + } } } |