· 10 years ago · Aug 22, 2016, 09:52 AM
1public class DBHelper extends SQLiteOpenHelper {
2
3private static final String TAG = "DBHelper";
4private static DBHelper mInstance = null;
5
6public static final String DATABASE_NAME = "Playbook.db";
7private static final int DATABASE_VERSION = 1;
8
9private static final String TABLE_DRAWING = "Drawing";
10
11private static final String TABLE_PLAYBOOK_ENTRY_NAME = "EntryName";
12private static final String TABLE_PLAYBOOK_ENTRY_DESCRIPTION = "EntryDescription";
13
14private static final String TABLE_BWM = "bwm";
15private static final String TABLE_CATCH = "catch";
16
17private static final String TABLE_WIDE_RECEIVER_LEFT = "WideReceiverLeft";
18private static final String TABLE_TACKLE_OFFENSE_LEFT = "TackleLeft";
19private static final String TABLE_GUARD_LEFT = "GuardLeft";
20private static final String TABLE_CENTER = "Center";
21private static final String TABLE_GUARD_RIGHT = "GuardRight";
22private static final String TABLE_TACKLE_OFFENSE_RIGHT = "TackleRight";
23private static final String TABLE_TIGHT_END = "TightEnd";
24private static final String TABLE_WIDE_RECEIVER_RIGHT = "WideReceiverRight";
25private static final String TABLE_FULLBACK = "Fullback";
26private static final String TABLE_HALFBACK = "Halfback";
27
28private static final String TABLE_END_LEFT = "EndLeft";
29private static final String TABLE_TACKLE_DEFENSE_LEFT = "TackleDefenseLeft";
30private static final String TABLE_TACKLE_DEFENSE_RIGHT = "TackleDefenseRight";
31private static final String TABLE_END_RIGHT = "EndRight";
32private static final String TABLE_OUTSIDE_LINEBACKER_LEFT = "OutsideLinebackerLeft";
33private static final String TABLE_MIDDLE_LINEBACKER = "MiddleLinebacker";
34private static final String TABLE_OUTSIDE_LINEBACKER_RIGHT = "OutsideLinebackerRight";
35private static final String TABLE_SAFETY_LEFT = "SafetyLeft";
36private static final String TABLE_SAFETY_RIGHT = "SafetyRight";
37private static final String TABLE_CORNERBACK_LEFT = "CornerbackLeft";
38private static final String TABLE_CORNERBACK_RIGHT = "CornerbackRight";
39
40public static final String ENTRY_PATHS = "paths";
41public static final String ENTRY_COLUMN_PLAYBOOK_NAME = "entryName";
42public static final String ENTRY_COLUMN_PLAYBOOK_DESCRIPTION = "entryDescription";
43public static final String ENTRY_COLUMN_XPERCENT = "xPercent";
44public static final String ENTRY_COLUMN_YPERCENT = "yPercent";
45
46public static synchronized DBHelper getInstance(Context context) {
47 if(mInstance == null) {
48 mInstance = new DBHelper(context.getApplicationContext());
49 }
50 return mInstance;
51}
52
53public DBHelper(Context context) {
54 super(context, DATABASE_NAME , null, DATABASE_VERSION);
55}
56
57@Override
58public void onCreate(SQLiteDatabase db) {
59 // TODO Auto-generated method stub
60 db.execSQL("CREATE TABLE IF NOT EXISTS "+TABLE_PLAYBOOK_ENTRY_NAME+"(id integer primary key, entryName text)");
61 db.execSQL("CREATE TABLE IF NOT EXISTS "+TABLE_PLAYBOOK_ENTRY_DESCRIPTION+"(id integer primary key, entryDescription text)");
62
63 db.execSQL("CREATE TABLE IF NOT EXISTS "+TABLE_WIDE_RECEIVER_LEFT+" (id integer primary key, xPercent double, yPercent double)");
64 db.execSQL("CREATE TABLE IF NOT EXISTS "+TABLE_DRAWING+" (id integer primary key, paths text)");
65}
66
67@Override
68public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
69 // TODO Auto-generated method stub
70}
71
72
73public boolean insertDrawingPaths (String path) {
74 SQLiteDatabase db = this.getWritableDatabase();
75 ContentValues contentValues = new ContentValues();
76 contentValues.put("paths", path);
77 db.insert(TABLE_DRAWING, null, contentValues);
78 db.close();
79 return true;
80}
81
82@Override
83protected void onDestroy() {
84 super.onDestroy();
85}
86@Override
87protected void onResume() {
88 database = DBHelper.getInstance(this);
89 super.onResume();
90}
91@Override
92protected void onPause() {
93 updateDatabase();
94 super.onPause();
95}
96
97@Override
98protected void onCreate(Bundle savedInstanceState) {
99 super.onCreate(savedInstanceState);
100 setContentView(R.layout.activity_sketch);
101
102 menuFirstTimeDefense = 0;
103 menuFirstTimeOffense = 0;
104
105 fabClickState = 0;
106 init();
107
108 database = DBHelper.getInstance(this);
109
110 textview = (TextView) findViewById(R.id.textView);
111
112 Bundle extras = getIntent().getExtras();
113 if(extras != null) {
114 ID = extras.getInt("id");
115
116 if(ID == 0) {
117 Intent intent = new Intent(getApplicationContext(), NewEntry.class);
118 startActivity(intent);
119 } else if(ID>0) {
120 String p;
121
122 Toast.makeText(Sketch.this, ""+ID, Toast.LENGTH_SHORT).show();
123
124 readPlayerPositions();
125
126 try(Cursor cursor = database.getDataPaths(ID)) {
127 id_To_Update = ID;
128 cursor.moveToFirst();
129
130 p = cursor.getString(cursor.getColumnIndex(DBHelper.ENTRY_PATHS));
131 cursor.close();
132 }
133 Gson gson = new Gson();
134 Type type = new TypeToken<ArrayList<Path>>() {}.getType();
135
136 paths = gson.fromJson(p, type);
137 textview.setText(String.valueOf(p));
138 if(paths!=null) {
139 mCustomDrawing.setPaths(paths);
140 }
141
142 setPlayerPositionsFromDatabase();
143
144package com.mci.klui.scratchpad;
145
146
147public class CustomDrawing extends View {
148
149private Path drawPath;
150private Paint canvasPaint;
151private Paint drawPaint;
152private int paintColor = 0xFF660000;
153private Paint _paintBlur;
154
155private boolean eraseMode = false;
156
157private Canvas drawCanvas;
158private Bitmap canvasBitmap;
159
160private float currentBrushSize, lastBrushSize;
161
162public ArrayList<Path> getPaths() {
163 return paths;
164}
165
166public void setPaths(ArrayList<Path> paths) {
167 this.paths = paths;
168}
169
170private ArrayList<Path> paths = new ArrayList<Path>();
171private ArrayList<Path> undonePaths = new ArrayList<Path>();
172private float mX, mY;
173private static final float TOUCH_TOLERANCE = 4;
174
175private boolean enableDrawing;
176
177public void setEnableDrawing(boolean enableDrawing) {
178 this.enableDrawing = enableDrawing;
179}
180
181private void init(){
182 currentBrushSize = getResources().getInteger(R.integer.medium_size);
183 lastBrushSize = currentBrushSize;
184
185 drawPath = new Path();
186 drawPaint = new Paint();
187 drawPaint.setColor(paintColor);
188 drawPaint.setAntiAlias(true);
189 drawPaint.setStrokeWidth(currentBrushSize);
190 drawPaint.setStyle(Paint.Style.STROKE);
191 drawPaint.setStrokeJoin(Paint.Join.ROUND);
192 drawPaint.setStrokeCap(Paint.Cap.ROUND);
193
194 canvasPaint = new Paint(Paint.DITHER_FLAG);
195
196 this._paintBlur = new Paint();
197 this._paintBlur.set(drawPaint);
198 this._paintBlur.setAntiAlias(true);
199 this._paintBlur.setDither(true);
200 this._paintBlur.setStyle(Paint.Style.STROKE);
201 this._paintBlur.setStrokeJoin(Paint.Join.ROUND);
202 this._paintBlur.setStrokeCap(Paint.Cap.ROUND);
203 this._paintBlur.setColor(Color.RED);
204 this._paintBlur.setStrokeWidth(6);
205 this._paintBlur.setMaskFilter(new BlurMaskFilter(10.0F, BlurMaskFilter.Blur.OUTER));
206}
207
208public CustomDrawing(Context context, AttributeSet attrs) {
209 super(context, attrs);
210 init();
211}
212
213@Override
214protected void onDraw(Canvas canvas) {
215 for (Path p : paths) {
216 canvas.drawPath(p, drawPaint);
217 }
218 canvas.drawPath(drawPath, drawPaint);
219}
220
221@Override
222protected void onSizeChanged(int w, int h, int oldw, int oldh) {
223 super.onSizeChanged(w, h, oldw, oldh);
224
225 //create Bitmap of certain w,h
226 canvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
227
228 //apply bitmap to graphic to start drawing.
229 drawCanvas = new Canvas(canvasBitmap);
230}
231
232@Override
233public boolean onTouchEvent(MotionEvent event) {
234 if(enableDrawing) {
235 float touchX = event.getX();
236 float touchY = event.getY();
237
238 switch (event.getAction()) {
239 case MotionEvent.ACTION_DOWN:
240 touch_start(touchX, touchY);
241 invalidate();
242 break;
243 case MotionEvent.ACTION_MOVE:
244 touch_move(touchX, touchY);
245 invalidate();
246 break;
247 case MotionEvent.ACTION_UP:
248 touch_up();
249 invalidate();
250 break;
251 default:
252 return false;
253 }
254 return true;
255 } else {
256 return false;
257 }
258}
259
260/** Start new Drawing */
261public void eraseAll() {
262 drawPath = new Path();
263 paths.clear();
264 drawCanvas.drawColor(Color.WHITE);
265 invalidate();
266}
267
268private void touch_start(float x, float y) {
269 undonePaths.clear();
270 drawPath.reset();
271 drawPath.moveTo(x, y);
272 mX = x;
273 mY = y;
274}
275
276private void touch_up() {
277 drawPath.lineTo(mX, mY);
278 drawCanvas.drawPath(drawPath, drawPaint);
279 paths.add(drawPath);
280 drawPath = new Path();
281}
282
283private void touch_move(float x, float y) {
284 float dx = Math.abs(x - mX);
285 float dy = Math.abs(y - mY);
286 if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
287 drawPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
288 mX = x;
289 mY = y;
290 }
291}
292
293public void onClickUndo () {
294 if (paths.size()>0)
295 {
296 undonePaths.add(paths.remove(paths.size()-1));
297 invalidate();
298 }
299
300}
301
302public void onClickRedo (){
303 if (undonePaths.size()>0)
304 {
305 paths.add(undonePaths.remove(undonePaths.size()-1));
306 invalidate();
307 }
308}
309}