QmlProfiler: Persist the last trace file loaded or saved

This is quite handy if you keep all your traces in one directory.

Change-Id: I09842404493c02fb0ca9c4a328950f7b6dcb5be0
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
This commit is contained in:
Ulf Hermann
2015-09-11 16:55:46 +02:00
parent 05388a7229
commit a324694671
4 changed files with 41 additions and 4 deletions

View File

@@ -40,6 +40,7 @@ const char TASK_LOAD[] = "QmlProfiler.TaskLoad";
const char TASK_SAVE[] = "QmlProfiler.TaskSave"; const char TASK_SAVE[] = "QmlProfiler.TaskSave";
const char FLUSH_ENABLED[] = "Analyzer.QmlProfiler.FlushEnabled"; const char FLUSH_ENABLED[] = "Analyzer.QmlProfiler.FlushEnabled";
const char FLUSH_INTERVAL[] = "Analyzer.QmlProfiler.FlushInterval"; const char FLUSH_INTERVAL[] = "Analyzer.QmlProfiler.FlushInterval";
const char LAST_TRACE_FILE[] = "Analyzer.QmlProfiler.LastTraceFile";
const char SETTINGS[] = "Analyzer.QmlProfiler.Settings"; const char SETTINGS[] = "Analyzer.QmlProfiler.Settings";
const char ANALYZER[] = "Analyzer"; const char ANALYZER[] = "Analyzer";

View File

@@ -44,6 +44,7 @@ QmlProfilerSettings::QmlProfilerSettings()
QVariantMap defaults; QVariantMap defaults;
defaults.insert(QLatin1String(Constants::FLUSH_INTERVAL), 1000); defaults.insert(QLatin1String(Constants::FLUSH_INTERVAL), 1000);
defaults.insert(QLatin1String(Constants::FLUSH_ENABLED), false); defaults.insert(QLatin1String(Constants::FLUSH_ENABLED), false);
defaults.insert(QLatin1String(Constants::LAST_TRACE_FILE), QString());
// Read stored values // Read stored values
QSettings *settings = Core::ICore::settings(); QSettings *settings = Core::ICore::settings();
@@ -92,6 +93,19 @@ void QmlProfilerSettings::setFlushInterval(quint32 flushInterval)
} }
} }
QString QmlProfilerSettings::lastTraceFile() const
{
return m_lastTraceFile;
}
void QmlProfilerSettings::setLastTraceFile(const QString &lastTracePath)
{
if (m_lastTraceFile != lastTracePath) {
m_lastTraceFile = lastTracePath;
emit changed();
}
}
void QmlProfilerSettings::writeGlobalSettings() const void QmlProfilerSettings::writeGlobalSettings() const
{ {
QSettings *settings = Core::ICore::settings(); QSettings *settings = Core::ICore::settings();
@@ -107,12 +121,14 @@ void QmlProfilerSettings::toMap(QVariantMap &map) const
{ {
map[QLatin1String(Constants::FLUSH_INTERVAL)] = m_flushInterval; map[QLatin1String(Constants::FLUSH_INTERVAL)] = m_flushInterval;
map[QLatin1String(Constants::FLUSH_ENABLED)] = m_flushEnabled; map[QLatin1String(Constants::FLUSH_ENABLED)] = m_flushEnabled;
map[QLatin1String(Constants::LAST_TRACE_FILE)] = m_lastTraceFile;
} }
void QmlProfilerSettings::fromMap(const QVariantMap &map) void QmlProfilerSettings::fromMap(const QVariantMap &map)
{ {
m_flushEnabled = map.value(QLatin1String(Constants::FLUSH_ENABLED)).toBool(); m_flushEnabled = map.value(QLatin1String(Constants::FLUSH_ENABLED)).toBool();
m_flushInterval = map.value(QLatin1String(Constants::FLUSH_INTERVAL)).toUInt(); m_flushInterval = map.value(QLatin1String(Constants::FLUSH_INTERVAL)).toUInt();
m_lastTraceFile = map.value(QLatin1String(Constants::LAST_TRACE_FILE)).toString();
emit changed(); emit changed();
} }

View File

@@ -50,6 +50,9 @@ public:
quint32 flushInterval() const; quint32 flushInterval() const;
void setFlushInterval(quint32 flushInterval); void setFlushInterval(quint32 flushInterval);
QString lastTraceFile() const;
void setLastTraceFile(const QString &lastTraceFile);
void writeGlobalSettings() const; void writeGlobalSettings() const;
signals: signals:
@@ -62,6 +65,7 @@ protected:
private: private:
bool m_flushEnabled; bool m_flushEnabled;
quint32 m_flushInterval; quint32 m_flushInterval;
QString m_lastTraceFile;
}; };
} // Internal } // Internal

View File

@@ -40,6 +40,7 @@
#include "qmlprofilernotesmodel.h" #include "qmlprofilernotesmodel.h"
#include "qmlprofilerrunconfigurationaspect.h" #include "qmlprofilerrunconfigurationaspect.h"
#include "qmlprofilersettings.h" #include "qmlprofilersettings.h"
#include "qmlprofilerplugin.h"
#include <analyzerbase/analyzermanager.h> #include <analyzerbase/analyzermanager.h>
#include <analyzerbase/analyzerruncontrol.h> #include <analyzerbase/analyzerruncontrol.h>
@@ -537,13 +538,25 @@ void QmlProfilerTool::showSaveOption()
d->m_saveQmlTrace->setEnabled(!d->m_profilerModelManager->isEmpty()); d->m_saveQmlTrace->setEnabled(!d->m_profilerModelManager->isEmpty());
} }
void saveLastTraceFile(const QString &filename)
{
QmlProfilerSettings *settings = QmlProfilerPlugin::globalSettings();
if (filename != settings->lastTraceFile()) {
settings->setLastTraceFile(filename);
settings->writeGlobalSettings();
}
}
void QmlProfilerTool::showSaveDialog() void QmlProfilerTool::showSaveDialog()
{ {
QString filename = QFileDialog::getSaveFileName(ICore::mainWindow(), tr("Save QML Trace"), QString(), QString filename = QFileDialog::getSaveFileName(
tr("QML traces (*%1)").arg(QLatin1String(TraceFileExtension))); ICore::mainWindow(), tr("Save QML Trace"),
QmlProfilerPlugin::globalSettings()->lastTraceFile(),
tr("QML traces (*%1)").arg(QLatin1String(TraceFileExtension)));
if (!filename.isEmpty()) { if (!filename.isEmpty()) {
if (!filename.endsWith(QLatin1String(TraceFileExtension))) if (!filename.endsWith(QLatin1String(TraceFileExtension)))
filename += QLatin1String(TraceFileExtension); filename += QLatin1String(TraceFileExtension);
saveLastTraceFile(filename);
AnalyzerManager::mainWindow()->setEnabled(false); AnalyzerManager::mainWindow()->setEnabled(false);
d->m_profilerModelManager->save(filename); d->m_profilerModelManager->save(filename);
} }
@@ -559,10 +572,13 @@ void QmlProfilerTool::showLoadDialog()
AnalyzerManager::selectAction(QmlProfilerRemoteActionId); AnalyzerManager::selectAction(QmlProfilerRemoteActionId);
QString filename = QFileDialog::getOpenFileName(ICore::mainWindow(), tr("Load QML Trace"), QString(), QString filename = QFileDialog::getOpenFileName(
tr("QML traces (*%1)").arg(QLatin1String(TraceFileExtension))); ICore::mainWindow(), tr("Load QML Trace"),
QmlProfilerPlugin::globalSettings()->lastTraceFile(),
tr("QML traces (*%1)").arg(QLatin1String(TraceFileExtension)));
if (!filename.isEmpty()) { if (!filename.isEmpty()) {
saveLastTraceFile(filename);
AnalyzerManager::mainWindow()->setEnabled(false); AnalyzerManager::mainWindow()->setEnabled(false);
connect(d->m_profilerModelManager, &QmlProfilerModelManager::recordedFeaturesChanged, connect(d->m_profilerModelManager, &QmlProfilerModelManager::recordedFeaturesChanged,
this, &QmlProfilerTool::setRecordedFeatures); this, &QmlProfilerTool::setRecordedFeatures);