diff --git a/mobile/src/main/java/org/openhab/habdroid/model/ChangedItem.java b/mobile/src/main/java/org/openhab/habdroid/model/ChangedItem.java index 61935d965491ec3357ef01c93fbd9c91137a714b..adab499172a48236334b376adb88f87fa1eb30f6 100644 --- a/mobile/src/main/java/org/openhab/habdroid/model/ChangedItem.java +++ b/mobile/src/main/java/org/openhab/habdroid/model/ChangedItem.java @@ -15,6 +15,13 @@ public class ChangedItem { @Expose private String state; + private ChangedItemType type; + + public enum ChangedItemType { + ColorLamp, + DimmableLamp, + } + public String getName() { return name; } @@ -38,4 +45,14 @@ public class ChangedItem { public void setState(String state) { this.state = state; } + + public void setType(ChangedItemType type) { + this.type = type; + } + + public ChangedItemType getType() { + if (type == null) + return ChangedItemType.ColorLamp; + return type; + } } diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/ChangedItemsAdapter.java b/mobile/src/main/java/org/openhab/habdroid/ui/ChangedItemsAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..78da30a910d51d2440c3d732386e0775b1894124 --- /dev/null +++ b/mobile/src/main/java/org/openhab/habdroid/ui/ChangedItemsAdapter.java @@ -0,0 +1,106 @@ +package org.openhab.habdroid.ui; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +import org.openhab.habdroid.R; +import org.openhab.habdroid.model.ChangedItem; +import org.openhab.habdroid.model.Item; +import org.openhab.habdroid.model.Recognition; +import org.openhab.habdroid.model.Widget; + +import java.text.DateFormat; +import java.util.List; + +public class ChangedItemsAdapter extends RecyclerView.Adapter<ChangedItemsAdapter.CustomViewHolder> { + + private List<ChangedItem> mChangedItems; + private Context mContext; + + private static final int TYPE_GENERICITEM = 0; + private static final int TYPE_FRAME = 1; + private static final int TYPE_GROUP = 2; + private static final int TYPE_SWITCH = 3; + private static final int TYPE_TEXT = 4; + private static final int TYPE_SLIDER = 5; + private static final int TYPE_IMAGE = 6; + private static final int TYPE_SELECTION = 7; + private static final int TYPE_SECTIONSWITCH = 8; + private static final int TYPE_ROLLERSHUTTER = 9; + private static final int TYPE_SETPOINT = 10; + private static final int TYPE_CHART = 11; + private static final int TYPE_VIDEO = 12; + private static final int TYPE_WEB = 13; + private static final int TYPE_COLOR = 14; + private static final int TYPE_VIDEO_MJPEG = 15; + private static final int TYPE_LOCATION = 16; + + public ChangedItemsAdapter(Context context, List<ChangedItem> changedItems){ + mContext = context; + mChangedItems = changedItems; + + } + + class CustomViewHolder extends RecyclerView.ViewHolder { + + public final View mView; + + TextView recDescription; + TextView recType; + TextView recActivity; + TextView recTimestamp; + TextView recChangedState; + + CustomViewHolder(View itemView) { + super(itemView); + mView = itemView; + + recDescription = mView.findViewById(R.id.recognitionDescription); + recType = mView.findViewById(R.id.recognitionType); + recActivity = mView.findViewById(R.id.recognitionActivity); + recTimestamp = mView.findViewById(R.id.recognitionTimestamp); + recChangedState = mView.findViewById(R.id.recognitionChangedState); + + } + } + + + @Override + public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); + View view = layoutInflater.inflate(R.layout.custom_row, parent, false); + return new CustomViewHolder(view); + } + + @Override + public void onBindViewHolder(CustomViewHolder holder, int position) { + ChangedItem item = mChangedItems.get(position); + + } + + @Override + public int getItemCount() { + return mChangedItems == null ? 0 : mChangedItems.size(); + } + + @Override + public int getItemViewType(int position) { + return getItemViewType(mChangedItems.get(position)); + } + + private int getItemViewType(ChangedItem changedItem) { + switch (changedItem.getType()) { + case ColorLamp: + return TYPE_COLOR; + case DimmableLamp: + return TYPE_SLIDER; + default: + throw new IllegalArgumentException("ChangedItem type " + changedItem.getType() + " is not known"); + } + } +} diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java b/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java index 6ecb899c7043edf76d3f86451156208ba1d5447d..11359325d7ce3aec53425607c9e120f3cca451c9 100644 --- a/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java +++ b/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java @@ -24,6 +24,7 @@ import androidx.annotation.StringRes; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.FragmentManager; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.widget.TextView; @@ -41,6 +42,8 @@ public class RecognitionsActivity extends AppCompatActivity{ private TextView mCurrentActivityTitle; private TextView mCurrentActivityTime; private RecyclerView mCurrentActivityChangedItems; + private ChangedItemsAdapter mChangedItemsAdapter; + ProgressDialog progressDialog; @@ -99,6 +102,9 @@ public class RecognitionsActivity extends AppCompatActivity{ mCurrentActivityTitle.setText(recognition.getDescription().toString()); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT, Locale.US); mCurrentActivityTime.setText(dateFormat.format(new Date(recognition.getTimestamp()))); + mChangedItemsAdapter = new ChangedItemsAdapter(this.getApplicationContext(), recognition.getChangedItems()); + mCurrentActivityChangedItems.setLayoutManager(new LinearLayoutManager(this)); + mCurrentActivityChangedItems.setAdapter(mChangedItemsAdapter); } /* diff --git a/mobile/src/main/res/drawable/ic_new_releases_black_24dp.xml b/mobile/src/main/res/drawable/ic_new_releases_black_24dp.xml new file mode 100644 index 0000000000000000000000000000000000000000..ce9baf42d499b384e592f159b54c7aa730228c54 --- /dev/null +++ b/mobile/src/main/res/drawable/ic_new_releases_black_24dp.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF000000" + android:pathData="M23,12l-2.44,-2.78 0.34,-3.68 -3.61,-0.82 -1.89,-3.18L12,3 8.6,1.54 6.71,4.72l-3.61,0.81 0.34,3.68L1,12l2.44,2.78 -0.34,3.69 3.61,0.82 1.89,3.18L12,21l3.4,1.46 1.89,-3.18 3.61,-0.82 -0.34,-3.68L23,12zM13,17h-2v-2h2v2zM13,13h-2L11,7h2v6z"/> +</vector> diff --git a/mobile/src/main/res/layout/activity_recognitions.xml b/mobile/src/main/res/layout/activity_recognitions.xml index 8cf585713a7fa6ac2d22a0448c38e23d52102f50..71308707a01634b998eff637a18c3c9844e5832d 100644 --- a/mobile/src/main/res/layout/activity_recognitions.xml +++ b/mobile/src/main/res/layout/activity_recognitions.xml @@ -73,15 +73,13 @@ android:id="@+id/text_recognition_current_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="This is an activity" android:textColor="@color/black" android:textSize="24sp" /> <TextView android:id="@+id/text_recognition_current_time" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="This is an activity time" /> + android:layout_height="wrap_content" /> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_recognition_current_items" diff --git a/mobile/src/main/res/menu/left_drawer.xml b/mobile/src/main/res/menu/left_drawer.xml index 0f916158c419dad9791d4083b2ab964ac60e818c..9ddf2bd0fb61727cf8f58c201d3b262a976d351d 100644 --- a/mobile/src/main/res/menu/left_drawer.xml +++ b/mobile/src/main/res/menu/left_drawer.xml @@ -8,7 +8,7 @@ <item android:id="@+id/recognitions" - android:icon="@drawable/ic_info_outline" + android:icon="@drawable/ic_new_releases_black_24dp" android:title="@string/mainmenu_openhab_recognitions" /> <item