(propertyInfo)
| 358 | } |
| 359 | |
| 360 | function bindGetterSetter(propertyInfo) |
| 361 | { |
| 362 | var propertyIndex = propertyInfo[0]; |
| 363 | var propertyName = propertyInfo[1]; |
| 364 | var notifySignalData = propertyInfo[2]; |
| 365 | // initialize property cache with current value |
| 366 | // NOTE: if this is an object, it is not directly unwrapped as it might |
| 367 | // reference other QObject that we do not know yet |
| 368 | object.__propertyCache__[propertyIndex] = propertyInfo[3]; |
| 369 | |
| 370 | if (notifySignalData) { |
| 371 | if (notifySignalData[0] === 1) { |
| 372 | // signal name is optimized away, reconstruct the actual name |
| 373 | notifySignalData[0] = propertyName + "Changed"; |
| 374 | } |
| 375 | addSignal(notifySignalData, true); |
| 376 | } |
| 377 | |
| 378 | Object.defineProperty(object, propertyName, { |
| 379 | configurable: true, |
| 380 | get: function () { |
| 381 | var propertyValue = object.__propertyCache__[propertyIndex]; |
| 382 | if (propertyValue === undefined) { |
| 383 | // This shouldn't happen |
| 384 | console.warn("Undefined value in property cache for property \"" + propertyName + "\" in object " + object.__id__); |
| 385 | } |
| 386 | |
| 387 | return propertyValue; |
| 388 | }, |
| 389 | set: function(value) { |
| 390 | if (value === undefined) { |
| 391 | console.warn("Property setter for " + propertyName + " called with undefined value!"); |
| 392 | return; |
| 393 | } |
| 394 | object.__propertyCache__[propertyIndex] = value; |
| 395 | var valueToSend = value; |
| 396 | if (valueToSend instanceof QObject && webChannel.objects[valueToSend.__id__] !== undefined) |
| 397 | valueToSend = { "id": valueToSend.__id__ }; |
| 398 | webChannel.exec({ |
| 399 | "type": QWebChannelMessageTypes.setProperty, |
| 400 | "object": object.__id__, |
| 401 | "property": propertyIndex, |
| 402 | "value": valueToSend |
| 403 | }); |
| 404 | } |
| 405 | }); |
| 406 | |
| 407 | } |
| 408 | |
| 409 | // ---------------------------------------------------------------------- |
| 410 |
nothing calls this directly
no test coverage detected