package com.rattlehead666.performancetweaker.app.ui.fragments;
import com.rattlehead666.performancetweaker.app.R;
import com.rattlehead666.performancetweaker.app.ui.adapters.AlarmTriggerAdapter;
import com.rattlehead666.performancetweaker.app.ui.adapters.CpuWakelocksAdapter;
import com.rattlehead666.performancetweaker.app.ui.adapters.KernelWakelockAdapter;
import com.rattlehead666.performancetweaker.app.utils.SystemAppManagementException;
import com.rattlehead666.performancetweaker.app.utils.SystemAppUtilities;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.Spinner;
import android.widget.TextView;
public class WakeLocksFragment extends Fragment implements AdapterView.OnItemSelectedListener {
ListView wakelockList;
ActionBar actionBar;
View view;
Context context;
TextView timeSince;
ProgressBar progressBar;
Spinner spinner;
ArrayAdapter<String> adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.wakelocksfragment, container, false);
context = getActivity().getBaseContext();
wakelockList = (ListView) view.findViewById(R.id.wakelock_data_listview1);
timeSince = (TextView) view.findViewById(R.id.stats_since);
spinner = (Spinner) getActivity().findViewById(R.id.spinner_nav);
progressBar = (ProgressBar) getActivity().findViewById(R.id.loading_main);
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
spinner.setVisibility(View.GONE);
if (actionBar != null) {
actionBar.setDisplayShowTitleEnabled(true);
}
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
wakelockList.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
if (actionBar != null) {
actionBar.setDisplayShowTitleEnabled(false);
}
adapter = new ArrayAdapter<>(actionBar.getThemedContext(),
android.R.layout.simple_spinner_dropdown_item,
context.getResources().getStringArray(R.array.wakelock_actionbar_spinner_items));
spinner.setVisibility(View.VISIBLE);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
BaseAdapter wakelockAdapter = null;
switch (position) {
case 0:
wakelockAdapter = new KernelWakelockAdapter(context);
break;
case 1:
if (!(SystemAppUtilities.hasBatteryStatsPermission(getActivity()))) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(
"Since Kitkat google only allows system apps to access battery permissions! Install this app as System app")
.setTitle("Install as System app")
.setNeutralButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
SystemAppUtilities.installAsSystemApp(getActivity());
} catch (SystemAppManagementException e) {
e.printStackTrace();
}
}
})
.setNegativeButton("No", null)
.show();
}
wakelockAdapter = new CpuWakelocksAdapter(context);
break;
case 2:
wakelockAdapter = new AlarmTriggerAdapter(context);
break;
}
progressBar.setVisibility(View.GONE);
if (wakelockAdapter != null && wakelockAdapter.getCount() != 0) {
wakelockList.setVisibility(View.VISIBLE);
timeSince.setTextSize(15);
wakelockList.setAdapter(wakelockAdapter);
timeSince.setText("");
} else {
wakelockList.setVisibility(View.GONE);
timeSince.setTextSize(20);
timeSince.setGravity(Gravity.CENTER);
timeSince.setText(getString(R.string.stats_not_available));
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}