package io.evercam.androidapp;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import io.evercam.androidapp.dto.EvercamCamera;
import io.evercam.androidapp.utils.Constants;
import io.evercam.androidapp.video.VideoActivity;
public class ViewCameraActivity extends ParentActivity
{
private final String TAG = "evercamplay-ViewCameraActivity";
private LinearLayout canEditDetailLayout;
private TextView cameraIdTextView;
private TextView cameraNameTextView;
private TextView cameraOwnerTextView;
private TextView cameraTimezoneTextView;
private TextView cameraVendorTextView;
private TextView cameraModelTextView;
private TextView cameraUsernameTextView;
private TextView cameraPasswordTextView;
private TextView cameraSnapshotUrlTextView;
private TextView cameraInternalHostTextView;
private TextView cameraInternalHttpTextView;
private TextView cameraInternalRtspTextView;
private TextView cameraExternalHostTextView;
private TextView cameraExternalHttpTextView;
private TextView cameraExternalRtspTextView;
private Button editLinkButton;
private EvercamCamera evercamCamera;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
evercamCamera = VideoActivity.evercamCamera;
setContentView(R.layout.activity_view_camera);
if(this.getActionBar() != null)
{
this.getActionBar().setDisplayHomeAsUpEnabled(true);
}
// Initial UI elements
initialScreen();
fillCameraDetails(evercamCamera);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu_view_details, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
MenuItem editItem = menu.findItem(R.id.menu_action_edit);
if(evercamCamera != null)
{
if(evercamCamera.canEdit())
{
editItem.setVisible(true);
}
else
{
editItem.setVisible(false);
}
}
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item)
{
switch(item.getItemId())
{
case android.R.id.home:
this.finish();
return true;
case R.id.menu_action_edit:
linkToEditCamera();
}
return true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == Constants.REQUEST_CODE_PATCH_CAMERA)
{
//If camera details have been edited, return to live view
if(resultCode == Constants.RESULT_TRUE)
{
setResult(Constants.RESULT_TRUE);
finish();
}
}
}
private void initialScreen()
{
canEditDetailLayout = (LinearLayout) findViewById(R.id.can_edit_detail_layout);
editLinkButton = (Button) findViewById(R.id.button_edit_camera_link);
cameraIdTextView = (TextView) findViewById(R.id.view_id_value);
cameraNameTextView = (TextView) findViewById(R.id.view_name_value);
cameraOwnerTextView = (TextView) findViewById(R.id.view_owner_value);
cameraTimezoneTextView = (TextView) findViewById(R.id.view_timezone_value);
cameraVendorTextView = (TextView) findViewById(R.id.view_vendor_value);
cameraModelTextView = (TextView) findViewById(R.id.view_model_value);
//'Can edit' fields
cameraUsernameTextView = (TextView) findViewById(R.id.view_username_value);
cameraPasswordTextView = (TextView) findViewById(R.id.view_password_value);
cameraSnapshotUrlTextView = (TextView) findViewById(R.id.view_jpg_url_value);
cameraInternalHostTextView = (TextView) findViewById(R.id.view_internal_host_value);
cameraInternalHttpTextView = (TextView) findViewById(R.id.view_internal_http_value);
cameraInternalRtspTextView = (TextView) findViewById(R.id.view_internal_rtsp_value);
cameraExternalHostTextView = (TextView) findViewById(R.id.view_external_host_value);
cameraExternalHttpTextView = (TextView) findViewById(R.id.view_external_http_value);
cameraExternalRtspTextView = (TextView) findViewById(R.id.view_external_rtsp_value);
editLinkButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
linkToEditCamera();
}
});
}
private void fillCameraDetails(EvercamCamera camera)
{
if(camera != null)
{
cameraIdTextView.setText(camera.getCameraId());
cameraNameTextView.setText(camera.getName());
cameraOwnerTextView.setText(camera.getRealOwner());
cameraTimezoneTextView.setText(camera.getTimezone());
if(camera.getVendor().isEmpty())
{
setAsNotSpecified(cameraVendorTextView);
}
else
{
cameraVendorTextView.setText(camera.getVendor());
}
if(camera.getModel().isEmpty())
{
setAsNotSpecified(cameraModelTextView);
}
else
{
cameraModelTextView.setText(camera.getModel());
}
//Show more details if user has the rights
fillCanEditDetails(camera);
}
}
private void fillCanEditDetails(EvercamCamera camera)
{
if(camera.canEdit())
{
editLinkButton.setVisibility(View.VISIBLE);
canEditDetailLayout.setVisibility(View.VISIBLE);
if(camera.getUsername().isEmpty())
{
setAsNotSpecified(cameraUsernameTextView);
}
else
{
cameraUsernameTextView.setText(camera.getUsername());
}
if(camera.getPassword().isEmpty())
{
setAsNotSpecified(cameraPasswordTextView);
}
else
{
cameraPasswordTextView.setText(camera.getPassword());
}
if(camera.getJpgPath().isEmpty())
{
setAsNotSpecified(cameraSnapshotUrlTextView);
}
else
{
cameraSnapshotUrlTextView.setText(camera.getJpgPath());
}
if(camera.getExternalHost().isEmpty())
{
setAsNotSpecified(cameraExternalHostTextView);
}
else
{
cameraExternalHostTextView.setText(camera.getExternalHost());
}
if(camera.getInternalHost().isEmpty())
{
setAsNotSpecified(cameraInternalHostTextView);
}
else
{
cameraInternalHostTextView.setText(camera.getInternalHost());
}
int externalHttp = camera.getExternalHttp();
int externalRtsp = camera.getExternalRtsp();
int internalHttp = camera.getInternalHttp();
int internalRtsp = camera.getInternalRtsp();
if(externalHttp != 0)
{
cameraExternalHttpTextView.setText(String.valueOf(externalHttp));
}
else
{
setAsNotSpecified(cameraExternalHttpTextView);
}
if(externalRtsp != 0)
{
cameraExternalRtspTextView.setText(String.valueOf(externalRtsp));
}
else
{
setAsNotSpecified(cameraExternalRtspTextView);
}
if(internalHttp != 0)
{
cameraInternalHttpTextView.setText(String.valueOf(camera.getInternalHttp()));
}
else
{
setAsNotSpecified(cameraInternalHttpTextView);
}
if(internalRtsp != 0)
{
cameraInternalRtspTextView.setText(String.valueOf(camera.getInternalRtsp()));
}
else
{
setAsNotSpecified(cameraInternalRtspTextView);
}
}
}
private void setAsNotSpecified(TextView textView)
{
textView.setText(R.string.not_specified);
textView.setTextColor(Color.GRAY);
}
private void linkToEditCamera()
{
Intent intent = new Intent(ViewCameraActivity.this, AddEditCameraActivity.class);
intent.putExtra(Constants.KEY_IS_EDIT, true);
startActivityForResult(intent, Constants.REQUEST_CODE_PATCH_CAMERA);
}
}