package com.frogermcs.androiddevmetrics.internal.ui.fragment;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ExpandableListView;
import android.widget.TextView;
import com.frogermcs.androiddevmetrics.AndroidDevMetrics;
import com.frogermcs.androiddevmetrics.R;
import com.frogermcs.androiddevmetrics.aspect.Dagger2GraphAnalyzer;
import com.frogermcs.androiddevmetrics.internal.metrics.InitManager;
import com.frogermcs.androiddevmetrics.internal.ui.ExpandableMetricsListAdapter;
import com.frogermcs.androiddevmetrics.internal.ui.interceptor.UIInterceptor;
import java.util.List;
/**
* Created by Miroslaw Stanek on 25.01.2016.
*/
public class Dagger2MetricsFragment extends Fragment {
private ExpandableListView lvMetrics;
private TextView tvEmpty;
private Button btnMenu;
private List<UIInterceptor> interceptorList;
private ExpandableMetricsListAdapter adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.adm_fragment_dagger2_metrics, container, false);
lvMetrics = (ExpandableListView) view.findViewById(R.id.lvMetrics);
tvEmpty = (TextView) view.findViewById(R.id.tvEmpty);
interceptorList = AndroidDevMetrics.singleton().interceptors();
if (interceptorList.size() > 1) {
btnMenu = (Button) view.findViewById(R.id.btnMenu);
btnMenu.setVisibility(View.VISIBLE);
btnMenu.setText(interceptorList.get(0).getName());
btnMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showUIInterceptorMenu();
}
});
}
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
adapter = new ExpandableMetricsListAdapter();
lvMetrics.setAdapter(adapter);
adapter.updateMetrics(InitManager.getInstance().getListOfMetricDescriptions(interceptorList.get(0)));
if (!Dagger2GraphAnalyzer.isEnabled()) {
tvEmpty.setVisibility(View.VISIBLE);
tvEmpty.setText("Dagger 2 metrics disabled");
lvMetrics.setVisibility(View.GONE);
} else if (adapter.getGroupCount() == 0) {
tvEmpty.setVisibility(View.VISIBLE);
lvMetrics.setVisibility(View.GONE);
tvEmpty.setText("No collected data");
} else {
tvEmpty.setVisibility(View.GONE);
lvMetrics.setVisibility(View.VISIBLE);
}
}
private void showUIInterceptorMenu() {
String[] transformerNames = new String[interceptorList.size()];
for (int i = 0; i < interceptorList.size(); i++) {
transformerNames[i] = interceptorList.get(i).getName();
}
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Settings")
.setItems(transformerNames, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
btnMenu.setText(interceptorList.get(which).getName());
adapter.updateMetrics(InitManager.getInstance().getListOfMetricDescriptions(interceptorList.get(which)));
adapter.notifyDataSetChanged();
}
});
builder.create().show();
}
}