From 6b7f04589241c433c2b073be42a84d55111880bb Mon Sep 17 00:00:00 2001 From: tom79 Date: Fri, 21 Jun 2019 19:10:45 +0200 Subject: [PATCH] Add statuses --- .../activities/AccountReportActivity.java | 19 + .../android/drawers/StatusReportAdapter.java | 99 +++++ .../main/res/layout/activity_admin_report.xml | 340 +++++++++--------- .../main/res/layout/drawer_status_report.xml | 32 ++ app/src/main/res/values/strings.xml | 1 + 5 files changed, 329 insertions(+), 162 deletions(-) create mode 100644 app/src/main/java/app/fedilab/android/drawers/StatusReportAdapter.java create mode 100644 app/src/main/res/layout/drawer_status_report.xml diff --git a/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java b/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java index ddec923c6..469fcfc24 100644 --- a/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java @@ -25,10 +25,15 @@ import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.ActionBar; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.ArrayList; import app.fedilab.android.R; import app.fedilab.android.asynctasks.PostAdminActionAsyncTask; @@ -36,6 +41,8 @@ import app.fedilab.android.client.API; import app.fedilab.android.client.APIResponse; import app.fedilab.android.client.Entities.AccountAdmin; import app.fedilab.android.client.Entities.Report; +import app.fedilab.android.client.Entities.Status; +import app.fedilab.android.drawers.StatusReportAdapter; import app.fedilab.android.helper.Helper; import app.fedilab.android.interfaces.OnAdminActionInterface; import es.dmoral.toasty.Toasty; @@ -107,6 +114,18 @@ public class AccountReportActivity extends BaseActivity implements OnAdminAction } if( report != null) { targeted_account = report.getAccount(); + RecyclerView lv_statuses = findViewById(R.id.lv_statuses); + + ArrayList contents = new ArrayList<>(); + for(Status status: report.getStatuses()){ + contents.add(status.getContent()); + } + lv_statuses.setLayoutManager(new LinearLayoutManager(this)); + StatusReportAdapter adapter = new StatusReportAdapter(this, contents); + lv_statuses.setAdapter(adapter); + + LinearLayout statuses_container = findViewById(R.id.statuses_container); + statuses_container.setVisibility(View.VISIBLE); } fillReport(targeted_account); diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusReportAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusReportAdapter.java new file mode 100644 index 000000000..8052f0810 --- /dev/null +++ b/app/src/main/java/app/fedilab/android/drawers/StatusReportAdapter.java @@ -0,0 +1,99 @@ +package app.fedilab.android.drawers; +/* Copyright 2019 Thomas Schneider + * + * This file is a part of Fedilab + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * Fedilab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + * + * You should have received a copy of the GNU General Public License along with Fedilab; if not, + * see . */ + +import android.content.Context; +import android.os.Build; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +import app.fedilab.android.R; + +public class StatusReportAdapter extends RecyclerView.Adapter { + + private List mData; + private LayoutInflater mInflater; + private ItemClickListener mClickListener; + + + public StatusReportAdapter(Context context, List data) { + this.mInflater = LayoutInflater.from(context); + this.mData = data; + } + + + @NotNull + @Override + public ViewHolder onCreateViewHolder(@NotNull ViewGroup parent, int viewType) { + View view = mInflater.inflate(R.layout.drawer_status_report, parent, false); + return new ViewHolder(view); + } + + + @Override + public void onBindViewHolder(@NotNull ViewHolder holder, int position) { + String content; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) + content = Html.fromHtml(mData.get(position), Html.FROM_HTML_MODE_LEGACY).toString(); + else + content = Html.fromHtml(mData.get(position)).toString(); + holder.report_content.setText(content); + } + + // total number of rows + @Override + public int getItemCount() { + return mData.size(); + } + + + + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + TextView report_content; + + ViewHolder(View itemView) { + super(itemView); + report_content = itemView.findViewById(R.id.report_content); + itemView.setOnClickListener(this); + } + + @Override + public void onClick(View view) { + if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition()); + } + } + + String getItem(int id) { + return mData.get(id); + } + + void setClickListener(ItemClickListener itemClickListener) { + this.mClickListener = itemClickListener; + } + + public interface ItemClickListener { + void onItemClick(View view, int position); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_admin_report.xml b/app/src/main/res/layout/activity_admin_report.xml index 89d676340..88091ce5a 100644 --- a/app/src/main/res/layout/activity_admin_report.xml +++ b/app/src/main/res/layout/activity_admin_report.xml @@ -32,190 +32,206 @@ android:theme="@style/AppTheme.AppBarOverlay"> - - + - - - + android:orientation="vertical"> - - - - + + + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + + + +