package com.ushahidi.android.app; import java.util.List; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.google.android.maps.OverlayItem; import com.ushahidi.android.app.data.IncidentsData; public class BalloonOverlayView extends FrameLayout { private LinearLayout layout; private TextView title; private TextView readmore; private TextView snippet; private Bundle incidentsBundle = new Bundle(); private List<IncidentsData> mNewIncidents; private IncidentMap mMap; private Context mContext; private static final int VIEW_INCIDENT = 1; // public int index = 0; /** * Create a new BalloonOverlayView. * * @credits - http://github.com/jgilfelt/android-mapviewballoons/ * @param context - The activity context. * @param balloonBottomOffset - The bottom padding (in pixels) to be applied * when rendering this view. * @author Jeff Gilfelt */ public BalloonOverlayView(final IncidentMap iMap, final Context context, final int balloonBottomOffset, final List<IncidentsData> incidentsData, final int thisIndex) { super(context); setPadding(10, 0, 10, balloonBottomOffset); layout = new LinearLayout(context); layout.setVisibility(VISIBLE); mNewIncidents = incidentsData; mMap = iMap; mContext = context; LayoutInflater inflater = (LayoutInflater)context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflater.inflate(R.layout.balloon_map_overlay, layout); title = (TextView)v.findViewById(R.id.balloon_item_title); snippet = (TextView)v.findViewById(R.id.balloon_item_snippet); readmore = (TextView)v.findViewById(R.id.balloon_item_readmore); readmore.setText(context.getString(R.string.read_more)); ImageView close = (ImageView)v.findViewById(R.id.close_img_button); close.setOnClickListener(new OnClickListener() { public void onClick(View v) { layout.setVisibility(GONE); } }); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT); params.gravity = Gravity.NO_GRAVITY; addView(layout, params); } private void viewReports(final int index) { readmore.setOnClickListener(new OnClickListener() { public void onClick(View view) { incidentsBundle.putInt("id", mNewIncidents.get(index).getIncidentId()); incidentsBundle.putString("title", mNewIncidents.get(index).getIncidentTitle()); incidentsBundle.putString("desc", mNewIncidents.get(index).getIncidentDesc()); incidentsBundle.putString("category", mNewIncidents.get(index) .getIncidentCategories()); incidentsBundle.putString("location", mNewIncidents.get(index) .getIncidentLocation()); incidentsBundle.putString("latitude", mNewIncidents.get(index) .getIncidentLocLatitude()); incidentsBundle.putString("longitude", mNewIncidents.get(index) .getIncidentLocLongitude()); incidentsBundle.putString("date", mNewIncidents.get(index).getIncidentDate()); incidentsBundle.putString("media", mNewIncidents.get(index).getIncidentThumbnail()); incidentsBundle.putString("image", mNewIncidents.get(index).getIncidentImage()); incidentsBundle.putString("status", "" + mNewIncidents.get(index).getIncidentVerified()); Intent intent = new Intent(mContext, IncidentView.class); intent.putExtra("incidents", incidentsBundle); mMap.startActivityForResult(intent, VIEW_INCIDENT); mMap.setResult(Activity.RESULT_OK); // Clear popup from the map. layout.setVisibility(GONE); } }); } /** * Sets the view data from a given overlay item. * * @param item - The overlay item containing the relevant view data (title * and snippet). */ public void setData(OverlayItem item, final int i) { viewReports(i); layout.setVisibility(VISIBLE); if (item.getTitle() != null) { title.setVisibility(VISIBLE); title.setText(item.getTitle()); } else { title.setVisibility(GONE); } if (item.getSnippet() != null) { snippet.setVisibility(VISIBLE); snippet.setText(item.getSnippet()); } else { snippet.setVisibility(GONE); } } }