package com.glasstunes.cards; import java.net.URISyntaxException; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.glasstunes.R; import com.glasstunes.controller.MusicController; import com.glasstunes.screenslide.CardFragment; import com.squareup.picasso.Picasso; public class ContentCard extends CardFragment { private static final String ARG_IMAGE_URI = "ARG_IMAGE_URI"; private static final String ARG_DISPLAY_NAME = "ARG_DISPLAY_NAME"; private static final String ARG_DISPLAY_DESCRIPTION = "ARG_DISPLAY_DESCRIPTION"; private static final String ARG_INTENT_URI = "ARG_INTENT_URI"; public static ContentCard newInstance(String image_uri, String display_name, String display_description, String intent_uri) { ContentCard frag = new ContentCard(); Bundle args = new Bundle(); args.putString(ARG_IMAGE_URI, image_uri); args.putString(ARG_DISPLAY_NAME, display_name); args.putString(ARG_DISPLAY_DESCRIPTION, display_description); args.putString(ARG_INTENT_URI, intent_uri); frag.setArguments(args); return frag; } private Uri mImageUri; private String mDisplayName; private String mDisplayDescription; private Intent mIntent; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle args = savedInstanceState == null ? getArguments() : savedInstanceState; mImageUri = Uri.parse(args.getString(ARG_IMAGE_URI)); mDisplayName = args.getString(ARG_DISPLAY_NAME); mDisplayDescription = args.getString(ARG_DISPLAY_DESCRIPTION); try { mIntent = Intent.parseUri(args.getString(ARG_INTENT_URI), 0); } catch (URISyntaxException e) { e.printStackTrace(); } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString(ARG_IMAGE_URI, mImageUri.toString()); outState.putString(ARG_DISPLAY_NAME, mDisplayName); outState.putString(ARG_DISPLAY_DESCRIPTION, mDisplayDescription); outState.putString(ARG_INTENT_URI, mIntent.toUri(Intent.URI_INTENT_SCHEME)); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.frag_content_card, container, false); Picasso.with(getActivity()).load(mImageUri) .error(R.drawable.ic_album_art) .placeholder(R.drawable.ic_album_art) .into((ImageView) v.findViewById(R.id.album_art)); TextView name = (TextView) v.findViewById(R.id.track_name); name.setText(mDisplayName); TextView description = (TextView) v.findViewById(R.id.artist_name); description.setText(mDisplayDescription); if (TextUtils.isEmpty(mDisplayDescription)) { name.setGravity(Gravity.CENTER_VERTICAL); description.setVisibility(View.GONE); } return v; } @Override public void onSelect() { if ("com.google.android.music.xdi.intent.PLAY".equals(mIntent .getAction())) { MusicController.getInstance().play(getActivity(), mIntent); getActivity().setResult(Activity.RESULT_OK); getActivity().finish(); } else { startActivityForResult(mIntent, 0); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { getActivity().setResult(resultCode); if (resultCode == Activity.RESULT_OK) { getActivity().finish(); } } }