2020-12-15 13:59:19 +01:00
|
|
|
package org.eu.exodus_privacy.exodusprivacy.adapters;
|
|
|
|
/*
|
|
|
|
* Copyright (C) 2020 Thomas Schneider
|
|
|
|
*
|
|
|
|
* 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.
|
|
|
|
*
|
|
|
|
* This program 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 this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
import android.view.LayoutInflater;
|
|
|
|
import android.view.ViewGroup;
|
2020-12-15 16:31:06 +01:00
|
|
|
import android.view.ViewTreeObserver;
|
2020-12-15 13:59:19 +01:00
|
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
|
|
|
|
import org.eu.exodus_privacy.exodusprivacy.R;
|
|
|
|
import org.eu.exodus_privacy.exodusprivacy.databinding.MyTrackerItemBinding;
|
|
|
|
import org.eu.exodus_privacy.exodusprivacy.objects.MyTracker;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
public class MyTrackersListAdapter extends RecyclerView.Adapter<MyTrackersListAdapter.TrackerListViewHolder> {
|
|
|
|
|
|
|
|
private final TrackerClickListener trackerClickListener;
|
|
|
|
private final List<MyTracker> myTrackers;
|
2020-12-15 16:53:36 +01:00
|
|
|
private final int max, installedApps;
|
2020-12-15 16:31:06 +01:00
|
|
|
private int viewWidth = 0;
|
2020-12-15 13:59:19 +01:00
|
|
|
|
2020-12-15 16:53:36 +01:00
|
|
|
public MyTrackersListAdapter(List<MyTracker> mTrackers, TrackerClickListener listener, int maxValue, int appInstalled) {
|
2020-12-15 13:59:19 +01:00
|
|
|
myTrackers = mTrackers;
|
|
|
|
trackerClickListener = listener;
|
2020-12-15 16:31:06 +01:00
|
|
|
max = maxValue;
|
2020-12-15 16:53:36 +01:00
|
|
|
installedApps = appInstalled;
|
2020-12-15 13:59:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@NonNull
|
|
|
|
@Override
|
|
|
|
public MyTrackersListAdapter.TrackerListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
|
|
|
MyTrackerItemBinding itemBinding = MyTrackerItemBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
|
|
|
|
return new TrackerListViewHolder(itemBinding);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onBindViewHolder(@NonNull MyTrackersListAdapter.TrackerListViewHolder holder, int position) {
|
2020-12-15 16:31:06 +01:00
|
|
|
MyTracker myTracker = myTrackers.get(position);
|
|
|
|
if (myTrackers != null) {
|
|
|
|
holder.viewDataBinding.trackerName.setText(myTracker.tracker.name);
|
|
|
|
holder.viewDataBinding.trackerCount.setText(String.valueOf(myTracker.number));
|
2020-12-15 16:53:36 +01:00
|
|
|
holder.viewDataBinding.getRoot().setOnClickListener(v -> trackerClickListener.onTrackerClick(myTracker.tracker.id));
|
2020-12-15 16:31:06 +01:00
|
|
|
float percent = (float) myTracker.number / max;
|
|
|
|
holder.viewDataBinding.percent.getLayoutParams().width = (int) (viewWidth * percent);
|
2020-12-15 16:53:36 +01:00
|
|
|
holder.viewDataBinding.percentVal.setText(String.format("%s %%", myTracker.number * 100 / installedApps));
|
2020-12-15 16:31:06 +01:00
|
|
|
holder.viewDataBinding.percent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
|
|
|
@Override
|
|
|
|
public void onGlobalLayout() {
|
|
|
|
holder.viewDataBinding.percent.getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
|
|
|
if (viewWidth == 0) {
|
|
|
|
viewWidth = holder.viewDataBinding.percent.getWidth();
|
|
|
|
notifyDataSetChanged();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2020-12-15 13:59:19 +01:00
|
|
|
} else
|
|
|
|
holder.viewDataBinding.trackerName.setText(R.string.no_trackers);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int getItemCount() {
|
2020-12-15 16:31:06 +01:00
|
|
|
return myTrackers.size();
|
2020-12-15 13:59:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public interface TrackerClickListener {
|
|
|
|
void onTrackerClick(long trackerId);
|
|
|
|
}
|
|
|
|
|
|
|
|
static class TrackerListViewHolder extends RecyclerView.ViewHolder {
|
|
|
|
|
|
|
|
MyTrackerItemBinding viewDataBinding;
|
|
|
|
|
|
|
|
TrackerListViewHolder(MyTrackerItemBinding dataBinding) {
|
|
|
|
super(dataBinding.getRoot());
|
|
|
|
viewDataBinding = dataBinding;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|