Updated SharedPrefs, added class to call (easier operations).
Built MapsActivityRepository MapMarker builder (not finished) Linked 'Map' BTN from PropertiesDetailActivity to Intent MapActivity
This commit is contained in:
parent
ab89d29061
commit
0da3570ada
@ -0,0 +1,27 @@
|
|||||||
|
package fr.romanet.vj.apps.myrealestateagency;
|
||||||
|
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
|
||||||
|
|
||||||
|
import static android.content.Context.MODE_PRIVATE;
|
||||||
|
|
||||||
|
public class SharedPrefs {
|
||||||
|
|
||||||
|
private SharedPreferences sharedPreferences;
|
||||||
|
|
||||||
|
public int get_logged_agent_id(){
|
||||||
|
sharedPreferences = MyApp.getContext().getSharedPreferences(Config.getSharedPreferences(), MODE_PRIVATE);
|
||||||
|
return sharedPreferences.getInt(Config.get_selected_agency_index(), -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void set_logged_agent_id(Agent agent){
|
||||||
|
sharedPreferences = MyApp.getContext().getSharedPreferences(Config.getSharedPreferences(), MODE_PRIVATE);
|
||||||
|
sharedPreferences.edit()
|
||||||
|
.putInt(Config.get_selected_agency_index(), agent.agentId)
|
||||||
|
.apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -15,6 +15,7 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
|
|||||||
|
|
||||||
import fr.romanet.vj.apps.myrealestateagency.Config;
|
import fr.romanet.vj.apps.myrealestateagency.Config;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.MyApp;
|
import fr.romanet.vj.apps.myrealestateagency.MyApp;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.SharedPrefs;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.adapter.AgentsAdapter.AgentViewHolder;
|
import fr.romanet.vj.apps.myrealestateagency.adapter.AgentsAdapter.AgentViewHolder;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
|
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.R;
|
import fr.romanet.vj.apps.myrealestateagency.R;
|
||||||
@ -33,7 +34,7 @@ public final class AgentsAdapter extends Adapter<AgentViewHolder>{
|
|||||||
|
|
||||||
private final TextView agencyName;
|
private final TextView agencyName;
|
||||||
|
|
||||||
SharedPreferences sharedPreferences;
|
SharedPrefs sharedPrefs;
|
||||||
|
|
||||||
|
|
||||||
public AgentViewHolder(@NonNull View itemView)
|
public AgentViewHolder(@NonNull View itemView)
|
||||||
@ -59,11 +60,9 @@ public final class AgentsAdapter extends Adapter<AgentViewHolder>{
|
|||||||
intent.putExtra(PropertiesActivity.AGENCY_EXTRA, agent.getAgency());
|
intent.putExtra(PropertiesActivity.AGENCY_EXTRA, agent.getAgency());
|
||||||
itemView.getContext().startActivity(intent);
|
itemView.getContext().startActivity(intent);
|
||||||
|
|
||||||
sharedPreferences = MyApp.getContext().getSharedPreferences(Config.getSharedPreferences(), MODE_PRIVATE);
|
// - Store agent into shared prefs for next time (app reopen)
|
||||||
sharedPreferences.edit()
|
sharedPrefs = new SharedPrefs();
|
||||||
.putInt(Config.get_selected_agency_index(), agent.agentId)
|
sharedPrefs.set_logged_agent_id(agent);
|
||||||
.apply();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -9,11 +9,16 @@ import androidx.room.Update;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
|
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.entities.Property;
|
import fr.romanet.vj.apps.myrealestateagency.entities.Property;
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
public interface PropertyDao {
|
public interface PropertyDao {
|
||||||
|
|
||||||
|
@Query("SELECT * FROM property WHERE belongs_agency_id = :agencyId")
|
||||||
|
List<Property> getPropertyFromAgencyList(int agencyId);
|
||||||
|
|
||||||
@Query("SELECT * FROM property")
|
@Query("SELECT * FROM property")
|
||||||
LiveData<List<Property>> getPropertyList();
|
LiveData<List<Property>> getPropertyList();
|
||||||
|
|
||||||
|
|||||||
@ -1,18 +1,67 @@
|
|||||||
package fr.romanet.vj.apps.myrealestateagency.repository;
|
package fr.romanet.vj.apps.myrealestateagency.repository;
|
||||||
|
|
||||||
|
import android.app.Application;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.location.Address;
|
import android.location.Address;
|
||||||
import android.location.Geocoder;
|
import android.location.Geocoder;
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData;
|
||||||
|
|
||||||
|
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
|
||||||
|
import com.google.android.gms.maps.model.LatLng;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.MapMarker;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.MyApp;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.SharedPrefs;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.entities.Property;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.view.MapsActivity;
|
||||||
|
|
||||||
public class MapsActivityRepository {
|
public class MapsActivityRepository {
|
||||||
|
|
||||||
|
public SharedPrefs sharedPrefs;
|
||||||
|
public AgentRepository agentRepository;
|
||||||
|
public PropertyRepository propertyRepository;
|
||||||
|
|
||||||
public static Address get_lat_long_from_address(String address, Context context) throws IOException {
|
public static Address get_lat_long_from_address(String address, Context context) throws IOException {
|
||||||
Geocoder gc = new Geocoder(context);
|
Geocoder gc = new Geocoder(context);
|
||||||
return gc.getFromLocationName(address, 1).get(0);
|
return gc.getFromLocationName(address, 1).get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<MapMarker> get_all_map_markers_for_this_agency(Application application) throws IOException {
|
||||||
|
sharedPrefs = new SharedPrefs();
|
||||||
|
propertyRepository = new PropertyRepository(application);
|
||||||
|
|
||||||
|
int logged_agent_id;
|
||||||
|
Agency agency;
|
||||||
|
List<Property> propertiesFromAgency;
|
||||||
|
List<MapMarker> mapMarkers = new ArrayList<>();
|
||||||
|
|
||||||
|
logged_agent_id = sharedPrefs.get_logged_agent_id();
|
||||||
|
|
||||||
|
Agent agent = agentRepository.getAgentById(logged_agent_id);
|
||||||
|
agent.setAgency(agentRepository.getAgency(agent));
|
||||||
|
|
||||||
|
agency = agent.getAgency();
|
||||||
|
|
||||||
|
propertiesFromAgency = propertyRepository.getPropertyFromAgencyList(agency);
|
||||||
|
|
||||||
|
for (Property property: propertiesFromAgency){
|
||||||
|
if(property.propertyStatue.statueSale){
|
||||||
|
mapMarkers.add(new MapMarker(get_lat_long_from_address(property.address, MyApp.getContext()), property.description, BitmapDescriptorFactory.HUE_RED));
|
||||||
|
}else{
|
||||||
|
mapMarkers.add(new MapMarker(get_lat_long_from_address(property.address, MyApp.getContext()), property.description, BitmapDescriptorFactory.HUE_BLUE));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return mapMarkers;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -8,6 +8,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import fr.romanet.vj.apps.myrealestateagency.dao.PropertyDao;
|
import fr.romanet.vj.apps.myrealestateagency.dao.PropertyDao;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.database.RealEstateAgencyDatabase;
|
import fr.romanet.vj.apps.myrealestateagency.database.RealEstateAgencyDatabase;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.entities.Property;
|
import fr.romanet.vj.apps.myrealestateagency.entities.Property;
|
||||||
|
|
||||||
public class PropertyRepository {
|
public class PropertyRepository {
|
||||||
@ -21,6 +22,8 @@ public class PropertyRepository {
|
|||||||
allProperties = propertyDao.getPropertyList();
|
allProperties = propertyDao.getPropertyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Property> getPropertyFromAgencyList(Agency agency){return propertyDao.getPropertyFromAgencyList(agency.agencyId); }
|
||||||
|
|
||||||
public LiveData<List<Property>> getAllProperties() {
|
public LiveData<List<Property>> getAllProperties() {
|
||||||
return allProperties;
|
return allProperties;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -103,9 +103,6 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
|
|||||||
|
|
||||||
mMap.animateCamera(cu);
|
mMap.animateCamera(cu);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(latlngbnd, 30));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -124,4 +124,9 @@ public class PropertiesDetailActivity extends AppCompatActivity {
|
|||||||
description.setText("Description : " + property.description);
|
description.setText("Description : " + property.description);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void goto_map(View view) {
|
||||||
|
Intent i = new Intent(PropertiesDetailActivity.this, MapsActivity.class);
|
||||||
|
PropertiesDetailActivity.this.startActivity(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import fr.romanet.vj.apps.myrealestateagency.Config;
|
import fr.romanet.vj.apps.myrealestateagency.Config;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.MyApp;
|
import fr.romanet.vj.apps.myrealestateagency.MyApp;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.SharedPrefs;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
|
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
|
import fr.romanet.vj.apps.myrealestateagency.entities.Agent;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.repository.AgentRepository;
|
import fr.romanet.vj.apps.myrealestateagency.repository.AgentRepository;
|
||||||
@ -30,14 +31,16 @@ public class AgentsActivityViewModel extends AndroidViewModel implements Lifecyc
|
|||||||
public MutableLiveData<Integer> selected_agency = new MutableLiveData<>();
|
public MutableLiveData<Integer> selected_agency = new MutableLiveData<>();
|
||||||
|
|
||||||
public AgentRepository agentRepository;
|
public AgentRepository agentRepository;
|
||||||
SharedPreferences sharedPreferences;
|
public SharedPrefs sharedPrefs;
|
||||||
|
|
||||||
|
|
||||||
public AgentsActivityViewModel(@NonNull Application application)
|
public AgentsActivityViewModel(@NonNull Application application)
|
||||||
{
|
{
|
||||||
super(application);
|
super(application);
|
||||||
agentRepository = new AgentRepository(application);
|
agentRepository = new AgentRepository(application);
|
||||||
|
sharedPrefs = new SharedPrefs();
|
||||||
agents = agentRepository.getAllAgents();
|
agents = agentRepository.getAllAgents();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAgents()
|
public void setAgents()
|
||||||
@ -54,8 +57,7 @@ public class AgentsActivityViewModel extends AndroidViewModel implements Lifecyc
|
|||||||
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
|
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
|
||||||
private void restore_shared_prefs(){
|
private void restore_shared_prefs(){
|
||||||
|
|
||||||
sharedPreferences = MyApp.getContext().getSharedPreferences(Config.getSharedPreferences(), MODE_PRIVATE);
|
int stored_agent_id = sharedPrefs.get_logged_agent_id();
|
||||||
int stored_agent_id = sharedPreferences.getInt(Config.get_selected_agency_index(), -1);
|
|
||||||
// selected_agency.postValue(stored_agent_id);
|
// selected_agency.postValue(stored_agent_id);
|
||||||
|
|
||||||
if (stored_agent_id >= 0){
|
if (stored_agent_id >= 0){
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.lifecycle.AndroidViewModel;
|
import androidx.lifecycle.AndroidViewModel;
|
||||||
import androidx.lifecycle.Lifecycle;
|
import androidx.lifecycle.Lifecycle;
|
||||||
import androidx.lifecycle.LifecycleObserver;
|
import androidx.lifecycle.LifecycleObserver;
|
||||||
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
import androidx.lifecycle.OnLifecycleEvent;
|
import androidx.lifecycle.OnLifecycleEvent;
|
||||||
|
|
||||||
@ -20,7 +21,10 @@ import java.util.Map;
|
|||||||
|
|
||||||
import fr.romanet.vj.apps.myrealestateagency.MapMarker;
|
import fr.romanet.vj.apps.myrealestateagency.MapMarker;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.MyApp;
|
import fr.romanet.vj.apps.myrealestateagency.MyApp;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.entities.Agency;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.entities.Property;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.repository.MapsActivityRepository;
|
import fr.romanet.vj.apps.myrealestateagency.repository.MapsActivityRepository;
|
||||||
|
import fr.romanet.vj.apps.myrealestateagency.repository.PropertyRepository;
|
||||||
import fr.romanet.vj.apps.myrealestateagency.view.MapsActivity;
|
import fr.romanet.vj.apps.myrealestateagency.view.MapsActivity;
|
||||||
|
|
||||||
public class MapsActivityViewModel extends AndroidViewModel implements LifecycleObserver {
|
public class MapsActivityViewModel extends AndroidViewModel implements LifecycleObserver {
|
||||||
@ -31,16 +35,27 @@ public class MapsActivityViewModel extends AndroidViewModel implements Lifecycle
|
|||||||
|
|
||||||
public MutableLiveData<List<MapMarker>> markers_to_display = new MutableLiveData<>();
|
public MutableLiveData<List<MapMarker>> markers_to_display = new MutableLiveData<>();
|
||||||
|
|
||||||
|
private PropertyRepository propertyRepository;
|
||||||
|
|
||||||
|
private MapsActivityRepository mapsActivityRepository;
|
||||||
|
|
||||||
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
|
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
|
||||||
private void init_map() throws IOException {
|
private void init_map(Application application) throws IOException {
|
||||||
List<MapMarker> mapMarkers = new ArrayList<MapMarker>();
|
mapsActivityRepository = new MapsActivityRepository();
|
||||||
|
|
||||||
|
// LiveData<List<Property>> properties = propertyRepository.getAllProperties();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// List<MapMarker> mapMarkers = new ArrayList<MapMarker>();
|
||||||
|
List<MapMarker> mapMarkers = mapsActivityRepository.get_all_map_markers_for_this_agency(application);
|
||||||
// List<LatLng> latLngs = null;
|
// List<LatLng> latLngs = null;
|
||||||
|
|
||||||
mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Paris, France", MyApp.getContext()), "Paris", BitmapDescriptorFactory.HUE_BLUE));
|
// mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Paris, France", MyApp.getContext()), "Paris", BitmapDescriptorFactory.HUE_BLUE));
|
||||||
mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Villejuif, France", MyApp.getContext()), "Villejuif", BitmapDescriptorFactory.HUE_BLUE));
|
// mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Villejuif, France", MyApp.getContext()), "Villejuif", BitmapDescriptorFactory.HUE_BLUE));
|
||||||
mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Cachan, France", MyApp.getContext()), "Cachan", BitmapDescriptorFactory.HUE_BLUE));
|
// mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Cachan, France", MyApp.getContext()), "Cachan", BitmapDescriptorFactory.HUE_BLUE));
|
||||||
mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Massy, France", MyApp.getContext()), "Massy", BitmapDescriptorFactory.HUE_GREEN));
|
// mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Massy, France", MyApp.getContext()), "Massy", BitmapDescriptorFactory.HUE_GREEN));
|
||||||
mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Ivry, France", MyApp.getContext()), "Ivry", BitmapDescriptorFactory.HUE_RED));
|
// mapMarkers.add(new MapMarker(MapsActivityRepository.get_lat_long_from_address("Ivry, France", MyApp.getContext()), "Ivry", BitmapDescriptorFactory.HUE_RED));
|
||||||
|
|
||||||
// for (MapMarker mapMarker : mapMarkers){
|
// for (MapMarker mapMarker : mapMarkers){
|
||||||
// latLngs.add(new LatLng(addr.getLatitude(), addr.getLongitude()));
|
// latLngs.add(new LatLng(addr.getLatitude(), addr.getLongitude()));
|
||||||
|
|||||||
@ -180,6 +180,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="Map"
|
android:text="Map"
|
||||||
|
android:onClick="goto_map"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.783"
|
app:layout_constraintHorizontal_bias="0.783"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user