diff --git a/integration_test/sim_device_display.dart b/integration_test/sim_device_display.dart index f40a39d2..83072b51 100644 --- a/integration_test/sim_device_display.dart +++ b/integration_test/sim_device_display.dart @@ -31,6 +31,21 @@ void main() { await tu.openTab("RC"); final List messages = [ + "836F772050616972696E672E2E2E", + "83772050616972696E672E2E2E20", + "832050616972696E672E2E2E2020", + "8350616972696E672E2E2E202020", + "83616972696E672E2E2E20202020", + "836972696E672E2E2E2020202020", + "8372696E672E2E2E202020202020", + "42442F4456442020202D36302E30", + "43424C2F53415420202D36302E30", + "4344202020202020202D36302E30", + "5456202020202020202D36302E30", + "50484F4E4F202020202D36302E30", + "4E45542020202020202D36302E30", + "424C5545544F4F54482D36302E30", + "4368726F6D6563617320372F3130", "4368726F6D6563617320372F3130", "20436F6E6E656374696E672E2E2E", "1B4368726F6D6563617374206275", diff --git a/lib/constants/Dimens.dart b/lib/constants/Dimens.dart index 4f06bffa..b891340f 100644 --- a/lib/constants/Dimens.dart +++ b/lib/constants/Dimens.dart @@ -94,6 +94,9 @@ class ActivityDimens static EdgeInsetsGeometry get headerPaddingTop => EdgeInsets.only(top: DimensTransform.scale(10)); + static EdgeInsetsGeometry get deviceDisplayPadding + => EdgeInsets.symmetric(horizontal: DimensTransform.scale(24), vertical: DimensTransform.scale(6)); + static const EdgeInsets noPadding = EdgeInsets.all(0); } diff --git a/lib/iscp/StateManager.dart b/lib/iscp/StateManager.dart index 349923db..09c27cdc 100644 --- a/lib/iscp/StateManager.dart +++ b/lib/iscp/StateManager.dart @@ -44,6 +44,7 @@ import "messages/DcpMediaItemMsg.dart"; import "messages/DcpReceiverInformationMsg.dart"; import "messages/DcpSearchCriteriaMsg.dart"; import "messages/DcpTunerModeMsg.dart"; +import "messages/DeviceDisplayMsg.dart"; import "messages/DisplayModeMsg.dart"; import "messages/EnumParameterMsg.dart"; import "messages/InputSelectorMsg.dart"; @@ -488,6 +489,11 @@ class StateManager sendQueries(_state.deviceSettingsState.getQueriesIscp(state.getActiveZone)); sendQueries(_state.soundControlState.getQueriesIscp(state.getActiveZone, state.receiverInformation)); sendQueries(_state.radioState.getQueries(state.getActiveZone)); + if (state.receiverInformation.isPioneer) + { + // #336: DeviceDisplayMsg is only available for Pioneer receivers + sendQueries([DeviceDisplayMsg.CODE]); + } _requestListState(); return changed; } diff --git a/lib/iscp/state/ReceiverInformation.dart b/lib/iscp/state/ReceiverInformation.dart index 9483634c..b1e6602b 100644 --- a/lib/iscp/state/ReceiverInformation.dart +++ b/lib/iscp/state/ReceiverInformation.dart @@ -37,7 +37,7 @@ import "../messages/ToneCommandMsg.dart"; class ReceiverInformation { - static const String BRAND_PIONEER = "Pioneer"; + static const String _BRAND_PIONEER = "Pioneer"; // From ReceiverInformationMsg late String _xml; @@ -289,6 +289,9 @@ class ReceiverInformation String get brand => _getProperty("brand"); + bool get isPioneer + => brand.toUpperCase() == _BRAND_PIONEER.toUpperCase(); + String get model => _getProperty("model"); diff --git a/lib/views/DeviceDisplayView.dart b/lib/views/DeviceDisplayView.dart index da08b2a6..6d59fbf2 100644 --- a/lib/views/DeviceDisplayView.dart +++ b/lib/views/DeviceDisplayView.dart @@ -53,20 +53,24 @@ class DeviceDisplayView extends UpdatableView Logging.info(this, ex.toString()); } - final Widget value = Container( - padding: DialogDimens.rowPadding, + final Widget text = Container( + padding: ActivityDimens.deviceDisplayPadding, margin: DialogDimens.rowPadding, decoration: BoxDecoration( border: Border.all(color: td.disabledColor) ), - alignment: Alignment.center, - child: Text(state.receiverInformation.deviceDisplayValue, style: textStyle), + alignment: Alignment.centerLeft, + child: Text(state.receiverInformation.deviceDisplayValue, style: textStyle, textAlign: TextAlign.start), + ); + + final Widget field = InkWell(child: text, + onTap: () => stateManager.sendQueries([DeviceDisplayMsg.CODE]) ); return Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, - children: [ Expanded(child: value, flex: 1) ] + children: [ Expanded(child: field, flex: 1) ] ); } } \ No newline at end of file diff --git a/lib/views/SetupOperationalCommandsView.dart b/lib/views/SetupOperationalCommandsView.dart index 752950bd..6fccb7fb 100644 --- a/lib/views/SetupOperationalCommandsView.dart +++ b/lib/views/SetupOperationalCommandsView.dart @@ -18,7 +18,6 @@ import "../constants/Dimens.dart"; import "../iscp/messages/PowerStatusMsg.dart"; import "../iscp/messages/ReceiverInformationMsg.dart"; import "../iscp/messages/SetupOperationCommandMsg.dart"; -import "../iscp/state/ReceiverInformation.dart"; import "../views/UpdatableView.dart"; import "../widgets/CustomImageButton.dart"; import "../widgets/CustomTextLabel.dart"; @@ -47,7 +46,7 @@ class SetupOperationalCommandsView extends UpdatableView { cmd.add(SetupOperationCommandMsg.output(SetupOperationCommand.HOME)); } - if (state.receiverInformation.isControlExists("Quick") || state.receiverInformation.brand == ReceiverInformation.BRAND_PIONEER) + if (state.receiverInformation.isControlExists("Quick") || state.receiverInformation.isPioneer) { cmd.add(SetupOperationCommandMsg.output(SetupOperationCommand.QUICK)); }