]> www.average.org Git - WhereAmI.git/blobdiff - src/org/average/whereami/WhereAmI.java
tweak layout
[WhereAmI.git] / src / org / average / whereami / WhereAmI.java
index 2f69212af35f023f542cd6d4a5a310d29e242426..0f193cd71d3a13d8047f3ee6108c165ac034e45a 100644 (file)
@@ -3,6 +3,10 @@ package org.average.whereami;
 import android.app.Activity;
 import android.os.Bundle;
 import android.os.AsyncTask;
+import android.os.Handler;
+import android.os.SystemClock;
+import android.content.res.Resources;
+import android.text.format.Time;
 import android.util.Log;
 import android.view.View;
 import android.view.Window;
@@ -11,6 +15,21 @@ import android.widget.TextView;
 
 public class WhereAmI extends Activity
 {
+    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;
+
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState)
@@ -20,29 +39,87 @@ public class WhereAmI extends Activity
         getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
         getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
         setContentView(R.layout.main);
+        res = getResources();
+        month = res.getStringArray(R.array.month);
+        wday = res.getStringArray(R.array.wday);
+        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");
-        new TimedUpdateTask().execute(5);
+       updateClock.run();
+       updateCal.run();
+       updateInfo.run();
         Log.v("WhereAmI", "created UI, update task created");
     }
 
-    private class TimedUpdateTask extends AsyncTask<Integer, Void, String> {
+    private Handler mHandler = new Handler();
+
+    private Runnable updateClock = new Runnable () {
+        public void run() {
+            long now = System.currentTimeMillis();
+            Time tm = new Time();
+            tm.set(now);
+            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("\n%d ") +
+                       month[tm.month] +
+                       tm.format(" %Y"));
+            tm.set(now + 86400000);
+            tm.hour=0;
+            tm.minute=0;
+            tm.second=0;
+            long next = tm.toMillis(false);
+            mHandler.postDelayed(this, next-now+1);
+        }
+    };
+
+    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) {
-            TextView tv = (TextView)findViewById(R.id.tv);
             Log.v("TimedUpdateTask", "callback executing");
-            tv.append("\n" + 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"));
         }
     }
 }