Window {
id: dialog
+
+ title: qsTr("Set user status")
property NC.UserStatusSelectorModel model: NC.UserStatusSelectorModel {
onFinished: dialog.close()
}
+ property int userIndex
+ onUserIndexChanged: model.load(userIndex)
minimumWidth: view.implicitWidth
minimumHeight: view.implicitHeight
font.pixelSize: Style.topLinePixelSize\r
palette.windowText: Style.ncTextColor\r
hoverEnabled: true\r
- onClicked: {\r
- showUserStatusSelectorDialog(index)\r
- accountMenu.close()\r
- }\r
+ onClicked: showUserStatusSelectorDialog(index)\r
\r
background: Item {\r
height: parent.height\r
}\r
}\r
\r
- Loader {\r
- id: userStatusSelectorDialogLoader\r
- }\r
-\r
Menu {\r
id: accountMenu\r
\r
userLineInstantiator.active = true;\r
}\r
\r
+ Loader {\r
+ id: userStatusSelectorDialogLoader\r
+\r
+ property int userIndex\r
+\r
+ function openDialog(newUserIndex) {\r
+ console.log(`About to show dialog for user with index ${newUserIndex}`);\r
+ userIndex = newUserIndex;\r
+ active = true;\r
+ item.show();\r
+ }\r
+\r
+ active: false\r
+ sourceComponent: UserStatusSelectorDialog {\r
+ userIndex: userStatusSelectorDialogLoader.userIndex\r
+ }\r
+\r
+ onLoaded: {\r
+ item.model.load(userIndex);\r
+ item.show();\r
+ }\r
+ }\r
+\r
Instantiator {\r
id: userLineInstantiator\r
model: UserModel\r
delegate: UserLine {\r
onShowUserStatusSelectorDialog: {\r
- userStatusSelectorDialogLoader.source = "qrc:/qml/src/gui/UserStatusSelectorDialog.qml"\r
- userStatusSelectorDialogLoader.item.title = qsTr("Set user status")\r
- userStatusSelectorDialogLoader.item.model.load(index)\r
- userStatusSelectorDialogLoader.item.show()\r
+ userStatusSelectorDialogLoader.openDialog(model.index);\r
+ accountMenu.close();\r
}\r
}\r
onObjectAdded: accountMenu.insertItem(index, object)\r
void UserStatusSelectorModel::load(int id)
{
reset();
+ qCDebug(lcUserStatusDialogModel) << "Loading user status connector for user with index: " << id;
_userStatusConnector = UserModel::instance()->userStatusConnector(id);
init();
}
void UserStatusSelectorModel::setOnlineStatus(UserStatus::OnlineStatus status)
{
- if (status == _userStatus.state()) {
+ if (!_userStatusConnector || status == _userStatus.state()) {
return;
}