From 606771735a16e72892bb2a363e0d431e8140d618 Mon Sep 17 00:00:00 2001 From: miruka Date: Tue, 14 May 2019 19:44:40 -0400 Subject: [PATCH] =?UTF-8?q?ListModel.updateItem()=20ignore=5Froles=20?= =?UTF-8?q?=E2=86=92=20no=5Fupdate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- harmonyqml/backend/model/items.py | 6 +++--- harmonyqml/backend/model/list_model.py | 12 ++++++------ harmonyqml/backend/signal_manager.py | 8 ++++---- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/harmonyqml/backend/model/items.py b/harmonyqml/backend/model/items.py index 5b7ec4a0..237056be 100644 --- a/harmonyqml/backend/model/items.py +++ b/harmonyqml/backend/model/items.py @@ -26,15 +26,15 @@ class RoomCategory(ListItem): class Room(ListItem): - _required_init_values = {"roomId", "displayName"} - _constant = {"roomId"} + _required_init_values = {"roomId", "displayName", "members"} + _constant = {"roomId", "members"} roomId: str = "" displayName: str = "" topic: Optional[str] = None lastEventDateTime: Optional[QDateTime] = None typingMembers: List[str] = [] - members: List[str] = [] + members: ListModel = ListModel() inviter: Optional[Dict[str, str]] = None leftEvent: Optional[Dict[str, str]] = None diff --git a/harmonyqml/backend/model/list_model.py b/harmonyqml/backend/model/list_model.py index 05bedd97..0c8702dc 100644 --- a/harmonyqml/backend/model/list_model.py +++ b/harmonyqml/backend/model/list_model.py @@ -279,9 +279,9 @@ class ListModel(QAbstractListModel): @pyqtSlot(str, "QVariantMap", result=int) @pyqtSlot(str, "QVariantMap", "QStringList", result=int) def updateItem(self, - index: Index, - value: NewItem, - ignore_roles: Sequence[str] = ()) -> int: + index: Index, + value: NewItem, + no_update: Sequence[str] = ()) -> int: value = self._convert_new_value(value) i_index: int = self.indexWhere(index, _can_use_default_factory=False) \ @@ -292,7 +292,7 @@ class ListModel(QAbstractListModel): updated_roles: Set[int] = set() for role_name, role_num in self.roleNumbers().items(): - if role_name not in ignore_roles: + if role_name not in no_update: old_value = getattr(to_update, role_name) new_value = getattr(value, role_name) @@ -321,10 +321,10 @@ class ListModel(QAbstractListModel): update_with: NewItem, new_index_if_insert: Optional[int] = None, new_index_if_update: Optional[int] = None, - ignore_roles: Sequence[str] = ()) -> None: + no_update: Sequence[str] = ()) -> None: try: index = self.updateItem( - where_main_key_is, update_with, ignore_roles + where_main_key_is, update_with, no_update ) except (IndexError, ValueError): self.insert(new_index_if_insert or len(self), update_with) diff --git a/harmonyqml/backend/signal_manager.py b/harmonyqml/backend/signal_manager.py index 3c24fd78..a2bf0871 100644 --- a/harmonyqml/backend/signal_manager.py +++ b/harmonyqml/backend/signal_manager.py @@ -148,7 +148,7 @@ class SignalManager(QObject): displayName = get_displayname(self, user), devices = ListModel() ), - ignore_roles = ("devices",), + no_update = ("devices",), ) @@ -175,7 +175,7 @@ class SignalManager(QObject): lastEventDateTime = QDateTime.currentDateTime(), # FIXME members = list(nio_room.users.keys()), ), - ignore_roles = ("typingMembers"), + no_update = ("typingMembers"), ) signal = self.roomCategoryChanged @@ -202,7 +202,7 @@ class SignalManager(QObject): topic = nio_room.topic, members = list(nio_room.users.keys()), ), - ignore_roles = ("typingMembers", "lastEventDateTime"), + no_update = ("typingMembers", "lastEventDateTime"), ) signal = self.roomCategoryChanged @@ -237,7 +237,7 @@ class SignalManager(QObject): if left_time else QDateTime.currentDateTime() ), ), - ignore_roles = ("members", "lastEventDateTime"), + no_update = ("members", "lastEventDateTime"), ) signal = self.roomCategoryChanged