package im.actor.sdk.view.emoji.keyboard.emoji.smiles; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageButton; import java.util.ArrayList; import java.util.Arrays; import im.actor.runtime.mvvm.MVVMCollection; import im.actor.sdk.R; import im.actor.sdk.controllers.activity.BaseActivity; import im.actor.sdk.view.emoji.SmileProcessor; import im.actor.sdk.view.emoji.smiles.SmilesPack; import im.actor.sdk.view.emoji.smiles.SmilesPackView; import im.actor.sdk.view.emoji.keyboard.emoji.EmojiKeyboard; import im.actor.sdk.util.Screen; import im.actor.sdk.view.PagerSlidingTabStrip; import im.actor.sdk.view.emoji.stickers.StickersView; import static im.actor.sdk.util.ActorSDKMessenger.messenger; /** * Created by Jesus Christ. Amen. */ public class SmilePagerAdapter extends PagerAdapter implements PagerSlidingTabStrip.TabProvider { private EmojiKeyboard emojiKeyboard; private int count; private PagerSlidingTabStrip tabs; private StickersView stickersView; public SmilePagerAdapter(EmojiKeyboard emojiKeyboard) { this.emojiKeyboard = emojiKeyboard; // count = messenger().getOwnStickerPacks().getValuesMap().values().size(); // if (emojiKeyboard.getActivity() instanceof BaseActivity) { // messenger().getOwnStickerPacks().addCallback(new MVVMCollection.OnChangedListener() { // @Override // public void onChanged() { // count = messenger().getOwnStickerPacks().getValuesMap().values().size(); // if (tabs != null) { // tabs.notifyDataSetChanged(); // } // notifyDataSetChanged(); // } // }); // } } @Override public int getCount() { return 6;//count > 0 ? 6 : 5; } @Override public Object instantiateItem(ViewGroup container, int position) { View itemView; if (position <= 4) { itemView = LayoutInflater.from(container.getContext()).inflate(R.layout.emoji_smiles_page, null); ViewGroup emojicontainer = (ViewGroup) itemView.findViewById(R.id.emojiPackContainer); View noEmojiTV = itemView.findViewById(R.id.text); ArrayList<Long> emojiPack = new ArrayList<Long>(); switch (position) { case 0: emojiPack = SmilesPack.getRecent(); break; case 1: emojiPack = new ArrayList<Long>(Arrays.asList(SmilesPack.STANDART)); break; case 2: emojiPack = new ArrayList<Long>(Arrays.asList(SmilesPack.NATURE)); break; case 3: emojiPack = new ArrayList<Long>(Arrays.asList(SmilesPack.TRANSPORT)); break; case 4: emojiPack = new ArrayList<Long>(Arrays.asList(SmilesPack.UNSORTED)); break; } int emojisMaxRowCount = 8; int emojiSize = Screen.dp(45); int emojiPadding = emojiSize / 5; if (Screen.getWidth() / emojiSize < emojisMaxRowCount) { emojisMaxRowCount = Screen.getWidth() / emojiSize; } final SmilesPackView smilesPackView = new SmilesPackView(container.getContext(), SmileProcessor.emoji(), emojiPack, emojisMaxRowCount, emojiSize, emojiPadding); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.gravity = Gravity.CENTER; emojicontainer.addView(smilesPackView, params); if (!SmileProcessor.emoji().isLoaded()) { SmileProcessor.emoji().registerListener(new SmilesListener() { @Override public void onSmilesUpdated(boolean completed) { smilesPackView.update(); SmileProcessor.emoji().unregisterListener(this); } }); } if (emojiPack.size() == 0) { noEmojiTV.setVisibility(View.VISIBLE); } else { noEmojiTV.setVisibility(View.GONE); } // is this necessary? /*if(position==0){ getSmileProcessor().setRecentUpdateListener(new SmilesRecentListener() { @Override public void onSmilesUpdated() { smilesPackView.update(); } }); }*/ smilesPackView.setOnSmileClickListener(new OnSmileClickListener() { @Override public void onEmojiClicked(String smile) { emojiKeyboard.onEmojiClicked(smile); } }); SmilesPack.setOnRecentChangeListener(new OnRecentChangeListener() { @Override public void onRecentChange() { smilesPackView.update(); } }); } else { if (stickersView == null) { stickersView = new StickersView(container.getContext(), emojiKeyboard); } itemView = stickersView; } container.addView(itemView, 0); return itemView; } @Override public void destroyItem(ViewGroup container, int position, Object view) { container.removeView((View) view); } @Override public boolean isViewFromObject(View view, Object key) { return key == view; } @Override public View getTab(int position, Context context) { ImageButton tabView = new ImageButton(context); //if(position==0){ int icon; switch (position) { case 0: icon = R.drawable.ic_smiles_recent; break; case 1: icon = R.drawable.ic_smiles_smile; break; case 2: icon = R.drawable.ic_smiles_bell;//R.drawable.ic_smiles_flower; break; /*case 3: icon = R.drawable.ic_smiles_bell; break;*/ case 3://4: icon = R.drawable.ic_smiles_car; break; case 4://5: icon = R.drawable.ic_smiles_grid; break; case 5: icon = R.drawable.ic_smiles_sticker; break; default: icon = R.drawable.ic_smiles_smile; } tabView.setImageResource(icon); /*//} else{ *//*tabView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); tabView.setAdjustViewBounds(true); //tabView.setCropToPadding(false); StickerPack pack = Stickers.getPacks()[position - 1]; tabView.setImageURI(Uri.parse(Stickers.getFile(pack.getId(), pack.getLogoStickerId())));*//* //}*/ return tabView; } public void setTabs(PagerSlidingTabStrip tabs) { this.tabs = tabs; } public void release() { if (stickersView != null) { stickersView.relesase(); } } }