// Path: libeasyemoji/src/main/java/org/nicky/libeasyemoji/emoji/EmojiFragment.java
// public abstract class EmojiFragment<T extends Parcelable> extends Fragment {
// 
//     protected OnEmojiconClickedListener mOnEmojiconClickedListener;
// 
//     protected Bundle saveState = new Bundle();
// 
//     final public void setEmojiData(PageEmojiStyle<T> emojiData){
//         saveState.putParcelable("emojiData",emojiData);
//         setData(emojiData);
//     }
// 
//     public abstract void setData(PageEmojiStyle<T> emojiData);
// 
//     @Override
//     public void onCreate(@Nullable Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         restoreData(savedInstanceState);
//     }
// 
//     @Override
//     public void onSaveInstanceState(Bundle outState) {
//         outState.putBundle("saveState",saveState);
//         super.onSaveInstanceState(outState);
//     }
// 
//     @Override
//     public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
//         super.onViewStateRestored(savedInstanceState);
//         restoreData(savedInstanceState);
//     }
// 
//     private void restoreData(Bundle savedInstanceState){
//         if(savedInstanceState!=null && saveState.getParcelable("emojiData") == null){
//             Bundle data = (Bundle) savedInstanceState.get("saveState");
//             if(data != null&& data.getParcelable("emojiData")!=null){
//                 setEmojiData((PageEmojiStyle) data.getParcelable("emojiData"));
//             }
//         }
//     }
// 
//     public void setOnEmojiconClickedListener(OnEmojiconClickedListener listener){
//         mOnEmojiconClickedListener = listener;
//     }
// 
//     public interface OnEmojiconClickedListener {
//         void onEmojiconClicked(String emojiCode);
//         void onBackspaceClicked();
//     }
// }


import android.content.Context;
import android.os.Parcelable;
import android.view.View;
import org.nicky.libeasyemoji.emoji.EmojiFragment;
import java.util.List;
package org.nicky.libeasyemoji.emoji.interfaces;




/**
 * Created by nickyang on 2017/4/1.
 */

public interface EmojiStyle<T extends Parcelable> {
    /**
     * 名称tag, 必须唯一
     */
    String getStyleName();

    /**
     * 底部tab的图标
     */
    int getStyleIcon();

    /**
     * 底部tab的图标， 如果不为空，优先使用， 如果为空则使用 getStyleIcon() 返回的图标，
     * tab 被选中时会调用view的 selected 事件
     */
    View getStyleIconView(Context context);

    /**
     * 所有emoji的数据源
     */
    List<T> getEmojiData();

    /**
     * 自定义的emoji显示页面， 一个 EmojiFragment 页面对应 一个 PageEmojiStyle 对象
     * EmojiFragment 为展示页面， PageEmojiStyle 为一个页面的数据源
     *
     * @param index
     * @return
     */
// Path: libeasyemoji/src/main/java/org/nicky/libeasyemoji/emoji/EmojiFragment.java
// public abstract class EmojiFragment<T extends Parcelable> extends Fragment {
// 
//     protected OnEmojiconClickedListener mOnEmojiconClickedListener;
// 
//     protected Bundle saveState = new Bundle();
// 
//     final public void setEmojiData(PageEmojiStyle<T> emojiData){
//         saveState.putParcelable("emojiData",emojiData);
//         setData(emojiData);
//     }
// 
//     public abstract void setData(PageEmojiStyle<T> emojiData);
// 
//     @Override
//     public void onCreate(@Nullable Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         restoreData(savedInstanceState);
//     }
// 
//     @Override
//     public void onSaveInstanceState(Bundle outState) {
//         outState.putBundle("saveState",saveState);
//         super.onSaveInstanceState(outState);
//     }
// 
//     @Override
//     public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
//         super.onViewStateRestored(savedInstanceState);
//         restoreData(savedInstanceState);
//     }
// 
//     private void restoreData(Bundle savedInstanceState){
//         if(savedInstanceState!=null && saveState.getParcelable("emojiData") == null){
//             Bundle data = (Bundle) savedInstanceState.get("saveState");
//             if(data != null&& data.getParcelable("emojiData")!=null){
//                 setEmojiData((PageEmojiStyle) data.getParcelable("emojiData"));
//             }
//         }
//     }
// 
//     public void setOnEmojiconClickedListener(OnEmojiconClickedListener listener){
//         mOnEmojiconClickedListener = listener;
//     }
// 
//     public interface OnEmojiconClickedListener {
//         void onEmojiconClicked(String emojiCode);
//         void onBackspaceClicked();
//     }
// }


// Path: libeasyemoji/src/main/java/org/nicky/libeasyemoji/emoji/interfaces/EmojiStyle.java
import android.content.Context;
import android.os.Parcelable;
import android.view.View;
import org.nicky.libeasyemoji.emoji.EmojiFragment;
import java.util.List;

package org.nicky.libeasyemoji.emoji.interfaces;




/**
 * Created by nickyang on 2017/4/1.
 */

public interface EmojiStyle<T extends Parcelable> {
    /**
     * 名称tag, 必须唯一
     */
    String getStyleName();

    /**
     * 底部tab的图标
     */
    int getStyleIcon();

    /**
     * 底部tab的图标， 如果不为空，优先使用， 如果为空则使用 getStyleIcon() 返回的图标，
     * tab 被选中时会调用view的 selected 事件
     */
    View getStyleIconView(Context context);

    /**
     * 所有emoji的数据源
     */
    List<T> getEmojiData();

    /**
     * 自定义的emoji显示页面， 一个 EmojiFragment 页面对应 一个 PageEmojiStyle 对象
     * EmojiFragment 为展示页面， PageEmojiStyle 为一个页面的数据源
     *
     * @param index
     * @return
     */
    EmojiFragment getCustomFragment(int index);