diff --git a/applets/devicenotifier/package/contents/ui/FullRepresentation.qml b/applets/devicenotifier/package/contents/ui/FullRepresentation.qml --- a/applets/devicenotifier/package/contents/ui/FullRepresentation.qml +++ b/applets/devicenotifier/package/contents/ui/FullRepresentation.qml @@ -158,10 +158,10 @@ DeviceItem { width: notifierDialog.width udi: DataEngineSource - icon: sdSource.data[udi].Icon - deviceName: sdSource.data[udi].Description - emblemIcon: Emblems[0] - state: sdSource.data[udi].State + icon: sdSource.data[udi] ? sdSource.data[udi].Icon : "" + deviceName: sdSource.data[udi] ? sdSource.data[udi].Description : "" + emblemIcon: Emblems && Emblems[0] ? Emblems[0] : "" + state: sdSource.data[udi] ? sdSource.data[udi].State : 0 percentUsage: { if (!sdSource.data[udi]) { @@ -177,9 +177,10 @@ actionIcon: mounted ? "media-eject" : "media-mount" actionVisible: model["Device Types"].indexOf("Portable Media Player") == -1 actionToolTip: { + var types = model["Device Types"]; if (!mounted) { return i18n("Click to access this device from other applications.") - } else if (model["Device Types"].indexOf("OpticalDisc") != -1) { + } else if (types && types.indexOf("OpticalDisc") != -1) { return i18n("Click to eject this disc.") } else { return i18n("Click to safely remove this device.") diff --git a/applets/devicenotifier/package/contents/ui/devicenotifier.qml b/applets/devicenotifier/package/contents/ui/devicenotifier.qml --- a/applets/devicenotifier/package/contents/ui/devicenotifier.qml +++ b/applets/devicenotifier/package/contents/ui/devicenotifier.qml @@ -140,6 +140,10 @@ } var device = data[udi]; + if (!device) { + return false; + } + return (devicesType === "removable" && device.Removable) || (devicesType === "nonRemovable" && !device.Removable); } @@ -246,6 +250,10 @@ } function isMounted(udi) { + if (!sdSource.data[udi]) { + return false; + } + var types = sdSource.data[udi]["Device Types"]; if (types.indexOf("Storage Access") >= 0) { return sdSource.data[udi]["Accessible"];