Skip to content
Snippets Groups Projects
Commit b765f1bc authored by Julian Catoni's avatar Julian Catoni
Browse files

Fixed time format, added swipetorefreshlayout

parent 5552afdf
No related branches found
No related tags found
No related merge requests found
package org.openhab.habdroid.model; package org.openhab.habdroid.model;
import android.util.Log;
import java.util.List; import java.util.List;
import com.google.gson.annotations.Expose; import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
......
package org.openhab.habdroid.ui; package org.openhab.habdroid.ui;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.MenuItem; import android.view.MenuItem;
...@@ -20,6 +21,7 @@ import org.openhab.habdroid.util.RetrofitClientInstance; ...@@ -20,6 +21,7 @@ import org.openhab.habdroid.util.RetrofitClientInstance;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
...@@ -34,6 +36,7 @@ import androidx.appcompat.widget.Toolbar; ...@@ -34,6 +36,7 @@ import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
...@@ -43,10 +46,11 @@ import android.widget.Toast; ...@@ -43,10 +46,11 @@ import android.widget.Toast;
* By Muhammad Ibrahim Rahman * By Muhammad Ibrahim Rahman
*/ */
public class RecognitionsActivity extends AppCompatActivity implements WidgetAdapter.ItemClickListener{ public class RecognitionsActivity extends AppCompatActivity implements WidgetAdapter.ItemClickListener {
private RecognitionsAdapter mPastRecognitionsAdapter; private RecognitionsAdapter mPastRecognitionsAdapter;
private RecyclerView mRvPastRecognitions; private RecyclerView mRvPastRecognitions;
private SwipeRefreshLayout mSwipeRefreshLayout;
ProgressDialog progressDialog; ProgressDialog progressDialog;
...@@ -60,6 +64,8 @@ public class RecognitionsActivity extends AppCompatActivity implements WidgetAda ...@@ -60,6 +64,8 @@ public class RecognitionsActivity extends AppCompatActivity implements WidgetAda
Toolbar toolbar = findViewById(R.id.openhab_toolbar); Toolbar toolbar = findViewById(R.id.openhab_toolbar);
setSupportActionBar(toolbar); setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mSwipeRefreshLayout = findViewById(R.id.swipeRefresh_recognitions);
mSwipeRefreshLayout.setOnRefreshListener(() -> getRESTData());
if (savedInstanceState == null) { if (savedInstanceState == null) {
getRESTData(); getRESTData();
...@@ -72,7 +78,7 @@ public class RecognitionsActivity extends AppCompatActivity implements WidgetAda ...@@ -72,7 +78,7 @@ public class RecognitionsActivity extends AppCompatActivity implements WidgetAda
private void getRESTData() { private void getRESTData() {
progressDialog = new ProgressDialog(RecognitionsActivity.this); progressDialog = new ProgressDialog(RecognitionsActivity.this);
progressDialog.setMessage("Loading"); progressDialog.setMessage("Loading");
progressDialog.show(); if (!mSwipeRefreshLayout.isRefreshing()) progressDialog.show();
// Interface for the RetrofitInstance // Interface for the RetrofitInstance
try { try {
...@@ -85,13 +91,18 @@ public class RecognitionsActivity extends AppCompatActivity implements WidgetAda ...@@ -85,13 +91,18 @@ public class RecognitionsActivity extends AppCompatActivity implements WidgetAda
progressDialog.dismiss(); progressDialog.dismiss();
//generateDataList(response.body()); //generateDataList(response.body());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
response.body().sort((o1, o2) -> o2.getTimestamp() - o1.getTimestamp());
}
generateCurrentActivity(response.body().get(0)); generateCurrentActivity(response.body().get(0));
generatePastActivities(response.body().subList(1, response.body().size())); generatePastActivities(response.body().subList(1, response.body().size()));
mSwipeRefreshLayout.setRefreshing(false);
} }
@Override @Override
public void onFailure(Call<List<Recognition>> call, Throwable t) { public void onFailure(Call<List<Recognition>> call, Throwable t) {
progressDialog.dismiss(); progressDialog.dismiss();
mSwipeRefreshLayout.setRefreshing(false);
Toast.makeText(RecognitionsActivity.this, "Error loading Recognition. Please check your network connection.", Toast.LENGTH_SHORT).show(); Toast.makeText(RecognitionsActivity.this, "Error loading Recognition. Please check your network connection.", Toast.LENGTH_SHORT).show();
} }
}); });
...@@ -101,7 +112,6 @@ public class RecognitionsActivity extends AppCompatActivity implements WidgetAda ...@@ -101,7 +112,6 @@ public class RecognitionsActivity extends AppCompatActivity implements WidgetAda
} }
} }
private void generateCurrentActivity(Recognition recognition) { private void generateCurrentActivity(Recognition recognition) {
...@@ -110,7 +120,7 @@ public class RecognitionsActivity extends AppCompatActivity implements WidgetAda ...@@ -110,7 +120,7 @@ public class RecognitionsActivity extends AppCompatActivity implements WidgetAda
RecyclerView mCurrentActivityChangedItems = findViewById(R.id.rv_recognition_current_items); RecyclerView mCurrentActivityChangedItems = findViewById(R.id.rv_recognition_current_items);
mCurrentActivityTitle.setText(recognition.getDescription().toString()); mCurrentActivityTitle.setText(recognition.getDescription().toString());
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT, Locale.US); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT, Locale.US);
mCurrentActivityTime.setText(dateFormat.format(new Date(recognition.getTimestamp()))); mCurrentActivityTime.setText(dateFormat.format(new Date(((long) recognition.getTimestamp()) * 1000)));
ArrayList<Widget> widgets = getIntent().getParcelableArrayListExtra("widgets"); ArrayList<Widget> widgets = getIntent().getParcelableArrayListExtra("widgets");
ArrayList<Widget> activityWidgets = new ArrayList<>(); ArrayList<Widget> activityWidgets = new ArrayList<>();
for (ChangedItem ci : recognition.getChangedItems()) { for (ChangedItem ci : recognition.getChangedItems()) {
......
...@@ -61,7 +61,7 @@ public class RecognitionsAdapter extends RecyclerView.Adapter<RecognitionsAdapte ...@@ -61,7 +61,7 @@ public class RecognitionsAdapter extends RecyclerView.Adapter<RecognitionsAdapte
public void onBindViewHolder(CustomViewHolder holder, int position) { public void onBindViewHolder(CustomViewHolder holder, int position) {
Recognition item = mRecognitions.get(position); Recognition item = mRecognitions.get(position);
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT, Locale.US); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT, Locale.US);
holder.recognitionTime.setText(dateFormat.format(new Date(item.getTimestamp()))); holder.recognitionTime.setText(dateFormat.format(new Date(((long)item.getTimestamp())*1000)));
holder.recognitionTitle.setText(item.getDescription().toString()); holder.recognitionTitle.setText(item.getDescription().toString());
} }
......
...@@ -1001,11 +1001,11 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder ...@@ -1001,11 +1001,11 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder
private static void showSnackbar(View v, int delay) { private static void showSnackbar(View v, int delay) {
mSnackbarHandler.removeCallbacksAndMessages(null); mSnackbarHandler.removeCallbacksAndMessages(null);
final View currentView = v.getRootView(); final View currentView = v.getRootView();
Snackbar snackbar = Snackbar.make(currentView, "Manuelle Änderung als neuen Standardwert setzen?", Snackbar.LENGTH_LONG);
snackbar.setAction("Setze als\nStandard", v1 -> {
Toast.makeText(currentView.getContext(), "Änderung wurde als neuer Standardwert gesetzt!", Toast.LENGTH_SHORT).show();
});
mSnackbarHandler.postDelayed(() -> { mSnackbarHandler.postDelayed(() -> {
Snackbar snackbar = Snackbar.make(currentView, "Manuelle Änderung als neuen Standardwert setzen?", Snackbar.LENGTH_LONG);
snackbar.setAction("Setze als\nStandard", v1 -> {
Toast.makeText(currentView.getContext(), "Änderung wurde als neuer Standardwert gesetzt!", Toast.LENGTH_SHORT).show();
});
snackbar.show(); snackbar.show();
}, delay); }, delay);
......
...@@ -13,64 +13,75 @@ ...@@ -13,64 +13,75 @@
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
<com.google.android.material.card.MaterialCardView <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/card_recognition_current" android:id="@+id/swipeRefresh_recognitions"
style="@style/Widget.MaterialComponents.CardView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent">
android:layout_marginLeft="@dimen/mtrl_card_spacing"
android:layout_marginTop="@dimen/mtrl_card_spacing"
android:layout_marginRight="@dimen/mtrl_card_spacing">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical">
android:padding="16dp">
<TextView <com.google.android.material.card.MaterialCardView
android:id="@+id/card_recognition_current"
style="@style/Widget.MaterialComponents.CardView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Current Activity" android:layout_marginLeft="@dimen/mtrl_card_spacing"
android:textAllCaps="true" android:layout_marginTop="@dimen/mtrl_card_spacing"
android:textColor="@color/black" android:layout_marginRight="@dimen/mtrl_card_spacing">
android:textSize="10dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Current Activity"
android:textAllCaps="true"
android:textColor="@color/black"
android:textSize="10dp" />
<TextView
android:id="@+id/text_recognition_current_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
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" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_recognition_current_items"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<TextView <TextView
android:id="@+id/text_recognition_current_title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:text="Past activities"
android:textAllCaps="true"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="24sp" /> android:textSize="10dp" />
<TextView
android:id="@+id/text_recognition_current_time"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_recognition_current_items" android:id="@+id/rv_past_recognitions"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent" />
android:layout_marginTop="16dp" />
</LinearLayout> </LinearLayout>
</com.google.android.material.card.MaterialCardView> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Past activities"
android:textAllCaps="true"
android:textColor="@color/black"
android:layout_marginTop="16dp"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:textSize="10dp"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_past_recognitions"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment