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