/[aagtl_public1]/src/com/zoffcc/applications/aagtl/GCacheView.java
aagtl

Contents of /src/com/zoffcc/applications/aagtl/GCacheView.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4 - (hide annotations) (download)
Sat Aug 1 08:47:10 2015 UTC (8 years, 8 months ago) by zoffadmin
File size: 12599 byte(s)
1.0.35
1 zoffadmin 2 /**
2     * aagtl Advanced Geocaching Tool for Android
3     * loosely based on agtl by Daniel Fett <fett@danielfett.de>
4 zoffadmin 3 * Copyright (C) 2010 - 2012 Zoff <aagtl@work.zoff.cc>
5 zoffadmin 2 *
6     * This program is free software; you can redistribute it and/or
7     * modify it under the terms of the GNU General Public License
8     * version 2 as published by the Free Software Foundation.
9     *
10     * This program is distributed in the hope that it will be useful,
11     * but WITHOUT ANY WARRANTY; without even the implied warranty of
12     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13     * GNU General Public License for more details.
14     *
15     * You should have received a copy of the GNU General Public License
16     * along with this program; if not, write to the
17     * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18     * Boston, MA 02110-1301, USA.
19     */
20    
21     package com.zoffcc.applications.aagtl;
22    
23     import android.content.Context;
24     import android.graphics.Canvas;
25     import android.graphics.Color;
26     import android.graphics.Paint;
27     import android.os.Bundle;
28     import android.os.Handler;
29     import android.os.Message;
30     import android.text.Html;
31     import android.view.View;
32     import android.widget.ImageView;
33    
34     public class GCacheView extends ImageView
35     {
36    
37     GeocacheCoordinate gc = null;
38    
39     Paint box_paint = new Paint(0);
40     Paint text_paint = new Paint(0);
41    
42     int details_loaded = 0;
43     String gc_name_current = "";
44     String gc_name_previous = "";
45     int get_gc_from_db = 0;
46    
47     Boolean need_repaint = true;
48     Boolean override_download = false;
49    
50     public Boolean download_details_thread_finished = false;
51    
52     public static final int SHOW_DESC = 1;
53     public static final int SHOW_SHORT_DESC = 2;
54     public static final int SHOW_LOGS = 3;
55     public static final int SHOW_HINTS = 4;
56     public static final int SHOW_WAYPOINTS = 5;
57    
58     public int show_field = SHOW_SHORT_DESC;
59    
60     aagtl main_aagtl;
61    
62     public GCacheView(Context context, aagtl main_aagtl)
63     {
64     super(context);
65    
66     text_paint.setColor(Color.WHITE);
67     // text_paint.setStyle(Paint.Style.FILL);
68 zoffadmin 4 text_paint.setTextSize(16 * aagtl.Global_dpi_factor);
69 zoffadmin 2 // text_paint.setTypeface(Typeface.DEFAULT_BOLD);
70     text_paint.setAntiAlias(true);
71    
72     this.main_aagtl = main_aagtl;
73     this.clear_stuff();
74     }
75    
76     public void set_cache(GeocacheCoordinate co)
77     {
78     // System.out.println("in set_cache");
79    
80     need_repaint = true;
81    
82     try
83     {
84     this.gc_name_previous = gc.name;
85     // System.out.println("" + String.valueOf(this.gc.name));
86     }
87     catch (NullPointerException e)
88     {
89     this.gc_name_previous = "";
90     // System.out.println("null");
91     }
92    
93     this.gc_name_current = co.name;
94    
95     // System.out.println("cur=" + this.gc_name_current + " prev=" +
96     // this.gc_name_previous);
97     if (!this.gc_name_current.matches(this.gc_name_previous))
98     {
99     // System.out.println("details_loaded = 0");
100     this.details_loaded = 0;
101     // take new GC as cache-to-view
102     this.gc = co;
103     // set field back to shortdesc.
104     show_field = GCacheView.SHOW_SHORT_DESC;
105     }
106    
107     // System.out.println("" + String.valueOf(this.gc.name));
108     }
109    
110     public GeocacheCoordinate get_cache()
111     {
112     return this.gc;
113     }
114    
115     private class Thread_gcv1 extends Thread
116     {
117     Handler mHandler;
118     Boolean do_close = false;
119    
120     Thread_gcv1(Handler h)
121     {
122     mHandler = h;
123     }
124    
125     public void close_dialog()
126     {
127     this.do_close = true;
128     }
129    
130     public void run()
131     {
132     // System.out.println("thread xx started");
133     Message msg = mHandler.obtainMessage();
134     Bundle b = new Bundle();
135     b.putInt("command", 0);
136     msg.setData(b);
137     mHandler.sendMessage(msg);
138     while (!do_close)
139     {
140     try
141     {
142     Thread.sleep(100);
143     }
144     catch (InterruptedException e)
145     {
146     this.do_close = true;
147     }
148     }
149     // System.out.println("thread xx finished");
150     msg = mHandler.obtainMessage();
151     b = new Bundle();
152     b.putInt("command", 1);
153     msg.setData(b);
154     mHandler.sendMessage(msg);
155     }
156     }
157    
158     private class Thread_gcv2 extends Thread
159     {
160     GCacheView main = null;
161    
162     Thread_gcv2(GCacheView main_ref)
163     {
164     this.main = main_ref;
165     }
166    
167     public void run()
168     {
169     Thread_gcv1 t1 = new Thread_gcv1(this.main.main_aagtl.dl_handler);
170     t1.start();
171    
172     // System.out.println("thread yy started");
173     this.main.main_aagtl.cdol.update_coordinate(this.main.gc);
174     // System.out.println("thread yy finished");
175     this.main.download_details_thread_finished = true;
176     this.main.details_loaded = 2;
177     Message msg = this.main.main_aagtl.dl_handler.obtainMessage();
178     Bundle b = new Bundle();
179     b.putInt("command", 2);
180     msg.setData(b);
181     this.main.main_aagtl.dl_handler.sendMessage(msg);
182    
183     t1.close_dialog();
184     }
185     }
186    
187     public void onDraw(Canvas c)
188     {
189     // System.out.println("GCacheView: onDraw");
190    
191     if (this.gc == null)
192     {
193     c.drawColor(Color.RED);
194     }
195     else
196     {
197     try
198     {
199     c.drawColor(Color.BLACK);
200 zoffadmin 4 c.drawText(gc.name, 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor, text_paint);
201     c.drawText(gc.title, 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 30 * aagtl.Global_dpi_factor, text_paint);
202     c.drawText(gc.type, 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 2 * 30 * aagtl.Global_dpi_factor, text_paint);
203     c.drawText("size: " + String.valueOf(gc.size), 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 3 * 30 * aagtl.Global_dpi_factor, text_paint);
204     c.drawText("terrain: " + String.valueOf(gc.terrain), 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 4 * 30 * aagtl.Global_dpi_factor, text_paint);
205 zoffadmin 2
206     if (this.get_gc_from_db == 1)
207     {
208     // check in db for cache details
209 zoffadmin 4 c.drawText("checking database ...", 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 6 * 30 * aagtl.Global_dpi_factor, text_paint);
210 zoffadmin 2 this.gc = this.main_aagtl.pv.get_point_full(this.gc.name);
211     System.out.println("checking database");
212     System.out.println("DESC=" + this.gc.desc);
213 zoffadmin 4 if (this.gc.desc == null)
214 zoffadmin 2 {
215 zoffadmin 4 this.gc.desc = "please update details";
216 zoffadmin 2 }
217     this.get_gc_from_db = 0;
218     }
219    
220     if (this.details_loaded == 0)
221     {
222     if (!this.override_download)
223     {
224     // check in db for cache details
225 zoffadmin 4 c.drawText("checking database ...", 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 6 * 30 * aagtl.Global_dpi_factor, text_paint);
226 zoffadmin 2 this.gc = this.main_aagtl.pv.get_point_full(this.gc.name);
227     System.out.println("checking database");
228     System.out.println("DESC=" + this.gc.desc);
229     }
230     else
231     {
232     // ok override, and download from internet.
233     // set option back, this is a 1-shot option!
234     System.out.println("here 001");
235     this.override_download = false;
236     // make sure we download it!
237     this.gc.desc = null;
238     }
239    
240     if (this.gc.desc == null)
241     {
242     // download from internet (in background thread)
243     c.drawColor(Color.BLACK);
244    
245 zoffadmin 4 c.drawText(gc.name, 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor, text_paint);
246     c.drawText(gc.title, 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 30 * aagtl.Global_dpi_factor, text_paint);
247     c.drawText(gc.type, 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 2 * 30 * aagtl.Global_dpi_factor, text_paint);
248     c.drawText("size: " + String.valueOf(gc.size), 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 3 * 30 * aagtl.Global_dpi_factor, text_paint);
249     c.drawText("terrain: " + String.valueOf(gc.terrain), 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 4 * 30 * aagtl.Global_dpi_factor, text_paint);
250 zoffadmin 2
251 zoffadmin 4 c.drawText("downloading ...", 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 6 * 30 * aagtl.Global_dpi_factor, text_paint);
252 zoffadmin 2
253     // System.out.println("downloading from internet");
254     this.download_details_thread_finished = false;
255     this.details_loaded = 1;
256     Thread_gcv2 t2 = new Thread_gcv2(this);
257     t2.start();
258    
259     need_repaint = true;
260     }
261     else
262     {
263     // ok found something in DB
264     this.download_details_thread_finished = true;
265     this.details_loaded = 2;
266    
267     need_repaint = true;
268     }
269    
270     }
271     else if (this.details_loaded == 1)
272     {
273     c.drawColor(Color.BLACK);
274 zoffadmin 4 c.drawText(gc.name, 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor, text_paint);
275     c.drawText(gc.title, 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 30 * aagtl.Global_dpi_factor, text_paint);
276     c.drawText(gc.type, 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 2 * 30 * aagtl.Global_dpi_factor, text_paint);
277     c.drawText("size: " + String.valueOf(gc.size), 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 3 * 30 * aagtl.Global_dpi_factor, text_paint);
278 zoffadmin 2 c.drawText("status: " + String.valueOf(GeocacheCoordinate.STATUS_HASH.get(gc.status)), 150, 50 + 3 * 30, text_paint);
279 zoffadmin 4 c.drawText("diff: " + String.valueOf((float) gc.difficulty / 10f), 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 4 * 30 * aagtl.Global_dpi_factor, text_paint);
280     c.drawText("terrain: " + String.valueOf((float) gc.terrain / 10f), 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 5 * 30 * aagtl.Global_dpi_factor, text_paint);
281 zoffadmin 2
282 zoffadmin 4 c.drawText("downloading ...", 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 6 * 30 * aagtl.Global_dpi_factor, text_paint);
283 zoffadmin 2 }
284    
285     if (this.details_loaded == 2)
286     {
287     if (!need_repaint) // &&
288     // (this.gc_name_current.matches(this.gc_name_previous)))
289     {
290     // dont repaint all the time
291     return;
292     }
293    
294     need_repaint = false;
295     c.drawColor(Color.BLACK);
296 zoffadmin 4 c.drawText(gc.name, 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor, text_paint);
297     c.drawText(gc.title, 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 30 * aagtl.Global_dpi_factor, text_paint);
298     c.drawText(gc.type, 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 2 * 30 * aagtl.Global_dpi_factor, text_paint);
299     c.drawText("size: " + String.valueOf(gc.size), 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 3 * 30 * aagtl.Global_dpi_factor, text_paint);
300     c.drawText("status: " + String.valueOf(GeocacheCoordinate.STATUS_HASH.get(gc.status)), 150 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 3 * 30 * aagtl.Global_dpi_factor, text_paint);
301     c.drawText("diff: " + String.valueOf((float) gc.difficulty / 10f), 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 4 * 30 * aagtl.Global_dpi_factor, text_paint);
302     c.drawText("terrain: " + String.valueOf((float) gc.terrain / 10f), 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 5 * 30 * aagtl.Global_dpi_factor, text_paint);
303 zoffadmin 2
304     // c.drawText("details loaded", 10, 50 + 6 * 30, text_paint);
305 zoffadmin 4 c.drawText("", 10 * aagtl.Global_dpi_factor, 50 * aagtl.Global_dpi_factor + 6 * 30 * aagtl.Global_dpi_factor, text_paint);
306 zoffadmin 2
307     String show_field_text = this.gc.shortdesc;
308     switch (this.show_field)
309     {
310     case GCacheView.SHOW_SHORT_DESC:
311     // already set above, as default. dont set again
312     // show_field_text = this.gc.shortdesc;
313     break;
314     case GCacheView.SHOW_DESC:
315     show_field_text = this.gc.desc;
316     break;
317     case GCacheView.SHOW_LOGS:
318     show_field_text = this.gc.logs;
319     break;
320     case GCacheView.SHOW_HINTS:
321     show_field_text = this.gc.hints;
322     break;
323     case GCacheView.SHOW_WAYPOINTS:
324     show_field_text = this.gc.waypoints;
325     break;
326     }
327     String nice_text = Html.fromHtml(show_field_text).toString().replaceAll("\n", "<br>");
328     // add white text color
329     nice_text = "<style> * { color: #FFFFFF; } </style> " + nice_text;
330    
331     // load the text into the webview
332     this.main_aagtl.wv.loadDataWithBaseURL(null, nice_text, "text/html", "UTF-8", null);
333    
334     // transparent bg-color
335     // this.main_aagtl.wv.setBackgroundColor(0);
336     this.main_aagtl.wv.setBackgroundColor(Color.BLACK);
337     // disable javascript
338     this.main_aagtl.wv.getSettings().setJavaScriptEnabled(false);
339     this.main_aagtl.wv.setVisibility(View.VISIBLE);
340     this.main_aagtl.wv.bringToFront();
341     }
342     }
343     catch (NullPointerException e)
344     {
345    
346     }
347     }
348     }
349    
350     public void clear_stuff()
351     {
352     }
353    
354     public void onSizeChanged(int width, int height, int old_w, int old_h)
355     {
356     // System.out.println("GCacheView: onSizeChanged");
357     }
358    
359     }

   
Visit the aagtl Website