@@ -884,6 +884,16 @@ const QVariantList &User::groupFolders() const
884884 return _trayFolderInfos;
885885}
886886
887+ bool User::canLogout () const
888+ {
889+ return !isPublicShareLink ();
890+ }
891+
892+ bool User::isPublicShareLink () const
893+ {
894+ return _account->account ()->isPublicShareLink ();
895+ }
896+
887897void User::slotItemCompleted (const QString &folder, const SyncFileItemPtr &item)
888898{
889899 auto folderInstance = FolderMan::instance ()->folder (folder);
@@ -988,17 +998,27 @@ void User::logout() const
988998
989999QString User::name () const
9901000{
1001+ if (isPublicShareLink ()) {
1002+ return tr (" Public Share Link" );
1003+ }
1004+
9911005 return _account->account ()->prettyName ();
9921006}
9931007
9941008QString User::server (bool shortened) const
9951009{
996- QString serverUrl = _account->account ()->url ().toString ();
1010+ auto serverUrl = _account->account ()->url ();
1011+
1012+ if (isPublicShareLink ()) {
1013+ serverUrl.setUserName ({});
1014+ }
1015+ QString stringServerUrl = serverUrl.toString ();
9971016 if (shortened) {
998- serverUrl.replace (QLatin1String (" https://" ), QLatin1String (" " ));
999- serverUrl.replace (QLatin1String (" http://" ), QLatin1String (" " ));
1017+ stringServerUrl.replace (QLatin1String (" https://" ), QLatin1String (" " ));
1018+ stringServerUrl.replace (QLatin1String (" http://" ), QLatin1String (" " ));
1019+
10001020 }
1001- return serverUrl ;
1021+ return stringServerUrl ;
10021022}
10031023
10041024UserStatus::OnlineStatus User::status () const
@@ -1509,34 +1529,51 @@ int UserModel::rowCount(const QModelIndex &parent) const
15091529
15101530QVariant UserModel::data (const QModelIndex &index, int role) const
15111531{
1512- if (index.row () < 0 || index.row () >= _users.count ()) {
1513- return QVariant ();
1514- }
1515-
1516- if (role == NameRole) {
1517- return _users[index.row ()]->name ();
1518- } else if (role == ServerRole) {
1519- return _users[index.row ()]->server ();
1520- } else if (role == ServerHasUserStatusRole) {
1521- return _users[index.row ()]->serverHasUserStatus ();
1522- } else if (role == StatusIconRole) {
1523- return _users[index.row ()]->statusIcon ();
1524- } else if (role == StatusEmojiRole) {
1525- return _users[index.row ()]->statusEmoji ();
1526- } else if (role == StatusMessageRole) {
1527- return _users[index.row ()]->statusMessage ();
1528- } else if (role == DesktopNotificationsAllowedRole) {
1529- return _users[index.row ()]->isDesktopNotificationsAllowed ();
1530- } else if (role == AvatarRole) {
1531- return _users[index.row ()]->avatarUrl ();
1532- } else if (role == IsCurrentUserRole) {
1533- return _users[index.row ()]->isCurrentUser ();
1534- } else if (role == IsConnectedRole) {
1535- return _users[index.row ()]->isConnected ();
1536- } else if (role == IdRole) {
1537- return index.row ();
1538- }
1539- return QVariant ();
1532+ auto result = QVariant{};
1533+ switch (role)
1534+ {
1535+ case NameRole:
1536+ result = _users[index.row ()]->name ();
1537+ break ;
1538+ case ServerRole:
1539+ result = _users[index.row ()]->server ();
1540+ break ;
1541+ case ServerHasUserStatusRole:
1542+ result = _users[index.row ()]->serverHasUserStatus ();
1543+ break ;
1544+ case StatusIconRole:
1545+ result = _users[index.row ()]->statusIcon ();
1546+ break ;
1547+ case StatusEmojiRole:
1548+ result = _users[index.row ()]->statusEmoji ();
1549+ break ;
1550+ case StatusMessageRole:
1551+ result = _users[index.row ()]->statusMessage ();
1552+ break ;
1553+ case DesktopNotificationsAllowedRole:
1554+ result = _users[index.row ()]->isDesktopNotificationsAllowed ();
1555+ break ;
1556+ case AvatarRole:
1557+ result = _users[index.row ()]->avatarUrl ();
1558+ break ;
1559+ case IsCurrentUserRole:
1560+ result = _users[index.row ()]->isCurrentUser ();
1561+ break ;
1562+ case IsConnectedRole:
1563+ result = _users[index.row ()]->isConnected ();
1564+ break ;
1565+ case IdRole:
1566+ result = index.row ();
1567+ break ;
1568+ case CanLogoutRole:
1569+ result = _users[index.row ()]->canLogout ();
1570+ break ;
1571+ case RemoveAccountTextRole:
1572+ result = _users[index.row ()]->isPublicShareLink () ? tr (" Leave share" ) : tr (" Remove account" );
1573+ break ;
1574+ }
1575+
1576+ return result;
15401577}
15411578
15421579QHash<int , QByteArray> UserModel::roleNames () const
@@ -1545,6 +1582,8 @@ QHash<int, QByteArray> UserModel::roleNames() const
15451582 roles[NameRole] = " name" ;
15461583 roles[ServerRole] = " server" ;
15471584 roles[ServerHasUserStatusRole] = " serverHasUserStatus" ;
1585+ roles[CanLogoutRole] = " canLogout" ;
1586+ roles[RemoveAccountTextRole] = " removeAccountText" ;
15481587 roles[StatusIconRole] = " statusIcon" ;
15491588 roles[StatusEmojiRole] = " statusEmoji" ;
15501589 roles[StatusMessageRole] = " statusMessage" ;
0 commit comments