/*
* ******************************************************************************
* Copyright (c) 2013-2014 Gabriele Mariotti.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* *****************************************************************************
*/
package it.gmariotti.cardslib.demo.fragment;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ScrollView;
import android.widget.ShareActionProvider;
import java.io.File;
import it.gmariotti.cardslib.demo.R;
import it.gmariotti.cardslib.demo.Utils;
import it.gmariotti.cardslib.demo.cards.GooglePlaySmallCard;
import it.gmariotti.cardslib.demo.cards.GplayCard;
import it.gmariotti.cardslib.library.Constants;
import it.gmariotti.cardslib.library.utils.BitmapUtils;
import it.gmariotti.cardslib.library.view.CardView;
/**
* Card Examples
*
* @author Gabriele Mariotti (gabri.mariotti@gmail.com)
*/
public class GPlayCardFragment extends BaseFragment {
protected ScrollView mScrollView;
private GooglePlaySmallCard cardGmap;
private CardView cardViewGmap;
private ShareActionProvider mShareActionProvider;
private File photofile;
private ImageBroadcastReceiver mReceiver;
@Override
public int getTitleResourceId() {
return R.string.carddemo_title_gplay;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.demo_fragment_gplay_card, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mScrollView = (ScrollView) getActivity().findViewById(R.id.card_scrollview);
initCardSmallCard();
initCardGooglePlay();
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (mReceiver==null)
mReceiver = new ImageBroadcastReceiver();
activity.registerReceiver(mReceiver,new IntentFilter(Constants.IntentManager.INTENT_ACTION_IMAGE_DOWNLOADED));
}
@Override
public void onDetach() {
super.onDetach();
if (mReceiver!=null)
getActivity().unregisterReceiver(mReceiver);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.sharemenu, menu);
// Locate MenuItem with ShareActionProvider
MenuItem item = menu.findItem(R.id.carddemo_menu_item_share);
// Fetch and store ShareActionProvider
mShareActionProvider = (ShareActionProvider) item.getActionProvider();
mShareActionProvider.setShareIntent(getShareIntent());
super.onCreateOptionsMenu(menu,inflater);
}
/**
* This method builds a simple card
*/
private void initCardSmallCard() {
//Create a Card
cardGmap= new GooglePlaySmallCard(getActivity());
cardGmap.setId("gplaysmall");
//Set card in the cardView
cardViewGmap = (CardView) getActivity().findViewById(R.id.carddemo_gmaps);
cardViewGmap.setCard(cardGmap);
}
/**
* This method builds a simple card
*/
private void initCardGooglePlay() {
//Create a Card
GplayCard card= new GplayCard(getActivity());
//Set card in the cardView
CardView cardView = (CardView) getActivity().findViewById(R.id.carddemo_Gplay1);
cardView.setCard(card);
//Create a Card
GplayCard card2= new GplayCard(getActivity());
//Set card in the cardView
CardView cardView2 = (CardView) getActivity().findViewById(R.id.carddemo_Gplay2);
cardView2.setCard(card2);
if (Utils.isTablet(getActivity())){
//Create a Card
GplayCard card3= new GplayCard(getActivity());
//Set card in the cardView
CardView cardView3 = (CardView) getActivity().findViewById(R.id.carddemo_Gplay3);
if (cardView3!=null)
cardView3.setCard(card3);
}
}
private void updateIntentToShare(){
if (mShareActionProvider != null) {
photofile = BitmapUtils.createFileFromBitmap(cardViewGmap.createBitmap());
getActivity().invalidateOptionsMenu();
}
}
private Intent getShareIntent(){
if (photofile!=null){
return BitmapUtils.createIntentFromImage(photofile);
}else{
return getDefaultIntent();
}
}
/** Defines a default (dummy) share intent to initialze the action provider.
* However, as soon as the actual content to be used in the intent
* is known or changes, you must update the share intent by again calling
* mShareActionProvider.setShareIntent()
*/
private Intent getDefaultIntent() {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
return intent;
}
/**
* Broadcast for image downloaded by CardThumbnail
*/
private class ImageBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras!=null){
boolean result = extras.getBoolean(Constants.IntentManager.INTENT_ACTION_IMAGE_DOWNLOADED_EXTRA_RESULT);
String id = extras.getString(Constants.IntentManager.INTENT_ACTION_IMAGE_DOWNLOADED_EXTRA_CARD_ID);
if (result){
if (id!=null && id.equalsIgnoreCase(cardGmap.getId())){
updateIntentToShare();
}
}
}
}
}
}