boolean resizeCameras() { try { int screen_width = readScreenWidth(this); camerasPerRow = recalculateCameraPerRow(); io.evercam.androidapp.custom.FlowLayout camsLineView = (io.evercam.androidapp.custom.FlowLayout) this.findViewById(R.id.cameras_flow_layout); for (int i = 0; i < camsLineView.getChildCount(); i++) { LinearLayout pview = (LinearLayout) camsLineView.getChildAt(i); CameraLayout cameraLayout = (CameraLayout) pview.getChildAt(0); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT); params.width = ((i + 1 % camerasPerRow == 0) ? (screen_width - (i % camerasPerRow) * (screen_width / camerasPerRow)) : screen_width / camerasPerRow); params.width = params.width - 1; // 1 pixels spacing between cameras params.height = (int) (params.width / (1.25)); params.setMargins(1, 1, 0, 0); // 1 pixels spacing between cameras cameraLayout.setLayoutParams(params); } return true; } catch (Exception e) { Log.e(TAG, e.toString() + "::" + Log.getStackTraceString(e)); sendToMint(e); EvercamPlayApplication.sendCaughtException(this, e); CustomedDialog.showUnexpectedErrorDialog(CamerasActivity.this); } return false; }
@Override protected void onPostExecute(Boolean hasNetwork) { if (hasNetwork) { if (type == InternetCheckType.START) { updateNavDrawerUserInfo(); startLoadingCameras(); } else if (type == InternetCheckType.RESTART) { if (reloadCameraList) { removeAllCameraViews(); startLoadingCameras(); reloadCameraList = false; } else { // Re-calculate camera per row because screen size // could change because of screen rotation. int camsOldValue = camerasPerRow; camerasPerRow = recalculateCameraPerRow(); if (camsOldValue != camerasPerRow) { removeAllCameraViews(); addAllCameraViews(true, true); } // Refresh camera names in case it's changed from camera // live view updateCameraNames(); } } } else { CustomedDialog.showInternetNotConnectDialog(CamerasActivity.this); } }
private void startCameraLoadingTask() { if (Commons.isOnline(this)) { LoadCameraListTask loadTask = new LoadCameraListTask(AppData.defaultUser, CamerasActivity.this); loadTask.reload = true; // be default do not refresh until there // is // any change in cameras in database loadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } else { CustomedDialog.showInternetNotConnectDialog(CamerasActivity.this); } }
private void showSignOutDialog() { CustomedDialog.getConfirmLogoutDialog( this, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { EvercamPlayApplication.sendEventAnalytics( CamerasActivity.this, R.string.category_menu, R.string.action_logout, R.string.label_user_logout); logOutDefaultUser(CamerasActivity.this); } }) .show(); }
@Override protected void onPostExecute(Boolean hasNetwork) { if (hasNetwork) { if (isUserLogged(MainActivity.this)) { AppUser defaultUser = AppData.defaultUser; new CheckKeyExpirationTaskMain( defaultUser.getUsername(), defaultUser.getApiKey(), defaultUser.getApiId()) .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } else { finish(); Intent slideIntent = new Intent(MainActivity.this, SlideActivity.class); startActivity(slideIntent); } } else { CustomedDialog.showInternetNotConnectDialog(MainActivity.this); } }
// Remove all the cameras so that all activities being performed can be // stopped public boolean removeAllCameraViews() { try { stopAllCameraViews(); io.evercam.androidapp.custom.FlowLayout camsLineView = (io.evercam.androidapp.custom.FlowLayout) this.findViewById(R.id.cameras_flow_layout); camsLineView.removeAllViews(); return true; } catch (Exception e) { Log.e(TAG, e.toString() + "::" + Log.getStackTraceString(e)); sendToMint(e); EvercamPlayApplication.sendCaughtException(this, e); CustomedDialog.showUnexpectedErrorDialog(CamerasActivity.this); } return false; }
/** * Add all camera views to the main grid page * * @param reloadImages reload camera images or not * @param showThumbnails show thumbnails that returned by Evercam or not, if true and if thumbnail * not available, it will request latest snapshot instead. If false, it will request neither * thumbnail nor latest snapshot. */ public boolean addAllCameraViews(final boolean reloadImages, final boolean showThumbnails) { try { // Recalculate camera per row camerasPerRow = recalculateCameraPerRow(); io.evercam.androidapp.custom.FlowLayout camsLineView = (io.evercam.androidapp.custom.FlowLayout) this.findViewById(R.id.cameras_flow_layout); int screen_width = readScreenWidth(this); int index = 0; for (final EvercamCamera evercamCamera : AppData.evercamCameraList) { // Don't show offline camera if (!PrefsManager.showOfflineCameras(this) && !evercamCamera.isActive()) { continue; } final LinearLayout cameraListLayout = new LinearLayout(this); int indexPlus = index + 1; if (reloadImages) evercamCamera.loadingStatus = ImageLoadingStatus.not_started; final CameraLayout cameraLayout = new CameraLayout(this, evercamCamera, showThumbnails); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT); params.width = ((indexPlus % camerasPerRow == 0) ? (screen_width - (index % camerasPerRow) * (screen_width / camerasPerRow)) : screen_width / camerasPerRow); params.width = params.width - 1; // 1 pixels spacing between cameras params.height = (int) (params.width / (1.25)); params.setMargins(0, 0, 0, 0); // No spacing between cameras cameraLayout.setLayoutParams(params); cameraListLayout.addView(cameraLayout); camsLineView.addView( cameraListLayout, new io.evercam.androidapp.custom.FlowLayout.LayoutParams(0, 0)); index++; new Handler() .postDelayed( new Runnable() { @Override public void run() { Rect cameraBounds = new Rect(); cameraListLayout.getHitRect(cameraBounds); Rect offlineIconBounds = cameraLayout.getOfflineIconBounds(); int layoutWidth = cameraBounds.right - cameraBounds.left; int offlineStartsAt = offlineIconBounds.left; int offlineIconWidth = offlineIconBounds.right - offlineIconBounds.left; if (layoutWidth > offlineStartsAt + offlineIconWidth * 2) { cameraLayout.showOfflineIconAsFloat = false; } else { cameraLayout.showOfflineIconAsFloat = true; } } }, 200); } if (refresh != null) refresh.setActionView(null); return true; } catch (Exception e) { Log.e(TAG, e.toString(), e); sendToMint(e); EvercamPlayApplication.sendCaughtException(this, e); CustomedDialog.showUnexpectedErrorDialog(CamerasActivity.this); } return false; }