diff --git a/.gitignore b/.gitignore
index c1854210..731d4019 100644
--- a/.gitignore
+++ b/.gitignore
@@ -54,6 +54,9 @@ captures/
.idea/caches/
.idea/assetWizardSettings.xml
+# Android Studio
+.idea/deploymentTargetDropDown.xml
+
# Keystore files
*.jks
*.keystore
@@ -68,3 +71,6 @@ google-services.json
freeline.py
freeline/
freeline_project_description.json
+
+# macos
+.DS_Store
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 61a9130c..fb7f4a8a 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index d5d35ec4..5efd2f94 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,23 @@
-
+
+
+
+
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
deleted file mode 100644
index 7f68460d..00000000
--- a/.idea/runConfigurations.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 13714b4f..9f2ee76d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -25,22 +25,19 @@ apply plugin: 'com.google.android.gms.oss-licenses-plugin'
apply plugin: 'com.google.firebase.crashlytics'
android {
- lintOptions {
- abortOnError false
- }
signingConfigs {
release
}
buildFeatures {
dataBinding = true
}
- compileSdkVersion 29
+ compileSdkVersion 30
defaultConfig {
applicationId "org.gophillygo.app"
- minSdkVersion 19
- targetSdkVersion 29
- versionCode 24
- versionName "1.3.0"
+ minSdkVersion 21
+ targetSdkVersion 30
+ versionCode 25
+ versionName "1.4.0"
vectorDrawables.useSupportLibrary = true
multiDexEnabled = true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -57,6 +54,7 @@ android {
shrinkResources false
}
release {
+ crunchPngs false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
@@ -67,11 +65,11 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
- aaptOptions {
- cruncherEnabled = false
- }
productFlavors {
}
+ lint {
+ abortOnError false
+ }
}
dependencies {
@@ -134,7 +132,7 @@ dependencies {
implementation 'com.squareup.okhttp3:logging-interceptor:4.7.2'
// Dagger 2
- def daggerVersion = '2.28'
+ def daggerVersion = '2.35.1'
implementation "com.google.dagger:dagger:$daggerVersion"
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
implementation "com.google.dagger:dagger-android:$daggerVersion"
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 06742cb5..59cc766b 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -59,7 +59,6 @@
# Top-level functions that can only be used by Kotlin.
-dontwarn retrofit2.KotlinExtensions
--dontwarn retrofit2.KotlinExtensions$*
# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy
# and replaces all potential values with null. Explicitly keeping the interfaces prevents this.
@@ -104,6 +103,3 @@
# Crashlytics
-keep class com.google.android.gms.** { *; }
-keep class com.crashlytics.android.** { *; }
-
-# Search
--keep class android.support.v7.widget.SearchView { *; }
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7769c24f..1c43dfdf 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,14 +12,10 @@
-->
-
-
-
-
+
@@ -51,7 +48,8 @@
android:name="android.app.searchable"
android:resource="@xml/searchable" />
-
+
@@ -131,7 +129,8 @@
+ android:theme="@style/GpgDarkTextTheme"
+ android:exported="true">
@@ -183,6 +182,11 @@
android:authorities="org.gophillygo.app.provider"
android:enabled="true"
android:exported="false" />
+
+
+
diff --git a/app/src/main/java/org/gophillygo/app/activities/BaseAttractionActivity.java b/app/src/main/java/org/gophillygo/app/activities/BaseAttractionActivity.java
index 1b6220b1..0c15a051 100644
--- a/app/src/main/java/org/gophillygo/app/activities/BaseAttractionActivity.java
+++ b/app/src/main/java/org/gophillygo/app/activities/BaseAttractionActivity.java
@@ -246,6 +246,7 @@ public Location getCurrentLocation() {
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == GpgLocationUtils.PERMISSION_REQUEST_ID) {
if (grantResults.length > 0) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
diff --git a/app/src/main/java/org/gophillygo/app/activities/EventDetailActivity.java b/app/src/main/java/org/gophillygo/app/activities/EventDetailActivity.java
index 62718ff8..671b2bb7 100644
--- a/app/src/main/java/org/gophillygo/app/activities/EventDetailActivity.java
+++ b/app/src/main/java/org/gophillygo/app/activities/EventDetailActivity.java
@@ -182,9 +182,9 @@ public void addToCalendar(View view) {
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, startTime)
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime)
.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, !event.isSingleDayEvent());
- if (intent.resolveActivity(getPackageManager()) != null) {
+ try {
startActivity(intent);
- } else {
+ } catch(Exception ex) {
Toast.makeText(this, R.string.event_detail_no_calendar, Toast.LENGTH_SHORT).show();
}
}
diff --git a/app/src/main/java/org/gophillygo/app/activities/EventsListActivity.java b/app/src/main/java/org/gophillygo/app/activities/EventsListActivity.java
index 574eb995..dffd6267 100644
--- a/app/src/main/java/org/gophillygo/app/activities/EventsListActivity.java
+++ b/app/src/main/java/org/gophillygo/app/activities/EventsListActivity.java
@@ -136,26 +136,22 @@ public boolean onCreateOptionsMenu(Menu menu) {
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
Intent intent;
- switch (itemId) {
- case R.id.action_event_place:
- Log.d(LOG_LABEL, "Selected event place menu item");
- intent = new Intent(this, PlacesListActivity.class);
- intent.putExtra(FILTER_KEY, filter);
- startActivity(intent);
- break;
- case R.id.action_event_map:
- Log.d(LOG_LABEL, "Selected map menu item");
- intent = new Intent(this, EventsMapsActivity.class);
- intent.putExtra(FILTER_KEY, filter);
- startActivity(intent);
- break;
- case R.id.action_event_search:
- Log.d(LOG_LABEL, "Selected search menu item");
- super.onSearchRequested();
- break;
- default:
- Log.w(LOG_LABEL, "Unrecognized menu item selected: " + itemId);
- return super.onOptionsItemSelected(item);
+ if (itemId == R.id.action_event_place) {
+ Log.d(LOG_LABEL, "Selected event place menu item");
+ intent = new Intent(this, PlacesListActivity.class);
+ intent.putExtra(FILTER_KEY, filter);
+ startActivity(intent);
+ } else if (itemId == R.id.action_event_map) {
+ Log.d(LOG_LABEL, "Selected map menu item");
+ intent = new Intent(this, EventsMapsActivity.class);
+ intent.putExtra(FILTER_KEY, filter);
+ startActivity(intent);
+ } else if (itemId == R.id.action_event_search) {
+ Log.d(LOG_LABEL, "Selected search menu item");
+ super.onSearchRequested();
+ } else {
+ Log.w(LOG_LABEL, "Unrecognized menu item selected: " + itemId);
+ return super.onOptionsItemSelected(item);
}
return true;
}
diff --git a/app/src/main/java/org/gophillygo/app/activities/EventsMapsActivity.java b/app/src/main/java/org/gophillygo/app/activities/EventsMapsActivity.java
index b8262e3b..ce8ad670 100644
--- a/app/src/main/java/org/gophillygo/app/activities/EventsMapsActivity.java
+++ b/app/src/main/java/org/gophillygo/app/activities/EventsMapsActivity.java
@@ -65,25 +65,21 @@ public boolean onCreateOptionsMenu(Menu menu) {
public boolean onOptionsItemSelected(MenuItem item) {
Intent intent;
int itemId = item.getItemId();
- switch (itemId) {
- case R.id.events_map_action_view_places:
- Log.d(LOG_LABEL, "Selected map events menu item");
- intent = new Intent(this, PlacesMapsActivity.class);
- intent.putExtra(FILTER_KEY, filter);
- startActivity(intent);
- break;
- case R.id.events_map_action_map_search:
- Log.d(LOG_LABEL, "Selected map search menu item");
- break;
- case R.id.events_map_action_view_list:
- Log.d(LOG_LABEL, "Selected to go back to list view from map");
- intent = new Intent(this, EventsListActivity.class);
- intent.putExtra(FILTER_KEY, filter);
- startActivity(intent);
- break;
- default:
- Log.w(LOG_LABEL, "Unrecognized menu item selected: " + itemId);
- return super.onOptionsItemSelected(item);
+ if (itemId == R.id.events_map_action_view_places) {
+ Log.d(LOG_LABEL, "Selected map events menu item");
+ intent = new Intent(this, PlacesMapsActivity.class);
+ intent.putExtra(FILTER_KEY, filter);
+ startActivity(intent);
+ } else if (itemId == R.id.events_map_action_map_search) {
+ Log.d(LOG_LABEL, "Selected map search menu item");
+ } else if (itemId == R.id.events_map_action_view_list) {
+ Log.d(LOG_LABEL, "Selected to go back to list view from map");
+ intent = new Intent(this, EventsListActivity.class);
+ intent.putExtra(FILTER_KEY, filter);
+ startActivity(intent);
+ } else {
+ Log.w(LOG_LABEL, "Unrecognized menu item selected: " + itemId);
+ return super.onOptionsItemSelected(item);
}
return true;
}
diff --git a/app/src/main/java/org/gophillygo/app/activities/HomeActivity.java b/app/src/main/java/org/gophillygo/app/activities/HomeActivity.java
index 0e9c33fc..5425a130 100644
--- a/app/src/main/java/org/gophillygo/app/activities/HomeActivity.java
+++ b/app/src/main/java/org/gophillygo/app/activities/HomeActivity.java
@@ -138,7 +138,7 @@ public Destination getDestinationAt(int position) {
Log.d(LOG_LABEL, "Clicked item at " + position);
Destination destination = getNearestDestination(position);
if (destination != null) {
- goToPlace((long)destination.getId());
+ goToPlace(destination.getId());
}
});
}
@@ -153,19 +153,15 @@ public boolean onCreateOptionsMenu(Menu menu) {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
-
- switch (itemId) {
- case R.id.action_settings:
- Log.d(LOG_LABEL, "Clicked settings action");
- Intent intent = new Intent(this, GpgPreferenceActivity.class);
- startActivity(intent);
- break;
- case R.id.action_home_search:
- Log.d(LOG_LABEL, "searching from home view");
- break;
- default:
- Log.w(LOG_LABEL, "Unrecognized menu option selected: " + itemId);
- return super.onOptionsItemSelected(item);
+ if (itemId == R.id.action_settings) {
+ Log.d(LOG_LABEL, "Clicked settings action");
+ Intent intent = new Intent(this, GpgPreferenceActivity.class);
+ startActivity(intent);
+ } else if (itemId == R.id.action_home_search) {
+ Log.d(LOG_LABEL, "searching from home view");
+ } else {
+ Log.w(LOG_LABEL, "Unrecognized menu option selected: " + itemId);
+ return super.onOptionsItemSelected(item);
}
return true;
diff --git a/app/src/main/java/org/gophillygo/app/activities/PlacesListActivity.java b/app/src/main/java/org/gophillygo/app/activities/PlacesListActivity.java
index 87192cb3..10ef026c 100644
--- a/app/src/main/java/org/gophillygo/app/activities/PlacesListActivity.java
+++ b/app/src/main/java/org/gophillygo/app/activities/PlacesListActivity.java
@@ -163,26 +163,22 @@ public boolean onCreateOptionsMenu(Menu menu) {
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
Intent intent;
- switch (itemId) {
- case R.id.action_place_list_events:
- Log.d(LOG_LABEL, "Selected events menu item");
- intent = new Intent(this, EventsListActivity.class);
- intent.putExtra(FILTER_KEY, filter);
- startActivity(intent);
- break;
- case R.id.action_place_list_map:
- Log.d(LOG_LABEL, "Selected map menu item");
- intent = new Intent(this, PlacesMapsActivity.class);
- intent.putExtra(FILTER_KEY, filter);
- startActivity(intent);
- break;
- case R.id.action_place_list_search:
- Log.d(LOG_LABEL, "Selected search menu item");
- super.onSearchRequested();
- break;
- default:
- Log.w(LOG_LABEL, "Unrecognized menu item selected: " + itemId);
- return super.onOptionsItemSelected(item);
+ if (itemId == R.id.action_place_list_events) {
+ Log.d(LOG_LABEL, "Selected events menu item");
+ intent = new Intent(this, EventsListActivity.class);
+ intent.putExtra(FILTER_KEY, filter);
+ startActivity(intent);
+ } else if (itemId == R.id.action_place_list_map) {
+ Log.d(LOG_LABEL, "Selected map menu item");
+ intent = new Intent(this, PlacesMapsActivity.class);
+ intent.putExtra(FILTER_KEY, filter);
+ startActivity(intent);
+ } else if(itemId == R.id.action_place_list_search) {
+ Log.d(LOG_LABEL, "Selected search menu item");
+ super.onSearchRequested();
+ } else {
+ Log.w(LOG_LABEL, "Unrecognized menu item selected: " + itemId);
+ return super.onOptionsItemSelected(item);
}
return true;
}
diff --git a/app/src/main/java/org/gophillygo/app/activities/PlacesMapsActivity.java b/app/src/main/java/org/gophillygo/app/activities/PlacesMapsActivity.java
index 7b3a1d09..54f717ad 100644
--- a/app/src/main/java/org/gophillygo/app/activities/PlacesMapsActivity.java
+++ b/app/src/main/java/org/gophillygo/app/activities/PlacesMapsActivity.java
@@ -42,26 +42,22 @@ public boolean onCreateOptionsMenu(Menu menu) {
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
Intent intent;
- switch (itemId) {
- case R.id.places_map_action_view_events:
- Log.d(LOG_LABEL, "Selected map events menu item");
- intent = new Intent(this, EventsMapsActivity.class);
- intent.putExtra(FILTER_KEY, filter);
- startActivity(intent);
- break;
- case R.id.places_map_action_view_list:
- Log.d(LOG_LABEL, "Selected to go back to list view from map");
- intent = new Intent(this, PlacesListActivity.class);
- intent.putExtra(FILTER_KEY, filter);
- startActivity(intent);
- break;
- case R.id.places_map_action_map_search:
- Log.d(LOG_LABEL, "Selected search menu item");
- super.onSearchRequested();
- break;
- default:
- Log.w(LOG_LABEL, "Unrecognized menu item selected: " + itemId);
- return super.onOptionsItemSelected(item);
+ if (itemId == R.id.places_map_action_view_events) {
+ Log.d(LOG_LABEL, "Selected map events menu item");
+ intent = new Intent(this, EventsMapsActivity.class);
+ intent.putExtra(FILTER_KEY, filter);
+ startActivity(intent);
+ } else if (itemId == R.id.places_map_action_view_list) {
+ Log.d(LOG_LABEL, "Selected to go back to list view from map");
+ intent = new Intent(this, PlacesListActivity.class);
+ intent.putExtra(FILTER_KEY, filter);
+ startActivity(intent);
+ } else if (itemId == R.id.places_map_action_map_search) {
+ Log.d(LOG_LABEL, "Selected search menu item");
+ super.onSearchRequested();
+ } else {
+ Log.w(LOG_LABEL, "Unrecognized menu item selected: " + itemId);
+ return super.onOptionsItemSelected(item);
}
return true;
}
diff --git a/app/src/main/java/org/gophillygo/app/data/models/AttractionInfo.java b/app/src/main/java/org/gophillygo/app/data/models/AttractionInfo.java
index 9593894d..17621cfb 100644
--- a/app/src/main/java/org/gophillygo/app/data/models/AttractionInfo.java
+++ b/app/src/main/java/org/gophillygo/app/data/models/AttractionInfo.java
@@ -44,21 +44,16 @@ int getFlagImage() {
public void updateAttractionFlag(@MenuRes int menuId) {
AttractionFlag.Option option;
- switch (menuId) {
- case R.id.place_option_not_interested:
- option = AttractionFlag.Option.NotInterested;
- break;
- case R.id.place_option_liked:
- option = AttractionFlag.Option.Liked;
- break;
- case R.id.place_option_been:
- option = AttractionFlag.Option.Been;
- break;
- case R.id.place_option_want_to_go:
- option = AttractionFlag.Option.WantToGo;
- break;
- default:
- option = AttractionFlag.Option.NotSelected;
+ if (menuId == R.id.place_option_not_interested) {
+ option = AttractionFlag.Option.NotInterested;
+ } else if (menuId == R.id.place_option_liked) {
+ option = AttractionFlag.Option.Liked;
+ } else if (menuId == R.id.place_option_been) {
+ option = AttractionFlag.Option.Been;
+ } else if (menuId == R.id.place_option_want_to_go) {
+ option = AttractionFlag.Option.WantToGo;
+ } else {
+ option = AttractionFlag.Option.NotSelected;
}
// When selecting the option already selected, toggle it off
if (flag != null && flag.getOption() == option) {
diff --git a/app/src/main/res/drawable-v21/toggle_button_checked.xml b/app/src/main/res/drawable-v21/toggle_button_checked.xml
deleted file mode 100644
index e43a5d4f..00000000
--- a/app/src/main/res/drawable-v21/toggle_button_checked.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- -
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable-v21/toggle_button_toolbar_checked.xml b/app/src/main/res/drawable-v21/toggle_button_toolbar_checked.xml
deleted file mode 100644
index e446fdbb..00000000
--- a/app/src/main/res/drawable-v21/toggle_button_toolbar_checked.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- -
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable-v21/toggle_button_toolbar_unchecked.xml b/app/src/main/res/drawable-v21/toggle_button_toolbar_unchecked.xml
deleted file mode 100644
index 82b5463e..00000000
--- a/app/src/main/res/drawable-v21/toggle_button_toolbar_unchecked.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- -
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable-v21/toggle_button_unchecked.xml b/app/src/main/res/drawable-v21/toggle_button_unchecked.xml
deleted file mode 100644
index e446fdbb..00000000
--- a/app/src/main/res/drawable-v21/toggle_button_unchecked.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- -
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/toggle_button_checked.xml b/app/src/main/res/drawable/toggle_button_checked.xml
index 0b1e7cee..ec23ab92 100644
--- a/app/src/main/res/drawable/toggle_button_checked.xml
+++ b/app/src/main/res/drawable/toggle_button_checked.xml
@@ -1,4 +1,12 @@
-
-
-
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/toggle_button_toolbar_checked.xml b/app/src/main/res/drawable/toggle_button_toolbar_checked.xml
index 8e3f2fda..6e1bc8e2 100644
--- a/app/src/main/res/drawable/toggle_button_toolbar_checked.xml
+++ b/app/src/main/res/drawable/toggle_button_toolbar_checked.xml
@@ -1,5 +1,12 @@
-
-
-
+
+ -
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/toggle_button_toolbar_unchecked.xml b/app/src/main/res/drawable/toggle_button_toolbar_unchecked.xml
index 18f4e285..e65d1ff1 100644
--- a/app/src/main/res/drawable/toggle_button_toolbar_unchecked.xml
+++ b/app/src/main/res/drawable/toggle_button_toolbar_unchecked.xml
@@ -1,5 +1,12 @@
-
-
-
+
+ -
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/toggle_button_unchecked.xml b/app/src/main/res/drawable/toggle_button_unchecked.xml
index 8e3f2fda..6e1bc8e2 100644
--- a/app/src/main/res/drawable/toggle_button_unchecked.xml
+++ b/app/src/main/res/drawable/toggle_button_unchecked.xml
@@ -1,5 +1,12 @@
-
-
-
+
+ -
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_app_info.xml b/app/src/main/res/layout/activity_app_info.xml
index d59d5ee4..283f3705 100644
--- a/app/src/main/res/layout/activity_app_info.xml
+++ b/app/src/main/res/layout/activity_app_info.xml
@@ -24,8 +24,7 @@
android:id="@+id/app_info_toolbar"
style="@style/ToolbarTransparent"
android:background="@color/color_primary"
- app:title="@string/title_activity_app_info"
- tools:targetApi="lollipop" />
+ app:title="@string/title_activity_app_info" />
+ style="@style/ToolbarTransparent" />
+ app:title="@string/events_list_title" />
+ app:title="@string/title_activity_events_maps" />
diff --git a/app/src/main/res/layout/activity_place_detail.xml b/app/src/main/res/layout/activity_place_detail.xml
index c418d280..b55f2bcd 100644
--- a/app/src/main/res/layout/activity_place_detail.xml
+++ b/app/src/main/res/layout/activity_place_detail.xml
@@ -63,8 +63,7 @@
android:id="@+id/place_detail_toolbar"
style="@style/ToolbarTransparent"
app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- tools:targetApi="lollipop" />
+ app:layout_constraintStart_toStartOf="parent" />
+ app:title="@string/places_list_title" />
+ app:title="@string/title_activity_places_maps" />
+ app:title="@string/preferences" />
+ app:title="@string/title_activity_search" />
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 28279e68..0aedc255 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -51,6 +51,7 @@
-