summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/quantum/res/drawable/quantum_ic_error_outline_vd_theme_36.xml33
-rw-r--r--java/com/android/incallui/calllocation/impl/LocationFragment.java28
-rw-r--r--java/com/android/incallui/calllocation/impl/res/layout/location_fragment.xml30
-rw-r--r--java/com/android/incallui/calllocation/impl/res/values/strings.xml3
-rw-r--r--java/com/android/incallui/calllocation/impl/res/values/styles.xml23
5 files changed, 110 insertions, 7 deletions
diff --git a/assets/quantum/res/drawable/quantum_ic_error_outline_vd_theme_36.xml b/assets/quantum/res/drawable/quantum_ic_error_outline_vd_theme_36.xml
new file mode 100644
index 000000000..df4dc3299
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_error_outline_vd_theme_36.xml
@@ -0,0 +1,33 @@
+<!--
+ ~ Copyright (C) 2018 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="36dp"
+ android:height="36dp"
+ android:viewportWidth="36.0"
+ android:viewportHeight="36.0"
+ android:tint="?attr/colorControlNormal">
+ <group
+ android:pivotX="12"
+ android:pivotY="12"
+ android:scaleX="1.5"
+ android:scaleY="1.5"
+ android:translateX="6"
+ android:translateY="6">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M11,15h2v2h-2zM11,7h2v6h-2zM11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z"/>
+ </group>
+</vector> \ No newline at end of file
diff --git a/java/com/android/incallui/calllocation/impl/LocationFragment.java b/java/com/android/incallui/calllocation/impl/LocationFragment.java
index 77e4f7f7d..6b2c876b0 100644
--- a/java/com/android/incallui/calllocation/impl/LocationFragment.java
+++ b/java/com/android/incallui/calllocation/impl/LocationFragment.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -47,10 +47,12 @@ public class LocationFragment extends BaseFragment<LocationPresenter, LocationPr
private static final String ADDRESS_DELIMITER = ",";
- // Indexes used to animate fading between views
- private static final int LOADING_VIEW_INDEX = 0;
+ // Indexes used to animate fading between views, 0 for LOADING_VIEW_INDEX
private static final int LOCATION_VIEW_INDEX = 1;
- private static final long TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(5);
+ private static final int LOCATION_ERROR_INDEX = 2;
+
+ private static final long FIND_LOCATION_SPINNING_TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(5);
+ private static final long LOAD_DATA_TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(5);
private ViewAnimator viewAnimator;
private ImageView locationMap;
@@ -75,6 +77,14 @@ public class LocationFragment extends BaseFragment<LocationPresenter, LocationPr
showLocationNow();
};
+ private final Runnable spinningTimeoutRunnable =
+ () -> {
+ if (!(isAddressSet || isLocationSet || isMapSet)) {
+ // No data received, show error
+ viewAnimator.setDisplayedChild(LOCATION_ERROR_INDEX);
+ }
+ };
+
@Override
public LocationPresenter createPresenter() {
return new LocationPresenter();
@@ -100,9 +110,16 @@ public class LocationFragment extends BaseFragment<LocationPresenter, LocationPr
}
@Override
+ public void onStart() {
+ super.onStart();
+ handler.postDelayed(spinningTimeoutRunnable, FIND_LOCATION_SPINNING_TIMEOUT_MILLIS);
+ }
+
+ @Override
public void onDestroy() {
super.onDestroy();
handler.removeCallbacks(dataTimeoutRunnable);
+ handler.removeCallbacks(spinningTimeoutRunnable);
}
@Override
@@ -167,13 +184,14 @@ public class LocationFragment extends BaseFragment<LocationPresenter, LocationPr
if (isMapSet && isAddressSet && isLocationSet) {
showLocationNow();
} else if (!hasTimeoutStarted) {
- handler.postDelayed(dataTimeoutRunnable, TIMEOUT_MILLIS);
+ handler.postDelayed(dataTimeoutRunnable, LOAD_DATA_TIMEOUT_MILLIS);
hasTimeoutStarted = true;
}
}
private void showLocationNow() {
handler.removeCallbacks(dataTimeoutRunnable);
+ handler.removeCallbacks(spinningTimeoutRunnable);
if (viewAnimator.getDisplayedChild() != LOCATION_VIEW_INDEX) {
viewAnimator.setDisplayedChild(LOCATION_VIEW_INDEX);
viewAnimator.setOnClickListener(v -> launchMap());
diff --git a/java/com/android/incallui/calllocation/impl/res/layout/location_fragment.xml b/java/com/android/incallui/calllocation/impl/res/layout/location_fragment.xml
index b1601f9fd..d20e32b3f 100644
--- a/java/com/android/incallui/calllocation/impl/res/layout/location_fragment.xml
+++ b/java/com/android/incallui/calllocation/impl/res/layout/location_fragment.xml
@@ -130,4 +130,34 @@
</GridLayout>
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/location_error_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:orientation="vertical">
+
+ <ImageView
+ android:id="@+id/location_error_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="32dp"
+ android:layout_marginBottom="12dp"
+ android:layout_gravity="center_horizontal"
+ android:src="@drawable/quantum_ic_error_outline_vd_theme_36"
+ android:tint="#C53929"/>
+
+ <TextView
+ android:id="@+id/location_error_text"
+ style="@style/LocationErrorTextStyle"
+ android:layout_width="match_parent"
+ android:layout_height="24sp"
+ android:layout_marginBottom="20dp"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="16dp"
+ android:gravity="center"
+ android:text="@string/location_error"/>
+
+ </LinearLayout>
+
</ViewAnimator>
diff --git a/java/com/android/incallui/calllocation/impl/res/values/strings.xml b/java/com/android/incallui/calllocation/impl/res/values/strings.xml
index 573f33cda..732b4efbd 100644
--- a/java/com/android/incallui/calllocation/impl/res/values/strings.xml
+++ b/java/com/android/incallui/calllocation/impl/res/values/strings.xml
@@ -29,4 +29,7 @@
<!-- Progress indicator loading text. [CHAR LIMIT=20] -->
<string name="location_loading">Finding your location&#8230;</string>
+ <!-- Error message shown when we can't get device location. [CHAR LIMIT=NONE] -->
+ <string name="location_error">Error, could not retrieve your location</string>
+
</resources>
diff --git a/java/com/android/incallui/calllocation/impl/res/values/styles.xml b/java/com/android/incallui/calllocation/impl/res/values/styles.xml
index 866a4edb6..45e9c98d4 100644
--- a/java/com/android/incallui/calllocation/impl/res/values/styles.xml
+++ b/java/com/android/incallui/calllocation/impl/res/values/styles.xml
@@ -1,5 +1,18 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2015 Google Inc. All Rights Reserved. -->
+<!--
+ ~ Copyright (C) 2018 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
<resources>
<style name="LocationAddressTitleTextStyle">
@@ -25,4 +38,10 @@
<item name="android:textColor">#dd000000</item>
<item name="android:fontFamily">sans-serif</item>
</style>
+
+ <style name="LocationErrorTextStyle">
+ <item name="android:textSize">14sp</item>
+ <item name="android:textColor">#dd000000</item>
+ <item name="android:fontFamily">sans-serif</item>
+ </style>
</resources>