diff options
author | Claudio Cambra <claudio.cambra@gmail.com> | 2022-07-08 17:49:27 +0300 |
---|---|---|
committer | Claudio Cambra <claudio.cambra@gmail.com> | 2022-07-15 17:47:17 +0300 |
commit | 539ba93fd167c63269cc7fc7cb157cd4143e130b (patch) | |
tree | 574c2b14ddf8598257c1125f8d0c39f993cd04f1 /src/gui/tray | |
parent | 3271653412e90a0c750baa5b79add7bc2e4ee6ae (diff) |
QMLify the UserModel, use properties rather than setter methods
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
Diffstat (limited to 'src/gui/tray')
-rw-r--r-- | src/gui/tray/UserLine.qml | 7 | ||||
-rw-r--r-- | src/gui/tray/usermodel.cpp | 30 | ||||
-rw-r--r-- | src/gui/tray/usermodel.h | 28 |
3 files changed, 33 insertions, 32 deletions
diff --git a/src/gui/tray/UserLine.qml b/src/gui/tray/UserLine.qml index 02deaccf1..e3d88888d 100644 --- a/src/gui/tray/UserLine.qml +++ b/src/gui/tray/UserLine.qml @@ -36,10 +36,9 @@ MenuItem { Accessible.role: Accessible.Button
Accessible.name: qsTr("Switch to account") + " " + name
- onClicked: if (!isCurrentUser) {
- UserModel.switchCurrentUser(id)
- } else {
- accountMenu.close()
+ onClicked: {
+ UserModel.currentUserId = id;
+ accountMenu.close();
}
background: Item {
diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp index 566d93cd0..c15742546 100644 --- a/src/gui/tray/usermodel.cpp +++ b/src/gui/tray/usermodel.cpp @@ -895,17 +895,17 @@ void UserModel::buildUserList() } } -Q_INVOKABLE int UserModel::numUsers() +int UserModel::numUsers() { return _users.size(); } -Q_INVOKABLE int UserModel::currentUserId() const +int UserModel::currentUserId() const { return _currentUserId; } -Q_INVOKABLE bool UserModel::isUserConnected(const int id) +bool UserModel::isUserConnected(const int id) { if (id < 0 || id >= _users.size()) return false; @@ -921,7 +921,7 @@ QImage UserModel::avatarById(const int id) return _users[id]->avatar(); } -Q_INVOKABLE QString UserModel::currentUserServer() +QString UserModel::currentUserServer() { if (_currentUserId < 0 || _currentUserId >= _users.size()) return {}; @@ -971,7 +971,7 @@ void UserModel::addUser(AccountStatePtr &user, const bool &isCurrent) endInsertRows(); ConfigFile cfg; u->setNotificationRefreshInterval(cfg.notificationRefreshInterval()); - emit newUserSelected(); + emit currentUserChanged(); } } @@ -980,7 +980,7 @@ int UserModel::currentUserIndex() return _currentUserId; } -Q_INVOKABLE void UserModel::openCurrentAccountLocalFolder() +void UserModel::openCurrentAccountLocalFolder() { if (_currentUserId < 0 || _currentUserId >= _users.size()) return; @@ -988,7 +988,7 @@ Q_INVOKABLE void UserModel::openCurrentAccountLocalFolder() _users[_currentUserId]->openLocalFolder(); } -Q_INVOKABLE void UserModel::openCurrentAccountTalk() +void UserModel::openCurrentAccountTalk() { if (!currentUser()) return; @@ -1001,7 +1001,7 @@ Q_INVOKABLE void UserModel::openCurrentAccountTalk() } } -Q_INVOKABLE void UserModel::openCurrentAccountServer() +void UserModel::openCurrentAccountServer() { if (_currentUserId < 0 || _currentUserId >= _users.size()) return; @@ -1014,18 +1014,18 @@ Q_INVOKABLE void UserModel::openCurrentAccountServer() QDesktopServices::openUrl(url); } -Q_INVOKABLE void UserModel::switchCurrentUser(const int id) +void UserModel::setCurrentUserId(const int id) { - if (_currentUserId < 0 || _currentUserId >= _users.size()) + if (_currentUserId == id || _currentUserId < 0 || _currentUserId >= _users.size()) return; _users[_currentUserId]->setCurrentUser(false); _users[id]->setCurrentUser(true); _currentUserId = id; - emit newUserSelected(); + emit currentUserChanged(); } -Q_INVOKABLE void UserModel::login(const int id) +void UserModel::login(const int id) { if (id < 0 || id >= _users.size()) return; @@ -1033,7 +1033,7 @@ Q_INVOKABLE void UserModel::login(const int id) _users[id]->login(); } -Q_INVOKABLE void UserModel::logout(const int id) +void UserModel::logout(const int id) { if (id < 0 || id >= _users.size()) return; @@ -1041,7 +1041,7 @@ Q_INVOKABLE void UserModel::logout(const int id) _users[id]->logout(); } -Q_INVOKABLE void UserModel::removeAccount(const int id) +void UserModel::removeAccount(const int id) { if (id < 0 || id >= _users.size()) return; @@ -1062,7 +1062,7 @@ Q_INVOKABLE void UserModel::removeAccount(const int id) } if (_users[id]->isCurrentUser() && _users.count() > 1) { - id == 0 ? switchCurrentUser(1) : switchCurrentUser(0); + id == 0 ? setCurrentUserId(1) : setCurrentUserId(0); } _users[id]->logout(); diff --git a/src/gui/tray/usermodel.h b/src/gui/tray/usermodel.h index 28a7eb9ac..054802e3e 100644 --- a/src/gui/tray/usermodel.h +++ b/src/gui/tray/usermodel.h @@ -147,8 +147,8 @@ private: class UserModel : public QAbstractListModel { Q_OBJECT - Q_PROPERTY(User* currentUser READ currentUser NOTIFY newUserSelected) - Q_PROPERTY(int currentUserId READ currentUserId NOTIFY newUserSelected) + Q_PROPERTY(User* currentUser READ currentUser NOTIFY currentUserChanged) + Q_PROPERTY(int currentUserId READ currentUserId WRITE setCurrentUserId NOTIFY currentUserChanged) public: static UserModel *instance(); ~UserModel() override = default; @@ -157,7 +157,6 @@ public: int currentUserIndex(); int rowCount(const QModelIndex &parent = QModelIndex()) const override; - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QImage avatarById(const int id); @@ -166,18 +165,11 @@ public: int findUserIdForAccount(AccountState *account) const; - Q_INVOKABLE void fetchCurrentActivityModel(); - Q_INVOKABLE void openCurrentAccountLocalFolder(); - Q_INVOKABLE void openCurrentAccountTalk(); - Q_INVOKABLE void openCurrentAccountServer(); Q_INVOKABLE int numUsers(); Q_INVOKABLE QString currentUserServer(); int currentUserId() const; + Q_INVOKABLE bool isUserConnected(const int id); - Q_INVOKABLE void switchCurrentUser(const int id); - Q_INVOKABLE void login(const int id); - Q_INVOKABLE void logout(const int id); - Q_INVOKABLE void removeAccount(const int id); Q_INVOKABLE std::shared_ptr<OCC::UserStatusConnector> userStatusConnector(int id); @@ -200,8 +192,18 @@ public: AccountAppList appList() const; signals: - Q_INVOKABLE void addAccount(); - Q_INVOKABLE void newUserSelected(); + void addAccount(); + void currentUserChanged(); + +public slots: + void fetchCurrentActivityModel(); + void openCurrentAccountLocalFolder(); + void openCurrentAccountTalk(); + void openCurrentAccountServer(); + void setCurrentUserId(const int id); + void login(const int id); + void logout(const int id); + void removeAccount(const int id); protected: QHash<int, QByteArray> roleNames() const override; |