Skip to content

Commit e147d1d

Browse files
author
Anirudh S
committed
[New Feature]: Edit attachment pictures
Users can now edit attachment pictures by drawing upon them.
1 parent 531a4b8 commit e147d1d

File tree

12 files changed

+775
-322
lines changed

12 files changed

+775
-322
lines changed

helpstack/AndroidManifest.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
1212
<uses-permission android:name="android.permission.INTERNET" />
13+
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
1314

1415
<application >
1516
<activity
@@ -41,7 +42,10 @@
4142
<activity
4243
android:name="com.tenmiles.helpstack.activities.ImageAttachmentDisplayActivity">
4344
</activity>
44-
45+
<activity
46+
android:name="com.tenmiles.helpstack.activities.EditAttachmentActivity">
47+
</activity>
48+
4549
<receiver
4650
android:name="com.tenmiles.helpstack.service.AttachmentDownloadReceiver"
4751
android:enabled="true" >

helpstack/res/drawable/paint.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
2+
<item>
3+
<shape android:shape="rectangle" >
4+
<stroke
5+
android:width="4dp"
6+
android:color="#FF999999" />
7+
<solid android:color="#00000000" />
8+
</shape>
9+
</item>
10+
</layer-list>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
2+
<item>
3+
<shape android:shape="rectangle" >
4+
<stroke
5+
android:width="4dp"
6+
android:color="#FF333333" />
7+
8+
<solid android:color="#00000000" />
9+
</shape>
10+
</item>
11+
<item>
12+
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
13+
<stroke
14+
android:width="4dp"
15+
android:color="#FF333333" />
16+
17+
<solid android:color="#00000000" />
18+
</shape>
19+
</item>
20+
</layer-list>
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2+
xmlns:tools="http://schemas.android.com/tools"
3+
android:layout_width="match_parent"
4+
android:layout_height="match_parent"
5+
android:background="#FFCCCCCC"
6+
android:orientation="vertical"
7+
tools:context=".MainActivity" >
8+
9+
<com.tenmiles.helpstack.activities.DrawingView
10+
android:id="@+id/drawing"
11+
android:layout_width="fill_parent"
12+
android:layout_height="0dp"
13+
android:layout_weight="1"
14+
android:background="#FFFFFFFF" />
15+
16+
17+
<LinearLayout
18+
android:id="@+id/paint_colors"
19+
android:layout_width="wrap_content"
20+
android:layout_height="wrap_content"
21+
android:layout_gravity="center_horizontal"
22+
android:orientation="horizontal" >
23+
24+
<ImageButton
25+
android:layout_width="@dimen/color_button_size"
26+
android:layout_height="@dimen/color_button_size"
27+
android:layout_margin="2dp"
28+
android:background="#FFFF0000"
29+
android:onClick="paintClicked"
30+
android:src="@drawable/paint"
31+
android:tag="#FFFF0000" />
32+
33+
34+
<ImageButton
35+
android:layout_width="@dimen/color_button_size"
36+
android:layout_height="@dimen/color_button_size"
37+
android:layout_margin="2dp"
38+
android:background="#FF009900"
39+
40+
android:onClick="paintClicked"
41+
android:src="@drawable/paint"
42+
android:tag="#FF009900" />
43+
44+
<ImageButton
45+
android:layout_width="@dimen/color_button_size"
46+
android:layout_height="@dimen/color_button_size"
47+
android:layout_margin="2dp"
48+
android:background="#FF0000FF"
49+
50+
android:onClick="paintClicked"
51+
android:src="@drawable/paint"
52+
android:tag="#FF0000FF" />
53+
54+
55+
56+
57+
58+
<ImageButton
59+
android:layout_width="@dimen/color_button_size"
60+
android:layout_height="@dimen/color_button_size"
61+
android:layout_margin="2dp"
62+
android:background="#FFFFFFFF"
63+
64+
android:onClick="paintClicked"
65+
android:src="@drawable/paint"
66+
android:tag="#FFFFFFFF" />
67+
68+
69+
70+
<ImageButton
71+
android:layout_width="@dimen/color_button_size"
72+
android:layout_height="@dimen/color_button_size"
73+
android:layout_margin="2dp"
74+
android:background="#FF000000"
75+
76+
android:onClick="paintClicked"
77+
android:src="@drawable/paint"
78+
android:tag="#FF000000" />
79+
80+
</LinearLayout>
81+
82+
</LinearLayout>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<menu xmlns:android="http://schemas.android.com/apk/res/android"
2+
xmlns:app="http://schemas.android.com/apk/res-auto"
3+
xmlns:tools="http://schemas.android.com/tools"
4+
tools:context="com.tenmiles.helpstack.activities.EditAttachmentActivity" >
5+
6+
<item
7+
android:id="@+id/save"
8+
android:orderInCategory="1"
9+
android:showAsAction="always"
10+
android:title="@string/hs_save"/>
11+
12+
</menu>

helpstack/res/values/hs_dimens.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,7 @@
1414
<dimen name="hs_button_textSize">20sp</dimen>
1515
<dimen name="hs_smallTextMaxWidth">100dp</dimen>
1616
<dimen name="hs_chatbubbleMarginWidth">4dp</dimen>
17+
18+
<dimen name="color_button_size">30dp</dimen>
19+
1720
</resources>

helpstack/res/values/hs_strings.xml

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,64 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<resources>
3-
3+
<string name="hs_app_name">HelpStack</string>
4+
45
<!-- Strings used in the main list view screen -->
56
<string name="hs_help_title">Help</string>
67
<string name="hs_articles_title">FAQ</string>
78
<string name="hs_issues_title">ISSUES</string>
89
<string name="hs_issuebutton_title">Report An Issue</string>
910
<string name="hs_powered_by_helpstack">Powered by HelpStack</string>
10-
11+
1112
<!-- Strings used in search view -->
1213
<string name="hs_search_hint">Search Articles</string>
13-
14+
1415
<!-- Strings used in new User screen -->
1516
<string name="hs_new_user_title">Register New User</string>
1617
<string name="hs_firstname_hint">First Name</string>
1718
<string name="hs_lastname_hint">Last Name</string>
1819
<string name="hs_email_hint">Email Address</string>
1920
<string name="hs_new_user_message">Please enter your name and email to register</string>
20-
21+
2122
<!-- Strings used in new Issue screen -->
22-
<string name="hs_issue_created_raised">Your issue has been created and raised.</string>
23+
<string name="hs_issue_created_raised">Your issue has been created and raised.</string>
2324
<string name="hs_new_issue_title">Report Issue</string>
2425
<string name="hs_subject_hint">Subject</string>
2526
<string name="hs_message_hint">Message</string>
26-
27+
2728
<!-- Strings used in issue detail screen -->
2829
<string name="hs_addreply_hint">Add Reply</string>
2930
<string name="hs_sendbutton_title">Send</string>
3031
<string name="hs_me">Me</string>
3132
<string name="hs_staff">Staff</string>
32-
33+
3334
<!-- Strings used as attachment options in issue detail and new issue screens -->
3435
<string name="hs_change">Change</string>
3536
<string name="hs_remove">Remove</string>
3637
<string name="hs_select_picture">Select Picture</string>
37-
38+
3839
<!-- Strings used in attachment screen -->
3940
<string name="hs_attachment">Attachment</string>
4041
<string name="hs_attachments">Attachments</string>
41-
42+
43+
<string name="hs_attachment_edit">Edit Attachment</string>
44+
<string name="hs_save">Save</string>
45+
4246
<!-- Strings used in article screen -->
4347
<string name="hs_article">Article</string>
44-
48+
4549
<!-- Strings used as Menu items -->
4650
<string name="hs_next">Next</string>
4751
<string name="hs_done">Done</string>
4852
<string name="hs_search">Search</string>
49-
53+
5054
<!-- Strings related to downloads -->
5155
<string name="hs_download">Download</string>
5256
<string name="hs_downloading_attachment">Downloading Attachment</string>
5357
<string name="hs_download_complete">Download complete</string>
5458
<string name="hs_loading">Loading...</string>
5559
<string name="hs_notify_download_complete">You will be notified when the download finishes.</string>
5660
<string name="hs_open_with">Open with</string>
57-
61+
5862
<!-- String used in error messages -->
5963
<string name="hs_error">Error</string>
6064
<string name="hs_error_check_network_connection">Please check your network connection</string>

helpstack/res/values/strings.xml

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
package com.tenmiles.helpstack.activities;
2+
3+
import android.content.Context;
4+
import android.graphics.Bitmap;
5+
import android.graphics.Canvas;
6+
import android.graphics.Color;
7+
import android.graphics.Paint;
8+
import android.graphics.Path;
9+
import android.graphics.PorterDuff;
10+
import android.graphics.PorterDuffXfermode;
11+
import android.graphics.Rect;
12+
import android.util.AttributeSet;
13+
import android.util.TypedValue;
14+
import android.view.MotionEvent;
15+
import android.view.View;
16+
17+
public class DrawingView extends View {
18+
19+
private Path drawPath;
20+
private Paint drawPaint;
21+
private Paint canvasPaint;
22+
private Canvas drawCanvas;
23+
private Bitmap canvasBitmap;
24+
25+
private int paintColor = 0xFFFF0000;
26+
27+
private int brushSize = 20;
28+
29+
public DrawingView(Context context, AttributeSet attrs) {
30+
super(context, attrs);
31+
setupDrawing();
32+
}
33+
34+
public void setCanvasBitmap(Bitmap bitmap) {
35+
drawCanvas.drawColor(Color.BLUE);
36+
// bitmap = Bitmap.createBitmap(bitmap, 0, 0, drawCanvas.getWidth(), drawCanvas.getHeight());
37+
Bitmap mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
38+
39+
Bitmap resizedBitmap = Bitmap.createScaledBitmap(mutableBitmap, drawCanvas.getWidth(), drawCanvas.getHeight(), false);
40+
drawCanvas.drawBitmap(resizedBitmap, this.getLeft(), this.getTop(), drawPaint);
41+
}
42+
43+
private void setupDrawing() {
44+
drawPath = new Path();
45+
drawPaint = new Paint();
46+
47+
drawPaint.setColor(paintColor);
48+
49+
drawPaint.setAntiAlias(true);
50+
drawPaint.setStrokeWidth(brushSize);
51+
drawPaint.setStyle(Paint.Style.STROKE);
52+
drawPaint.setStrokeJoin(Paint.Join.ROUND);
53+
drawPaint.setStrokeCap(Paint.Cap.ROUND);
54+
55+
canvasPaint = new Paint(Paint.DITHER_FLAG);
56+
}
57+
58+
59+
@Override
60+
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
61+
// View given size
62+
super.onSizeChanged(w, h, oldw, oldh);
63+
64+
canvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
65+
drawCanvas = new Canvas(canvasBitmap);
66+
}
67+
68+
@Override
69+
protected void onDraw(Canvas canvas) {
70+
canvas.drawBitmap(canvasBitmap, 0, 0, canvasPaint);
71+
canvas.drawPath(drawPath, drawPaint);
72+
}
73+
74+
@Override
75+
public boolean onTouchEvent(MotionEvent event) {
76+
float touchX = event.getX();
77+
float touchY = event.getY();
78+
79+
80+
switch (event.getAction()) {
81+
case MotionEvent.ACTION_DOWN:
82+
drawPath.moveTo(touchX, touchY);
83+
break;
84+
case MotionEvent.ACTION_MOVE:
85+
drawPath.lineTo(touchX, touchY);
86+
break;
87+
case MotionEvent.ACTION_UP:
88+
drawCanvas.drawPath(drawPath, drawPaint);
89+
drawPath.reset();
90+
break;
91+
default:
92+
return false;
93+
}
94+
95+
invalidate();
96+
return true;
97+
}
98+
99+
public void setColor(String newColor) {
100+
invalidate();
101+
102+
paintColor = Color.parseColor(newColor);
103+
drawPaint.setColor(paintColor);
104+
}
105+
106+
}

0 commit comments

Comments
 (0)