/** * Copyright 2009 Joe LaPenna */ package com.joelapenna.foursquared.widget; import com.joelapenna.foursquare.types.Venue; import com.joelapenna.foursquared.R; import com.joelapenna.foursquared.preferences.Preferences; import com.joelapenna.foursquared.util.StringFormatters; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.content.res.TypedArray; import android.preference.PreferenceManager; import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; /** * @author Joe LaPenna (joe@joelapenna.com) */ public class VenueView extends RelativeLayout { private boolean mCheckinButtonVisible = false; private boolean mCollapsible = false; private Button mCheckinButton; private TextView mVenueName; private TextView mVenueLocationLine1; private TextView mVenueLocationLine2; private ImageView mVenueSpecialIcon; public VenueView(Context context) { super(context); } public VenueView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.VenueView, 0, 0); mCheckinButtonVisible = a.getBoolean(R.styleable.VenueView_checkinButton, false); mCollapsible = a.getBoolean(R.styleable.VenueView_collapsible, false); a.recycle(); } @Override public void onFinishInflate() { super.onFinishInflate(); ((Activity)getContext()).getLayoutInflater().inflate(R.layout.venue_view, this); mCheckinButton = (Button)findViewById(R.id.internal_checkinButton); mVenueName = (TextView)findViewById(R.id.internal_venueName); mVenueLocationLine1 = (TextView)findViewById(R.id.internal_venueLocationLine1); mVenueLocationLine2 = (TextView)findViewById(R.id.internal_venueLocationLine2); mVenueSpecialIcon = (ImageView)findViewById(R.id.internal_specialImageView); } public void setCheckinButtonEnabled(boolean enabled) { mCheckinButton.setEnabled(enabled); } public void setCheckinButtonVisibility(int visibility) { mCheckinButton.setVisibility(visibility); } public void setVenue(Venue venue) { mVenueName.setText(venue.getName()); mVenueLocationLine1.setText(venue.getAddress()); String line2 = StringFormatters.getVenueLocationCrossStreetOrCity(venue); if (TextUtils.isEmpty(line2)) { mVenueLocationLine2.setText(line2); mVenueLocationLine2.setVisibility(View.VISIBLE); } else if (mCollapsible) { mVenueLocationLine2.setVisibility(View.GONE); } if (mCheckinButtonVisible) { mCheckinButton.setVisibility(View.VISIBLE); } // Don't show the special unless it's linked to this venue! if (venue.getSpecials() != null && venue.getSpecials().size() > 0) { Venue specialVenue = venue.getSpecials().get(0).getVenue(); if (specialVenue == null || specialVenue.getId().equals(venue.getId())) { mVenueSpecialIcon.setVisibility(View.VISIBLE); } } }; public void setCheckinButtonOnClickListener(OnClickListener l) { mCheckinButton.setOnClickListener(l); } public void setSpecialOnClickListener(OnClickListener l) { mVenueSpecialIcon.setOnClickListener(l); } public void updateCheckinButtonText() { // If the user has enabled 'quick check-in', then update the text of the button // to reflect this. SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences( getContext()); if (settings.getBoolean(Preferences.PREFERENCE_IMMEDIATE_CHECKIN, false)) { mCheckinButton.setText(getContext().getString(R.string.venue_activity_checkin_button_quick)); } else { mCheckinButton.setText(getContext().getString(R.string.venue_activity_checkin_button)); } } }