@@ -1334,13 +1334,14 @@ UserModel *UserModel::instance()
13341334UserModel::UserModel (QObject *parent)
13351335 : QAbstractListModel(parent)
13361336{
1337- // TODO: Remember selected user from last quit via settings file
13381337 if (AccountManager::instance ()->accounts ().size () > 0 ) {
1339- buildUserList ();
1338+ setInitialUser ();
13401339 }
13411340
13421341 connect (AccountManager::instance (), &AccountManager::accountAdded,
1343- this , &UserModel::buildUserList);
1342+ this , &UserModel::addAccsToUserList);
1343+ connect (AccountManager::instance (), &AccountManager::accountListInitialized,
1344+ this , &UserModel::setInitialUser);
13441345}
13451346
13461347void UserModel::buildUserList ()
@@ -1349,10 +1350,41 @@ void UserModel::buildUserList()
13491350 auto user = AccountManager::instance ()->accounts ().at (i);
13501351 addUser (user);
13511352 }
1353+ }
1354+
1355+ void UserModel::addAccsToUserList ()
1356+ {
13521357 if (_init) {
1353- _users.first ()->setCurrentUser (true );
1354- _init = false ;
1358+ return ;
13551359 }
1360+
1361+ buildUserList ();
1362+ }
1363+
1364+ void UserModel::setInitialUser ()
1365+ {
1366+ if (!_init) {
1367+ return ;
1368+ }
1369+
1370+ buildUserList ();
1371+
1372+ if (!_users.isEmpty ()) {
1373+ ConfigFile cfg;
1374+ const uint lastSelectedAccountId = cfg.lastSelectedAccount ();
1375+
1376+ for (int i = 0 ; i < _users.size (); i++) {
1377+ if (_users.at (i)->account ()->id ().toUInt () == lastSelectedAccountId) {
1378+ setCurrentUserId (i);
1379+ }
1380+ }
1381+
1382+ if (_currentUserId < 0 ) {
1383+ setCurrentUserId (0 );
1384+ }
1385+ }
1386+
1387+ _init = false ;
13561388}
13571389
13581390int UserModel::numUsers ()
@@ -1430,7 +1462,7 @@ void UserModel::addUser(AccountStatePtr &user, const bool &isCurrent)
14301462 });
14311463
14321464 _users << u;
1433- if (isCurrent || _currentUserId < 0 ) {
1465+ if (isCurrent || ( _currentUserId < 0 && !_init) ) {
14341466 setCurrentUserId (_users.size () - 1 );
14351467 }
14361468
@@ -1524,6 +1556,8 @@ void UserModel::setCurrentUserId(const int id)
15241556 // order has changed, index remained the same
15251557 emit currentUserChanged ();
15261558 } else if (_currentUserId != id) {
1559+ ConfigFile cfg;
1560+ cfg.setLastSelectedAccount (_users[id]->account ()->id ().toUInt ());
15271561 _currentUserId = id;
15281562 emit currentUserChanged ();
15291563 }
0 commit comments