package com.safemobile.dispatch; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.TextView; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.BitmapDescriptor; import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; import com.google.android.gms.maps.model.Polyline; import com.google.android.gms.maps.model.PolylineOptions; import com.safemobile.lib.AppParams; import com.safemobile.lib.HistPos; import com.safemobile.lib.OperationCodes; import com.safemobile.lib.SM; import com.safemobile.lib.Vehicle; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.Locale; public class HistoryActivity extends AppCompatActivity implements OnMapReadyCallback { public Bundle savedInstanceState; private TabLayoutActivity parentTab; private GoogleMap googleMap; private Spinner spinnerVehicle; private ImageView changeMapType, checkTraffic, slideLayoutImage; private LinearLayout layoutTraffic, slidelayout, layoutVehicles; private Date startDate, endDate; private ArrayList allVehicle = new ArrayList<>(); private ArrayList allVehicleNames = new ArrayList<>(); private ArrayAdapter adapter; private boolean showVehicle = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.savedInstanceState = savedInstanceState; setContentView(R.layout.tabhistory); parentTab = (TabLayoutActivity) getParent(); parentTab.historyActivity = this; Locale locale = new Locale(AppParams.LANGUAGETMP); Locale.setDefault(locale); SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); spinnerVehicle = findViewById(R.id.spinnerVehicle); getVehicles(); adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, allVehicleNames); adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); spinnerVehicle.setAdapter(adapter); spinnerVehicle.setSelection(0); changeMapType(); changeTraffic(); slidelayout = findViewById(R.id.slidelayout); slideLayoutImage = findViewById(R.id.slideLayoutImage); layoutVehicles = findViewById(R.id.layoutBig); // slidelayout.setOnTouchListener((v, event) -> { // if (showVehicle) { // layoutVehicles.setVisibility(View.GONE); // slideLayoutImage.setImageResource(R.drawable.arrow_right); // showVehicle = false; // } else { // layoutVehicles.setVisibility(View.VISIBLE); // slideLayoutImage.setImageResource(R.drawable.arrow_left); // showVehicle = true; // } // return false; // }); setDate(); parentTab.executeNetworkStuff(new String[] {OperationCodes.GetHistoryPositions + "", allVehicle.get(spinnerVehicle.getSelectedItemPosition()).sc_id + "", (startDate.getTime()/ 1000L) + "", (endDate.getTime()/ 1000L) + ""}); } private void displayHistory(ArrayList demoPositions) { LatLng latLng = new LatLng(demoPositions.get(0).lat, demoPositions.get(0).lng); PolylineOptions polylineOptions = new PolylineOptions(); BitmapDescriptor markerIcon = BitmapDescriptorFactory.fromResource(R.drawable.bus); for (HistPos pos : demoPositions) { latLng = new LatLng(pos.lat, pos.lng); polylineOptions.add(latLng); googleMap.addMarker(new MarkerOptions() .position(latLng) .icon(markerIcon)); } Polyline polyline1 = googleMap.addPolyline(polylineOptions); googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14)); } private void setDate() { Calendar calendar = Calendar.getInstance(); endDate = calendar.getTime(); calendar.add(Calendar.DATE, -1); startDate = calendar.getTime(); LinearLayout layoutStartPicker = findViewById(R.id.layoutStartPicker); TextView textViewDate = findViewById(R.id.textViewStartDate); textViewDate.setText(new SimpleDateFormat("HH:mm, dd.MM.yyyy").format(startDate)); // layoutStartPicker.setOnTouchListener((v, event) -> { // showDialog(layoutStartPicker); // return false; // }); // layoutEndPicker.setOnTouchListener(new OnTouchListener() { // @Override // public boolean onTouch(View v, MotionEvent event) { // showDialog(layoutEndPicker); // return false; // } // }); } private void changeTraffic() { ImageView changeTrafficImageView = findViewById(R.id.changeTraffic); changeTrafficImageView.setOnClickListener(v -> { if (googleMap.isTrafficEnabled()) { changeTrafficImageView.setImageResource(R.drawable.traffic_off); googleMap.setTrafficEnabled(false); } else { changeTrafficImageView.setImageResource(R.drawable.traffic); googleMap.setTrafficEnabled(true); } }); } private void changeMapType() { changeMapType = findViewById(R.id.changeMapType); ImageView changeMapTypeImageView = findViewById(R.id.changeMapType); changeMapType.setOnClickListener(view -> { if (googleMap.getMapType() == GoogleMap.MAP_TYPE_SATELLITE) { changeMapTypeImageView.setImageResource(R.drawable.satellite); googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); } else { changeMapTypeImageView.setImageResource(R.drawable.map); googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); } }); } public void getVehicles() { try { for (Vehicle vehicle : parentTab.getAllVehicle()) { allVehicleNames.add(vehicle.name); allVehicle.add(vehicle); } } catch (Exception ex) { } } public void UpdateMap() { SM.Debug("Do the updateMAP post"); } public void UpdateUnableDisp() { SM.Debug("Do Cancelwindow"); } public void UpdateCancel() { SM.Debug("Do Cancelwindow"); } public void UpdateNrPos(int size) { SM.Debug("Do Cancelwindow"); } @Override public void onMapReady(@NonNull GoogleMap googleMap) { this.googleMap = googleMap; // replace this with parentTab.HistPosList parentTab.demoPositionsList(); displayHistory(parentTab.demoPositions); } }