Created empty map pick activity, added FAB actions

This commit is contained in:
Daniele Verducci (Slimpenguin)
2022-01-06 08:26:38 +01:00
parent 8f054dd324
commit 90c4b998e7
15 changed files with 273 additions and 19 deletions

View File

@ -27,7 +27,6 @@ import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
@ -50,22 +49,14 @@ import org.osmdroid.views.overlay.Marker;
import org.threeten.bp.format.DateTimeFormatter;
import org.threeten.bp.format.FormatStyle;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import it.danieleverducci.nextcloudmaps.BuildConfig;
import it.danieleverducci.nextcloudmaps.R;
import it.danieleverducci.nextcloudmaps.activity.main.MainActivity;
import it.danieleverducci.nextcloudmaps.activity.main.MainActivityViewModel;
import it.danieleverducci.nextcloudmaps.api.ApiProvider;
import it.danieleverducci.nextcloudmaps.databinding.ActivityGeofavoriteDetailBinding;
import it.danieleverducci.nextcloudmaps.model.Geofavorite;
import it.danieleverducci.nextcloudmaps.utils.GeoUriParser;
import it.danieleverducci.nextcloudmaps.utils.IntentGenerator;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class GeofavoriteDetailActivity extends AppCompatActivity implements LocationListener, ActivityCompat.OnRequestPermissionsResultCallback {

View File

@ -23,6 +23,7 @@ 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;
@ -55,6 +56,7 @@ import it.danieleverducci.nextcloudmaps.activity.detail.GeofavoriteDetailActivit
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.model.Geofavorite;
import it.danieleverducci.nextcloudmaps.utils.GeoUriParser;
import it.danieleverducci.nextcloudmaps.utils.IntentGenerator;
@ -70,7 +72,8 @@ public class MainActivity extends AppCompatActivity implements OnSortingOrderLis
private static final String TAG = "MainActivity";
private static final String NAVIGATION_KEY_ADD_GEOFAVORITE = "add";
private static final String NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_GPS = "add_from_gps";
private static final String NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_MAP = "add_from_map";
private static final String NAVIGATION_KEY_SHOW_ABOUT = "about";
private static final String NAVIGATION_KEY_SWITCH_ACCOUNT = "switch_account";
@ -89,6 +92,8 @@ public class MainActivity extends AppCompatActivity implements OnSortingOrderLis
private ItemClickListener rvItemClickListener;
private MainActivityViewModel mMainActivityViewModel;
private boolean isFabOpen = false;
NavigationAdapter navigationCommonAdapter;
@Override
@ -165,8 +170,14 @@ public class MainActivity extends AppCompatActivity implements OnSortingOrderLis
swipeRefresh.setOnRefreshListener(() ->
mMainActivityViewModel.updateGeofavorites());
fab = findViewById(R.id.add);
fab.setOnClickListener(view -> addGeofavorite());
fab = findViewById(R.id.open_fab);
fab.setOnClickListener(view -> openFab(!this.isFabOpen));
fab = findViewById(R.id.add_from_gps);
fab.setOnClickListener(view -> addGeofavoriteFromGps());
fab = findViewById(R.id.add_from_map);
fab.setOnClickListener(view -> addGeofavoriteFromMap());
toolbar = findViewById(R.id.toolbar);
homeToolbar = findViewById(R.id.home_toolbar);
@ -215,13 +226,22 @@ public class MainActivity extends AppCompatActivity implements OnSortingOrderLis
updateGridIcon(gridViewEnabled);
}
@Override
protected void onPause() {
openFab(false);
super.onPause();
}
private void setupNavigationMenu() {
ArrayList<NavigationItem> navItems = new ArrayList<>();
navigationCommonAdapter = new NavigationAdapter(this, item -> {
switch (item.id) {
case NAVIGATION_KEY_ADD_GEOFAVORITE:
addGeofavorite();
case NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_GPS:
addGeofavoriteFromGps();
break;
case NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_MAP:
addGeofavoriteFromMap();
break;
case NAVIGATION_KEY_SHOW_ABOUT:
show_about();
@ -232,7 +252,8 @@ public class MainActivity extends AppCompatActivity implements OnSortingOrderLis
}
});
navItems.add(new NavigationItem(NAVIGATION_KEY_ADD_GEOFAVORITE, getString(R.string.new_geobookmark), R.drawable.ic_add));
navItems.add(new NavigationItem(NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_GPS, getString(R.string.new_geobookmark_gps), R.drawable.ic_add_gps));
navItems.add(new NavigationItem(NAVIGATION_KEY_ADD_GEOFAVORITE_FROM_MAP, getString(R.string.new_geobookmark_map), R.drawable.ic_add_map));
navItems.add(new NavigationItem(NAVIGATION_KEY_SHOW_ABOUT, getString(R.string.about), R.drawable.ic_info_grey));
navItems.add(new NavigationItem(NAVIGATION_KEY_SWITCH_ACCOUNT, getString(R.string.switch_account), R.drawable.ic_logout_grey));
navigationCommonAdapter.setItems(navItems);
@ -257,12 +278,18 @@ public class MainActivity extends AppCompatActivity implements OnSortingOrderLis
SortingOrderDialogFragment.newInstance(sortOrder).show(fragmentTransaction, SortingOrderDialogFragment.SORTING_ORDER_FRAGMENT);
}
private void addGeofavorite() {
private void addGeofavoriteFromGps() {
startActivity(
new Intent(this, GeofavoriteDetailActivity.class)
);
}
private void addGeofavoriteFromMap() {
startActivity(
new Intent(this, MapPickerActivity.class)
);
}
private void show_about() {
startActivity(new Intent(this, AboutActivity.class));
}
@ -336,4 +363,23 @@ public class MainActivity extends AppCompatActivity implements OnSortingOrderLis
startActivity(i);
}
private void openFab(boolean open) {
View fab = findViewById(R.id.open_fab);
View addFromGpsFab = findViewById(R.id.add_from_gps);
View addFromMapFab = findViewById(R.id.add_from_map);
if (open) {
this.isFabOpen = true;
fab.animate().rotation(45.0f);
addFromGpsFab.animate().translationY(-getResources().getDimension(R.dimen.fab_vertical_offset));
addFromMapFab.animate().translationY(-getResources().getDimension(R.dimen.fab_vertical_offset) * 2);
} else {
this.isFabOpen = false;
fab.animate().rotation(0f);
addFromGpsFab.animate().translationY(0);
addFromMapFab.animate().translationY(0);
}
}
}

View File

@ -0,0 +1,52 @@
package it.danieleverducci.nextcloudmaps.activity.mappicker;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.preference.PreferenceManager;
import org.osmdroid.config.Configuration;
import org.osmdroid.config.IConfigurationProvider;
import it.danieleverducci.nextcloudmaps.BuildConfig;
import it.danieleverducci.nextcloudmaps.databinding.ActivityMapPickerBinding;
public class MapPickerActivity extends AppCompatActivity {
public static final String TAG = "MapPickerActivity";
private ViewHolder mViewHolder;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// OSMDroid config
IConfigurationProvider osmdroidConfig = Configuration.getInstance();
osmdroidConfig.load(getApplicationContext(),
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()));
osmdroidConfig.setUserAgentValue(BuildConfig.APPLICATION_ID);
mViewHolder = new MapPickerActivity.ViewHolder(getLayoutInflater());
setContentView(mViewHolder.getRootView());
}
private class ViewHolder implements View.OnClickListener {
private final ActivityMapPickerBinding binding;
public ViewHolder(LayoutInflater inflater) {
this.binding = ActivityMapPickerBinding.inflate(inflater);
}
public View getRootView() {
return this.binding.root;
}
@Override
public void onClick(View view) {
}
}
}

View File

@ -2,6 +2,7 @@ package it.danieleverducci.nextcloudmaps.utils;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import it.danieleverducci.nextcloudmaps.R;
import it.danieleverducci.nextcloudmaps.model.Geofavorite;