/*
* ******************************************************************************
* 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.nativeview;
import android.os.Bundle;
import android.view.ActionMode;
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.TextView;
import android.widget.Toast;
import it.gmariotti.cardslib.demo.R;
import it.gmariotti.cardslib.demo.cards.CustomCard;
import it.gmariotti.cardslib.demo.fragment.BaseMaterialFragment;
import it.gmariotti.cardslib.library.internal.Card;
import it.gmariotti.cardslib.library.internal.CardHeader;
import it.gmariotti.cardslib.library.view.CardViewNative;
/**
* Card Examples
*
* @author Gabriele Mariotti (gabri.mariotti@gmail.com)
*/
public class NativeCardFragment extends BaseMaterialFragment {
protected ScrollView mScrollView;
protected TextView mTextViewSwipe;
protected ActionMode mActionMode;
protected Card mCardCab;
protected CardViewNative cardViewCab;
@Override
protected int getSubTitleHeaderResourceId() {
return R.string.header_title_cardsubtitle;
}
@Override
protected int getTitleHeaderResourceId() {
return R.string.header_title_group1;
}
@Override
protected String getDocUrl() {
return "https://github.com/gabrielemariotti/cardslib/blob/master/doc/CARD.md";
}
@Override
protected String getSourceUrl() {
return "https://github.com/gabrielemariotti/cardslib/blob/master/demo/stock/src/main/java/it/gmariotti/cardslib/demo/fragment/nativeview/NativeCardFragment.java";
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View mRootView = inflater.inflate(R.layout.demo_fragment_native_card, container, false);
//setupBarHeader(mRootView);
return mRootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mScrollView = (ScrollView) getActivity().findViewById(R.id.card_scrollview);
mTextViewSwipe = (TextView) getActivity().findViewById(R.id.carddemo_card3_text);
initCards();
}
@Override
public void onPause() {
super.onPause();
if (mActionMode!=null)
mActionMode.finish();
}
private void initCards() {
init_simple_card();
init_card_inner_layout();
init_custom_card();
init_custom_card_swipe();
init_custom_card_clickable();
init_custom_card_partial_listener();
init_cab();
}
/**
* This method builds a simple card
*/
private void init_simple_card() {
//Create a Card
Card card = new Card(getActivity());
//Create a CardHeader
CardHeader header = new CardHeader(getActivity());
//Set the header title
header.setTitle(getString(R.string.demo_header_basetitle));
card.addCardHeader(header);
//Set the card inner text
card.setTitle(getString(R.string.demo_card_basetitle));
//Set card in the cardView
CardViewNative cardView = (CardViewNative) getActivity().findViewById(R.id.carddemo_card_id);
cardView.setCard(card);
}
/**
* This method builds a simple card with a custom inner layout
*/
private void init_card_inner_layout() {
//Create a Card
Card card = new Card(getActivity(),R.layout.carddemo_example_inner_content);
//Create a CardHeader
CardHeader header = new CardHeader(getActivity());
//Set the header title
header.setTitle(getString(R.string.demo_header_basetitle));
card.addCardHeader(header);
//Set the card inner text
card.setTitle(getString(R.string.demo_card_basetitle));
//Set card in the cardView
CardViewNative cardView = (CardViewNative) getActivity().findViewById(R.id.carddemo_card_inner);
cardView.setCard(card);
}
/**
* This method builds a custom card
*/
private void init_custom_card() {
//Create a Card
Card card = new CustomCard(getActivity());
//Set card in the cardView
CardViewNative cardView = (CardViewNative) getActivity().findViewById(R.id.carddemo_example_card3);
cardView.setCard(card);
}
/**
* This method builds a custom card with a swipe action
*/
private void init_custom_card_swipe() {
//Create a Card
CustomCard card = new CustomCard(getActivity());
//Enable a swipe action
card.setSwipeable(true);
//You can set a SwipeListener.
card.setOnSwipeListener(new Card.OnSwipeListener() {
@Override
public void onSwipe(Card card) {
if (mTextViewSwipe!=null)
mTextViewSwipe.setVisibility(View.GONE);
}
});
//Set card in the cardView
CardViewNative cardView = (CardViewNative) getActivity().findViewById(R.id.carddemo_example_card3_swipe);
cardView.setCard(card);
}
/**
* This method builds a custom card clickable
*/
private void init_custom_card_clickable() {
//Create a Card
CustomCard card = new CustomCard(getActivity());
//Set onClick listener
card.setOnClickListener(new Card.OnCardClickListener() {
@Override
public void onClick(Card card, View view) {
Toast.makeText(getActivity(),"Clickable card", Toast.LENGTH_LONG).show();
}
});
//Set card in the cardView
CardViewNative cardView = (CardViewNative) getActivity().findViewById(R.id.carddemo_example_card3_clickable);
cardView.setCard(card);
}
/**
* This method builds a custom card with a swipe action
*/
private void init_custom_card_partial_listener() {
//Create a Card
Card card1 = new Card(getActivity(),R.layout.carddemo_example_inner_content);
CardHeader header1 = new CardHeader(getActivity());
header1.setTitle(getString(R.string.demo_custom_shorttitle));
card1.addCardHeader(header1);
//Set the card inner text
card1.setTitle(getString(R.string.demo_card_shorttitle));
//Set a clickListener on ContentArea
card1.addPartialOnClickListener(Card.CLICK_LISTENER_CONTENT_VIEW, new Card.OnCardClickListener() {
@Override
public void onClick(Card card, View view) {
Toast.makeText(getActivity(),"Click on Content Area", Toast.LENGTH_LONG).show();
}
});
//Set card in the cardView
CardViewNative cardView1 = (CardViewNative) getActivity().findViewById(R.id.carddemo_example_card3_listeners1);
cardView1.setCard(card1);
//----------------------------------------------------------------------------------
//Create a Card
Card card2 = new Card(getActivity(),R.layout.carddemo_example_inner_content);
CardHeader header2 = new CardHeader(getActivity());
header2.setTitle(getString(R.string.demo_custom_shorttitle));
card2.addCardHeader(header2);
//Set the card inner text
card2.setTitle(getString(R.string.demo_card_shorttitle));
//Set a clickListener on Header Area
card2.addPartialOnClickListener(Card.CLICK_LISTENER_HEADER_VIEW, new Card.OnCardClickListener() {
@Override
public void onClick(Card card, View view) {
Toast.makeText(getActivity(),"Click on Header Area", Toast.LENGTH_LONG).show();
}
});
//Set card in the cardView
CardViewNative cardView2 = (CardViewNative) getActivity().findViewById(R.id.carddemo_example_card3_listeners2);
cardView2.setCard(card2);
}
/**
* Card with a CAB
*/
private void init_cab(){
//Create a Card
mCardCab = new Card(getActivity());
//Create a CardHeader
CardHeader header = new CardHeader(getActivity());
//Set the header title
header.setTitle(getString(R.string.demo_title_cab1));
mCardCab.addCardHeader(header);
//Set the card inner text
mCardCab.setTitle(getString(R.string.demo_card_basetitle));
//Set onClick listener
mCardCab.setOnLongClickListener(new Card.OnLongCardClickListener() {
@Override
public boolean onLongClick(Card card, View view) {
if (mActionMode != null) {
view.setActivated(false);
mActionMode.finish();
return false;
}
// Start the CAB using the ActionMode.Callback defined above
mActionMode = getActivity().startActionMode(mActionModeCallback);
view.setActivated(true);
return true;
}
});
//Set card in the cardView
cardViewCab = (CardViewNative) getActivity().findViewById(R.id.carddemo_example_card_cab);
cardViewCab.setCard(mCardCab);
}
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
// Called when the action mode is created; startActionMode() was called
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// Inflate a menu resource providing context menu items
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.carddemo_cab_example, menu);
return true;
}
// Called each time the action mode is shown. Always called after onCreateActionMode, but
// may be called multiple times if the mode is invalidated.
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false; // Return false if nothing is done
}
// Called when the user selects a contextual menu item
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.carddemo_toast:
Toast.makeText(getActivity(), "Change Text",
Toast.LENGTH_LONG).show();
if (mCardCab!=null && cardViewCab!=null){
mCardCab.setTitle(getString(R.string.demo_title_cab2));
cardViewCab.refreshCard(mCardCab);
}
mode.finish(); // Action picked, so close the CAB
return true;
default:
return false;
}
}
// Called when the user exits the action mode
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
if (mCardCab!=null)
cardViewCab.setActivated(false);
}
};
}