package ru.perm.trubnikov.gps2sms;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.Toast;
abstract class RepoFragment extends ListFragment {
protected static final int ACT_RESULT_FAV = 1003;
protected String[] mFirstLines;
protected String[] mSecondLines;
protected ImageButton btnShare;
protected ImageButton btnCopy;
protected ImageButton btnMap;
protected ImageButton btnFav;
String actionCoords;
abstract void rebuildList();
abstract void setLongClickHandler();
abstract void dialogAdjustment(Dialog dialog);
abstract void addExtraButtons(Dialog dialog);
@Override
public void onResume() {
super.onResume();
rebuildList();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
rebuildList();
setLongClickHandler();
}
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
case ACT_RESULT_FAV:
DBHelper.updateFavIcon(getActivity(), btnFav);
break;
}
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// selected coordinates
actionCoords = GpsHelper.extractCoordinates((String) getListAdapter().getItem(position));
// custom dialog
final Dialog dialog = new Dialog(getActivity());
dialog.setContentView(R.layout.repo_buttons_dialog);
dialog.setTitle(getDialogTitle(mFirstLines[position]));
btnMap = (ImageButton) dialog.findViewById(R.id.btnMap2);
btnShare = (ImageButton) dialog.findViewById(R.id.btnShare2);
btnCopy = (ImageButton) dialog.findViewById(R.id.btnCopy2);
btnFav = (ImageButton) dialog.findViewById(R.id.btnFav2);
dialogAdjustment(dialog);
DBHelper.updateFavIcon(getActivity(), btnFav);
dialog.show();
btnShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
GpsHelper.shareCoordinates(getActivity(), GpsHelper.getShareBody(getActivity(), actionCoords, ""));
}
});
btnCopy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
GpsHelper.clipboardCopy(getActivity().getApplicationContext(), actionCoords);
DBHelper.ShowToastT(getActivity(), getString(R.string.text_copied), Toast.LENGTH_LONG);
}
});
btnMap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
GpsHelper.openOnMap(getActivity().getApplicationContext(), actionCoords);
}
});
btnFav.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!DBHelper.shareFav(getActivity(),
GpsHelper.getShareBody(getActivity(), actionCoords, ""))) {
Intent intent = new Intent(getActivity(), ChooseFavActivity.class);
startActivityForResult(intent, ACT_RESULT_FAV);
} else {
dialog.dismiss();
}
}
});
btnFav.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
Intent intent = new Intent(getActivity(), ChooseFavActivity.class);
startActivityForResult(intent, ACT_RESULT_FAV);
return true;
}
});
addExtraButtons(dialog);
}
protected String getDialogTitle(String s) {
return getString(R.string.mysms_actions);
}
}