mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-21 10:28:27 +00:00
parent
3effe77830
commit
bc164ef549
@ -154,6 +154,12 @@ public class EmojiDrawer extends Fragment {
|
|||||||
return EmojiPageFragment.newInstance(pages.get(i), listener);
|
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) {
|
@Override public View getCustomTabView(ViewGroup viewGroup, int i) {
|
||||||
ImageView image = new ImageView(context);
|
ImageView image = new ImageView(context);
|
||||||
image.setScaleType(ScaleType.CENTER_INSIDE);
|
image.setScaleType(ScaleType.CENTER_INSIDE);
|
||||||
|
@ -17,13 +17,13 @@ import android.widget.GridView;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.R;
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.components.emoji.EmojiPageModel.OnModelChangedListener;
|
|
||||||
|
|
||||||
public class EmojiPageFragment extends Fragment {
|
public class EmojiPageFragment extends Fragment {
|
||||||
private static final String TAG = EmojiPageFragment.class.getSimpleName();
|
private static final String TAG = EmojiPageFragment.class.getSimpleName();
|
||||||
|
|
||||||
private EmojiPageModel model;
|
private EmojiPageModel model;
|
||||||
private EmojiSelectionListener listener;
|
private EmojiSelectionListener listener;
|
||||||
|
private GridView grid;
|
||||||
|
|
||||||
public static EmojiPageFragment newInstance(@NonNull EmojiPageModel model,
|
public static EmojiPageFragment newInstance(@NonNull EmojiPageModel model,
|
||||||
@Nullable EmojiSelectionListener listener)
|
@Nullable EmojiSelectionListener listener)
|
||||||
@ -34,11 +34,17 @@ public class EmojiPageFragment extends Fragment {
|
|||||||
return 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,
|
@Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState)
|
Bundle savedInstanceState)
|
||||||
{
|
{
|
||||||
final View view = inflater.inflate(R.layout.emoji_grid_layout, container, false);
|
final View view = inflater.inflate(R.layout.emoji_grid_layout, container, false);
|
||||||
final GridView grid = (GridView) view.findViewById(R.id.emoji);
|
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.setColumnWidth(getResources().getDimensionPixelSize(R.dimen.emoji_drawer_size) + 2 * getResources().getDimensionPixelSize(R.dimen.emoji_drawer_item_padding));
|
||||||
grid.setOnItemClickListener(new OnItemClickListener() {
|
grid.setOnItemClickListener(new OnItemClickListener() {
|
||||||
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
@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));
|
grid.setAdapter(new EmojiGridAdapter(getActivity(), model));
|
||||||
model.setOnModelChangedListener(new OnModelChangedListener() {
|
|
||||||
@Override public void onModelChanged() {
|
|
||||||
((EmojiGridAdapter)grid.getAdapter()).notifyDataSetChanged();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
package org.thoughtcrime.securesms.components.emoji;
|
package org.thoughtcrime.securesms.components.emoji;
|
||||||
|
|
||||||
public abstract class EmojiPageModel {
|
public interface EmojiPageModel {
|
||||||
protected OnModelChangedListener listener;
|
int getIconRes();
|
||||||
|
int[] getCodePoints();
|
||||||
public abstract int getIconRes();
|
boolean isDynamic();
|
||||||
public abstract int[] getCodePoints();
|
|
||||||
|
|
||||||
public void setOnModelChangedListener(OnModelChangedListener listener) {
|
|
||||||
this.listener = listener;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface OnModelChangedListener {
|
|
||||||
void onModelChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -18,14 +18,13 @@ import java.io.IOException;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashSet;
|
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 TAG = RecentEmojiPageModel.class.getSimpleName();
|
||||||
private static final String EMOJI_LRU_PREFERENCE = "pref_recent_emoji";
|
private static final String EMOJI_LRU_PREFERENCE = "pref_recent_emoji";
|
||||||
private static final int EMOJI_LRU_SIZE = 50;
|
private static final int EMOJI_LRU_SIZE = 50;
|
||||||
|
|
||||||
private final SharedPreferences prefs;
|
private final SharedPreferences prefs;
|
||||||
private final LinkedHashSet<Integer> recentlyUsed;
|
private final LinkedHashSet<Integer> recentlyUsed;
|
||||||
private OnModelChangedListener listener;
|
|
||||||
|
|
||||||
public RecentEmojiPageModel(Context context) {
|
public RecentEmojiPageModel(Context context) {
|
||||||
this.prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
this.prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
@ -54,6 +53,10 @@ public class RecentEmojiPageModel extends EmojiPageModel {
|
|||||||
return toReversePrimitiveArray(recentlyUsed);
|
return toReversePrimitiveArray(recentlyUsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override public boolean isDynamic() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public void onCodePointSelected(int codePoint) {
|
public void onCodePointSelected(int codePoint) {
|
||||||
Log.w(TAG, "onCodePointSelected(" + codePoint + ")");
|
Log.w(TAG, "onCodePointSelected(" + codePoint + ")");
|
||||||
recentlyUsed.remove(codePoint);
|
recentlyUsed.remove(codePoint);
|
||||||
@ -82,12 +85,6 @@ public class RecentEmojiPageModel extends EmojiPageModel {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}.execute();
|
}.execute();
|
||||||
|
|
||||||
if (listener != null) listener.onModelChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public void setOnModelChangedListener(OnModelChangedListener listener) {
|
|
||||||
this.listener = listener;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private LinkedHashSet<Integer> fromHexString(@Nullable LinkedHashSet<String> stringSet) {
|
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.DrawableRes;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
|
|
||||||
public class StaticEmojiPageModel extends EmojiPageModel {
|
public class StaticEmojiPageModel implements EmojiPageModel {
|
||||||
@DrawableRes private final int icon;
|
@DrawableRes private final int icon;
|
||||||
@NonNull private final int[] codePoints;
|
@NonNull private final int[] codePoints;
|
||||||
|
|
||||||
@ -19,4 +19,8 @@ public class StaticEmojiPageModel extends EmojiPageModel {
|
|||||||
@NonNull public int[] getCodePoints() {
|
@NonNull public int[] getCodePoints() {
|
||||||
return codePoints;
|
return codePoints;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override public boolean isDynamic() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user