diff options
Diffstat (limited to 'datasources/modeusagetimesource.cpp')
-rw-r--r-- | datasources/modeusagetimesource.cpp | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/datasources/modeusagetimesource.cpp b/datasources/modeusagetimesource.cpp deleted file mode 100644 index 445e419..0000000 --- a/datasources/modeusagetimesource.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2019 The Qt Company -** Contact: https://www.qt.io/licensing/ -** -** This file is part of UsageStatistic plugin for Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ -#include "modeusagetimesource.h" - -#include <QtCore/QSettings> - -#include <coreplugin/editormanager/editormanager.h> -#include <coreplugin/modemanager.h> - -#include <KUserFeedback/Provider> - -#include "common/scopedsettingsgroupsetter.h" - -namespace UsageStatistic { -namespace Internal { - -using namespace KUserFeedback; - -ModeUsageTimeSource::ModeUsageTimeSource() - : AbstractDataSource(QStringLiteral("modeUsageTime"), Provider::DetailedUsageStatistics) -{ - connect(Core::ModeManager::instance(), &Core::ModeManager::currentModeChanged, - this, &ModeUsageTimeSource::onCurrentModeIdChanged); - onCurrentModeIdChanged(Core::ModeManager::currentModeId()); -} - -ModeUsageTimeSource::~ModeUsageTimeSource() = default; - -QString ModeUsageTimeSource::name() const -{ - return tr("Modes usage time"); -} - -QString ModeUsageTimeSource::description() const -{ - return tr("How much time a user spent working in each mode (edit, debug, design, etc.)"); -} - -// Keep synced with ModeUsageTimeSource::Mode { -static const auto &modeMarks() -{ - static const QString marks[] = {"welcome", "edit", "design", "debug", "project", "help", "other"}; - return marks; -} -// } - -static ModeUsageTimeSource::Mode modeFromString(const QString &modeString) -{ - auto begin = std::begin(modeMarks()); - auto end = std::end(modeMarks()); - - auto it = std::find_if(begin, end, [&](const QString &mark) { return modeString.contains(mark); }); - - return it != end ? ModeUsageTimeSource::Mode(std::distance(begin, it)) - : ModeUsageTimeSource::Other; -} - -QVariant ModeUsageTimeSource::data() -{ - QVariantMap result; - - for (std::size_t i = Welcome; i < ModesCount; ++i) { - result[modeMarks()[i]] = m_timeByModes[i]; - } - - return result; -} - -void ModeUsageTimeSource::loadImpl(QSettings *settings) -{ - auto setter = ScopedSettingsGroupSetter::forDataSource(*this, *settings); - for (std::size_t i = Welcome; i < ModesCount; ++i) { - m_timeByModes[i] = qvariant_cast<qint64>(settings->value(modeMarks()[i], timeDflt())); - } -} - -void ModeUsageTimeSource::storeImpl(QSettings *settings) -{ - storeCurrentTimerValue(); - - auto setter = ScopedSettingsGroupSetter::forDataSource(*this, *settings); - for (std::size_t i = Welcome; i < ModesCount; ++i) { - settings->setValue(modeMarks()[i], m_timeByModes[i]); - } -} - -void ModeUsageTimeSource::resetImpl(QSettings *settings) -{ - std::fill(std::begin(m_timeByModes), std::end(m_timeByModes), timeDflt()); - storeImpl(settings); -} - -void ModeUsageTimeSource::setCurrentMode(ModeUsageTimeSource::Mode mode) -{ - m_currentMode = mode; -} - -ModeUsageTimeSource::Mode ModeUsageTimeSource::currentMode() const -{ - return m_currentMode; -} - -void ModeUsageTimeSource::onCurrentModeIdChanged(const Core::Id &modeId) -{ - auto mode = modeFromString(QString::fromUtf8(modeId.name().toLower().simplified())); - - if (m_currentMode == mode) { - return; - } - - if (m_currentTimer.isValid() && m_currentMode < ModesCount) { - m_timeByModes[m_currentMode] += m_currentTimer.elapsed(); - m_currentTimer.invalidate(); - } - - m_currentMode = mode; - - if (m_currentMode != ModesCount) { - m_currentTimer.start(); - } -} - -void ModeUsageTimeSource::storeCurrentTimerValue() -{ - if (m_currentTimer.isValid() && m_currentMode < ModesCount) { - m_timeByModes[m_currentMode] += m_currentTimer.restart(); - } -} - -} // namespace Internal -} // namespace UsageStatistic |