Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions app/src/main/java/com/valterc/ki2/data/action/Ki2ActionEvent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.valterc.ki2.data.action;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.valterc.ki2.external.ExternalActionTarget;

public class Ki2ActionEvent {

public enum Type {
KAROO,
EXTERNAL
}

@NonNull
private final Type type;
@Nullable
private final KarooActionEvent karooActionEvent;
@Nullable
private final ExternalActionTarget externalActionTarget;
private final int replicate;

private Ki2ActionEvent(@NonNull Type type,
@Nullable KarooActionEvent karooActionEvent,
@Nullable ExternalActionTarget externalActionTarget,
int replicate) {
this.type = type;
this.karooActionEvent = karooActionEvent;
this.externalActionTarget = externalActionTarget;
this.replicate = replicate;
}

@NonNull
public static Ki2ActionEvent forKaroo(@NonNull KarooActionEvent event) {
return new Ki2ActionEvent(Type.KAROO, event, null, event.getReplicate());
}

@NonNull
public static Ki2ActionEvent forExternal(@NonNull ExternalActionTarget target) {
return new Ki2ActionEvent(Type.EXTERNAL, null, target, 1);
}

@NonNull
public static Ki2ActionEvent forExternal(@NonNull ExternalActionTarget target, int replicate) {
return new Ki2ActionEvent(Type.EXTERNAL, null, target, replicate);
}

@NonNull
public Type getType() {
return type;
}

@Nullable
public KarooActionEvent getKarooActionEvent() {
return karooActionEvent;
}

@Nullable
public ExternalActionTarget getExternalActionTarget() {
return externalActionTarget;
}

public int getReplicate() {
return replicate;
}

@NonNull
public Ki2ActionEvent withReplicate(int newReplicate) {
if (type == Type.KAROO && karooActionEvent != null) {
return new Ki2ActionEvent(type, new KarooActionEvent(karooActionEvent, newReplicate), null, newReplicate);
}
if (type == Type.EXTERNAL && externalActionTarget != null) {
return new Ki2ActionEvent(type, null, externalActionTarget, newReplicate);
}
return this;
}
}
47 changes: 47 additions & 0 deletions app/src/main/java/com/valterc/ki2/external/ExternalAction.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.valterc.ki2.external;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

public class ExternalAction {

public static final int SWITCH_CH1 = 1;
public static final int SWITCH_CH2 = 1 << 1;
public static final int SWITCH_CH3 = 1 << 2;
public static final int SWITCH_CH4 = 1 << 3;
public static final int SWITCH_ALL = SWITCH_CH1 | SWITCH_CH2 | SWITCH_CH3 | SWITCH_CH4;

@NonNull
private final String actionId;
@NonNull
private final String label;
@Nullable
private final String iconUri;
private final int allowedSwitches;

public ExternalAction(@NonNull String actionId, @NonNull String label, @Nullable String iconUri, int allowedSwitches) {
this.actionId = actionId;
this.label = label;
this.iconUri = iconUri;
this.allowedSwitches = allowedSwitches;
}

@NonNull
public String getActionId() {
return actionId;
}

@NonNull
public String getLabel() {
return label;
}

@Nullable
public String getIconUri() {
return iconUri;
}

public int getAllowedSwitches() {
return allowedSwitches == 0 ? SWITCH_ALL : allowedSwitches;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.valterc.ki2.external;

import android.content.ComponentName;

import androidx.annotation.NonNull;

public class ExternalActionDescriptor {

@NonNull
private final ComponentName providerComponent;
@NonNull
private final String appLabel;
@NonNull
private final ExternalAction action;

public ExternalActionDescriptor(@NonNull ComponentName providerComponent,
@NonNull String appLabel,
@NonNull ExternalAction action) {
this.providerComponent = providerComponent;
this.appLabel = appLabel;
this.action = action;
}

@NonNull
public ComponentName getProviderComponent() {
return providerComponent;
}

@NonNull
public String getAppLabel() {
return appLabel;
}

@NonNull
public ExternalAction getAction() {
return action;
}
}
Loading