]> www.average.org Git - WhereAmI.git/blobdiff - src/org/average/whereami/WhereAmI.java
tweak layout
[WhereAmI.git] / src / org / average / whereami / WhereAmI.java
index f4403642a1a4b4d96380eea192e9c92f68da0a8b..0f193cd71d3a13d8047f3ee6108c165ac034e45a 100644 (file)
@@ -15,7 +15,17 @@ import android.widget.TextView;
 
 public class WhereAmI extends Activity
 {
-    private TextView tv;
+    private class UpdateTarget {
+        public TextView tv;
+        public Integer updater; // will be the function/object
+        public UpdateTarget(TextView tv, Integer updater) {
+           this.tv = tv;
+           this.updater = updater;
+        }
+    }
+    private UpdateTarget[] ut;
+
+    private TextView tvt, tvd, tvs;
     private Resources res;
     private String[] month;
     private String[] wday;
@@ -32,12 +42,17 @@ public class WhereAmI extends Activity
         res = getResources();
         month = res.getStringArray(R.array.month);
         wday = res.getStringArray(R.array.wday);
-        Log.v("WhereAmI","month length " + Integer.toString(month.length));
-        Log.v("WhereAmI","wday length " + Integer.toString(wday.length));
-        tv = (TextView)findViewById(R.id.tv);
-        tv.setText(R.string.greet);
+        tvt = (TextView)findViewById(R.id.time);
+        tvd = (TextView)findViewById(R.id.date);
+        tvs = (TextView)findViewById(R.id.timestamp);
+       ut = new UpdateTarget[] {
+            new UpdateTarget((TextView)findViewById(R.id.location),  1),
+            new UpdateTarget((TextView)findViewById(R.id.phonecall), 2)
+        };
         Log.v("WhereAmI", "created UI, about to start update task");
-       mHandler.postDelayed(updateClock, 1000);
+       updateClock.run();
+       updateCal.run();
+       updateInfo.run();
         Log.v("WhereAmI", "created UI, update task created");
     }
 
@@ -48,40 +63,63 @@ public class WhereAmI extends Activity
             long now = System.currentTimeMillis();
             Time tm = new Time();
             tm.set(now);
-            Log.v("WhereAmI", "weekday is" + Integer.toString(tm.weekDay));
-            Log.v("WhereAmI", "month is" + Integer.toString(tm.month));
-            tv.setText(
+            tvt.setText(tm.format("%H:%M"));
+            tm.set(now + 60000);
+            tm.second=0;
+            long next = tm.toMillis(false);
+            mHandler.postDelayed(this, next-now+1);
+        }
+    };
+
+    private Runnable updateCal = new Runnable () {
+        public void run() {
+            long now = System.currentTimeMillis();
+            Time tm = new Time();
+            tm.set(now);
+            tvd.setText(
                        wday[tm.weekDay] +
-                       tm.format("%d ") +
+                       tm.format("\n%d ") +
                        month[tm.month] +
-                       tm.format(" %Y") +
-                       tm.format(", %H:%M%:%S"));
-            tm.second++;
+                       tm.format(" %Y"));
+            tm.set(now + 86400000);
+            tm.hour=0;
+            tm.minute=0;
+            tm.second=0;
             long next = tm.toMillis(false);
-            tv.append("\n" + Long.toString(next-now+1));
-            
-            // new TimedUpdateTask().execute(5); // for delayed execution
             mHandler.postDelayed(this, next-now+1);
         }
     };
 
-    private class TimedUpdateTask extends AsyncTask<Integer, Void, String> {
+    private Runnable updateInfo = new Runnable () {
+        public void run() {
+            Log.v("updateInfo", "starting");
+            for (int i = 0; i < ut.length; i++) {
+                ut[i].tv.setText(R.string.updating);
+                new TimedUpdateTask().execute(ut[i]);
+            }
+            mHandler.postDelayed(this, 10000);
+        }
+    };
+
+    private class TimedUpdateTask extends AsyncTask<UpdateTarget, Void, String> {
+        private UpdateTarget ut;
        @Override
-        protected String doInBackground(Integer... howlong) {
+        protected String doInBackground(UpdateTarget... whereto) {
             Log.v("TimedUpdateTask", "starting");
-            try {
-                Thread.sleep(1000 * howlong[0]);
-            } catch (InterruptedException e) {
-                Log.e("TimedUpdateTask", "sleep interrupted");
-            }
+            ut = whereto[0];
+            SystemClock.sleep(5000); // real job do be done here
             Log.v("TimedUpdateTask", "about to return");
-            return (Integer.toString(howlong[0]) + " seconds passed");
+            return "5 seconds passed";
         }
     
        @Override
         protected void onPostExecute(String str) {
             Log.v("TimedUpdateTask", "callback executing");
-            tv.setText(str);
+            ut.tv.setText(str);
+            Time tm = new Time();
+            tm.setToNow();
+            tvs.setText(R.string.lasttry);
+            tvs.append(tm.format(" %d/%m/%Y %H:%M:%S"));
         }
     }
 }