Skip to content

Commit 705ddfe

Browse files
committed
upload image
1 parent 07fc166 commit 705ddfe

6 files changed

Lines changed: 122 additions & 0 deletions

File tree

ARE/app/src/main/java/com/chinalwb/are/demo/ARE_DefaultToolbarActivity.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.chinalwb.are.demo;
22

33
import android.content.Intent;
4+
import android.net.Uri;
45
import android.support.v7.app.AppCompatActivity;
56
import android.os.Bundle;
67
import android.view.Menu;
@@ -10,6 +11,8 @@
1011
import android.widget.ImageView;
1112

1213
import com.chinalwb.are.AREditText;
14+
import com.chinalwb.are.demo.helpers.DemoImageStrategy;
15+
import com.chinalwb.are.strategies.ImageStrategy;
1316
import com.chinalwb.are.styles.toolbar.ARE_ToolbarDefault;
1417
import com.chinalwb.are.styles.toolbar.IARE_Toolbar;
1518
import com.chinalwb.are.styles.toolitems.ARE_ToolItem_AlignmentCenter;
@@ -31,6 +34,7 @@
3134
import com.chinalwb.are.styles.toolitems.ARE_ToolItem_Underline;
3235
import com.chinalwb.are.styles.toolitems.ARE_ToolItem_Video;
3336
import com.chinalwb.are.styles.toolitems.IARE_ToolItem;
37+
import com.chinalwb.are.styles.toolitems.styles.ARE_Style_Image;
3438

3539
import static com.chinalwb.are.demo.TextViewActivity.HTML_TEXT;
3640

@@ -42,6 +46,8 @@ public class ARE_DefaultToolbarActivity extends AppCompatActivity {
4246

4347
private boolean scrollerAtEnd;
4448

49+
private ImageStrategy imageStrategy = new DemoImageStrategy();
50+
4551
@Override
4652
protected void onCreate(Bundle savedInstanceState) {
4753
super.onCreate(savedInstanceState);
@@ -93,6 +99,7 @@ private void initToolbar() {
9399

94100
mEditText = this.findViewById(R.id.arEditText);
95101
mEditText.setToolbar(mToolbar);
102+
mEditText.setImageStrategy(imageStrategy);
96103

97104
setHtml();
98105

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.chinalwb.are.demo.helpers;
2+
3+
import android.app.ProgressDialog;
4+
import android.net.Uri;
5+
import android.os.AsyncTask;
6+
7+
import com.chinalwb.are.spans.AreImageSpan;
8+
import com.chinalwb.are.strategies.ImageStrategy;
9+
import com.chinalwb.are.styles.toolitems.styles.ARE_Style_Image;
10+
11+
import java.lang.ref.WeakReference;
12+
13+
import static android.os.AsyncTask.THREAD_POOL_EXECUTOR;
14+
15+
public class DemoImageStrategy implements ImageStrategy {
16+
@Override
17+
public void uploadAndInsertImage(Uri uri, ARE_Style_Image areStyleImage) {
18+
new UploadImageTask(areStyleImage).executeOnExecutor(THREAD_POOL_EXECUTOR, uri);
19+
}
20+
21+
private static class UploadImageTask extends AsyncTask<Uri, Integer, String> {
22+
23+
WeakReference<ARE_Style_Image> areStyleImage;
24+
private ProgressDialog dialog;
25+
UploadImageTask(ARE_Style_Image styleImage) {
26+
this.areStyleImage = new WeakReference<>(styleImage);
27+
}
28+
29+
@Override
30+
protected void onPreExecute() {
31+
super.onPreExecute();
32+
if (dialog == null) {
33+
dialog = ProgressDialog.show(
34+
areStyleImage.get().getEditText().getContext(),
35+
"",
36+
"Uploading image. Please wait...",
37+
true);
38+
} else {
39+
dialog.show();
40+
}
41+
}
42+
43+
@Override
44+
protected String doInBackground(Uri... uris) {
45+
if (uris != null && uris.length > 0) {
46+
try {
47+
// do upload here ~
48+
Thread.sleep(3000);
49+
} catch (InterruptedException e) {
50+
e.printStackTrace();
51+
}
52+
53+
// Returns the image url on server here
54+
return "https://avatars0.githubusercontent.com/u/1758864?s=460&v=4";
55+
}
56+
return null;
57+
}
58+
59+
@Override
60+
protected void onProgressUpdate(Integer... values) {
61+
super.onProgressUpdate(values);
62+
}
63+
64+
@Override
65+
protected void onPostExecute(String s) {
66+
super.onPostExecute(s);
67+
if (dialog != null) {
68+
dialog.dismiss();
69+
}
70+
if (areStyleImage.get() != null) {
71+
areStyleImage.get().insertImage(s, AreImageSpan.ImageType.URL);
72+
}
73+
}
74+
}
75+
}

ARE/are/src/main/java/com/chinalwb/are/AREditText.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.content.Context;
44
import android.graphics.Color;
5+
import android.media.Image;
56
import android.os.Build;
67
import android.support.v7.widget.AppCompatEditText;
78
import android.text.Editable;
@@ -29,6 +30,7 @@
2930
import com.chinalwb.are.spans.AreSuperscriptSpan;
3031
import com.chinalwb.are.spans.AreUnderlineSpan;
3132
import com.chinalwb.are.strategies.AtStrategy;
33+
import com.chinalwb.are.strategies.ImageStrategy;
3234
import com.chinalwb.are.strategies.VideoStrategy;
3335
import com.chinalwb.are.styles.ARE_Helper;
3436
import com.chinalwb.are.styles.IARE_Style;
@@ -385,4 +387,9 @@ public static void stopMonitor() {
385387
private VideoStrategy mVideoStrategy;
386388
public void setVideoStrategy(VideoStrategy videoStrategy) { mVideoStrategy = videoStrategy; }
387389
public VideoStrategy getVideoStrategy() { return mVideoStrategy; }
390+
391+
// ImageStrategy
392+
private ImageStrategy mImageStrategy;
393+
public void setImageStrategy(ImageStrategy imageStrategy) { mImageStrategy = imageStrategy; }
394+
public ImageStrategy getImageStrategy() { return mImageStrategy; }
388395
}

ARE/are/src/main/java/com/chinalwb/are/AREditor.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.chinalwb.are.render.AreImageGetter;
1616
import com.chinalwb.are.render.AreTagHandler;
1717
import com.chinalwb.are.strategies.AtStrategy;
18+
import com.chinalwb.are.strategies.ImageStrategy;
1819
import com.chinalwb.are.strategies.VideoStrategy;
1920
import com.chinalwb.are.styles.toolbar.ARE_Toolbar;
2021

@@ -328,4 +329,8 @@ public void setVideoStrategy(VideoStrategy videoStrategy) {
328329
this.mAre.setVideoStrategy(videoStrategy);
329330
}
330331

332+
public void setImageStrategy(ImageStrategy imageStrategy) {
333+
this.mAre.setImageStrategy(imageStrategy);
334+
}
335+
331336
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.chinalwb.are.strategies;
2+
3+
import android.net.Uri;
4+
5+
import com.chinalwb.are.styles.toolitems.styles.ARE_Style_Image;
6+
7+
public interface ImageStrategy {
8+
9+
/**
10+
* Upload the video to server and return the url of the video at server.
11+
* After that done, you need to call
12+
* {@link ARE_Style_Image#insertImage(Object, com.chinalwb.are.spans.AreImageSpan.ImageType)}
13+
* to insert the url on server to ARE
14+
*
15+
* @param uri
16+
* @param areStyleImage used to insert the url on server to ARE
17+
*/
18+
void uploadAndInsertImage(Uri uri, ARE_Style_Image areStyleImage);
19+
}

ARE/are/src/main/java/com/chinalwb/are/styles/toolitems/ARE_ToolItem_Image.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import android.text.Editable;
88
import android.text.style.CharacterStyle;
99
import android.text.style.StyleSpan;
10+
import android.util.Log;
1011
import android.view.View;
1112
import android.widget.ImageView;
1213
import android.widget.LinearLayout;
@@ -18,11 +19,14 @@
1819
import com.chinalwb.are.activities.Are_VideoPlayerActivity;
1920
import com.chinalwb.are.models.AtItem;
2021
import com.chinalwb.are.spans.AreImageSpan;
22+
import com.chinalwb.are.strategies.ImageStrategy;
2123
import com.chinalwb.are.styles.ARE_At;
2224
import com.chinalwb.are.styles.IARE_Style;
2325
import com.chinalwb.are.styles.toolitems.styles.ARE_Style_Bold;
2426
import com.chinalwb.are.styles.toolitems.styles.ARE_Style_Image;
2527

28+
import java.io.File;
29+
2630
/**
2731
* Created by wliu on 13/08/2018.
2832
*/
@@ -72,6 +76,11 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
7276
if (ARE_Style_Image.REQUEST_CODE == requestCode) {
7377
ARE_Style_Image imageStyle = (ARE_Style_Image) getStyle();
7478
Uri uri = data.getData();
79+
ImageStrategy imageStrategy = this.getEditText().getImageStrategy();
80+
if (imageStrategy != null) {
81+
imageStrategy.uploadAndInsertImage(uri, imageStyle);
82+
return;
83+
}
7584
imageStyle.insertImage(uri, AreImageSpan.ImageType.URI);
7685
}
7786
}

0 commit comments

Comments
 (0)