Skip to content

Commit cf3489b

Browse files
authored
Merge pull request #1 from jeffshee/v1.3
V1.3
2 parents 87afe7c + bcf9585 commit cf3489b

34 files changed

Lines changed: 402 additions & 86 deletions
0 Bytes
Binary file not shown.

.idea/gradle.xml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 12 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ android {
66
applicationId "io.github.jeffshee.linestickerkeyboard"
77
minSdkVersion 15
88
targetSdkVersion 28
9-
versionCode 1
10-
versionName "1.2"
9+
versionCode 2
10+
versionName "1.3"
1111
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1212
vectorDrawables.useSupportLibrary = true
1313
}
@@ -21,6 +21,7 @@ android {
2121

2222
repositories {
2323
jcenter()
24+
maven { url "https://jitpack.io" }
2425
}
2526

2627
dependencies {
@@ -38,4 +39,5 @@ dependencies {
3839
implementation 'com.google.code.gson:gson:2.8.5'
3940
implementation 'org.jsoup:jsoup:1.11.3'
4041
implementation 'io.github.jeffshee.apng2gif:apng2gif:1.2'
42+
implementation "com.github.nekocode:Badge:2.0"
4143
}

app/src/main/java/io/github/jeffshee/linestickerkeyboard/Adapter/BasePackAdapter.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.view.ViewGroup;
1010
import android.widget.ImageView;
1111
import android.widget.TextView;
12+
import android.widget.Toast;
1213

1314
import com.bumptech.glide.Glide;
1415
import com.bumptech.glide.RequestBuilder;
@@ -70,10 +71,21 @@ public boolean onResourceReady(Drawable resource, Object model, Target<Drawable>
7071
@Override
7172
public void onClick(View view) {
7273
if (service != null) {
73-
service.postSticker((Sticker) stickerViewHolder.itemView.getTag(), saveHistory());
74+
service.postSticker((Sticker) stickerViewHolder.itemView.getTag(), saveHistory(), false);
7475
}
7576
}
7677
});
78+
// LongClick to force sending stickers as (A)PNG files
79+
stickerViewHolder.imageView.setOnLongClickListener(new View.OnLongClickListener() {
80+
@Override
81+
public boolean onLongClick(View v) {
82+
if (service != null) {
83+
Toast.makeText(context, context.getString(R.string.force_png), Toast.LENGTH_SHORT).show();
84+
service.postSticker((Sticker) stickerViewHolder.itemView.getTag(), saveHistory(), true);
85+
}
86+
return true;
87+
}
88+
});
7789
}
7890

7991

app/src/main/java/io/github/jeffshee/linestickerkeyboard/Adapter/ListAdapter.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111
import android.view.View;
1212
import android.view.ViewGroup;
1313
import android.widget.Button;
14+
import android.widget.CompoundButton;
1415
import android.widget.ImageView;
1516
import android.widget.TextView;
1617
import android.widget.Toast;
18+
import android.widget.ToggleButton;
1719

1820
import com.bumptech.glide.Glide;
1921

@@ -64,10 +66,24 @@ public void onClick(View view) {
6466
public void onClick(View view) {
6567
int i = stickerPacks.indexOf((StickerPack) stickerViewHolder.itemView.getTag());
6668
Toast.makeText(context,
67-
context.getString(R.string.store_id)+" "+
69+
context.getString(R.string.store_id) + " " +
6870
stickerPacks.get(i).getStoreId(), Toast.LENGTH_SHORT).show();
6971
}
7072
});
73+
stickerViewHolder.toggle.setChecked(stickerPacks.get(i).getVisible());
74+
stickerViewHolder.toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
75+
@Override
76+
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
77+
int i = stickerPacks.indexOf((StickerPack) stickerViewHolder.itemView.getTag());
78+
stickerPacks.get(i).setVisible(isChecked);
79+
SharedPrefHelper.saveNewStickerPacks(context, stickerPacks);
80+
// Notify IMServer only
81+
Intent intent = new Intent();
82+
intent.setAction(BROADCAST_ACTION);
83+
intent.putExtra("message", "refresh");
84+
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
85+
}
86+
});
7187
}
7288

7389
private void delete(final int index) {
@@ -135,12 +151,14 @@ private class ListViewHolder extends RecyclerView.ViewHolder {
135151
private ImageView imageView;
136152
private TextView textView;
137153
private Button button;
154+
private ToggleButton toggle;
138155

139156
ListViewHolder(View itemView) {
140157
super(itemView);
141158
imageView = itemView.findViewById(R.id.imageView);
142159
textView = itemView.findViewById(R.id.textView);
143160
button = itemView.findViewById(R.id.btnDelete);
161+
toggle = itemView.findViewById(R.id.toggle_visibility);
144162
}
145163
}
146164
}

app/src/main/java/io/github/jeffshee/linestickerkeyboard/FetchService.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@
2424
import java.util.regex.Matcher;
2525
import java.util.regex.Pattern;
2626

27-
import io.github.jeffshee.apng2gif.Apng2Gif;
2827
import io.github.jeffshee.linestickerkeyboard.Model.Sticker;
2928
import io.github.jeffshee.linestickerkeyboard.Model.StickerPack;
29+
import io.github.jeffshee.linestickerkeyboard.Util.Apng2GifCustom;
3030
import io.github.jeffshee.linestickerkeyboard.Util.SharedPrefHelper;
3131

3232
public class FetchService extends IntentService {
@@ -50,7 +50,7 @@ public class FetchService extends IntentService {
5050
NotificationManagerCompat notificationManager;
5151
File pngDir;
5252
File gifDir;
53-
Apng2Gif apng2Gif;
53+
Apng2GifCustom apng2GifCustom;
5454

5555
public FetchService() {
5656
super("FetchService");
@@ -77,7 +77,7 @@ protected void onHandleIntent(Intent intent) {
7777
notificationManager = NotificationManagerCompat.from(this);
7878
pngDir = new File(getFilesDir(), "png");
7979
gifDir = new File(getFilesDir(), "gif");
80-
apng2Gif = new Apng2Gif();
80+
apng2GifCustom = new Apng2GifCustom();
8181

8282
if (intent != null) {
8383
final String action = intent.getAction();
@@ -240,7 +240,7 @@ private boolean convert() {
240240
for (int id = firstId; id < firstId + count; id++) {
241241
png = new File(pngDir, String.valueOf(id) + ".png");
242242
gif = new File(gifDir, String.valueOf(id) + ".gif");
243-
apng2Gif.start(png, gif);
243+
apng2GifCustom.start(png, gif);
244244
builder.setContentTitle(String.format(Locale.getDefault(),
245245
getString(R.string.fetch_converting) + " (%d/%d)", id - firstId + 1, count))
246246
.setSmallIcon(R.mipmap.ic_launcher)
@@ -256,4 +256,5 @@ private void send() {
256256
intent.putExtra("message", "add");
257257
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
258258
}
259-
}
259+
260+
}

app/src/main/java/io/github/jeffshee/linestickerkeyboard/IMService.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class IMService extends InputMethodService {
4646
/* ImageKeyboard Google Samples
4747
* https://github.com/googlesamples/android-CommitContentSampleIME/
4848
*/
49-
public void postSticker(Sticker sticker, boolean saveHistory) {
49+
public void postSticker(Sticker sticker, boolean saveHistory, boolean forcePng) {
5050
// Launch Main Activity for disclaimer
5151
if (!SharedPrefHelper.getDisclaimerStatus(this)) {
5252
Toast.makeText(this, getString(R.string.disclaimer_toast), Toast.LENGTH_SHORT).show();
@@ -57,13 +57,13 @@ public void postSticker(Sticker sticker, boolean saveHistory) {
5757
} else {
5858
boolean isPng = isCommitContentSupported(MIME_TYPE_PNG);
5959
boolean isGif = isCommitContentSupported(MIME_TYPE_GIF);
60-
if (sticker.getType() == Sticker.Type.STATIC) {
60+
if (sticker.getType() == Sticker.Type.STATIC || forcePng) {
6161
if (isPng) {
62-
File file = FileHelper.getFile(this, sticker);
62+
File file = FileHelper.getPngFile(this, sticker.getId());
6363
doCommitContent(file, MIME_TYPE_PNG);
6464
} else {
6565
Toast.makeText(this, getString(R.string.not_supported), Toast.LENGTH_SHORT).show();
66-
File file = FileHelper.getFile(this, sticker);
66+
File file = FileHelper.getPngFile(this, sticker.getId());
6767
createShareIntent(file, MIME_TYPE_PNG);
6868
}
6969
} else {
@@ -153,7 +153,6 @@ public View onCreateInputView() {
153153

154154
@Override
155155
public void onStartInput(EditorInfo attribute, boolean restarting) {
156-
157156
super.onStartInput(attribute, restarting);
158157
}
159158

@@ -220,8 +219,9 @@ private class Receiver extends BroadcastReceiver {
220219

221220
@Override
222221
public void onReceive(Context context, Intent intent) {
223-
if (stickerKeyboardView != null)
224-
stickerKeyboardView.refreshViewPager(context);
222+
// Restart everything, thanks for this.
223+
// https://stackoverflow.com/questions/20288655/how-to-restart-oncreateinputview
224+
setInputView(onCreateInputView());
225225
}
226226
}
227227
}

app/src/main/java/io/github/jeffshee/linestickerkeyboard/MainActivity.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,31 @@
66
import android.net.Uri;
77
import android.os.Bundle;
88
import android.provider.Settings;
9+
import android.support.v4.content.LocalBroadcastManager;
910
import android.support.v7.app.AlertDialog;
1011
import android.support.v7.app.AppCompatActivity;
1112
import android.view.View;
1213
import android.view.inputmethod.InputMethodManager;
1314
import android.widget.AdapterView;
1415
import android.widget.ArrayAdapter;
16+
import android.widget.ImageView;
1517
import android.widget.ListView;
1618
import android.widget.Toast;
1719

1820
import java.util.ArrayList;
1921

22+
import cn.nekocode.badge.BadgeDrawable;
2023
import io.github.jeffshee.linestickerkeyboard.Model.HistoryPack;
2124
import io.github.jeffshee.linestickerkeyboard.Model.Sticker;
2225
import io.github.jeffshee.linestickerkeyboard.Util.SharedPrefHelper;
2326

27+
import static io.github.jeffshee.linestickerkeyboard.FetchService.BROADCAST_ACTION;
28+
2429
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
2530

2631
private static final String TRACKER = "https://github.com/jeffshee/LINEStickerKeyboard/issues";
2732
private static final String HP = "https://github.com/jeffshee/LINEStickerKeyboard";
33+
private static final String README = "https://github.com/jeffshee/LINEStickerKeyboard/blob/master/README.md";
2834

2935
Activity activity = this;
3036

@@ -37,6 +43,14 @@ protected void onCreate(Bundle savedInstanceState) {
3743
listView.setAdapter(new ArrayAdapter<>(this,
3844
android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.main_activity_list)));
3945
listView.setOnItemClickListener(this);
46+
ImageView footer = findViewById(R.id.footer);
47+
footer.setImageDrawable(new
48+
BadgeDrawable.Builder()
49+
.type(BadgeDrawable.TYPE_WITH_TWO_TEXT_COMPLEMENTARY)
50+
.badgeColor(getResources().getColor(R.color.md_deep_purple_900))
51+
.text1(getString(R.string.app_name))
52+
.text2(BuildConfig.VERSION_NAME)
53+
.build());
4054
}
4155

4256
@Override
@@ -74,6 +88,11 @@ private void clearHistory() {
7488
@Override
7589
public void onClick(DialogInterface dialogInterface, int i) {
7690
SharedPrefHelper.saveNewHistoryPack(activity, new HistoryPack(new ArrayList<Sticker>()));
91+
// Notify IMServer only
92+
Intent intent = new Intent();
93+
intent.setAction(BROADCAST_ACTION);
94+
intent.putExtra("message", "refresh");
95+
LocalBroadcastManager.getInstance(activity).sendBroadcast(intent);
7796
}
7897
})
7998
.setNegativeButton(getString(R.string.negative_cancel), null);
@@ -87,13 +106,13 @@ private void feedback() {
87106
}
88107

89108
private void about() {
90-
Uri uri = Uri.parse(HP);
109+
Uri uri = Uri.parse(README);
91110
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
92111
startActivity(intent);
93112
}
94113

95114
private void disclaimer() {
96-
if(!SharedPrefHelper.getDisclaimerStatus(this)){
115+
if (!SharedPrefHelper.getDisclaimerStatus(this)) {
97116
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
98117
builder.setCancelable(false).setTitle(getString(R.string.disclaimer))
99118
.setMessage(getString(R.string.disclaimer_text))

app/src/main/java/io/github/jeffshee/linestickerkeyboard/Model/StickerPack.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ public class StickerPack {
55
private int count;
66
private int storeId;
77
private String title;
8+
private boolean visible;
89

910
public StickerPack(Sticker firstSticker, int count, int storeId, String title) {
1011
this.firstSticker = firstSticker;
1112
this.count = count;
1213
this.storeId = storeId;
1314
this.title = title;
15+
this.visible = true;
1416
}
1517

1618
public int getFirstId() {
@@ -40,4 +42,12 @@ public int getStoreId() {
4042
public String getTitle() {
4143
return title;
4244
}
45+
46+
public boolean getVisible(){
47+
return visible;
48+
}
49+
50+
public void setVisible(boolean b){
51+
visible = b;
52+
}
4353
}

0 commit comments

Comments
 (0)