private void deleteLocation(LocationInfo info) { if (NavigineApp.Navigation == null) return; if (info != null) { try { (new File(info.archiveFile)).delete(); info.localVersion = -1; info.localModified = false; String locationDir = LocationLoader.getLocationDir(mContext, info.title); File dir = new File(locationDir); File[] files = dir.listFiles(); for (int i = 0; i < files.length; ++i) files[i].delete(); dir.delete(); String mapFile = NavigineApp.Settings.getString("map_file", ""); if (mapFile.equals(info.archiveFile)) { NavigineApp.Navigation.loadArchive(null); SharedPreferences.Editor editor = NavigineApp.Settings.edit(); editor.putString("map_file", ""); editor.commit(); } mAdapter.updateList(); } catch (Throwable e) { Log.e(TAG, Log.getStackTraceString(e)); } } }
private void parseMapsXml() { try { String fileName = LocationLoader.getLocationDir(NavigineApp.AppContext, null) + "/maps.xml"; List<LocationInfo> infoList = Parser.parseMapsXml(NavigineApp.AppContext, fileName); mInfoList = new ArrayList<LocationInfo>(); if (infoList != null) mInfoList = infoList; mAdapter.updateList(); new File(fileName).delete(); } catch (Throwable e) { Log.e(TAG, Log.getStackTraceString(e)); } }
/** Called when the activity is first created */ @Override public void onCreate(Bundle savedInstanceState) { Log.d(TAG, "LoaderActivity created"); super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.content); // Instantiate custom adapter mAdapter = new LoaderAdapter(); // Handle listview and assign adapter mListView = (ListView) findViewById(R.id.content_list_view); mListView.setAdapter(mAdapter); mListView.setVisibility(View.GONE); mListView.setOnItemLongClickListener( new AdapterView.OnItemLongClickListener() { public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { selectItem(position); return true; } }); mStatusLabel = (TextView) findViewById(R.id.content_status_label); mStatusLabel.setVisibility(View.VISIBLE); String userHash = NavigineApp.Settings.getString("user_hash", ""); if (userHash.length() == 0) showUserHashDialog(); else refreshMapList(); }
@Override public boolean onCreateOptionsMenu(Menu menu) { Log.d(TAG, "Create menu options"); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.loader_menu, menu); menu.findItem(R.id.loader_menu_refresh_map_list).setVisible(mLoader < 0); return true; }
@Override public void onPause() { Log.d(TAG, "LoaderActivity paused"); super.onPause(); mTimerTask.cancel(); mTimerTask = null; }
private void updateLoader() { if (NavigineApp.Navigation == null) return; // Log.d(TAG, String.format(Locale.ENGLISH, "Update loader: %d", mLoader)); long timeNow = DateTimeUtils.currentTimeMillis(); if (mLoader < 0) return; int status = LocationLoader.checkLocationLoader(mLoader); if (status < 100) { if ((Math.abs(timeNow - mLoaderTime) > LOADER_TIMEOUT / 3 && status == 0) || (Math.abs(timeNow - mLoaderTime) > LOADER_TIMEOUT)) { mListView.setVisibility(View.GONE); mStatusLabel.setVisibility(View.VISIBLE); mStatusLabel.setText("Loading timeout!\nPlease, check your internet connection!"); Log.d(TAG, String.format(Locale.ENGLISH, "Load stopped on timeout!")); LocationLoader.stopLocationLoader(mLoader); mLoader = -1; } else { mListView.setVisibility(View.GONE); mStatusLabel.setVisibility(View.VISIBLE); mStatusLabel.setText(String.format(Locale.ENGLISH, "Loading content (%d%%)", status)); } } else { Log.d(TAG, String.format(Locale.ENGLISH, "Load finished with result: %d", status)); LocationLoader.stopLocationLoader(mLoader); mLoader = -1; if (status == 100) { parseMapsXml(); if (mInfoList.isEmpty()) { mListView.setVisibility(View.GONE); mStatusLabel.setVisibility(View.VISIBLE); mStatusLabel.setText("No locations available"); } else { mListView.setVisibility(View.VISIBLE); mStatusLabel.setVisibility(View.GONE); } } else { mListView.setVisibility(View.GONE); mStatusLabel.setVisibility(View.VISIBLE); mStatusLabel.setText("Error loading!\nPlease, check your ID!"); } } }
private void refreshMapList() { if (mLoader >= 0) return; String userHash = NavigineApp.Settings.getString("user_hash", ""); if (userHash.length() == 0) return; // Starting new loader String fileName = LocationLoader.getLocationDir(NavigineApp.AppContext, null) + "/maps.xml"; new File(fileName).delete(); mLoader = LocationLoader.startLocationLoader(null, fileName, true); mLoaderTime = DateTimeUtils.currentTimeMillis(); mInfoList = new ArrayList<LocationInfo>(); Log.d(TAG, String.format(Locale.ENGLISH, "Location loader started: %d", mLoader)); }
@Override public void onResume() { Log.d(TAG, "LoaderActivity resumed"); super.onResume(); // Starting interface updates mTimerTask = new TimerTask() { @Override public void run() { mHandler.post(mRunnable); } }; mTimer.schedule(mTimerTask, 100, 100); }
private void updateLocationLoaders() { if (NavigineApp.Navigation == null) return; long timeNow = DateTimeUtils.currentTimeMillis(); mUpdateLocationLoadersTime = timeNow; synchronized (mLoaderMap) { Iterator<Map.Entry<String, LoaderState>> iter = mLoaderMap.entrySet().iterator(); while (iter.hasNext()) { Map.Entry<String, LoaderState> entry = iter.next(); LoaderState loader = entry.getValue(); if (loader.state < 100) { loader.timeLabel = timeNow; if (loader.type == DOWNLOAD) loader.state = LocationLoader.checkLocationLoader(loader.id); if (loader.type == UPLOAD) loader.state = LocationLoader.checkLocationUploader(loader.id); } else if (loader.state == 100) { String archivePath = NavigineApp.Navigation.getArchivePath(); String locationFile = LocationLoader.getLocationFile(NavigineApp.AppContext, loader.location); if (archivePath != null && archivePath.equals(locationFile)) { Log.d(TAG, "Reloading archive " + archivePath); if (NavigineApp.Navigation.loadArchive(archivePath)) { SharedPreferences.Editor editor = NavigineApp.Settings.edit(); editor.putString("map_file", archivePath); editor.commit(); } } if (loader.type == DOWNLOAD) LocationLoader.stopLocationLoader(loader.id); if (loader.type == UPLOAD) LocationLoader.stopLocationUploader(loader.id); iter.remove(); } else { // Load failed if (Math.abs(timeNow - loader.timeLabel) > 5000) { if (loader.type == DOWNLOAD) LocationLoader.stopLocationLoader(loader.id); if (loader.type == UPLOAD) LocationLoader.stopLocationUploader(loader.id); iter.remove(); } } } } updateLocalVersions(); mAdapter.updateList(); }
private void startUpload(int index) { if (NavigineApp.Navigation == null) return; String userHash = NavigineApp.Settings.getString("user_hash", ""); if (userHash.length() == 0) return; LocationInfo info = mInfoList.get(index); String location = new String(info.title); Log.d(TAG, String.format(Locale.ENGLISH, "Start upload: %s", location)); synchronized (mLoaderMap) { if (!mLoaderMap.containsKey(location)) { LoaderState loader = new LoaderState(); loader.location = location; loader.type = UPLOAD; loader.id = LocationLoader.startLocationUploader(location, info.archiveFile, true); mLoaderMap.put(location, loader); } } mAdapter.updateList(); }
public void tryLogin() { mName = mEtAccount.getText().toString(); mPassword = mEtPassword.getText().toString(); if (mName.equals("") || mPassword.length() < 5) { // Please Specify Your Name and Sex" Toast.makeText( MainActivity.this, "Please Specify Your Name and Password correctly", Toast.LENGTH_LONG) .show(); } else { mUserInfo = new UserInfo(mName, 0, 0, 0, 0, 0, 0); /* if mNetcon is connected already, close it first */ /* here we use try because mNetCon might not have been instantiated yet */ /* try { NetConnect.getnetConnect().closeNetConnect(); } catch (Exception e) {} try { InitData.closeInitData(); FriendListInfo.closeFriendListInfo(); ChatServiceData.closeChatServiceData(); } catch (Exception e) {} */ CloseAll.closeAll(); /* to establish a new connect */ NetworkService.getInstance().onInit(this); NetworkService.getInstance().setupConnection(); if (NetworkService.getInstance().getIsConnected()) { String usrInfo = mUserInfo.toString() + GlobalStrings.signinDivider + mPassword + GlobalStrings.signinDivider; NetworkService.getInstance().sendUpload(GlobalMsgTypes.msgHandShake, usrInfo); } else { NetworkService.getInstance().closeConnection(); Toast.makeText(this, "failed to connect to Server", Toast.LENGTH_LONG).show(); return; } InitData initData = InitData.getInitData(); initData.start(); try { initData.join(); } catch (Exception e) { } mUserInfo = initData.getUserInfo(); Log.d( "connectedApp isonline : ", "" + mUserInfo.getIsOnline() + "+++++++++++++" + "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); if (mUserInfo.getId() < 0) { Toast.makeText(this, "invalid username or password", Toast.LENGTH_SHORT).show(); return; } Log.d( "connectedApp isonline : ", "" + mUserInfo.getIsOnline() + "+++++++++++++" + "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); ConnectedApp connected_app0 = ConnectedApp.getInstance(); // connected_app0.setConnect(mNetCon); connected_app0.setUserInfo(mUserInfo); connected_app0.clearListActivity(); connected_app0.instantiateListActivity(); Intent intent0 = new Intent(MainActivity.this, MainBodyActivity.class); // intent0.putExtra("username", mUserInfo.getName()); // intent0.putExtra("usersex", mUserInfo.getSex()); startActivity(intent0); finish(); } }
@Override public boolean onPrepareOptionsMenu(Menu menu) { Log.d(TAG, "Prepare menu options"); menu.findItem(R.id.loader_menu_refresh_map_list).setVisible(mLoader < 0); return true; }
@Override public void onDestroy() { Log.d(TAG, "LoaderActivity destroyed"); super.onDestroy(); }