diff options
author | sjtufs <sjtu_fs@outlook.com> | 2013-09-01 00:32:38 +0800 |
---|---|---|
committer | sjtufs <sjtu_fs@outlook.com> | 2013-09-01 00:32:38 +0800 |
commit | 0410d0b9c6bb502f8467c3f2c62183e9a74e69fc (patch) | |
tree | f5a88d403269af46d03c1db1edff0941baab4837 /client/Piztor/src/com/macaroon/piztor/Settings.java | |
parent | 69a911d88c0e41f2aafbd6d88d53ea430890b3cd (diff) |
update for 0831. preparing for rc1
Diffstat (limited to 'client/Piztor/src/com/macaroon/piztor/Settings.java')
-rw-r--r-- | client/Piztor/src/com/macaroon/piztor/Settings.java | 144 |
1 files changed, 123 insertions, 21 deletions
diff --git a/client/Piztor/src/com/macaroon/piztor/Settings.java b/client/Piztor/src/com/macaroon/piztor/Settings.java index b334cc4..ad98662 100644 --- a/client/Piztor/src/com/macaroon/piztor/Settings.java +++ b/client/Piztor/src/com/macaroon/piztor/Settings.java @@ -1,7 +1,10 @@ package com.macaroon.piztor; +import java.lang.ref.WeakReference; import java.util.Vector; +import com.baidu.platform.comapi.basestruct.GeoPoint; + import android.annotation.SuppressLint; import android.os.Bundle; import android.os.Handler; @@ -10,22 +13,35 @@ import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.Button; +import android.widget.SeekBar; +import android.widget.TextView; import android.widget.Toast; public class Settings extends PiztorAct { - Button logout; + Button logout, subscribe, account; MapInfo mapInfo; Transam transam; // Event final static int logoutButtonPressed = 10; final static int logoutFailed = 11; + + private int currentRate; + + static class ReCall extends Handler { + WeakReference<Settings> outerClass; + + ReCall(Settings activity) { + outerClass = new WeakReference<Settings>(activity); + } - @SuppressLint("HandlerLeak") - Handler handler = new Handler() { @Override public void handleMessage(Message m) { + Settings out = outerClass.get(); + if (out == null) { + System.out.println("act被回收了"); + } switch (m.what) { - case Res.Update:// 上传自己信息成功or失败 + case Res.Login:// 上传自己信息成功or失败 Log.d("update location", "successfull"); break; case Res.UserInfo:// 得到用户信息 @@ -33,9 +49,9 @@ public class Settings extends PiztorAct { System.out.println("revieve ........" + userInfo.uinfo.size()); Vector<RUserInfo> uinfo = userInfo.uinfo; for (RUserInfo info : uinfo) { - System.out.println(info.latitude + " " - + info.longitude); - UserInfo r = mapInfo.getUserInfo(info.uid); + System.out + .println(info.latitude + " " + info.longitude); + UserInfo r = out.mapInfo.getUserInfo(info.uid); if (r != null) { r.setInfo(info.gid.company, info.gid.section, info.sex, info.nickname); @@ -45,39 +61,50 @@ public class Settings extends PiztorAct { r.setInfo(info.gid.company, info.gid.section, info.sex, info.nickname); r.setLocation(info.latitude, info.longitude); - mapInfo.addUserInfo(r); + out.mapInfo.addUserInfo(r); } } + System.out.println("now has info number : " + + out.mapInfo.allUsers.size()); break; case Res.Logout:// 登出 - actMgr.trigger(AppMgr.logout); + out.actMgr.trigger(AppMgr.logout); break; case Res.PushMessage: ResPushMessage pushMessage = (ResPushMessage) m.obj; - receiveMessage(pushMessage.message); + out.receiveMessage(pushMessage.message); break; case Res.SendMessage: Log.d(LogInfo.resquest, "send message successfully"); break; case Res.PushLocation: ResPushLocation pushLocation = (ResPushLocation) m.obj; - upMapInfo(pushLocation.l); + out.upMapInfo(pushLocation.l); + break; + case Res.PushMarker: + ResPushMarker pushMarker = (ResPushMarker) m.obj; + MarkerInfo markerInfo = new MarkerInfo(); + markerInfo.level = pushMarker.level; + markerInfo.markerPoint = new GeoPoint((int)(pushMarker.latitude * 1e6), (int)(pushMarker.longitude * 1e6)); + markerInfo.markerTimestamp = pushMarker.deadline; break; + case -1: + out.actMgr.trigger(AppMgr.logout); default: break; } } - }; - + } + ReCall handler = new ReCall(this); void upMapInfo(Vector<RLocation> l) { for (RLocation i : l) { - UserInfo info = AppMgr.mapInfo.getUserInfo(i.id); + UserInfo info = mapInfo.getUserInfo(i.id); if (info != null) { info.setLocation(i.latitude, i.longitude); } else { info = new UserInfo(i.id); info.setLocation(i.latitude, i.longitude); - AppMgr.mapInfo.addUserInfo(info); + mapInfo.addUserInfo(info); } } } @@ -94,7 +121,7 @@ public class Settings extends PiztorAct { @Override void enter(int e) { System.out.println("!!!!!!!logout info send!!!!!!!!"); - transam.send(new ReqLogout(Infomation.token, Infomation.username, + transam.send(new ReqLogout(app.token, app.username, System.currentTimeMillis(), 2000)); } @@ -105,18 +132,46 @@ public class Settings extends PiztorAct { } + public class mySeekBarListener implements SeekBar.OnSeekBarChangeListener { + + private SeekBar seekBar; + private TextView refreshrate; + + public mySeekBarListener() { + Log.d("seek", "new"); + seekBar = (SeekBar) Settings.this.findViewById(R.id.settings_GPSrefreshrate_bar); + refreshrate = (TextView) Settings.this.findViewById(R.id.settings_GPSrefreshrate); + seekBar.setOnSeekBarChangeListener(this); + } + @Override + public void onProgressChanged(SeekBar seekBar, int progress, + boolean fromUser) { + if (progress == 0) progress = 1; + refreshrate.setText(progress + "s each update"); + currentRate = progress; + Log.d("seek", "cur " + progress); + } + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + } + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + + } + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mapInfo = AppMgr.mapInfo; - transam = AppMgr.transam; - if (transam == null) - Log.d(LogInfo.exception, "transam = null"); + app = (myApp) getApplication(); + appMgr = app.appMgr; + mapInfo = app.mapInfo; + transam = app.transam; transam.setHandler(handler); ActStatus[] r = new ActStatus[3]; ActStatus start = r[0] = new EmptyStatus(); ActStatus logout = r[2] = new LogoutStatus(); - actMgr = new ActMgr(this, start, r); + actMgr = new ActMgr(appMgr, this, start, r); actMgr.add(start, logoutButtonPressed, logout); actMgr.add(logout, logoutFailed, start); setContentView(R.layout.activity_settings); @@ -126,14 +181,61 @@ public class Settings extends PiztorAct { protected void onStart() { super.onStart(); logout = (Button) findViewById(R.id.settings_btn_logout); + subscribe = (Button) findViewById(R.id.settings_btn_subscribe); + account = (Button) findViewById(R.id.settings_btn_updateinfo); + initGPSrate(); logout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { actMgr.trigger(logoutButtonPressed); } }); + subscribe.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View arg0) { + actMgr.trigger(AppMgr.subscribe); + } + }); + account.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + actMgr.trigger(AppMgr.account); + } + }); } + private void setGPSrate() { + if (currentRate == 0) currentRate = 1; + Main.GPSrefreshrate = currentRate; + } + + private void initGPSrate() { + currentRate = Main.GPSrefreshrate; + TextView text1 = (TextView) Settings.this.findViewById(R.id.settings_GPSrefreshrate); + text1.setText(currentRate + "s each update"); + SeekBar bar1 = (SeekBar) Settings.this.findViewById(R.id.settings_GPSrefreshrate_bar); + bar1.setProgress(currentRate); + bar1.setOnSeekBarChangeListener(new mySeekBarListener()); + } + + @Override + protected void onDestroy() { + setGPSrate(); + super.onPause(); + } + + @Override + protected void onStop() { + setGPSrate(); + super.onPause(); + } + + @Override + protected void onPause() { + setGPSrate(); + super.onPause(); + } + @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. |