Reports fragment logic finished.

This commit is contained in:
GaidamakUA 2016-01-13 10:12:46 +02:00
parent b9368dedd7
commit bc7e68bfb3

View file

@ -7,11 +7,11 @@ import android.support.v4.app.Fragment;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import net.osmand.plus.IconsCache;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.base.BaseOsmAndFragment; import net.osmand.plus.base.BaseOsmAndFragment;
import net.osmand.plus.liveupdates.network.GetJsonAsyncTask; import net.osmand.plus.liveupdates.network.GetJsonAsyncTask;
@ -34,44 +34,75 @@ public class ReportsFragment extends BaseOsmAndFragment {
public static final String TITLE = "Report"; public static final String TITLE = "Report";
public static final String TOTAL_CHANGES_BY_MONTH_URL = "http://builder.osmand.net/reports/total_changes_by_month.php?month="; public static final String TOTAL_CHANGES_BY_MONTH_URL = "http://builder.osmand.net/reports/total_changes_by_month.php?month=";
private TextView contributorsTextView;
private TextView editsTextView;
private Spinner montReportsSpinner;
private Spinner regionReportsSpinner;
private MonthsForReportsAdapter monthsForReportsAdapter;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_reports, container, false); View view = inflater.inflate(R.layout.fragment_reports, container, false);
Spinner montReportsSpinner = (Spinner) view.findViewById(R.id.montReportsSpinner); montReportsSpinner = (Spinner) view.findViewById(R.id.montReportsSpinner);
MonthsForReportsAdapter monthsForReportsAdapter = new MonthsForReportsAdapter(getActivity()); monthsForReportsAdapter = new MonthsForReportsAdapter(getActivity());
montReportsSpinner.setAdapter(monthsForReportsAdapter); montReportsSpinner.setAdapter(monthsForReportsAdapter);
Spinner regionReportsSpinner = (Spinner) view.findViewById(R.id.regionReportsSpinner); regionReportsSpinner = (Spinner) view.findViewById(R.id.regionReportsSpinner);
ArrayAdapter<String> regionsForReportsAdapter = ArrayAdapter<String> regionsForReportsAdapter =
new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item,
new String[]{"Worldwide"}); new String[]{"Worldwide"});
regionsForReportsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); regionsForReportsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
regionReportsSpinner.setAdapter(regionsForReportsAdapter); regionReportsSpinner.setAdapter(regionsForReportsAdapter);
IconsCache iconsCache = getMyApplication().getIconsCache();
setThemedDrawable(view, R.id.calendarImageView, R.drawable.ic_action_data); setThemedDrawable(view, R.id.calendarImageView, R.drawable.ic_action_data);
setThemedDrawable(view, R.id.regionIconImageView, R.drawable.ic_world_globe_dark); setThemedDrawable(view, R.id.regionIconImageView, R.drawable.ic_world_globe_dark);
setThemedDrawable(view, R.id.numberOfContributorsIcon, R.drawable.ic_group); setThemedDrawable(view, R.id.numberOfContributorsIcon, R.drawable.ic_group);
setThemedDrawable(view, R.id.numberOfEditsIcon, R.drawable.ic_group); setThemedDrawable(view, R.id.numberOfEditsIcon, R.drawable.ic_group);
final TextView contributorsTextView = (TextView) view.findViewById(R.id.contributorsTextView); contributorsTextView = (TextView) view.findViewById(R.id.contributorsTextView);
final TextView editsTextView = (TextView) view.findViewById(R.id.editsTextView); editsTextView = (TextView) view.findViewById(R.id.editsTextView);
GetJsonAsyncTask<Protocol.TotalChangesByMonthResponse> totalChangesByMontAsyncTask = requestAndUpdateUi();
new GetJsonAsyncTask<>(Protocol.TotalChangesByMonthResponse.class);
totalChangesByMontAsyncTask.setOnResponseListener( AdapterView.OnItemSelectedListener onItemSelectedListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
requestAndUpdateUi();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
montReportsSpinner.setOnItemSelectedListener(onItemSelectedListener);
regionReportsSpinner.setOnItemSelectedListener(onItemSelectedListener);
return view;
}
private void requestAndUpdateUi() {
int monthItemPosition = montReportsSpinner.getSelectedItemPosition();
String monthUrlString = monthsForReportsAdapter.getQueryString(monthItemPosition);
String regionUrlString = regionReportsSpinner.getSelectedItem().toString();
GetJsonAsyncTask.OnResponseListener<Protocol.TotalChangesByMonthResponse> onResponseListener =
new GetJsonAsyncTask.OnResponseListener<Protocol.TotalChangesByMonthResponse>() { new GetJsonAsyncTask.OnResponseListener<Protocol.TotalChangesByMonthResponse>() {
@Override @Override
public void onResponse(Protocol.TotalChangesByMonthResponse response) { public void onResponse(Protocol.TotalChangesByMonthResponse response) {
contributorsTextView.setText(String.valueOf(response.users)); contributorsTextView.setText(String.valueOf(response.users));
editsTextView.setText(String.valueOf(response.changes)); editsTextView.setText(String.valueOf(response.changes));
} }
}); };
int monthItemPosition = montReportsSpinner.getSelectedItemPosition(); requestData(monthUrlString, regionUrlString, onResponseListener);
String monthUrlString = monthsForReportsAdapter.getQueryString(monthItemPosition); }
private void requestData(String monthUrlString, String regionUrlString,
GetJsonAsyncTask.OnResponseListener<Protocol.TotalChangesByMonthResponse> onResponseListener) {
GetJsonAsyncTask<Protocol.TotalChangesByMonthResponse> totalChangesByMontAsyncTask =
new GetJsonAsyncTask<>(Protocol.TotalChangesByMonthResponse.class);
totalChangesByMontAsyncTask.setOnResponseListener(onResponseListener);
totalChangesByMontAsyncTask.execute(TOTAL_CHANGES_BY_MONTH_URL + monthUrlString); totalChangesByMontAsyncTask.execute(TOTAL_CHANGES_BY_MONTH_URL + monthUrlString);
return view;
} }
private static class MonthsForReportsAdapter extends ArrayAdapter<String> { private static class MonthsForReportsAdapter extends ArrayAdapter<String> {