parent
3effe77830
commit
bc164ef549
5 changed files with 29 additions and 31 deletions
|
@ -154,6 +154,12 @@ public class EmojiDrawer extends Fragment {
|
|||
return EmojiPageFragment.newInstance(pages.get(i), listener);
|
||||
}
|
||||
|
||||
@Override public void setPrimaryItem(ViewGroup container, int position, Object object) {
|
||||
EmojiPageFragment current = (EmojiPageFragment) object;
|
||||
current.onSelected();
|
||||
super.setPrimaryItem(container, position, object);
|
||||
}
|
||||
|
||||
@Override public View getCustomTabView(ViewGroup viewGroup, int i) {
|
||||
ImageView image = new ImageView(context);
|
||||
image.setScaleType(ScaleType.CENTER_INSIDE);
|
||||
|
|
|
@ -17,13 +17,13 @@ import android.widget.GridView;
|
|||
import android.widget.ImageView;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.components.emoji.EmojiPageModel.OnModelChangedListener;
|
||||
|
||||
public class EmojiPageFragment extends Fragment {
|
||||
private static final String TAG = EmojiPageFragment.class.getSimpleName();
|
||||
|
||||
private EmojiPageModel model;
|
||||
private EmojiSelectionListener listener;
|
||||
private GridView grid;
|
||||
|
||||
public static EmojiPageFragment newInstance(@NonNull EmojiPageModel model,
|
||||
@Nullable EmojiSelectionListener listener)
|
||||
|
@ -34,11 +34,17 @@ public class EmojiPageFragment extends Fragment {
|
|||
return fragment;
|
||||
}
|
||||
|
||||
public void onSelected() {
|
||||
if (model.isDynamic() && grid != null && grid.getAdapter() != null) {
|
||||
((EmojiGridAdapter)grid.getAdapter()).notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState)
|
||||
{
|
||||
final View view = inflater.inflate(R.layout.emoji_grid_layout, container, false);
|
||||
final GridView grid = (GridView) view.findViewById(R.id.emoji);
|
||||
final View view = inflater.inflate(R.layout.emoji_grid_layout, container, false);
|
||||
grid = (GridView) view.findViewById(R.id.emoji);
|
||||
grid.setColumnWidth(getResources().getDimensionPixelSize(R.dimen.emoji_drawer_size) + 2 * getResources().getDimensionPixelSize(R.dimen.emoji_drawer_item_padding));
|
||||
grid.setOnItemClickListener(new OnItemClickListener() {
|
||||
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
|
@ -46,12 +52,6 @@ public class EmojiPageFragment extends Fragment {
|
|||
}
|
||||
});
|
||||
grid.setAdapter(new EmojiGridAdapter(getActivity(), model));
|
||||
model.setOnModelChangedListener(new OnModelChangedListener() {
|
||||
@Override public void onModelChanged() {
|
||||
((EmojiGridAdapter)grid.getAdapter()).notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,16 +1,7 @@
|
|||
package org.thoughtcrime.securesms.components.emoji;
|
||||
|
||||
public abstract class EmojiPageModel {
|
||||
protected OnModelChangedListener listener;
|
||||
|
||||
public abstract int getIconRes();
|
||||
public abstract int[] getCodePoints();
|
||||
|
||||
public void setOnModelChangedListener(OnModelChangedListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
interface OnModelChangedListener {
|
||||
void onModelChanged();
|
||||
}
|
||||
public interface EmojiPageModel {
|
||||
int getIconRes();
|
||||
int[] getCodePoints();
|
||||
boolean isDynamic();
|
||||
}
|
||||
|
|
|
@ -18,14 +18,13 @@ import java.io.IOException;
|
|||
import java.util.Iterator;
|
||||
import java.util.LinkedHashSet;
|
||||
|
||||
public class RecentEmojiPageModel extends EmojiPageModel {
|
||||
public class RecentEmojiPageModel implements EmojiPageModel {
|
||||
private static final String TAG = RecentEmojiPageModel.class.getSimpleName();
|
||||
private static final String EMOJI_LRU_PREFERENCE = "pref_recent_emoji";
|
||||
private static final int EMOJI_LRU_SIZE = 50;
|
||||
|
||||
private final SharedPreferences prefs;
|
||||
private final LinkedHashSet<Integer> recentlyUsed;
|
||||
private OnModelChangedListener listener;
|
||||
|
||||
public RecentEmojiPageModel(Context context) {
|
||||
this.prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
|
@ -54,6 +53,10 @@ public class RecentEmojiPageModel extends EmojiPageModel {
|
|||
return toReversePrimitiveArray(recentlyUsed);
|
||||
}
|
||||
|
||||
@Override public boolean isDynamic() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void onCodePointSelected(int codePoint) {
|
||||
Log.w(TAG, "onCodePointSelected(" + codePoint + ")");
|
||||
recentlyUsed.remove(codePoint);
|
||||
|
@ -82,12 +85,6 @@ public class RecentEmojiPageModel extends EmojiPageModel {
|
|||
return null;
|
||||
}
|
||||
}.execute();
|
||||
|
||||
if (listener != null) listener.onModelChanged();
|
||||
}
|
||||
|
||||
@Override public void setOnModelChangedListener(OnModelChangedListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
private LinkedHashSet<Integer> fromHexString(@Nullable LinkedHashSet<String> stringSet) {
|
||||
|
|
|
@ -3,7 +3,7 @@ package org.thoughtcrime.securesms.components.emoji;
|
|||
import android.support.annotation.DrawableRes;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
public class StaticEmojiPageModel extends EmojiPageModel {
|
||||
public class StaticEmojiPageModel implements EmojiPageModel {
|
||||
@DrawableRes private final int icon;
|
||||
@NonNull private final int[] codePoints;
|
||||
|
||||
|
@ -19,4 +19,8 @@ public class StaticEmojiPageModel extends EmojiPageModel {
|
|||
@NonNull public int[] getCodePoints() {
|
||||
return codePoints;
|
||||
}
|
||||
|
||||
@Override public boolean isDynamic() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue