-
Notifications
You must be signed in to change notification settings - Fork 121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Accepted with Revisions] SDL 0259 - Disabled Softbuttons #859
Comments
I think this proposal idea generally is good, however I have a few minor notes, and some larger concerns. Notes1. The introduction says:
This should be reworded to "This also allows an app to subscribe to and disable SDL predefined buttons." 2. The motivation is unclear to those not familiar with the iHeart application. 3. I would change 4. In the proposed solution is this sentence:
Alternatives should be placed within the "Alternatives Considered" section. Larger Concerns5. This proposal doesn't cover app library manager API changes. 6. The impact on existing code section is really more of a "downside" section, and it's relatively serious. We generally don't currently have APIs where if you set them but are on an older head unit, the opposite of the intended effect will take place (e.g. a developer sets I think that we should consider a manager-level fallback for disabled buttons where they will automatically not be sent on older head units. It should probably also have a configuration for turning that behavior off if desired. |
Hey @joeljfischer |
I can't help you too much with app library manager API change contacts within your company. I can try to come up with a suggestion on the iOS-side, but I don't have the knowledge to help too much on the Java side. |
The Steering Committee voted to return this proposal for revisions. The author will revise the proposal based on the Project Maintainer's feedback in this comment. |
Here's my suggestion for iOS manager-level additions: 1. Add a new soft button configuration to the screen manager: @property (strong, nonatomic, readonly) SDLSoftButtonConfiguration *softButtonConfiguration; 2. This will involve creating the soft button configuration something like this: @interface SDLSoftButtonConfiguration: NSObject
/// If true, the soft button manager will not send soft button objects with isEnabled=false if on head units that don't support disabled soft buttons. If false, the soft buttons will be sent anyway but will appear enabled on the head unit. Defaults to true.
@property (assign, nonatomic) BOOL enableDisabledButtonFallback;
@end 3. The @property (assign, nonatomic, getter=isDisabled) BOOL disabled; The soft button manager will then have to take both the configuration value and the |
The author has revised this proposal to incorporate the requested revisions from the Steering Committee. The revised proposal is now in review and will be voted upon during the 2020-01-14 meeting. |
<struct name="ButtonCapabilities">
.
.
.
<param name="disabledButtonPossible" type="Boolean" mandatory="true">
<description>The button supports being disabled. If the button is set to disabled, it will still show on the HMI but appear grayed out.
</description>
</param>
</struct> But it should be: <struct name="ButtonCapabilities">
.
.
.
<param name="supportsDisabled" type="Boolean" mandatory="false">
<description>The button supports being disabled. If the button is set to disabled, it will still show on the HMI but appear grayed out.
</description>
</param>
</struct> It should be non-mandatory and a different name to match the
|
1. Agree with Joel |
What happens if the disabling of the button by driver distraction and the disabling of the button by the request from the application overlap? |
3. The button is still capable of receiving button presses, so a good practice for the app developer would be to show an alert saying why the button won't work in the current situation. @Shohei-Kawano I'm going to number your questions. 8. The proposal states that the button will be called back. The |
public boolean isDisabled() { ... }
public void setDisabled(bool disabled) { ... } @property (assign, nonatomic, getter=isDisabled) BOOL disabled;
|
1/2. I'm okay with 3. Personally, I don't see this as a big issue. Plus, I think that it is important that the disabled button does something when pressed; otherwise, the user will be confused. Your alternative of having the soft button manager drop notifications by default is interesting, but I think it's unnecessary. 6. I think that in the majority of cases, the developer will want the fallback behavior to happen on all their disabled buttons, and not on some but not others. If they do want that, they can create that custom behavior without too much effort.
There is no manager APIs for hard buttons, so that is not currently possible.
That's the problem. For the extra flexibility that, in my opinion, few developers will need, we're creating a bunch of extra work for them. IMO, if a single on/off switch covers 90%+ of devs and the custom behavior can be documented and isn't difficult, that works well. It sounds like @kshala-ford and @joeygrover disagree. The alternative API would be to add a property to 7. That wasn't the question, the question was what if the HMI disables the button and the app disables the button, and I tried to answer that question. As far as your revision of the question goes, you're correct, but that's not currently possible on the HMI-side unless SDL-0250 is accepted. As SDL currently stands, it certainly is odd and poor UX for the HMI to disable soft buttons when the vehicle is in motion. |
Author here, just trying to follow up to make sure I understand everything.
public boolean isDisabled() { ... }
public void setDisabled(bool disabled) { ... } @property (assign, nonatomic, getter=isDisabled) BOOL disabled;
Now I'm trying to picture a specific use case where this would happen. Maybe an "info" button for a song that brings up a scrollable message. In the normal state, the app would send a Now consider the case where the the app can't get info for the current song. In order for the app to disable the info button, it would have to send a new |
|
@Shohei-Kawano -san |
The Steering Committee voted to accept this proposal with the following revisions:
public boolean isDisabled() { ... }
public void setDisabled(bool disabled) { ... } @property (assign, nonatomic, getter=isDisabled) BOOL disabled;
|
@MichaelCrimando Please advise when a new PR has been entered to update the proposal to reflect the agreed upon revisions. I'll then merge the PR so the proposal is up to date, and enter issues in the respective repositories for implementation. Thanks! |
@Shohei-Kawano as mentioned during our call, we will need to close and lock conversation on this issue. However, if you have any follow up questions, please feel free to raise them on the SDL Slack Team, or during an upcoming Steering Committee meeting. Thank you! |
Proposal has been updated to reflect agreed upon revisions and issues have been entered: |
Hello SDL community,
The review of the revised "SDL 0259 - Disabled Softbuttons" proposal begins now and runs through January 14, 2020. The previous review of this proposal took place November 6 - November 12, 2019. The proposal is available here:
https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0259-DisabledSoftbuttons.md
Reviews are an important part of the SDL evolution process. All reviews should be sent to the associated Github issue at:
#859
What goes into a review?
The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of SDL. When writing your review, here are some questions you might want to answer in your review:
Please state explicitly whether you believe that the proposal should be accepted into SDL.
More information about the SDL evolution process is available at
https://github.com/smartdevicelink/sdl_evolution/blob/master/process.md
Thank you,
Theresa Lech
Program Manager - Livio
[email protected]
The text was updated successfully, but these errors were encountered: