@@ -88,12 +88,16 @@ public:
88 void setUsername(const QString &username);
88 void setUsername(const QString &username);
91+ void findAndSetUsername(const QString &username);
91 void nextFakeData();
93 void nextFakeData();
93 void generateFakeData();
95 void generateFakeData();
95 void loadFakeData();
97 void loadFakeData();
99+ void loadUserMetricsData();
97 void finishSetFakeData();
101 void finishSetFakeData();
@@ -131,7 +135,7 @@ private:
133UserMetricsDataPrivate::UserMetricsDataPrivate(UserMetricsData *parent) :
137UserMetricsDataPrivate::UserMetricsDataPrivate(UserMetricsData *parent) :
134− q_ptr(parent), m_firstColor(this), m_secondColor(this)
138+ q_ptr(parent), m_label(""), m_firstColor(this), m_secondColor(this)
136 m_length = calculateLength();
140 m_length = calculateLength();
@@ -229,12 +233,8 @@ UserMetricsPrivate::~UserMetricsPrivate()
232−void UserMetricsPrivate::setUsername(const QString &username)
236+void UserMetricsPrivate::findAndSetUsername(const QString &username)
234− if (m_username == username && m_newData) {
238 m_username = username;
238 m_username = username;
240 m_dataIndex = m_fakeData.constFind(m_username);
240 m_dataIndex = m_fakeData.constFind(m_username);
@@ -243,6 +243,16 @@ void UserMetricsPrivate::setUsername(const QString &username)
243 m_dataIndex = m_fakeData.constFind("");
243 m_dataIndex = m_fakeData.constFind("");
246+ m_newData = *m_dataIndex;
249+void UserMetricsPrivate::setUsername(const QString &username)
251+ if (m_username == username && m_newData) {
255+ findAndSetUsername(username);
246 loadFakeData();
256 loadFakeData();
248 q_ptr->usernameChanged(m_username);
258 q_ptr->usernameChanged(m_username);
@@ -332,7 +342,6 @@ void UserMetricsPrivate::generateFakeData()
333void UserMetricsPrivate::loadFakeData()
343void UserMetricsPrivate::loadFakeData()
335− m_newData = *m_dataIndex;
337 bool oldLabelEmpty = m_label.isEmpty();
346 bool oldLabelEmpty = m_label.isEmpty();
338 bool newLabelEmpty = m_newData->label().isEmpty();
347 bool newLabelEmpty = m_newData->label().isEmpty();
@@ -351,24 +360,28 @@ void UserMetricsPrivate::loadFakeData()
351 // we emit no signal if the data has stayed empty
360 // we emit no signal if the data has stayed empty
354−void UserMetricsPrivate::finishSetFakeData()
363+void UserMetricsPrivate::loadUserMetricsData()
356− bool oldLabelEmpty = m_label.isEmpty();
357− bool newLabelEmpty = m_newData->label().isEmpty();
359 m_label = m_newData->label();
365 m_label = m_newData->label();
360 m_firstColor = m_newData->firstColor();
366 m_firstColor = m_newData->firstColor();
361 m_firstMonth.setVariantList(m_newData->firstMonth());
367 m_firstMonth.setVariantList(m_newData->firstMonth());
362 m_secondColor = m_newData->secondColor();
368 m_secondColor = m_newData->secondColor();
363 m_secondMonth.setVariantList(m_newData->secondMonth());
369 m_secondMonth.setVariantList(m_newData->secondMonth());
370+ m_currentDay = m_newData->length();
373+void UserMetricsPrivate::finishSetFakeData()
375+ bool oldLabelEmpty = m_label.isEmpty();
376+ bool newLabelEmpty = m_newData->label().isEmpty();
365 bool currentDayChanged = m_currentDay != m_newData->length();
377 bool currentDayChanged = m_currentDay != m_newData->length();
366− m_currentDay = m_newData->length();
378+
379+ loadUserMetricsData();
368 q_ptr->labelChanged(m_label);
381 q_ptr->labelChanged(m_label);
369 if (currentDayChanged)
382 if (currentDayChanged)
371− q_ptr->currentDayChanged(m_currentDay);
384+ q_ptr->currentDayChanged(m_currentDay);
374 if (oldLabelEmpty && !newLabelEmpty)
387 if (oldLabelEmpty && !newLabelEmpty)
@@ -396,6 +409,7 @@ void UserMetricsPrivate::nextFakeData()
412+ m_newData = *m_dataIndex;
399 loadFakeData();
413 loadFakeData();
@@ -464,6 +478,12 @@ void UserMetrics::readyForDataChangeSlot()
464 d_ptr->finishSetFakeData();
478 d_ptr->finishSetFakeData();
481+void UserMetrics::reset()
483+ d_ptr->findAndSetUsername("");
484+ d_ptr->loadUserMetricsData();
468 * Factory methods
488 * Factory methods