From d6961cb4a625d55016dd893ff381fb92d207e674 Mon Sep 17 00:00:00 2001
From: Julian Catoni <julian.catoni@tu-dresden.de>
Date: Tue, 9 Jul 2019 11:44:42 +0200
Subject: [PATCH] Updated recognitions icon, added ChangedItemsAdapter

---
 .../openhab/habdroid/model/ChangedItem.java   |  17 +++
 .../habdroid/ui/ChangedItemsAdapter.java      | 106 ++++++++++++++++++
 .../habdroid/ui/RecognitionsActivity.java     |   6 +
 .../drawable/ic_new_releases_black_24dp.xml   |   9 ++
 .../main/res/layout/activity_recognitions.xml |   4 +-
 mobile/src/main/res/menu/left_drawer.xml      |   2 +-
 6 files changed, 140 insertions(+), 4 deletions(-)
 create mode 100644 mobile/src/main/java/org/openhab/habdroid/ui/ChangedItemsAdapter.java
 create mode 100644 mobile/src/main/res/drawable/ic_new_releases_black_24dp.xml

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 61935d96..adab4991 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 00000000..78da30a9
--- /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 6ecb899c..11359325 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 00000000..ce9baf42
--- /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 8cf58571..71308707 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 0f916158..9ddf2bd0 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
-- 
GitLab