@@ -900,6 +900,16 @@ const QVariantList &User::groupFolders() const
900900 return _trayFolderInfos;
901901}
902902
903+ bool User::canLogout () const
904+ {
905+ return !isPublicShareLink ();
906+ }
907+
908+ bool User::isPublicShareLink () const
909+ {
910+ return _account->account ()->isPublicShareLink ();
911+ }
912+
903913void User::slotItemCompleted (const QString &folder, const SyncFileItemPtr &item)
904914{
905915 auto folderInstance = FolderMan::instance ()->folder (folder);
@@ -1004,17 +1014,27 @@ void User::logout() const
10041014
10051015QString User::name () const
10061016{
1017+ if (isPublicShareLink ()) {
1018+ return tr (" Public Share Link" );
1019+ }
1020+
10071021 return _account->account ()->prettyName ();
10081022}
10091023
10101024QString User::server (bool shortened) const
10111025{
1012- QString serverUrl = _account->account ()->url ().toString ();
1026+ auto serverUrl = _account->account ()->url ();
1027+
1028+ if (isPublicShareLink ()) {
1029+ serverUrl.setUserName ({});
1030+ }
1031+ QString stringServerUrl = serverUrl.toString ();
10131032 if (shortened) {
1014- serverUrl.replace (QLatin1String (" https://" ), QLatin1String (" " ));
1015- serverUrl.replace (QLatin1String (" http://" ), QLatin1String (" " ));
1033+ stringServerUrl.replace (QLatin1String (" https://" ), QLatin1String (" " ));
1034+ stringServerUrl.replace (QLatin1String (" http://" ), QLatin1String (" " ));
1035+
10161036 }
1017- return serverUrl ;
1037+ return stringServerUrl ;
10181038}
10191039
10201040UserStatus::OnlineStatus User::status () const
@@ -1579,36 +1599,54 @@ int UserModel::rowCount(const QModelIndex &parent) const
15791599
15801600QVariant UserModel::data (const QModelIndex &index, int role) const
15811601{
1582- if (index.row () < 0 || index.row () >= _users.count ()) {
1583- return QVariant ();
1584- }
1585-
1586- if (role == NameRole) {
1587- return _users[index.row ()]->name ();
1588- } else if (role == ServerRole) {
1589- return _users[index.row ()]->server ();
1590- } else if (role == ServerHasUserStatusRole) {
1591- return _users[index.row ()]->serverHasUserStatus ();
1592- } else if (role == StatusRole) {
1593- return QVariant::fromValue (_users[index.row ()]->status ());
1594- } else if (role == StatusIconRole) {
1595- return _users[index.row ()]->statusIcon ();
1596- } else if (role == StatusEmojiRole) {
1597- return _users[index.row ()]->statusEmoji ();
1598- } else if (role == StatusMessageRole) {
1599- return _users[index.row ()]->statusMessage ();
1600- } else if (role == DesktopNotificationsAllowedRole) {
1601- return _users[index.row ()]->isDesktopNotificationsAllowed ();
1602- } else if (role == AvatarRole) {
1603- return _users[index.row ()]->avatarUrl ();
1604- } else if (role == IsCurrentUserRole) {
1605- return _users[index.row ()]->isCurrentUser ();
1606- } else if (role == IsConnectedRole) {
1607- return _users[index.row ()]->isConnected ();
1608- } else if (role == IdRole) {
1609- return index.row ();
1610- }
1611- return QVariant ();
1602+ auto result = QVariant{};
1603+ switch (static_cast <UserRoles>(role))
1604+ {
1605+ case NameRole:
1606+ result = _users[index.row ()]->name ();
1607+ break ;
1608+ case ServerRole:
1609+ result = _users[index.row ()]->server ();
1610+ break ;
1611+ case ServerHasUserStatusRole:
1612+ result = _users[index.row ()]->serverHasUserStatus ();
1613+ break ;
1614+ case StatusRole:
1615+ result = QVariant::fromValue (_users[index.row ()]->status ());
1616+ break ;
1617+ case StatusIconRole:
1618+ result = _users[index.row ()]->statusIcon ();
1619+ break ;
1620+ case StatusEmojiRole:
1621+ result = _users[index.row ()]->statusEmoji ();
1622+ break ;
1623+ case StatusMessageRole:
1624+ result = _users[index.row ()]->statusMessage ();
1625+ break ;
1626+ case DesktopNotificationsAllowedRole:
1627+ result = _users[index.row ()]->isDesktopNotificationsAllowed ();
1628+ break ;
1629+ case AvatarRole:
1630+ result = _users[index.row ()]->avatarUrl ();
1631+ break ;
1632+ case IsCurrentUserRole:
1633+ result = _users[index.row ()]->isCurrentUser ();
1634+ break ;
1635+ case IsConnectedRole:
1636+ result = _users[index.row ()]->isConnected ();
1637+ break ;
1638+ case IdRole:
1639+ result = index.row ();
1640+ break ;
1641+ case CanLogoutRole:
1642+ result = _users[index.row ()]->canLogout ();
1643+ break ;
1644+ case RemoveAccountTextRole:
1645+ result = _users[index.row ()]->isPublicShareLink () ? tr (" Leave share" ) : tr (" Remove account" );
1646+ break ;
1647+ }
1648+
1649+ return result;
16121650}
16131651
16141652QHash<int , QByteArray> UserModel::roleNames () const
@@ -1626,6 +1664,8 @@ QHash<int, QByteArray> UserModel::roleNames() const
16261664 roles[IsCurrentUserRole] = " isCurrentUser" ;
16271665 roles[IsConnectedRole] = " isConnected" ;
16281666 roles[IdRole] = " id" ;
1667+ roles[CanLogoutRole] = " canLogout" ;
1668+ roles[RemoveAccountTextRole] = " removeAccountText" ;
16291669 return roles;
16301670}
16311671
0 commit comments