only update recent emoji on other pages

Closes #3208
// FREEBIE
pull/1/head
Jake McGinty 9 years ago committed by Moxie Marlinspike
parent 3effe77830
commit bc164ef549

@ -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…
Cancel
Save