Working map view with markers opening default, ugly, infowindow
This commit is contained in:
		@@ -18,33 +18,20 @@
 | 
			
		||||
package it.danieleverducci.nextcloudmaps.activity.main;
 | 
			
		||||
 | 
			
		||||
import android.content.Intent;
 | 
			
		||||
import android.content.SharedPreferences;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.text.TextUtils;
 | 
			
		||||
import android.util.Log;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
import android.widget.Toast;
 | 
			
		||||
 | 
			
		||||
import androidx.annotation.Nullable;
 | 
			
		||||
import androidx.appcompat.widget.AppCompatImageButton;
 | 
			
		||||
import androidx.appcompat.widget.AppCompatImageView;
 | 
			
		||||
import androidx.appcompat.widget.SearchView;
 | 
			
		||||
import androidx.appcompat.widget.Toolbar;
 | 
			
		||||
import androidx.core.view.GravityCompat;
 | 
			
		||||
import androidx.drawerlayout.widget.DrawerLayout;
 | 
			
		||||
import androidx.fragment.app.Fragment;
 | 
			
		||||
import androidx.fragment.app.FragmentManager;
 | 
			
		||||
import androidx.fragment.app.FragmentTransaction;
 | 
			
		||||
import androidx.lifecycle.ViewModelProvider;
 | 
			
		||||
import androidx.preference.PreferenceManager;
 | 
			
		||||
import androidx.recyclerview.widget.RecyclerView;
 | 
			
		||||
 | 
			
		||||
import com.google.android.material.card.MaterialCardView;
 | 
			
		||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
 | 
			
		||||
import com.nextcloud.android.sso.helper.SingleAccountHelper;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.R;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.activity.NextcloudMapsStyledActivity;
 | 
			
		||||
@@ -52,23 +39,12 @@ import it.danieleverducci.nextcloudmaps.activity.about.AboutActivity;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.activity.detail.GeofavoriteDetailActivity;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.activity.login.LoginActivity;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.activity.main.NavigationAdapter.NavigationItem;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.activity.main.SortingOrderDialogFragment.OnSortingOrderListener;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.activity.mappicker.MapPickerActivity;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.api.ApiProvider;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.fragments.GeofavoriteListFragment;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.fragments.GeofavoriteMapFragment;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.fragments.GeofavoritesFragment;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.model.Geofavorite;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.utils.SettingsManager;
 | 
			
		||||
 | 
			
		||||
import static android.view.View.GONE;
 | 
			
		||||
import static android.view.View.VISIBLE;
 | 
			
		||||
import static it.danieleverducci.nextcloudmaps.activity.main.GeofavoriteAdapter.*;
 | 
			
		||||
import static it.danieleverducci.nextcloudmaps.activity.main.GeofavoriteAdapter.SORT_BY_CREATED;
 | 
			
		||||
import static it.danieleverducci.nextcloudmaps.activity.main.GeofavoriteAdapter.SORT_BY_TITLE;
 | 
			
		||||
import androidx.lifecycle.Observer;
 | 
			
		||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
 | 
			
		||||
 | 
			
		||||
public class MainActivity extends NextcloudMapsStyledActivity {
 | 
			
		||||
 | 
			
		||||
    private static final String TAG = "MainActivity";
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
package it.danieleverducci.nextcloudmaps.fragments;
 | 
			
		||||
 | 
			
		||||
import android.graphics.drawable.Drawable;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.view.LayoutInflater;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
@@ -7,27 +8,84 @@ import android.view.ViewGroup;
 | 
			
		||||
 | 
			
		||||
import androidx.annotation.NonNull;
 | 
			
		||||
import androidx.annotation.Nullable;
 | 
			
		||||
import androidx.appcompat.content.res.AppCompatResources;
 | 
			
		||||
import androidx.core.graphics.drawable.DrawableCompat;
 | 
			
		||||
import androidx.lifecycle.Observer;
 | 
			
		||||
 | 
			
		||||
import org.osmdroid.util.GeoPoint;
 | 
			
		||||
import org.osmdroid.views.MapView;
 | 
			
		||||
import org.osmdroid.views.overlay.Marker;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.R;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.activity.main.MainActivity;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.model.Geofavorite;
 | 
			
		||||
import it.danieleverducci.nextcloudmaps.utils.MapUtils;
 | 
			
		||||
 | 
			
		||||
public class GeofavoriteMapFragment extends GeofavoritesFragment {
 | 
			
		||||
    private MapView map;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onCreate(@Nullable Bundle savedInstanceState) {
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
 | 
			
		||||
        MapUtils.configOsmdroid(requireContext());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Nullable
 | 
			
		||||
    @Override
 | 
			
		||||
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
 | 
			
		||||
        View v = inflater.inflate(R.layout.fragment_geofavorite_map, container, false);
 | 
			
		||||
 | 
			
		||||
        map = v.findViewById(R.id.map);
 | 
			
		||||
 | 
			
		||||
        // Setup view listeners
 | 
			
		||||
        View showListButton = v.findViewById(R.id.view_mode_list);
 | 
			
		||||
        showListButton.setOnClickListener(View -> ((MainActivity)requireActivity()).showMap());
 | 
			
		||||
        showListButton.setOnClickListener(View -> ((MainActivity)requireActivity()).showList());
 | 
			
		||||
 | 
			
		||||
        View loadingWall = v.findViewById(R.id.loading_wall);
 | 
			
		||||
 | 
			
		||||
        // Register for data source events
 | 
			
		||||
        mGeofavoritesFragmentViewModel.getIsUpdating().observe(getViewLifecycleOwner(), new Observer<Boolean>() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onChanged(@Nullable Boolean changed) {
 | 
			
		||||
                if(Boolean.TRUE.equals(changed)){
 | 
			
		||||
                    loadingWall.setVisibility(View.VISIBLE);
 | 
			
		||||
                }
 | 
			
		||||
                else{
 | 
			
		||||
                    loadingWall.setVisibility(View.GONE);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        mGeofavoritesFragmentViewModel.getGeofavorites().observe(getViewLifecycleOwner(), new Observer<List<Geofavorite>>() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onChanged(List<Geofavorite> geofavorites) {
 | 
			
		||||
                for(Geofavorite gf : geofavorites)
 | 
			
		||||
                    addMarker(gf);
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        return v;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onSearch(String query) {
 | 
			
		||||
        // TODO: filter
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void addMarker(Geofavorite geofavorite){
 | 
			
		||||
        GeoPoint pos = new GeoPoint(geofavorite.getLat(), geofavorite.getLng());
 | 
			
		||||
 | 
			
		||||
        Drawable icon = DrawableCompat.wrap(AppCompatResources.getDrawable(requireContext(), R.drawable.ic_list_pin));
 | 
			
		||||
        DrawableCompat.setTint(icon, geofavorite.categoryColor());
 | 
			
		||||
 | 
			
		||||
        Marker m = new Marker(map);
 | 
			
		||||
        m.setPosition(pos);
 | 
			
		||||
        m.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
 | 
			
		||||
        m.setIcon(icon);
 | 
			
		||||
        m.setTitle(geofavorite.getName());
 | 
			
		||||
        m.setSnippet(geofavorite.getComment());
 | 
			
		||||
        m.setSubDescription(geofavorite.getCategory());
 | 
			
		||||
        map.getOverlays().add(m);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,21 @@
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent">
 | 
			
		||||
 | 
			
		||||
    <FrameLayout
 | 
			
		||||
        android:id="@+id/loading_wall"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="match_parent"
 | 
			
		||||
        android:background="@color/translucent"
 | 
			
		||||
        android:visibility="gone">
 | 
			
		||||
 | 
			
		||||
        <ProgressBar
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:indeterminate="true"
 | 
			
		||||
            android:layout_gravity="center"/>
 | 
			
		||||
 | 
			
		||||
    </FrameLayout>
 | 
			
		||||
 | 
			
		||||
    <org.osmdroid.views.MapView
 | 
			
		||||
        android:id="@+id/map"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
@@ -22,17 +37,11 @@
 | 
			
		||||
 | 
			
		||||
        <include layout="@layout/app_toolbar"/>
 | 
			
		||||
 | 
			
		||||
        <RelativeLayout
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:orientation="horizontal"
 | 
			
		||||
            android:paddingTop="10dp">
 | 
			
		||||
 | 
			
		||||
            <androidx.appcompat.widget.AppCompatImageView
 | 
			
		||||
                android:id="@+id/view_mode_list"
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:layout_height="@dimen/floating_bar_height"
 | 
			
		||||
                android:layout_alignParentRight="true"
 | 
			
		||||
                android:layout_gravity="right"
 | 
			
		||||
                android:background="?android:attr/selectableItemBackgroundBorderless"
 | 
			
		||||
                android:contentDescription="@string/list_mode"
 | 
			
		||||
                android:paddingStart="@dimen/spacer_2x"
 | 
			
		||||
@@ -40,8 +49,6 @@
 | 
			
		||||
                android:tint="@color/text_color"
 | 
			
		||||
                android:src="@drawable/ic_view_list" />
 | 
			
		||||
 | 
			
		||||
        </RelativeLayout>
 | 
			
		||||
 | 
			
		||||
    </androidx.appcompat.widget.LinearLayoutCompat>
 | 
			
		||||
 | 
			
		||||
</FrameLayout>
 | 
			
		||||
@@ -3,4 +3,5 @@
 | 
			
		||||
    <color name="text_color">#eee</color>
 | 
			
		||||
    <color name="disabled">#888</color>
 | 
			
		||||
    <color name="defaultBackground">#000</color>
 | 
			
		||||
    <color name="translucent">#C000</color>
 | 
			
		||||
</resources>
 | 
			
		||||
@@ -20,6 +20,7 @@
 | 
			
		||||
    <!-- Generic Colors -->
 | 
			
		||||
    <color name="primary">#ffffff</color>
 | 
			
		||||
    <color name="transparent">#00000000</color>
 | 
			
		||||
    <color name="translucent">#CFFF</color>
 | 
			
		||||
    <color name="defaultBrand">#0082C9</color>
 | 
			
		||||
    <color name="defaultBrandAlpha">#550082C9</color>
 | 
			
		||||
    <color name="disabled">#666</color>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user