From 49d2e9d74fbf95e5b287dc8e9179e8d3d977a527 Mon Sep 17 00:00:00 2001 From: sjtufs Date: Sun, 1 Sep 2013 05:57:40 +0800 Subject: stable version --- .../src/com/macaroon/piztor/AccountSettings.java | 5 - .../Piztor/src/com/macaroon/piztor/AlertMaker.java | 16 +-- client/Piztor/src/com/macaroon/piztor/AppMgr.java | 41 +++--- client/Piztor/src/com/macaroon/piztor/CopyMap.java | 50 -------- .../Piztor/src/com/macaroon/piztor/Infomation.java | 7 - client/Piztor/src/com/macaroon/piztor/InitAct.java | 13 +- client/Piztor/src/com/macaroon/piztor/Login.java | 19 +-- client/Piztor/src/com/macaroon/piztor/Main.java | 38 +++--- .../src/com/macaroon/piztor/MainActivity.java | 133 ------------------- .../Piztor/src/com/macaroon/piztor/MapMaker.java | 80 ++++++------ .../Piztor/src/com/macaroon/piztor/Rlocation.java | 13 -- .../Piztor/src/com/macaroon/piztor/Settings.java | 9 +- .../src/com/macaroon/piztor/SubscribeSettings.java | 119 +++++++++++++---- .../Piztor/src/com/macaroon/piztor/UpdateInfo.java | 141 ++++++++++++++++++++- client/Piztor/src/com/macaroon/piztor/myApp.java | 6 +- 15 files changed, 360 insertions(+), 330 deletions(-) delete mode 100644 client/Piztor/src/com/macaroon/piztor/AccountSettings.java delete mode 100644 client/Piztor/src/com/macaroon/piztor/CopyMap.java delete mode 100644 client/Piztor/src/com/macaroon/piztor/Infomation.java delete mode 100644 client/Piztor/src/com/macaroon/piztor/MainActivity.java delete mode 100644 client/Piztor/src/com/macaroon/piztor/Rlocation.java (limited to 'client/Piztor/src/com/macaroon/piztor') diff --git a/client/Piztor/src/com/macaroon/piztor/AccountSettings.java b/client/Piztor/src/com/macaroon/piztor/AccountSettings.java deleted file mode 100644 index 150bc64..0000000 --- a/client/Piztor/src/com/macaroon/piztor/AccountSettings.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.macaroon.piztor; - -public class AccountSettings extends PiztorAct{ - -} diff --git a/client/Piztor/src/com/macaroon/piztor/AlertMaker.java b/client/Piztor/src/com/macaroon/piztor/AlertMaker.java index 7e36310..bc8e138 100644 --- a/client/Piztor/src/com/macaroon/piztor/AlertMaker.java +++ b/client/Piztor/src/com/macaroon/piztor/AlertMaker.java @@ -70,16 +70,16 @@ public class AlertMaker { closeBoard(context); AlertDialog.Builder gpsDialog = new AlertDialog.Builder(context); - gpsDialog.setTitle("GPS settings"); - gpsDialog.setMessage("GPS is not enabled. Please turn it on."); - gpsDialog.setPositiveButton("Settings", + gpsDialog.setTitle("GPS设置"); + gpsDialog.setMessage("GPS未开启,是否前去打开?"); + gpsDialog.setPositiveButton("设置", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); context.startActivity(intent); } }); - gpsDialog.setNegativeButton("Go without GPS", + gpsDialog.setNegativeButton("不使用GPS", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); @@ -131,7 +131,7 @@ public class AlertMaker { Log.d("marker", "marker alert calls drawmarker"); } else if (!flag) { Toast toast = Toast.makeText(context, - "Too early! Give me at least 2 minutes!", Toast.LENGTH_LONG); + "太早了!多给一点时间", Toast.LENGTH_LONG); toast.show(); closeBoard(context); showMarkerAlert(markerPoint); @@ -149,7 +149,7 @@ public class AlertMaker { LayoutInflater infaler = LayoutInflater.from(context); final LinearLayout layout = (LinearLayout)infaler.inflate(R.layout.checkindialog, null); checkinDialog.setView(layout); - checkinDialog.setNeutralButton("cancel", new DialogInterface.OnClickListener() { + checkinDialog.setNeutralButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(layout.getWindowToken(), 0); @@ -171,10 +171,10 @@ public class AlertMaker { //TODO pbar.setVisibility(View.GONE); mapMaker.removeMarker(); - Toast toast = Toast.makeText(context, "Marker checked!", 2000); + Toast toast = Toast.makeText(context, "已签到!", 2000); toast.setGravity(Gravity.TOP, 0, 80); toast.show(); - checkinInfo.setText("Success!"); + checkinInfo.setText("成功!"); } }.start(); } diff --git a/client/Piztor/src/com/macaroon/piztor/AppMgr.java b/client/Piztor/src/com/macaroon/piztor/AppMgr.java index f1a3445..a7f1af0 100644 --- a/client/Piztor/src/com/macaroon/piztor/AppMgr.java +++ b/client/Piztor/src/com/macaroon/piztor/AppMgr.java @@ -1,11 +1,10 @@ package com.macaroon.piztor; import java.util.HashMap; -import java.util.HashSet; +import java.util.Stack; import android.annotation.SuppressLint; import android.content.Intent; -import com.baidu.mapapi.BMapManager; @SuppressLint("UseSparseArrays") public class AppMgr { @@ -18,31 +17,33 @@ public class AppMgr { final static int logout = 106; final static int subscribe = 107; final static int account = 108; + final static int finish = 109; + public enum ActivityStatus { create, start, resume, restart, stop, pause, destroy } + myApp app; HashMap, HashMap>> mp; - HashSet acts; + Stack acts; ActivityStatus status; PiztorAct nowAct; void addAct(PiztorAct act) { if (acts == null) - acts = new HashSet(); - acts.add(act); + acts = new Stack(); + acts.push(act); } - void removeAct(PiztorAct act) { - if (acts.contains(act)) - acts.remove(act); - else - System.out.println("Piztor has a bug!!!!"); - } + /* + * void removeAct(PiztorAct act) { if (acts.contains(act)) acts.remove(act); + * else System.out.println("Piztor has a bug!!!!"); } + */ void exit() { - for (PiztorAct act : acts) { - act.finish(); + while (!acts.isEmpty()) { + acts.peek().finish(); + acts.pop(); } app.token = null; app.mBMapManager.destroy(); @@ -53,8 +54,10 @@ public class AppMgr { } void trigger(int event) { - Intent i = new Intent(); - i.setClass(nowAct, mp.get(nowAct.getClass()).get(event)); + if (event == finish) { + nowAct.finish(); + return; + } if (event == errorToken) app.token = null; if (event == loginSuccess || event == hasToken) { @@ -63,8 +66,13 @@ public class AppMgr { } if (event == logout) { System.out.println("我来停一发!!!!"); + app.isLogout = true; app.mBMapManager.stop(); + nowAct.finish(); + return; } + Intent i = new Intent(); + i.setClass(nowAct, mp.get(nowAct.getClass()).get(event)); nowAct.startActivity(i); } @@ -101,9 +109,10 @@ public class AppMgr { addStatus(Login.class); addStatus(Main.class); addStatus(Settings.class); + addTransition(UpdateInfo.class, logout, Login.class); addTransition(Settings.class, subscribe, SubscribeSettings.class); addTransition(SubscribeSettings.class, logout, Login.class); - addTransition(Settings.class, account, AccountSettings.class); + addTransition(Settings.class, account, UpdateInfo.class); addTransition(InitAct.class, noToken, Login.class); addTransition(InitAct.class, hasToken, Main.class); addTransition(InitAct.class, errorToken, Login.class); diff --git a/client/Piztor/src/com/macaroon/piztor/CopyMap.java b/client/Piztor/src/com/macaroon/piztor/CopyMap.java deleted file mode 100644 index 6d49767..0000000 --- a/client/Piztor/src/com/macaroon/piztor/CopyMap.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.macaroon.piztor; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import android.content.Context; - -public class CopyMap { - /** - * - * @param myContext - * @param ASSETS_NAME 要复制的文件名 - * @param savePath 要保存的路径 - * @param saveName 复制后的文件名 - * testCopy(Context context)是一个测试例子。 - */ - - public static void copy(Context myContext, String ASSETS_NAME, - String savePath, String saveName) { - String filename = savePath + "/" + saveName; - - File dir = new File(savePath); - // 如果目录不中存在,创建这个目录 - if (!dir.exists()) - dir.mkdir(); - try { - if (!(new File(filename)).exists()) { - InputStream is = myContext.getResources().getAssets() - .open(ASSETS_NAME); - System.out.println(ASSETS_NAME); - FileOutputStream fos = new FileOutputStream(filename); - byte[] buffer = new byte[7168]; - int count = 0; - while ((count = is.read(buffer)) > 0) { - fos.write(buffer, 0, count); - } - fos.close(); - is.close(); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - public void testCopy(Context context) { - String path=context.getFilesDir().getAbsolutePath(); - String name="test"; - CopyMap.copy(context, name, path, name); - } -} - diff --git a/client/Piztor/src/com/macaroon/piztor/Infomation.java b/client/Piztor/src/com/macaroon/piztor/Infomation.java deleted file mode 100644 index dbae0a0..0000000 --- a/client/Piztor/src/com/macaroon/piztor/Infomation.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.macaroon.piztor; - -import java.util.Vector; - -public class Infomation { - -} diff --git a/client/Piztor/src/com/macaroon/piztor/InitAct.java b/client/Piztor/src/com/macaroon/piztor/InitAct.java index a4f82ff..5f7f61d 100644 --- a/client/Piztor/src/com/macaroon/piztor/InitAct.java +++ b/client/Piztor/src/com/macaroon/piztor/InitAct.java @@ -1,17 +1,19 @@ package com.macaroon.piztor; -import com.baidu.mapapi.MKGeneralListener; - import android.app.Activity; +import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Menu; +import com.baidu.mapapi.MKGeneralListener; + public class InitAct extends PiztorAct { @Override protected void onCreate(Bundle savedInstanceState) { id = "initAct"; super.onCreate(savedInstanceState); + app.isExiting = false; app.mBMapManager.init(app.getStrkey(), new MKGeneralListener() { @Override public void onGetNetworkState(int iError) { @@ -33,12 +35,15 @@ public class InitAct extends PiztorAct { @Override protected void onResume() { + if (app.isExiting) + finish(); super.onResume(); - if (app.token == null) + if (app.token == null || app.isLogout) { app.appMgr.trigger(AppMgr.noToken); + } else { - System.out.println("has token!!!"); app.appMgr.trigger(AppMgr.hasToken); + System.out.println("has token!!!"); } } diff --git a/client/Piztor/src/com/macaroon/piztor/Login.java b/client/Piztor/src/com/macaroon/piztor/Login.java index bdbf7ed..3b9cbc2 100644 --- a/client/Piztor/src/com/macaroon/piztor/Login.java +++ b/client/Piztor/src/com/macaroon/piztor/Login.java @@ -37,6 +37,7 @@ public class Login extends PiztorAct { res.uinfo.gid.section, res.uinfo.sex, res.uinfo.nickname); app.mapInfo.myInfo.level = res.uinfo.level; + app.mapInfo.myInfo.nickname = res.uinfo.nickname; System.out.println("login !!!!" + res.sublist.size()); actMgr.trigger(AppMgr.loginSuccess); } else { @@ -85,12 +86,6 @@ public class Login extends PiztorAct { protected void onCreate(Bundle savedInstanceState) { id = "login"; super.onCreate(savedInstanceState); - ActStatus[] r = new ActStatus[2]; - r[0] = new StartStatus(); - r[1] = new LoginStatus(); - actMgr = new ActMgr(appMgr, this, r[0], r); - actMgr.add(r[0], loginButtonClick, r[1]); - actMgr.add(r[1], loginFailed, r[0]); setContentView(R.layout.activity_login); } @@ -110,15 +105,23 @@ public class Login extends PiztorAct { @Override protected void onResume() { + if (app.isExiting) + finish(); + app.isLogout = false; super.onResume(); + ActStatus[] r = new ActStatus[2]; + r[0] = new StartStatus(); + r[1] = new LoginStatus(); + actMgr = new ActMgr(appMgr, this, r[0], r); + actMgr.add(r[0], loginButtonClick, r[1]); + actMgr.add(r[1], loginFailed, r[0]); transam.setHandler(handler); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { - appMgr.exit(); - return true; + app.isExiting = true; } return super.onKeyDown(keyCode, event); } diff --git a/client/Piztor/src/com/macaroon/piztor/Main.java b/client/Piztor/src/com/macaroon/piztor/Main.java index 4efea11..7ac1b21 100644 --- a/client/Piztor/src/com/macaroon/piztor/Main.java +++ b/client/Piztor/src/com/macaroon/piztor/Main.java @@ -41,7 +41,6 @@ public class Main extends PiztorAct { GeoPoint markerPoint = null; private MKMapTouchListener mapTouchListener; private final int checkinRadius = 10; - public static int GPSrefreshrate = 5; /** * Locating component @@ -52,6 +51,7 @@ public class Main extends PiztorAct { LocationData locData = null; public MyLocationListener myListener = new MyLocationListener(); boolean isFirstLocation = true; + public static int GPSrefreshrate = 5; ImageButton btnCheckin, btnFetch, btnFocus, btnSettings; @@ -210,21 +210,21 @@ public class Main extends PiztorAct { int TMP = location.getLocType(); if (TMP == 61) { Toast toast = Toast.makeText(Main.this, - "Piztor : Update from GPS result (" + GPSrefreshrate + "Piztor : 由GPS更新 (刷新时间" + GPSrefreshrate + "s)", 2000); toast.setGravity(Gravity.TOP, 0, 80); toast.show(); } if (TMP == 161) { Toast toast = Toast.makeText(Main.this, - "Piztor : Update from Network (" + GPSrefreshrate + "Piztor : 由网络更新 (刷新时间" + GPSrefreshrate + "s)", 2000); toast.setGravity(Gravity.TOP, 0, 80); toast.show(); } if (TMP == 65) { Toast toast = Toast.makeText(Main.this, - "Piztor : Update from Cache (" + GPSrefreshrate + "s)", + "Piztor : 由缓存更新 (刷新时间" + GPSrefreshrate + "s)", 2000); toast.setGravity(Gravity.TOP, 0, 80); toast.show(); @@ -311,7 +311,7 @@ public class Main extends PiztorAct { public void markerCheckin() { Log.d("checkin", "ok!!!"); if (mapMaker.getMakerLocation() == null) { - Toast toast = Toast.makeText(Main.this, "No marker now!", 2000); + Toast toast = Toast.makeText(Main.this, "暂无路标", 2000); toast.setGravity(Gravity.TOP, 0, 80); toast.show(); return; @@ -325,7 +325,7 @@ public class Main extends PiztorAct { alertMaker.showCheckinAlter(); } else { Toast toast = Toast.makeText(Main.this, - "Please get closer to the marker!", 2000); + "请靠近路标", 2000); toast.setGravity(Gravity.TOP, 0, 80); toast.show(); } @@ -340,11 +340,6 @@ public class Main extends PiztorAct { .getSystemService(LOCATION_SERVICE); isGPSEnabled = locationManager .isProviderEnabled(locationManager.GPS_PROVIDER); - ActStatus[] r = new ActStatus[1]; - ActStatus startStatus = r[0] = new StartStatus(); - transam = app.transam; - - actMgr = new ActMgr(appMgr, this, startStatus, r); setContentView(R.layout.activity_main); app.mBMapManager.start(); @@ -415,11 +410,19 @@ public class Main extends PiztorAct { @Override protected void onResume() { + if (app.isExiting || app.isLogout) + finish(); + ActStatus[] r = new ActStatus[1]; + ActStatus startStatus = r[0] = new StartStatus(); + actMgr = new ActMgr(appMgr, this, startStatus, r); mMapView.onResume(); transam.setHandler(handler); isFirstLocation = true; mLocClient.start(); - requestUserInfo(); + if (app.token == null) { + System.out.println("fuck!!"); + } else + requestUserInfo(); // mapMaker.onResume(); flushMap(); super.onResume(); @@ -446,7 +449,9 @@ public class Main extends PiztorAct { if (mLocClient != null) { mLocClient.stop(); } - // mMapView.destroy(); + // mapMaker.mOffline.destroy(); + mMapView.destroy(); + app.mBMapManager.stop(); // while null? // mMapView.destroy(); // @@ -457,9 +462,8 @@ public class Main extends PiztorAct { public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { System.out.println("ready to exit!!!"); - app.mBMapManager.stop(); - appMgr.exit(); - return true; + // + app.isExiting = true; } return super.onKeyDown(keyCode, event); } @@ -467,7 +471,7 @@ public class Main extends PiztorAct { @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. - getMenuInflater().inflate(R.menu.main, menu); + // getMenuInflater().inflate(R.menu.main, menu); return false; } diff --git a/client/Piztor/src/com/macaroon/piztor/MainActivity.java b/client/Piztor/src/com/macaroon/piztor/MainActivity.java deleted file mode 100644 index 483112d..0000000 --- a/client/Piztor/src/com/macaroon/piztor/MainActivity.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.macaroon.piztor; - -import java.util.Vector; - -import android.app.Activity; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.view.Menu; -import android.view.View; - -public class MainActivity extends Activity { - public String token = ""; - public String uname = ""; - public int com; - public int sec; - public int step = 0; - Transam t; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - t = new Transam("192.168.1.171",2223,handler); - Thread thread = new Thread(t); - thread.start(); - - } - - Handler handler = new Handler() { - public void handleMessage(Message msg) { - switch (msg.what) { - case 0: - token = ((ResLogin) msg.obj ).t; - uname = ((ResLogin) msg.obj ).uinfo.username; - com = ((ResLogin) msg.obj ).uinfo.gid.company; - sec = ((ResLogin) msg.obj ).uinfo.gid.section; - System.out.println(com); - System.out.println(sec); - System.out.println(((ResLogin) msg.obj ).uinfo.sex); - for(int i=0;i<((ResLogin) msg.obj ).subscribeNumber;i++){ - System.out.println(((ResLogin) msg.obj ).sublist.get(i).company); - System.out.println(((ResLogin) msg.obj ).sublist.get(i).section); - } - System.out.println(token); - break; - case 2: - ResUserInfo r = (ResUserInfo) msg.obj ; - System.out.println(r.number); - for(int i=0;i ll = ((ResPushLocation)msg.obj).l; - for(int i=0;i 180.0 || point.getLatitudeE6() / 1E6 < -180.0 + || point.getLongitudeE6() > 180.0 || point.getLongitudeE6() / 1E6 < -180.0) + return false; + return true; + } + /** * Update to draw other users */ @@ -324,6 +333,11 @@ public class MapMaker extends Activity { markerToInt.remove(hash.get(i.uid)); hash.remove(i.uid); } + if (mapInfo.getUserInfo(i.uid) != null && isInvalidLocation(mapInfo.getUserInfo(i.uid).location)) { + mOverlay.removeItem(hash.get(i.uid)); + markerToInt.remove(hash.get(i.uid)); + hash.remove(i.uid); + } } } mMapView.refresh(); @@ -334,26 +348,28 @@ public class MapMaker extends Activity { if (i.uid == preMapInfo.myInfo.uid) continue; if (hash.containsKey(i.uid) == false) { - GeoPoint p = new GeoPoint((int) (i.getLatitude() * 1E6), - (int) (i.getLongitude() * 1E6)); - curItem = new OverlayItem(p, "USERNAME_HERE", + if (isInvalidLocation(i.location)) { + + } else { + curItem = new OverlayItem(i.location, "USERNAME_HERE", "USER_SNIPPET_HERE"); - // TODO getDrawable - // ///////////////////////////// - curItem.setMarker(getGroupIcon(i.section)); - mOverlay.addItem(curItem); - hash.put(i.uid, curItem); - markerToInt.put(curItem, i.uid); - // if (mMapView != null) - // mMapView.refresh(); + // TODO getDrawable + // ///////////////////////////// + curItem.setMarker(getGroupIcon(i.section)); + mOverlay.addItem(curItem); + hash.put(i.uid, curItem); + markerToInt.put(curItem, i.uid); + } } else { - GeoPoint p = new GeoPoint((int) (i.getLatitude() * 1E6), - (int) (i.getLongitude() * 1E6)); - curItem = hash.get(i.uid); - curItem.setGeoPoint(p); - mOverlay.updateItem(curItem); - // if (mMapView != null) - // mMapView.refresh(); + if (isInvalidLocation(i.location)) { + mOverlay.removeItem(hash.get(i.uid)); + markerToInt.remove(hash.get(i.uid)); + hash.remove(i.uid); + } else { + curItem = hash.get(i.uid); + curItem.setGeoPoint(i.location); + mOverlay.updateItem(curItem); + } } } if (mMapView != null) { @@ -488,20 +504,4 @@ public class MapMaker extends Activity { clearOverlay(null); mOverlay.addItem(mItems); } - - @Override - protected void onPause() { - mMapView.onPause(); - } - - @Override - protected void onResume() { - mMapView.onResume(); - } - - @Override - protected void onDestroy() { - mMapView.destroy(); - } - } diff --git a/client/Piztor/src/com/macaroon/piztor/Rlocation.java b/client/Piztor/src/com/macaroon/piztor/Rlocation.java deleted file mode 100644 index c2d429c..0000000 --- a/client/Piztor/src/com/macaroon/piztor/Rlocation.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.macaroon.piztor; - -class Rlocation{ - int id; //id - double latitude; //latitude - double longitude; //longitude - - Rlocation(int i,double lat,double lot){ - id = i; - latitude = lat; - longitude = lot; - } -} \ No newline at end of file diff --git a/client/Piztor/src/com/macaroon/piztor/Settings.java b/client/Piztor/src/com/macaroon/piztor/Settings.java index ad98662..8b4a948 100644 --- a/client/Piztor/src/com/macaroon/piztor/Settings.java +++ b/client/Piztor/src/com/macaroon/piztor/Settings.java @@ -147,7 +147,7 @@ public class Settings extends PiztorAct { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (progress == 0) progress = 1; - refreshrate.setText(progress + "s each update"); + refreshrate.setText(progress + "s一次更新"); currentRate = progress; Log.d("seek", "cur " + progress); } @@ -236,6 +236,13 @@ public class Settings extends PiztorAct { super.onPause(); } + @Override + protected void onResume() { + super.onResume(); + if (app.isExiting || app.isLogout) + finish(); + } + @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. diff --git a/client/Piztor/src/com/macaroon/piztor/SubscribeSettings.java b/client/Piztor/src/com/macaroon/piztor/SubscribeSettings.java index 74d1b83..ff7c00d 100644 --- a/client/Piztor/src/com/macaroon/piztor/SubscribeSettings.java +++ b/client/Piztor/src/com/macaroon/piztor/SubscribeSettings.java @@ -3,8 +3,10 @@ package com.macaroon.piztor; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.Vector; import android.app.Activity; @@ -33,7 +35,6 @@ public class SubscribeSettings extends PiztorAct { static class ReCall extends Handler { WeakReference outerClass; - ReCall(SubscribeSettings activity) { outerClass = new WeakReference(activity); } @@ -109,6 +110,7 @@ public class SubscribeSettings extends PiztorAct { private EditText edit_company; private EditText edit_section; private Vector listGroup; + private Set recSubcribe; void upMapInfo(Vector l) { @@ -142,28 +144,48 @@ public class SubscribeSettings extends PiztorAct { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.subscribe_settings); + mShowInfo = (TextView) findViewById(R.id.textView1); + mShowInfo.setText("若要关注整个连请将班级号留空"); + listGroup = new Vector(); + recSubcribe = new HashSet(); + app = (myApp) getApplication(); app.transam.setHandler(handler); mListView = (ListView) findViewById(R.id.listView1); edit_company = (EditText) findViewById(R.id.subscribe_company); edit_section = (EditText) findViewById(R.id.subscribe_section); mList = new ArrayList>(); + final MySimpleAdapter simpleAdapter = new MySimpleAdapter(this, mList, R.layout.subscribe_item, new String[] { "subscribe_text", "btnadd" }, new int[] { R.id.textView1, R.id.button_add }); + mListView.setAdapter(simpleAdapter); // TODO get current subscribe + for (RGroup i : ((myApp) getApplication()).sublist) { + if (i.section == 255) + recSubcribe.add(i.company); + } + for (int i : recSubcribe) { + HashMap map = new HashMap(); + map.put("subscribe_text", i + "连"); + mList.add(map); + + RGroup listItem = new RGroup(i, 255); + listGroup.add(listItem); + simpleAdapter.notifyDataSetChanged(); + } + for (RGroup i : ((myApp) getApplication()).sublist) { + if (i.section == 255) continue; + //else HashMap map = new HashMap(); - int cc = i.company; - int ss = i.section; - - map.put("subscribe_text", cc + "连 " + ss + "班"); + map.put("subscribe_text", i.company + "连 " + i.section + "班"); mList.add(map); - RGroup listItem = new RGroup(cc, ss); + RGroup listItem = new RGroup(i.company, i.section); listGroup.add(listItem); simpleAdapter.notifyDataSetChanged(); } @@ -172,21 +194,75 @@ public class SubscribeSettings extends PiztorAct { @Override public void onClick(View v) { - int cc = Integer.parseInt(edit_company.getText().toString()); - int ss = Integer.parseInt(edit_section.getText().toString()); - HashMap map = new HashMap(); - map.put("subscribe_text", cc + "连 " + ss + "班"); - mList.add(map); + + int cc,ss; + //Log.d("sub", edit_company.getText().toString() + " " + edit_section.getText().toString()); + if (edit_company.getText().toString().length() == 0) { + mShowInfo.setText("连号为空,请输入正确的连队、班级号(关注整个连,则班号留空)"); + Log.d("sub", "连号为空"); + return; + } else { + cc = Integer.parseInt(edit_company.getText().toString()); + if (cc <= 0 || cc > 40) { + mShowInfo.setText("连号超限,请输入正确的连队、班级号(关注整个连,则班号留空)"); + Log.d("sub", "连号超限" + cc); + return; + } + } + + if (edit_section.getText().toString().length() == 0) { + ss = 255; + Log.d("sub", "订阅全连" + cc); + } else { + ss = Integer.parseInt(edit_section.getText().toString()); + if (ss <= 0 || ss > 20) { + mShowInfo.setText("班号超限,请输入正确的连队、班级号(关注整个连,则班号留空)"); + Log.d("sub", "班号超限" + ss); + return; + } + } + + // TODO get real company and section number + if (recSubcribe.contains(cc)) return; + if (ss == 255) { + recSubcribe.add(cc); + for (int i = 0; i < listGroup.size(); i++) { + if (listGroup.get(i).company == cc) { + listGroup.remove(i); + mList.remove(i); + i--; + simpleAdapter.notifyDataSetChanged(); + } + } + + RGroup listItem = new RGroup(cc, 255); + listGroup.add(listItem); + HashMap map = new HashMap(); + map.put("subscribe_text", cc + "连"); + mList.add(map); + simpleAdapter.notifyDataSetChanged(); + subscribe(); + mShowInfo.setText("已关注第" + cc + "连"); + return; + } RGroup listItem = new RGroup(cc, ss); - listGroup.add(listItem); - subscribe(); + for (RGroup i : listGroup) { + if (i.company == cc && i.section == ss) + return; + } + listGroup.add(listItem); + + HashMap map = new HashMap(); + map.put("subscribe_text", cc + "连 " + ss + "班"); + mList.add(map); - simpleAdapter.notifyDataSetChanged(); - mShowInfo.setText("添加了一条订阅"); + subscribe(); + + simpleAdapter.notifyDataSetChanged(); + mShowInfo.setText("已关注第" + cc + "连" + ss + "班"); } }); - mShowInfo = (TextView) findViewById(R.id.textView1); } private class MySimpleAdapter extends SimpleAdapter { @@ -223,19 +299,14 @@ public class SubscribeSettings extends PiztorAct { // TODO Auto-generated method stub super.handleMessage(msg); switch (msg.what) { - case BUTTON_ADD: - HashMap map = new HashMap(); - mList.add(map); - notifyDataSetChanged(); - break; - case BUTTON_DELETE: + if (listGroup.get(msg.arg1).section == 255) + recSubcribe.remove(listGroup.get(msg.arg1).company); mList.remove(msg.arg1); - RGroup listItem = listGroup.get(msg.arg1); listGroup.remove(msg.arg1); subscribe(); notifyDataSetChanged(); - mShowInfo.setText("删除了第" + (msg.arg1 + 1) + "条订阅"); + mShowInfo.setText("删除了第" + (msg.arg1 + 1) + "条关注"); break; } } diff --git a/client/Piztor/src/com/macaroon/piztor/UpdateInfo.java b/client/Piztor/src/com/macaroon/piztor/UpdateInfo.java index 0521432..66ead66 100644 --- a/client/Piztor/src/com/macaroon/piztor/UpdateInfo.java +++ b/client/Piztor/src/com/macaroon/piztor/UpdateInfo.java @@ -1,5 +1,144 @@ package com.macaroon.piztor; -public class UpdateInfo { +import java.lang.ref.WeakReference; +import java.util.Vector; + +import com.baidu.platform.comapi.basestruct.GeoPoint; +import com.macaroon.piztor.Settings.ReCall; + +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.view.Menu; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +public class UpdateInfo extends PiztorAct { + TextView userName, nickName; + EditText oldPass, newPass; + Button submit; + + static class ReCall extends Handler { + WeakReference outerClass; + + ReCall(UpdateInfo activity) { + outerClass = new WeakReference(activity); + } + + @Override + public void handleMessage(Message m) { + UpdateInfo out = outerClass.get(); + if (out == null) { + System.out.println("act被回收了"); + } + switch (m.what) { + case Res.Login:// 上传自己信息成功or失败 + Log.d("update location", "successfull"); + break; + case Res.UserInfo:// 得到用户信息 + ResUserInfo userInfo = (ResUserInfo) m.obj; + System.out.println("revieve ........" + userInfo.uinfo.size()); + Vector uinfo = userInfo.uinfo; + for (RUserInfo info : uinfo) { + 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); + r.setLocation(info.latitude, info.longitude); + } else { + r = new UserInfo(info.uid); + r.setInfo(info.gid.company, info.gid.section, info.sex, + info.nickname); + r.setLocation(info.latitude, info.longitude); + out.mapInfo.addUserInfo(r); + } + } + break; + case Res.Logout:// 登出 + out.appMgr.trigger(AppMgr.logout); + break; + case Res.SendMessage: + Log.d(LogInfo.resquest, "send message successfully"); + break; + case Res.SetPassword: + ResSetPassword res = (ResSetPassword) m.obj; + switch (res.type) { + case 0: + out.receiveMessage("修改成功,请重新登录"); + out.appMgr.trigger(AppMgr.logout); + break; + case 1: + out.appMgr.trigger(AppMgr.logout); + break; + case 3: + out.receiveMessage("密码错误"); + default: + break; + } + break; + case -1: + out.appMgr.trigger(AppMgr.logout); + break; + default: + break; + } + } + } + ReCall handler = new ReCall(this); + void receiveMessage(String msg) { + Log.d("recieve message", msg); + Toast toast = Toast.makeText(getApplicationContext(), msg, + Toast.LENGTH_LONG); + toast.show(); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + id = "updateInfo"; + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_updateinfo); + } + + @Override + protected void onStart() { + super.onStart(); + oldPass = (EditText) findViewById(R.id.password_old); + newPass = (EditText) findViewById(R.id.password_new); + submit = (Button) findViewById(R.id.btn_submit); + userName = (TextView) findViewById(R.id.username); + nickName = (TextView) findViewById(R.id.nickname); + userName.setText(app.username); + nickName.setText(app.mapInfo.myInfo.nickname); + submit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View arg0) { + String oldpass = oldPass.getText().toString(); + String newpass = newPass.getText().toString(); + ReqSetPassword req = new ReqSetPassword(app.token, + app.username, oldpass, newpass, System + .currentTimeMillis(), 3000); + transam.send(req); + } + }); + } + + @Override + protected void onResume() { + super.onResume(); + transam.setHandler(handler); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.update_info, menu); + return true; + } } diff --git a/client/Piztor/src/com/macaroon/piztor/myApp.java b/client/Piztor/src/com/macaroon/piztor/myApp.java index e60e9b4..ef99a3b 100644 --- a/client/Piztor/src/com/macaroon/piztor/myApp.java +++ b/client/Piztor/src/com/macaroon/piztor/myApp.java @@ -10,9 +10,10 @@ import android.util.Log; @SuppressLint("UseSparseArrays") public class myApp extends Application { - private static final String strKey = "8a0ae50048d103b2b8b12b7066f4ea7d"; + private static final String strKey = "E612ee541946c90d7b9add0347c9e601"; BMapManager mBMapManager; - + boolean isExiting = false; + boolean isLogout = false; String ip = "202.120.7.4"; // static String ip = "69.85.86.42"; // static String ip = "192.168.1.101"; @@ -23,7 +24,6 @@ public class myApp extends Application { AppMgr appMgr; - // TODO fix Handler handler; Transam transam; Thread tTransam; -- cgit v1.2.3