From a13a974e2d9c791168e261cc3e68d12410d475bf Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Fri, 24 Apr 2015 07:02:51 +0200 Subject: [PATCH] Account: Generate shorter account ids. --- src/gui/accountmanager.cpp | 27 +++++++++++++++++++++++++++ src/gui/accountmanager.h | 3 +++ src/libsync/account.cpp | 2 -- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp index b72af542a..3be3c2cef 100644 --- a/src/gui/accountmanager.cpp +++ b/src/gui/accountmanager.cpp @@ -192,6 +192,12 @@ AccountPtr AccountManager::load(const QScopedPointer& settings) void AccountManager::addAccount(const AccountPtr& newAccount) { + auto id = newAccount->id(); + if (id.isEmpty() || !isAccountIdAvailable(id)) { + id = generateFreeAccountId(); + } + newAccount->_id = id; + AccountStatePtr newAccountState(new AccountState(newAccount)); _accounts << newAccountState; emit accountAdded(newAccountState.data()); @@ -206,5 +212,26 @@ void AccountManager::shutdown() } } +bool AccountManager::isAccountIdAvailable(const QString& id) const +{ + foreach (const auto& acc, _accounts) { + if (acc->account()->id() == id) { + return false; + } + } + return true; +} + +QString AccountManager::generateFreeAccountId() const +{ + int i = 0; + forever { + QString id = QString::number(i); + if (isAccountIdAvailable(id)) { + return id; + } + ++i; + } +} } diff --git a/src/gui/accountmanager.h b/src/gui/accountmanager.h index 65a9ccc3f..228e54c3e 100644 --- a/src/gui/accountmanager.h +++ b/src/gui/accountmanager.h @@ -55,6 +55,9 @@ private: AccountPtr load(const QScopedPointer& settings); bool restoreFromLegacySettings(); + bool isAccountIdAvailable(const QString& id) const; + QString generateFreeAccountId() const; + Q_SIGNALS: void accountAdded(AccountState *account); diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index d0a4d2277..3c1bcff5c 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -32,7 +32,6 @@ #include #include #include -#include namespace OCC { @@ -46,7 +45,6 @@ Account::Account(QObject *parent) , _wasMigrated(false) { qRegisterMetaType("AccountPtr"); - _id = QUuid::createUuid().toString(); } AccountPtr Account::create()