/**
* Copyright 2009 Joe LaPenna
*/
package com.joelapenna.foursquared.util;
import com.joelapenna.foursquare.Foursquare;
import com.joelapenna.foursquare.types.User;
import com.joelapenna.foursquared.Foursquared;
import com.joelapenna.foursquared.R;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
import android.widget.ImageView;
import java.io.IOException;
import java.util.Observable;
/**
* @author Joe LaPenna (joe@joelapenna.com)
*/
public class UserUtils {
public static void ensureUserPhoto(final Context context, final User user, final boolean DEBUG,
final String TAG) {
Activity activity = ((Activity) context);
final ImageView photo = (ImageView) activity.findViewById(R.id.photo);
if (user.getPhoto() == null) {
photo.setImageResource(R.drawable.blank_boy);
return;
}
final Uri photoUri = Uri.parse(user.getPhoto());
if (photoUri != null) {
RemoteResourceManager userPhotosManager = ((Foursquared) activity.getApplication())
.getRemoteResourceManager();
try {
Bitmap bitmap = BitmapFactory.decodeStream(userPhotosManager
.getInputStream(photoUri));
photo.setImageBitmap(bitmap);
} catch (IOException e) {
if (DEBUG) Log.d(TAG, "photo not already retrieved, requesting: " + photoUri);
userPhotosManager.addObserver(new RemoteResourceManager.ResourceRequestObserver(
photoUri) {
@Override
public void requestReceived(Observable observable, Uri uri) {
observable.deleteObserver(this);
updateUserPhoto(context, photo, uri, user, DEBUG, TAG);
}
});
userPhotosManager.request(photoUri);
}
}
}
private static void updateUserPhoto(Context context, final ImageView photo, final Uri uri,
final User user, final boolean DEBUG, final String TAG) {
final Activity activity = ((Activity) context);
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
if (DEBUG) Log.d(TAG, "Loading user photo: " + uri);
RemoteResourceManager userPhotosManager = ((Foursquared) activity
.getApplication()).getRemoteResourceManager();
Bitmap bitmap = BitmapFactory.decodeStream(userPhotosManager
.getInputStream(uri));
photo.setImageBitmap(bitmap);
if (DEBUG) Log.d(TAG, "Loaded user photo: " + uri);
} catch (IOException e) {
if (DEBUG) Log.d(TAG, "Unable to load user photo: " + uri);
if (Foursquare.MALE.equals(user.getGender())) {
photo.setImageResource(R.drawable.blank_boy);
} else {
photo.setImageResource(R.drawable.blank_girl);
}
} catch (Exception e) {
Log.d(TAG, "Ummm............", e);
}
}
});
}
public static boolean isFriend(User user) {
if (user == null) {
return false;
} else if (TextUtils.isEmpty(user.getFriendstatus())) {
return false;
} else if (user.getFriendstatus().equals("friend")) {
return true;
} else {
return false;
}
}
public static boolean isFollower(User user) {
if (user == null) {
return false;
} else if (TextUtils.isEmpty(user.getFriendstatus())) {
return false;
} else if (user.getFriendstatus().equals("pendingyou")) {
return true;
} else {
return false;
}
}
public static boolean isFriendStatusPendingYou(User user) {
return user != null && user.getFriendstatus() != null &&
user.getFriendstatus().equals("pendingyou");
}
public static boolean isFriendStatusPendingThem(User user) {
return user != null && user.getFriendstatus() != null &&
user.getFriendstatus().equals("pendingthem");
}
public static boolean isFriendStatusFollowingThem(User user) {
return user != null && user.getFriendstatus() != null &&
user.getFriendstatus().equals("followingthem");
}
public static int getDrawableForMeTabByGender(String gender) {
if (gender != null && gender.equals("female")) {
return R.drawable.tab_main_nav_me_girl_selector;
} else {
return R.drawable.tab_main_nav_me_boy_selector;
}
}
public static int getDrawableForMeMenuItemByGender(String gender) {
if (gender == null) {
return R.drawable.ic_menu_myinfo_boy;
} else if (gender.equals("female")) {
return R.drawable.ic_menu_myinfo_girl;
} else {
return R.drawable.ic_menu_myinfo_boy;
}
}
public static boolean getCanHaveFollowers(User user) {
if (user.getTypes() != null && user.getTypes().size() > 0) {
if (user.getTypes().contains("canHaveFollowers")) {
return true;
}
}
return false;
}
public static int getDrawableByGenderForUserThumbnail(User user) {
String gender = user.getGender();
if (gender != null && gender.equals("female")) {
return R.drawable.blank_girl;
} else {
return R.drawable.blank_boy;
}
}
}