diff --git a/Android.mk b/Android.mk
index 66111a41422aeaf169a72b05eccdd125283e6cfe..786d5a69b73257e59509ccbe81b85c082af8b8c8 100644
--- a/Android.mk
+++ b/Android.mk
@@ -15,24 +15,6 @@ include $(CLEAR_VARS)
# The base directory for Dialer sources.
BASE_DIR := java/com/android
-# Exclude files incompatible with AOSP.
-EXCLUDE_FILES := \
- $(BASE_DIR)/incallui/calllocation/impl/AuthException.java \
- $(BASE_DIR)/incallui/calllocation/impl/CallLocationImpl.java \
- $(BASE_DIR)/incallui/calllocation/impl/CallLocationModule.java \
- $(BASE_DIR)/incallui/calllocation/impl/DownloadMapImageTask.java \
- $(BASE_DIR)/incallui/calllocation/impl/GoogleLocationSettingHelper.java \
- $(BASE_DIR)/incallui/calllocation/impl/HttpFetcher.java \
- $(BASE_DIR)/incallui/calllocation/impl/LocationFragment.java \
- $(BASE_DIR)/incallui/calllocation/impl/LocationHelper.java \
- $(BASE_DIR)/incallui/calllocation/impl/LocationPresenter.java \
- $(BASE_DIR)/incallui/calllocation/impl/LocationUrlBuilder.java \
- $(BASE_DIR)/incallui/calllocation/impl/ReverseGeocodeTask.java \
- $(BASE_DIR)/incallui/calllocation/impl/TrafficStatsTags.java \
- $(BASE_DIR)/incallui/maps/impl/MapsImpl.java \
- $(BASE_DIR)/incallui/maps/impl/MapsModule.java \
- $(BASE_DIR)/incallui/maps/impl/StaticMapFragment.java \
-
# Exclude testing only class, not used anywhere here
EXCLUDE_FILES += \
$(BASE_DIR)/contacts/common/format/testing/SpannedTestUtils.java
@@ -40,35 +22,12 @@ EXCLUDE_FILES += \
# Exclude rootcomponentgenerator
EXCLUDE_FILES += \
$(call all-java-files-under, $(BASE_DIR)/dialer/rootcomponentgenerator) \
- $(call all-java-files-under, $(BASE_DIR)/dialer/inject/demo)
-
-# Exclude build variants for now
-EXCLUDE_FILES += \
- $(BASE_DIR)/dialer/constants/googledialer/ConstantsImpl.java \
- $(BASE_DIR)/dialer/binary/google/GoogleStubDialerRootComponent.java \
- $(BASE_DIR)/dialer/binary/google/GoogleStubDialerApplication.java \
-
-# * b/62875795
-ifneq ($(wildcard packages/apps/Dialer/java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java),)
-$(error Please remove file packages/apps/Dialer/java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java )
-endif
-
-EXCLUDE_RESOURCE_DIRECTORIES := \
- java/com/android/incallui/maps/impl/res \
-# All Dialers resources.
+# All Dialer resources.
RES_DIRS := $(call all-subdir-named-dirs,res,.)
-RES_DIRS := $(filter-out $(EXCLUDE_RESOURCE_DIRECTORIES),$(RES_DIRS))
-
-EXCLUDE_MANIFESTS := \
- $(BASE_DIR)/dialer/binary/aosp/testing/AndroidManifest.xml \
- $(BASE_DIR)/dialer/binary/google/AndroidManifest.xml \
- $(BASE_DIR)/incallui/calllocation/impl/AndroidManifest.xml \
- $(BASE_DIR)/incallui/maps/impl/AndroidManifest.xml \
# Dialer manifest files to merge.
DIALER_MANIFEST_FILES := $(call all-named-files-under,AndroidManifest.xml,.)
-DIALER_MANIFEST_FILES := $(filter-out $(EXCLUDE_MANIFESTS),$(DIALER_MANIFEST_FILES))
# Merge all manifest files.
LOCAL_FULL_LIBS_MANIFEST_FILES := \
@@ -85,55 +44,35 @@ LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(RES_DIRS))
-EXCLUDE_EXTRA_PACKAGES := \
- com.android.dialer.binary.aosp.testing \
- com.android.dialer.binary.google \
- com.android.incallui.calllocation.impl \
- com.android.incallui.maps.impl \
-
# We specify each package explicitly to glob resource files.
include ${LOCAL_PATH}/packages.mk
-LOCAL_AAPT_FLAGS := $(filter-out $(EXCLUDE_EXTRA_PACKAGES),$(LOCAL_AAPT_FLAGS))
LOCAL_AAPT_FLAGS := $(addprefix --extra-packages , $(LOCAL_AAPT_FLAGS))
LOCAL_AAPT_FLAGS += \
--auto-add-overlay \
- --extra-packages me.leolin.shortcutbadger \
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
android-support-dynamic-animation \
- com.android.vcard \
- dialer-animal-sniffer-annotations-target \
dialer-commons-io-target \
dialer-dagger2-target \
dialer-disklrucache-target \
dialer-gifdecoder-target \
dialer-glide-target \
- dialer-grpc-all-target \
- dialer-grpc-context-target \
- dialer-grpc-core-target \
- dialer-grpc-okhttp-target \
- dialer-grpc-protobuf-lite-target \
- dialer-grpc-stub-target \
dialer-j2objc-annotations-target \
dialer-javax-annotation-api-target \
dialer-javax-inject-target \
- dialer-libshortcutbadger-target \
dialer-mime4j-core-target \
dialer-mime4j-dom-target \
- dialer-okhttp-target \
- dialer-okio-target \
dialer-guava-target \
dialer-glide-target \
dialer-glide-annotation-target \
- dialer-zxing-target \
error_prone_annotations \
jsr305 \
- libbackup \
libphonenumber \
volley \
- org.lineageos.lib.phone
+ org.lineageos.lib.phone \
+ androidx.annotation_annotation \
LOCAL_STATIC_ANDROID_LIBRARIES := \
android-support-core-ui \
@@ -213,11 +152,6 @@ LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
dialer-dagger2-producers:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger-producers/2.7/dagger-producers-2.7.jar \
dialer-glide-annotation:../../../prebuilts/maven_repo/bumptech/com/github/bumptech/glide/annotation/SNAPSHOT/annotation-SNAPSHOT.jar \
dialer-glide-compiler:../../../prebuilts/maven_repo/bumptech/com/github/bumptech/glide/compiler/SNAPSHOT/compiler-SNAPSHOT.jar \
- dialer-grpc-all:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-all/1.0.3/grpc-all-1.0.3.jar \
- dialer-grpc-core:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-core/1.0.3/grpc-core-1.0.3.jar \
- dialer-grpc-okhttp:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-okhttp/1.0.3/grpc-okhttp-1.0.3.jar \
- dialer-grpc-protobuf-lite:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-protobuf-lite/1.0.3/grpc-protobuf-lite-1.0.3.jar \
- dialer-grpc-stub:../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-stub/1.0.3/grpc-stub-1.0.3.jar \
dialer-guava:../../../prebuilts/tools/common/m2/repository/com/google/guava/guava/23.0/guava-23.0.jar \
dialer-javax-annotation-api:../../../prebuilts/tools/common/m2/repository/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2.jar \
dialer-javax-inject:../../../prebuilts/tools/common/m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar \
@@ -319,19 +253,6 @@ include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE := dialer-libshortcutbadger-target
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/me/leolin/ShortcutBadger/1.1.13/ShortcutBadger-1.1.13.jar
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_MODULE := dialer-javax-inject-target
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
@@ -384,124 +305,6 @@ include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE := dialer-grpc-core-target
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-core/1.0.3/grpc-core-1.0.3.jar
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE := dialer-grpc-okhttp-target
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-okhttp/1.0.3/grpc-okhttp-1.0.3.jar
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE := dialer-grpc-protobuf-lite-target
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-protobuf-lite/1.0.3/grpc-protobuf-lite-1.0.3.jar
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE := dialer-grpc-stub-target
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-stub/1.0.3/grpc-stub-1.0.3.jar
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE := dialer-grpc-all-target
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-all/1.0.3/grpc-all-1.0.3.jar
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE := dialer-grpc-context-target
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/io/grpc/grpc-context/1.0.3/grpc-context-1.0.3.jar
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_PREBUILT)
-
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE := dialer-zxing-target
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := ../../../external/zxing/core/core.jar
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE := dialer-okhttp-target
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/com/squareup/okhttp/okhttp/2.7.4/okhttp-2.7.4.jar
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE := dialer-okio-target
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/com/squareup/okio/okio/1.9.0/okio-1.9.0.jar
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_MODULE := dialer-j2objc-annotations-target
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
@@ -515,19 +318,6 @@ include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE := dialer-animal-sniffer-annotations-target
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.jar
-LOCAL_UNINSTALLABLE_MODULE := true
-
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-
LOCAL_MODULE := dialer-rootcomponentprocessor
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
LOCAL_LICENSE_CONDITIONS := notice
@@ -538,11 +328,8 @@ BASE_DIR := java/com/android
LOCAL_SRC_FILES := \
$(call all-java-files-under, $(BASE_DIR)/dialer/rootcomponentgenerator) \
- $(BASE_DIR)/dialer/inject/DialerRootComponent.java \
- $(BASE_DIR)/dialer/inject/DialerVariant.java \
$(BASE_DIR)/dialer/inject/HasRootComponent.java \
$(BASE_DIR)/dialer/inject/IncludeInDialerRoot.java \
- $(BASE_DIR)/dialer/inject/InstallIn.java \
$(BASE_DIR)/dialer/inject/RootComponentGeneratorMetadata.java
LOCAL_STATIC_JAVA_LIBRARIES := \
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 3d9036a6f1c56f0763e9237c7275f83c3f7a972f..9dd5dc7e3acd0e880a815673c9fab1e820f5f42c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -20,10 +20,11 @@
android:versionName="23.0">
+
@@ -62,7 +63,6 @@
-
@@ -83,37 +83,8 @@
android:protectionLevel="signature" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CleanSpec.mk b/CleanSpec.mk
index 960bd75ad4f0a7fa4f169192f002f5ba978b8523..5276ed07cf81a8db56363ead905c88ef60b7322a 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -38,5 +38,5 @@
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
-$(call add-clean-step, (cd packages/apps/Dialer; git clean -f java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java >&2) || true)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/Dialer)
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Dialer_intermediates)
diff --git a/assets/product/AndroidManifest.xml b/assets/product/AndroidManifest.xml
deleted file mode 100644
index d922f6b8e72bd324ff82ea6aea0920ea09403db2..0000000000000000000000000000000000000000
--- a/assets/product/AndroidManifest.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
diff --git a/assets/product/res/drawable-hdpi/product_logo_avatar_anonymous_color_120.png b/assets/product/res/drawable-hdpi/product_logo_avatar_anonymous_color_120.png
deleted file mode 100644
index 70d3011ddde8067ba10afe096677c125ff626fc4..0000000000000000000000000000000000000000
Binary files a/assets/product/res/drawable-hdpi/product_logo_avatar_anonymous_color_120.png and /dev/null differ
diff --git a/assets/product/res/drawable-hdpi/product_logo_avatar_anonymous_white_color_120.png b/assets/product/res/drawable-hdpi/product_logo_avatar_anonymous_white_color_120.png
deleted file mode 100644
index 4068d5aa7a890ffae83f836e398c670a8112f336..0000000000000000000000000000000000000000
Binary files a/assets/product/res/drawable-hdpi/product_logo_avatar_anonymous_white_color_120.png and /dev/null differ
diff --git a/assets/product/res/drawable-mdpi/product_logo_avatar_anonymous_color_120.png b/assets/product/res/drawable-mdpi/product_logo_avatar_anonymous_color_120.png
deleted file mode 100644
index 60d3c3a499eb852beb35fc5b69f4bb5e2b218450..0000000000000000000000000000000000000000
Binary files a/assets/product/res/drawable-mdpi/product_logo_avatar_anonymous_color_120.png and /dev/null differ
diff --git a/assets/product/res/drawable-mdpi/product_logo_avatar_anonymous_white_color_120.png b/assets/product/res/drawable-mdpi/product_logo_avatar_anonymous_white_color_120.png
deleted file mode 100644
index 0524cf0537a0fa62de28307e62afec904e1b1161..0000000000000000000000000000000000000000
Binary files a/assets/product/res/drawable-mdpi/product_logo_avatar_anonymous_white_color_120.png and /dev/null differ
diff --git a/assets/product/res/drawable-xhdpi/product_logo_avatar_anonymous_color_120.png b/assets/product/res/drawable-xhdpi/product_logo_avatar_anonymous_color_120.png
deleted file mode 100644
index ec99ca6b8eaf03b695a81e4f5c7bf9b5131fc9fc..0000000000000000000000000000000000000000
Binary files a/assets/product/res/drawable-xhdpi/product_logo_avatar_anonymous_color_120.png and /dev/null differ
diff --git a/assets/product/res/drawable-xhdpi/product_logo_avatar_anonymous_white_color_120.png b/assets/product/res/drawable-xhdpi/product_logo_avatar_anonymous_white_color_120.png
deleted file mode 100644
index ba27ee76b1bbf422bf0a305517ee9cd732dfef69..0000000000000000000000000000000000000000
Binary files a/assets/product/res/drawable-xhdpi/product_logo_avatar_anonymous_white_color_120.png and /dev/null differ
diff --git a/assets/product/res/drawable-xxhdpi/product_logo_avatar_anonymous_color_120.png b/assets/product/res/drawable-xxhdpi/product_logo_avatar_anonymous_color_120.png
deleted file mode 100644
index 2b009a3da5a62b39d51ea524f1ba561430148459..0000000000000000000000000000000000000000
Binary files a/assets/product/res/drawable-xxhdpi/product_logo_avatar_anonymous_color_120.png and /dev/null differ
diff --git a/assets/product/res/drawable-xxhdpi/product_logo_avatar_anonymous_white_color_120.png b/assets/product/res/drawable-xxhdpi/product_logo_avatar_anonymous_white_color_120.png
deleted file mode 100644
index 2dc724899e10776bbe6feaf62fcb85e8ccac9c7c..0000000000000000000000000000000000000000
Binary files a/assets/product/res/drawable-xxhdpi/product_logo_avatar_anonymous_white_color_120.png and /dev/null differ
diff --git a/assets/product/res/drawable-xxxhdpi/product_logo_avatar_anonymous_color_120.png b/assets/product/res/drawable-xxxhdpi/product_logo_avatar_anonymous_color_120.png
deleted file mode 100644
index 4b111b1caf7a2a01e4c9fc1950b97a15c7ebc6be..0000000000000000000000000000000000000000
Binary files a/assets/product/res/drawable-xxxhdpi/product_logo_avatar_anonymous_color_120.png and /dev/null differ
diff --git a/assets/product/res/drawable-xxxhdpi/product_logo_avatar_anonymous_white_color_120.png b/assets/product/res/drawable-xxxhdpi/product_logo_avatar_anonymous_white_color_120.png
deleted file mode 100644
index 230be8ceb5f71e9da6daa29fc16e92b1a9ee725d..0000000000000000000000000000000000000000
Binary files a/assets/product/res/drawable-xxxhdpi/product_logo_avatar_anonymous_white_color_120.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_arrow_back_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_arrow_back_white_24.png
deleted file mode 100644
index cd1972677699802e4ef9723ea50fcb284f9a2d9e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_arrow_back_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_arrow_drop_down_white_18.png b/assets/quantum/res/drawable-hdpi/quantum_ic_arrow_drop_down_white_18.png
deleted file mode 100644
index 41541bb0d01963961a68459622330e9f2b714ac2..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_arrow_drop_down_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_backspace_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_backspace_white_24.png
deleted file mode 100644
index 136e8b8c1ad90ec9762816e5e65c6ffdaf2a82e2..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_backspace_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_block_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_block_white_24.png
deleted file mode 100644
index 2ccc89d2468d8279116536cb5ef67d0b10cf64b2..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_block_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_bluetooth_audio_grey600_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_bluetooth_audio_grey600_24.png
deleted file mode 100644
index ec2349ca837da9f2a9f15af5ff4406232e2e218c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_bluetooth_audio_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_end_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_end_white_24.png
deleted file mode 100644
index 625b827c44e7d15ce385221dbea4c1733c5ea8f7..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_call_end_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_end_white_36.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_end_white_36.png
deleted file mode 100644
index 51456d3d5d39d2cba1f15ce7d0dec9446a021bbc..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_call_end_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_made_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_made_white_24.png
deleted file mode 100644
index ea6a8ab5f2382f8641bd014b7b0e12b0f4e936e8..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_call_made_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_missed_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_missed_white_24.png
deleted file mode 100644
index f188eb9aa54f0460d80220a12bfd0f1b17f07db4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_call_missed_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_received_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_received_white_24.png
deleted file mode 100644
index ca2ae411a8f33dc64afd772e02183c2f911b2ee1..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_call_received_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_white_18.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_white_18.png
deleted file mode 100644
index 0bdc56be6fd82a6b250287e5015ba078352d3118..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_call_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_white_24.png
deleted file mode 100644
index 4dc5065155baeba719d76845d4398431c289cde0..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_call_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_camera_alt_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_camera_alt_white_24.png
deleted file mode 100644
index 497c88ca82b139d8523f62d272569b97777cdec7..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_camera_alt_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_camera_alt_white_48.png b/assets/quantum/res/drawable-hdpi/quantum_ic_camera_alt_white_48.png
deleted file mode 100644
index c8e69dcebb98d43695027fcc7e39a339c84dda51..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_camera_alt_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_check_black_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_check_black_24.png
deleted file mode 100644
index e802d90aeb092474fe4441d4904624e19e33aa19..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_check_black_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_close_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_close_white_24.png
deleted file mode 100644
index fd3edbd0b7dd97a539b5e1b5d610a4f924d86bb4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_close_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 6acef1745d79cfc2f2295bd51949ba6208e37e98..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_content_copy_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_delete_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_delete_white_24.png
deleted file mode 100644
index 8444f31384d2ae25a63a77d6d516330e0faaf7c4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_delete_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_dialpad_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_dialpad_white_24.png
deleted file mode 100644
index 9037f94e843b77bfd389f4405035d5a89ec017cc..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_dialpad_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_edit_grey600_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_edit_grey600_24.png
deleted file mode 100644
index 4a27b46968dfb9c1e21be542e4cde53786d2d977..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_edit_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_fullscreen_exit_white_48.png b/assets/quantum/res/drawable-hdpi/quantum_ic_fullscreen_exit_white_48.png
deleted file mode 100644
index 159bea7fd8a47a129f63ce2e1208003beb7e49a9..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_fullscreen_exit_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_fullscreen_white_48.png b/assets/quantum/res/drawable-hdpi/quantum_ic_fullscreen_white_48.png
deleted file mode 100644
index 9b8131124d7cb5a540f50e963b1940737574d5cd..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_fullscreen_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_grade_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_grade_white_24.png
deleted file mode 100644
index dbbb9f6f23fd05c9eb00c4fe2eede77393442eae..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_grade_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_hd_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_hd_white_24.png
deleted file mode 100644
index 35bf51a4f17d077b1c2cca3e8aece59232bf21d0..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_hd_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_headset_grey600_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_headset_grey600_24.png
deleted file mode 100644
index e859c2f31a12e5f03a09408e6fa62042610fe349..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_headset_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_history_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_history_white_24.png
deleted file mode 100644
index 485c826fdfc9a03fbfce5306a394a41e5859224f..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_history_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_image_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_image_white_24.png
deleted file mode 100644
index caf34c2d23cd87864a8dc4ed28ce920cf45dae61..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_image_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_info_outline_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_info_outline_white_24.png
deleted file mode 100644
index c7b1113cfef22bcec86ead7ae67be12326276cab..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_info_outline_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_language_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_language_white_24.png
deleted file mode 100644
index b7c8248fb4a5efe8f161303000d4a56975d2d7e5..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_language_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_message_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_message_white_24.png
deleted file mode 100644
index 57177b7c6fb1adb122b1171231a4214bdaa3b3e4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_message_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_more_vert_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_more_vert_white_24.png
deleted file mode 100644
index 58e092b8af11edf122ced427f863850fb160e9f4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_more_vert_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_pause_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_pause_white_24.png
deleted file mode 100644
index 4d2ea05c462291e4a4f8bd30856a25ad33fd420f..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_pause_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_people_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_people_white_24.png
deleted file mode 100644
index 25e443424e436c24bcd819eebb352e421a3dd9b1..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_people_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_person_add_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_person_add_white_24.png
deleted file mode 100644
index 10ae5a70c4fce44cfebe24f4d7d05861ec6c4cbc..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_person_add_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_person_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_person_white_24.png
deleted file mode 100644
index 56708b0bad6c193edb0bb0c7f39897566aff4b20..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_person_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_photo_library_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_photo_library_white_24.png
deleted file mode 100644
index c4a2229e94c965d954eda74042ec0bf0134f5c46..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_photo_library_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_photo_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_photo_white_24.png
deleted file mode 100644
index b414cf5b6881d6ec172d2a7fbd73ada5bbf167ab..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_photo_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_photo_white_48.png b/assets/quantum/res/drawable-hdpi/quantum_ic_photo_white_48.png
deleted file mode 100644
index f9f1defa6df89b5a7a68df6787a4ba799d3bd3b2..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_photo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_play_arrow_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_play_arrow_white_24.png
deleted file mode 100644
index 57c9fa5460323823edb0289c1d15f0f561e0c06e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_play_arrow_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_report_grey600_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_report_grey600_24.png
deleted file mode 100644
index 63edb42b6a6f4faa0d4dc9347dcd2206dc7e2809..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_report_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_report_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_report_white_24.png
deleted file mode 100644
index ff7d95706a5595c99a51378b85abcb4e42532997..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_report_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_report_white_36.png b/assets/quantum/res/drawable-hdpi/quantum_ic_report_white_36.png
deleted file mode 100644
index 057d9c757ce8442295ac20939d8da8038e06415c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_report_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_schedule_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_schedule_white_24.png
deleted file mode 100644
index 4b7caa097c4be949e18265707d8b3e85d54a9247..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_schedule_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_search_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_search_white_24.png
deleted file mode 100644
index bbfbc96cbce0dc0bf2a0b5ac4fa924dab5e34919..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_search_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 5d4ad4b02074ad862b3085da735cbf84268720a9..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_send_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_signal_wifi_4_bar_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_signal_wifi_4_bar_white_24.png
deleted file mode 100644
index 5a53192125cdd7f83ca22a4a7c9d914f6d5e2312..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_signal_wifi_4_bar_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-hdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index 4366bb08273e6a0ffba684885ad1249da7a58807..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_undo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_videocam_off_white_36.png b/assets/quantum/res/drawable-hdpi/quantum_ic_videocam_off_white_36.png
deleted file mode 100644
index f2e461a9f1d0782f3b471f74960aaf7abbdf9d18..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_videocam_off_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_videocam_white_18.png b/assets/quantum/res/drawable-hdpi/quantum_ic_videocam_white_18.png
deleted file mode 100644
index abf478adaa42c582921abe059181c28ccb313c6f..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_videocam_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_voicemail_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_voicemail_white_24.png
deleted file mode 100644
index 03a62e15f90fc0cbfc0d743228e74a8ab242c781..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_voicemail_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_volume_down_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_volume_down_white_24.png
deleted file mode 100644
index e22e92c857e07a0142f8fc6ae0edc715e8658594..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_volume_down_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_volume_up_grey600_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_volume_up_grey600_24.png
deleted file mode 100644
index 49eb8fcc34d9093c8b631e48d4c2750db01aa65e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-hdpi/quantum_ic_volume_up_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_arrow_back_white_24.png b/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_arrow_back_white_24.png
deleted file mode 100644
index f5175576277d2a0f5939c65b3c2d0ac1c5e05c81..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_arrow_back_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 90bf872ac87135bbdfa5c45856a4655fcae4b211..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_content_copy_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index b8d4ce444b9e7fb0d8b634f8dafaef24b47cdc35..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_send_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index 6c8174f3af7694b529152f9265558b6821fedb95..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_undo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_arrow_back_white_24.png b/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_arrow_back_white_24.png
deleted file mode 100644
index 22a1140ae2a3d368b6e07ebc0b975e47245dad94..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_arrow_back_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 01b869a6088bbfdfc6c1ebf3f94678fd4923f033..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_content_copy_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 7933f42f0abdd7de4cb8686cce58fe5c8f19f8b9..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_send_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index b47cef666e3226960304fc0a5968dfd310763a58..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_undo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_arrow_back_white_24.png b/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_arrow_back_white_24.png
deleted file mode 100644
index d858f18e6c2ef050c2d06f205059dc15416f2cde..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_arrow_back_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 831b5249cba1625f478b26526c1fda5bc6acc3ad..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_content_copy_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 4735a7d71186c6c3762b44d2e6686dc793d9e7cf..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_send_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index 6a984c4f16f3a742c34071ff204ecb34907ea9fe..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_undo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_arrow_back_white_24.png b/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_arrow_back_white_24.png
deleted file mode 100644
index 614ad49a3e4fb4c29193b38001841b2486038bcc..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_arrow_back_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 71f3bd68389c741012825cf9647dc19daa17b5c0..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_content_copy_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 4a9e2c24aad3a987694cd596dca35c06e8dccb98..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_send_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index 907911055bd255db665bebd6df0e8ab1895649b6..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_undo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_arrow_back_white_24.png b/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_arrow_back_white_24.png
deleted file mode 100644
index d409b544b7f62950a69d7d1ea58e97ef6c5ea546..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_arrow_back_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 3b2aed29b5c647a34a3c76623c2b654c343af2c0..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_content_copy_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 0167ac8291295daf62b3eadd02196870ee64b9fe..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_send_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index aa7a91943077c4444d60283d9d8fc9980df1a346..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_undo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_arrow_back_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_arrow_back_white_24.png
deleted file mode 100644
index 4ef72eec99423c5d4f83227e34b24835a79f324f..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_arrow_back_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_arrow_drop_down_white_18.png b/assets/quantum/res/drawable-mdpi/quantum_ic_arrow_drop_down_white_18.png
deleted file mode 100644
index 7c1fc3d7cae323f13ef542c927b89eb2c9a4e2a2..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_arrow_drop_down_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_backspace_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_backspace_white_24.png
deleted file mode 100644
index 48863dcdd7d3028362a9cfb0f7987f6bea10735a..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_backspace_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_block_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_block_white_24.png
deleted file mode 100644
index ec1b33f0ea570391cdac55473fc61c0999d53505..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_block_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_bluetooth_audio_grey600_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_bluetooth_audio_grey600_24.png
deleted file mode 100644
index de635e034d8a61e6ba9ef6ce9289515b0ad18ac3..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_bluetooth_audio_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_end_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_end_white_24.png
deleted file mode 100644
index 378272ffc15f451e392eb042f955e24c02630763..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_call_end_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_end_white_36.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_end_white_36.png
deleted file mode 100644
index 625b827c44e7d15ce385221dbea4c1733c5ea8f7..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_call_end_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_made_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_made_white_24.png
deleted file mode 100644
index 9b3cd43803064f22063a8c8effd493a5b1c5d0ce..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_call_made_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_missed_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_missed_white_24.png
deleted file mode 100644
index 42c360b8a263260986f2917e58f903724493d0d7..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_call_missed_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_received_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_received_white_24.png
deleted file mode 100644
index fbc1e86e245a4ca833730772b302dad1fc9874b0..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_call_received_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_white_18.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_white_18.png
deleted file mode 100644
index bd5748575fef5344a13fde180d29be69cbd713c1..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_call_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_white_24.png
deleted file mode 100644
index 77f9de5e3ccb30fb6e580454412c98e2f6c553c1..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_call_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_camera_alt_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_camera_alt_white_24.png
deleted file mode 100644
index e830522008b0a1b1f39fdde1156ff1bae3f955e5..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_camera_alt_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_camera_alt_white_48.png b/assets/quantum/res/drawable-mdpi/quantum_ic_camera_alt_white_48.png
deleted file mode 100644
index be9fb226a53ce5ee4008cfafa0754f42284d51b3..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_camera_alt_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_check_black_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_check_black_24.png
deleted file mode 100644
index 1c14c9c44592e95983dec13ca705ab99a6c54f21..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_check_black_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_close_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_close_white_24.png
deleted file mode 100644
index 3f1f3f8e7dc9284ff090e724df44d73de6ae6809..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_close_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 8ac80b083f62693e17cae7c701b1fb1c2f423b88..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_content_copy_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_delete_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_delete_white_24.png
deleted file mode 100644
index e2268c9bed04cbffef66e3e3b9af7bc6e7124006..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_delete_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_dialpad_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_dialpad_white_24.png
deleted file mode 100644
index 6c405f9ba904d0bab09908acad593ecd8138c556..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_dialpad_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_edit_grey600_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_edit_grey600_24.png
deleted file mode 100644
index f003bc9d334bc81c608d54bce11620626b1fac57..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_edit_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_fullscreen_exit_white_48.png b/assets/quantum/res/drawable-mdpi/quantum_ic_fullscreen_exit_white_48.png
deleted file mode 100644
index 364bad0b843bf6a17478979fb0e66915aa67d818..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_fullscreen_exit_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_fullscreen_white_48.png b/assets/quantum/res/drawable-mdpi/quantum_ic_fullscreen_white_48.png
deleted file mode 100644
index 4423c7ce990e5f02ba52de5f53659b75e907a8b0..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_fullscreen_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_grade_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_grade_white_24.png
deleted file mode 100644
index d85d32461d0b9caeb0c3ba3b6866e66834cbd730..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_grade_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_hd_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_hd_white_24.png
deleted file mode 100644
index 30938fe4d45c25aa976f3ef4b8dfcafae29f9f58..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_hd_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_headset_grey600_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_headset_grey600_24.png
deleted file mode 100644
index 371efd38220c090ddecf112b100a772b32ee3ff4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_headset_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_history_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_history_white_24.png
deleted file mode 100644
index d67647c560782cd1817d8a1fe6466ba924894ae1..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_history_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_image_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_image_white_24.png
deleted file mode 100644
index d17a3faf4f5b69e7723353161478947bc5be5aba..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_image_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_info_outline_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_info_outline_white_24.png
deleted file mode 100644
index 353e064951788a29a64eef439284fd97e904f374..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_info_outline_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_language_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_language_white_24.png
deleted file mode 100644
index 0bc7dfd48026b9d341ad11217046b949625fd402..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_language_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_message_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_message_white_24.png
deleted file mode 100644
index 3072b75699814e04c8328548e87540aac102eba4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_message_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_more_vert_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_more_vert_white_24.png
deleted file mode 100644
index 5ec0116f05c1422360ce1bb5a0f1ef30643cf92e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_more_vert_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_pause_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_pause_white_24.png
deleted file mode 100644
index 2272d478c38ddb2a4b3c592b2eadee8d4e296432..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_pause_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_people_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_people_white_24.png
deleted file mode 100644
index 3f20e755338fc16d940bf389f9caac4170f08826..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_people_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_person_add_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_person_add_white_24.png
deleted file mode 100644
index 38e0a2882afccf81da8107628cdde589dd23fa0d..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_person_add_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_person_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_person_white_24.png
deleted file mode 100644
index f0b1c725da4a3cec7b655a06cb3a3c1eba39bdeb..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_person_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_photo_library_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_photo_library_white_24.png
deleted file mode 100644
index 02ef4cdb0080f74e19c773d9b7627863b4a4dfb1..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_photo_library_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_photo_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_photo_white_24.png
deleted file mode 100644
index d474bd577d00d2aa045685f38b1729e4b2c314e2..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_photo_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_photo_white_48.png b/assets/quantum/res/drawable-mdpi/quantum_ic_photo_white_48.png
deleted file mode 100644
index 2642b9e09ec00be308649f62d9323f22ae2b6c6c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_photo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_play_arrow_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_play_arrow_white_24.png
deleted file mode 100644
index c61e948bbf7441fd3825bdeffd615dfe30964dc8..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_play_arrow_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_report_grey600_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_report_grey600_24.png
deleted file mode 100644
index 88fa79443b8ea56798e16df6f37c3a5bdf254770..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_report_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_report_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_report_white_24.png
deleted file mode 100644
index ac0f3948db014ae6862b315da6118c3bc840121e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_report_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_report_white_36.png b/assets/quantum/res/drawable-mdpi/quantum_ic_report_white_36.png
deleted file mode 100644
index ff7d95706a5595c99a51378b85abcb4e42532997..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_report_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_schedule_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_schedule_white_24.png
deleted file mode 100644
index f69736faa6d1f43a99a7d82501d9922b353ca365..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_schedule_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_search_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_search_white_24.png
deleted file mode 100644
index faefc59c8e574774fda7a43bcb2214bd109eaa1c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_search_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index b58afb0b49f986eb5f42a7f80a97a5c97a94b9f1..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_send_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_signal_wifi_4_bar_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_signal_wifi_4_bar_white_24.png
deleted file mode 100644
index dd5a42f55c338da20e734b1bbaa86d7b53ea4ea0..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_signal_wifi_4_bar_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-mdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index b67f6a9116b4933c2d6322e496e22cf7355f2bc4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_undo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_videocam_off_white_36.png b/assets/quantum/res/drawable-mdpi/quantum_ic_videocam_off_white_36.png
deleted file mode 100644
index aaf5ac2085f43be7db35a99adef0618d0b26b417..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_videocam_off_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_videocam_white_18.png b/assets/quantum/res/drawable-mdpi/quantum_ic_videocam_white_18.png
deleted file mode 100644
index 1dafd4927617f77975c9f65736120872f7cfee7a..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_videocam_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_voicemail_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_voicemail_white_24.png
deleted file mode 100644
index e5aa7db0557bf06ee521c54d2b92e2dbbf402e3e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_voicemail_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_volume_down_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_volume_down_white_24.png
deleted file mode 100644
index 10992ed70c8bf16a5d9487aeb6ac4fe1ebb46dd4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_volume_down_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_volume_up_grey600_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_volume_up_grey600_24.png
deleted file mode 100644
index d6cea3667acb615398f1b2d9157d66034594067c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-mdpi/quantum_ic_volume_up_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_arrow_back_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_arrow_back_white_24.png
deleted file mode 100644
index 832f5a36172308b2c53cefe5098f828b0b4eae53..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_arrow_back_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_arrow_drop_down_white_18.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_arrow_drop_down_white_18.png
deleted file mode 100644
index 4c6076df77463404d7163c9929bad5798576c49b..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_arrow_drop_down_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_backspace_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_backspace_white_24.png
deleted file mode 100644
index ec5412bd8a66a3c8512d858c1f8090935a97b0ab..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_backspace_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_block_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_block_white_24.png
deleted file mode 100644
index 7aba97b659c26a5149108fdae7ec13343dc82bf3..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_block_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_bluetooth_audio_grey600_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_bluetooth_audio_grey600_24.png
deleted file mode 100644
index eea1bbf04b00cda6609939c4abacc4a5fecb881a..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_bluetooth_audio_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_end_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_end_white_24.png
deleted file mode 100644
index a4fe6889d159cac861cac4f885ae3ec28cd9ca44..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_end_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_end_white_36.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_end_white_36.png
deleted file mode 100644
index e1831d7afd086dcfc741a496d058af3d0308da99..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_end_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_made_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_made_white_24.png
deleted file mode 100644
index 7fe69410515d6b5cfd7d10ed0391309767277b01..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_made_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_missed_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_missed_white_24.png
deleted file mode 100644
index dd64489aae8f16d87a7fcc57270cf88bf7a8574b..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_missed_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_received_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_received_white_24.png
deleted file mode 100644
index 807308d9deec4f180ddc28d9639a905ce00e8c01..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_received_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_white_18.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_white_18.png
deleted file mode 100644
index 4dc5065155baeba719d76845d4398431c289cde0..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_white_24.png
deleted file mode 100644
index ef45e933a99b720cc5f6127e6da22bc2fa679244..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_camera_alt_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_camera_alt_white_24.png
deleted file mode 100644
index be9fb226a53ce5ee4008cfafa0754f42284d51b3..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_camera_alt_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_camera_alt_white_48.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_camera_alt_white_48.png
deleted file mode 100644
index 777658e95515ca47c9852d00621e2e6d45abc5c7..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_camera_alt_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_check_black_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_check_black_24.png
deleted file mode 100644
index 64a4944f7531ab9fb745fd34dd00c778cff1573f..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_check_black_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_close_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_close_white_24.png
deleted file mode 100644
index 59c2fae589bcddcdd14eb6548cf819a2a5249dca..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_close_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index ca625985998d6d9af79db16cf01f8701b0acfd46..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_content_copy_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_delete_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_delete_white_24.png
deleted file mode 100644
index 484260a9714419020b6cb2e61845b3c948e2e014..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_delete_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_dialpad_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_dialpad_white_24.png
deleted file mode 100644
index 0e89f6c74b06fc9b820f7c83cf06157c27acaae8..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_dialpad_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_edit_grey600_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_edit_grey600_24.png
deleted file mode 100644
index b5b3a243c7b8f37fdb05367aa01cb798adb3a080..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_edit_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_fullscreen_exit_white_48.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_fullscreen_exit_white_48.png
deleted file mode 100644
index ef360fe40c758ab7e8d3e168e6c2ef013515646a..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_fullscreen_exit_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_fullscreen_white_48.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_fullscreen_white_48.png
deleted file mode 100644
index c1dcfb29024fc0eec6fb8d2135e295b5205f1323..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_fullscreen_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_grade_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_grade_white_24.png
deleted file mode 100644
index ce1f670744506ee2d38e9512c2a83002646bfb26..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_grade_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_hd_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_hd_white_24.png
deleted file mode 100644
index 4c954d86f81d25f57447ed088b5e0974b94da063..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_hd_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_headset_grey600_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_headset_grey600_24.png
deleted file mode 100644
index f7dbee156ba558ba6dbb0993fda637c525ffa56d..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_headset_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_history_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_history_white_24.png
deleted file mode 100644
index 3e73b49ee59403f2d1db35397b4a38cd06f78829..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_history_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_image_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_image_white_24.png
deleted file mode 100644
index 07ee6bcf11eaafcf22b38666de2725ebe83839d8..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_image_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_info_outline_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_info_outline_white_24.png
deleted file mode 100644
index c571b2e3e776762bb90733f664f9d66e2c7f321c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_info_outline_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_language_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_language_white_24.png
deleted file mode 100644
index eeaab46c02290c996f09409b821b526b3265c9bb..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_language_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_message_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_message_white_24.png
deleted file mode 100644
index 763767b4f6f4e3c64cdaabcd7bfd2197363812d5..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_message_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_more_vert_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_more_vert_white_24.png
deleted file mode 100644
index 96e5d4321cd226ab9384a46b0788f53128c2e0bd..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_more_vert_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_pause_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_pause_white_24.png
deleted file mode 100644
index f49aed757118a941b567629ec217cde1aaf257e8..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_pause_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_people_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_people_white_24.png
deleted file mode 100644
index 715b49a3c80bde9768661e90b0c900bd9bd21354..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_people_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_person_add_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_person_add_white_24.png
deleted file mode 100644
index 7e7c289d4971337ec3693780d13b26c146c58a5f..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_person_add_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_person_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_person_white_24.png
deleted file mode 100644
index aea15f0be51cfef4c218f7362a2ab739ac04245b..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_person_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_library_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_library_white_24.png
deleted file mode 100644
index 4bd2898a83995e88bee0c8105c402a4f9f3a30de..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_library_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_white_24.png
deleted file mode 100644
index 2642b9e09ec00be308649f62d9323f22ae2b6c6c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_white_48.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_white_48.png
deleted file mode 100644
index 2ffdb55f264ecd3610f90890f8202f93c00f72e1..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_play_arrow_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_play_arrow_white_24.png
deleted file mode 100644
index a3c80e73daa9dc4b85cddf9421b7127a4e18ac5d..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_play_arrow_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_report_grey600_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_report_grey600_24.png
deleted file mode 100644
index 9b9d49fe604185bcfe7d40ac18a5d08814194894..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_report_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_24.png
deleted file mode 100644
index 74fc594aab866a8558bf2afe428907fd360e36b1..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_36.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_36.png
deleted file mode 100644
index 26b9172e8f92ec58982fc5db164bd8f39ac2e022..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_schedule_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_schedule_white_24.png
deleted file mode 100644
index 1749ea2758b23823affee62e5ea08d2e899023ec..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_schedule_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_search_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_search_white_24.png
deleted file mode 100644
index bfc3e39394246b221f7d4617aa5600a6406aa7c7..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_search_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index ef59e77678dbd3f5d866bca9058b6e90cb8d6098..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_send_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_signal_wifi_4_bar_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_signal_wifi_4_bar_white_24.png
deleted file mode 100644
index 28b5afa9d441f7e58d63d0797638eeb10584e0ae..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_signal_wifi_4_bar_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index a5e719cdfb7e062d5adc218d37ef22e5db86e59f..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_undo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_videocam_off_white_36.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_videocam_off_white_36.png
deleted file mode 100644
index 69565f2c75b69277ed31474e97954ea985a400c9..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_videocam_off_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_videocam_white_18.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_videocam_white_18.png
deleted file mode 100644
index d83e0d50c3dd1aa384568f658f815b35819462a0..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_videocam_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_voicemail_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_voicemail_white_24.png
deleted file mode 100644
index 59126d7066f7b20a94c169f329275153accfbe7d..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_voicemail_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_volume_down_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_volume_down_white_24.png
deleted file mode 100644
index 2621bc15d3c7eb92a1bfbb1a8c2d59b31196ab62..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_volume_down_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_volume_up_grey600_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_volume_up_grey600_24.png
deleted file mode 100644
index a45093ff79e1ff08764467cd9cce9c1873499255..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xhdpi/quantum_ic_volume_up_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_arrow_back_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_arrow_back_white_24.png
deleted file mode 100644
index 32a6d91ce8618ff42524d9e075451a13b2945f87..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_arrow_back_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_arrow_drop_down_white_18.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_arrow_drop_down_white_18.png
deleted file mode 100644
index 2609ae1341e844fa6b3fecad8d260a1709fc2867..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_arrow_drop_down_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_backspace_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_backspace_white_24.png
deleted file mode 100644
index f6a90accffbb4b543e8f8022630636650d0f6c73..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_backspace_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_block_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_block_white_24.png
deleted file mode 100644
index fddfa54b85576986db9096ff67fc768ee70b2bd3..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_block_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_bluetooth_audio_grey600_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_bluetooth_audio_grey600_24.png
deleted file mode 100644
index 99f57c12a8ad3786645f6d69a9e935e8d5eeb3e3..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_bluetooth_audio_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_end_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_end_white_24.png
deleted file mode 100644
index e1831d7afd086dcfc741a496d058af3d0308da99..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_end_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_end_white_36.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_end_white_36.png
deleted file mode 100644
index 13ffc2ad75f087cc182d8794770507a7fcfd0a65..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_end_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_made_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_made_white_24.png
deleted file mode 100644
index ae471c9fc5382d6ac8744e2b475b2867da7438ce..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_made_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_missed_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_missed_white_24.png
deleted file mode 100644
index 2374dc5a1158455c8a7ccfc02d821e2144e9952b..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_missed_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_received_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_received_white_24.png
deleted file mode 100644
index 58421114fd7acefd4713ed01e079a58747d96a7e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_received_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_white_18.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_white_18.png
deleted file mode 100644
index 6f4dcea1f3cdf34726c7e881e97a8b40d985ce69..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_white_24.png
deleted file mode 100644
index 90ead2e4551b165530bd2430b3d69c34263c5c4e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_camera_alt_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_camera_alt_white_24.png
deleted file mode 100644
index c8e69dcebb98d43695027fcc7e39a339c84dda51..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_camera_alt_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_camera_alt_white_48.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_camera_alt_white_48.png
deleted file mode 100644
index a4e7aea72dad80db6724ac6e961b8d942a7dd03e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_camera_alt_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_check_black_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_check_black_24.png
deleted file mode 100644
index b26a2c05e3f261641734c91aef9322830ab10daf..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_check_black_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_close_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_close_white_24.png
deleted file mode 100644
index d5fd569aa3cc5c0fb18963ffa6a8afccb620ed92..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_close_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index c480ba78fe464a36d37d654c56808a5531e0ae5d..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_content_copy_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_delete_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_delete_white_24.png
deleted file mode 100644
index 603f28cbd1829c04d5efd2720d58e7c72ab72b94..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_delete_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_dialpad_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_dialpad_white_24.png
deleted file mode 100644
index 175000510d4d2010d38fe000b55e9121f01a6c1c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_dialpad_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_edit_grey600_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_edit_grey600_24.png
deleted file mode 100644
index f1f9ffce89e69b760ea6b8be14ddf522260aeb3c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_edit_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_fullscreen_exit_white_48.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_fullscreen_exit_white_48.png
deleted file mode 100644
index b7f4133fd978de01cb1e62b660d402ec92e3e4da..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_fullscreen_exit_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_fullscreen_white_48.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_fullscreen_white_48.png
deleted file mode 100644
index a0a1b4d4f3c5213f8803300e4428968bc037098f..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_fullscreen_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_grade_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_grade_white_24.png
deleted file mode 100644
index 44f3fdf213387353616c3240dbbdc993025c00b0..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_grade_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_hd_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_hd_white_24.png
deleted file mode 100644
index dd08bbbecc5141dffea4d9f61f99ec24733e55bd..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_hd_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_headset_grey600_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_headset_grey600_24.png
deleted file mode 100644
index de1739bf4f1aefc22b12b12b0ab4b31ba94ab00b..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_headset_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_history_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_history_white_24.png
deleted file mode 100644
index 1358a129cf1877b517c7c58bbf225e8b1d75cf75..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_history_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_image_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_image_white_24.png
deleted file mode 100644
index 0059339349d40da0519cb0511b31ad64c39776d4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_image_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_info_outline_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_info_outline_white_24.png
deleted file mode 100644
index c41a5fcffa8c4dc3684252fbfd61623837e19d50..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_info_outline_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_language_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_language_white_24.png
deleted file mode 100644
index d4b55183c6522ef57de79fe99ecc49fccb33f3ef..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_language_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_message_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_message_white_24.png
deleted file mode 100644
index 0a79824b8ffdb6ef7da089b69866c9ecdd395c19..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_message_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_more_vert_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_more_vert_white_24.png
deleted file mode 100644
index 801ad890952ac54399d3950edef747f4bc518dff..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_more_vert_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_pause_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_pause_white_24.png
deleted file mode 100644
index 7192ad487eacb4f8f530ebe2878760e2528fbc5f..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_pause_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_people_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_people_white_24.png
deleted file mode 100644
index 7f0b7e903be85232eb4e5bf507062b025dfdd970..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_people_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_person_add_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_person_add_white_24.png
deleted file mode 100644
index 8f744f0391a2312f76d07c0668754fe83e346710..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_person_add_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_person_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_person_white_24.png
deleted file mode 100644
index 184f7418d50ec4554539137f1abcaa3170b4643c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_person_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_library_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_library_white_24.png
deleted file mode 100644
index 497479291e69adaac3e2ebfbcfd9a1d788872368..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_library_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_white_24.png
deleted file mode 100644
index f9f1defa6df89b5a7a68df6787a4ba799d3bd3b2..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_white_48.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_white_48.png
deleted file mode 100644
index 3fe5c5ceb684831ab06bcc40d681890a3eeaa63c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_play_arrow_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_play_arrow_white_24.png
deleted file mode 100644
index 547ef30aacdebbd5bc27a3831971aa49be8813f7..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_play_arrow_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_grey600_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_grey600_24.png
deleted file mode 100644
index e0721e63b338b13d054a9860d5025e48da45b23d..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_24.png
deleted file mode 100644
index 26b9172e8f92ec58982fc5db164bd8f39ac2e022..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_36.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_36.png
deleted file mode 100644
index 2040c36d57c73d78ac8df7e70d36b149e56c69f1..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_schedule_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_schedule_white_24.png
deleted file mode 100644
index 96df1fbac0017f09397a81ee4ccbe624d6c16a6a..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_schedule_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_search_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_search_white_24.png
deleted file mode 100644
index abbb9895108b56aedde011bdde5eb8ddaff78838..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_search_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 0c5256413cf501ce0e6d05d6fd8c5df7b5f46424..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_send_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_signal_wifi_4_bar_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_signal_wifi_4_bar_white_24.png
deleted file mode 100644
index f4105ec8d1f43bd105a546e34de8915509026df9..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_signal_wifi_4_bar_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index 8745f69ffc8b4b224b564871e1dce2bd87694240..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_undo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_videocam_off_white_36.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_videocam_off_white_36.png
deleted file mode 100644
index ff84832956021c24249fcf8aa422ac09b0a2605f..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_videocam_off_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_videocam_white_18.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_videocam_white_18.png
deleted file mode 100644
index 49562a6408e231ec706cfa08622c26caaf9392f4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_videocam_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_voicemail_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_voicemail_white_24.png
deleted file mode 100644
index 28b8e936a05146771d8171de680a7cdefe0c9b2a..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_voicemail_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_volume_down_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_volume_down_white_24.png
deleted file mode 100644
index 5eb8b671f26bfc5e7cad37fef69ca2cc73210913..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_volume_down_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_volume_up_grey600_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_volume_up_grey600_24.png
deleted file mode 100644
index 413b386524c487ef4c7da687a20c1a7478be0009..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxhdpi/quantum_ic_volume_up_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_arrow_back_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_arrow_back_white_24.png
deleted file mode 100644
index e27034d67874687a900f0f960c662e94cd633e2a..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_arrow_back_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_arrow_drop_down_white_18.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_arrow_drop_down_white_18.png
deleted file mode 100644
index c19c19d2bd2709454a29d9140d5d0a1ff51302c4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_arrow_drop_down_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_backspace_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_backspace_white_24.png
deleted file mode 100644
index 88131b9aff5785fe07ab1d2a7c6a082de3258c4c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_backspace_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_block_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_block_white_24.png
deleted file mode 100644
index 0378d1bedc24bb08af58285275baf89db6d2c26b..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_block_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_bluetooth_audio_grey600_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_bluetooth_audio_grey600_24.png
deleted file mode 100644
index 1595be1697ec2ed02d668555b234fd2b36e42d98..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_bluetooth_audio_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_end_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_end_white_24.png
deleted file mode 100644
index 8801d0ded431c21d4d6e3e092e56d540b699962f..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_end_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_end_white_36.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_end_white_36.png
deleted file mode 100644
index c8099a1a15dda6c065cbcf3f5a51c3cf4f25fd25..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_end_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_made_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_made_white_24.png
deleted file mode 100644
index 844ef86a07eb6f16a6b8cf0ece63597a6cbf4232..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_made_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_missed_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_missed_white_24.png
deleted file mode 100644
index b1321a9aed8c39cb3b56979475c93b332809e5ac..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_missed_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_received_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_received_white_24.png
deleted file mode 100644
index 417999c85a41e3c179c644fbe16a476f68cca602..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_received_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_white_18.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_white_18.png
deleted file mode 100644
index 90ead2e4551b165530bd2430b3d69c34263c5c4e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_white_24.png
deleted file mode 100644
index b0e020573d37e8b4acac23fcd3e01cc39531b5e4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_camera_alt_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_camera_alt_white_24.png
deleted file mode 100644
index 777658e95515ca47c9852d00621e2e6d45abc5c7..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_camera_alt_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_camera_alt_white_48.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_camera_alt_white_48.png
deleted file mode 100644
index f2fe54bd511e7b6c0303ab3392f12d0fb20359bf..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_camera_alt_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_check_black_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_check_black_24.png
deleted file mode 100644
index 2f6d6386de9510fa6dd8c83cbb61a6f2e0fab9b2..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_check_black_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_close_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_close_white_24.png
deleted file mode 100644
index dac4e9c18ef98179c552d9c48dbd6909b12035cc..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_close_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index f0ea085c9084104404a807038e5f7bea6d5cdccc..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_content_copy_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_delete_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_delete_white_24.png
deleted file mode 100644
index c582dc2a49d403490ae9efd4ae1f1e4f67593a72..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_delete_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_dialpad_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_dialpad_white_24.png
deleted file mode 100644
index eb4307aeb23f4d83fa3a18edaf288eb3ffd80ee4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_dialpad_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_edit_grey600_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_edit_grey600_24.png
deleted file mode 100644
index a61298dbe67fbb892a057010a41007bda7bcb05b..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_edit_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_fullscreen_exit_white_48.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_fullscreen_exit_white_48.png
deleted file mode 100644
index b47b3f8bdbfbd9b67d208988c6856b0bdc3faefa..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_fullscreen_exit_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_fullscreen_white_48.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_fullscreen_white_48.png
deleted file mode 100644
index ea9f18ae63d133b7b3214e6f6e9addc7a1696884..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_fullscreen_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_grade_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_grade_white_24.png
deleted file mode 100644
index 31000c60a4a4015880d4b185e7a7da8ac67eed29..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_grade_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_hd_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_hd_white_24.png
deleted file mode 100644
index 3f87b882eeac671c7921584117e1aa3ee7287fa3..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_hd_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_headset_grey600_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_headset_grey600_24.png
deleted file mode 100644
index e968fa7d12c1e085b26c3f0501c3cd584fde60c0..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_headset_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_history_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_history_white_24.png
deleted file mode 100644
index 5b99ef6550883c3f059f45a0b7a790eda395ed0f..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_history_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_image_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_image_white_24.png
deleted file mode 100644
index f62cee6aa85d1ba6d8b2a2d5b4ed98c73a3acf8e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_image_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_info_outline_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_info_outline_white_24.png
deleted file mode 100644
index 3a82cab3b4f2cfe77333cee6121d867353753d5e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_info_outline_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_language_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_language_white_24.png
deleted file mode 100644
index a576ac7a51813ec54dcfdaecbae41fa0e14ceed4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_language_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_message_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_message_white_24.png
deleted file mode 100644
index fa7c17ac45923f50462b3b1f5e016348852fe206..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_message_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_more_vert_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_more_vert_white_24.png
deleted file mode 100644
index 7a97f4cb70677e93f1f7b3fec962b15db381d5ce..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_more_vert_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_pause_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_pause_white_24.png
deleted file mode 100644
index 660ac658589240d14b259e91e6864dc8a8f3665d..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_pause_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_people_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_people_white_24.png
deleted file mode 100644
index f52bd1ae594034b9b2b57186bea1f86b820900ab..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_people_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_person_add_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_person_add_white_24.png
deleted file mode 100644
index 2fa2cca80cef9e50a0ebf4ec94b8f3f87c732520..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_person_add_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_person_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_person_white_24.png
deleted file mode 100644
index 33d40d8b6246e4f62c3791c4ea59525ec5f2191c..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_person_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_library_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_library_white_24.png
deleted file mode 100644
index 8627f4276787a7a84ff723d84e3951d983c2b4c5..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_library_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_white_24.png
deleted file mode 100644
index 2ffdb55f264ecd3610f90890f8202f93c00f72e1..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_white_48.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_white_48.png
deleted file mode 100644
index 7d5091ded87b138183db10e24afabf288766a598..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_play_arrow_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_play_arrow_white_24.png
deleted file mode 100644
index be5c062b5feeba5eff766b2fdae6dccb60cb4b0e..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_play_arrow_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_grey600_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_grey600_24.png
deleted file mode 100644
index 29ac881a906677400f46ba7630474b220892dec5..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_24.png
deleted file mode 100644
index 023a56e76aae71794686a4084244f75261f5e884..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_36.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_36.png
deleted file mode 100644
index 1912789d2fee25431973e5ce6b4e602861d4a00a..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_schedule_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_schedule_white_24.png
deleted file mode 100644
index 19390a8bd2da8b506fb74b22ef4579001c3b76bf..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_schedule_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_search_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_search_white_24.png
deleted file mode 100644
index dd5adfc7f990333743a5f3b34f09098c1377a4a4..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_search_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 9dfa888c15b52986f347a608c490897fecaca6d5..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_send_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_signal_wifi_4_bar_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_signal_wifi_4_bar_white_24.png
deleted file mode 100644
index 58a4f9c9455a37893cf8ec0313682a6fe931d082..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_signal_wifi_4_bar_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index 6d703c6ae2541f6f34251717bc04379cb3c203c5..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_undo_white_48.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_videocam_off_white_36.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_videocam_off_white_36.png
deleted file mode 100644
index 7a915c30dbf5c7ebb61fbd05c0c1981d3e46ba07..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_videocam_off_white_36.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_videocam_white_18.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_videocam_white_18.png
deleted file mode 100644
index 44c28e2f2830f927973beaa3a143ddfe439f20ed..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_videocam_white_18.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_voicemail_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_voicemail_white_24.png
deleted file mode 100644
index 820ff5066b5118de9972bed7a063b7da807d4ca6..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_voicemail_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_volume_down_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_volume_down_white_24.png
deleted file mode 100644
index 4ab55abbd148cd347a99dd1231b2a5133be7ceec..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_volume_down_white_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_volume_up_grey600_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_volume_up_grey600_24.png
deleted file mode 100644
index 429dc02df002905271543ae7b7ccdba102fbc4ae..0000000000000000000000000000000000000000
Binary files a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_volume_up_grey600_24.png and /dev/null differ
diff --git a/assets/quantum/res/drawable/quantum_ic_arrow_drop_down_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_arrow_drop_down_vd_theme_24.xml
deleted file mode 100644
index 0c1c4f0eb4646d643ff166ec4c9adfe7bba26211..0000000000000000000000000000000000000000
--- a/assets/quantum/res/drawable/quantum_ic_arrow_drop_down_vd_theme_24.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/assets/quantum/res/drawable/quantum_ic_backspace_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_backspace_vd_theme_24.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eda1a8ed1775dedb8856296171ce6a9be945717a
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_backspace_vd_theme_24.xml
@@ -0,0 +1,13 @@
+
+
+
+
diff --git a/assets/quantum/res/drawable/quantum_ic_call_split_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_call_split_vd_theme_24.xml
new file mode 100644
index 0000000000000000000000000000000000000000..85466082eba1902f49f48e3c57fcbd54d524b051
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_call_split_vd_theme_24.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/assets/quantum/res/drawable/quantum_ic_clock_filled_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_clock_filled_vd_theme_24.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a9b1c39efd7a22259312914f2798ffecc83d4c25
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_clock_filled_vd_theme_24.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/assets/quantum/res/drawable/quantum_ic_delete_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_delete_vd_theme_24.xml
index 900b559e35bed88770c8844dcfe68866950c5653..4c7f08d5adda45c283ccc1aab83e6f1ac6b69fbf 100644
--- a/assets/quantum/res/drawable/quantum_ic_delete_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_delete_vd_theme_24.xml
@@ -22,4 +22,4 @@
-
\ No newline at end of file
+
diff --git a/assets/quantum/res/drawable/quantum_ic_edit_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_edit_vd_theme_24.xml
new file mode 100644
index 0000000000000000000000000000000000000000..85f22eef3987da92bad0e29f888512f5cba5d7cd
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_edit_vd_theme_24.xml
@@ -0,0 +1,13 @@
+
+
+
+
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
deleted file mode 100644
index df4dc3299ece2602518b90816724daa67f2656f3..0000000000000000000000000000000000000000
--- a/assets/quantum/res/drawable/quantum_ic_error_outline_vd_theme_36.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/quantum/res/drawable/quantum_ic_exit_to_app_flip_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_exit_to_app_flip_vd_theme_24.xml
deleted file mode 100644
index 3dfbf2b0e7323cec6ce769874bcf41e1deca2775..0000000000000000000000000000000000000000
--- a/assets/quantum/res/drawable/quantum_ic_exit_to_app_flip_vd_theme_24.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/quantum/res/drawable/quantum_ic_fiber_manual_record_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_fiber_manual_record_vd_theme_24.xml
deleted file mode 100644
index 21993c316f5cde39c9f377099d1de2567bdb1d85..0000000000000000000000000000000000000000
--- a/assets/quantum/res/drawable/quantum_ic_fiber_manual_record_vd_theme_24.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
diff --git a/assets/quantum/res/drawable/quantum_ic_fullscreen_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_fullscreen_vd_theme_24.xml
deleted file mode 100644
index baa88f452695fcd738618237e8686a63bf091a83..0000000000000000000000000000000000000000
--- a/assets/quantum/res/drawable/quantum_ic_fullscreen_vd_theme_24.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
diff --git a/assets/quantum/res/drawable/quantum_ic_image_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_image_vd_theme_24.xml
new file mode 100644
index 0000000000000000000000000000000000000000..206d49c43e3ee5c0e9ec65046e1b48244106979e
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_image_vd_theme_24.xml
@@ -0,0 +1,13 @@
+
+
+
+
diff --git a/assets/quantum/res/drawable/quantum_ic_my_location_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_my_location_vd_theme_24.xml
deleted file mode 100644
index b13816e395a48100426deb1c72de313a09f0518e..0000000000000000000000000000000000000000
--- a/assets/quantum/res/drawable/quantum_ic_my_location_vd_theme_24.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
diff --git a/assets/quantum/res/drawable/quantum_ic_people_outline_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_people_outline_vd_theme_24.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e6cf13d66710603cb637b64a394ccdcac3350329
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_people_outline_vd_theme_24.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/assets/quantum/res/drawable/quantum_ic_people_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_people_vd_theme_24.xml
index c31e20dce2858645f27d126ff62e6116eb10bc7e..5e37d8534f7f7450fc7b4588a992ac7a86927ce3 100644
--- a/assets/quantum/res/drawable/quantum_ic_people_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_people_vd_theme_24.xml
@@ -1,25 +1,14 @@
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
-
\ No newline at end of file
+ android:pathData="M16 17V19H2V17S2 13 9 13 16 17 16 17M12.5 7.5A3.5 3.5 0 1 0 9 11A3.5 3.5 0 0 0 12.5 7.5M15.94 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13M15 4A3.39 3.39 0 0 0 13.07 4.59A5 5 0 0 1 13.07 10.41A3.39 3.39 0 0 0 15 11A3.5 3.5 0 0 0 15 4Z" />
+
diff --git a/assets/quantum/res/drawable/quantum_ic_perm_phone_msg_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_perm_phone_msg_vd_theme_24.xml
deleted file mode 100644
index 68735dd0da5d0b510f14a538fce65cccd8bc1344..0000000000000000000000000000000000000000
--- a/assets/quantum/res/drawable/quantum_ic_perm_phone_msg_vd_theme_24.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
diff --git a/assets/quantum/res/drawable/quantum_ic_person_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_person_vd_theme_24.xml
new file mode 100644
index 0000000000000000000000000000000000000000..545079988f0791ce42cbd745958dfdde459e0b1d
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_person_vd_theme_24.xml
@@ -0,0 +1,13 @@
+
+
+
+
diff --git a/assets/quantum/res/drawable/quantum_ic_query_builder_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_query_builder_vd_theme_24.xml
deleted file mode 100644
index 54fd545378f3ca448bfd0abb9539451037c706b8..0000000000000000000000000000000000000000
--- a/assets/quantum/res/drawable/quantum_ic_query_builder_vd_theme_24.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
diff --git a/assets/quantum/res/drawable/quantum_ic_schedule_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_schedule_vd_theme_24.xml
deleted file mode 100644
index 54fd545378f3ca448bfd0abb9539451037c706b8..0000000000000000000000000000000000000000
--- a/assets/quantum/res/drawable/quantum_ic_schedule_vd_theme_24.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
diff --git a/assets/quantum/res/drawable/quantum_ic_security_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_security_vd_theme_24.xml
deleted file mode 100644
index 36ea6ebc76d38a4a4c9f91b55bd737e71a7f91c8..0000000000000000000000000000000000000000
--- a/assets/quantum/res/drawable/quantum_ic_security_vd_theme_24.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
diff --git a/assets/quantum/res/drawable/quantum_ic_send_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_send_vd_theme_24.xml
new file mode 100644
index 0000000000000000000000000000000000000000..93c6feb1a9446a8223f28e59440a6b5075833bf1
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_send_vd_theme_24.xml
@@ -0,0 +1,13 @@
+
+
+
+
diff --git a/assets/quantum/res/drawable/quantum_ic_star_outline_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_star_outline_vd_theme_24.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dca4893474681c2b3e281e4e4b1fbd8ec7d4b2e8
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_star_outline_vd_theme_24.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/assets/quantum/res/drawable/quantum_ic_thumb_down_grey600_24.xml b/assets/quantum/res/drawable/quantum_ic_thumb_down_grey600_24.xml
deleted file mode 100644
index fec2563e4c4c0e31fa99e1583fc83e8f7f839c43..0000000000000000000000000000000000000000
--- a/assets/quantum/res/drawable/quantum_ic_thumb_down_grey600_24.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
diff --git a/assets/quantum/res/drawable/quantum_ic_thumb_up_grey600_24.xml b/assets/quantum/res/drawable/quantum_ic_thumb_up_grey600_24.xml
deleted file mode 100644
index 06a4cbd3e66bd10653cd0e0a50f4f84ef7d8cde7..0000000000000000000000000000000000000000
--- a/assets/quantum/res/drawable/quantum_ic_thumb_up_grey600_24.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
diff --git a/assets/quantum/res/drawable/quantum_ic_volume_down_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_volume_down_vd_theme_24.xml
new file mode 100644
index 0000000000000000000000000000000000000000..936da2764aadd5741173928515c85aad1fe3a1d5
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_volume_down_vd_theme_24.xml
@@ -0,0 +1,13 @@
+
+
+
+
diff --git a/java/com/android/bubble/Bubble.java b/java/com/android/bubble/Bubble.java
deleted file mode 100644
index 1b853cf49ae04fbb26d8fcb643eb888b81647397..0000000000000000000000000000000000000000
--- a/java/com/android/bubble/Bubble.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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
- */
-
-package com.android.bubble;
-
-import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import java.util.List;
-
-/**
- * Creates and manages a bubble window from information in a {@link BubbleInfo}. Before creating, be
- * sure to check whether bubbles may be shown using {@code Settings.canDrawOverlays(context)} and
- * request permission if necessary
- */
-public interface Bubble {
-
- /**
- * Make the bubble visible. Will show a short entrance animation as it enters. If the bubble is
- * already showing this method does nothing.
- */
- void show();
-
- /** Hide the bubble. */
- void hide();
-
- /** Returns whether the bubble is currently visible */
- boolean isVisible();
-
- /** Returns whether the bubble is currently dismissed */
- boolean isDismissed();
-
- /**
- * Set the info for this Bubble to display
- *
- * @param bubbleInfo the BubbleInfo to display in this Bubble.
- */
- void setBubbleInfo(@NonNull BubbleInfo bubbleInfo);
-
- /**
- * Update the state and behavior of actions.
- *
- * @param actions the new state of the bubble's actions
- */
- void updateActions(@NonNull List actions);
-
- /**
- * Update the avatar from photo.
- *
- * @param avatar the new photo avatar in the bubble's primary button
- */
- void updatePhotoAvatar(@NonNull Drawable avatar);
-
- /**
- * Update the avatar.
- *
- * @param avatar the new avatar in the bubble's primary button
- */
- void updateAvatar(@NonNull Drawable avatar);
-
- /**
- * Display text. The bubble's drawer is not expandable while text is showing, and the drawer will
- * be closed if already open.
- *
- * @param text the text to display to the user
- */
- void showText(@NonNull CharSequence text);
-}
diff --git a/java/com/android/bubble/BubbleComponent.java b/java/com/android/bubble/BubbleComponent.java
deleted file mode 100644
index 7a4665e74ef2ef5cd5f4cb9d204d4089a0dd5ed4..0000000000000000000000000000000000000000
--- a/java/com/android/bubble/BubbleComponent.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.bubble;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.HasRootComponent;
-import dagger.Subcomponent;
-
-@Subcomponent
-public abstract class BubbleComponent {
-
- @NonNull
- public abstract Bubble getBubble();
-
- public static BubbleComponent get(Context context) {
- return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
- .bubbleComponent();
- }
-
- /** Used to refer to the root application component. */
- public interface HasComponent {
- BubbleComponent bubbleComponent();
- }
-}
diff --git a/java/com/android/bubble/BubbleInfo.java b/java/com/android/bubble/BubbleInfo.java
deleted file mode 100644
index 28793a78cb29fb377b0f2dc6c558732f86d0986e..0000000000000000000000000000000000000000
--- a/java/com/android/bubble/BubbleInfo.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * 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
- */
-
-package com.android.bubble;
-
-import android.app.PendingIntent;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.Icon;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.Px;
-import com.google.auto.value.AutoValue;
-import java.util.Collections;
-import java.util.List;
-
-/** Info for displaying a {@link Bubble} */
-@AutoValue
-public abstract class BubbleInfo {
- @ColorInt
- public abstract int getPrimaryColor();
-
- public abstract Icon getPrimaryIcon();
-
- @Nullable
- public abstract Drawable getAvatar();
-
- @Px
- public abstract int getStartingYPosition();
-
- @NonNull
- public abstract List getActions();
-
- public static Builder builder() {
- return new AutoValue_BubbleInfo.Builder().setActions(Collections.emptyList());
- }
-
- public static Builder from(@NonNull BubbleInfo bubbleInfo) {
- return builder()
- .setPrimaryColor(bubbleInfo.getPrimaryColor())
- .setPrimaryIcon(bubbleInfo.getPrimaryIcon())
- .setStartingYPosition(bubbleInfo.getStartingYPosition())
- .setActions(bubbleInfo.getActions())
- .setAvatar(bubbleInfo.getAvatar());
- }
-
- /** Builder for {@link BubbleInfo} */
- @AutoValue.Builder
- public abstract static class Builder {
-
- public abstract Builder setPrimaryColor(@ColorInt int primaryColor);
-
- public abstract Builder setPrimaryIcon(@NonNull Icon primaryIcon);
-
- public abstract Builder setAvatar(@Nullable Drawable avatar);
-
- public abstract Builder setStartingYPosition(@Px int startingYPosition);
-
- public abstract Builder setActions(List actions);
-
- public abstract BubbleInfo build();
- }
-
- /** Represents actions to be shown in the bubble when expanded */
- @AutoValue
- public abstract static class Action {
-
- public abstract Drawable getIconDrawable();
-
- @Nullable
- public abstract Drawable getSecondaryIconDrawable();
-
- @NonNull
- public abstract CharSequence getName();
-
- @NonNull
- public abstract PendingIntent getIntent();
-
- public abstract boolean isCheckable();
-
- public abstract boolean isChecked();
-
- public static Builder builder() {
- return new AutoValue_BubbleInfo_Action.Builder().setCheckable(true).setChecked(false);
- }
-
- public static Builder from(@NonNull Action action) {
- return builder()
- .setIntent(action.getIntent())
- .setChecked(action.isChecked())
- .setCheckable(action.isCheckable())
- .setName(action.getName())
- .setIconDrawable(action.getIconDrawable())
- .setSecondaryIconDrawable(action.getSecondaryIconDrawable());
- }
-
- /** Builder for {@link Action} */
- @AutoValue.Builder
- public abstract static class Builder {
-
- public abstract Builder setIconDrawable(Drawable iconDrawable);
-
- public abstract Builder setSecondaryIconDrawable(@Nullable Drawable secondaryIconDrawable);
-
- public abstract Builder setName(@NonNull CharSequence name);
-
- public abstract Builder setIntent(@NonNull PendingIntent intent);
-
- public abstract Builder setCheckable(boolean enabled);
-
- public abstract Builder setChecked(boolean checked);
-
- public abstract Action build();
- }
- }
-}
diff --git a/java/com/android/bubble/stub/BubbleStub.java b/java/com/android/bubble/stub/BubbleStub.java
deleted file mode 100644
index 2aa55a3371a1dccff11f8fdabb32e87a89f9f416..0000000000000000000000000000000000000000
--- a/java/com/android/bubble/stub/BubbleStub.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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
- */
-
-package com.android.bubble.stub;
-
-import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import com.android.bubble.Bubble;
-import com.android.bubble.BubbleInfo;
-import java.util.List;
-import javax.inject.Inject;
-
-public class BubbleStub implements Bubble {
-
- @Inject
- public BubbleStub() {}
-
- @Override
- public void show() {}
-
- @Override
- public void hide() {}
-
- @Override
- public boolean isVisible() {
- return false;
- }
-
- @Override
- public boolean isDismissed() {
- return false;
- }
-
- @Override
- public void setBubbleInfo(@NonNull BubbleInfo bubbleInfo) {}
-
- @Override
- public void updateActions(@NonNull List actions) {}
-
- @Override
- public void updatePhotoAvatar(@NonNull Drawable avatar) {}
-
- @Override
- public void updateAvatar(@NonNull Drawable avatar) {}
-
- @Override
- public void showText(@NonNull CharSequence text) {}
-}
diff --git a/java/com/android/bubble/stub/StubBubbleModule.java b/java/com/android/bubble/stub/StubBubbleModule.java
deleted file mode 100644
index 783983f2ecf10528c8e1f719224af025703d14f1..0000000000000000000000000000000000000000
--- a/java/com/android/bubble/stub/StubBubbleModule.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.bubble.stub;
-
-import com.android.bubble.Bubble;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Singleton;
-
-@Module
-public abstract class StubBubbleModule {
-
- @Binds
- @Singleton
- public abstract Bubble bindsBubble(BubbleStub bubbleStub);
-}
diff --git a/java/com/android/contacts/common/AndroidManifest.xml b/java/com/android/contacts/common/AndroidManifest.xml
index 84ac96fdbd8f34800ca15d7871d30d7841a320e5..cb1777a122104c912edf81ce11a90aa69dd7b690 100644
--- a/java/com/android/contacts/common/AndroidManifest.xml
+++ b/java/com/android/contacts/common/AndroidManifest.xml
@@ -27,6 +27,9 @@
+
+
+
diff --git a/java/com/android/contacts/common/ContactPresenceIconUtil.java b/java/com/android/contacts/common/ContactPresenceIconUtil.java
deleted file mode 100644
index bce4b21f448f7e1706cb341b95c579a6f05262d7..0000000000000000000000000000000000000000
--- a/java/com/android/contacts/common/ContactPresenceIconUtil.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- */
-
-package com.android.contacts.common;
-
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.provider.ContactsContract.StatusUpdates;
-import android.support.v4.content.ContextCompat;
-
-/** Define the contact present show policy in Contacts */
-public class ContactPresenceIconUtil {
-
- /**
- * Get the presence icon resource according the status.
- *
- * @return null means don't show the status icon.
- */
- public static Drawable getPresenceIcon(Context context, int status) {
- // We don't show the offline status in Contacts
- switch (status) {
- case StatusUpdates.AVAILABLE:
- case StatusUpdates.IDLE:
- case StatusUpdates.AWAY:
- case StatusUpdates.DO_NOT_DISTURB:
- case StatusUpdates.INVISIBLE:
- return ContextCompat.getDrawable(context, StatusUpdates.getPresenceIconResourceId(status));
- case StatusUpdates.OFFLINE:
- // The undefined status is treated as OFFLINE in getPresenceIconResourceId();
- default:
- return null;
- }
- }
-}
diff --git a/java/com/android/contacts/common/ContactStatusUtil.java b/java/com/android/contacts/common/ContactStatusUtil.java
deleted file mode 100644
index c5347e778c071701ce149e42827ae3c1bdce4046..0000000000000000000000000000000000000000
--- a/java/com/android/contacts/common/ContactStatusUtil.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.common;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.provider.ContactsContract.StatusUpdates;
-
-/** Provides static function to get default contact status message. */
-public class ContactStatusUtil {
-
- public static String getStatusString(Context context, int presence) {
- Resources resources = context.getResources();
- switch (presence) {
- case StatusUpdates.AVAILABLE:
- return resources.getString(R.string.status_available);
- case StatusUpdates.IDLE:
- case StatusUpdates.AWAY:
- return resources.getString(R.string.status_away);
- case StatusUpdates.DO_NOT_DISTURB:
- return resources.getString(R.string.status_busy);
- case StatusUpdates.OFFLINE:
- case StatusUpdates.INVISIBLE:
- default:
- return null;
- }
- }
-}
diff --git a/java/com/android/contacts/common/ContactTileLoaderFactory.java b/java/com/android/contacts/common/ContactTileLoaderFactory.java
index d71472ef85dfbdbbcda45a64fffb87bf6d648fe6..80eda882bb32fd2b2a31f9306fc08d2d915fa697 100644
--- a/java/com/android/contacts/common/ContactTileLoaderFactory.java
+++ b/java/com/android/contacts/common/ContactTileLoaderFactory.java
@@ -21,7 +21,6 @@ import android.net.Uri;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
-import android.support.annotation.VisibleForTesting;
/**
* Used to create {@link CursorLoader} which finds contacts information from the strequents table.
@@ -35,8 +34,7 @@ public final class ContactTileLoaderFactory {
* because the query is performed on the data table. In order to obtain the contact id for
* strequent items, use Phone.contact_id instead.
*/
- @VisibleForTesting
- public static final String[] COLUMNS_PHONE_ONLY =
+ private static final String[] COLUMNS_PHONE_ONLY =
new String[] {
Contacts._ID,
Contacts.DISPLAY_NAME_PRIMARY,
diff --git a/java/com/android/contacts/common/ContactsUtils.java b/java/com/android/contacts/common/ContactsUtils.java
index 7e44a26269d8b3927584b55eb3f51820e7b3dfe4..5dac957755d7bd41b7bd605d2fe421517657821a 100644
--- a/java/com/android/contacts/common/ContactsUtils.java
+++ b/java/com/android/contacts/common/ContactsUtils.java
@@ -18,7 +18,9 @@ package com.android.contacts.common;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Directory;
-import android.support.annotation.IntDef;
+
+import androidx.annotation.IntDef;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/java/com/android/contacts/common/GroupMetaData.java b/java/com/android/contacts/common/GroupMetaData.java
index b34f1d62991e463538b503fb7f587ffd009a43c3..6afb2a44b35c029aff0170b123cd21fcd6426e9e 100644
--- a/java/com/android/contacts/common/GroupMetaData.java
+++ b/java/com/android/contacts/common/GroupMetaData.java
@@ -46,10 +46,6 @@ public final class GroupMetaData {
this.mFavorites = favorites;
}
- public String getAccountName() {
- return mAccountName;
- }
-
public String getAccountType() {
return mAccountType;
}
@@ -58,18 +54,10 @@ public final class GroupMetaData {
return mDataSet;
}
- public long getGroupId() {
- return mGroupId;
- }
-
public String getTitle() {
return mTitle;
}
- public boolean isDefaultGroup() {
- return mDefaultGroup;
- }
-
public boolean isFavorites() {
return mFavorites;
}
diff --git a/java/com/android/contacts/common/compat/CallCompat.java b/java/com/android/contacts/common/compat/CallCompat.java
index 641f7b1bd4b0617142a9b7d967fe08eb7c123338..9e33db596fa6bdc382be0afa0e44741d2d4e2fef 100644
--- a/java/com/android/contacts/common/compat/CallCompat.java
+++ b/java/com/android/contacts/common/compat/CallCompat.java
@@ -16,17 +16,15 @@
package com.android.contacts.common.compat;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
import android.telecom.Call;
+import androidx.annotation.NonNull;
+
/** Compatibility utilities for android.telecom.Call */
public class CallCompat {
public static boolean canPullExternalCall(@NonNull android.telecom.Call call) {
- return VERSION.SDK_INT >= VERSION_CODES.N_MR1
- && ((call.getDetails().getCallCapabilities() & Details.CAPABILITY_CAN_PULL_CALL)
+ return ((call.getDetails().getCallCapabilities() & Details.CAPABILITY_CAN_PULL_CALL)
== Details.CAPABILITY_CAN_PULL_CALL);
}
diff --git a/java/com/android/contacts/common/compat/PhoneAccountCompat.java b/java/com/android/contacts/common/compat/PhoneAccountCompat.java
index aa22c68613a42fad8ef5960a89a50b923aac126e..0424682499bdc52f3e3d328141dfa8388b85baa1 100644
--- a/java/com/android/contacts/common/compat/PhoneAccountCompat.java
+++ b/java/com/android/contacts/common/compat/PhoneAccountCompat.java
@@ -18,9 +18,10 @@ package com.android.contacts.common.compat;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
-import android.support.annotation.Nullable;
import android.telecom.PhoneAccount;
+import androidx.annotation.Nullable;
+
/** Compatiblity class for {@link android.telecom.PhoneAccount} */
public class PhoneAccountCompat {
diff --git a/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java b/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java
deleted file mode 100644
index a1dc89d75d53972a26af176dbd9437a8c708facc..0000000000000000000000000000000000000000
--- a/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-package com.android.contacts.common.compat.telecom;
-
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
-import java.lang.reflect.Field;
-
-/** Compatibility class for {@link android.telecom.TelecomManager}. */
-public class TelecomManagerCompat {
-
- // Constants from http://cs/android/frameworks/base/telecomm/java/android/telecom/Call.java.
- public static final String EVENT_REQUEST_HANDOVER = "android.telecom.event.REQUEST_HANDOVER";
- public static final String EXTRA_HANDOVER_PHONE_ACCOUNT_HANDLE =
- "android.telecom.extra.HANDOVER_PHONE_ACCOUNT_HANDLE";
- public static final String EXTRA_HANDOVER_VIDEO_STATE =
- "android.telecom.extra.HANDOVER_VIDEO_STATE";
-
- // This is a hidden constant in android.telecom.DisconnectCause. Telecom sets this as a disconnect
- // reason if it wants us to prompt the user that the video call is not available.
- // TODO(wangqi): Reference it to constant in android.telecom.DisconnectCause.
- public static final String REASON_IMS_ACCESS_BLOCKED = "REASON_IMS_ACCESS_BLOCKED";
-
- /**
- * Returns the current SIM call manager. Apps must be prepared for this method to return null,
- * indicating that there currently exists no registered SIM call manager.
- *
- * @param telecomManager the {@link TelecomManager} to use to fetch the SIM call manager.
- * @return The phone account handle of the current sim call manager.
- */
- @Nullable
- public static PhoneAccountHandle getSimCallManager(TelecomManager telecomManager) {
- if (telecomManager != null) {
- return telecomManager.getSimCallManager();
- }
- return null;
- }
-
- /** Returns true if the Android version supports Handover. */
- public static boolean supportsHandover() {
- // Starting with Android P, handover is supported via a public API.
- if (VERSION.SDK_INT >= VERSION_CODES.P) {
- return true;
- }
- // Handovers are supported from Android O-DR onward. Since there is no API
- // bump from O to O-DR, we need to use reflection to check the existence
- // of TelecomManager.EXTRA_IS_HANDOVER in
- // http://cs/android/frameworks/base/telecomm/java/android/telecom/TelecomManager.java.
- try {
- Field field = TelecomManager.class.getDeclaredField("EXTRA_IS_HANDOVER");
- return "android.telecom.extra.IS_HANDOVER".equals(field.get(null /* obj (static field) */));
- } catch (Exception e) {
- // Do nothing
- }
- return false;
- }
-}
diff --git a/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java b/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
index 5d10720b5ced523a494ff6ea7952e7fdfa46b05c..27e6d57965450cf102be95e931f94bb8bee1d055 100644
--- a/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
+++ b/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
@@ -20,8 +20,9 @@ import android.content.AsyncQueryHandler;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.Nullable;
+
import java.util.concurrent.atomic.AtomicInteger;
/**
@@ -31,7 +32,8 @@ import java.util.concurrent.atomic.AtomicInteger;
*/
public abstract class NoNullCursorAsyncQueryHandler extends AsyncQueryHandler {
private static final AtomicInteger pendingQueryCount = new AtomicInteger();
- @Nullable private static PendingQueryCountChangedListener pendingQueryCountChangedListener;
+ @Nullable
+ private static PendingQueryCountChangedListener pendingQueryCountChangedListener;
public NoNullCursorAsyncQueryHandler(ContentResolver cr) {
super(cr);
@@ -74,17 +76,6 @@ public abstract class NoNullCursorAsyncQueryHandler extends AsyncQueryHandler {
protected abstract void onNotNullableQueryComplete(int token, Object cookie, Cursor cursor);
- @VisibleForTesting(otherwise = VisibleForTesting.NONE)
- public static void setPendingQueryCountChangedListener(
- @Nullable PendingQueryCountChangedListener listener) {
- pendingQueryCountChangedListener = listener;
- }
-
- @VisibleForTesting(otherwise = VisibleForTesting.NONE)
- public static int getPendingQueryCount() {
- return pendingQueryCount.get();
- }
-
/** Callback to listen for changes in the number of queries that have not completed. */
public interface PendingQueryCountChangedListener {
void onPendingQueryCountChanged();
diff --git a/java/com/android/contacts/common/extensions/PhoneDirectoryExtender.java b/java/com/android/contacts/common/extensions/PhoneDirectoryExtender.java
index 5e9753f7ec18baede695923b154b00f7311bcb08..e0d52a8dc366054e249a86f16a52c5437bc27065 100644
--- a/java/com/android/contacts/common/extensions/PhoneDirectoryExtender.java
+++ b/java/com/android/contacts/common/extensions/PhoneDirectoryExtender.java
@@ -16,7 +16,8 @@ package com.android.contacts.common.extensions;
import android.content.Context;
import android.net.Uri;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
/** An interface for adding extended phone directories. */
public interface PhoneDirectoryExtender {
diff --git a/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderAccessor.java b/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderAccessor.java
index 7978831b0d090b8b0b6c041fb33bf4c683513975..4af3a8b9c4a9c538ac9e96048de35452b183abaa 100644
--- a/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderAccessor.java
+++ b/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderAccessor.java
@@ -15,8 +15,9 @@
package com.android.contacts.common.extensions;
import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.NonNull;
+
import com.android.dialer.common.Assert;
/** Accessor for the phone directory extender singleton. */
@@ -26,11 +27,6 @@ public final class PhoneDirectoryExtenderAccessor {
private PhoneDirectoryExtenderAccessor() {}
- @VisibleForTesting
- public static void setForTesting(PhoneDirectoryExtender extender) {
- instance = extender;
- }
-
@NonNull
public static PhoneDirectoryExtender get(@NonNull Context context) {
Assert.isNotNull(context);
diff --git a/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderFactory.java b/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderFactory.java
index 9750ee30039204f697cfae0ca14b297275d6bec4..c56c9101f07ad3e167e80144cd4c59dd0f38467c 100644
--- a/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderFactory.java
+++ b/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderFactory.java
@@ -14,7 +14,7 @@
package com.android.contacts.common.extensions;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
/**
* This interface should be implemented by the Application subclass. It allows the contacts module
diff --git a/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderStub.java b/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderStub.java
index 5b3cb991335fa8d59e913757b15fea8e4351620d..86fee67ac5805735547ac0479cc4abf1bdd91f58 100644
--- a/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderStub.java
+++ b/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderStub.java
@@ -16,7 +16,8 @@ package com.android.contacts.common.extensions;
import android.content.Context;
import android.net.Uri;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
/** No-op implementation for phone directory extender. */
class PhoneDirectoryExtenderStub implements PhoneDirectoryExtender {
diff --git a/java/com/android/contacts/common/list/ContactEntry.java b/java/com/android/contacts/common/list/ContactEntry.java
index 90e6735df647901317c900ed40a67f33adb59c73..75e6509e79080a7525ccc0bb75049f965a9e7bfe 100644
--- a/java/com/android/contacts/common/list/ContactEntry.java
+++ b/java/com/android/contacts/common/list/ContactEntry.java
@@ -24,21 +24,17 @@ import com.android.dialer.contacts.ContactsComponent;
/** Class to hold contact information */
public class ContactEntry {
- public static final ContactEntry BLANK_ENTRY = new ContactEntry();
/** Primary name for a Contact */
public String namePrimary;
/** Alternative name for a Contact, e.g. last name first */
public String nameAlternative;
- public String phoneLabel;
public String phoneNumber;
public Uri photoUri;
public Uri lookupUri;
public String lookupKey;
public long id;
public int pinned = PinnedPositions.UNPINNED;
- public boolean isFavorite = false;
- public boolean isDefaultNumber = false;
public String getPreferredDisplayName(Context context) {
return ContactsComponent.get(context)
diff --git a/java/com/android/contacts/common/list/ContactListFilterController.java b/java/com/android/contacts/common/list/ContactListFilterController.java
index c5c078cb4cf7336250ff3718a6d665c6667a316b..60fba0d6d43058b5bed69dd05a2348c271da0351 100644
--- a/java/com/android/contacts/common/list/ContactListFilterController.java
+++ b/java/com/android/contacts/common/list/ContactListFilterController.java
@@ -44,16 +44,6 @@ public abstract class ContactListFilterController {
/** Return the currently-active filter. */
public abstract ContactListFilter getFilter();
- /**
- * @param filter the filter
- * @param persistent True when the given filter should be saved soon. False when the filter should
- * not be saved. The latter case may happen when some Intent requires a certain type of UI
- * (e.g. single contact) temporarily.
- */
- public abstract void setContactListFilter(ContactListFilter filter, boolean persistent);
-
- public abstract void selectCustomFilter();
-
/**
* Checks if the current filter is valid and reset the filter if not. It may happen when an
* account is removed while the filter points to the account with {@link
@@ -105,11 +95,6 @@ class ContactListFilterControllerImpl extends ContactListFilterController {
return PreferenceManager.getDefaultSharedPreferences(mAppContext);
}
- @Override
- public void setContactListFilter(ContactListFilter filter, boolean persistent) {
- setContactListFilter(filter, persistent, true);
- }
-
private void setContactListFilter(
ContactListFilter filter, boolean persistent, boolean notifyListeners) {
if (!filter.equals(mFilter)) {
@@ -123,12 +108,6 @@ class ContactListFilterControllerImpl extends ContactListFilterController {
}
}
- @Override
- public void selectCustomFilter() {
- setContactListFilter(
- ContactListFilter.createFilterWithType(ContactListFilter.FILTER_TYPE_CUSTOM), true);
- }
-
private void notifyContactListFilterChanged() {
for (ContactListFilterListener listener : mListeners) {
listener.onContactListFilterChanged();
diff --git a/java/com/android/contacts/common/list/ContactTileView.java b/java/com/android/contacts/common/list/ContactTileView.java
deleted file mode 100644
index 732cee7e16762e9afaafe0d5338be6894503cb46..0000000000000000000000000000000000000000
--- a/java/com/android/contacts/common/list/ContactTileView.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-package com.android.contacts.common.list;
-
-import android.content.Context;
-import android.graphics.Rect;
-import android.net.Uri;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import com.android.contacts.common.MoreContactUtils;
-import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
-import com.android.dialer.contacts.resources.R;
-import com.android.dialer.widget.BidiTextView;
-
-/** A ContactTile displays a contact's picture and name */
-public abstract class ContactTileView extends FrameLayout {
-
- private static final String TAG = ContactTileView.class.getSimpleName();
- protected Listener mListener;
- private Uri mLookupUri;
- private ImageView mPhoto;
- private BidiTextView mName;
- private ContactPhotoManager mPhotoManager = null;
-
- public ContactTileView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- mName = (BidiTextView) findViewById(R.id.contact_tile_name);
- mPhoto = (ImageView) findViewById(R.id.contact_tile_image);
-
- OnClickListener listener = createClickListener();
- setOnClickListener(listener);
- }
-
- protected OnClickListener createClickListener() {
- return new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mListener == null) {
- return;
- }
- CallSpecificAppData callSpecificAppData =
- CallSpecificAppData.newBuilder()
- .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL)
- .setAllowAssistedDialing(true)
- .build();
- mListener.onContactSelected(
- getLookupUri(),
- MoreContactUtils.getTargetRectFromView(ContactTileView.this),
- callSpecificAppData);
- }
- };
- }
-
- public void setPhotoManager(ContactPhotoManager photoManager) {
- mPhotoManager = photoManager;
- }
-
- /**
- * Populates the data members to be displayed from the fields in {@link
- * com.android.contacts.common.list.ContactEntry}
- */
- public void loadFromContact(ContactEntry entry) {
-
- if (entry != null) {
- mName.setText(getNameForView(entry));
- mLookupUri = entry.lookupUri;
-
- setVisibility(View.VISIBLE);
-
- if (mPhotoManager != null) {
- DefaultImageRequest request = getDefaultImageRequest(entry.namePrimary, entry.lookupKey);
- configureViewForImage(entry.photoUri == null);
- if (mPhoto != null) {
- mPhotoManager.loadPhoto(
- mPhoto,
- entry.photoUri,
- getApproximateImageSize(),
- isDarkTheme(),
- isContactPhotoCircular(),
- request);
-
-
- }
- } else {
- LogUtil.w(TAG, "contactPhotoManager not set");
- }
- } else {
- setVisibility(View.INVISIBLE);
- }
- }
-
- public void setListener(Listener listener) {
- mListener = listener;
- }
-
- public Uri getLookupUri() {
- return mLookupUri;
- }
-
- /**
- * Returns the string that should actually be displayed as the contact's name. Subclasses can
- * override this to return formatted versions of the name - i.e. first name only.
- */
- protected String getNameForView(ContactEntry contactEntry) {
- return contactEntry.namePrimary;
- }
-
- /**
- * Implemented by subclasses to estimate the size of the picture. This can return -1 if only a
- * thumbnail is shown anyway
- */
- protected abstract int getApproximateImageSize();
-
- protected abstract boolean isDarkTheme();
-
- /**
- * Implemented by subclasses to reconfigure the view's layout and subviews, based on whether or
- * not the contact has a user-defined photo.
- *
- * @param isDefaultImage True if the contact does not have a user-defined contact photo (which
- * means a default contact image will be applied by the {@link ContactPhotoManager}
- */
- protected void configureViewForImage(boolean isDefaultImage) {
- // No-op by default.
- }
-
- /**
- * Implemented by subclasses to allow them to return a {@link DefaultImageRequest} with the
- * various image parameters defined to match their own layouts.
- *
- * @param displayName The display name of the contact
- * @param lookupKey The lookup key of the contact
- * @return A {@link DefaultImageRequest} object with each field configured by the subclass as
- * desired, or {@code null}.
- */
- protected DefaultImageRequest getDefaultImageRequest(String displayName, String lookupKey) {
- return new DefaultImageRequest(displayName, lookupKey, isContactPhotoCircular());
- }
-
- /**
- * Whether contact photo should be displayed as a circular image. Implemented by subclasses so
- * they can change which drawables to fetch.
- */
- protected boolean isContactPhotoCircular() {
- return true;
- }
-
- public interface Listener {
-
- /** Notification that the contact was selected; no specific action is dictated. */
- void onContactSelected(
- Uri contactLookupUri, Rect viewRect, CallSpecificAppData callSpecificAppData);
-
- /** Notification that the specified number is to be called. */
- void onCallNumberDirectly(String phoneNumber, CallSpecificAppData callSpecificAppData);
- }
-}
diff --git a/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java b/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java
deleted file mode 100644
index c75e0a730023ef8752f5b49b07f5d808fd71ed63..0000000000000000000000000000000000000000
--- a/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- */
-package com.android.contacts.common.list;
-
-import android.app.ActionBar;
-import android.net.Uri;
-import com.android.dialer.callintent.CallSpecificAppData;
-
-/** Action callbacks that can be sent by a phone number picker. */
-public interface OnPhoneNumberPickerActionListener {
-
- /** Returns the selected phone number uri to the requester. */
- void onPickDataUri(Uri dataUri, boolean isVideoCall, CallSpecificAppData callSpecificAppData);
-
- /**
- * Returns the specified phone number to the requester. May call the specified phone number,
- * either as an audio or video call.
- */
- void onPickPhoneNumber(
- String phoneNumber, boolean isVideoCall, CallSpecificAppData callSpecificAppData);
-
- /** Called when home menu in {@link ActionBar} is clicked by the user. */
- void onHomeInActionBarSelected();
-}
diff --git a/java/com/android/contacts/common/model/AccountTypeManager.java b/java/com/android/contacts/common/model/AccountTypeManager.java
index f225ff6ac6bb2660602c0fb8ce2abf78e20a3d6e..70800aef8da2e360faafb147c653b707557d343e 100644
--- a/java/com/android/contacts/common/model/AccountTypeManager.java
+++ b/java/com/android/contacts/common/model/AccountTypeManager.java
@@ -37,11 +37,9 @@ import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
import android.provider.ContactsContract;
-import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
-import android.util.TimingLogger;
import com.android.contacts.common.MoreContactUtils;
import com.android.contacts.common.list.ContactListFilterController;
import com.android.contacts.common.model.account.AccountType;
@@ -92,19 +90,6 @@ public abstract class AccountTypeManager {
return mAccountTypeManager;
}
- /**
- * Set the instance of account type manager. This is only for and should only be used by unit
- * tests. While having this method is not ideal, it's simpler than the alternative of holding this
- * as a service in the ContactsApplication context class.
- *
- * @param mockManager The mock AccountTypeManager.
- */
- public static void setInstanceForTest(AccountTypeManager mockManager) {
- synchronized (mInitializationLock) {
- mAccountTypeManager = mockManager;
- }
- }
-
/**
* Returns the list of all accounts (if contactWritableOnly is false) or just the list of contact
* writable accounts (if contactWritableOnly is true).
@@ -328,7 +313,6 @@ class AccountTypeManagerImpl extends AccountTypeManager
* Return all {@link AccountType}s with at least one account which supports "invite", i.e. its
* {@link AccountType#getInviteContactActivityClassName()} is not empty.
*/
- @VisibleForTesting
static Map findAllInvitableAccountTypes(
Context context,
Collection accounts,
@@ -401,7 +385,6 @@ class AccountTypeManagerImpl extends AccountTypeManager
if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
Log.d(Constants.PERFORMANCE_TAG, "AccountTypeManager.loadAccountsInBackground start");
}
- TimingLogger timings = new TimingLogger(TAG, "loadAccountsInBackground");
final long startTime = SystemClock.currentThreadTimeMillis();
final long startTimeWall = SystemClock.elapsedRealtime();
@@ -449,7 +432,7 @@ class AccountTypeManagerImpl extends AccountTypeManager
} else {
Log.d(
TAG, "Registering external account type=" + type + ", packageName=" + auth.packageName);
- accountType = new ExternalAccountType(mContext, auth.packageName, false);
+ accountType = new ExternalAccountType(mContext, auth.packageName);
}
if (!accountType.isInitialized()) {
if (accountType.isEmbedded()) {
@@ -476,7 +459,7 @@ class AccountTypeManagerImpl extends AccountTypeManager
if (!extensionPackages.isEmpty()) {
Log.d(TAG, "Registering " + extensionPackages.size() + " extension packages");
for (String extensionPackage : extensionPackages) {
- ExternalAccountType accountType = new ExternalAccountType(mContext, extensionPackage, true);
+ ExternalAccountType accountType = new ExternalAccountType(mContext, extensionPackage);
if (!accountType.isInitialized()) {
// Skip external account types that couldn't be initialized.
continue;
@@ -512,7 +495,6 @@ class AccountTypeManagerImpl extends AccountTypeManager
addAccountType(accountType, accountTypesByTypeAndDataSet, accountTypesByType);
}
}
- timings.addSplit("Loaded account types");
// Map in accounts to associate the account names with each account type entry.
Account[] accounts = mAccountManager.getAccounts();
@@ -543,8 +525,6 @@ class AccountTypeManagerImpl extends AccountTypeManager
Collections.sort(contactWritableAccounts, ACCOUNT_COMPARATOR);
Collections.sort(groupWritableAccounts, ACCOUNT_COMPARATOR);
- timings.addSplit("Loaded accounts");
-
synchronized (this) {
mAccountTypesWithDataSets = accountTypesByTypeAndDataSet;
mAccounts = allAccounts;
@@ -554,7 +534,6 @@ class AccountTypeManagerImpl extends AccountTypeManager
findAllInvitableAccountTypes(mContext, allAccounts, accountTypesByTypeAndDataSet);
}
- timings.dumpToLog();
final long endTimeWall = SystemClock.elapsedRealtime();
final long endTime = SystemClock.currentThreadTimeMillis();
diff --git a/java/com/android/contacts/common/model/BuilderWrapper.java b/java/com/android/contacts/common/model/BuilderWrapper.java
deleted file mode 100644
index 9c666e59c8cfed3a33b5a710d9209752467408ce..0000000000000000000000000000000000000000
--- a/java/com/android/contacts/common/model/BuilderWrapper.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-
-package com.android.contacts.common.model;
-
-import android.content.ContentProviderOperation.Builder;
-
-/**
- * This class is created for the purpose of compatibility and make the type of
- * ContentProviderOperation available on pre-M SDKs. Since ContentProviderOperation is usually
- * created by Builder and we don’t have access to the type via Builder, so we need to create a
- * wrapper class for Builder first and include type. Then we could use the builder and the type in
- * this class to create a wrapper of ContentProviderOperation.
- */
-public class BuilderWrapper {
-
- private Builder mBuilder;
- private int mType;
-
- public BuilderWrapper(Builder builder, int type) {
- mBuilder = builder;
- mType = type;
- }
-
- public int getType() {
- return mType;
- }
-
- public void setType(int mType) {
- this.mType = mType;
- }
-
- public Builder getBuilder() {
- return mBuilder;
- }
-
- public void setBuilder(Builder mBuilder) {
- this.mBuilder = mBuilder;
- }
-}
diff --git a/java/com/android/contacts/common/model/CPOWrapper.java b/java/com/android/contacts/common/model/CPOWrapper.java
deleted file mode 100644
index 4a67e670002276932055668c95517004a63d8580..0000000000000000000000000000000000000000
--- a/java/com/android/contacts/common/model/CPOWrapper.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-
-package com.android.contacts.common.model;
-
-import android.content.ContentProviderOperation;
-
-/**
- * This class is created for the purpose of compatibility and make the type of
- * ContentProviderOperation available on pre-M SDKs.
- */
-public class CPOWrapper {
-
- private ContentProviderOperation mOperation;
- private int mType;
-
- public CPOWrapper(ContentProviderOperation builder, int type) {
- mOperation = builder;
- mType = type;
- }
-
- public int getType() {
- return mType;
- }
-
- public void setType(int type) {
- this.mType = type;
- }
-
- public ContentProviderOperation getOperation() {
- return mOperation;
- }
-
- public void setOperation(ContentProviderOperation operation) {
- this.mOperation = operation;
- }
-}
diff --git a/java/com/android/contacts/common/model/Contact.java b/java/com/android/contacts/common/model/Contact.java
index ad0b66efee68d888a4a450ee6f274f586bc1c1a1..44b94f74f40a05e6336339f60155f39baf4d066b 100644
--- a/java/com/android/contacts/common/model/Contact.java
+++ b/java/com/android/contacts/common/model/Contact.java
@@ -22,7 +22,6 @@ import android.provider.ContactsContract.CommonDataKinds.Photo;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.Directory;
import android.provider.ContactsContract.DisplayNameSources;
-import android.support.annotation.VisibleForTesting;
import com.android.contacts.common.GroupMetaData;
import com.android.contacts.common.model.account.AccountType;
import com.google.common.collect.ImmutableList;
@@ -232,7 +231,6 @@ public class Contact {
}
/** Returns the contact ID. */
- @VisibleForTesting
public long getId() {
return mId;
}
diff --git a/java/com/android/contacts/common/model/account/AccountType.java b/java/com/android/contacts/common/model/account/AccountType.java
index 499286a13d5f0d89b74cc98648aeeae2e67055e8..e1fb572b7381b4c73e5be71d1bdc319c949b3021 100644
--- a/java/com/android/contacts/common/model/account/AccountType.java
+++ b/java/com/android/contacts/common/model/account/AccountType.java
@@ -24,7 +24,6 @@ import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.RawContacts;
-import android.support.annotation.VisibleForTesting;
import android.support.v4.content.ContextCompat;
import android.util.ArrayMap;
import android.view.inputmethod.EditorInfo;
@@ -50,12 +49,7 @@ public abstract class AccountType {
private static final String TAG = "AccountType";
/** {@link Comparator} to sort by {@link DataKind#weight}. */
private static Comparator sWeightComparator =
- new Comparator() {
- @Override
- public int compare(DataKind object1, DataKind object2) {
- return object1.weight - object2.weight;
- }
- };
+ Comparator.comparingInt(object -> object.weight);
/** The {@link RawContacts#ACCOUNT_TYPE} these constraints apply to. */
public String accountType = null;
/** The {@link RawContacts#DATA_SET} these constraints apply to. */
@@ -84,9 +78,9 @@ public abstract class AccountType {
public int iconRes;
protected boolean mIsInitialized;
/** Set of {@link DataKind} supported by this source. */
- private ArrayList mKinds = new ArrayList<>();
+ private final ArrayList mKinds = new ArrayList<>();
/** Lookup map of {@link #mKinds} on {@link DataKind#mimeType}. */
- private Map mMimeKinds = new ArrayMap<>();
+ private final Map mMimeKinds = new ArrayMap<>();
/**
* Return a string resource loaded from the given package (or the current package if {@code
@@ -95,8 +89,7 @@ public abstract class AccountType {
*
*
(The behavior is undefined if the resource or package doesn't exist.)
*/
- @VisibleForTesting
- static CharSequence getResourceText(
+ private static CharSequence getResourceText(
Context context, String packageName, int resId, String defaultValue) {
if (resId != -1 && packageName != null) {
final PackageManager pm = context.getPackageManager();
@@ -139,10 +132,6 @@ public abstract class AccountType {
return true;
}
- public boolean isExtension() {
- return false;
- }
-
/**
* @return True if contacts can be created and edited using this app. If false, there could still
* be an external editor as provided by {@link #getEditContactActivityClassName()} or {@link
@@ -150,26 +139,6 @@ public abstract class AccountType {
*/
public abstract boolean areContactsWritable();
- /**
- * Returns an optional custom edit activity.
- *
- *
Only makes sense for non-embedded account types. The activity class should reside in the
- * sync adapter package as determined by {@link #syncAdapterPackageName}.
- */
- public String getEditContactActivityClassName() {
- return null;
- }
-
- /**
- * Returns an optional custom new contact activity.
- *
- *
Only makes sense for non-embedded account types. The activity class should reside in the
- * sync adapter package as determined by {@link #syncAdapterPackageName}.
- */
- public String getCreateContactActivityClassName() {
- return null;
- }
-
/**
* Returns an optional custom invite contact activity.
*
diff --git a/java/com/android/contacts/common/model/account/AccountWithDataSet.java b/java/com/android/contacts/common/model/account/AccountWithDataSet.java
index 71faf509cf98557afe4cef8054cae2b02730eab1..54e9a3cea05f3a1089e3167df55e42ed45e7069b 100644
--- a/java/com/android/contacts/common/model/account/AccountWithDataSet.java
+++ b/java/com/android/contacts/common/model/account/AccountWithDataSet.java
@@ -45,18 +45,7 @@ public class AccountWithDataSet implements Parcelable {
return new AccountWithDataSet[size];
}
};
- private static final String STRINGIFY_SEPARATOR = "\u0001";
- private static final String ARRAY_STRINGIFY_SEPARATOR = "\u0002";
- private static final Pattern STRINGIFY_SEPARATOR_PAT =
- Pattern.compile(Pattern.quote(STRINGIFY_SEPARATOR));
- private static final Pattern ARRAY_STRINGIFY_SEPARATOR_PAT =
- Pattern.compile(Pattern.quote(ARRAY_STRINGIFY_SEPARATOR));
- private static final String[] ID_PROJECTION = new String[] {BaseColumns._ID};
- private static final Uri RAW_CONTACTS_URI_LIMIT_1 =
- RawContacts.CONTENT_URI
- .buildUpon()
- .appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY, "1")
- .build();
+
public final String name;
public final String type;
public final String dataSet;
@@ -80,81 +69,6 @@ public class AccountWithDataSet implements Parcelable {
return TextUtils.isEmpty(text) ? null : text;
}
- private static StringBuilder addStringified(StringBuilder sb, AccountWithDataSet account) {
- if (!TextUtils.isEmpty(account.name)) {
- sb.append(account.name);
- }
- sb.append(STRINGIFY_SEPARATOR);
- if (!TextUtils.isEmpty(account.type)) {
- sb.append(account.type);
- }
- sb.append(STRINGIFY_SEPARATOR);
- if (!TextUtils.isEmpty(account.dataSet)) {
- sb.append(account.dataSet);
- }
-
- return sb;
- }
-
- /**
- * Unpack a string created by {@link #stringify}.
- *
- * @throws IllegalArgumentException if it's an invalid string.
- */
- public static AccountWithDataSet unstringify(String s) {
- final String[] array = STRINGIFY_SEPARATOR_PAT.split(s, 3);
- if (array.length < 3) {
- throw new IllegalArgumentException("Invalid string " + s);
- }
- return new AccountWithDataSet(
- array[0], array[1], TextUtils.isEmpty(array[2]) ? null : array[2]);
- }
-
- /** Pack a list of {@link AccountWithDataSet} into a string. */
- public static String stringifyList(List accounts) {
- final StringBuilder sb = new StringBuilder();
-
- for (AccountWithDataSet account : accounts) {
- if (sb.length() > 0) {
- sb.append(ARRAY_STRINGIFY_SEPARATOR);
- }
- addStringified(sb, account);
- }
-
- return sb.toString();
- }
-
- /**
- * Unpack a list of {@link AccountWithDataSet} into a string.
- *
- * @throws IllegalArgumentException if it's an invalid string.
- */
- public static List unstringifyList(String s) {
- final ArrayList ret = new ArrayList<>();
- if (TextUtils.isEmpty(s)) {
- return ret;
- }
-
- final String[] array = ARRAY_STRINGIFY_SEPARATOR_PAT.split(s);
-
- for (int i = 0; i < array.length; i++) {
- ret.add(unstringify(array[i]));
- }
-
- return ret;
- }
-
- public boolean isLocalAccount() {
- return name == null && type == null;
- }
-
- public Account getAccountOrNull() {
- if (name != null && type != null) {
- return new Account(name, type);
- }
- return null;
- }
-
public int describeContents() {
return 0;
}
@@ -169,37 +83,6 @@ public class AccountWithDataSet implements Parcelable {
return mAccountTypeWithDataSet;
}
- /**
- * Return {@code true} if this account has any contacts in the database. Touches DB. Don't use in
- * the UI thread.
- */
- public boolean hasData(Context context) {
- final String BASE_SELECTION =
- RawContacts.ACCOUNT_TYPE + " = ?" + " AND " + RawContacts.ACCOUNT_NAME + " = ?";
- final String selection;
- final String[] args;
- if (TextUtils.isEmpty(dataSet)) {
- selection = BASE_SELECTION + " AND " + RawContacts.DATA_SET + " IS NULL";
- args = new String[] {type, name};
- } else {
- selection = BASE_SELECTION + " AND " + RawContacts.DATA_SET + " = ?";
- args = new String[] {type, name, dataSet};
- }
-
- final Cursor c =
- context
- .getContentResolver()
- .query(RAW_CONTACTS_URI_LIMIT_1, ID_PROJECTION, selection, args, null);
- if (c == null) {
- return false;
- }
- try {
- return c.moveToFirst();
- } finally {
- c.close();
- }
- }
-
public boolean equals(Object obj) {
if (obj instanceof AccountWithDataSet) {
AccountWithDataSet other = (AccountWithDataSet) obj;
@@ -221,9 +104,4 @@ public class AccountWithDataSet implements Parcelable {
public String toString() {
return "AccountWithDataSet {name=" + name + ", type=" + type + ", dataSet=" + dataSet + "}";
}
-
- /** Pack the instance into a string. */
- public String stringify() {
- return addStringified(new StringBuilder(), this).toString();
- }
}
diff --git a/java/com/android/contacts/common/model/account/BaseAccountType.java b/java/com/android/contacts/common/model/account/BaseAccountType.java
index 2911975d529ea7c08c1c59a2f8006e32aed1e458..1cf41514a22522e73c6cbd240c2f6109b0b4798a 100644
--- a/java/com/android/contacts/common/model/account/BaseAccountType.java
+++ b/java/com/android/contacts/common/model/account/BaseAccountType.java
@@ -631,10 +631,6 @@ public abstract class BaseAccountType extends AccountType {
+ " mColumnName"
+ mColumnName;
}
-
- public String getColumnNameForTest() {
- return mColumnName;
- }
}
public abstract static class CommonInflater implements StringInflater {
diff --git a/java/com/android/contacts/common/model/account/ExternalAccountType.java b/java/com/android/contacts/common/model/account/ExternalAccountType.java
index 618def78a0805a61264892a4d928dcc50807a32f..a38f8f2f84d2654684f4fd13a735318e1c1290e4 100644
--- a/java/com/android/contacts/common/model/account/ExternalAccountType.java
+++ b/java/com/android/contacts/common/model/account/ExternalAccountType.java
@@ -27,7 +27,6 @@ import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.provider.ContactsContract.CommonDataKinds.Photo;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
-import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Xml;
@@ -64,8 +63,6 @@ public class ExternalAccountType extends BaseAccountType {
private static final String TAG_CONTACTS_DATA_KIND = "ContactsDataKind";
private static final String TAG_EDIT_SCHEMA = "EditSchema";
- private static final String ATTR_EDIT_CONTACT_ACTIVITY = "editContactActivity";
- private static final String ATTR_CREATE_CONTACT_ACTIVITY = "createContactActivity";
private static final String ATTR_INVITE_CONTACT_ACTIVITY = "inviteContactActivity";
private static final String ATTR_INVITE_CONTACT_ACTION_LABEL = "inviteContactActionLabel";
private static final String ATTR_VIEW_CONTACT_NOTIFY_SERVICE = "viewContactNotifyService";
@@ -80,10 +77,6 @@ public class ExternalAccountType extends BaseAccountType {
private static final String ATTR_ACCOUNT_LABEL = "accountTypeLabel";
private static final String ATTR_ACCOUNT_ICON = "accountTypeIcon";
- private final boolean mIsExtension;
-
- private String mEditContactActivityClassName;
- private String mCreateContactActivityClassName;
private String mInviteContactActivity;
private String mInviteActionLabelAttribute;
private int mInviteActionLabelResId;
@@ -97,8 +90,8 @@ public class ExternalAccountType extends BaseAccountType {
private boolean mHasContactsMetadata;
private boolean mHasEditSchema;
- public ExternalAccountType(Context context, String resPackageName, boolean isExtension) {
- this(context, resPackageName, isExtension, null);
+ public ExternalAccountType(Context context, String resPackageName) {
+ this(context, resPackageName, null);
}
/**
@@ -110,9 +103,7 @@ public class ExternalAccountType extends BaseAccountType {
ExternalAccountType(
Context context,
String packageName,
- boolean isExtension,
XmlResourceParser injectedMetadata) {
- this.mIsExtension = isExtension;
this.resourcePackageName = packageName;
this.syncAdapterPackageName = packageName;
@@ -241,8 +232,7 @@ public class ExternalAccountType extends BaseAccountType {
* @param packageName name of the package containing the resource.
* @param xmlAttributeName attribute name which the resource came from. Used for logging.
*/
- @VisibleForTesting
- static int resolveExternalResId(
+ private static int resolveExternalResId(
Context context, String resourceName, String packageName, String xmlAttributeName) {
if (TextUtils.isEmpty(resourceName)) {
return -1; // Empty text is okay.
@@ -278,11 +268,6 @@ public class ExternalAccountType extends BaseAccountType {
return false;
}
- @Override
- public boolean isExtension() {
- return mIsExtension;
- }
-
@Override
public boolean areContactsWritable() {
return mHasEditSchema;
@@ -293,16 +278,6 @@ public class ExternalAccountType extends BaseAccountType {
return mHasContactsMetadata;
}
- @Override
- public String getEditContactActivityClassName() {
- return mEditContactActivityClassName;
- }
-
- @Override
- public String getCreateContactActivityClassName() {
- return mCreateContactActivityClassName;
- }
-
@Override
public String getInviteContactActivityClassName() {
return mInviteContactActivity;
@@ -365,11 +340,7 @@ public class ExternalAccountType extends BaseAccountType {
String attr = parser.getAttributeName(i);
String value = parser.getAttributeValue(i);
LogUtil.d(TAG, attr + "=" + value);
- if (ATTR_EDIT_CONTACT_ACTIVITY.equals(attr)) {
- mEditContactActivityClassName = value;
- } else if (ATTR_CREATE_CONTACT_ACTIVITY.equals(attr)) {
- mCreateContactActivityClassName = value;
- } else if (ATTR_INVITE_CONTACT_ACTIVITY.equals(attr)) {
+ if (ATTR_INVITE_CONTACT_ACTIVITY.equals(attr)) {
mInviteContactActivity = value;
} else if (ATTR_INVITE_CONTACT_ACTION_LABEL.equals(attr)) {
mInviteActionLabelAttribute = value;
diff --git a/java/com/android/contacts/common/model/account/FallbackAccountType.java b/java/com/android/contacts/common/model/account/FallbackAccountType.java
index ee3a7578d05f7539dc8b77ad474ad1f9a863c9cb..9e8af628f2f61caccd54cccd0efadb73a22cb36d 100644
--- a/java/com/android/contacts/common/model/account/FallbackAccountType.java
+++ b/java/com/android/contacts/common/model/account/FallbackAccountType.java
@@ -61,15 +61,6 @@ public class FallbackAccountType extends BaseAccountType {
this(context, null);
}
- /**
- * Used to compare with an {@link ExternalAccountType} built from a test contacts.xml. In order to
- * build {@link DataKind}s with the same resource package name, {@code resPackageName} is
- * injectable.
- */
- static AccountType createWithPackageNameForTest(Context context, String resPackageName) {
- return new FallbackAccountType(context, resPackageName);
- }
-
@Override
public boolean areContactsWritable() {
return true;
diff --git a/java/com/android/contacts/common/model/dataitem/DataItem.java b/java/com/android/contacts/common/model/dataitem/DataItem.java
index dc746055b58b7e050127b9cfe260563c02d7e4d0..43a472bde8c220f408485faf390a1f22fdc54725 100644
--- a/java/com/android/contacts/common/model/dataitem/DataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/DataItem.java
@@ -95,14 +95,6 @@ public class DataItem implements Collapser.Collapsible {
return mContentValues;
}
- public Long getRawContactId() {
- return mContentValues.getAsLong(Data.RAW_CONTACT_ID);
- }
-
- public void setRawContactId(long rawContactId) {
- mContentValues.put(Data.RAW_CONTACT_ID, rawContactId);
- }
-
/** Returns the data id. */
public long getId() {
return mContentValues.getAsLong(Data._ID);
@@ -139,16 +131,6 @@ public class DataItem implements Collapser.Collapsible {
return mContentValues.getAsInteger(key);
}
- /**
- * Indicates the carrier presence value for the current {@link DataItem}.
- *
- * @return {@link Data#CARRIER_PRESENCE_VT_CAPABLE} if the {@link DataItem} supports carrier video
- * calling, {@code 0} otherwise.
- */
- public int getCarrierPresence() {
- return mContentValues.getAsInteger(Data.CARRIER_PRESENCE);
- }
-
/**
* This builds the data string depending on the type of data item by using the generic DataKind
* object underneath.
@@ -161,25 +143,10 @@ public class DataItem implements Collapser.Collapsible {
return actionBody == null ? null : actionBody.toString();
}
- /**
- * This builds the data string(intended for display) depending on the type of data item. It
- * returns the same value as {@link #buildDataString} by default, but certain data items can
- * override it to provide their version of formatted data strings.
- *
- * @return Data string representing the data item, possibly formatted for display
- */
- public String buildDataStringForDisplay(Context context, DataKind kind) {
- return buildDataString(context, kind);
- }
-
public DataKind getDataKind() {
return mKind;
}
- public void setDataKind(DataKind kind) {
- mKind = kind;
- }
-
public Integer getTimesUsed() {
return mContentValues.getAsInteger(Entity.TIMES_USED);
}
diff --git a/java/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java b/java/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java
index f921b3c9da7999e29d853fd032dd1a319d07606e..42a0dcddfb771d7be7ff4f9138175e1b71357225 100644
--- a/java/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java
@@ -29,12 +29,4 @@ public class GroupMembershipDataItem extends DataItem {
/* package */ GroupMembershipDataItem(ContentValues values) {
super(values);
}
-
- public Long getGroupRowId() {
- return getContentValues().getAsLong(GroupMembership.GROUP_ROW_ID);
- }
-
- public String getGroupSourceId() {
- return getContentValues().getAsString(GroupMembership.GROUP_SOURCE_ID);
- }
}
diff --git a/java/com/android/contacts/common/model/dataitem/IdentityDataItem.java b/java/com/android/contacts/common/model/dataitem/IdentityDataItem.java
index 2badf92f77e8a8b04d390db1870464e64647a67c..81e6934f632165c0d5f5bbae50d01d7e4e498ab8 100644
--- a/java/com/android/contacts/common/model/dataitem/IdentityDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/IdentityDataItem.java
@@ -28,12 +28,4 @@ public class IdentityDataItem extends DataItem {
/* package */ IdentityDataItem(ContentValues values) {
super(values);
}
-
- public String getIdentity() {
- return getContentValues().getAsString(Identity.IDENTITY);
- }
-
- public String getNamespace() {
- return getContentValues().getAsString(Identity.NAMESPACE);
- }
}
diff --git a/java/com/android/contacts/common/model/dataitem/ImDataItem.java b/java/com/android/contacts/common/model/dataitem/ImDataItem.java
index 16b9fd0949a257d2eaa2061fcad13946b80bad1e..20a7a9a72e9954061b6a312038017db209a3b745 100644
--- a/java/com/android/contacts/common/model/dataitem/ImDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/ImDataItem.java
@@ -39,12 +39,6 @@ public class ImDataItem extends DataItem {
mCreatedFromEmail = createdFromEmail;
}
- public static ImDataItem createFromEmail(EmailDataItem item) {
- final ImDataItem im = new ImDataItem(new ContentValues(item.getContentValues()), true);
- im.setMimeType(Im.CONTENT_ITEM_TYPE);
- return im;
- }
-
public String getData() {
if (mCreatedFromEmail) {
return getContentValues().getAsString(Email.DATA);
@@ -70,15 +64,6 @@ public class ImDataItem extends DataItem {
return getContentValues().getAsString(Im.CUSTOM_PROTOCOL);
}
- public int getChatCapability() {
- Integer result = getContentValues().getAsInteger(Im.CHAT_CAPABILITY);
- return result == null ? 0 : result;
- }
-
- public boolean isCreatedFromEmail() {
- return mCreatedFromEmail;
- }
-
@Override
public boolean shouldCollapseWith(DataItem t, Context context) {
if (!(t instanceof ImDataItem) || mKind == null || t.getDataKind() == null) {
diff --git a/java/com/android/contacts/common/model/dataitem/OrganizationDataItem.java b/java/com/android/contacts/common/model/dataitem/OrganizationDataItem.java
index b3312483837e338da512560e1dcb9c83dce04dee..56060ec0c39fa31796c079b1b48f06d9f75fab40 100644
--- a/java/com/android/contacts/common/model/dataitem/OrganizationDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/OrganizationDataItem.java
@@ -41,24 +41,4 @@ public class OrganizationDataItem extends DataItem {
public String getTitle() {
return getContentValues().getAsString(Organization.TITLE);
}
-
- public String getDepartment() {
- return getContentValues().getAsString(Organization.DEPARTMENT);
- }
-
- public String getJobDescription() {
- return getContentValues().getAsString(Organization.JOB_DESCRIPTION);
- }
-
- public String getSymbol() {
- return getContentValues().getAsString(Organization.SYMBOL);
- }
-
- public String getPhoneticName() {
- return getContentValues().getAsString(Organization.PHONETIC_NAME);
- }
-
- public String getOfficeLocation() {
- return getContentValues().getAsString(Organization.OFFICE_LOCATION);
- }
}
diff --git a/java/com/android/contacts/common/model/dataitem/PhoneDataItem.java b/java/com/android/contacts/common/model/dataitem/PhoneDataItem.java
index ed32124906d5328c490e1e9640eb6281d7357647..a314f7ab3f4875d33f8766c9523265c05376ee9e 100644
--- a/java/com/android/contacts/common/model/dataitem/PhoneDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/PhoneDataItem.java
@@ -42,10 +42,6 @@ public class PhoneDataItem extends DataItem {
return getContentValues().getAsString(Phone.NORMALIZED_NUMBER);
}
- public String getFormattedPhoneNumber() {
- return getContentValues().getAsString(KEY_FORMATTED_PHONE_NUMBER);
- }
-
public String getLabel() {
return getContentValues().getAsString(Phone.LABEL);
}
@@ -59,18 +55,4 @@ public class PhoneDataItem extends DataItem {
getContentValues().put(KEY_FORMATTED_PHONE_NUMBER, formattedPhoneNumber);
}
}
-
- /**
- * Returns the formatted phone number (if already computed using {@link
- * #computeFormattedPhoneNumber}). Otherwise this method returns the unformatted phone number.
- */
- @Override
- public String buildDataStringForDisplay(Context context, DataKind kind) {
- final String formatted = getFormattedPhoneNumber();
- if (formatted != null) {
- return formatted;
- } else {
- return getNumber();
- }
- }
}
diff --git a/java/com/android/contacts/common/model/dataitem/PhotoDataItem.java b/java/com/android/contacts/common/model/dataitem/PhotoDataItem.java
index 0bf7a318b023325abddcb09b79700c9cd7f6ac27..8dab7200a5cdf626c897613b42195c5223ceae29 100644
--- a/java/com/android/contacts/common/model/dataitem/PhotoDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/PhotoDataItem.java
@@ -29,10 +29,6 @@ public class PhotoDataItem extends DataItem {
super(values);
}
- public Long getPhotoFileId() {
- return getContentValues().getAsLong(Photo.PHOTO_FILE_ID);
- }
-
public byte[] getPhoto() {
return getContentValues().getAsByteArray(Photo.PHOTO);
}
diff --git a/java/com/android/contacts/common/model/dataitem/SipAddressDataItem.java b/java/com/android/contacts/common/model/dataitem/SipAddressDataItem.java
index 0ca9eae6d71623fc16ffa567f89086a92a7a361b..ceff42f134ff67579406e30925988ef17ad55f58 100644
--- a/java/com/android/contacts/common/model/dataitem/SipAddressDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/SipAddressDataItem.java
@@ -30,10 +30,6 @@ public class SipAddressDataItem extends DataItem {
super(values);
}
- public String getSipAddress() {
- return getContentValues().getAsString(SipAddress.SIP_ADDRESS);
- }
-
public String getLabel() {
return getContentValues().getAsString(SipAddress.LABEL);
}
diff --git a/java/com/android/contacts/common/model/dataitem/StructuredNameDataItem.java b/java/com/android/contacts/common/model/dataitem/StructuredNameDataItem.java
index 22bf037f1b298509ff2504473c770c26d84b2410..a2ddf4365356ca9b629b250c314ba88087d1441b 100644
--- a/java/com/android/contacts/common/model/dataitem/StructuredNameDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/StructuredNameDataItem.java
@@ -43,14 +43,6 @@ public class StructuredNameDataItem extends DataItem {
getContentValues().put(StructuredName.DISPLAY_NAME, name);
}
- public String getGivenName() {
- return getContentValues().getAsString(StructuredName.GIVEN_NAME);
- }
-
- public String getFamilyName() {
- return getContentValues().getAsString(StructuredName.FAMILY_NAME);
- }
-
public String getPrefix() {
return getContentValues().getAsString(StructuredName.PREFIX);
}
@@ -63,34 +55,6 @@ public class StructuredNameDataItem extends DataItem {
return getContentValues().getAsString(StructuredName.SUFFIX);
}
- public String getPhoneticGivenName() {
- return getContentValues().getAsString(StructuredName.PHONETIC_GIVEN_NAME);
- }
-
- public void setPhoneticGivenName(String name) {
- getContentValues().put(StructuredName.PHONETIC_GIVEN_NAME, name);
- }
-
- public String getPhoneticMiddleName() {
- return getContentValues().getAsString(StructuredName.PHONETIC_MIDDLE_NAME);
- }
-
- public void setPhoneticMiddleName(String name) {
- getContentValues().put(StructuredName.PHONETIC_MIDDLE_NAME, name);
- }
-
- public String getPhoneticFamilyName() {
- return getContentValues().getAsString(StructuredName.PHONETIC_FAMILY_NAME);
- }
-
- public void setPhoneticFamilyName(String name) {
- getContentValues().put(StructuredName.PHONETIC_FAMILY_NAME, name);
- }
-
- public String getFullNameStyle() {
- return getContentValues().getAsString(StructuredName.FULL_NAME_STYLE);
- }
-
public boolean isSuperPrimary() {
final ContentValues contentValues = getContentValues();
return contentValues == null || !contentValues.containsKey(StructuredName.IS_SUPER_PRIMARY)
diff --git a/java/com/android/contacts/common/model/dataitem/StructuredPostalDataItem.java b/java/com/android/contacts/common/model/dataitem/StructuredPostalDataItem.java
index 18aae282c2d2053e5082c63854f4b5dc2a8ba7ce..d03d747250af19dd1b1492f2f037854fc0748f04 100644
--- a/java/com/android/contacts/common/model/dataitem/StructuredPostalDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/StructuredPostalDataItem.java
@@ -42,26 +42,10 @@ public class StructuredPostalDataItem extends DataItem {
return getContentValues().getAsString(StructuredPostal.STREET);
}
- public String getPOBox() {
- return getContentValues().getAsString(StructuredPostal.POBOX);
- }
-
- public String getNeighborhood() {
- return getContentValues().getAsString(StructuredPostal.NEIGHBORHOOD);
- }
-
public String getCity() {
return getContentValues().getAsString(StructuredPostal.CITY);
}
- public String getRegion() {
- return getContentValues().getAsString(StructuredPostal.REGION);
- }
-
- public String getPostcode() {
- return getContentValues().getAsString(StructuredPostal.POSTCODE);
- }
-
public String getCountry() {
return getContentValues().getAsString(StructuredPostal.COUNTRY);
}
diff --git a/java/com/android/contacts/common/res/values-af/strings.xml b/java/com/android/contacts/common/res/values-af/strings.xml
index a0fa00603e1b6e7136b5122e27bc40cf878f4837..faf4c84a9270b91f174aeb527a6d21d186c4fa6d 100644
--- a/java/com/android/contacts/common/res/values-af/strings.xml
+++ b/java/com/android/contacts/common/res/values-af/strings.xml
@@ -45,21 +45,9 @@
Vee gereeld-gekontaktes uit?Jy gaan die gereeld gekontak-lys in die Kontakte- en Foon-program uitvee en e-posprogramme dwing om jou adresvoorkeure van nuuts af te leer.Vee tans gereeld-gekontaktes uit...
- Beskikbaar
- Weg
- Besig
- Kontakte
- Topvoorgestel
- AnderGidsWerkgids
- Alle kontakte
- Voorstelle
- Ek(Geen naam nie)
- Bekyk kontak
- Alle kontakte met foonnommers
- WerkprofielkontakteBekyk opdateringsSlegs toestel, ongesinkroniseerdNaam
@@ -113,10 +101,6 @@
Klets met ICQKlets met JabberKlets
- Alle kontakte
- Kontakte in %s
- Kontakte in gepasmaakte aansig
- Enkel kontakSorteer volgensVoornaamVan
@@ -128,8 +112,6 @@
Vee soektog uitRekeningGebruik dit altyd vir oproepe
- Kies SIM vir hierdie oproep
- Onthou hierdie keuseOproep met \'n notaTik \'n nota om saam met oproep te stuur …STUUR EN BEL
@@ -141,5 +123,4 @@
%1$s-oortjie %2$d ongelese items. Video-oproep
- Deel en bel
diff --git a/java/com/android/contacts/common/res/values-am/strings.xml b/java/com/android/contacts/common/res/values-am/strings.xml
index aa7b19cfa3eae061103287323595d8d77e42f5df..c637b4642a5baf27e922fb0bf4e90b85c1270d8e 100644
--- a/java/com/android/contacts/common/res/values-am/strings.xml
+++ b/java/com/android/contacts/common/res/values-am/strings.xml
@@ -45,21 +45,9 @@
በተደጋጋሚ የተገኙ ይጽዱ?በእውቂያዎች እና በስልክ መተግበሪያዎች ውስጥ በተደጋጋሚ ያገኟቸውን ዝርዝር አጽድተው የኢሜይል መተግበሪያዎች ምርጫዎችዎን ከባዶ ተነስተው እንዲያውቁ ያስገድዱዋቸዋል።በተደጋጋሚ የተገኙትን በማጽዳት ላይ…
- የሚገኝ
- ወጣ ብሏል
- ተይዟል
- እውቅያዎች
- በብዛት የተጠቆሙ
- ሌላ ማውጫየሥራ ስልክ ማውጫ
- ሁሉም እውቅያዎች
- ጥቆማዎች
- እኔ(ስም የለም)
- ዕውቂያ ተመልከት
- የስልክ ቁጥር ያላቸው ሁሉም ዕውቂያዎች
- የሥራ መገለጫ ዕውቂያዎችዝማኔዎችን ይመልከቱመሳሪያ-ብቻ፣ አልሰመረምስም
@@ -113,10 +101,6 @@
ICQን በመጠቀም ይወያዩJabberን በመጠቀም 271448ውይይት
- ሁሉም ዕውቂያዎች
- በ%s ውስጥ ያሉ ዕውቂያዎች
- እውቂያዎች በብጁ እይታ
- ነጠላ እውቂያደርድር በየመጀመሪያ ስምየመጨረሻ ስም
@@ -128,8 +112,6 @@
ፍለጋን አጽዳመለያለጥሪዎች ሁልጊዜ ይህንን ተጠቀም
- ለዚህ ጥሪ ሲም ይምረጡ
- ይህን ምርጫ አስታውስከማስታወሻ ጋር ደውልከጥሪ ጋር ለመላክ የማስታወሻ ጽሑፍ ይተይቡ ...ላክ እና ደውል
@@ -141,5 +123,4 @@
የ%1$s ትር። %2$d ያልተነበቡ ንጥሎች። የቪዲዮ ጥሪ
- ያጋሩ እና ይደውሉ
diff --git a/java/com/android/contacts/common/res/values-ar/strings.xml b/java/com/android/contacts/common/res/values-ar/strings.xml
index 957a3e7c776e1711019a1a473d78e50cb814d0ea..0dde8860202cd6bc61b9fdef59d7f37b6502a96c 100644
--- a/java/com/android/contacts/common/res/values-ar/strings.xml
+++ b/java/com/android/contacts/common/res/values-ar/strings.xml
@@ -45,21 +45,9 @@
محو قائمة من يتم الاتصال بهم كثيرًا؟ستمحو قائمة من يتم الاتصال بهم كثيرًا في تطبيقي جهات الاتصال والهاتف، وستفرض على تطبيقات البريد الإلكتروني التعرف على تفضيلات توجيه الرسائل من البداية.جارٍ محو قائمة المُتصل بهم كثيرًا…
- متاح
- بالخارج
- مشغول
- جهات الاتصال
- أهم المقترحات
- غير ذلكالدليلدليل العمل
- جميع جهات الاتصال
- الاقتراحات
- أنا(بلا اسم)
- عرض جهة الاتصال
- جميع جهات الاتصال التي لها أرقام هواتف
- جهات الاتصال للملف الشخصي للعملعرض التحديثاتالجهاز فقط، غير متزامنةالاسم
@@ -113,10 +101,6 @@
المحادثة باستخدام ICQالمحادثة باستخدام Jabberمحادثة
- كل جهات الاتصال
- جهات الاتصال في %s
- جهات الاتصال في عرض مخصص
- جهة اتصال واحدةالترتيب بحسبالاسم الأولاسم العائلة
@@ -128,8 +112,6 @@
محو البحثالحساباستخدام هذا للمكالمات دائمًا
- اختيار شريحة SIM لهذه المكالمة
- تذكر هذا الاختيارمكالمة مع ملاحظةاكتب ملاحظة لإرسالها مع المكالمة ...إرسال واتصال
@@ -145,5 +127,4 @@
%1$s علامة تبويب. %2$d عناصر غير مقروءة. مكالمة فيديو
- المشاركة والاتصال
diff --git a/java/com/android/contacts/common/res/values-az/strings.xml b/java/com/android/contacts/common/res/values-az/strings.xml
index 762e9d3e288bff78825c62ec9e3d7bc0bbfeb240..46df32411af574be8cb166749d89e9db5522fb4c 100644
--- a/java/com/android/contacts/common/res/values-az/strings.xml
+++ b/java/com/android/contacts/common/res/values-az/strings.xml
@@ -45,21 +45,9 @@
Tez-tez ünsiyyət qurulanlar silinsin?Əlaqələr və Telefon proqramlarında tez-tez əlaqə saxlanılanların siyahısını siləcəksiniz və fraqmentdən ünvanlama seçimlərinizi öyrənmək üçün e-poçt proqramlarını məcbur edəcəksiniz.Tez-tez ünsiyyət qurulanlar silinir...
- Əlçatımlı
- Kənar
- Məşğul
- Kontaktlar
- Ən yaxşı Təkliflər
- DigərKataloqİş kataloqu
- Bütün kontaktlar
- Təkliflər
- Mən(ad yoxdur)
- Kontakta baxın
- Telefon nömrələri olan bütün kontaktlar
- İş profili kontaktlarıGüncəlləşmələri göstərYalnız cihaz, sinxronizasiya edilmirAd
@@ -113,10 +101,6 @@
ICQ üzərindən çatJabber üzərindən çatÇat
- Bütün kontaktlar
- %s adındakı kontaktlar
- Fərdi baxışdan kontakt
- Tək kontaktBunlardan biri üzrə sıralaAdSoyad
@@ -128,8 +112,6 @@
Axtarışı təmizləyinHesabHəmişə bu zənglər üçün istifadə edin
- Bu zəng üçün SIM seçin
- Bu seçimi yadda saxlayınQeyd ilə zəng edinZəng ilə göndərmək üçün qeyd yazın...GÖNDƏRİN VƏ ZƏNG EDİN
@@ -141,5 +123,4 @@
%1$s tabel. %2$d oxunmamış element. Video zəng
- Paylaşın və zəng edin
diff --git a/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml b/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml
index b809e6e6e9790732794fd13b93ac3ee93d13ea90..8526f21b1e867e9eceb7f45507dbfd4e4dc982b4 100644
--- a/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml
@@ -45,21 +45,9 @@
Brišete često kontaktirane?Obrisaćete listu često kontaktiranih u aplikacijama Kontakti i Telefon, pa će imejl aplikacije morati ponovo da prikupe informacije o adresiranju.Brisanje često kontaktiranih...
- Dostupan/na
- Odsutan/na
- Zauzet/a
- Kontakti
- Najpopularniji predlozi
- DrugoDirektorijumDirektorijum za Work
- Svi kontakti
- Predlozi
- Ja(Nema imena)
- Prikaži kontakt
- Svi kontakti sa brojevima telefona
- Kontakti sa profila za WorkPrikaži ažuriranjaSamo na uređaju, ne sinhronizuje seIme
@@ -113,10 +101,6 @@
Započni ćaskanje preko ICQ-aZapočni ćaskanje preko Jabber-aĆaskanje
- Svi kontakti
- Kontakti u grupi %s
- Kontakti u prilagođenom prikazu
- Pojedinačni kontaktSortiraj premaImenuPrezimenu
@@ -128,8 +112,6 @@
Brisanje pretrageNalogUvek koristi ovo za pozive
- Izaberite SIM za ovaj poziv
- Zapamti ovaj izborPoziv sa beleškomUnesite belešku koju ćete poslati uz poziv...POŠALJI I POZOVI
@@ -142,5 +124,4 @@
Kartica %1$s. %2$d nepročitanih stavki. Video poziv
- Deli i pozovi
diff --git a/java/com/android/contacts/common/res/values-be/strings.xml b/java/com/android/contacts/common/res/values-be/strings.xml
index 3e6c8f2a43304aa3c929b1ee060a0f15eb7212b0..e819a116616b6585c8eec78b018b2f9756c30a59 100644
--- a/java/com/android/contacts/common/res/values-be/strings.xml
+++ b/java/com/android/contacts/common/res/values-be/strings.xml
@@ -45,21 +45,9 @@
Выдалiць частыя кантакты?Вы выдалiце найчасцей ужываныя кантакты ў праграмах Кантакты i Тэлефон i прымусiце праграмы па працы з электроннай поштай вывучыць вашы налады адрасацыi з нуля.Выдаленне частых кантактаў...
- Даступны
- Адсутнічае
- Заняты
- Кантакты
- Лепшыя прапановы
- ІншаеДырэкторыяПрацоўны каталог
- Усе кантакты
- Прапановы
- Я(Без назвы)
- Прагледзець кантакт
- Усе кантакты з нумарамі тэлефонаў
- Кантакты працоўнага профілюПрагляд абнаўленняўТолькі прылада, несінхранізаванаяІмя
@@ -113,10 +101,6 @@
Чат праз ICQЧат у JabberГутарка
- Усе кантакты
- Кантакты карыстальнiка %s
- Кантакты ў карыстальнiцкiм выглядзе
- Адзіночны кантактСартаваць паІменіПрозвішчы
@@ -128,8 +112,6 @@
Ачысціць пошукУліковы запісЗаўсёды выкарыст. гэта для выклікаў
- Выбраць SIM-карту для выкліку
- Запомніць гэты выбарВыклік з нататкайУвесці нататку для адпраўкі з выклікам…АДПРАВІЦЬ І ВЫКЛІКАЦЬ
@@ -143,5 +125,4 @@
Укладка %1$s. %2$d непрачытанага элемента. Відэавыклік
- Абагуліць і выклікаць
diff --git a/java/com/android/contacts/common/res/values-bg/strings.xml b/java/com/android/contacts/common/res/values-bg/strings.xml
index ac3f79bc48308814cc61aeaccf55fa8773aa7c8d..04d68db716b7b28fe64ffac73b38e3df873a2eda 100644
--- a/java/com/android/contacts/common/res/values-bg/strings.xml
+++ b/java/com/android/contacts/common/res/values-bg/strings.xml
@@ -45,21 +45,9 @@
Да се изчистят ли често търсените?Ще изчистите списъка с често търсените в приложенията Контакти и Телефон и ще принудите приложенията за имейл да научат предпочитанията ви за адресите, започвайки отначало.Често търсените се изчистват…
- Налице
- Отсъства
- Зает/а
- Контакти
- Водещи предложения
- ДругиДиректорияСлужебен указател
- Всички контакти
- Предложения
- Аз(Няма име)
- Преглед на контакта
- Всички контакти с телефонни номера
- Контакти в служебния потребителски профилПреглед на актуализациитеСамо на устройството, несинхронизиранИме
@@ -113,10 +101,6 @@
Чат по ICQЧат по JabberЧат
- Всички контакти
- Контакти във: %s
- Контакти в персонал. изглед
- Един контактСортиране поСобствено имеФамилно име
@@ -128,8 +112,6 @@
Изчистване на търсенетоПрофилВинаги да се използва за обаждания
- Изберете SIM карта за това обаждане
- Запомняне на този изборОбаждане, включващо бележкаНапишете придружаваща бележка, която ще се изпрати при извършване на обаждането...ИЗПРАЩАНЕ И ОБАЖДАНЕ
@@ -141,5 +123,4 @@
Раздел „%1$s“. %2$d непрочетени елемента. Видеообаждане
- Споделяне и обаждане
diff --git a/java/com/android/contacts/common/res/values-bn/strings.xml b/java/com/android/contacts/common/res/values-bn/strings.xml
index c6670a1678cf5c18b44eee1fc1671c5830e37448..a8e86b0e6a3738c15a7747964860fbb2cb11d98d 100644
--- a/java/com/android/contacts/common/res/values-bn/strings.xml
+++ b/java/com/android/contacts/common/res/values-bn/strings.xml
@@ -45,21 +45,9 @@
ঘন ঘন যোগাযোগ করা হয়েছে এমন পরিচিতিগুলিকে সাফ করবেন?পরিচিতি এবং ফোন অ্যাপ্লিকেশানগুলি থেকে আপনি ঘন ঘন যোগাযোগ করা পরিচিতির তালিকা সাফ করবেন, এবং ইমেল অ্যাপ্লিকেশানগুলিকে আবার শুরু থেকে আপনার ঠিকানা অভিরুচি জানতে বাধ্য করবেন৷ঘন ঘন যোগাযোগ করা পরিচিতিগুলিকে সাফ করা হচ্ছে…
- উপলব্ধ
- অন্যত্র
- ব্যস্ত
- পরিচিতিগুলি
- শীর্ষস্থানীয় প্রস্তাবনা
- অন্যান্যডিরেক্টরিকাজের সংগ্রহ
- সকল পরিচিতি
- প্রস্তাবনাগুলি
- আমি(কোনও নাম নেই)
- পরিচিতি দেখুন
- ফোন নম্বর সহ সমস্ত পরিচিতি
- কর্মস্থলের প্রোফাইলের পরিচিতিগুলিআপডেটগুলি দেখুনশুধুমাত্র ডিভাইসে রয়েছে, সিঙ্ক করা হয়নিনাম
@@ -113,10 +101,6 @@
ICQ ব্যবহার করে চ্যাট করুনJabber ব্যবহার করে চ্যাট করুনচ্যাট করুন
- সকল পরিচিতি
- %s এ পরিচিতিগুলি
- কাস্টম দৃশ্যে পরিচিতিগুলি
- একক পরিচিতিএই অনুসারে বাছুনপ্রথম নামপদবি
@@ -128,8 +112,6 @@
সার্চ সাফ করুনঅ্যাকাউন্টকলের জন্য সবসময় এটি ব্যবহার করুন
- এই কলের জন্য সিম বেছে নিন
- এই পছন্দটি মনে রাখবএকটি নোট সহ কল করুনকলের সাথে পাঠানোর জন্য একটি নোট লিখুন ...পাঠান এবং কল করুন
@@ -141,5 +123,4 @@
%1$s ট্যাব৷ %2$dটি অপঠিত আইটেম৷ ভিডিও কল
- শেয়ার এবং কল করুন
diff --git a/java/com/android/contacts/common/res/values-bs/strings.xml b/java/com/android/contacts/common/res/values-bs/strings.xml
index 6ef6bdd9667e2149202757ee3d67200e9c1087ef..fea9501e39e1e54d3c2752d323a6c270dfc66d09 100644
--- a/java/com/android/contacts/common/res/values-bs/strings.xml
+++ b/java/com/android/contacts/common/res/values-bs/strings.xml
@@ -45,21 +45,9 @@
Obrisati često kontaktirane osobe?Obrisat ćete listu često kontaktiranih osoba u aplikaciji Kontakti i Aplikaciji za telefon, pa će aplikacije za e-poštu morati ispočetka učiti vaše postavke adresa.Brisanje često kontaktiranih osoba…
- Dostupno
- Odsutan
- Zauzeto
- Kontakti
- Najbolji prijedlozi
- OstaloImenikPoslovni imenik
- Svi kontakti
- Prijedlozi
- Ja(Bez imena)
- Prikaži kontakt
- Svi kontakti s brojevima telefona
- Kontakti radnog profilaPrikaži ažuriranjaSamo uređaj, nesinhroniziranIme
@@ -113,10 +101,6 @@
Chat putem aplikacije ICQChat putem aplikacije JabberChat
- Svi kontakti
- Kontakti na računu %s
- Kontakti u prilagođenom prikazu
- Jedan kontaktPoredaj poImePrezime
@@ -128,8 +112,6 @@
Obriši pretraguRačunUvijek koristi ovu karticu za pozive
- Odaberite SIM za ovaj poziv
- Zapamti ovaj odabirPoziv s bilješkomUpišite bilješku koja će se poslati uz poziv ...POŠALJI I POZOVI
@@ -142,5 +124,4 @@
Kartica %1$s. %2$d nepročitanih stavki. Video poziv
- Dijeli i pozovi
diff --git a/java/com/android/contacts/common/res/values-ca/strings.xml b/java/com/android/contacts/common/res/values-ca/strings.xml
index 77bbaa89ab349d37c4a0555c75deef132e6b1366..835d130e0cfed4735b988d99fc0096cecb0608bd 100644
--- a/java/com/android/contacts/common/res/values-ca/strings.xml
+++ b/java/com/android/contacts/common/res/values-ca/strings.xml
@@ -45,21 +45,9 @@
Vols esborrar els contactes freqüents?S\'esborrarà la llista de contactes més freqüents a les aplicacions Contactes i Telèfon i es forçarà les aplicacions de correu electrònic a obtenir informació nova sobre les teves preferències pel que fa a adreces.S\'estan esborrant contactes freq...
- Disponible
- Absent
- Ocupat
- Contactes
- Suggeriments principals
- AltresDirectoriDirectori de la feina
- Tots els contactes
- Suggeriments
- Jo(Sense nom)
- Visualitza el contacte
- Tots els contactes que tenen números de telèfon
- Contactes del perfil professionalMostra les actualitzacionsNomés al dispositiu, no se sincronitzaNom
@@ -113,10 +101,6 @@
Xateja amb ICQXateja amb JabberXat
- Tots els contactes
- Contactes a %s
- Contactes en visualització personalitzada
- Un sol contacteOrdena perNomCognoms
@@ -128,8 +112,6 @@
Esborra la cercaCompteUtilitza sempre per a les trucades
- Tria la SIM per a aquesta trucada
- Recorda aquesta seleccióTrucada amb una notaEscriu una nota per enviar-la juntament amb la trucada...ENVIA I TRUCA
@@ -141,5 +123,4 @@
Pestanya %1$s: %2$d elements no llegits Videotrucada
- Comparteix i truca
diff --git a/java/com/android/contacts/common/res/values-cs/strings.xml b/java/com/android/contacts/common/res/values-cs/strings.xml
index f8492e8f68bd6a70a18016a58e31a4ff0013a910..f0a6db9988adef6e02d2436b3eb37fc45ad1e685 100644
--- a/java/com/android/contacts/common/res/values-cs/strings.xml
+++ b/java/com/android/contacts/common/res/values-cs/strings.xml
@@ -45,21 +45,9 @@
Vymazat často kontaktované osoby?Vymažete seznam často kontaktovaných osob v aplikacích Kontakty a Telefon a e-mailové aplikace budou muset nastavení adresátů vytvořit znovu.Mazání často kontaktovaných osob...
- K dispozici
- Pryč
- Nemám čas
- Kontakty
- Hlavní návrhy
- OstatníAdresářPracovní adresář
- Všechny kontakty
- Návrhy
- Já(Žádné jméno)
- Zobrazit kontakt
- Kontakty s telefonními čísly
- Kontakty z pracovního profiluZobrazit aktualizacePouze na zařízení, nesynchronizovánoJméno
@@ -113,10 +101,6 @@
Chatovat pomocí ICQChatovat pomocí JabberuChat
- Všechny kontakty
- Kontakty v účtu %s
- Kontakty ve vlastním zobrazení
- Jeden kontaktSeřadit podleJménoPříjmení
@@ -128,8 +112,6 @@
Vymazat vyhledáváníÚčetVždy používat pro hovory
- Vyberte SIM kartu na tento hovor
- Zapamatovat tuto volbuVolání s poznámkouZadejte poznámku, která se odešle pomocí volání…ODESLAT A ZAVOLAT
@@ -143,5 +125,4 @@
Karta %1$s. %2$d nepřečtených položek. Videohovor
- Sdílet a zavolat
diff --git a/java/com/android/contacts/common/res/values-da/strings.xml b/java/com/android/contacts/common/res/values-da/strings.xml
index 66ed252131f1d2d8b08c0e5778c69d054d251d70..1327ef4ed1c2f7c393021cf6e15832715dcac10c 100644
--- a/java/com/android/contacts/common/res/values-da/strings.xml
+++ b/java/com/android/contacts/common/res/values-da/strings.xml
@@ -45,21 +45,9 @@
Vil du rydde de ofte kontaktede?Hvis du gør dette, rydder du listen over personer, som du ofte kontakter, i appene Kontaktpersoner og Opkald. Du vil samtidig tvinge e-mailapps til at lære dine adressepræferencer fra bunden.Ofte kontaktede personer ryddes…
- Tilgængelig
- Ikke til stede
- Optaget
- Kontakter
- Populære forslag
- AndreIndeksIndeks for arbejde
- Alle kontakter
- Forslag
- Mig(Intet navn)
- Se kontaktperson
- Alle kontaktpersoner med telefonnumre
- Kontaktpersoner for arbejdsprofilSe opdateringerKun enhed, ikke synkroniseretNavn
@@ -113,10 +101,6 @@
Chat ved hjælp af ICQChat ved hjælp af JabberChat
- Alle kontaktpersoner
- Kontaktpersoner i %s
- Kontakter i tilpasset visning
- Enkelt kontaktpersonSortér efterFornavnEfternavn
@@ -128,8 +112,6 @@
Ryd søgningKontoBrug altid ved opkald
- Vælg SIM-kort til dette opkald
- Husk dette valgRing med en noteAngiv en note, som skal sendes ved opkald...SEND OG RING
@@ -141,5 +123,4 @@
Fanen %1$s. %2$d ulæste elementer. Videoopkald
- Del og ring
diff --git a/java/com/android/contacts/common/res/values-de/strings.xml b/java/com/android/contacts/common/res/values-de/strings.xml
index 9554c5d37476776ed9f43e8be32899bb65347d95..e9adf0c00581d6197752c0f87dd001a385e2be88 100644
--- a/java/com/android/contacts/common/res/values-de/strings.xml
+++ b/java/com/android/contacts/common/res/values-de/strings.xml
@@ -45,21 +45,9 @@
Liste \"Häufig kontaktiert\" löschen?Du löschst die Liste \"Häufig kontaktiert\" in den Apps \"Kontakte\" und \"Telefon\" und bewirkst so ein Zurücksetzen deiner Adresseinstellungen für E-Mail-Apps.\"Häufig kontaktiert\" wird gelöscht…
- Verfügbar
- Abwesend
- Beschäftigt
- Kontakte
- Top-Vorschläge
- AndereVerzeichnisVerzeichnis geschäftlicher Kontakte
- Alle Kontakte
- Vorschläge
- Ich(Kein Name)
- Kontakt ansehen
- Alle Kontakte mit Telefonnummern
- ArbeitsprofilkontakteUpdates ansehenNur auf dem Gerät, nicht synchronisiertName
@@ -113,10 +101,6 @@
Über ICQ chattenÜber Jabber chattenChat
- Alle Kontakte
- Kontakte in %s
- Kontakte in benutzerdef. Ansicht
- Einzelner KontaktSortieren nachVornameNachname
@@ -128,8 +112,6 @@
Suche zurücksetzenKontoDiese SIM für alle Anrufe verwenden
- SIM für diesen Anruf auswählen
- Auswahl speichernMit einer Notiz anrufenNotiz eingeben, die beim Anrufen gesendet wird...SENDEN UND ANRUFEN
@@ -141,5 +123,4 @@
Tab \"%1$s\". %2$d ungelesene Elemente. Videoanruf
- Teilen und anrufen
diff --git a/java/com/android/contacts/common/res/values-el/strings.xml b/java/com/android/contacts/common/res/values-el/strings.xml
index 727b69dbaadbda157453cffcb50439c66de97007..73f17cb722c69373858169fc87729c489dc63207 100644
--- a/java/com/android/contacts/common/res/values-el/strings.xml
+++ b/java/com/android/contacts/common/res/values-el/strings.xml
@@ -45,21 +45,9 @@
Διαγραφή ατόμων με συχνή επικοινωνία;Θα διαγράψετε τη λίστα συχνών επαφών στις εφαρμογές Επαφές και Τηλέφωνο και θα επιβάλλετε στις εφαρμογές ηλεκτρονικού ταχυδρομείου να μάθουν τις προτιμήσεις διευθύνσεών σας από την αρχή,Διαγρ. ατόμων με συχνή επικοινωνία…
- Διαθέσιμος
- Μη διαθέσιμος
- Απασχολημένος
- Επαφές
- Κορυφαίες προτάσεις
- ΆλλοΚατάλογοςΚατάλογος εργασίας
- Όλες οι επαφές
- Προτάσεις
- Εγώ(Χωρίς όνομα)
- Προβολή επαφής
- Όλες οι επαφές με αριθμούς τηλεφώνου
- Επαφές προφίλ εργασίαςΠροβολή ενημερώσεωνΜόνο στη συσκευή, χωρίς συγχρονισμόΌνομα
@@ -113,10 +101,6 @@
Συζήτηση μέσω ICQΣυζήτηση μέσω JabberΣυζήτηση
- Όλες οι επαφές
- Επαφές στο %s
- Επαφές σε προσ/νη προβολή
- Μία επαφήΤαξινόμηση κατάΌνομαΕπώνυμο
@@ -128,8 +112,6 @@
Διαγραφή αναζητήσεωνΛογαριασμόςΧρήση πάντα για κλήσεις
- Επιλέξτε SIM για αυτήν την κλήση
- Διατήρηση αυτής της ρύθμισηςΚλήση με σημείωσηΠληκτρολογήστε μια σημείωση για αποστολή με την κλήση…ΑΠΟΣΤΟΛΗ ΚΑΙ ΚΛΗΣΗ
@@ -141,5 +123,4 @@
Καρτέλα %1$s. %2$d μη αναγνωσμένα στοιχεία. Βιντεοκλήση
- Κοινοποίηση και κλήση
diff --git a/java/com/android/contacts/common/res/values-en-rAU/strings.xml b/java/com/android/contacts/common/res/values-en-rAU/strings.xml
index 2729522f25425c540c34b9f40336880fb86ee464..38e4ca0224468684818ac01f9a71e8d10dcbd815 100644
--- a/java/com/android/contacts/common/res/values-en-rAU/strings.xml
+++ b/java/com/android/contacts/common/res/values-en-rAU/strings.xml
@@ -45,21 +45,9 @@
Clear frequently contacted?You\'ll clear the frequently contacted list in the Contacts and Phone apps, and force email apps to learn your addressing preferences from scratch.Clearing frequently contacted…
- Available
- Away
- Busy
- Contacts
- Top suggested
- OtherDirectoryWork directory
- All contacts
- Suggestions
- Me(No name)
- View contact
- All contacts with phone numbers
- Work profile contactsView updatesDevice only, unsyncedName
@@ -113,10 +101,6 @@
Chat using ICQChat using JabberChat
- All contacts
- Contacts in %s
- Contacts in customised view
- Single contactSort byFirst nameSurname
@@ -128,8 +112,6 @@
Clear searchAccountAlways use this for calls
- Choose SIM for this call
- Remember this choiceCall with a noteType a note to send with call ...SEND & CALL
@@ -141,5 +123,4 @@
%1$s tab. %2$d unread items. Video call
- Share and call
diff --git a/java/com/android/contacts/common/res/values-en-rGB/strings.xml b/java/com/android/contacts/common/res/values-en-rGB/strings.xml
index 2729522f25425c540c34b9f40336880fb86ee464..38e4ca0224468684818ac01f9a71e8d10dcbd815 100644
--- a/java/com/android/contacts/common/res/values-en-rGB/strings.xml
+++ b/java/com/android/contacts/common/res/values-en-rGB/strings.xml
@@ -45,21 +45,9 @@
Clear frequently contacted?You\'ll clear the frequently contacted list in the Contacts and Phone apps, and force email apps to learn your addressing preferences from scratch.Clearing frequently contacted…
- Available
- Away
- Busy
- Contacts
- Top suggested
- OtherDirectoryWork directory
- All contacts
- Suggestions
- Me(No name)
- View contact
- All contacts with phone numbers
- Work profile contactsView updatesDevice only, unsyncedName
@@ -113,10 +101,6 @@
Chat using ICQChat using JabberChat
- All contacts
- Contacts in %s
- Contacts in customised view
- Single contactSort byFirst nameSurname
@@ -128,8 +112,6 @@
Clear searchAccountAlways use this for calls
- Choose SIM for this call
- Remember this choiceCall with a noteType a note to send with call ...SEND & CALL
@@ -141,5 +123,4 @@
%1$s tab. %2$d unread items. Video call
- Share and call
diff --git a/java/com/android/contacts/common/res/values-en-rIN/strings.xml b/java/com/android/contacts/common/res/values-en-rIN/strings.xml
index 2729522f25425c540c34b9f40336880fb86ee464..38e4ca0224468684818ac01f9a71e8d10dcbd815 100644
--- a/java/com/android/contacts/common/res/values-en-rIN/strings.xml
+++ b/java/com/android/contacts/common/res/values-en-rIN/strings.xml
@@ -45,21 +45,9 @@
Clear frequently contacted?You\'ll clear the frequently contacted list in the Contacts and Phone apps, and force email apps to learn your addressing preferences from scratch.Clearing frequently contacted…
- Available
- Away
- Busy
- Contacts
- Top suggested
- OtherDirectoryWork directory
- All contacts
- Suggestions
- Me(No name)
- View contact
- All contacts with phone numbers
- Work profile contactsView updatesDevice only, unsyncedName
@@ -113,10 +101,6 @@
Chat using ICQChat using JabberChat
- All contacts
- Contacts in %s
- Contacts in customised view
- Single contactSort byFirst nameSurname
@@ -128,8 +112,6 @@
Clear searchAccountAlways use this for calls
- Choose SIM for this call
- Remember this choiceCall with a noteType a note to send with call ...SEND & CALL
@@ -141,5 +123,4 @@
%1$s tab. %2$d unread items. Video call
- Share and call
diff --git a/java/com/android/contacts/common/res/values-es-rUS/strings.xml b/java/com/android/contacts/common/res/values-es-rUS/strings.xml
index 6e046cf2c1c454b6e6b2ea84c589385b45c80fbc..a7680b83ca652eaed8e453ba1b2e9e962e3f74ea 100644
--- a/java/com/android/contacts/common/res/values-es-rUS/strings.xml
+++ b/java/com/android/contacts/common/res/values-es-rUS/strings.xml
@@ -45,21 +45,9 @@
¿Borrar contactos frecuentes?Borrarás la lista de personas con las que te pones en contacto frecuentemente de las aplicaciones Contactos y Teléfono. Además, tus aplicaciones de correo deberán establecer tus preferencias nuevamente.Borrando contactos frecuentes…
- Disponible
- Ausente
- Ocupado
- Contactos
- Principales lugares sugeridos
- OtrosDirectorioDirectorio del trabajo
- Todos los contactos
- Sugerencias
- Yo(Sin nombre)
- Ver contacto
- Todos los contactos con número de teléfono
- Contactos del perfil de trabajoVer actualizacionesSolo en el dispositivo, no sincronizadoNombre
@@ -113,10 +101,6 @@
Chat mediante ICQChat mediante JabberChat
- Todos los contactos
- Contactos en %s
- Contactos en vista personalizada
- Contacto únicoOrdenar porNombreApellido
@@ -128,8 +112,6 @@
Borrar la búsquedaCuentaUsar siempre para llamadas
- Elige una SIM para realizar esta llamada
- Recordar esta opciónLlamada con una notaEscribe una nota para enviar con la llamada…ENVIAR Y LLAMAR
@@ -141,5 +123,4 @@
Pestaña %1$s. %2$d elementos no leídos. Videollamada
- Compartir y llamar
diff --git a/java/com/android/contacts/common/res/values-es/strings.xml b/java/com/android/contacts/common/res/values-es/strings.xml
index ce370d673b75b9de8ef1d42daa6a2691c1a59db6..d215e873d4ec63245af6edb295655b3789c21f68 100644
--- a/java/com/android/contacts/common/res/values-es/strings.xml
+++ b/java/com/android/contacts/common/res/values-es/strings.xml
@@ -45,21 +45,9 @@
¿Borrar contactos frecuentes?Vas a borrar la lista de contactos frecuentes de las aplicaciones Contactos y Teléfono y obligarás a las aplicaciones de correo electrónico a que memoricen tus preferencias de nuevo.Borrando contactos frecuentes…
- Disponible
- Ausente
- Ocupado
- Contactos
- Sugerencias principales
- OtroDirectorioDirectorio de trabajo
- Todos los contactos
- Sugerencias
- Yo(Sin nombre)
- Ver contacto
- Todos los contactos con número
- Contactos del perfil de trabajoVer actualizacionesSolo está en el dispositivo, no se sincronizaNombre
@@ -113,10 +101,6 @@
Chatear con ICQChatear con JabberChat
- Todos los contactos
- Contactos en %s
- Contactos en vista personalizada
- Contacto únicoOrdenar porNombreApellidos
@@ -128,8 +112,6 @@
Borrar la búsquedaCuentaUsar siempre esta para llamadas
- Elegir SIM para esta llamada
- Recordar esta opciónLlamada con una notaEscribe una nota para enviarla con la llamada...ENVIAR Y LLAMAR
@@ -141,5 +123,4 @@
Pestaña %1$s. %2$d elementos no leídos. Videollamada
- Compartir y llamar
diff --git a/java/com/android/contacts/common/res/values-et/strings.xml b/java/com/android/contacts/common/res/values-et/strings.xml
index 9a905fca52d85b45607537085f3f99a87bb95456..005dce173ed08b0c797a1ca2e0784ed57166275b 100644
--- a/java/com/android/contacts/common/res/values-et/strings.xml
+++ b/java/com/android/contacts/common/res/values-et/strings.xml
@@ -45,21 +45,9 @@
Kas kustutada sagedased kontaktid?Kustutate rakendustes Kontaktid ja Telefon sagedaste kontaktide loendi, mistõttu meilirakendused peavad teie adresseerimiseelistused uuesti omandama.Saged. kontaktide kustutamine ...
- Saadaval
- Eemal
- Hõivatud
- Kontaktid
- Populaarsed soovitused
- MuuKataloogTöökontaktide kataloog
- Kõik kontaktid
- Soovitused
- Mina(Nimi puudub)
- Kuva kontakt
- Kõik telefoninumbritega kontaktid
- Tööprofiili kontaktidKuva värskendusedAinult seadmes, sünkroonimataNimi
@@ -113,10 +101,6 @@
Vestlus ICQ-d kasutadesVestlus Jabberit kasutadesVestlus
- Kõik kontaktid
- Konto %s kontaktid
- Kontaktid kohandatud vaates
- Üks kontaktSortimisalusEesnimiPerekonnanimi
@@ -128,8 +112,6 @@
Otsingu kustutamineKontoKasuta helistamiseks alati seda
- Valige selle kõne jaoks SIM-kaart
- Jäta valik meeldeKõne koos märkusegaSisestage märkus, mis koos kõnega saata ...SAADA JA HELISTA
@@ -141,5 +123,4 @@
Vahekaart %1$s. %2$d lugemata üksust. Videokõne
- Jagamine ja helistamine
diff --git a/java/com/android/contacts/common/res/values-eu/strings.xml b/java/com/android/contacts/common/res/values-eu/strings.xml
index 138149f216c3cfa5622cb39f0bbea397e7004710..421ab482cc6b41ac397150f640578d34e73de522 100644
--- a/java/com/android/contacts/common/res/values-eu/strings.xml
+++ b/java/com/android/contacts/common/res/values-eu/strings.xml
@@ -45,21 +45,9 @@
Sarri erabilitako kontaktuak garbitu?Kontaktuak eta Telefonoa aplikazioetako sarri erabilitako kontaktuen zerrenda garbituko duzu; beraz, posta elektronikoaren aplikazioek helbideen hobespenak hutsetik ikasi beharko dituzte.Sarri erabilitako kontaktuak garbitzen…
- Libre
- Kanpoan
- Okupatuta
- Kontaktuak
- Iradokizun garrantzitsuenak
- Beste batDirektorioaLaneko kontaktuak
- Kontaktu guztiak
- Iradokizunak
- Ni(Izenik ez)
- Ikusi kontaktua
- Telefono-zenbakiak dituzten kontaktu guztiak
- Laneko profileko kontaktuakIkusi berritasunakGailuan soilik egongo da; ez da sinkronizatukoIzena
@@ -113,10 +101,6 @@
Txateatu ICQ bidezTxateatu Jabber bidezTxateatu
- Kontaktu guztiak
- Kontu honetako kontaktuak: %s
- Ikuspegi pertsonalizatuko kontaktuak
- Kontaktu bakarraOrdenatzeko irizpideaIzenaAbizena
@@ -128,8 +112,6 @@
Garbitu bilaketaKontuaErabili beti hau deietarako
- Aukeratu dei hau egiteko SIM txartela
- Gogoratu aukera hauEgin deia oharrarekinIdatzi deiarekin batera bidali beharreko oharra…BIDALI ETA DEITU
@@ -141,5 +123,4 @@
%1$s fitxa. Irakurri gabeko %2$d elementu. Bideo-deia
- Partekatu eta deitu
diff --git a/java/com/android/contacts/common/res/values-fa/strings.xml b/java/com/android/contacts/common/res/values-fa/strings.xml
index 531b1f1bffe9dcf45778216a8816284ebb174355..7b0f930b17abdf8cb4be1d7b1818c6624198a7bd 100644
--- a/java/com/android/contacts/common/res/values-fa/strings.xml
+++ b/java/com/android/contacts/common/res/values-fa/strings.xml
@@ -45,21 +45,9 @@
مکرراً تماسگرفتهها پاک شود؟فهرست افرادی را که مکرر با آنها تماس گرفتهاید در برنامههای «مخاطبین» و «تلفن» پاک خواهید کرد و برنامههای رایانامه مجبور میشوند که تنظیمات برگزیده آدرسدهی شما را از اول یاد بگیرند.درحال پاک کردن مکرراً تماسگرفته…
- در دسترس
- غایب
- مشغول
- مخاطبین
- پیشنهادهای برتر
- سایر مواردفهرستفهرست کار
- همه مخاطبین
- پیشنهادها
- من(بدون نام)
- مشاهده مخاطب
- همه مخاطبین دارای شماره تلفن
- مخاطبین نمایه کاریمشاهده بهروزرسانیهافقط دستگاه، بدون همگامسازینام
@@ -113,10 +101,6 @@
گپ با استفاده از ICQگپ با استفاده از Jabberگپ
- همه مخاطبین
- مخاطبین در %s
- مخاطبین در نمای سفارشی
- مخاطب تکیمرتبسازی براساسنامنام خانوادگی
@@ -128,8 +112,6 @@
پاک کردن جستجوحسابهمیشه این سیم برای تماس استفاده شود
- سیمکارتی برای این تماس انتخاب کنید
- این گزینه به خاطر سپرده شودتماس به همراه یادداشتیادداشتی بنویسید که همراه تماس ارسال شود…ارسال و تماس
@@ -141,5 +123,4 @@
برگه «%1$s». %2$d مورد خواندهنشده. تماس ویدیویی
- اشتراکگذاری و تماس
diff --git a/java/com/android/contacts/common/res/values-fi/strings.xml b/java/com/android/contacts/common/res/values-fi/strings.xml
index f62b848a76e346d93e1d758a60e9f7fb9d004095..c7a2af5149f4329f623d42614f3ea9226a22af38 100644
--- a/java/com/android/contacts/common/res/values-fi/strings.xml
+++ b/java/com/android/contacts/common/res/values-fi/strings.xml
@@ -45,21 +45,9 @@
Tyhjennetäänkö usein käytetyt?Toiminto tyhjentää Yhteystiedot- ja Puhelin-sovellusten usein käytettyjen kontaktien luettelon. Lisäksi sähköpostisovellukset pakotetaan opettelemaan osoiteasetuksesi uudestaan.Tyhjennetään usein käytetyt...
- Saatavilla
- Poissa
- Varattu
- Yhteystiedot
- Kiinnostavimmat ehdotukset
- MuuOsoitekirjaTyöhakemisto
- Kaikki yhteystiedot
- Ehdotukset
- Minä(Ei nimeä)
- Näytä yhteystieto
- Kaikki kontaktit, joilla on puhelinnumero
- Työprofiilin yhteystiedotNäytä päivityksetVain laitteessa, ei synkronoidaNimi
@@ -113,10 +101,6 @@
Keskustele ICQ:n avullaKeskustele Jabberin avullaKeskustelu
- Yhteystiedot
- Yhteystiedot tilissä %s
- Muokatun näkymän yhteystiedot
- Yksi yhteystietoLajitteluperusteEtunimiSukunimi
@@ -128,8 +112,6 @@
Tyhjennä hakuTiliKäytä kaikille puheluille
- Valitse SIM tätä puhelua varten
- Muista valintaSoita ja lähetä muistiinpanoKirjoita muistiinpano lähetettäväksi puhelun kanssa…LÄHETÄ JA SOITA
@@ -141,5 +123,4 @@
%1$s-välilehti. %2$d lukematonta kohdetta. Videopuhelu
- Jaa ja soita
diff --git a/java/com/android/contacts/common/res/values-fr-rCA/strings.xml b/java/com/android/contacts/common/res/values-fr-rCA/strings.xml
index 8b2918633631107e73bfcd59f4e6acead5f0eda0..58fabf346b43954264d2877cce89ede40308273f 100644
--- a/java/com/android/contacts/common/res/values-fr-rCA/strings.xml
+++ b/java/com/android/contacts/common/res/values-fr-rCA/strings.xml
@@ -45,21 +45,9 @@
Effacer les contacts fréquents?Cette opération efface la liste des personnes avec qui vous communiquez le plus souvent dans les applications Contacts et Téléphone, et forcera les applications de courriel à mémoriser de nouveau les adresses que vous utilisez le plus.Suppression des contacts fréquents…
- Disponible
- Absent
- Occupé(e)
- Contacts
- Meilleures suggestions
- AutreRépertoireAnnuaire professionnel
- Tous les contacts
- Suggestions
- Moi(Sans nom)
- Afficher le contact
- Tous les contacts disposant d\'un numéro de téléphone
- Contacts du profil professionnelAfficher les mises à jourAppareil uniquement, sans synchronisationNom
@@ -113,10 +101,6 @@
Clavarder via ICQClavarder via JabberClavarder
- Tous les contacts
- Contacts du compte \"%s\"
- Contacts en affichage personnalisé
- ContactTrier parPrénomNom de famille
@@ -128,8 +112,6 @@
Effacer les termes de rechercheCompteToujours l\'utiliser pour les appels
- Choisir une carte SIM pour cet appel
- Mémoriser ce choixAppeler avec une noteTapez une note à envoyer avec l\'appel...ENVOYER ET APPELER
@@ -141,5 +123,4 @@
Onglet %1$s. %2$d éléments non lus. Appel vidéo
- Partager et appeler
diff --git a/java/com/android/contacts/common/res/values-fr/strings.xml b/java/com/android/contacts/common/res/values-fr/strings.xml
index 9ba9dd1c55ddf2f1039e7cfa9fa0a6a4015e432f..5e6488d4db5b2a4a7d03cb085f12bdc1d936d194 100644
--- a/java/com/android/contacts/common/res/values-fr/strings.xml
+++ b/java/com/android/contacts/common/res/values-fr/strings.xml
@@ -45,21 +45,9 @@
Effacer les contacts fréquents ?Cette opération efface la liste des personnes que vous contactez le plus souvent dans les applications Contacts et Téléphone, et entraîne une réinitialisation des adresses mémorisées comme celles que vous utilisez le plus fréquemment dans vos applications de messagerie électronique.Suppression des contacts fréquents…
- Disponible
- Absent
- Occupé
- Contacts
- Principaux dossiers recommandés
- AutreRépertoireContacts professionnels
- Tous les contacts
- Suggestions
- Moi(Sans nom)
- Afficher le contact
- Tous les contacts disposant d\'un numéro de téléphone
- Contacts du profil professionnelAfficher les mises à jourAppareil uniquement, non synchroniséNom
@@ -113,10 +101,6 @@
Chatter via ICQChatter via JabberChat
- Tous les contacts
- Contacts du compte \"%s\"
- Contacts avec affichage perso.
- ContactTrier parPrénomNom
@@ -128,8 +112,6 @@
Effacer la rechercheCompteToujours l\'utiliser pour les appels
- Choisir la carte SIM pour cet appel
- Mémoriser ce choixAppeler avec une noteSaisissez une note pour accompagner l\'appel...ENVOYER ET APPELER
@@ -141,5 +123,4 @@
Onglet %1$s. %2$d éléments non lus. Appel vidéo
- Partager et appeler
diff --git a/java/com/android/contacts/common/res/values-gl/strings.xml b/java/com/android/contacts/common/res/values-gl/strings.xml
index 9a4bda1cae6824c9c5982dbf00ac16d30c64e606..5458d08e292125a0eedae06ad5c44e222665c9e7 100644
--- a/java/com/android/contacts/common/res/values-gl/strings.xml
+++ b/java/com/android/contacts/common/res/values-gl/strings.xml
@@ -45,21 +45,9 @@
Borrar contactados con frecuencia?Borra a lista de persoas coas que contactaches frecuentemente das aplicacións Contactos e Teléfono, e obriga ás aplicacións de correo electrónico a que memoricen as túas preferencias de enderezos desde cero.Borrando contactados frecuencia...
- Dispoñible
- Ausente
- Ocupado
- Contactos
- Suxestións destacadas
- OutroDirectorioDirectorio de traballo
- Todos os contactos
- Suxestións
- Eu(Sen nome)
- Ver contacto
- Todos os contactos con números de teléfono
- Contactos do perfil de traballoVer actualizaciónsSó no dispositivo, sen sincronizarNome
@@ -113,10 +101,6 @@
Chatear con ICQChatear con JabberChatear
- Todos os contactos
- Contactos en %s
- Contactos na vista personalizada
- Un só contactoOrdenar porNomeApelidos
@@ -128,8 +112,6 @@
Borrar buscaContaUsar sempre para as chamadas
- Escolle a SIM para esta chamada
- Lembrar esta opciónChamar cunha notaEscribe unha nota para enviala coa chamada…ENVIAR E CHAMAR
@@ -141,5 +123,4 @@
Pestana %1$s. %2$d elementos non lidos. Videochamada
- Comparte e chama
diff --git a/java/com/android/contacts/common/res/values-gu/strings.xml b/java/com/android/contacts/common/res/values-gu/strings.xml
index 9e8c1aa101c504133d3fe9064b7f8dbb43de53b5..044403f12c3544706af23da9710488422464936c 100644
--- a/java/com/android/contacts/common/res/values-gu/strings.xml
+++ b/java/com/android/contacts/common/res/values-gu/strings.xml
@@ -45,21 +45,9 @@
વારંવાર સંપર્ક કરેલા સાફ કરીએ?તમે સંપર્કો અને ફોન એપ્લિકેશન્સમાં વારંવાર સંપર્ક કરેલ સૂચિને સાફ કરશો અને ઇમેઇલ એપ્લિકેશન્સને તમારી સંબોધન પસંદગીઓને શરૂઆતથી જાણવા માટે ફરજ પાડશો.વારંવાર સંપર્ક કરેલા સાફ કરે છે…
- ઉપલબ્ધ
- દૂર
- વ્યસ્ત
- સંપર્કો
- ટોચના સૂચવેલ
- અન્યનિર્દેશિકાકાર્ય નિર્દેશિકા
- તમામ સંપર્કો
- સૂચનો
- હું(નામ નથી)
- સંપર્ક જુઓ
- ફોન નંબર્સ સાથેના તમામ સંપર્કો
- કાર્ય પ્રોફાઇલના સંપર્કોઅપડેટ્સ જુઓફક્ત-ઉપકરણ, સમન્વયિત ન કરેલનામ
@@ -113,10 +101,6 @@
ICQ નો ઉપયોગ કરીને ચેટ કરોJabber નો ઉપયોગ કરીને ચેટ કરોચેટ
- તમામ સંપર્કો
- %s માં સંપર્કો
- કસ્ટમ દૃશ્યમાં સંપર્કો
- એકલ સંપર્કઆ પ્રમાણે સૉર્ટ કરોપ્રથમ નામછેલ્લું નામ
@@ -128,8 +112,6 @@
શોધ સાફ કરોએકાઉન્ટકૉલ્સ માટે આનો ઉપયોગ હંમેશાં કરો
- આ કૉલ માટે સિમ પસંદ કરો
- આ પસંદ યાદ રાખોનોંધ સાથે કૉલ કરોકૉલ સાથે મોકલવા માટે એક નોંધ લખો ...મોકલો અને કૉલ કરો
@@ -141,5 +123,4 @@
%1$s ટૅબ. %2$d વાંચ્યા વગરની આઇટમ. વિડિઓ કૉલ
- શેર કરો અને કૉલ કરો
diff --git a/java/com/android/contacts/common/res/values-hi/strings.xml b/java/com/android/contacts/common/res/values-hi/strings.xml
index 1cbee95d3bea4cbe7758a38f2f0c6e47929771c5..8ad7adde8bfd0d85452316e5c07621de998368d7 100644
--- a/java/com/android/contacts/common/res/values-hi/strings.xml
+++ b/java/com/android/contacts/common/res/values-hi/strings.xml
@@ -45,21 +45,9 @@
अक्सर किए जाने वाले संपर्क साफ करें?आपको संपर्क और फ़ोन ऐप्स से अक्सर संपर्क किए जाने वाली सूची साफ़ करनी होगी, और अपने ईमेल ऐप्स को आपकी पता प्राथमिकताओं को प्रारंभ से जानने के लिए बाध्य करना होगा.अक्सर किए जाने वाले संपर्क साफ कर रहा है…
- उपलब्ध
- दूर
- व्यस्त
- संपर्क
- शीर्ष सुझाव
- अन्यनिर्देशिकाकार्य निर्देशिका
- सभी संपर्क
- सुझाव
- मुझे(कोई नाम नहीं)
- संपर्क देखें
- फ़ोन नंबरों वाले सभी संपर्क
- कार्य प्रोफ़ाइल के संपर्कनई जानकारी देखेंकेवल-डिवाइस के लिए, असमन्वयितनाम
@@ -113,10 +101,6 @@
ICQ का उपयोग करके बातचीत करेंJabber का उपयोग करके बातचीत करेंबातचीत करें
- सभी संपर्क
- %s के संपर्क
- कस्टम दृश्य में संपर्क
- एकल संपर्कइससे क्रमित करेंनामउपनाम
@@ -128,8 +112,6 @@
खोज साफ़ करेंखाताकॉल के लिए हमेशा इसका उपयोग करें
- इस कॉल के लिए सिम चुनें
- यह चयन याद रखेंनोट के साथ कॉल करेंकॉल के साथ भेजने के लिए नोट लिखें ...भेजें और कॉल करें
@@ -141,5 +123,4 @@
%1$s टैब. %2$d नहीं पढ़े गए आइटम. वीडियो कॉल
- शेयर करें और कॉल करें
diff --git a/java/com/android/contacts/common/res/values-hr/strings.xml b/java/com/android/contacts/common/res/values-hr/strings.xml
index e8d2b560bb8bb2b6260e934f22cadbff1249abb7..2aa0f94c05349236efb0dfabafe75a30366e5e02 100644
--- a/java/com/android/contacts/common/res/values-hr/strings.xml
+++ b/java/com/android/contacts/common/res/values-hr/strings.xml
@@ -45,21 +45,9 @@
Brisati podatke o čestim kontaktima?Izbrisat ćete popis osoba s kojima često kontaktirate u aplikacijama Kontakti i Osobe, pa će aplikacije e-pošte morati ispočetka učiti vaše postavke adresiranja.Brisanje često kontaktiranih...
- Dostupan
- Odsutan
- Zauzet
- Kontakti
- Najbolji prijedlozi
- DrugoDirektorijPoslovni direktorij
- Svi kontakti
- Prijedlozi
- Ja(Bez imena)
- Prikaži kontakt
- Svi kontakti s telefonskim brojevima
- Poslovni kontaktiPrikaži ažuriranjaSamo uređaj, bez sinkronizacijeIme
@@ -113,10 +101,6 @@
Chatajte pomoću ICQ-aChatajte uz JabberChat
- Svi kontakti
- Kontakti na računu %s
- Kontakti u prilagođenom prikazu
- Jedan kontaktPoredaj poImePrezime
@@ -128,8 +112,6 @@
Brisanje pretraživanjaRačunUvijek upotrebljavaj za pozive
- Odabir SIM-a za ovaj poziv
- Zapamti ovaj odabirPoziv uz bilješkuNapišite bilješku koju ćete poslati uz poziv...POŠALJI I NAZOVI
@@ -142,5 +124,4 @@
Kartica %1$s. %2$d nepročitanih stavki. Videopoziv
- Dijeli i pozovi
diff --git a/java/com/android/contacts/common/res/values-hu/strings.xml b/java/com/android/contacts/common/res/values-hu/strings.xml
index 9f0d80a711528da127649e1f55b0ad591260d58f..cb869f288573e6440b220c60d424c8d9c84d510e 100644
--- a/java/com/android/contacts/common/res/values-hu/strings.xml
+++ b/java/com/android/contacts/common/res/values-hu/strings.xml
@@ -45,21 +45,9 @@
Törli a gyakran keresetteket?Törölni fogja a gyakran keresett személyek listáját a Névjegyek és a Telefon alkalmazásban, és arra kényszeríti az e-mail alkalmazásokat, hogy elölről kezdjék az Ön címzési szokásainak megtanulását.Gyakran keresettek törlése...
- Elérhető
- Nincs a gépnél
- Elfoglalt
- Címtár
- Legjobb javaslatok
- EgyébCímtárMunkahelyi névjegyek címtára
- Összes névjegy
- Javaslatok
- Én(Nincs név)
- Névjegy megtekintése
- Minden névjegy telefonszámokkal
- Munkaprofilhoz tartozó névjegyekFrissítések megtekintéseCsak az eszközön, nincs szinkronizálvaNév
@@ -113,10 +101,6 @@
Csevegés az ICQ-nCsevegés JabberenCsevegés
- Az összes névjegy
- Ismerősök itt: %s
- Egyéni nézet névjegyei
- Egyetlen névjegyRendezés alapjaUtónévVezetéknév
@@ -128,8 +112,6 @@
Keresés törléseFiókMindig ezt használja hívásokhoz
- SIM-kártya kiválasztása a híváshoz
- Választás megjegyzéseHívás üzenettelÍrjon üzenetet, amelyet elküldhetünk a hívással együtt…KÜLDÉS ÉS HÍVÁS
@@ -141,5 +123,4 @@
%1$s lap. %2$d olvasatlan elem. Videohívás
- Megosztás és hívás
diff --git a/java/com/android/contacts/common/res/values-hy/strings.xml b/java/com/android/contacts/common/res/values-hy/strings.xml
index 7cbd770fa6129fdb595f016f637d17d814a3413d..35adbf2fb417630280f79548e7fac17cbed32183 100644
--- a/java/com/android/contacts/common/res/values-hy/strings.xml
+++ b/java/com/android/contacts/common/res/values-hy/strings.xml
@@ -45,21 +45,9 @@
Մաքրե՞լ հաճախակի հաղորդակցվածներըԴուք կմաքրեք հաճախակի հաղորդակցվողների ցանկը Կոնտակտներ և Հեռախոս հավելվածներում, և ձեր էլփոստի ծրագիրը զրոյից կսովորի ձեր հասցեագրումների նախընտրությունները:Հաճախակի հաղորդակցումների մաքրում...
- Հասանելի
- Տեղում չէ
- Զբաղված
- Կոնտակտներ
- Լավագույն առաջարկներ
- ԱյլԳրացուցակԱշխատանքային գրացուցակ
- Բոլոր կոնտակտները
- Առաջարկներ
- Ես(Անանուն)
- Դիտել կոնտակտը
- Բոլոր հեռախոսահամարներով կոնտատկները
- Աշխատանքային պրոֆիլի կոնտակտներԴիտել թարմացումներըՄիայն սարքում, չհամաժամեցվածԱնուն
@@ -113,10 +101,6 @@
Զրուցել ICQ-ովԶրուցել Jabber-ովԶրույց
- Բոլոր կոնտակտները
- %s-ի կոնտակտները
- Հատուկ տեսքով կոնտակտներ
- Մեկ կոնտակտԴասավորել ըստԱնվանԱզգանվան
@@ -128,8 +112,6 @@
Մաքրել որոնման դաշտըՀաշիվՄիշտ օգտագործել սա՝ զանգերի համար
- Ընտրեք, թե որ SIM քարտով զանգել
- Հիշել այս ընտրությունըԳրառումով զանգՄուտքագրեք նշում՝ զանգի հետ ուղարկելու համար ...ՈՒՂԱՐԿԵԼ ԵՎ ԶԱՆԳԵԼ
@@ -141,5 +123,4 @@
%1$s ներդիր: %2$d չկարդացված տարր: Տեսազանգ
- Կիսվել և զանգել
diff --git a/java/com/android/contacts/common/res/values-in/strings.xml b/java/com/android/contacts/common/res/values-in/strings.xml
index aeb477a3535a701c1efdcc15ae136f96ab50aeea..53cb2d61bc93fa9a8d4f3aa007b689f325e8b7b2 100644
--- a/java/com/android/contacts/common/res/values-in/strings.xml
+++ b/java/com/android/contacts/common/res/values-in/strings.xml
@@ -45,21 +45,9 @@
Hapus yang sering dihubungi?Anda akan menghapus daftar yang sering dihubungi pada aplikasi Kontak dan Ponsel, serta memaksa aplikasi email untuk mempelajari preferensi penanganan dari awal.Menghapus yang sering dihubungi...
- Ada
- Keluar
- Sibuk
- Kontak
- Paling Disarankan
- LainnyaDirektoriDirektori kerja
- Semua kontak
- Saran
- Saya(Tanpa nama)
- Lihat kontak
- Semua kontak dengan nomor telepon
- Kontak profil kerjaLihat pembaruanHanya perangkat, tidak disinkronkanNama
@@ -113,10 +101,6 @@
Ngobrol menggunakan ICQNgobrol menggunakan JabberNgobrol
- Semua kontak
- Kontak di %s
- Kontak dalam tampilan khusus
- Kontak tunggalUrutkan menurutNama depanNama belakang
@@ -128,8 +112,6 @@
Hapus penelusuranAkunSelalu gunakan ini untuk telepon
- Pilih SIM untuk panggilan ini
- Ingat pilihan iniTelepon dengan catatanKetik catatan untuk dikirim dengan panggilan telepon ...KIRIM & TELEPON
@@ -141,5 +123,4 @@
Tab %1$s. %2$d item belum dibaca. Video call
- Membagikan dan menelepon
diff --git a/java/com/android/contacts/common/res/values-is/strings.xml b/java/com/android/contacts/common/res/values-is/strings.xml
index 534e954b9802bc3e2a12663082970ee497b18251..a841d71d867b46e96e71f4fee29bed1d8df8e3cc 100644
--- a/java/com/android/contacts/common/res/values-is/strings.xml
+++ b/java/com/android/contacts/common/res/values-is/strings.xml
@@ -45,21 +45,9 @@
Hreinsa mest notaða tengiliði?Þetta hreinsar tengiliðina sem þú hefur mest samskipti við úr forritunum Tengiliðir og Sími og þvingar tölvupóstforrit til að læra upp á nýtt hvernig þú notar netföng.Hreinsar mest notaða tengiliði…
- Laus
- Í burtu
- Upptekin(n)
- Tengiliðir
- Helstu tillögur
- AnnaðSkráVinnuskrá
- Allir tengiliðir
- Tillögur
- Ég(Nafn vantar)
- Skoða tengilið
- Allir tengiliðir með símanúmer
- Tengiliðir í vinnusniðiSkoða uppfærslurEingöngu á tæki, ósamstilltNafn
@@ -113,10 +101,6 @@
Spjalla með ICQSpjalla með JabberSpjalla
- Allir tengiliðir
- Tengiliðir á %s
- Tengiliðir á sérsniðnu yfirliti
- Einn tengiliðurRaða eftirFornafnEftirnafn
@@ -128,8 +112,6 @@
Hreinsa leitReikningurNota þetta alltaf fyrir símtöl
- Veldu SIM-kort fyrir þetta símtal
- Muna þetta valSímtal með textaSláðu inn texta til að senda með símtalinu...SENDA OG HRINGJA
@@ -141,5 +123,4 @@
Flipinn %1$s. %2$d ólesin atriði. Hringja myndsímtal
- Deila og hringja
diff --git a/java/com/android/contacts/common/res/values-it/strings.xml b/java/com/android/contacts/common/res/values-it/strings.xml
index 1ec5019e8b2de6918602f20e7b8c2a5f4fe9f8fa..f703b9f3f933d4b1eace971de8823e3ccdffbf3f 100644
--- a/java/com/android/contacts/common/res/values-it/strings.xml
+++ b/java/com/android/contacts/common/res/values-it/strings.xml
@@ -45,21 +45,9 @@
Cancellare contattati di frequente?Verrà cancellato l\'elenco dei contatti frequenti nelle app Contatti e Telefono e le app email dovranno apprendere da zero le tue preferenze di comunicazione.Cancellazione contattati di frequente…
- Disponibile
- Assente
- Occupato
- Contatti
- Suggerimenti più popolari
- AltroDirectoryDirectory di lavoro
- Tutti i contatti
- Suggerimenti
- Io(Nessun nome)
- Visualizza contatto
- Tutti i contatti con numeri di telefono
- Contatti del profilo di lavoroVisualizza aggiornamentiSolo dispositivo, non sincronizzatoNome
@@ -113,10 +101,6 @@
Chatta su ICQChatta su JabberChat
- Tutti i contatti
- Contatti in %s
- Contatti in visualizzazione personalizzata
- Contatto singoloOrdina perNomeCognome
@@ -128,8 +112,6 @@
Cancella ricercaAccountUsa sempre questa per chiamare
- Scegli la SIM per questa chiamata
- Memorizza questa sceltaChiama e invia una notaDigita una nota da inviare con la chiamata...INVIA E CHIAMA
@@ -141,5 +123,4 @@
Scheda %1$s. %2$d elementi da leggere. Videochiamata
- Condividi e chiama
diff --git a/java/com/android/contacts/common/res/values-iw/strings.xml b/java/com/android/contacts/common/res/values-iw/strings.xml
index f3d5e393b8624c49c31926323d2a7af5605e2ac4..e056b4eb7fb6f23acc05fb9f5924684db94e9b49 100644
--- a/java/com/android/contacts/common/res/values-iw/strings.xml
+++ b/java/com/android/contacts/common/res/values-iw/strings.xml
@@ -45,21 +45,9 @@
האם למחוק אנשי קשר קבועים?הפעולה הזו תמחק מהאפליקציות \'אנשים\' ו\'טלפון\' את רשימת אנשי הקשר שאיתם אתה יוצר קשר בתדירות גבוהה, ויהיה עליך ללמד מחדש את אפליקציות האימייל את הכתובות המועדפות עליך.מוחק אנשי קשר קבועים…
- זמין
- לא נמצא
- לא פנוי
- אנשי קשר
- הצעות מובילות
- אחרספריהספריית עבודה
- כל אנשי הקשר
- הצעות
- אני(ללא שם)
- הצג איש קשר
- כל אנשי הקשר עם מספרי טלפון
- אנשי הקשר של פרופיל העבודההצג עדכוניםבמכשיר בלבד, ללא סנכרוןשם
@@ -113,10 +101,6 @@
שוחח בצ\'אט באמצעות ICQשוחח בצ\'אט באמצעות Jabberצ\'אט
- כל אנשי הקשר
- אנשי קשר ב-%s
- אנשי קשר בתצוגה מותאמת אישית
- איש קשר יחידמיון לפישם פרטישם משפחה
@@ -128,8 +112,6 @@
נקה חיפושחשבוןהשתמש תמיד עבור שיחות
- בחירת כרטיס SIM לשיחה הזו
- אני רוצה להשתמש באפשרות הזו גם בעתידהתקשר עם הערההקלד הערה לשליחה עם השיחה...שלח והתקשר
@@ -143,5 +125,4 @@
הכרטיסייה %1$s. %2$d פריטים שלא נקראו. שיחת וידאו
- שיתוף והתקשרות
diff --git a/java/com/android/contacts/common/res/values-ja/strings.xml b/java/com/android/contacts/common/res/values-ja/strings.xml
index 1a2e8d0729c85a17b247f832112ec4ac10402f31..e0c62a77c2d3ebb71da97f7449a11a817ef8c37e 100644
--- a/java/com/android/contacts/common/res/values-ja/strings.xml
+++ b/java/com/android/contacts/common/res/values-ja/strings.xml
@@ -45,21 +45,9 @@
よく使う連絡先を消去しますか?連絡帳アプリや電話アプリのよく使う連絡先リストを消去し、メールアプリがアドレス設定を初めから保存していくようにします。よく使う連絡先を消去しています…
- オンライン
- 不在
- 取り込み中
- 連絡先
- おすすめ
- その他ディレクトリ仕事用の連絡先リスト
- すべての連絡先
- 候補
- 自分(名前なし)
- 連絡先を表示
- 電話番号のあるすべての連絡先
- 仕事用プロファイルの連絡先更新情報を表示端末のみ、未同期名前
@@ -113,10 +101,6 @@
ICQでチャットJabberでチャットチャット
- すべての連絡先
- %sの連絡先
- 連絡先のカスタム表示
- 単独の連絡先並べ替え順序名姓
@@ -128,8 +112,6 @@
検索をクリアアカウントこのSIMを常に通話に使用する
- この通話で使用する SIM の選択
- この設定を記憶するメモを添付して発信発信時に送信するメモを入力...送信 / 通話
@@ -141,5 +123,4 @@
%1$s タブ。%2$d 件の未読項目。ビデオ通話
- 共有して発信
diff --git a/java/com/android/contacts/common/res/values-ka/strings.xml b/java/com/android/contacts/common/res/values-ka/strings.xml
index 07d67e4f76573a429578f42810e3c8bbfe78131a..e0a4ed313f1ee809c371c0c84b30977fe68036d4 100644
--- a/java/com/android/contacts/common/res/values-ka/strings.xml
+++ b/java/com/android/contacts/common/res/values-ka/strings.xml
@@ -45,21 +45,9 @@
გსურთ ხშირი კონტაქტების წაშლა?თქვენ წაშლით ხშირად დაკავშირებულთა სიას კონტაქტებიდან და ტელეფონის აპლიკაციიდან და აიძულებთ ელ-ფოსტის აპლიკაციებს შეისწავლონ თქვენი ადრესატების პრიორიტეტები ნულიდან.ხშირი კონტაქტები იშლება…
- ხელმისაწვდომი
- გასული
- დაკავებული
- კონტაქტები
- საუკეთესო შეთავაზებები
- სხვაკატალოგისამსახურის კატალოგი
- ყველა კონტაქტი
- შეთავაზებები
- მე(სახელის გარეშე)
- კონტაქტის ნახვა
- ყველა ტელეფონის ნომრიანი კონტაქტი
- სამსახურის პროფილის კონტაქტებიგანახლებების ნახვამხოლოდ მოწყობილობაზე, სინქრონიზაციის გარეშესახელი
@@ -113,10 +101,6 @@
ჩეთი ICQ-ითჩეთი Jabber-ითჩეთი
- ყველა კონტაქტი
- კონტაქტები %s-ში
- კონტაქტები მორგებულ ხედში
- ერთი კონტაქტისორტირება:სახელითგვარით
@@ -128,8 +112,6 @@
ძიების გასუფთავებაანგარიშიზარებისთვის მუდამ ამის გამოყენება
- აირჩიეთ SIM ამ ზარისთვის
- ამ არჩევანის დამახსოვრებაზარი შენიშვნასთან ერთადაკრიფეთ შენიშვნა ზართან ერთად გასაგზავნად ...გაგზავნა და დარეკვა
@@ -141,5 +123,4 @@
%1$s ცხრ. %2$d წაუკითხავი ერთეული. ვიდეოზარი
- გაზიარება და დარეკვა
diff --git a/java/com/android/contacts/common/res/values-kk/strings.xml b/java/com/android/contacts/common/res/values-kk/strings.xml
index 4ac315092ec5ed684aa4f5c70a8bc71d841fce9d..b7d34aefa67dc77f47ca30a2c7c128678de04273 100644
--- a/java/com/android/contacts/common/res/values-kk/strings.xml
+++ b/java/com/android/contacts/common/res/values-kk/strings.xml
@@ -45,21 +45,9 @@
Жиі қолданылғандар тазартылсын ба?Контактілер және Телефондар қолданбаларындағы жиі хабарласатындар тізімі тазаланады және электрондық пошта қолданбалары мекенжай параметрлерін басынан үйренуге мәжбүрленеді.Жиі қолданылғандар тазартылуда…
- Қол жетімді
- Желіден тыс
- Бос емес
- Контактілер
- Үздік ұсыныстар
- БасқаАнықтамаЖұмыс каталогы
- Барлық контактілер
- Ұсыныстар
- Мен(Атаусыз)
- Контактіні көру
- Телефон нөмірі бар барлық контактілер
- Жұмыс профилінің контактілеріЖаңартуларды көруТек қана құрылғыда, синхрондалмағанАты-жөні
@@ -113,10 +101,6 @@
ICQ қолданып чаттасуJabber қолданып чаттасуЧаттасу
- Барлық контактілер
- %s ішіндегі контактілер
- Контактілердің жеке көрінісі
- Жалғыз контактСұрыптау шартыАтыТегі
@@ -128,8 +112,6 @@
Іздеуді өшіруЕсептік жазбаОсыны қоңыраулар үшін әрқашан пайд.
- Қоңырау шалынатын SIM картасын таңдаңыз
- Осы картаны еске сақтауЕскертпе бар қоңырауҚоңыраумен жіберу үшін ескертпе теріңіз ...ЖІБЕРУ ЖӘНЕ ҚОҢЫРАУ ШАЛУ
@@ -141,5 +123,4 @@
%1$s қойындысы. %2$d оқылмаған элемент. Бейне қоңырау
- Бөлісу және қоңырау шалу
diff --git a/java/com/android/contacts/common/res/values-km/strings.xml b/java/com/android/contacts/common/res/values-km/strings.xml
index 15c7ed54c187012a7a7ac1b9d1d153094cf758d5..7d746652c5f7315bf1e7e3e7d55fd0d5302a8c0a 100644
--- a/java/com/android/contacts/common/res/values-km/strings.xml
+++ b/java/com/android/contacts/common/res/values-km/strings.xml
@@ -45,21 +45,9 @@
សម្អាតទំនាក់ទំនងញឹកញាប់?អ្នកនឹងជម្រះបញ្ជីដែលអ្នកទាក់ទងជាញឹកញាប់នៅក្នុងកម្មវិធីទូរស័ព្ទ និងទំនាក់ទំនង ហើយបង្ខំឲ្យកម្មវិធីអ៊ីមែលស្វែងយល់ពីចំណូលចិត្តទំនាក់ទំនងរបស់អ្នកតាំងពីដំបូង។សម្អាតទំនាក់ទំនងញឹកញាប់...
- ទំនេរ
- ចាកឆ្ងាយ
- រវល់
- ទំនាក់ទំនង
- បានណែនាំកម្រិតខ្ពស់
- ផ្សេងៗថតថតកន្លែងការងារ
- ទំនាក់ទំនងទាំងអស់
- ការណែនាំ
- ខ្ញុំ(គ្មានឈ្មោះ)
- មើលទំនាក់ទំនង
- ទំនាក់ទំនងទាំងអស់ដែលមានលេខទូរស័ព្ទ
- ទំនាក់ទំនងប្រវត្តិរូបការងារមើលបច្ចុប្បន្នភាពសម្រាប់តែឧបករណ៍ មិនបានធ្វើសមកាលកម្មឈ្មោះ
@@ -113,10 +101,6 @@
ជជែកដោយប្រើ ICQជជែកដោយប្រើ Jabberជជែក
- ទំនាក់ទំនងទាំងអស់
- ទំនាក់ទំនងនៅក្នុង %s
- ទំនាក់ទំនងក្នុងទិដ្ឋភាពផ្ទាល់ខ្លួន
- ទំនាក់ទំនងទោលតម្រៀបតាមនាមខ្លួននាមត្រកូល
@@ -128,8 +112,6 @@
សម្អាតការស្វែងរកគណនីប្រើវាសម្រាប់ការហៅជានិច្ច
- ជ្រើសរើសស៊ីមសម្រាប់ការហៅទូរសព្ទនេះ
- ចងចាំជម្រើសនេះការហៅព្រមជាមួយចំណាំវាយបញ្ចូលចំណាំដែលត្រូវផ្ញើជាមួយការហៅទូរស័ព្ទ ...ផ្ញើ & ហៅ
@@ -141,5 +123,4 @@
ផ្ទាំង %1$s។ ធាតុមិនទាន់អាន %2$d ការហៅវីដេអូ
- ចែករំលែក និងហៅទូរសព្ទ
diff --git a/java/com/android/contacts/common/res/values-kn/strings.xml b/java/com/android/contacts/common/res/values-kn/strings.xml
index 61666c24f3dec102410383e7e8bc905ea21c648c..b41830acb4ab4a40d8cbb596a0a4bc006384a58f 100644
--- a/java/com/android/contacts/common/res/values-kn/strings.xml
+++ b/java/com/android/contacts/common/res/values-kn/strings.xml
@@ -45,21 +45,9 @@
ಪದೇ ಪದೇ ಸಂಪರ್ಕಿಸಿರುವುದನ್ನು ತೆರುವುಗೊಳಿಸುವುದೇ?ಸಂಪರ್ಕಗಳು ಮತ್ತು ಫೋನ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಪದೇ ಪದೇ ಸಂಪರ್ಕಪಡಿಸಿರುವ ಪಟ್ಟಿಯನ್ನು ನೀವು ತೆರುವುಗೊಳಿಸುತ್ತೀರಿ ಮತ್ತು ಮೊದಲಿನಿಂದ ನಿಮ್ಮ ವಿಳಾಸ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು ತಿಳಿಯಲು ಇಮೇಲ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಒತ್ತಾಯಿಸಿ.ಪದೇ ಪದೇ ಸಂಪರ್ಕಿಸಿರುವುದನ್ನು ತೆರುವುಗೊಳಿಸಲಾಗುತ್ತಿದೆ…
- ಲಭ್ಯವಿದೆ
- ದೂರ
- ಕಾರ್ಯನಿರತ
- ಸಂಪರ್ಕಗಳು
- ಉನ್ನತ ಸಲಹೆ
- ಇತರೆಡೈರೆಕ್ಟರಿಕೆಲಸದ ಡೈರೆಕ್ಟರಿ
- ಎಲ್ಲಾ ಸಂಪರ್ಕಗಳು
- ಸಲಹೆಗಳು
- ನಾನು(ಯಾವುದೇ ಹೆಸರಿಲ್ಲ)
- ಸಂಪರ್ಕವನ್ನು ವೀಕ್ಷಿಸಿ
- ಫೋನ್ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ ಎಲ್ಲ ಸಂಪರ್ಕಗಳು
- ಕೆಲಸದ ಪ್ರೊಫೈಲ್ ಸಂಪರ್ಕಗಳುನವೀಕರಣಗಳನ್ನು ವೀಕ್ಷಿಸಿಸಾಧನ-ಮಾತ್ರ, ಸಿಂಕ್ ಮಾಡಲಾಗದಿರುವುದುಹೆಸರು
@@ -113,10 +101,6 @@
ICQ ಬಳಸಿಕೊಂಡು ಚಾಟ್ ಮಾಡಿJabber ಬಳಸಿಕೊಂಡು ಚಾಟ್ ಮಾಡಿಚಾಟ್
- ಎಲ್ಲ ಸಂಪರ್ಕಗಳು
- %s ನಲ್ಲಿ ಸಂಪರ್ಕಗಳು
- ಕಸ್ಟಮ್ ವೀಕ್ಷಣೆಯಲ್ಲಿನ ಸಂಪರ್ಕಗಳು
- ಏಕೈಕ ಸಂಪರ್ಕಈ ಪ್ರಕಾರ ವಿಂಗಡಿಸುಮೊದಲ ಹೆಸರುಕೊನೆಯ ಹೆಸರು
@@ -128,8 +112,6 @@
ಹುಡುಕಾಟವನ್ನು ತೆರವುಗೊಳಿಸಿಖಾತೆಕರೆಗಳನ್ನು ಮಾಡಲು ಯಾವಾಗಲೂ ಇದನ್ನು ಬಳಸಿ
- ಈ ಕರೆಗಾಗಿ ಸಿಮ್ ಆರಿಸಿ
- ಈ ಆಯ್ಕೆಯನ್ನು ನೆನಪಿಡಿಟಿಪ್ಪಣಿಯೊಂದಿಗೆ ಕರೆಕರೆ ಕಳುಹಿಸಲು ಟಿಪ್ಪಣಿಯನ್ನು ಟೈಪ್ ಮಾಡಿ ...ಕಳುಹಿಸು ಮತ್ತು ಕರೆಮಾಡು
@@ -141,5 +123,4 @@
%1$s ಟ್ಯಾಬ್. %2$d ಓದದಿರುವ ಐಟಂಗಳು. ವೀಡಿಯೊ ಕರೆ
- ಹಂಚಿಕೊಳ್ಳಿ ಮತ್ತು ಕರೆ ಮಾಡಿ
diff --git a/java/com/android/contacts/common/res/values-ko/strings.xml b/java/com/android/contacts/common/res/values-ko/strings.xml
index 1a5cd7d9c3dd535e464d9099c3d583a5e0083f04..21b69887fe33c73ba1cc4aff14c22f3ac69cbb1e 100644
--- a/java/com/android/contacts/common/res/values-ko/strings.xml
+++ b/java/com/android/contacts/common/res/values-ko/strings.xml
@@ -45,21 +45,9 @@
자주 연락하는 사람들 목록을 삭제하시겠습니까?주소록 및 휴대전화 앱에서 자주 연락하는 사람의 목록을 삭제하고 이메일 앱이 주소록 환경설정을 처음부터 다시 반영하도록 합니다.자주 연락하는 사람들 목록을 삭제하는 중…
- 온라인
- 자리 비움
- 다른 용무 중
- 주소록
- 인기 추천
- 기타디렉토리직장 디렉토리
- 모든 연락처
- 추천
- 나(이름 없음)
- 연락처 보기
- 전화번호가 포함된 모든 연락처
- 직장 프로필 연락처업데이트 보기기기 전용(동기화되지 않음)이름
@@ -113,10 +101,6 @@
ICQ로 채팅Jabber로 채팅채팅
- 모든 연락처
- %s의 주소록
- 주소록 맞춤 보기
- 단일 연락처정렬 기준:이름성
@@ -128,8 +112,6 @@
검색창 지우기계정통화에 항상 사용
- 이 통화에 사용할 SIM 선택
- 이 선택사항 저장메모가 포함된 통화통화에 함께 전송할 메모를 입력하세요...보내기 및 전화 걸기
@@ -141,5 +123,4 @@
%1$s 탭. 읽지 않은 항목 %2$d개 화상 통화
- 공유 및 전화 걸기
diff --git a/java/com/android/contacts/common/res/values-ky/strings.xml b/java/com/android/contacts/common/res/values-ky/strings.xml
index eb4ea1a81b1c1e9f3ffc10760f03db08be48ff9e..445eaa52b598765399c4bed06a7946bed0ab3563 100644
--- a/java/com/android/contacts/common/res/values-ky/strings.xml
+++ b/java/com/android/contacts/common/res/values-ky/strings.xml
@@ -45,21 +45,9 @@
Көп чалынгандар тизмеси тазалансынбы?Байланыштар жана Телефон колдонмолорунан көп байланышкан адамдар тизмесин тазалап, даректүү жеке жөндөөлөр тууралуу билүү үчүн электрондук почта колдонмолорун иштетиңиз.Көп чалынгандар тизмеси тазаланууда…
- Жеткиликтүү
- Чыгып кетти
- Бош эмес
- Байланыштар
- Эң көп сунушталгандар
- БашкаДиректорийЖумуш профилиндеги байланыштар китепчеси
- Бардык байланыштар
- Сунуштар
- Мен(Аты жок)
- Байланыштын чоо-жайын карап көрүү
- Телефон номерлери бар бардык байланыштар
- Жумуш профилиндеги байланыштарЖаңыртууларды көрүүТүзмөктө гана, шайкештирилбегенАты
@@ -113,10 +101,6 @@
ICQ аркылуу чатташууJabber аркылуу чатташууЧат
- Бардык байланыштар
- %s байланыштары
- Байланыштардын ыңгайлаштырылган көрүнүшү
- Жалгыз байланышТөмөнкү боюнча иреттештирүүЫсымыФамилиясы
@@ -128,8 +112,6 @@
Издөөнү тазалооКаттоо эсебиБул ар дайым чалуулр үчн колдонулсн
- Бул чалуу үчүн SIM картаны тандоо
- Бул тандоону эстеп калууКыска жазуу менен чалууЧалуу менен жөнөтүлө турган кыска жазууну териңиз …ЖӨНӨТҮҮ ЖАНА ЧАЛУУ
@@ -141,5 +123,4 @@
\"%1$s\" өтмөгү. %2$d нерсе окула элек. Видео чалуу
- Бөлүшүү жана чалуу
diff --git a/java/com/android/contacts/common/res/values-lo/strings.xml b/java/com/android/contacts/common/res/values-lo/strings.xml
index d363fbda54255c42a4699876afde198d4ee7930a..e738520301c827549f1f2732d6c66151f96d43f4 100644
--- a/java/com/android/contacts/common/res/values-lo/strings.xml
+++ b/java/com/android/contacts/common/res/values-lo/strings.xml
@@ -45,21 +45,9 @@
ລຶບລາຍຊື່ທີ່ຕິດຕໍ່ເລື້ອຍໆອອກ?ທ່ານຈະລຶບຂໍ້ມູນລາຍຊື່ທີ່ຕິດຕໍ່ຫາເລື້ອຍໆຢູ່ໃນແອັບຯລາຍຊື່ ແລະໂທລະສັບ ພ້ອມທັງບັງຄັບໃຫ້ແອັບຯອີເມວເລີ່ມຮຽນຮູ້ຄ່າກຳນົດທີ່ຢູ່ຂອງທ່ານໃໝ່ຕັ້ງແຕ່ຕົ້ນ.ກຳລັງລຶບລ້າງລາຍຊື່ທີ່ຕິດຕໍ່ຫາເລື້ອຍໆ...
- ສາມາດໃຊ້ໄດ້
- ບໍ່ຢູ່
- ບໍ່ຫວ່າງ
- ລາຍຊື່ຜູ້ຕິດຕໍ່
- ແນະນຳຫຼາຍທີ່ສຸດ
- ອື່ນໆໄດເຣັກທໍຣີໄດເຣັກທໍຣີບ່ອນເຮັດວຽກ
- ລາຍຊື່ຜູ້ຕິດຕໍ່ທັງໝົດ
- ຄຳແນະນຳ
- ຂ້ອຍ(ບໍ່ມີຊື່)
- ເບິ່ງລາຍຊື່ຜູ້ຕິດຕໍ່
- ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດທີ່ມີເບີໂທລະສັບ
- ລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງໂປຣໄຟລ໌ບ່ອນເຮັດວຽກເບິ່ງອັບເດດອຸປະກອນເທົ່ານັ້ນ, ບໍ່ຊິ້ງຂໍ້ມູນຊື່
@@ -113,10 +101,6 @@
ສົນທະນາໂດຍໃຊ້ ICQສົນທະນາໂດຍໃຊ້ Jabberສົນທະນາ
- ລາຍຊື່ຜູ້ຕິດຕໍ່ທັງໝົດ
- ລາຍຊື່ຜູ່ຕິດຕໍ່ໃນ %s
- ລາຍຊື່ຜູ່ຕິດຕໍ່ໃນມຸມມອງກຳນົດເອງ
- ລາຍຊື່ຜູ່ຕິດຕໍ່ດ່ຽວຮຽງຕາມຊື່ນາມສະກຸນ
@@ -128,8 +112,6 @@
ລຶບການຊອກຫາບັນຊີໃຊ້ຊິມນີ້ເພື່ອການໂທທຸກເທື່ອ
- ເລືອກ SIM ສຳລັບສາຍນີ້
- ຈື່ການເລືອກນີ້ໄວ້ໂທດ້ວຍບັນທຶກພິມບັນທຶກ ເພື່ອສົ່ງກັບການໂທ ...ສົ່ງ ແລະ ໂທ
@@ -141,5 +123,4 @@
ແຖບ %1$s. %2$d ລາຍການບໍ່ທັນໄດ້ອ່ານ. ໂທວິດີໂອ
- ແບ່ງປັນ ແລະ ໂທ
diff --git a/java/com/android/contacts/common/res/values-lt/strings.xml b/java/com/android/contacts/common/res/values-lt/strings.xml
index 6bb47d8ca11bd6fbb06de90400782617a7dc5a40..47a5df414cff272a9d31a6a81e2ffb68ba4da29c 100644
--- a/java/com/android/contacts/common/res/values-lt/strings.xml
+++ b/java/com/android/contacts/common/res/values-lt/strings.xml
@@ -45,21 +45,9 @@
Išvalyti dažniausius kontaktus?Išvalysite dažniausių kontaktų sąrašą Kontaktų ir Telefono programose, o el. pašto programoms reikės iš naujo gauti adresavimo nuostatas.Valomi dažniausi kontaktai…
- Galima
- Pasišalinęs
- Užsiėmęs
- Adresinė
- Populiariausi siūlomi
- KitaKatalogasDarbo katalogas
- Visi kontaktai
- Pasiūlymai
- Aš(Nėra pavadinimo)
- Žr. išsamią kontaktinę informaciją
- Visi kontaktai su telefonų numeriais
- Darbo profilio kontaktaiPeržiūrėti naujiniusTik įrenginys, nesinchronizuojamaPavadinimas
@@ -113,10 +101,6 @@
Kalbėti naudojant ICQKalbėti naudojant „Jabber“Pokalbis
- Visi kontaktai
- %s kontaktai
- Kontaktai tinkintame rodinyje
- Vienas kontaktasRūšiuoti pagalVardasPavardė
@@ -128,8 +112,6 @@
Išvalyti paieškąPaskyraVisada naudoti tai skambučiams
- Pasir. SIM k., kad gal. atl. šį skamb.
- Atsiminti šį pasirinkimąSkambutis su užrašuĮveskite užrašą, kurį galima išsiųsti skambinant...SIŲSTI IR SKAMBINTI
@@ -143,5 +125,4 @@
Skirtukas „%1$s“. %2$d neskaitytų elementų. Vaizdo skambutis
- Bendrinti ir skambinti
diff --git a/java/com/android/contacts/common/res/values-lv/strings.xml b/java/com/android/contacts/common/res/values-lv/strings.xml
index 95976ab15a2e1967520548bd7be753f9df4b2d3e..80f678fa15c55982c965182c2e8feb257202a07b 100644
--- a/java/com/android/contacts/common/res/values-lv/strings.xml
+++ b/java/com/android/contacts/common/res/values-lv/strings.xml
@@ -45,21 +45,9 @@
Vai dzēst bieži lietotos kontaktus?Tiks dzēsts bieži lietoto kontaktpersonu saraksts lietotnēs Kontaktpersonas un Tālrunis, un e-pasta lietotnēs no jauna tiks sākta adrešu preferenču saglabāšana.Bieži lietoto kontaktu dzēšana...
- Pieejams
- Prombūtnē
- Aizņemts
- Kontaktpersonas
- Populārākie ieteikumi
- CitsKatalogsDarba katalogs
- Visas kontaktpersonas
- Ieteikumi
- Es(Nav vārda)
- Skatīt kontaktpersonu
- Visas kontaktpersonas ar tālruņa numuriem
- Kontaktpersonas darba profilāSkatīt atjauninājumusTikai ierīcē, netiek sinhronizētaVārds un uzvārds
@@ -113,10 +101,6 @@
Tērzēt, izmantojot ICQTērzēt, izmantojot JabberTērzēt
- Visas kontaktpersonas
- Kontaktpersonas sarakstā %s
- Lietotāju filtrs
- Viena kontaktpersonaKārtot pēcVārdsUzvārds
@@ -128,8 +112,6 @@
Notīrīt meklēšanas laukuKontsVienmēr izmantot zvaniem
- SIM kartes izvēle šim zvanam
- Atcerēties šo izvēliZvanīt ar piezīmiIerakstiet piezīmi, ko nosūtīt ar zvanu...SŪTĪT UN ZVANĪT
@@ -142,5 +124,4 @@
Cilne “%1$s”. %2$d nelasīti vienumi. Videozvans
- Kopīgot un zvanīt
diff --git a/java/com/android/contacts/common/res/values-mk/strings.xml b/java/com/android/contacts/common/res/values-mk/strings.xml
index bfcb8d21d78534ae29299d42d947825a6f6bf8eb..79f8e24407c9edfa7f67aab8dc96488b9b6f162b 100644
--- a/java/com/android/contacts/common/res/values-mk/strings.xml
+++ b/java/com/android/contacts/common/res/values-mk/strings.xml
@@ -45,21 +45,9 @@
Исчисти често контактирани?Ќе го исчистите списокот на често контактирани лица во апликациите „Контакти“ и „Телефон“ и ќе ги принудите апликациите на е-пошта одново да ги дознаат вашите параметри на обраќање.Чистење често контактирани...
- Достапен
- Отсутен
- Зафатен
- Контакти
- Нејдобри предложени
- ДругАдресарРаботен директориум
- Сите контакти
- Предлози
- Јас(Без име)
- Прегледајте контакт
- Сите контакти со телефонски броеви
- Контакти на Работниот профилПрикажи ажурирањаСамо на уредот, нема да се синхронизираИме
@@ -113,10 +101,6 @@
Разговор на ICQРазговор на JabberРазговор
- Сите контакти
- Контакти во %s
- Контакти во прилагоден приказ
- Еден контактПодреди поИмеПрезиме
@@ -128,8 +112,6 @@
Исчисти го полето за пребарувањеСметкаСекогаш користи го ова за повици
- Изберете SIM за повиков
- Запомни го изборовПовик со белешкаНапишете белешка да се испрати со повикот...ИСПРАТИ И ПОВИКАЈ
@@ -141,5 +123,4 @@
Картичка %1$s. %2$d непрочитани ставки. Видеоповик
- Сподели и повикај
diff --git a/java/com/android/contacts/common/res/values-ml/strings.xml b/java/com/android/contacts/common/res/values-ml/strings.xml
index 34e4f8caa5cba891c924b6cd1aa20d9783935958..b2d453c537dbc59f5baa79c43f7a685f101eba27 100644
--- a/java/com/android/contacts/common/res/values-ml/strings.xml
+++ b/java/com/android/contacts/common/res/values-ml/strings.xml
@@ -45,21 +45,9 @@
സ്ഥിരംവിളിക്കുന്നവരെ മായ്ക്കണോ?നിങ്ങൾ കോൺടാക്റ്റുകളുടെയും ഫോണിന്റെയും അപ്ലിക്കേഷനുകളിലെ പതിവായി കോൺടാക്റ്റുചെയ്യുന്നവരുടെ ലിസ്റ്റ് മായ്ക്കുകയും സ്ക്രാച്ചിൽ നിന്നും ബന്ധപ്പെടൽ മുൻഗണനകൾ അറിയാൻ ഇമെയിൽ അപ്ലിക്കേഷനുകളെ പ്രേരിപ്പിക്കുകയും ചെയ്യും.സ്ഥിരംവിളിക്കുന്നവരെ മായ്ക്കുന്നു…
- ലഭ്യം
- ലഭ്യമല്ല
- തിരക്കിലാണ്
- കോണ്ടാക്റ്റ്
- കൂടുതൽ നിർദ്ദേശിച്ചിരിക്കുന്നവ
- മറ്റുള്ളവഡയറക്ടറിഔദ്യോഗിക ഡയറക്ടറി
- എല്ലാ കോൺടാക്റ്റുകളും
- നിര്ദ്ദേശങ്ങള്
- ഞാന്(പേരില്ല)
- കോൺടാക്റ്റ് കാണുക
- ഫോൺ നമ്പറുകളുള്ള എല്ലാ കോൺടാക്റ്റുകളും
- ഔദ്യോഗിക പ്രൊഫൈൽ കോൺടാക്റ്റുകൾഅപ്ഡേറ്റുകള് കാണുകഉപകരണത്തിൽ മാത്രം, സമന്വയിപ്പിക്കില്ലപേര്
@@ -113,10 +101,6 @@
ICQ ഉപയോഗിച്ച് ചാറ്റുചെയ്യുകJabber ഉപയോഗിച്ച് ചാറ്റുചെയ്യുകചാറ്റുചെയ്യുക
- എല്ലാ കോൺടാക്റ്റുകളും
- %s എന്നതിലെ കോൺടാക്റ്റുകൾ
- ഇഷ്ടാനുസൃതകാഴ്ചയിലെ കോൺടാക്റ്റ്
- സിംഗിൾ കോൺടാക്റ്റ്ഇതുപ്രകാരം അടുക്കുകഫസ്റ്റ് നെയിംലാസ്റ്റ് നെയിം
@@ -128,8 +112,6 @@
തിരയൽ മായ്ക്കുകഅക്കൗണ്ട്ഇത് എല്ലായ്പ്പോഴും കോളുകൾക്കായി ഉപയോഗിക്കുക
- ഈ കോളിനായി സിം തിരഞ്ഞെടുക്കുക
- ഈ തിരഞ്ഞെടുക്കൽ ഓർക്കുകകുറിപ്പിനൊപ്പം വിളിക്കുകകോളിനൊപ്പം അയയ്ക്കുന്നതിന് ഒരു കുറിപ്പ് ടൈപ്പുചെയ്യുക ...അയയ്ക്കുകയും വിളിക്കുകയും ചെയ്യുക
@@ -141,5 +123,4 @@
%1$s ടാബ്. %2$d വായിക്കാത്ത ഇനങ്ങൾ. വീഡിയോ കോള്
- പങ്കിടുക, കോൾ ചെയ്യുക
diff --git a/java/com/android/contacts/common/res/values-mn/strings.xml b/java/com/android/contacts/common/res/values-mn/strings.xml
index 0236eefdcf51b28f2bb660855b711f2696018050..424badec0b57a0aa6b61edf68fd56273aee988d7 100644
--- a/java/com/android/contacts/common/res/values-mn/strings.xml
+++ b/java/com/android/contacts/common/res/values-mn/strings.xml
@@ -45,21 +45,9 @@
Байнга холбоо барьдаг харилцагчдын жагсаалтыг устгах уу?Та холбоо барих хэсэг болон утасны програмд байгаа тогтмол холбоо баридаг хаягуудыг устгах ба имэйл програмуудыг таны холбоо барих хаягуудыг эрэмбэлэх үйлдлийг идэвхжүүлэх болно.Байнга холбоо барьдаг харилцагчдын жагсаалтыг устгаж байна…
- Холбогдсон
- Холдсон
- Завгүй
- Харилцагчид
- Санал болгосон шилдэг
- БусадДиректорАжлын лавлагаа
- Бүх харилцагчид
- Санал болголт
- Би(нэр байхгүй)
- Харилцагчийг харах
- Утасны дугаартай бүх харилцагчид
- Ажлын профайлын харилцагчШинэчлэлтүүдийг харахЗөвхөн төхөөрөмжид, синк хийгээгүйНэр
@@ -113,10 +101,6 @@
ICQ ашиглан чатлахJabber ашиглан чатлахЧат
- Бүх харилцагч
- %s доторх харилцагчид
- Хувийн тохиргоотой харагдац дахь харилцагчид
- Ганц харилцагчЭрэмбэлэхӨөрийн нэрОвог
@@ -128,8 +112,6 @@
Хайлтыг цэвэрлэхБүртгэлДуудлагад байнга үүнийг ашиглах
- Энэ дуудлагд ашиглах SIM сонгоно уу
- Энэ сонголтыг санахТэмдэглэл бүхий дуудлага хийхДуудлаганд илгээх тэмдэглэл бичнэ үү...ИЛГЭЭХ, ДУУДЛАГА
@@ -141,5 +123,4 @@
%1$s таб. %2$d уншаагүй зүйл. Видео дуудлага
- Хуваалцаад залгах
diff --git a/java/com/android/contacts/common/res/values-mr/strings.xml b/java/com/android/contacts/common/res/values-mr/strings.xml
index a520afbeae2d4909374bc32ef5576dd1ea2418e9..3914ef1b70285e82c7a253bfe7fba2b637e61a2b 100644
--- a/java/com/android/contacts/common/res/values-mr/strings.xml
+++ b/java/com/android/contacts/common/res/values-mr/strings.xml
@@ -45,21 +45,9 @@
वारंवार सपर्क साधलेले साफ करायचे?आपण संपर्क आणि फोन अॅप्स मधील वारंवार संपर्क साधलेली सूची साफ कराल आणि ईमेल अॅप्सना सुरवातीपासून तुमची पत्ता प्राधान्ये जाणून घेण्याची सक्ती कराल.वारंवार सपर्क साधलेले साफ करत आहे...
- उपलब्ध
- दूर आहे
- व्यस्त
- संपर्क
- सुचविलेले उत्कृष्ट
- इतरनिर्देशिकाकार्य निर्देशिका
- सर्व संपर्क
- सूचना
- मी(नाव नाही)
- संपर्क पहा
- फोन नंबरसह सर्व संपर्क
- कार्य प्रोफाईल संपर्कअपडेट पहाकेवळ डिव्हाइस, संकालित न केलेलानाव
@@ -113,10 +101,6 @@
ICQ चा वापर करून चॅट कराJabber चा वापर करून चॅट कराचॅट करा
- सर्व संपर्क
- %s मधील संपर्क
- सानुकूल दृश्यामधील संपर्क
- एकल संपर्कनुसार क्रमवारी लावानावआडनाव
@@ -128,8 +112,6 @@
शोध साफ कराखातेकॉलसाठी हे नेहमी वापरा
- या कॉलसाठी सिम निवडा
- ही निवड लक्षात ठेवाटीपसह कॉल कराकॉलसह पाठविण्यासाठी एक टीप टाइप करा...पाठवा आणि कॉल करा
@@ -141,5 +123,4 @@
%1$s टॅब. %2$d न वाचलेले आयटम. व्हिडिओ कॉल
- शेअर करा आणि कॉल करा
diff --git a/java/com/android/contacts/common/res/values-ms/strings.xml b/java/com/android/contacts/common/res/values-ms/strings.xml
index aab737eabad8c831b8d4fcefbe76ad7b3685c0dd..2184dc3adb8d8d0d5ee1a89471767732c6111cc9 100644
--- a/java/com/android/contacts/common/res/values-ms/strings.xml
+++ b/java/com/android/contacts/common/res/values-ms/strings.xml
@@ -45,21 +45,9 @@
Padam bersih senarai kerap dihubungi?Anda akan mengosongkan senarai yang kerap dihubungi dalam apl Kenalan dan Telefon serta memaksa apl e-mel untuk mempelajari pilihan alamat anda dari awal.Memadam bersih senarai kerap dihubungi...
- Ada
- Tiada
- Sibuk
- Kenalan
- Teratas Dicadangkan
- Lain-lainDirektoriDirektori kerja
- Semua kenalan
- Cadangan
- Saya(Tiada nama)
- Lihat kenalan
- Semua kenalan dengan nombor telefon
- Kenalan profil kerjaLihat kemas kiniPeranti sahaja, tidak disegerakkanNama
@@ -113,10 +101,6 @@
Sembang menggunakan ICQSembang menggunakan JabberSembang
- Semua kenalan
- Kenalan dalam %s
- Kenalan dalam paparan tersuai
- Kenalan tunggalIsih mengikutNama pertamaNama keluarga
@@ -128,8 +112,6 @@
Kosongkan carianAkaunSentiasa gunakan ini untuk panggilan
- Pilih SIM untuk panggilan ini
- Ingat pilihan iniPanggilan dengan notaTaip nota untuk dihantar dengan panggilan…HANTAR & PANGGIL
@@ -141,5 +123,4 @@
Tab %1$s. %2$d item belum dibaca. Panggilan video
- Kongsi dan panggil
diff --git a/java/com/android/contacts/common/res/values-my/strings.xml b/java/com/android/contacts/common/res/values-my/strings.xml
index 3671f55d680309a43d7d55844dfb52426044b924..f92fa5ff0ed6e17c1a117ef509f54ef8ca2cdfdd 100644
--- a/java/com/android/contacts/common/res/values-my/strings.xml
+++ b/java/com/android/contacts/common/res/values-my/strings.xml
@@ -45,21 +45,9 @@
အသုံးများသောလိပ်စာများရှင်းပစ်မလား?အသုံးများသော အဆက်အသွယ်စာရင်းအား Contacts နှင့် Phone app များမှ သင် ရှင်းလင်းပစ်မှာဖြစ်ပြီး၊ အီးမေးလ် app များအား သင့်နှစ်သက်ရာ ပြောဆိုဆက်ဆံမှုပုံစံကို အစမှပြန်လည် လေ့လာခိုင်းမည်။အသုံးများသောလိပ်စာများ ရှင်းလင်းနေစဉ်
- ဆက်သွယ်နိုင်ပါသည်
- အဝေးရောက်နေပါသည်
- အလုပ်များနေသည်
- အဆက်အသွယ်များ
- ထိပ်တန်း အကြံပြုထားပါသည်
- တစ်ခြားလမ်းညွှန်အလုပ်လမ်းညွှန်
- လိပ်စာများအားလုံး
- အကြံပြုချက်များ
- ကျွန်ုပ်(အမည်မရှိ)
- အဆက်အသွယ်ကိုကြည့်ရန်
- ဖုန်းနံပါတ်ပါသော လိပ်စာများအားလုံး
- အလုပ်ပရိုဖိုင် အဆက်အသွယ်များအဆင့်မြှင့်ခြင်းများပြရန်ကိရိယာတွင်သာ၊ စင့်ခ်မလုပ်ပါအမည်
@@ -113,10 +101,6 @@
ICQ သုံး၍ ချက်တင်ပြုလုပ်ခြင်းJabberသုံး၍ ချက်တင်ပြုလုပ်ခြင်းချက်တင်းပြောသည်
- ဆက်သွယ်အားလုံး
- %s ထဲမှ အဆက်အသွယ်များ
- မိမိစိတ်ကြိုက် မြင်ကွင်းမှ
- အဆက်အသွယ်တစ်ခုတည်းဖြင့် စီပေးရန်ပထမ အမည်နောက်ဆုံး အမည်
@@ -128,8 +112,6 @@
ရှာဖွေမှုကို ရှင်းပါအကောင့်ခေါ်ဆိုမှုများ အတွက် အမြဲတမ်း ဒါကို သုံးရန်
- ဤခေါ်ဆိုမှုအတွက် ဆင်းမ်ကဒ် ရွေးချယ်ခြင်း
- ဤရွေးချယ်မှုကို မှတ်ထားရန်မှတ်စုတစ်ခုဖြင့် ခေါ်ဆိုမည်ခေါ်ဆိုမှုဖြင့် ပေးပို့ရန် မှတ်စုတစ်ခု ရိုက်ပါ ...ပေးပို့ပြီး ခေါ်ပါ
@@ -141,5 +123,4 @@
%1$s တဘ်။ မဖတ်ရသေးသည့် အရာ %2$d ခု။ ဗီဒီယို ခေါ်ဆိုမှု
- မျှဝေပြီး ခေါ်ဆိုရန်
diff --git a/java/com/android/contacts/common/res/values-nb/strings.xml b/java/com/android/contacts/common/res/values-nb/strings.xml
index 911dc0f5c027d0c08595505333776bc10d7516fc..612b2d62a905952a8378f7d282b2a27db17fd2b1 100644
--- a/java/com/android/contacts/common/res/values-nb/strings.xml
+++ b/java/com/android/contacts/common/res/values-nb/strings.xml
@@ -45,21 +45,9 @@
Vil du fjerne ofte kontaktede personer?Du fjerner listen over ofte kontaktede personer i Kontakter- og Telefon-appene, og tvinger e-postappene til å lære seg adresseinnstillingene dine på nytt.Fjerner ofte kontaktede personer ...
- Tilgjengelig
- Borte
- Opptatt
- Kontakter
- Toppforslag
- AnnenKatalogJobbkatalog
- Alle kontakter
- Forslag
- Meg(Uten navn)
- Se kontakten
- Alle kontakter med telefonnumre
- JobbprofilkontakterSe oppdateringerBare på enheten din, uten synkroniseringNavn
@@ -113,10 +101,6 @@
Nettprat med ICQNettprat med JabberNettprat
- Alle kontakter
- Kontakter i %s
- Kontakter i tilpasset visning
- EnkeltkontaktSortér etterFornavnEtternavn
@@ -128,8 +112,6 @@
Slett søkKontoBruk alltid dette for samtaler
- Velg SIM-kort for dette anropet
- Husk dette valgetRing med et notatSkriv et notat du vil sende med anropet …SEND OG RING
@@ -141,5 +123,4 @@
%1$s-fanen. %2$d uleste elementer. Videosamtale
- Del og ring
diff --git a/java/com/android/contacts/common/res/values-ne/strings.xml b/java/com/android/contacts/common/res/values-ne/strings.xml
index 40f6d8a96d0b1c974e6acf87d8fd09ba988dc7cb..3f0b4e23e3aae88bc210c5626a9a5c5598ce4348 100644
--- a/java/com/android/contacts/common/res/values-ne/strings.xml
+++ b/java/com/android/contacts/common/res/values-ne/strings.xml
@@ -45,21 +45,9 @@
प्रायः सम्पर्क भएकालाई हटाउने?तपाईंले सम्पर्कहरू र फोन अनुप्रयोगहरूमा बारम्बार सम्पर्क गरेको सूची खाली गर्नुहुनेछ र स्क्रयाचबाट तपाईंको ठेगाना प्राथमिकताहरू सिक्नको लागि इमेल अनुप्रयोगहरूलाई दबाब दिनुहुनेछ।बारम्बार सम्पर्क गरिएकाहरूलाई मेटाउँदै ...
- उपलब्ध
- टाढा
- व्यस्त
- सम्पर्क
- सबैभन्दा धेरै सुझाव दिइएको
- अन्यनिर्देशिकाकार्यको निर्देशिका
- सबै सम्पर्कहरू
- सुझावहरू
- म(नाम छैन)
- सम्पर्क हेर्नुहोस्
- फोन नम्बर भएका सबै सम्पर्कहरू
- कार्य प्रोफाइलका सम्पर्कहरूअद्यावधिकहरू अवलोकन गर्नुहोस्यन्त्रमा-मात्र, सिङ्क नभएकोनाम
@@ -113,10 +101,6 @@
ICQको प्रयोग गरेर च्याट गर्नुहोस्जाब्बरको प्रयोग गरेर च्याट गर्नुहोस्कुराकानी
- सबै सम्पर्कहरू
- %sमा सम्पर्कहरू
- कस्टम दृश्यमा रहेका सम्पर्कहरू
- एकल सम्पर्कक्रमवद्घ गर्नुहोस्नामथर
@@ -128,8 +112,6 @@
खोजी सफा गर्नुहोस्खाताकल गर्नका लागि यसको प्रयोग सधैं गर्नुहोस्
- यो कल गर्न SIM छनौट गर्नुहोस्
- यो रोजाइ याद राख्नुहोलाटिप्पणीसँगै कल गर्नुहोस्यस कलसँग पठाउन एक टिप्पणी टाइप गर्नुहोस्पठाउनुहोस् र कल गर्नुहोस्
@@ -141,5 +123,4 @@
%1$s ट्याब। %2$d नपढिएका वस्तुहरू। भिडियो कल
- आदान प्रदान र कल गर्नुहोस्
diff --git a/java/com/android/contacts/common/res/values-nl/strings.xml b/java/com/android/contacts/common/res/values-nl/strings.xml
index f16aa091940dbc7415fdad38b84fe9e8ab7f7763..41c439fdc64683f1c90ba76b551bef44c0cfb205 100644
--- a/java/com/android/contacts/common/res/values-nl/strings.xml
+++ b/java/com/android/contacts/common/res/values-nl/strings.xml
@@ -45,21 +45,9 @@
Lijst regelmatige contacten wissen?Je wist de lijst met contacten waarmee je regelmatig contact opneemt in de apps Contacten en Telefoon, en e-mailapps moeten je voorkeursadressen weer opnieuw leren.Regelmatige contacten wissen...
- Beschikbaar
- Niet beschikbaar
- Bezet
- Contacten
- Populaire suggesties
- OverigDirectoryZakelijke contactenlijst
- Alle contacten
- Suggesties
- Ik(Geen naam)
- Contact weergeven
- Alle contacten met telefoonnummers
- Contacten uit werkprofielUpdates bekijkenAlleen op apparaat, niet gesynchroniseerdNaam
@@ -113,10 +101,6 @@
Chatten via ICQChatten via JabberChat
- Alle contacten
- Contacten in %s
- Contacten in aangepaste weergave
- Eén contactSorteren opVoornaamAchternaam
@@ -128,8 +112,6 @@
Zoekopdracht wissenAccountAltijd gebruiken voor oproepen
- Simkaart voor deze oproep kiezen
- Deze keuze onthoudenOproep met een notitieTyp een notitie om te verzenden met de oproep...VERZENDEN EN BELLEN
@@ -141,5 +123,4 @@
Tabblad %1$s. %2$d ongelezen items. Videogesprek
- Delen en bellen
diff --git a/java/com/android/contacts/common/res/values-no/strings.xml b/java/com/android/contacts/common/res/values-no/strings.xml
index 911dc0f5c027d0c08595505333776bc10d7516fc..612b2d62a905952a8378f7d282b2a27db17fd2b1 100644
--- a/java/com/android/contacts/common/res/values-no/strings.xml
+++ b/java/com/android/contacts/common/res/values-no/strings.xml
@@ -45,21 +45,9 @@
Vil du fjerne ofte kontaktede personer?Du fjerner listen over ofte kontaktede personer i Kontakter- og Telefon-appene, og tvinger e-postappene til å lære seg adresseinnstillingene dine på nytt.Fjerner ofte kontaktede personer ...
- Tilgjengelig
- Borte
- Opptatt
- Kontakter
- Toppforslag
- AnnenKatalogJobbkatalog
- Alle kontakter
- Forslag
- Meg(Uten navn)
- Se kontakten
- Alle kontakter med telefonnumre
- JobbprofilkontakterSe oppdateringerBare på enheten din, uten synkroniseringNavn
@@ -113,10 +101,6 @@
Nettprat med ICQNettprat med JabberNettprat
- Alle kontakter
- Kontakter i %s
- Kontakter i tilpasset visning
- EnkeltkontaktSortér etterFornavnEtternavn
@@ -128,8 +112,6 @@
Slett søkKontoBruk alltid dette for samtaler
- Velg SIM-kort for dette anropet
- Husk dette valgetRing med et notatSkriv et notat du vil sende med anropet …SEND OG RING
@@ -141,5 +123,4 @@
%1$s-fanen. %2$d uleste elementer. Videosamtale
- Del og ring
diff --git a/java/com/android/contacts/common/res/values-pa/strings.xml b/java/com/android/contacts/common/res/values-pa/strings.xml
index 9e998f9cb1efcb7c8c3c031c5fb05c22390cc6fe..d07bc699138ba1ec37638a3d631cc2142e13c2de 100644
--- a/java/com/android/contacts/common/res/values-pa/strings.xml
+++ b/java/com/android/contacts/common/res/values-pa/strings.xml
@@ -45,21 +45,9 @@
ਕੀ ਅਕਸਰ ਸੰਪਰਕ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਹਟਾਉਣੇ ਹਨ?ਤੁਸੀਂ ਵਾਰੀ-ਵਾਰੀ ਸੰਪਰਕ ਅਤੇ ਫੋਨ ਐਪਸ ਵਿੱਚ ਸੰਪਰਕ ਕੀਤੀ ਸੂਚੀ ਹਟਾਓਗੇ ਅਤੇ ਈਮੇਲ ਐਪਸ ਤੇ ਸਕ੍ਰੈਚ ਨਾਲ ਤੁਹਾਡੀਆਂ ਪਤਾ ਲਗਾਉਣ ਦੀਆਂ ਤਰਜੀਹਾਂ ਜਾਣਨ ਲਈ ਜ਼ੋਰ ਪਾਓਗੇ।ਅਕਸਰ ਸੰਪਰਕ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਹਟਾ ਰਿਹਾ ਹੈ…
- ਉਪਲਬਧ
- ਦੂਰ
- ਰੁੱਝਾ ਹੋਇਆ ਹੈ
- ਸੰਪਰਕ
- ਪ੍ਰਮੁੱਖ ਸੁਝਾਏ ਗਏ
- ਹੋਰਡਾਇਰੈਕਟਰੀਕੰਮ ਡਾਇਰੈਕਟਰੀ
- ਸਾਰੇ ਸੰਪਰਕ
- ਸੁਝਾਅ
- ਮੈਂ(ਕੋਈ ਨਾਮ ਨਹੀਂ)
- ਸੰਪਰਕ ਦੇਖੋ
- ਫੋਨ ਨੰਬਰਾਂ ਵਾਲੇ ਸਾਰੇ ਸੰਪਰਕ
- ਕੰਮ ਪ੍ਰੋਫਾਈਲ ਸੰਪਰਕਅਪਡੇਟਾਂ ਦੇਖੋਸਿਰਫ਼-ਡੀਵਾਈਸ \'ਤੇ, ਅਣ-ਸਮਕਾਲੀਕਿਰਤਨਾਮ
@@ -113,10 +101,6 @@
ICQ ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋJabber ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋਚੈਟ
- ਸਾਰੇ ਸੰਪਰਕ
- %s ਵਿੱਚ ਸੰਪਰਕ
- ਕਸਟਮ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਸੰਪਰਕ
- ਸਿੰਗਲ ਸੰਪਰਕਇਸ ਮੁਤਾਬਕ ਛਾਂਟੋਪਹਿਲਾ ਨਾਮਆਖਰੀ ਨਾਮ
@@ -128,8 +112,6 @@
ਖੋਜ ਹਟਾਓਖਾਤਾਕਾਲਾਂ ਲਈ ਹਮੇਸ਼ਾਂ ਇਹ ਵਰਤੋ
- ਇਸ ਕਾਲ ਲਈ ਸਿਮ ਚੁਣੋ
- ਇਹ ਚੋਣ ਯਾਦ ਰੱਖੋਕੋਈ ਨੋਟ ਦੇ ਨਾਲ ਕਾਲ ਕਰੋਕਾਲ ਦੇ ਨਾਲ ਭੇਜਣ ਲਈ ਕੋਈ ਨੋਟ ਟਾਈਪ ਕਰੋ ...ਭੇਜੋ ਅਤੇ ਕਾਲ ਕਰੋ
@@ -141,5 +123,4 @@
%1$s ਟੈਬ। %2$d ਅਣ-ਪੜ੍ਹੀਆਂ ਆਈਟਮਾਂ। ਵੀਡੀਓ ਕਾਲ
- ਸਾਂਝਾ ਕਰੋ ਅਤੇ ਕਾਲ ਕਰੋ
diff --git a/java/com/android/contacts/common/res/values-pl/strings.xml b/java/com/android/contacts/common/res/values-pl/strings.xml
index ed371d7aac696d4569fde78d734e751cda4b2278..79000173524f5366ed3ec9624fb020c1d5f9bcdb 100644
--- a/java/com/android/contacts/common/res/values-pl/strings.xml
+++ b/java/com/android/contacts/common/res/values-pl/strings.xml
@@ -45,21 +45,9 @@
Wyczyścić częste kontakty?Wyczyścisz listę częstych kontaktów w aplikacjach Kontakty i Telefon. Aplikacje pocztowe będą musiały od nowa poznać Twoje preferencje adresowe.Czyszczę częste kontakty…
- Dostępny
- Nieobecny
- Zajęty
- Kontakty
- Najlepsze sugestie
- InnyKatalogKatalog służbowy
- Wszystkie kontakty
- Sugestie
- Ja(Bez nazwy)
- Pokaż kontakt
- Wszystkie kontakty z numerami telefonów
- Kontakty w profilu służbowymPokaż aktualizacjeTylko na urządzeniu – bez synchronizacjiImię i nazwisko
@@ -113,10 +101,6 @@
Czat w ICQCzat w JabberzeCzat
- Wszystkie kontakty
- Kontakty na koncie %s
- Kontakty spełniające kryteria
- Jeden kontaktSortuj wedługImięNazwisko
@@ -128,8 +112,6 @@
Wyczyść wyszukiwanieKontoZawsze używaj do połączeń
- Wybierz kartę SIM, aby zadzwonić
- Zapamiętaj ten wybórPołącz i wyślij notatkęWpisz notatkę, którą chcesz wysłać razem z połączeniem...WYŚLIJ I ZADZWOŃ
@@ -143,5 +125,4 @@
Karta %1$s. %2$d nieprzeczytanego elementu. Rozmowa wideo
- Udostępnij i zadzwoń
diff --git a/java/com/android/contacts/common/res/values-pt-rBR/strings.xml b/java/com/android/contacts/common/res/values-pt-rBR/strings.xml
index 244db57dd549db87573e02fca5c44f87f5fc1791..af03d155be736a8cf12fa5221d32b86aee509a0e 100644
--- a/java/com/android/contacts/common/res/values-pt-rBR/strings.xml
+++ b/java/com/android/contacts/common/res/values-pt-rBR/strings.xml
@@ -45,21 +45,9 @@
Apagar contatos frequentes?Você apagará a lista de contatos frequentes nos apps Contatos e Telefone, fazendo com que os apps de e-mail tenham que redefinir suas preferências de endereçamento.Apagando contatos frequentes…
- Disponível
- Ausente
- Ocupado
- Contatos
- Principais sugestões
- OutrosDiretórioDiretório de trabalho
- Todos os contatos
- Sugestões
- Eu(Sem nome)
- Visualizar contato
- Todos os contatos com números de telefone
- Contatos do perfil de trabalhoVer atualizaçõesSomente no dispositivo, não sincronizadoNome
@@ -113,10 +101,6 @@
Bater papo usando o ICQBater papo usando o JabberBate-papo
- Todos os contatos
- Contatos em %s
- Cont. na vis. pers.
- Contato únicoClassificar porNomeSobrenome
@@ -128,8 +112,6 @@
Limpar pesquisaContaSempre usar esta opção para chamadas
- Escolher o SIM para esta chamada
- Lembrar desta escolhaChamada com uma notaEscreva uma nota para enviar com a chamada...ENVIAR E LIGAR
@@ -141,5 +123,4 @@
Guia \"%1$s\". %2$d itens não lidos. Videochamada
- Compartilhar e ligar
diff --git a/java/com/android/contacts/common/res/values-pt-rPT/strings.xml b/java/com/android/contacts/common/res/values-pt-rPT/strings.xml
index 22b9abe4cd65a36cf66b286c67ea78b933e22095..8c8b6d37f4e040c19459e3055170208de6b5d8ac 100644
--- a/java/com/android/contacts/common/res/values-pt-rPT/strings.xml
+++ b/java/com/android/contacts/common/res/values-pt-rPT/strings.xml
@@ -45,21 +45,9 @@
Limpar contactos frequentes?Limpa a lista de contactos frequentes nas aplicações Contactos e Telemóvel e força as aplicações de email a aprenderem as suas preferências de endereço de raiz.A limpar contactos frequentes...
- Disponível
- Ausente
- Ocupado(a)
- Contactos
- Principais sugestões
- OutroDiretórioDiretório de trabalho
- Todos os contactos
- Sugestões
- Eu(Sem nome)
- Ver contacto
- Todos os contactos com números de telefone
- Contactos do perfil de trabalhoVer atualizaçõesApenas no dispositivo, não sincronizadoNome
@@ -113,10 +101,6 @@
Chat através do ICQChat através do JabberChat
- Todos os contactos
- Contactos em %s
- Contactos na vista personalizada
- Contacto únicoOrdenar porNome próprioApelido
@@ -128,8 +112,6 @@
Limpar pesquisaContaUtilizar sempre este para chamadas
- Escolher o SIM para esta chamada
- Lembrar esta escolhaLigar com uma notaEscrever uma nota para enviar com a chamada...ENVIAR E LIGAR
@@ -141,5 +123,4 @@
Separador %1$s. %2$d itens não lidos. Videochamada
- Partilhar e ligar
diff --git a/java/com/android/contacts/common/res/values-pt/strings.xml b/java/com/android/contacts/common/res/values-pt/strings.xml
index 244db57dd549db87573e02fca5c44f87f5fc1791..af03d155be736a8cf12fa5221d32b86aee509a0e 100644
--- a/java/com/android/contacts/common/res/values-pt/strings.xml
+++ b/java/com/android/contacts/common/res/values-pt/strings.xml
@@ -45,21 +45,9 @@
Apagar contatos frequentes?Você apagará a lista de contatos frequentes nos apps Contatos e Telefone, fazendo com que os apps de e-mail tenham que redefinir suas preferências de endereçamento.Apagando contatos frequentes…
- Disponível
- Ausente
- Ocupado
- Contatos
- Principais sugestões
- OutrosDiretórioDiretório de trabalho
- Todos os contatos
- Sugestões
- Eu(Sem nome)
- Visualizar contato
- Todos os contatos com números de telefone
- Contatos do perfil de trabalhoVer atualizaçõesSomente no dispositivo, não sincronizadoNome
@@ -113,10 +101,6 @@
Bater papo usando o ICQBater papo usando o JabberBate-papo
- Todos os contatos
- Contatos em %s
- Cont. na vis. pers.
- Contato únicoClassificar porNomeSobrenome
@@ -128,8 +112,6 @@
Limpar pesquisaContaSempre usar esta opção para chamadas
- Escolher o SIM para esta chamada
- Lembrar desta escolhaChamada com uma notaEscreva uma nota para enviar com a chamada...ENVIAR E LIGAR
@@ -141,5 +123,4 @@
Guia \"%1$s\". %2$d itens não lidos. Videochamada
- Compartilhar e ligar
diff --git a/java/com/android/contacts/common/res/values-ro/strings.xml b/java/com/android/contacts/common/res/values-ro/strings.xml
index f08de57d46cf2328b8481089565e741274fae7e6..df93d6c05fb42c625e66dc1ac9a7bb99ed4bce9d 100644
--- a/java/com/android/contacts/common/res/values-ro/strings.xml
+++ b/java/com/android/contacts/common/res/values-ro/strings.xml
@@ -45,21 +45,9 @@
Ștergeți pers. frecvent contactate?Veți șterge lista persoanelor contactate frecvent din aplicațiile Agendă și Telefon și veți forța aplicațiile de e-mail să vă învețe preferințele pentru adrese de la zero.Se șterg pers. frecvent contactate…
- Disponibil(ă)
- Plecat(ă)
- Ocupat(ă)
- Agendă
- Cele mai populare sugestii
- AltulDirectorDirectorul de serviciu
- Toată agenda
- Sugestii
- Eu(Fără nume)
- Vizualizați persoana din agendă
- Toate persoanele de contact cu numere de telefon
- Persoane de contact din profilul de serviciuAfișați actualizăriNumai pe dispozitiv, nesincronizatNume
@@ -113,10 +101,6 @@
Conversați prin ICQConversați prin JabberConversați prin chat
- Toată agenda
- Agenda din %s
- Agenda în afișarea personalizată
- O singură persoană de contactSortați dupăPrenumeNume
@@ -128,8 +112,6 @@
Ștergeți căutareaContUtilizați mereu pentru apeluri
- Alegeți cardul SIM pentru acest apel
- Rețineți această alegereApelați împreună cu o notăIntroduceți o notă ca să o trimiteți împreună cu apelul...TRIMITEȚI ȘI APELAȚI
@@ -142,5 +124,4 @@
Fila %1$s. %2$d de elemente necitite. Apel video
- Trimiteți și apelați
diff --git a/java/com/android/contacts/common/res/values-ru/strings.xml b/java/com/android/contacts/common/res/values-ru/strings.xml
index 62e06476bad0312e3ae3381eba6a1b4debeed812..4f371695563ea7380563e1d8229b410482e5ca16 100644
--- a/java/com/android/contacts/common/res/values-ru/strings.xml
+++ b/java/com/android/contacts/common/res/values-ru/strings.xml
@@ -45,21 +45,9 @@
Очистить список популярных контактов?Список популярных контактов в приложениях \"Контакты\" и \"Телефон\" будет очищен, а приложения электронной почты начнут запоминать адреса заново.Подождите…
- Доступен
- Отсутствует
- Не беспокоить
- Контакты
- Топ рекомендуемых
- ДругоеКаталогКаталог контактов из рабочего профиля
- Все контакты
- Рекомендуемые
- ВыИмя не указано
- Посмотреть контакт
- Контакты с номерами телефонов
- Контакты из рабочего профиляПросмотреть обновленияТолько на устройстве, не синхронизируетсяИмя
@@ -113,10 +101,6 @@
Чат через ICQЧат через JabberЧат
- Все контакты
- Контакты аккаунта \"%s\"
- Пользовательский фильтр
- Один контактСортировкаПо имениПо фамилии
@@ -128,8 +112,6 @@
Очистить условия поискаАккаунтВсегда использовать для звонков
- Выберите SIM-карту для вызова
- Запомнить выборНаписать сообщение абонентуВведите текст…ОТПРАВИТЬ И ПОЗВОНИТЬ
@@ -143,5 +125,4 @@
Вкладка %1$s. %2$d непрочитанного элемента. Видеовызов
- Поделиться и позвонить
diff --git a/java/com/android/contacts/common/res/values-si/strings.xml b/java/com/android/contacts/common/res/values-si/strings.xml
index b7c8044c9e603e8809ccfe920eb89f0cfc5ce71e..7b414bd4961befabdd0684325809e74ddbf468d0 100644
--- a/java/com/android/contacts/common/res/values-si/strings.xml
+++ b/java/com/android/contacts/common/res/values-si/strings.xml
@@ -45,21 +45,9 @@
නිතරම සම්බන්ධ වන අය හිස් කරන්නද?ඔබ සම්බන්ධතා සහ දුරකථන යෙදුම්වලින් නිතරම සම්බන්ධ වුණු අයගේ ලැයිස්තුව හිස් කර, මුල සිටම ඔබගේ ලිපින අභිරුචි ඉගෙනීමට ඊ-තැපැල් යෙදුම්වලට බල කරයි.නිතරම සම්බන්ධ වන අය හිස් කරමින්…
- සිටියි
- ළඟ නැත
- කාර්යබහුල
- සම්බන්ධතා
- ඉහළින්ම යෝජිත
- වෙනත්නාමාවලියකාර්යාල සම්බන්ධතා නාමාවලිය
- සියලුම සම්බන්ධතා
- යෝජනා
- මම(නමක් නොමැත)
- සම්බන්ධතාව පෙන්වන්න.
- දුරකථන අංක සහිත සම්බන්ධතා
- කාර්යාල පැතිකඩ සම්බන්ධතායාවත්කාලීන වීම් පෙන්වන්නඋපාංගය-පමණී, සමමුහුර්තකරණය නොකරන ලදීනම
@@ -113,10 +101,6 @@
ICQ භාවිතයෙන් කතාබස් කරන්නJabber භාවිතයෙන් කතාබස් කරන්නකතාබස්
- සියලුම සම්බන්ධතා
- %s හි සම්බන්ධතා
- අභිරුචි පෙනුමේ සම්බන්ධතා
- එක් සම්බන්ධතාවයඅනුපිළිවෙලට සකසා ඇත්තේපළමු නමඅවසාන නම
@@ -128,8 +112,6 @@
සෙවීම හිස් කරන්නගිණුමඇමතුම් සඳහා මෙම එක සැමවිටම භාවිතා කරන්න
- මෙම ඇමතුම සඳහා SIM තෝරන්න
- මෙම තේරීම මතක තබා ගන්නසටහනක් සමගින් අමතන්නඇමතුම සමග යැවීමට සටහනක් ටයිප් කරන්න ...යවන්න සහ අමතන්න
@@ -141,5 +123,4 @@
%1$s ටැබය. නොකියවූ අයිතම %2$d. වීඩියෝ ඇමතුම
- බෙදා ගෙන අමතන්න
diff --git a/java/com/android/contacts/common/res/values-sk/strings.xml b/java/com/android/contacts/common/res/values-sk/strings.xml
index 1e11e1854c2fcab0c639e810405ca6f3b8bd0ab8..a9f40115f067e021f93b47483b8bd44ad2c119bc 100644
--- a/java/com/android/contacts/common/res/values-sk/strings.xml
+++ b/java/com/android/contacts/common/res/values-sk/strings.xml
@@ -45,21 +45,9 @@
Vymazať často kontaktované osoby?Vymažete zoznam často kontaktovaných osôb v aplikáciách Kontakty a Telefón a e-mailové aplikácie budú musieť odznova vytvoriť predvoľby adresátov.Mazanie často kontaktov. osôb...
- Som tu
- Som preč
- Nemám čas
- Kontakty
- Najviac odporúčané
- InéAdresárPracovný adresár
- Všetky kontakty
- Návrhy
- Ja(Bez mena)
- Zobraziť kontakt
- Všetky kontakty s telefónnymi číslami
- Kontakty v pracovnom profileZobraziť aktualizácieLen v zariadení, bez synchronizácieMeno
@@ -113,10 +101,6 @@
Zhovárať sa pomocou služby ICQZhovárať sa pomocou služby JabberČetovať
- Všetky kontakty
- Kontakty v účte %s
- Kontakty vo vlastnom zobrazení
- Jednotlivý kontaktZoradiť podľaKrstné menoPriezvisko
@@ -128,8 +112,6 @@
Vymazať vyhľadávanieÚčetVždy používať pre hovory
- Vyberte SIM kartu na tento hovor
- Zapamätať si túto voľbuHovor s poznámkouNapíšte poznámku, ktorá sa odošle s hovorom...ODOSLAŤ A VOLAŤ
@@ -143,5 +125,4 @@
Karta %1$s. %2$d neprečítaných položiek. Videohovor
- Zdieľať a volať
diff --git a/java/com/android/contacts/common/res/values-sl/strings.xml b/java/com/android/contacts/common/res/values-sl/strings.xml
index 92f8dccb7db7526169d44809a2679c49fe08d251..d71824aa074349bf46391542a5233943ac0109b3 100644
--- a/java/com/android/contacts/common/res/values-sl/strings.xml
+++ b/java/com/android/contacts/common/res/values-sl/strings.xml
@@ -45,21 +45,9 @@
Želite izbrisati seznam pog. stikov?Izbrisali boste seznam pogostih stikov v aplikacijah Stiki in Telefon, zato bodo e-poštne aplikacije začele shranjevati pogoste naslovnike od začetka.Brisanje seznama pogost. stikov ...
- Dosegljiv
- Odsoten
- Zaseden
- Stiki
- Najboljši predlogi
- DrugoImenikDelovni imenik
- Vsi stiki
- Predlogi
- Jaz(Ni imena)
- Ogled stika
- Vsi stiki s telefonskimi številkami
- Stiki za delovni profilPrikaži posodobitveSamo v napravi; se ne sinhroniziraIme
@@ -113,10 +101,6 @@
Klepet s storitvijo ICQKlepet s storitvijo JabberKlepet
- Vsi stiki
- Stiki v %s
- Stiki v pogledu po meri
- Posamezen stikRazvrsti glede naImePriimek
@@ -128,8 +112,6 @@
Počisti iskalno poljeRačunVedno uporabi to možnost za klice
- Izbira kartice SIM za ta klic
- Zapomni si to izbiroKlic z zapiskomVnesite zapisek, ki ga želite poslati s klicem ...POŠLJI IN KLIČI
@@ -143,5 +125,4 @@
Zavihek »%1$s«. %2$d neprebranih elementov. Videoklic
- Klic s skupno rabo
diff --git a/java/com/android/contacts/common/res/values-sq/strings.xml b/java/com/android/contacts/common/res/values-sq/strings.xml
index 7ee06a8c90025ab37166325ff6f57895451dce4f..5446cc2eca60d884897c3684556a2e8caf179333 100644
--- a/java/com/android/contacts/common/res/values-sq/strings.xml
+++ b/java/com/android/contacts/common/res/values-sq/strings.xml
@@ -45,21 +45,9 @@
Të pastrohen kontaktet e shpeshta?Do ta pastrosh listën e kontakteve të shpeshta në aplikacionet \"Kontaktet\" dhe \"Telefoni\" dhe do t\'i detyrosh aplikacionet e mail-it të mësojnë preferencat e tua të adresimit nga e para.Po pastron kontaktet e shpeshta…
- I gatshëm
- I larguar
- I zënë
- Kontaktet
- Sugjerimet kryesore
- TjetërDirektoriaDirektoria e punës
- Të gjitha kontaktet
- Sugjerimet
- Unë(Pa emër)
- Shiko kontaktin
- Të gjitha kontaktet me numra telefoni
- Kontaktet e profilit të punësShiko përditësimetVetëm pajisja, e pasinkronizuarEmri
@@ -113,10 +101,6 @@
Bisedo me ICQBisedo me JabberBisedo
- Të gjitha kontaktet
- Kontaktet në %s
- Pamja e personalizuar
- Një kontakt i vetëmRendit sipasEmriMbiemri
@@ -128,8 +112,6 @@
Pastro kërkiminLlogariaPërdor gjithmonë këtë për telefonatat
- Zgjidh kartën SIM për këtë telefonatë
- Kujtoje këtë zgjedhjeTelefono me shënimShkruaj një shënim për të dërguar një telefonatë...DËRGO DHE TELEFONO
@@ -141,5 +123,4 @@
Skeda %1$s. %2$d artikuj të palexuar. Telefonatë me video
- Ndaj dhe telefono
diff --git a/java/com/android/contacts/common/res/values-sr/strings.xml b/java/com/android/contacts/common/res/values-sr/strings.xml
index 1878fad5a60a03c99774df4f3e82b2cf8c848d8e..34f61fa624eaea1d5c91e179a47ffa4a93b8efa5 100644
--- a/java/com/android/contacts/common/res/values-sr/strings.xml
+++ b/java/com/android/contacts/common/res/values-sr/strings.xml
@@ -45,21 +45,9 @@
Бришете често контактиране?Обрисаћете листу често контактираних у апликацијама Контакти и Телефон, па ће имејл апликације морати поново да прикупе информације о адресирању.Брисање често контактираних...
- Доступан/на
- Одсутан/на
- Заузет/а
- Контакти
- Најпопуларнији предлози
- ДругoДиректоријумДиректоријум за Work
- Сви контакти
- Предлози
- Ја(Нема имена)
- Прикажи контакт
- Сви контакти са бројевима телефона
- Контакти са профила за WorkПрикажи ажурирањаСамо на уређају, не синхронизује сеИме
@@ -113,10 +101,6 @@
Започни ћаскање преко ICQ-аЗапочни ћаскање преко Jabber-аЋаскање
- Сви контакти
- Контакти у групи %s
- Контакти у прилагођеном приказу
- Појединачни контактСортирај премаИменуПрезимену
@@ -128,8 +112,6 @@
Брисање претрагеНалогУвек користи ово за позиве
- Изаберите SIM за овај позив
- Запамти овај изборПозив са белешкомУнесите белешку коју ћете послати уз позив...ПОШАЉИ И ПОЗОВИ
@@ -142,5 +124,4 @@
Картица %1$s. %2$d непрочитаних ставки. Видео позив
- Дели и позови
diff --git a/java/com/android/contacts/common/res/values-sv/strings.xml b/java/com/android/contacts/common/res/values-sv/strings.xml
index 08d52d0e79601341e0e408f365abd5252e7f8036..8ba75359b47d54198d1325db7c454ecb4b95eb66 100644
--- a/java/com/android/contacts/common/res/values-sv/strings.xml
+++ b/java/com/android/contacts/common/res/values-sv/strings.xml
@@ -45,21 +45,9 @@
Vill du rensa listan?Du rensar listan över personer som du kontaktar ofta i apparna Kontakter och Telefon. E-postappar tvingas lära sig dina mottagarinställningar från början.Listan rensas …
- Tillgänglig
- Borta
- Upptagen
- Kontakter
- Bästa förslagen
- ÖvrigtKatalogJobbkatalog
- Alla kontakter
- Förslag
- Jag(Inget namn)
- Visa kontakten
- Alla kontakter med telefonnummer
- Kontakter i jobbprofilenVisa uppdateringarEndast enhet, osynkroniseradNamn
@@ -113,10 +101,6 @@
Chatta med ICQChatta med JabberChatt
- Alla kontakter
- Kontakter i %s
- Kontakter i anpassad vy
- En kontaktSortera efterFörnamnEfternamn
@@ -128,8 +112,6 @@
Rensa sökningKontoAnvänd alltid för samtal
- Välj SIM-kort till det här samtalet
- Kom ihåg det här valetRing med anteckningGör en anteckning som skickas när du ringer …SKICKA OCH RING
@@ -141,5 +123,4 @@
Fliken %1$s. %2$d olästa poster. Videosamtal
- Dela och ring
diff --git a/java/com/android/contacts/common/res/values-sw/strings.xml b/java/com/android/contacts/common/res/values-sw/strings.xml
index 1be9f0afe7faebcf0e3c45fc1e68b53cf9e1d831..3836eb81648d08f06f166cdfed41729d679ed3a3 100644
--- a/java/com/android/contacts/common/res/values-sw/strings.xml
+++ b/java/com/android/contacts/common/res/values-sw/strings.xml
@@ -45,21 +45,9 @@
Futa unaowasiliana nao mara kwa mara?Utafuta orodha ya unaowasiliana nao mara kwa mara katika programu za Anwani na Simu, na ulazimishe programu za barua pepe zitambue mapendeleo yako ya anwani kutoka mwanzo.Inafuta unaowasiliana nao mara kwa mara...
- Inapatikana
- Mbali
- Ana shughuli
- Anwani
- Mapendekezo Maarufu
- NyingineyoSarakaAnwani za kazi
- Anwani zote
- Mapendekezo
- Mimi(Hakuna jina)
- Angalia maelezo ya mawasiliano
- Anwani zote zilizo na nambari ya simu
- Anwani za watu wa kaziniOna sasishoKwenye kifaa tu, haijasawazishwaJina
@@ -113,10 +101,6 @@
Piga gumzo kutumia ICQPiga gumzo kutumia JabberGumzo
- Anwani zote
- Anwani kwenye %s
- Anwani katika mwoneko maalum
- Anwani mojaPanga kulingana naJina la kwanzaJina la mwisho
@@ -128,8 +112,6 @@
Futa utafutajiAkauntiTumia hii kwa simu wakati wote
- Chagua SIM kwa ajili ya simu hii
- Kumbuka chaguo hiliPiga simu inayoambatana na dokezoAndika dokezo litakaloambatana na simu utakayopiga ...TUMA na UPIGE SIMU
@@ -141,5 +123,4 @@
Kichupo cha %1$s. Vipengee %2$d havijasomwa. Simu ya video
- Shiriki na upige simu
diff --git a/java/com/android/contacts/common/res/values-ta/strings.xml b/java/com/android/contacts/common/res/values-ta/strings.xml
index 351023594c71365cc7a7af7d366fda94dc8bc952..ec99c93afcd3cd18e49ca5388bfa3b2d92afec67 100644
--- a/java/com/android/contacts/common/res/values-ta/strings.xml
+++ b/java/com/android/contacts/common/res/values-ta/strings.xml
@@ -45,21 +45,9 @@
அடிக்கடி தொடர்புகொண்ட தொடர்பை அழிக்கவா?தொடர்புகள் மற்றும் ஃபோன் பயன்பாடுகளில் உள்ள அடிக்கடி தொடர்பு கொண்டவர்களின் பட்டியல் அழிக்கப்பட்டு, தொடக்கத்திலிருந்து மீண்டும் உங்கள் முகவரியிடல் விருப்பத்தேர்வுகளை மின்னஞ்சல் பயன்பாடுகள் அறியும்படி செய்யப்படும்.அடிக்கடித் தொடர்புகொண்ட தொடர்பை அழிக்கிறது…
- இருக்கிறார்
- வெளியே
- பணிமிகுதி
- தொடர்புகள்
- அதிகம் பரிந்துரைத்தவை
- மற்றவைகோப்பகம்பணிக் கோப்பகம்
- எல்லா தொடர்புகளும்
- பரிந்துரைகள்
- எனக்கு(பெயர் இல்லை)
- தொடர்பைக் காட்டும் பொத்தான்
- மொபைல் எண்களுடனான எல்லா தொடர்புகளும்
- பணிச் சுயவிவரத் தொடர்புகள்புதுப்பிப்புகளைக் காட்டுசாதனத்தில் மட்டும், ஒத்திசைக்கப்படாதுபெயர்
@@ -113,10 +101,6 @@
ICQ இல் அரட்டையடிJabber இல் அரட்டையடிஅரட்டை
- எல்லா தொடர்புகளும்
- %s இல் உள்ள தொடர்புகள்
- தனிப்பயன் காட்சியில் உள்ள தொடர்புகள்
- ஒரு தொடர்புவரிசைப்படுத்துமுதல் பெயர்இறுதிப் பெயர்
@@ -128,8 +112,6 @@
தேடலை அழிகணக்குஅழைப்புகளுக்கு எப்போதும் இதைப் பயன்படுத்து
- இந்த அழைப்பிற்கான சிம்மைத் தேர்வுசெய்க
- இந்த விருப்பத்தை நினைவில்கொள்குறிப்புடன் அழைக்கவும்அழைப்புடன் சேர்த்து அனுப்ப, குறிப்பை உள்ளிடவும்...அனுப்பி அழை
@@ -141,5 +123,4 @@
%1$s தாவல். படிக்காதவை (%2$d). வீடியோ அழைப்பைத் தொடங்குவதற்கான பொத்தான்
- பகிர்ந்து அழைப்பதற்கான பொத்தான்
diff --git a/java/com/android/contacts/common/res/values-te/strings.xml b/java/com/android/contacts/common/res/values-te/strings.xml
index 8f0ac22101c2e65ce85505857689bb0257d452a0..9d35b642a84acfe77986f48371d9abd2c8007b2b 100644
--- a/java/com/android/contacts/common/res/values-te/strings.xml
+++ b/java/com/android/contacts/common/res/values-te/strings.xml
@@ -45,21 +45,9 @@
తరచుగా సంప్రదించినవాటిని క్లియర్ చేయాలా?మీరు పరిచయాలు మరియు ఫోన్ అనువర్తనాల్లో తరచుగా సంప్రదించిన పరిచయాల జాబితాను తీసివేస్తారు మరియు స్క్రాచ్ నుండి మీ చిరునామా ప్రాధాన్యతలను తెలుసుకునేలా ఇమెయిల్ అనువర్తనాలను నిర్బంధిస్తారు.తరచుగా సంప్రదించినవాటిని క్లియర్ చేస్తోంది…
- అందుబాటులో ఉన్నారు
- దూరంగా ఉన్నారు
- బిజీగా ఉన్నారు
- పరిచయాలు
- ఉత్తమ సూచనలు
- ఇతరండైరెక్టరీకార్యాలయ డైరెక్టరీ
- అన్ని పరిచయాలు
- సూచనలు
- నేను(పేరు లేదు)
- పరిచయాన్ని వీక్షించండి
- ఫోన్ నంబర్లు గల అన్ని పరిచయాలు
- కార్యాలయ ప్రొఫైల్ పరిచయాలునవీకరణలను వీక్షించండిపరికరంలో మాత్రమే ఉంటుంది, సమకాలీకరించబడదుపేరు
@@ -113,10 +101,6 @@
ICQని ఉపయోగించి చాట్ చేయండిJabberని ఉపయోగించి చాట్ చేయండిచాట్ చేయండి
- అన్ని పరిచయాలు
- %sలో పరిచయాలు
- అనుకూల వీక్షణలో పరిచయాలు
- ఒక పరిచయంఇలా క్రమబద్ధీకరించుమొదటి పేరుచివరి పేరు
@@ -128,8 +112,6 @@
శోధనను క్లియర్ చేయిఖాతాకాల్ల కోసం ఎల్లప్పుడూ దీన్ని ఉపయోగించు
- ఈ కాల్ కోసం SIMని ఎంచుకోండి
- ఈ ఎంపికను గుర్తుంచుకోగమనికతో కాల్ చేయికాల్తో పాటు పంపడానికి గమనికను టైప్ చేయండి ...పంపు & కాల్ చేయి
@@ -141,5 +123,4 @@
%1$s ట్యాబ్. %2$d చదవని అంశాలు. వీడియో కాల్
- భాగస్వామ్యం చేసి, కాల్ చేయి
diff --git a/java/com/android/contacts/common/res/values-th/strings.xml b/java/com/android/contacts/common/res/values-th/strings.xml
index 0768e2471b920f18f290c4e19e3e383c0b60bc36..6447bb76d303ce06a8437d13be323d12f52cdcf4 100644
--- a/java/com/android/contacts/common/res/values-th/strings.xml
+++ b/java/com/android/contacts/common/res/values-th/strings.xml
@@ -45,21 +45,9 @@
ล้างรายชื่อที่ติดต่อบ่อยไหมคุณจะล้างรายชื่อของผู้ที่ติดต่อด้วยบ่อยๆ ในแอปพลิเคชัน Contacts และ Phone และบังคับให้แอปพลิเคชันอีเมลเรียนรู้ค่ากำหนดที่อยู่ของคุณใหม่ตั้งแต่ต้นกำลังล้างรายชื่อที่ติดต่อบ่อย…
- พร้อมใช้งาน
- ไม่อยู่
- ไม่ว่าง
- รายชื่อติดต่อ
- รายการแนะนำยอดนิยม
- อื่นๆไดเรกทอรีไดเรกทอรีที่ทำงาน
- รายชื่อติดต่อทั้งหมด
- รายการแนะนำ
- ฉัน(ไม่มีชื่อ)
- ดูผู้ติดต่อ
- รายชื่อติดต่อทั้งหมดที่มีหมายเลขโทรศัพท์
- รายชื่อติดต่อในโปรไฟล์งานดูการอัปเดตอุปกรณ์เท่านั้น ไม่ซิงค์ชื่อ
@@ -113,10 +101,6 @@
แชทโดยใช้ ICQแชทโดยใช้ Jabberแชท
- รายชื่อติดต่อทั้งหมด
- รายชื่อติดต่อใน %s
- รายชื่อติดต่อในมุมมองที่กำหนดเอง
- รายชื่อติดต่อเดียวจัดเรียงตามชื่อนามสกุล
@@ -128,8 +112,6 @@
ล้างการค้นหาบัญชีใช้ในการโทรทุกครั้ง
- เลือกซิมสำหรับการโทรนี้
- จำตัวเลือกนี้โทรพร้อมโน้ตพิมพ์โน้ตเพื่อส่งพร้อมการโทร ...ส่งและโทร
@@ -141,5 +123,4 @@
แท็บ %1$s ยังไม่อ่าน %2$d รายการ Hangouts วิดีโอ
- แชร์และโทร
diff --git a/java/com/android/contacts/common/res/values-tl/strings.xml b/java/com/android/contacts/common/res/values-tl/strings.xml
index 5bceef53992e00381ab97e6a0aa804ac8b3cec6c..1361d926061d8123ecb8496954d5af4286cc065d 100644
--- a/java/com/android/contacts/common/res/values-tl/strings.xml
+++ b/java/com/android/contacts/common/res/values-tl/strings.xml
@@ -45,21 +45,9 @@
I-clear ang madalas na kinontakIki-clear mo ang listahan ng mga madalas na nakakaugnay sa mga app ng Mga Contact at Telepono at pupuwersahin mo ang mga app ng email na matutunan ang iyong mga kagustuhan sa pag-a-address mula sa simula.Kini-clear madalas na inuugnayan…
- Available
- Wala
- Abala
- Mga Contact
- Mga Madalas Imungkahi
- Iba paDirektoryoDirectory sa trabaho
- Lahat ng mga contact
- Mga Mungkahi
- Ako(Walang pangalan)
- Tingnan ang contact
- Lahat ng contact na may mga numero ng telepono
- Mga contact ng profile sa trabahoTingnan ang mga updateDevice lang, inalis sa pagkaka-syncPangalan
@@ -113,10 +101,6 @@
Makipag-chat gamit ang ICQMakipag-chat gamit ang JabberChat
- Lahat ng contact
- Mga contact sa %s
- Mga contact sa custom na view
- Iisang contactUriin ayon saPangalanApelyido
@@ -128,8 +112,6 @@
I-clear ang paghahanapAccountGamitin ito palagi sa mga tawag
- Pumili ng SIM para sa tawag na ito
- Tandaan ang pagpipiliang itoTumawag nang may kasamang talaMag-type ng isang tala na ipadadala kasama ng tawag ...IPADALA AT TAWAGAN
@@ -141,5 +123,4 @@
Tab ng %1$s. %2$d na hindi pa nababasang item. Mag-video call
- Ibahagi at tumawag
diff --git a/java/com/android/contacts/common/res/values-tr/strings.xml b/java/com/android/contacts/common/res/values-tr/strings.xml
index 512891b207e84a3ecf9f98e41180e4ff81936daa..ede896b34466bf9eb0db15fbabc798d9fecda7ee 100644
--- a/java/com/android/contacts/common/res/values-tr/strings.xml
+++ b/java/com/android/contacts/common/res/values-tr/strings.xml
@@ -45,21 +45,9 @@
Sık iletişim kurulanlar silinsin mi?Kişiler ve Telefon uygulamalarındaki sık iletişim kurulanlar listesini temizleyecek ve e-posta uygulamalarını adres tercihlerinizi en baştan öğrenmeye zorlayacaksınız.Sık iletişim kurulanlar siliniyor…
- Müsait
- Dışarıda
- Meşgul
- Kişiler
- En Çok Önerilenler
- DiğerDizinİş dizini
- Tüm kişiler
- Öneriler
- Ben(Adsız)
- Kişiyi görüntüle
- Telefon numarası olan tüm kişiler
- İş profili kişileriGüncellemeleri görüntüleYalnızca cihaz, senkronize edilmemişAdı
@@ -113,10 +101,6 @@
ICQ kullanarak sohbet etJabber kullanarak sohbet etSohbet
- Tüm kişiler
- %s hesabındaki kişiler
- Özel görünümdeki kişiler
- Tek kişiSıralama ölçütüAdSoyadı
@@ -128,8 +112,6 @@
Aramayı temizleHesapÇağrılar için her zaman bunu kullan
- Bu görüşme için kullanılacak SIM\'i seçin
- Bu tercihi hatırlaNotla telefon etÇağrıyla göndermek için bir not yazın...GÖNDER VE ARA
@@ -141,5 +123,4 @@
%1$s sekmesi. %2$d okunmamış öğe. Görüntülü görüşme
- Paylaşır ve telefon eder
diff --git a/java/com/android/contacts/common/res/values-uk/strings.xml b/java/com/android/contacts/common/res/values-uk/strings.xml
index 5e97e43a74a5f33c2eb9998d900b728ad1b7fb97..345429ea3daa8c9e31854b663a8a938009f6d235 100644
--- a/java/com/android/contacts/common/res/values-uk/strings.xml
+++ b/java/com/android/contacts/common/res/values-uk/strings.xml
@@ -45,21 +45,9 @@
Очистити список частих контактів?Буде видалено список користувачів, з якими ви часто спілкуєтеся, з додатків Контакти та Телефон і скинуто налаштування адрес у додатках для електронної пошти.Очищення списку частих контактів…
- На місці
- Не на місці
- Не турбувати
- Контакти
- Найкращі пропозиції
- ІншіКаталогРобочі контакти
- Усі контакти
- Пропозиції
- Я(Без імені)
- Переглянути контакт
- Усі контакти з номерами телефону
- Контакти в робочому профіліПереглянути оновленняЛише на пристрої, не синхронізуєтьсяІм’я
@@ -113,10 +101,6 @@
Чат через ICQЧат через JabberЧат
- Усі контакти
- Контакти в обліковому записі %s
- Користувацький фільтр
- Один контактПараметри сортуванняІм’яПрізвище
@@ -128,8 +112,6 @@
Очистити поле пошукуОбліковий записЗавжди використовувати для дзвінків
- Вибрати SIM-карту для цього виклику
- Запам’ятати цей вибірЗателефонувати й надіслати нотаткуВведіть нотатку, яку хочете надіслати під час дзвінка…ЗАТЕЛЕФОНУВАТИ Й НАДІСЛАТИ
@@ -143,5 +125,4 @@
Вкладка \"%1$s\". %2$d непрочитаного елемента. Відеодзвінок
- Надіслати й зателефонувати
diff --git a/java/com/android/contacts/common/res/values-ur/strings.xml b/java/com/android/contacts/common/res/values-ur/strings.xml
index 89aa8538382e46a1bd590790830f6639db0215ee..22a348118b16b73e0a21452331d606a2a020e646 100644
--- a/java/com/android/contacts/common/res/values-ur/strings.xml
+++ b/java/com/android/contacts/common/res/values-ur/strings.xml
@@ -45,21 +45,9 @@
اکثر رابطہ کردہ کو صاف کریں؟آپ رابطے اور فون ایپس میں اکثر رابطہ کردہ فہرست کو صاف کر دیں گے اور ای میل ایپس کو از سر نو اپنے پتے کی ترجیحات جاننے پر مجبور کریں گے۔اکثر رابطہ کردہ کو صاف کر رہا ہے…
- دستیاب
- دور
- مصروف
- رابطے
- سرفہرست تجویز کردہ
- دیگرڈائریکٹریدفتری ڈائرکٹری
- سبھی رابطے
- تجاویز
- میں(کوئی نام نہیں)
- رابطہ دیکھیں
- فون نمبرز کے ساتھ سبھی رابطے
- دفتری پروفائل رابطےاپ ڈیٹس دیکھیںصرف آلہ۔ غیر مطابقت پذیرنام
@@ -113,10 +101,6 @@
ICQ کے ذریعے چیٹ کریںJabber کے ذریعے چیٹ کریںچیٹ کریں
- سبھی رابطے
- %s میں رابطے
- حسب ضرورت منظر میں رابطے
- واحد رابطہترتیب دیں بلحاظپہلا نامآخری نام
@@ -128,8 +112,6 @@
تلاش صاف کریںاکاؤنٹکالز کیلئے ہمیشہ اس کا استعمال کریں
- اس کال کیلئے SIM منتخب کریں
- یہ انتخاب یاد رکھیںایک نوٹ کے ساتھ کال کریںکال کے ساتھ بھیجنے کیلئے ایک نوٹ ٹائپ کریں…بھیجیں اور کال کریں
@@ -141,5 +123,4 @@
%1$s ٹیب۔ %2$d بغیر پڑھی ہوئی آئٹمز۔ ویڈیو کال
- اشتراک کریں اور کال کریں
diff --git a/java/com/android/contacts/common/res/values-uz/strings.xml b/java/com/android/contacts/common/res/values-uz/strings.xml
index 28b8e18734dc1dea673a6d90d82186928a5f1b1d..d24f197a26a5cc20536faa03293df301b5012c9b 100644
--- a/java/com/android/contacts/common/res/values-uz/strings.xml
+++ b/java/com/android/contacts/common/res/values-uz/strings.xml
@@ -45,21 +45,9 @@
Bu ro‘yxat tozalansinmi?Kontaktlar va Telefon ilovalaridagi tez-tez aloqa qilingan kontaktlar ro‘yxati tozalanadi hamda e-pochta ilovalari manzillarni eslab qolishni qaytadan boshlaydi.Ko‘p gaplashilganlar tozalanmoqda…
- Aloqada
- Tashqarida
- Band
- Kontaktlar
- Eng faol
- BoshqaDirektoriyaIshchi katalogi
- Barcha kontaktlar
- Takliflar
- Men(Ismi yo‘q)
- Kontaktni ko‘rish
- Telefon raqamli kontaktlar
- Ishchi profili kontaktlariYangilanishlarni ko‘rishFaqat qurilmalarda, sinxronlanmaydiIsm
@@ -113,10 +101,6 @@
ICQ’da suhbatlashishJabber’da suhbatlashishSuhbatlashish
- Barcha kontaktlar
- %sdagi kontaktlar
- Filtrlangan kontaktlar
- Bitta kontaktSaralashIsmi asosidaFamiliyasi asosida
@@ -128,8 +112,6 @@
Izlashni tozalashHisobHar doim qo‘ng‘iroqlar u-n foyd-sin
- Chaqiruv uchun SIM kartani tanlang
- Shu tanlov eslab qolinsinQo‘ng‘iroq va izohQo‘ng‘iroqqa qo‘shib yuborish uchun izoh yozing ...YUBORISH va QO‘NG‘IROQ QILISH
@@ -141,5 +123,4 @@
%1$s ichki oynasi. %2$d ta o‘qilmagan narsa. Video suhbat
- Ulashish va chaqirish
diff --git a/java/com/android/contacts/common/res/values-vi/strings.xml b/java/com/android/contacts/common/res/values-vi/strings.xml
index f2f2a242a050c75a62faa442aed47b299be5dc5a..1fc9ba8467d9a02698b01977eb295c7cc27ad147 100644
--- a/java/com/android/contacts/common/res/values-vi/strings.xml
+++ b/java/com/android/contacts/common/res/values-vi/strings.xml
@@ -45,21 +45,9 @@
Xóa danh sách liên hệ thường xuyên?Bạn sẽ xóa danh sách liên hệ thường xuyên trong ứng dụng Danh bạ và điện thoại cũng như buộc các ứng dụng email phải tìm hiểu các tùy chọn gửi của bạn lại từ đầu.Đang xóa DS liên hệ thường xuyên…
- Có mặt
- Đã ra ngoài
- Bận
- Danh bạ
- Đề xuất hàng đầu
- KhácThư mụcThư mục công việc
- Tất cả liên hệ
- Đề xuất
- Tôi(Không có tên)
- Xem liên hệ
- Tất cả người liên hệ có số điện thoại
- Liên hệ trên hồ sơ công việcXem thông tin cập nhậtChỉ trên thiết bị, chưa đồng bộ hóaTên
@@ -113,10 +101,6 @@
Trò chuyện sử dụng ICQTrò chuyện sử dụng JabberTrò chuyện
- Tất cả liên hệ
- Danh bạ trong %s
- Danh bạ ở chế độ xem tùy chỉnh
- Một liên hệSắp xếp theoTênHọ
@@ -128,8 +112,6 @@
Xóa tìm kiếmTài khoảnLuôn sử dụng SIM này để gọi
- Chọn SIM cho cuộc gọi này
- Nhớ lựa chọn nàyGọi điện kèm theo ghi chúNhập ghi chú để gửi kèm cuộc gọi...GỬI và GỌI
@@ -141,5 +123,4 @@
Tab %1$s. %2$d mục chưa đọc. Gọi điện video
- Chia sẻ và gọi
diff --git a/java/com/android/contacts/common/res/values-zh-rCN/strings.xml b/java/com/android/contacts/common/res/values-zh-rCN/strings.xml
index cdaba8c9758103f1786d8f81b3c2de0f02c361eb..424c934ff4d820c9f996f324f2215284e48de34e 100644
--- a/java/com/android/contacts/common/res/values-zh-rCN/strings.xml
+++ b/java/com/android/contacts/common/res/values-zh-rCN/strings.xml
@@ -45,21 +45,9 @@
是否清除常用联系人?此操作会清除“通讯录”和“电话”应用中的常用联系人列表,并强制电子邮件应用重新获取您最常使用的联系地址。正在清除常用联系人…
- 在线
- 离开
- 忙碌
- 通讯录
- 常用联系人推荐
- 其他目录工作目录
- 所有联系人
- 建议
- 我(无姓名)
- 查看联系人
- 所有拥有电话号码的联系人
- 工作资料联系人查看最新动态仅限此设备,不同步姓名
@@ -113,10 +101,6 @@
使用 ICQ 聊天使用 Jabber 聊天聊天
- 所有联系人
- %s 中的联系人
- 自定义视图中的联系人
- 单个联系人排序方式名字姓氏
@@ -128,8 +112,6 @@
清除搜索内容帐号一律使用这张卡进行通话
- 为此次通话选择 SIM 卡
- 记住此选择拨打电话并发送备注输入要在拨打电话时发送的备注…发送并拨打电话
@@ -141,5 +123,4 @@
%1$s标签。%2$d 项未读内容。视频通话
- 分享并拨打电话
diff --git a/java/com/android/contacts/common/res/values-zh-rHK/strings.xml b/java/com/android/contacts/common/res/values-zh-rHK/strings.xml
index e10e0b4ad47b651cce925c6c81f04b469fd2688c..11d05c1bb8b6cb12cec0544903c3c44cc99344db 100644
--- a/java/com/android/contacts/common/res/values-zh-rHK/strings.xml
+++ b/java/com/android/contacts/common/res/values-zh-rHK/strings.xml
@@ -45,21 +45,9 @@
清除常用聯絡人?您將清除「通訊錄」應用程式和「電話」應用程式中的常用聯絡人名單,並強制電子郵件應用程式重新取得您的寄件偏好設定。正在清除常用聯絡人…
- 在線
- 離開
- 忙碌
- 通訊錄
- 熱門建議
- 其他名錄工作目錄
- 所有聯絡人
- 建議
- 我(沒有名稱)
- 查看聯絡人
- 所有附有電話號碼的聯絡人
- 工作設定檔通訊錄瀏覽更新資訊僅限裝置,未同步姓名
@@ -113,10 +101,6 @@
使用 ICQ 進行即時通訊使用 Jabber 進行即時通訊即時通訊
- 所有聯絡人
- %s 中的聯絡人
- 聯絡人自訂檢視
- 單一聯絡人排序方式名字姓氏
@@ -128,8 +112,6 @@
清除搜尋帳戶永遠使用這張 SIM 卡通話
- 選擇此通話要使用的 SIM 卡
- 記住這個選擇撥號時傳送筆記撥號時可以書寫和傳送筆記…傳送和撥號
@@ -141,5 +123,4 @@
「%1$s」標籤 (%2$d 個未讀取項目)。視像通話
- 分享並通話
diff --git a/java/com/android/contacts/common/res/values-zh-rTW/strings.xml b/java/com/android/contacts/common/res/values-zh-rTW/strings.xml
index 3f7dfc05e5a4838d625aa0952c3935a062ec2a34..b99ee0ff35a860666b7f4f612c54f46b354429e1 100644
--- a/java/com/android/contacts/common/res/values-zh-rTW/strings.xml
+++ b/java/com/android/contacts/common/res/values-zh-rTW/strings.xml
@@ -45,21 +45,9 @@
清除常用聯絡人?您即將清除「聯絡人」應用程式和「電話」應用程式中的常用聯絡人清單,並設定讓電子郵件應用程式重新熟悉您的寄件偏好設定。正在清除常用聯絡人…
- 線上
- 離開
- 忙碌
- 聯絡人
- 常用聯絡人建議
- 其他目錄工作聯絡人目錄
- 所有聯絡人
- 建議
- 我(無姓名)
- 查看聯絡人
- 所有包含電話號碼的聯絡人資訊
- 工作資料夾聯絡人查看最新動態只儲存在裝置上,不會同步處理姓名
@@ -113,10 +101,6 @@
使用 ICQ 進行即時通訊使用 Jabber 進行即時通訊即時通訊
- 所有聯絡人
- %s 中的聯絡人
- 聯絡人自訂檢視
- 單一聯絡人排序依據名字姓氏
@@ -128,8 +112,6 @@
清除搜尋帳戶一律使用這張 SIM 卡通話
- 選擇本次通話要使用的 SIM 卡
- 記住這個選擇撥號時傳送備註輸入可在撥號時傳送的備註...傳送並撥打
@@ -141,5 +123,4 @@
%1$s分頁。%2$d 個未讀項目。視訊通話
- 分享及撥號
diff --git a/java/com/android/contacts/common/res/values-zu/strings.xml b/java/com/android/contacts/common/res/values-zu/strings.xml
index dcda7253de986c2f0a1f1d96bfa0ab3a148d0a5f..e6148c92d52b5b4c5a4ca737bb6d2de85941b215 100644
--- a/java/com/android/contacts/common/res/values-zu/strings.xml
+++ b/java/com/android/contacts/common/res/values-zu/strings.xml
@@ -45,21 +45,9 @@
Sula oxhumana nabo njalo?Uzosula uhlu loxhumana nabo kakhulu kuzinhelo zokusebenza zokuxhumana noma zefoni, futhi uphoqelele izinhlelo zokusebenza ze-imeyili ukufunda izintandokazi zakho zekheli kusuka ekuqaleni.Isula oxhumana nabo njalo…
- Ngiyatholakala
- Ngiphumile
- Ngimatasa
- Othi tana nabo
- Okuphezulu okuphakanyisiwe
- OkunyeUhla lwemibhaloUhla lwemibhalo lomsebenzi
- Bonke othintana nabo
- Iziphakamiso
- Mina(Alikho igama)
- Buka oxhumana naye
- Bonke othintana nabo kanye nezinombolo zabo zefoni
- Oxhumana nabo bephrofayela yomsebenziBuka okubuyekeziweIdivayisi kuphela, akuvunyelanisiweIgama
@@ -113,10 +101,6 @@
Xoxa usebenzisa i-ICQXoxa usebenzisa i-JabberXoxa
- Bonke oxhumana nabo
- Oxhumana nabo ku-%s
- Oxhumana nabo ekubukweni okwenziwe ngendlela oyifisayo
- Oyedwa oxhumana nayeHlunga nge-Igama lokuqalaIsibongo
@@ -128,8 +112,6 @@
Sula useshoI-AkhawuntiNjalo sebenzisa lokhu kumakholi
- Khetha i-SIM yale kholi
- Khumbula lokhu okukhethiweShaya ngenothiThayipha inothi ukuthumela nekholi ...THUMELA FUTHI YENZA IKHOLI
@@ -141,5 +123,4 @@
%1$s ithebhu. %2$d izinto ezingafundiwe. Ikholi yevidiyo
- Yabelana uphinde ushaye
diff --git a/java/com/android/contacts/common/util/AccountFilterUtil.java b/java/com/android/contacts/common/util/AccountFilterUtil.java
deleted file mode 100644
index 45876354d2d7db596ae499b1a5863732594acd83..0000000000000000000000000000000000000000
--- a/java/com/android/contacts/common/util/AccountFilterUtil.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-package com.android.contacts.common.util;
-
-import android.content.Context;
-import android.view.View;
-import android.widget.TextView;
-import com.android.contacts.common.list.ContactListFilter;
-import com.android.dialer.contacts.resources.R;
-
-/** Utility class for account filter manipulation. */
-public class AccountFilterUtil {
-
- /**
- * Similar to {@link #updateAccountFilterTitleForPeople(View, ContactListFilter, boolean,
- * boolean)}, but for Phone UI.
- */
- public static boolean updateAccountFilterTitleForPhone(
- View filterContainer, ContactListFilter filter, boolean showTitleForAllAccounts) {
- return updateAccountFilterTitle(filterContainer, filter, showTitleForAllAccounts, true);
- }
-
- private static boolean updateAccountFilterTitle(
- View filterContainer,
- ContactListFilter filter,
- boolean showTitleForAllAccounts,
- boolean forPhone) {
- final Context context = filterContainer.getContext();
- final TextView headerTextView =
- (TextView) filterContainer.findViewById(R.id.account_filter_header);
-
- boolean textWasSet = false;
- if (filter != null) {
- if (forPhone) {
- if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
- if (showTitleForAllAccounts) {
- headerTextView.setText(R.string.list_filter_phones);
- textWasSet = true;
- }
- } else if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
- headerTextView.setText(
- context.getString(R.string.listAllContactsInAccount, filter.accountName));
- textWasSet = true;
- } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
- headerTextView.setText(R.string.listCustomView);
- textWasSet = true;
- }
- } else {
- if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
- if (showTitleForAllAccounts) {
- headerTextView.setText(R.string.list_filter_all_accounts);
- textWasSet = true;
- }
- } else if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
- headerTextView.setText(
- context.getString(R.string.listAllContactsInAccount, filter.accountName));
- textWasSet = true;
- } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
- headerTextView.setText(R.string.listCustomView);
- textWasSet = true;
- } else if (filter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
- headerTextView.setText(R.string.listSingleContact);
- textWasSet = true;
- }
- }
- }
- return textWasSet;
- }
-}
diff --git a/java/com/android/contacts/common/util/CommonDateUtils.java b/java/com/android/contacts/common/util/CommonDateUtils.java
index 312e691f82eb2f6abd7d6f172bd3062f483be99d..91a0f63108fb9b53877f410e7cd7487cc4d01c6b 100644
--- a/java/com/android/contacts/common/util/CommonDateUtils.java
+++ b/java/com/android/contacts/common/util/CommonDateUtils.java
@@ -31,7 +31,4 @@ public class CommonDateUtils {
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
public static final SimpleDateFormat NO_YEAR_DATE_AND_TIME_FORMAT =
new SimpleDateFormat("--MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
-
- /** Exchange requires 8:00 for birthdays */
- public static final int DEFAULT_HOUR = 8;
}
diff --git a/java/com/android/contacts/common/util/ContactDisplayUtils.java b/java/com/android/contacts/common/util/ContactDisplayUtils.java
index 86d20bca04b37b0c870f92af0039484042ef87e3..22da7196aa722066e111c0feffa98d68e5832da9 100644
--- a/java/com/android/contacts/common/util/ContactDisplayUtils.java
+++ b/java/com/android/contacts/common/util/ContactDisplayUtils.java
@@ -19,14 +19,16 @@ package com.android.contacts.common.util;
import android.content.Context;
import android.content.res.Resources;
import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.telephony.PhoneNumberUtils;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.TtsSpan;
import android.util.Patterns;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.dialer.common.LogUtil;
import com.android.dialer.contacts.resources.R;
import java.util.Objects;
@@ -210,7 +212,7 @@ public class ContactDisplayUtils {
* phone number text wherever it is found within the message.
*/
public static Spannable getTelephoneTtsSpannable(
- @Nullable String message, @Nullable String phoneNumber) {
+ @Nullable String message, @Nullable String phoneNumber) {
if (message == null) {
return null;
}
diff --git a/java/com/android/contacts/common/util/ContactListViewUtils.java b/java/com/android/contacts/common/util/ContactListViewUtils.java
index 924789b16c68e1469767d1b9f3fb9a9238e1b7ea..ba240792bc264c300c0dfed5893bb69d87f51ebf 100644
--- a/java/com/android/contacts/common/util/ContactListViewUtils.java
+++ b/java/com/android/contacts/common/util/ContactListViewUtils.java
@@ -43,47 +43,4 @@ public class ContactListViewUtils {
listView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
}
}
-
- /**
- * Add padding to {@param listView} if this configuration has set both space weight and view
- * weight on the layout. Use this util method instead of defining the padding in the layout file
- * so that the {@param listView}'s padding can be set proportional to the card padding.
- *
- * @param listView ListView that we add padding to
- * @param rootLayout layout that contains ListView and R.id.list_card
- */
- public static void applyCardPaddingToView(
- Resources resources, final ListView listView, final View rootLayout) {
- // Set a padding on the list view so it appears in the center of the card
- // in the layout if required.
- final int listSpaceWeight = resources.getInteger(R.integer.contact_list_space_layout_weight);
- final int listViewWeight = resources.getInteger(R.integer.contact_list_card_layout_weight);
- if (listSpaceWeight > 0 && listViewWeight > 0) {
- rootLayout.setBackgroundResource(0);
- // Set the card view visible
- View mCardView = rootLayout.findViewById(R.id.list_card);
- if (mCardView == null) {
- throw new RuntimeException(
- "Your content must have a list card view who can be turned visible "
- + "whenever it is necessary.");
- }
- mCardView.setVisibility(View.VISIBLE);
-
- // Add extra padding to the list view to make them appear in the center of the card.
- // In order to avoid jumping, we skip drawing the next frame of the ListView.
- ViewUtil.doOnPreDraw(
- listView,
- false,
- new Runnable() {
- @Override
- public void run() {
- // Use the rootLayout.getWidth() instead of listView.getWidth() since
- // we sometimes hide the listView until we finish loading data. This would
- // result in incorrect padding.
- ContactListViewUtils.addPaddingToView(
- listView, rootLayout.getWidth(), listSpaceWeight, listViewWeight);
- }
- });
- }
- }
}
diff --git a/java/com/android/contacts/common/util/ContactLoaderUtils.java b/java/com/android/contacts/common/util/ContactLoaderUtils.java
index e30971721d828a09770c913dd3e088545afa1042..371bb4eef32b304e47eac01e94af3adb9201e572 100644
--- a/java/com/android/contacts/common/util/ContactLoaderUtils.java
+++ b/java/com/android/contacts/common/util/ContactLoaderUtils.java
@@ -64,15 +64,6 @@ public final class ContactLoaderUtils {
throw new IllegalArgumentException("uri format is unknown");
}
- // Legacy Style? Convert to RawContact
- final String OBSOLETE_AUTHORITY = Contacts.AUTHORITY;
- if (OBSOLETE_AUTHORITY.equals(authority)) {
- // Legacy Format. Convert to RawContact-Uri and then lookup the contact
- final long rawContactId = ContentUris.parseId(uri);
- return RawContacts.getContactLookupUri(
- resolver, ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId));
- }
-
throw new IllegalArgumentException("uri authority is unknown");
}
}
diff --git a/java/com/android/contacts/common/util/SearchUtil.java b/java/com/android/contacts/common/util/SearchUtil.java
deleted file mode 100644
index 314d565b28abceb226543ff1d80a491ef855b08c..0000000000000000000000000000000000000000
--- a/java/com/android/contacts/common/util/SearchUtil.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-package com.android.contacts.common.util;
-
-import android.support.annotation.VisibleForTesting;
-
-/** Methods related to search. */
-public class SearchUtil {
-
- /**
- * Given a string with lines delimited with '\n', finds the matching line to the given substring.
- *
- * @param contents The string to search.
- * @param substring The substring to search for.
- * @return A MatchedLine object containing the matching line and the startIndex of the substring
- * match within that line.
- */
- public static MatchedLine findMatchingLine(String contents, String substring) {
- final MatchedLine matched = new MatchedLine();
-
- // Snippet may contain multiple lines separated by "\n".
- // Locate the lines of the content that contain the substring.
- final int index = SearchUtil.contains(contents, substring);
- if (index != -1) {
- // Match found. Find the corresponding line.
- int start = index - 1;
- while (start > -1) {
- if (contents.charAt(start) == '\n') {
- break;
- }
- start--;
- }
- int end = index + 1;
- while (end < contents.length()) {
- if (contents.charAt(end) == '\n') {
- break;
- }
- end++;
- }
- matched.line = contents.substring(start + 1, end);
- matched.startIndex = index - (start + 1);
- }
- return matched;
- }
-
- /**
- * Similar to String.contains() with two main differences:
- *
- *
1) Only searches token prefixes. A token is defined as any combination of letters or
- * numbers.
- *
- *
2) Returns the starting index where the substring is found.
- *
- * @param value The string to search.
- * @param substring The substring to look for.
- * @return The starting index where the substring is found. {@literal -1} if substring is not
- * found in value.
- */
- @VisibleForTesting
- static int contains(String value, String substring) {
- if (value.length() < substring.length()) {
- return -1;
- }
-
- // i18n support
- // Generate the code points for the substring once.
- // There will be a maximum of substring.length code points. But may be fewer.
- // Since the array length is not an accurate size, we need to keep a separate variable.
- final int[] substringCodePoints = new int[substring.length()];
- int substringLength = 0; // may not equal substring.length()!!
- for (int i = 0; i < substring.length(); ) {
- final int codePoint = Character.codePointAt(substring, i);
- substringCodePoints[substringLength] = codePoint;
- substringLength++;
- i += Character.charCount(codePoint);
- }
-
- for (int i = 0; i < value.length(); i = findNextTokenStart(value, i)) {
- int numMatch = 0;
- for (int j = i; j < value.length() && numMatch < substringLength; ++numMatch) {
- int valueCp = Character.toLowerCase(value.codePointAt(j));
- int substringCp = substringCodePoints[numMatch];
- if (valueCp != substringCp) {
- break;
- }
- j += Character.charCount(valueCp);
- }
- if (numMatch == substringLength) {
- return i;
- }
- }
- return -1;
- }
-
- /**
- * Find the start of the next token. A token is composed of letters and numbers. Any other
- * character are considered delimiters.
- *
- * @param line The string to search for the next token.
- * @param startIndex The index to start searching. 0 based indexing.
- * @return The index for the start of the next token. line.length() if next token not found.
- */
- @VisibleForTesting
- static int findNextTokenStart(String line, int startIndex) {
- int index = startIndex;
-
- // If already in token, eat remainder of token.
- while (index <= line.length()) {
- if (index == line.length()) {
- // No more tokens.
- return index;
- }
- final int codePoint = line.codePointAt(index);
- if (!Character.isLetterOrDigit(codePoint)) {
- break;
- }
- index += Character.charCount(codePoint);
- }
-
- // Out of token, eat all consecutive delimiters.
- while (index <= line.length()) {
- if (index == line.length()) {
- return index;
- }
- final int codePoint = line.codePointAt(index);
- if (Character.isLetterOrDigit(codePoint)) {
- break;
- }
- index += Character.charCount(codePoint);
- }
-
- return index;
- }
-
- /**
- * Anything other than letter and numbers are considered delimiters. Remove start and end
- * delimiters since they are not relevant to search.
- *
- * @param query The query string to clean.
- * @return The cleaned query. Empty string if all characters are cleaned out.
- */
- public static String cleanStartAndEndOfSearchQuery(String query) {
- int start = 0;
- while (start < query.length()) {
- int codePoint = query.codePointAt(start);
- if (Character.isLetterOrDigit(codePoint)) {
- break;
- }
- start += Character.charCount(codePoint);
- }
-
- if (start == query.length()) {
- // All characters are delimiters.
- return "";
- }
-
- int end = query.length() - 1;
- while (end > -1) {
- if (Character.isLowSurrogate(query.charAt(end))) {
- // Assume valid i18n string. There should be a matching high surrogate before it.
- end--;
- }
- int codePoint = query.codePointAt(end);
- if (Character.isLetterOrDigit(codePoint)) {
- break;
- }
- end--;
- }
-
- // end is a letter or digit.
- return query.substring(start, end + 1);
- }
-
- public static class MatchedLine {
-
- public int startIndex = -1;
- public String line;
-
- @Override
- public String toString() {
- return "MatchedLine{" + "line='" + line + '\'' + ", startIndex=" + startIndex + '}';
- }
- }
-}
diff --git a/java/com/android/contacts/common/util/StopWatch.java b/java/com/android/contacts/common/util/StopWatch.java
deleted file mode 100644
index 7986d1081a29b595fcd1cd0d5b2a7664b562b108..0000000000000000000000000000000000000000
--- a/java/com/android/contacts/common/util/StopWatch.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-package com.android.contacts.common.util;
-
-import com.android.dialer.common.LogUtil;
-import java.util.ArrayList;
-
-/** A {@link StopWatch} records start, laps and stop, and print them to logcat. */
-public class StopWatch {
-
- private final String mLabel;
-
- private final ArrayList mTimes = new ArrayList<>();
- private final ArrayList mLapLabels = new ArrayList<>();
-
- private StopWatch(String label) {
- mLabel = label;
- lap("");
- }
-
- /** Create a new instance and start it. */
- public static StopWatch start(String label) {
- return new StopWatch(label);
- }
-
- /** Record a lap. */
- public void lap(String lapLabel) {
- mTimes.add(System.currentTimeMillis());
- mLapLabels.add(lapLabel);
- }
-
- /** Stop it and log the result, if the total time >= {@code timeThresholdToLog}. */
- public void stopAndLog(String TAG, int timeThresholdToLog) {
-
- lap("");
-
- final long start = mTimes.get(0);
- final long stop = mTimes.get(mTimes.size() - 1);
-
- final long total = stop - start;
- if (total < timeThresholdToLog) {
- return;
- }
-
- final StringBuilder sb = new StringBuilder();
- sb.append(mLabel);
- sb.append(",");
- sb.append(total);
- sb.append(": ");
-
- long last = start;
- for (int i = 1; i < mTimes.size(); i++) {
- final long current = mTimes.get(i);
- sb.append(mLapLabels.get(i));
- sb.append(",");
- sb.append((current - last));
- sb.append(" ");
- last = current;
- }
- LogUtil.v(TAG, sb.toString());
- }
-}
diff --git a/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java b/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
index 014dcf2a13d89adf98477eba0edc6000714ee919..43027811c1badaedbe518e3d9b9747531a8df2c9 100644
--- a/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
+++ b/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
@@ -25,9 +25,6 @@ import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.ResultReceiver;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
@@ -43,6 +40,10 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.contacts.common.compat.PhoneAccountCompat;
import com.android.dialer.contacts.resources.R;
import com.android.dialer.location.GeoUtil;
@@ -57,7 +58,7 @@ import com.google.common.base.Optional;
*/
public class SelectPhoneAccountDialogFragment extends DialogFragment {
- @VisibleForTesting public static final String ARG_OPTIONS = "options";
+ private static final String ARG_OPTIONS = "options";
private static final String ARG_IS_DEFAULT_CHECKED = "is_default_checked";
@@ -83,17 +84,6 @@ public class SelectPhoneAccountDialogFragment extends DialogFragment {
this.listener = listener;
}
- @Nullable
- @VisibleForTesting
- public SelectPhoneAccountListener getListener() {
- return listener;
- }
-
- @VisibleForTesting
- public boolean canSetDefault() {
- return options.getCanSetDefault();
- }
-
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
diff --git a/java/com/android/dialer/about/AboutPhoneFragment.java b/java/com/android/dialer/about/AboutPhoneFragment.java
deleted file mode 100644
index ecd7c0f76badd3ed484faf5a313c175f8a52c9b5..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/AboutPhoneFragment.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.about;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.PreferenceFragment;
-import android.text.TextUtils;
-
-/** The fragment for information about the Phone App */
-public class AboutPhoneFragment extends PreferenceFragment {
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.about_phone_fragment);
-
- // We set the intent here, instead of in XML, to avoid specifying a target package, which
- // differs between AOSP and the GoogleDialer.
- Intent openSourceActivity =
- new Intent(getActivity().getApplicationContext(), LicenseMenuActivity.class);
- findPreference(getString(R.string.open_source_licenses_key)).setIntent(openSourceActivity);
- populateBuildVersion();
- }
-
- private void populateBuildVersion() {
- Preference buildVersion = findPreference(getResources().getString(R.string.build_version_key));
- String versionName = getVersionName();
- if (!TextUtils.isEmpty(versionName)) {
- buildVersion.setSummary(versionName);
- }
- }
-
- private String getVersionName() {
- Context context = getContext();
- try {
- return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
- } catch (NameNotFoundException e) {
- return "";
- }
- }
-
- @Override
- public Context getContext() {
- return getActivity();
- }
-}
diff --git a/java/com/android/dialer/about/AndroidManifest.xml b/java/com/android/dialer/about/AndroidManifest.xml
deleted file mode 100644
index 6892674d199c6702958d344d3c62ba8169255821..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/AndroidManifest.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/about/License.java b/java/com/android/dialer/about/License.java
deleted file mode 100644
index d0d73b8e17a772fd05871ce251ae77baf5576578..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/License.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.about;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * Container class to store the name of a library and the filename of its associated license file.
- */
-public final class License implements Comparable, Parcelable {
- // Name of the third-party library.
- private final String libraryName;
- // Byte offset in the file to the start of the license text.
- private final long licenseOffset;
- // Byte length of the license text.
- private final int licenseLength;
-
- /**
- * Create an object representing a stored license. The text for all licenses is stored in a single
- * file, so the offset and length describe this license's position within the file.
- */
- static License create(String libraryName, long licenseOffset, int licenseLength) {
- return new License(libraryName, licenseOffset, licenseLength);
- }
-
- public static final Parcelable.Creator CREATOR =
- new Parcelable.Creator() {
- @Override
- public License createFromParcel(Parcel in) {
- return new License(in);
- }
-
- @Override
- public License[] newArray(int size) {
- return new License[size];
- }
- };
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(libraryName);
- dest.writeLong(licenseOffset);
- dest.writeInt(licenseLength);
- }
-
- @Override
- public int compareTo(License o) {
- return libraryName.compareToIgnoreCase(o.getLibraryName());
- }
-
- @Override
- public String toString() {
- return getLibraryName();
- }
-
- private License(String libraryName, long licenseOffset, int licenseLength) {
- this.libraryName = libraryName;
- this.licenseOffset = licenseOffset;
- this.licenseLength = licenseLength;
- }
-
- private License(Parcel in) {
- libraryName = in.readString();
- licenseOffset = in.readLong();
- licenseLength = in.readInt();
- }
-
- String getLibraryName() {
- return libraryName;
- }
-
- long getLicenseOffset() {
- return licenseOffset;
- }
-
- int getLicenseLength() {
- return licenseLength;
- }
-}
diff --git a/java/com/android/dialer/about/LicenseActivity.java b/java/com/android/dialer/about/LicenseActivity.java
deleted file mode 100644
index 3cb7540e63c003f04c4f843428d928d3f339432d..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/LicenseActivity.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.about;
-
-import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-import android.view.MenuItem;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-/** Simple Activity that renders locally stored open source legal info in a text view. */
-public final class LicenseActivity extends AppCompatActivity {
- private static final String TAG = "LicenseActivity";
- private static final String STATE_SCROLL_POS = "scroll_pos";
-
- @Override
- public void onCreate(Bundle bundle) {
- super.onCreate(bundle);
- setContentView(R.layout.license_scrollview);
-
- License license = getIntent().getParcelableExtra(LicenseMenuActivity.ARGS_LICENSE);
- getSupportActionBar().setTitle(license.getLibraryName());
-
- // Show 'up' button with no logo.
- getSupportActionBar().setDisplayShowHomeEnabled(true);
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- getSupportActionBar().setLogo(null);
-
- TextView textView = (TextView) findViewById(R.id.license_activity_textview);
- String licenseText = Licenses.getLicenseText(this, license);
- if (licenseText == null) {
- finish();
- return;
- }
- textView.setText(licenseText);
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- ScrollView scrollView = (ScrollView) findViewById(R.id.license_activity_scrollview);
- TextView textView = (TextView) findViewById(R.id.license_activity_textview);
- int firstVisibleLine = textView.getLayout().getLineForVertical(scrollView.getScrollY());
- int firstVisibleChar = textView.getLayout().getLineStart(firstVisibleLine);
- outState.putInt(STATE_SCROLL_POS, firstVisibleChar);
- }
-
- @Override
- public void onRestoreInstanceState(Bundle savedInstanceState) {
- super.onRestoreInstanceState(savedInstanceState);
- final ScrollView scrollView = (ScrollView) findViewById(R.id.license_activity_scrollview);
- final int firstVisibleChar = savedInstanceState.getInt(STATE_SCROLL_POS);
- scrollView.post(
- new Runnable() {
- @Override
- public void run() {
- TextView textView = (TextView) findViewById(R.id.license_activity_textview);
- int firstVisibleLine = textView.getLayout().getLineForOffset(firstVisibleChar);
- int offset = textView.getLayout().getLineTop(firstVisibleLine);
- scrollView.scrollTo(0, offset);
- }
- });
- }
-
- @Override
- public boolean onOptionsItemSelected(final MenuItem item) {
- if (item.getItemId() == android.R.id.home) {
- finish();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-}
diff --git a/java/com/android/dialer/about/LicenseLoader.java b/java/com/android/dialer/about/LicenseLoader.java
deleted file mode 100644
index 50d6834d92a392853aa8eba0cde0f20a31cbde79..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/LicenseLoader.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.about;
-
-import android.content.Context;
-import android.support.v4.content.AsyncTaskLoader;
-import java.util.List;
-
-/** {@link AsyncTaskLoader} to load the list of licenses for the license menu activity. */
-final class LicenseLoader extends AsyncTaskLoader> {
-
- private List licenses;
-
- LicenseLoader(Context context) {
- // This must only pass the application context to avoid leaking a pointer to the Activity.
- super(context.getApplicationContext());
- }
-
- @Override
- public List loadInBackground() {
- return Licenses.getLicenses(getContext());
- }
-
- @Override
- public void deliverResult(List licenses) {
- this.licenses = licenses;
- super.deliverResult(licenses);
- }
-
- @Override
- protected void onStartLoading() {
- if (licenses != null) {
- deliverResult(licenses);
- } else {
- forceLoad();
- }
- }
-
- @Override
- protected void onStopLoading() {
- cancelLoad();
- }
-}
diff --git a/java/com/android/dialer/about/LicenseMenuActivity.java b/java/com/android/dialer/about/LicenseMenuActivity.java
deleted file mode 100644
index f609d07d763c0cb54762298e07aa5883f8f6e75f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/LicenseMenuActivity.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.about;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.v4.app.LoaderManager.LoaderCallbacks;
-import android.support.v4.content.Loader;
-import android.support.v7.app.AppCompatActivity;
-import android.view.MenuItem;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-import java.util.ArrayList;
-import java.util.List;
-
-/** An Activity listing third party libraries with notice licenses. */
-public final class LicenseMenuActivity extends AppCompatActivity
- implements LoaderCallbacks> {
-
- static final String ARGS_LICENSE = "license";
-
- private static final int LOADER_ID = 54321;
-
- private ArrayAdapter listAdapter;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.license_menu_activity);
-
- if (getSupportActionBar() != null) {
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- }
-
- listAdapter = new ArrayAdapter<>(this, R.layout.license, R.id.license, new ArrayList<>());
- getSupportLoaderManager().initLoader(LOADER_ID, null, this);
- ListView listView = (ListView) findViewById(R.id.license_list);
- listView.setAdapter(listAdapter);
- listView.setOnItemClickListener(
- new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- License license = (License) parent.getItemAtPosition(position);
- Intent licenseIntent = new Intent(LicenseMenuActivity.this, LicenseActivity.class);
- licenseIntent.putExtra(ARGS_LICENSE, license);
- startActivity(licenseIntent);
- }
- });
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId() == android.R.id.home) {
- // Go back one place in the history stack, if the app icon is clicked.
- finish();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- getSupportLoaderManager().destroyLoader(LOADER_ID);
- }
-
- @Override
- public Loader> onCreateLoader(int id, Bundle args) {
- return new LicenseLoader(this);
- }
-
- @Override
- public void onLoadFinished(Loader> loader, List licenses) {
- listAdapter.clear();
- listAdapter.addAll(licenses);
- listAdapter.notifyDataSetChanged();
- }
-
- @Override
- public void onLoaderReset(Loader> loader) {
- listAdapter.clear();
- listAdapter.notifyDataSetChanged();
- }
-}
diff --git a/java/com/android/dialer/about/Licenses.java b/java/com/android/dialer/about/Licenses.java
deleted file mode 100644
index bd3d0ce27f799692c81d7a6f3d915ced355e89dd..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/Licenses.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.about;
-
-import android.content.Context;
-import android.content.res.Resources;
-import com.android.dialer.common.Assert;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Collections;
-
-/** A helper for extracting licenses. */
-public final class Licenses {
- private static final String TAG = "Licenses";
- private static final String LICENSE_FILENAME = "third_party_licenses";
- private static final String LICENSE_METADATA_FILENAME = "third_party_license_metadata";
-
- /** Return the licenses bundled into this app. */
- public static ArrayList getLicenses(Context context) {
- return getLicenseListFromMetadata(
- getTextFromResource(context.getApplicationContext(), LICENSE_METADATA_FILENAME, 0, -1));
- }
-
- /**
- * Returns a list of {@link License}s parsed from a license metadata file.
- *
- * @param metadata a {@code String} containing the contents of a license metadata file.
- */
- private static ArrayList getLicenseListFromMetadata(String metadata) {
- String[] entries = metadata.split("\n");
- ArrayList licenses = new ArrayList(entries.length);
- for (String entry : entries) {
- int delimiter = entry.indexOf(' ');
- String[] licenseLocation = entry.substring(0, delimiter).split(":");
- Assert.checkState(
- delimiter > 0 && licenseLocation.length == 2,
- "Invalid license meta-data line:\n" + entry);
- long licenseOffset = Long.parseLong(licenseLocation[0]);
- int licenseLength = Integer.parseInt(licenseLocation[1]);
- licenses.add(License.create(entry.substring(delimiter + 1), licenseOffset, licenseLength));
- }
- Collections.sort(licenses);
- return licenses;
- }
-
- /** Return the text of a bundled license file. */
- public static String getLicenseText(Context context, License license) {
- long offset = license.getLicenseOffset();
- int length = license.getLicenseLength();
- return getTextFromResource(context, LICENSE_FILENAME, offset, length);
- }
-
- private static String getTextFromResource(
- Context context, String filename, long offset, int length) {
- Resources resources = context.getApplicationContext().getResources();
- // When aapt is called with --rename-manifest-package, the package name is changed for the
- // application, but not for the resources. This is to find the package name of a known
- // resource to know what package to lookup the license files in.
- String packageName = resources.getResourcePackageName(R.id.license);
- InputStream stream =
- resources.openRawResource(resources.getIdentifier(filename, "raw", packageName));
- return getTextFromInputStream(stream, offset, length);
- }
-
- private static String getTextFromInputStream(InputStream stream, long offset, int length) {
- byte[] buffer = new byte[1024];
- ByteArrayOutputStream textArray = new ByteArrayOutputStream();
-
- try {
- stream.skip(offset);
- int bytesRemaining = length > 0 ? length : Integer.MAX_VALUE;
- int bytes = 0;
-
- while (bytesRemaining > 0
- && (bytes = stream.read(buffer, 0, Math.min(bytesRemaining, buffer.length))) != -1) {
- textArray.write(buffer, 0, bytes);
- bytesRemaining -= bytes;
- }
- stream.close();
- } catch (IOException e) {
- throw new RuntimeException("Failed to read license or metadata text.", e);
- }
- try {
- return textArray.toString("UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException("Unsupported encoding UTF8. This should always be supported.", e);
- }
- }
-}
diff --git a/java/com/android/dialer/about/res/layout/license.xml b/java/com/android/dialer/about/res/layout/license.xml
deleted file mode 100644
index ef67982a16f93635f07f387784702255a931add8..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/layout/license.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/about/res/layout/license_menu_activity.xml b/java/com/android/dialer/about/res/layout/license_menu_activity.xml
deleted file mode 100644
index 8ed47bf68ce5c269a1eb0b1dea6d962978a043cc..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/layout/license_menu_activity.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
diff --git a/java/com/android/dialer/about/res/layout/license_scrollview.xml b/java/com/android/dialer/about/res/layout/license_scrollview.xml
deleted file mode 100644
index f58bc2f43a52be6ab9210d2075a66e7fc67a73bd..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/layout/license_scrollview.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/java/com/android/dialer/about/res/raw/keep.xml b/java/com/android/dialer/about/res/raw/keep.xml
deleted file mode 100644
index 9215627d153ca5928d68c2f071ca4f23a0b497a5..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/raw/keep.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/about/res/raw/third_party_license_metadata b/java/com/android/dialer/about/res/raw/third_party_license_metadata
deleted file mode 100755
index bd6259c9c4de77db35a55a236f3a44808125b1e3..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/raw/third_party_license_metadata
+++ /dev/null
@@ -1,62 +0,0 @@
-40:10695 Android Annotations Support Library
-10771:11344 Android Architecture Components
-22164:11344 Android Architecture Components Core Library
-33562:11344 Android Architecture Components Lifecycle Library
-44968:11344 Android Architecture Components Lifecycle Runtime Library
-56331:11358 Android Common
-67724:10695 Android Compat Support Library
-78457:10695 Android Compatibility Library v13
-89189:10695 Android Compatibility Library v4
-99921:10695 Android Compatibility Library v7
-110652:10695 Android Core UI Support Library
-121386:10691 Android Core Utils Support Library
-132112:10695 Android Design Support Library
-142853:10695 Android Dynamic Animation Support Library
-153586:10695 Android Fragments Support Library
-164318:10695 Android Graphics Support Library
-175054:10691 Android Media Compat Support Library
-185784:10691 Android Transition Support Library
-196497:11359 Apache Commons IO
-207917:10693 Compatibility Libraries for Android asynclayoutinflater.
-218663:10693 Compatibility Libraries for Android collections.
-229415:10693 Compatibility Libraries for Android coordinatorlayout.
-240163:10693 Compatibility Libraries for Android cursoradapter.
-250908:10693 Compatibility Libraries for Android customview.
-261655:10693 Compatibility Libraries for Android documentfile.
-272402:10693 Compatibility Libraries for Android drawerlayout.
-283149:10693 Compatibility Libraries for Android interpolator.
-293890:10693 Compatibility Libraries for Android loader.
-304646:10693 Compatibility Libraries for Android localbroadcastmanager.
-315386:10693 Compatibility Libraries for Android print.
-326138:10693 Compatibility Libraries for Android slidingpanelayout.
-336891:10695 Compatibility Libraries for Android support-slices_core
-347646:10693 Compatibility Libraries for Android swiperefreshlayout.
-358390:10693 Compatibility Libraries for Android viewpager.
-369094:11358 Dagger
-380468:11357 Error Prone
-391841:11358 Google Auto
-403214:11358 Guava JDK5
-414587:11362 Guava JDK7
-425960:11358 J2ObjC
-437330:11358 JSR 250
-448700:11365 JSR 330
-460101:11358 Material Components for Android
-471470:11358 OkHttp
-482837:11358 Okio
-494210:11358 OpenCensus
-505579:11358 Volley
-516947:11357 ZXing
-528316:11358 flexbox
-539688:11358 gRPC Java
-551055:11358 gson
-562432:10173 libphonenumber
-572624:10699 shortcutbadger
-583339:16013 Android SDK
-599371:1096 Animal Sniffer
-600479:1602 JSR 305
-602099:1732 Protobuf Nano
-603865:1846 Checker Framework Annotations
-605721:4771 Glide
-610512:12847 carrierservices
-623377:12847 jibercsclient
-636235:18982 mime4j
diff --git a/java/com/android/dialer/about/res/raw/third_party_licenses b/java/com/android/dialer/about/res/raw/third_party_licenses
deleted file mode 100755
index d8d95068223d4334cd746a184e40923b4e370892..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/raw/third_party_licenses
+++ /dev/null
@@ -1,11856 +0,0 @@
-
-
-Android Annotations Support Library:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-
-Android Architecture Components:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright 2012 Netflix, Inc.
-
- 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.
-
-
-Android Architecture Components Core Library:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright 2012 Netflix, Inc.
-
- 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.
-
-
-Android Architecture Components Lifecycle Library:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright 2012 Netflix, Inc.
-
- 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.
-
-
-Android Architecture Components Lifecycle Runtime Library:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright 2012 Netflix, Inc.
-
- 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.
-
-
-Android Common:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-Android Compat Support Library:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-
-Android Compatibility Library v13:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-
-Android Compatibility Library v4:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-
-Android Compatibility Library v7:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-
-Android Core UI Support Library:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-
-Android Core Utils Support Library:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Android Design Support Library:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-
-Android Dynamic Animation Support Library:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-
-Android Fragments Support Library:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-
-Android Graphics Support Library:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-
-Android Media Compat Support Library:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Android Transition Support Library:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Apache Commons IO:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-
-Compatibility Libraries for Android asynclayoutinflater.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android collections.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android coordinatorlayout.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android cursoradapter.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android customview.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android documentfile.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android drawerlayout.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android interpolator.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android loader.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android localbroadcastmanager.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android print.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android slidingpanelayout.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android support-slices_core:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-
-Compatibility Libraries for Android swiperefreshlayout.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android viewpager.:
-
-
- Copyright (c) 2005-2011, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-Dagger:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-Error Prone:
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-Google Auto:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-Guava JDK5:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-Guava JDK7:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-
-J2ObjC:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-JSR 250:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-JSR 330:
-
-JSR-330
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-Material Components for Android:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-OkHttp:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-Okio:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-OpenCensus:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-Volley:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-ZXing:
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-flexbox:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-gRPC Java:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-gson:
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
-
-libphonenumber:
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-shortcutbadger:
-
-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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-Android SDK:
-
-ANDROID SOFTWARE DEVELOPMENT KIT
-
-Terms and Conditions
-
-This is the Android Software Development Kit License Agreement.
-
-1. Introduction
-
-1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and
-specifically including the Android system files, packaged APIs, and Google APIs add-ons) is
-licensed to you subject to the terms of this License Agreement. This License Agreement forms a
-legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600
-Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-2. Accepting this License Agreement
-
-2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the
-SDK if you do not accept this License Agreement.
-
-2.2 You can accept this License Agreement by:
-
-(A) clicking to accept or agree to this License Agreement, where this option is made available to
-you; or
-
-(B) by actually using the SDK. In this case, you agree that use of the SDK constitutes acceptance of
-the Licensing Agreement from that point onwards.
-
-2.3 You may not use the SDK and may not accept the Licensing Agreement if you are a person barred
-from receiving the SDK under the laws of the United States or other countries including the country
-in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other
-entity, you represent and warrant that you have full legal authority to bind your employer or such
-entity to this License Agreement. If you do not have the requisite authority, you may not accept
-the Licensing Agreement or use the SDK on behalf of your employer or other entity.
-
-3. SDK License from Google
-
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide,
-royalty-free, non- assignable and non-exclusive license to use the SDK solely to develop
-applications to run on the Android platform.
-
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the
-SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property
-Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law,
-and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.3 Except to the extent required by applicable third party licenses, you may not copy (except for
-backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create
-derivative works of the SDK or any part of the SDK. Except to the extent required by applicable
-third party licenses, you may not load any part of the SDK onto a mobile handset or any other
-hardware device except a personal computer, combine any part of the SDK with other software, or
-distribute any software or device incorporating a part of the SDK.
-
-3.4 Use, reproduction and distribution of components of the SDK licensed under an open source
-software license are governed solely by the terms of that open source software license and not
-this License Agreement.
-
-3.5 You agree that the form and nature of the SDK that Google provides may change without prior
-notice to you and that future versions of the SDK may be incompatible with applications developed
-on previous versions of the SDK. You agree that Google may stop (permanently or temporarily)
-providing the SDK (or any features within the SDK) to you or to users generally at Google's sole
-discretion, without prior notice to you.
-
-3.6 Nothing in this License Agreement gives you a right to use any of Google's trade names,
-trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.7 You agree that you will not remove, obscure, or alter any proprietary rights notices (including
-copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-4. Use of the SDK by You
-
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under
-this License Agreement in or to any software applications that you develop using the SDK, including
-any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) this
-License Agreement and (b) any applicable law, regulation or generally accepted practices or
-guidelines in the relevant jurisdictions (including any laws regarding the export of data or
-software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will
-protect the privacy and legal rights of those users. If the users provide you with user names,
-passwords, or other login information or personal information, your must make the users aware that
-the information will be available to your application, and you must provide legally adequate privacy
-notice and protection for those users. If your application stores personal or sensitive information
-provided by users, it must do so securely. If the user provides your application with Google Account
-information, your application may only use that information to access the user's Google Account
-when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or
-distribution of an application, that interferes with, disrupts, damages, or accesses in an
-unauthorized manner the servers, networks, or other properties or services of any third party
-including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or
-to any third party for) any data, content, or resources that you create, transmit or display through
-the Android platform and/or applications for the Android platform, and for the consequences of your
-actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or
-to any third party for) any breach of your obligations under this License Agreement, any applicable
-third party contract or Terms of Service, or any applicable law or regulation, and for the
-consequences (including any loss or damage which Google or any third party may suffer) of any such
-breach.
-
-5. Your Developer Credentials
-
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer
-credentials that may be issued to you by Google or which you may choose yourself and that you will
-be solely responsible for all applications that are developed under your developer credentials.
-
-6. Privacy and Information
-
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage
-statistics from the software including but not limited to a unique identifier, associated IP
-address, version number of the software, and information on which tools and/or services in the SDK
-are being used and how they are being used. Before any of this information is collected, the SDK
-will notify you and seek your consent. If you withhold consent, the information will not be
-collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in
-accordance with Google's Privacy Policy.
-
-7. Third Party Applications for the Android Platform
-
-7.1 If you use the SDK to run applications developed by a third party or that access data, content
-or resources provided by a third party, you agree that Google is not responsible for those
-applications, data, content, or resources. You understand that all data, content or resources which
-you may access through such third party applications are the sole responsibility of the person from
-which they originated and that Google is not liable for any loss or damage that you may experience
-as a result of the use or access of any of those third party applications, data, content, or
-resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party
-application may be protected by intellectual property rights which are owned by the providers (or by
-other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute
-or create derivative works based on these data, content, or resources (either in whole or in part)
-unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may
-be subject to separate terms between you and the relevant third party. In that case, this License
-Agreement does not affect your legal relationship with these third parties.
-
-8. Using Android APIs
-
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be
-protected by intellectual property rights which are owned by Google or those parties that provide
-the data (or by other persons or companies on their behalf). Your use of any such API may be subject
-to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create
-derivative works based on this data (either in whole or in part) unless allowed by the relevant
-Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you
-shall retrieve data only with the user's explicit consent and only when, and for the limited
-purposes for which, the user has given you permission to do so.
-
-9. Terminating this License Agreement
-
-9.1 This License Agreement will continue to apply until terminated by either you or Google as set
-out below.
-
-9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK
-and any relevant developer credentials.
-
-9.3 Google may at any time, terminate this License Agreement with you if:
-
-(A) you have breached any provision of this License Agreement; or
-
-(B) Google is required to do so by law; or
-
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated
-its relationship with Google or ceased to offer certain parts of the SDK to you; or
-
-(D) Google decides to no longer providing the SDK or certain parts of the SDK to users in the
-country in which you are resident or from which you use the service, or the provision of the SDK or
-certain SDK services to you by Google is, in Google's sole discretion, no longer commercially
-viable.
-
-9.4 When this License Agreement comes to an end, all of the legal rights, obligations and
-liabilities that you and Google have benefited from, been subject to (or which have accrued over
-time whilst this License Agreement has been in force) or which are expressed to continue
-indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall
-continue to apply to such rights, obligations and liabilities indefinitely.
-
-10. DISCLAIMER OF WARRANTIES
-
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE
-SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE
-SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR
-COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-11. LIMITATION OF LIABILITY
-
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS
-LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY
-LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN
-AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-12. Indemnification
-
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless
-Google, its affiliates and their respective directors, officers, employees and agents from and
-against any and all claims, actions, suits or proceedings, as well as any and all losses,
-liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or
-accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any
-copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any
-person or defames any person or violates their rights of publicity or privacy, and (c) any
-non-compliance by you with this License Agreement.
-
-13. Changes to the License Agreement
-
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK.
-When these changes are made, Google will make a new version of the License Agreement available on
-the website where the SDK is made available.
-
-14. General Legal Terms
-
-14.1 This License Agreement constitute the whole legal agreement between you and Google and govern
-your use of the SDK (excluding any services which Google may provide to you under a separate written
-agreement), and completely replace any prior agreements between you and Google in relation to the
-SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is
-contained in this License Agreement (or which Google has the benefit of under any applicable law),
-this will not be taken to be a formal waiver of Google's rights and that those rights or remedies
-will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision
-of this License Agreement is invalid, then that provision will be removed from this License
-Agreement without affecting the rest of this License Agreement. The remaining provisions of this
-License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the
-parent shall be third party beneficiaries to this License Agreement and that such other companies
-shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that
-confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall
-be third party beneficiaries to this License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST
-COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE
-LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in this License Agreement may not be assigned or transferred by either you
-or Google without the prior written approval of the other party. Neither you nor Google shall be
-permitted to delegate their responsibilities or obligations under this License Agreement without the
-prior written approval of the other party.
-
-14.7 This License Agreement, and your relationship with Google under this License Agreement, shall
-be governed by the laws of the State of California without regard to its conflict of laws
-provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located
-within the county of Santa Clara, California to resolve any legal matter arising from this License
-Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for
-injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-April 10, 2009
-
-
-Animal Sniffer:
-
-The MIT License
-
-Copyright (c) 2008 Kohsuke Kawaguchi and codehaus.org.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
-JSR 305:
-
-Copyright (c) 2007-2009, JSR305 expert group
-All rights reserved.
-
-http://www.opensource.org/licenses/bsd-license.php
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the JSR305 expert group nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-
-Protobuf Nano:
-
-Copyright 2008, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Code generated by the Protocol Buffer compiler is owned by the owner
-of the input file used when generating it. This code is not
-standalone and requires a support library to be linked with it. This
-support library is itself covered by the above license.
-
-
-Checker Framework Annotations:
-
-A few parts of the Checker Framework have more permissive licenses.
-
- * The annotations are licensed under the MIT License. (The text of this
- license appears below.) More specifically, all the parts of the Checker
- Framework that you might want to include with your own program use the
- MIT License. This is the checker-qual.jar file and all the files that
- appear in it: every file in a qual/ directory, plus NullnessUtils.java
- and RegexUtil.java. In addition, the cleanroom implementations of
- third-party annotations, which the Checker Framework recognizes as
- aliases for its own annotations, are licensed under the MIT License.
-
-===========================================================================
-
-MIT License:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-===========================================================================
-
-
-Glide:
-
-Covers library/
-
-Copyright 2014 Google, Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are
-permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice, this list of
- conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright notice, this list
- of conditions and the following disclaimer in the documentation and/or other materials
- provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY GOOGLE, INC. ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE, INC. OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-The views and conclusions contained in the software and documentation are those of the
-authors and should not be interpreted as representing official policies, either expressed
-or implied, of Google, Inc.
-
---------------------------------------------------------------------------
-Covers third_party/gif_decoder
-
-Copyright (c) 2013 Xcellent Creations, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------
-Covers third_party/disklrucache
-
-Copyright 2012 Jake Wharton
-Copyright 2011 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.
---------------------------------------------------------------------------
-Covers third_party/gif_encoder/AnimatedGifEncoder.java and
-third_party/gif_encoder/LZWEncoder.java:
-
-No copyright asserted on the source code of this class. May be used for any
-purpose, however, refer to the Unisys LZW patent for restrictions on use of
-the associated LZWEncoder class. Please forward any corrections to
-kweiner@fmsware.com.
-
------------------------------------------------------------------------------
-Covers third_party/gif_encoder/NeuQuant.java
-
-Copyright (c) 1994 Anthony Dekker
-
-NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994. See
-"Kohonen neural networks for optimal colour quantization" in "Network:
-Computation in Neural Systems" Vol. 5 (1994) pp 351-367. for a discussion of
-the algorithm.
-
-Any party obtaining a copy of these files from the author, directly or
-indirectly, is granted, free of charge, a full and unrestricted irrevocable,
-world-wide, paid up, royalty-free, nonexclusive right and license to deal in
-this software and documentation files (the "Software"), including without
-limitation the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to permit persons who
-receive copies from any such party to do so, with the only requirement being
-that this copyright notice remain intact.
-
-
-carrierservices:
-
-These components
- com.google.android.rcs.core,
- com.google.android.rcs.core.utils.CaseInsensitiveMap,
- com.google.android.rcs.core.utils.DateTime,
- com.google.android.rcs.core.utils.InetAddresses,
- com.google.android.rcs.core.network.ConnectivityMonitor,
- com.google.android.rcs.client.PrivateDataStorage,
- com.google.android.rcs.client.utils.FastXmlSerializer,
- com.google.android.rcs.client.utils.XmlUtils,
- com.google.android.rcs.client.utils.QueuedWork
-are licensed under Apache v2.
-
-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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-===============================================================================
-
-These components
- com.google.android.rcs.core.utils.FastBase64,
- com.google.android.rcs.core.utils.LibraryLoaderHelper
-are licensed under BSD.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-jibercsclient:
-
-These components
- com.google.android.rcs.core,
- com.google.android.rcs.core.utils.CaseInsensitiveMap,
- com.google.android.rcs.core.utils.DateTime,
- com.google.android.rcs.core.utils.InetAddresses,
- com.google.android.rcs.core.network.ConnectivityMonitor,
- com.google.android.rcs.client.PrivateDataStorage,
- com.google.android.rcs.client.utils.FastXmlSerializer,
- com.google.android.rcs.client.utils.XmlUtils,
- com.google.android.rcs.client.utils.QueuedWork
-are licensed under Apache v2.
-
-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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-===============================================================================
-
-These components
- com.google.android.rcs.core.utils.FastBase64,
- com.google.android.rcs.core.utils.LibraryLoaderHelper
-are licensed under BSD.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-mime4j:
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
-
-
- THIS PRODUCT ALSO INCLUDES THIRD PARTY SOFTWARE REDISTRIBUTED UNDER THE
- FOLLOWING LICENSES:
-
- Apache Commons Logging,
- The Apache Software License, Version 1.1 (commons-logging-1.1.1.jar)
-
- The Apache Software License, Version 1.1
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- 3. The end-user documentation included with the redistribution,
- if any, must include the following acknowledgment:
- "This product includes software developed by the
- Apache Software Foundation (http://www.apache.org/)."
- Alternately, this acknowledgment may appear in the software itself,
- if and wherever such third-party acknowledgments normally appear.
-
- 4. The names "Apache" and "Apache Software Foundation" must
- not be used to endorse or promote products derived from this
- software without prior written permission. For written
- permission, please contact apache@apache.org.
-
- 5. Products derived from this software may not be called "Apache",
- nor may "Apache" appear in their name, without prior written
- permission of the Apache Software Foundation.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- SUCH DAMAGE.
-
-
- Test messages from the Perl-MIME-Tools project,
-
- The "Artistic License"
-
- Preamble
-
- The intent of this document is to state the conditions under which a
- Package may be copied, such that the Copyright Holder maintains some
- semblance of artistic control over the development of the package,
- while giving the users of the package the right to use and distribute
- the Package in a more-or-less customary fashion, plus the right to make
- reasonable modifications.
-
- Definitions:
-
- "Package" refers to the collection of files distributed by the
- Copyright Holder, and derivatives of that collection of files
- created through textual modification.
-
- "Standard Version" refers to such a Package if it has not been
- modified, or has been modified in accordance with the wishes
- of the Copyright Holder as specified below.
-
- "Copyright Holder" is whoever is named in the copyright or
- copyrights for the package.
-
- "You" is you, if you're thinking about copying or distributing
- this Package.
-
- "Reasonable copying fee" is whatever you can justify on the
- basis of media cost, duplication charges, time of people involved,
- and so on. (You will not be required to justify it to the
- Copyright Holder, but only to the computing community at large
- as a market that must bear the fee.)
-
- "Freely Available" means that no fee is charged for the item
- itself, though there may be fees involved in handling the item.
- It also means that recipients of the item may redistribute it
- under the same conditions they received it.
-
- 1. You may make and give away verbatim copies of the source form of the
- Standard Version of this Package without restriction, provided that you
- duplicate all of the original copyright notices and associated disclaimers.
-
- 2. You may apply bug fixes, portability fixes and other modifications
- derived from the Public Domain or from the Copyright Holder. A Package
- modified in such a way shall still be considered the Standard Version.
-
- 3. You may otherwise modify your copy of this Package in any way, provided
- that you insert a prominent notice in each changed file stating how and
- when you changed that file, and provided that you do at least ONE of the
- following:
-
- a) place your modifications in the Public Domain or otherwise make them
- Freely Available, such as by posting said modifications to Usenet or
- an equivalent medium, or placing the modifications on a major archive
- site such as uunet.uu.net, or by allowing the Copyright Holder to include
- your modifications in the Standard Version of the Package.
-
- b) use the modified Package only within your corporation or organization.
-
- c) rename any non-standard executables so the names do not conflict
- with standard executables, which must also be provided, and provide
- a separate manual page for each non-standard executable that clearly
- documents how it differs from the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
- 4. You may distribute the programs of this Package in object code or
- executable form, provided that you do at least ONE of the following:
-
- a) distribute a Standard Version of the executables and library files,
- together with instructions (in the manual page or equivalent) on where
- to get the Standard Version.
-
- b) accompany the distribution with the machine-readable source of
- the Package with your modifications.
-
- c) give non-standard executables non-standard names, and clearly
- document the differences in manual pages (or equivalent), together
- with instructions on where to get the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
- 5. You may charge a reasonable copying fee for any distribution of this
- Package. You may charge any fee you choose for support of this
- Package. You may not charge a fee for this Package itself. However,
- you may distribute this Package in aggregate with other (possibly
- commercial) programs as part of a larger (possibly commercial) software
- distribution provided that you do not advertise this Package as a
- product of your own. You may embed this Package's interpreter within
- an executable of yours (by linking); this shall be construed as a mere
- form of aggregation, provided that the complete Standard Version of the
- interpreter is so embedded.
-
- 6. The scripts and library files supplied as input to or produced as
- output from the programs of this Package do not automatically fall
- under the copyright of this Package, but belong to whoever generated
- them, and may be sold commercially, and may be aggregated with this
- Package. If such scripts or library files are aggregated with this
- Package via the so-called "undump" or "unexec" methods of producing a
- binary executable image, then distribution of such an image shall
- neither be construed as a distribution of this Package nor shall it
- fall under the restrictions of Paragraphs 3 and 4, provided that you do
- not represent such an executable image as a Standard Version of this
- Package.
-
- 7. C subroutines (or comparably compiled subroutines in other
- languages) supplied by you and linked into this Package in order to
- emulate subroutines and variables of the language defined by this
- Package shall not be considered part of this Package, but are the
- equivalent of input as in Paragraph 6, provided these subroutines do
- not change the language in any way that would cause it to fail the
- regression tests for the language.
-
- 8. Aggregation of this Package with a commercial distribution is always
- permitted provided that the use of this Package is embedded; that is,
- when no overt attempt is made to make this Package's interfaces visible
- to the end user of the commercial distribution. Such use shall not be
- construed as a distribution of this Package.
-
- 9. The name of the Copyright Holder may not be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- 10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
- The End
-
-
-
\ No newline at end of file
diff --git a/java/com/android/dialer/about/res/values-af/strings.xml b/java/com/android/dialer/about/res/values-af/strings.xml
deleted file mode 100644
index b93cd10e6b2ea010d57d110609212045ca9ab231..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-af/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Bouweergawe
- Lisensiebesonderhede vir oopbronsagteware
- Oopbronlisensies
- Privaatheidsbeleid
- Diensbepalings
-
diff --git a/java/com/android/dialer/about/res/values-am/strings.xml b/java/com/android/dialer/about/res/values-am/strings.xml
deleted file mode 100644
index c9d53d43c48f6c522317599aff97bec372b5f820..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-am/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- የግንብ ሥሪት
- ለክፍት ምንጭ ሶፍትዌር የፈቃድ ዝርዝሮች
- የክፍት ምንጭ ፈቃዶች
- የግላዊነት መመሪያ
- የአገልግሎት ውል
-
diff --git a/java/com/android/dialer/about/res/values-ar/strings.xml b/java/com/android/dialer/about/res/values-ar/strings.xml
deleted file mode 100644
index f3beb671dc2a5e0d6686ff293f75fea20a4ee95f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ar/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- نسخة الإصدار
- تفاصيل الترخيص للبرامج مفتوحة المصدر
- تراخيص البرامج المفتوحة المصدر
- سياسة الخصوصية
- بنود الخدمة
-
diff --git a/java/com/android/dialer/about/res/values-az/strings.xml b/java/com/android/dialer/about/res/values-az/strings.xml
deleted file mode 100644
index 6d42e00c7992a3ec874aa9297f83cbc2f42df840..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-az/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Quruluş versiyası
- Açıq mənbəli proqram təminatı üçün lisenziya detalları
- Mənbə lisenziyalarını açın
- Məxfilik siyasəti
- Xidmət şərtləri
-
diff --git a/java/com/android/dialer/about/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/about/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 35cafe7d65b35070a7ff86b71a0e371e44b4ccf1..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Verzija
- Podaci o licenci za softver otvorenog koda
- Licence otvorenog koda
- Politika privatnosti
- Uslovi korišćenja usluge
-
diff --git a/java/com/android/dialer/about/res/values-be/strings.xml b/java/com/android/dialer/about/res/values-be/strings.xml
deleted file mode 100644
index 9767b514760efcff326d6a32dc905723ff07dafe..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-be/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Версія зборкі
- Звесткі аб ліцэнзіі на праграмнае забеспячэнне з адкрытым зыходным кодам
- Ліцэнзіі на ПЗ з адкрытым зыходным кодам
- Палітыка прыватнасці
- Умовы абслугоўвання
-
diff --git a/java/com/android/dialer/about/res/values-bg/strings.xml b/java/com/android/dialer/about/res/values-bg/strings.xml
deleted file mode 100644
index dac25d1c15050501d5bb9b8d8b1025e6623a8426..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-bg/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Версия
- Подробности за лицензите на софтуера с отворен код
- Лицензи за отворен код
- Декларация за поверителност
- Общи условия
-
diff --git a/java/com/android/dialer/about/res/values-bn/strings.xml b/java/com/android/dialer/about/res/values-bn/strings.xml
deleted file mode 100644
index fafa74f3f1661020c0cb9bc75aaa31b59ce55d71..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-bn/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- বিল্ড সংস্করণ
- মুক্ত উৎস সফ্টওয়্যারের লাইসেন্স বিবরণ
- ওপেন সোর্স লাইসেন্স
- গোপনীয়তা নীতি
- পরিষেবার শর্তাবলী
-
diff --git a/java/com/android/dialer/about/res/values-bs/strings.xml b/java/com/android/dialer/about/res/values-bs/strings.xml
deleted file mode 100644
index 775c59bb9a81d256d346a3a07c076623d23d0de1..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-bs/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Međuverzija aplikacije
- Detalji o licenci za softver otvorenog koda
- Licence otvorenog koda
- Pravila privatnosti
- Uslovi korištenja usluge
-
diff --git a/java/com/android/dialer/about/res/values-ca/strings.xml b/java/com/android/dialer/about/res/values-ca/strings.xml
deleted file mode 100644
index ef2d64174266fcaea7b67531476050594842c08e..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ca/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versió de la compilació
- Detalls de la llicència del programari lliure
- Llicències de programari lliure
- Política de privadesa
- Condicions del servei
-
diff --git a/java/com/android/dialer/about/res/values-cs/strings.xml b/java/com/android/dialer/about/res/values-cs/strings.xml
deleted file mode 100644
index d93ac1255900c8bf460163bbd8da174dedb0a31f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-cs/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Verze sestavení
- Podrobnosti o licencích pro software open source
- Licence open source
- Zásady ochrany soukromí
- Smluvní podmínky
-
diff --git a/java/com/android/dialer/about/res/values-da/strings.xml b/java/com/android/dialer/about/res/values-da/strings.xml
deleted file mode 100644
index aaf2ac8a9c2801413e81e2395e02e658eb21db41..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-da/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Build-version
- Licensoplysninger til open source-software
- Open source-licenser
- Privatlivspolitik
- Servicevilkår
-
diff --git a/java/com/android/dialer/about/res/values-de/strings.xml b/java/com/android/dialer/about/res/values-de/strings.xml
deleted file mode 100644
index fd86c08412154c3b71028de8b08f310bce377c5b..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-de/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Build-Version
- Lizenzdetails für Open-Source-Software
- Open Source-Lizenzen
- Datenschutzerklärung
- Nutzungsbedingungen
-
diff --git a/java/com/android/dialer/about/res/values-el/strings.xml b/java/com/android/dialer/about/res/values-el/strings.xml
deleted file mode 100644
index 0dde13750725f47364a22708d2bdf12cd43c4ac8..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-el/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Έκδοση build
- Λεπτομέρειες άδειας λογισμικού ανοικτού κώδικα
- Άδειες λογισμικού ανοικτού κώδικα
- Πολιτική απορρήτου
- Όροι Παροχής Υπηρεσιών
-
diff --git a/java/com/android/dialer/about/res/values-en-rAU/strings.xml b/java/com/android/dialer/about/res/values-en-rAU/strings.xml
deleted file mode 100644
index 0d59e681fb67eafd652141cd8b660de14233df4d..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Build version
- Licence details for open-source software
- Open-source licences
- Privacy Policy
- Terms of Service
-
diff --git a/java/com/android/dialer/about/res/values-en-rGB/strings.xml b/java/com/android/dialer/about/res/values-en-rGB/strings.xml
deleted file mode 100644
index 0d59e681fb67eafd652141cd8b660de14233df4d..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Build version
- Licence details for open-source software
- Open-source licences
- Privacy Policy
- Terms of Service
-
diff --git a/java/com/android/dialer/about/res/values-en-rIN/strings.xml b/java/com/android/dialer/about/res/values-en-rIN/strings.xml
deleted file mode 100644
index 0d59e681fb67eafd652141cd8b660de14233df4d..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Build version
- Licence details for open-source software
- Open-source licences
- Privacy Policy
- Terms of Service
-
diff --git a/java/com/android/dialer/about/res/values-es-rUS/strings.xml b/java/com/android/dialer/about/res/values-es-rUS/strings.xml
deleted file mode 100644
index 142722f260805a7901688a9f292d0e8a3f0b869f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versión de compilación
- Detalles de la licencia de software de código abierto
- Licencias de código abierto
- Política de privacidad
- Condiciones del servicio
-
diff --git a/java/com/android/dialer/about/res/values-es/strings.xml b/java/com/android/dialer/about/res/values-es/strings.xml
deleted file mode 100644
index a903159af267d7df3a390eb6b548c631d344ca19..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-es/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versión de la compilación
- Detalles de las licencias de software libre
- Licencias de software libre
- Política de privacidad
- Condiciones de servicio
-
diff --git a/java/com/android/dialer/about/res/values-et/strings.xml b/java/com/android/dialer/about/res/values-et/strings.xml
deleted file mode 100644
index f6af3aa344f722b1c872df9ac5993bcadfb95007..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-et/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Järguversioon
- Avatud lähtekoodiga tarkvara litsentsi üksikasjad
- Avatud lähtekoodi litsentsid
- Privaatsuseeskirjad
- Teenusetingimused
-
diff --git a/java/com/android/dialer/about/res/values-eu/strings.xml b/java/com/android/dialer/about/res/values-eu/strings.xml
deleted file mode 100644
index a184bae77b1849c02add4a8a58c3e83f3b46620d..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-eu/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Konpilazioaren bertsioa
- Kode irekiko softwarearen lizentziaren xehetasunak
- Kode irekiko lizentziak
- Pribatutasun-gidalerroak
- Zerbitzu-baldintzak
-
diff --git a/java/com/android/dialer/about/res/values-fa/strings.xml b/java/com/android/dialer/about/res/values-fa/strings.xml
deleted file mode 100644
index 16cdc82c38b55e39fa34d85cebe3de0d07b445fc..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-fa/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- نسخه ساخت
- جزئیات مجوز برای نرمافزار متنباز
- مجوزهای متنباز
- خطمشی رازداری
- شرایط و ضوابط
-
diff --git a/java/com/android/dialer/about/res/values-fi/strings.xml b/java/com/android/dialer/about/res/values-fi/strings.xml
deleted file mode 100644
index 6f551815ce9e70ff0b5f89a89949f79ffa82f465..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-fi/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Koontiversio
- Avoimen lähdekoodin ohjelmiston käyttöoikeustiedot
- Avoimen lähdekoodin käyttöoikeudet
- Tietosuojakäytäntö
- Käyttöehdot
-
diff --git a/java/com/android/dialer/about/res/values-fr-rCA/strings.xml b/java/com/android/dialer/about/res/values-fr-rCA/strings.xml
deleted file mode 100644
index add9be182bada8b34c742a9b95a39d46d2a8a89c..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Version
- Renseignements sur les licences de logiciels libres
- Licences de logiciels libres
- Politique de confidentialité
- Conditions d\'utilisation
-
diff --git a/java/com/android/dialer/about/res/values-fr/strings.xml b/java/com/android/dialer/about/res/values-fr/strings.xml
deleted file mode 100644
index 99787bc55e1e84232fa70c51baee26d1415cae60..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-fr/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Build
- Informations sur les licences de logiciels Open Source
- Licences Open Source
- Règles de confidentialité
- Conditions d\'utilisation
-
diff --git a/java/com/android/dialer/about/res/values-gl/strings.xml b/java/com/android/dialer/about/res/values-gl/strings.xml
deleted file mode 100644
index 9a10fd0b06d2dfe643ad49a8f3f2849ac22639ce..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-gl/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versión de compilación
- Detalles da licenza para software de código aberto
- Licenzas de código aberto
- Política de privacidade
- Condicións de servizo
-
diff --git a/java/com/android/dialer/about/res/values-gu/strings.xml b/java/com/android/dialer/about/res/values-gu/strings.xml
deleted file mode 100644
index a8e37a11bde251d46b8164947fbaa6ce1e1099d5..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-gu/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- બિલ્ડ સંસ્કરણ
- ખુલ્લા સ્ત્રોતના સોફ્ટવેર માટે લાઇસન્સની વિગતો
- ખુલ્લા સ્ત્રોત લાઇસન્સ
- ગોપનીયતા નીતિ
- સેવાની શરતો
-
diff --git a/java/com/android/dialer/about/res/values-hi/strings.xml b/java/com/android/dialer/about/res/values-hi/strings.xml
deleted file mode 100644
index 45cf106ad77ed5a6fcd8ac7f858d9baeae512395..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-hi/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- बिल्ड वर्शन
- ओपन सोर्स सॉफ़्टवेयर के लाइसेंस विवरण
- ओपन सोर्स लाइसेंस
- निजता नीति
- सेवा की शर्तें
-
diff --git a/java/com/android/dialer/about/res/values-hr/strings.xml b/java/com/android/dialer/about/res/values-hr/strings.xml
deleted file mode 100644
index 6179fd636231966191c85a384ab62b44809b77a3..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-hr/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Trenutačna međuverzija
- Pojedinosti o licenci za softver otvorenog koda
- Licence otvorenog koda
- Pravila o privatnosti
- Uvjeti pružanja usluge
-
diff --git a/java/com/android/dialer/about/res/values-hu/strings.xml b/java/com/android/dialer/about/res/values-hu/strings.xml
deleted file mode 100644
index 309bf4ee447ca140f9bf3937d6e0ad8050c9761a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-hu/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Build verziószáma
- A nyílt forráskódú szoftverekhez kapcsolódó licenc részletei
- Nyílt forráskódú licencek
- Adatvédelmi irányelvek
- Általános Szerződési Feltételek
-
diff --git a/java/com/android/dialer/about/res/values-hy/strings.xml b/java/com/android/dialer/about/res/values-hy/strings.xml
deleted file mode 100644
index 385400c1df66c97b01c349a696c83e43d5ba87f6..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-hy/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Կառուցման տարբերակը
- Բաց կոդով ծրագրակազմի արտոնագրերի մանրամասներ
- Բաց կոդով ծրագրակազմի արտոնագրեր
- Գաղտնիության քաղաքականություն
- Օգտագործման պայմաններ
-
diff --git a/java/com/android/dialer/about/res/values-in/strings.xml b/java/com/android/dialer/about/res/values-in/strings.xml
deleted file mode 100644
index 1d643be55511e213c2d6a0aec0b65896545aaa5a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-in/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versi build
- Detail lisensi untuk software open source
- Lisensi open source
- Kebijakan privasi
- Persyaratan layanan
-
diff --git a/java/com/android/dialer/about/res/values-is/strings.xml b/java/com/android/dialer/about/res/values-is/strings.xml
deleted file mode 100644
index fea951547a0c7bd0b9bec446a956e6b583891add..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-is/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Útgáfa smíði
- Leyfisupplýsingar fyrir hugbúnað með opnum kóða
- Leyfi opins kóða
- Persónuverndarstefna
- Þjónustuskilmálar
-
diff --git a/java/com/android/dialer/about/res/values-it/strings.xml b/java/com/android/dialer/about/res/values-it/strings.xml
deleted file mode 100644
index 071d58a557d0e605124c0d153d370bdb3eb9915f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-it/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versione build
- Dettagli delle licenze per il software open source
- Licenze open source
- Norme sulla privacy
- Termini di servizio
-
diff --git a/java/com/android/dialer/about/res/values-iw/strings.xml b/java/com/android/dialer/about/res/values-iw/strings.xml
deleted file mode 100644
index 0576fac5dca194597c5e90c4f92ac16f5a51625f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-iw/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- גרסת Build
- פרטי רישיון לתוכנות קוד פתוח
- רישיונות קוד פתוח
- מדיניות הפרטיות
- תנאים והגבלות
-
diff --git a/java/com/android/dialer/about/res/values-ja/strings.xml b/java/com/android/dialer/about/res/values-ja/strings.xml
deleted file mode 100644
index 42c29adafd3f3877bea7438f95ce181b8f38ca83..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ja/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- ビルド バージョン
- オープンソース ソフトウェアのライセンスの詳細
- オープンソース ライセンス
- プライバシー ポリシー
- 利用規約
-
diff --git a/java/com/android/dialer/about/res/values-ka/strings.xml b/java/com/android/dialer/about/res/values-ka/strings.xml
deleted file mode 100644
index 380124056f2d68ff5758a737d0b32336d766f4c1..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ka/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Build-ის ვერსია
- ღია კოდის პროგრამული უზრუნველყოფის ლიცენზირების დეტალები
- ღია კოდის ლიცენზიები
- კონფიდენციალურობის დებულება
- მომსახურების პირობები
-
diff --git a/java/com/android/dialer/about/res/values-kk/strings.xml b/java/com/android/dialer/about/res/values-kk/strings.xml
deleted file mode 100644
index 76c3db8c97342b40f2cd65d2c0cc7242934b069e..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-kk/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Жинақ нұсқасы
- Ашық бастапқы код бағдарламасына арналған лицензия туралы мәліметтер
- Ашық бастапқы код лицензиялары
- Құпиялылық саясаты
- Қызмет көрсету шарттары
-
diff --git a/java/com/android/dialer/about/res/values-km/strings.xml b/java/com/android/dialer/about/res/values-km/strings.xml
deleted file mode 100644
index 464a2bf59263b6fd87b07c20a0d4396c772f9fb6..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-km/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- កំណែបង្កើត
- ព័ត៌មានលម្អិតអំពីអាជ្ញាបណ្ណសម្រាប់កម្មវិធីប្រភពកូដចំហ
- អាជ្ញាប័ណ្ណកម្មវិធីកូដចំហ
- គោលការណ៍ឯកជនភាព
- លក្ខខណ្ឌប្រើប្រាស់
-
diff --git a/java/com/android/dialer/about/res/values-kn/strings.xml b/java/com/android/dialer/about/res/values-kn/strings.xml
deleted file mode 100644
index 947c54c189768cad23084a2eeb9dd1f2af0c4753..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-kn/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- ಬಿಲ್ಡ್ ಆವೃತ್ತಿ
- ತೆರೆದ ಮೂಲ ಸಾಫ್ಟ್ವೇರ್ಗಾಗಿ ಪರವಾನಗಿ ವಿವರಗಳು
- ತೆರೆದ ಮೂಲ ಪರವಾನಗಿಗಳು
- ಗೌಪ್ಯತೆ ನೀತಿ
- ಸೇವಾ ನಿಯಮಗಳು
-
diff --git a/java/com/android/dialer/about/res/values-ko/strings.xml b/java/com/android/dialer/about/res/values-ko/strings.xml
deleted file mode 100644
index 0ba1d92ca68121b3357bc1d5f91abb2f2568d164..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ko/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- 빌드 버전
- 오픈소스 소프트웨어 라이선스 세부정보
- 오픈소스 라이선스
- 개인정보처리방침
- 서비스 약관
-
diff --git a/java/com/android/dialer/about/res/values-ky/strings.xml b/java/com/android/dialer/about/res/values-ky/strings.xml
deleted file mode 100644
index 8c4b0d2c495d7a71aa0e289e3d113a3a430b02ea..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ky/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Курама версиясы
- Баштапкы коду ачык программанын уруксаттамасынын чоо-жайы
- Ачык программа уруксаттамалары
- Купуялык саясаты
- Тейлөө шарттары
-
diff --git a/java/com/android/dialer/about/res/values-lo/strings.xml b/java/com/android/dialer/about/res/values-lo/strings.xml
deleted file mode 100644
index e59eab84489154f99c29e429c3503122dc6ba3eb..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-lo/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- ເວີຊັນສ້າງ
- ລາຍລະອຽດໃບອະນຸຍາດໂອເພນຊອດ
- ໃບອະນຸຍາດໂອເພນຊອດ
- ນະໂຍບາຍຄວາມເປັນສ່ວນຕົວ
- ຂໍ້ກຳນົດບໍລິການ
-
diff --git a/java/com/android/dialer/about/res/values-lt/strings.xml b/java/com/android/dialer/about/res/values-lt/strings.xml
deleted file mode 100644
index 340004f88bd0af38a3cad573d4955cf5ec970c31..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-lt/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versija
- Išsami atvirojo šaltinio programinės įrangos licencijos informacija
- Atvirojo šaltinio licencijos
- Privatumo politika
- Paslaugų teikimo sąlygos
-
diff --git a/java/com/android/dialer/about/res/values-lv/strings.xml b/java/com/android/dialer/about/res/values-lv/strings.xml
deleted file mode 100644
index cded74164772db994bb38cb00e6a6f3710e9ea58..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-lv/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versija
- Licences informācija par atklātā pirmkoda programmatūru
- Atklātā pirmkoda licences
- Konfidencialitātes politika
- Pakalpojumu sniegšanas noteikumi
-
diff --git a/java/com/android/dialer/about/res/values-mk/strings.xml b/java/com/android/dialer/about/res/values-mk/strings.xml
deleted file mode 100644
index 17a6cf4faae48fafca211e3515d5c1f21ddab810..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-mk/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Верзија
- Детали за лиценцата за софтвер со отворен код
- Лиценци за софтвер со отворен код
- Политика за приватност
- Услови на користење
-
diff --git a/java/com/android/dialer/about/res/values-ml/strings.xml b/java/com/android/dialer/about/res/values-ml/strings.xml
deleted file mode 100644
index 00ce568e02e5564a481f4f397f87cb611719c4a5..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ml/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- ബിൽഡ് പതിപ്പ്
- ഓപ്പൺ സോഴ്സ് സോഫ്റ്റ്വെയറിനായുള്ള ലൈസൻസ് വിശദാംശങ്ങൾ
- ഓപ്പൺ സോഴ്സ് ലൈസൻസുകൾ
- സ്വകാര്യതാ നയം
- സേവന നിബന്ധനകൾ
-
diff --git a/java/com/android/dialer/about/res/values-mn/strings.xml b/java/com/android/dialer/about/res/values-mn/strings.xml
deleted file mode 100644
index 075fec824e8690a7feaa5818c37b72ff18b58fbc..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-mn/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Хийгдсэн хувилбар
- Нээлттэй эхийн програмын лицензийн мэдээлэл
- Нээлттэй эхийн лиценз
- Нууцлалын бодлого
- Үйлчилгээний нөхцөл
-
diff --git a/java/com/android/dialer/about/res/values-mr/strings.xml b/java/com/android/dialer/about/res/values-mr/strings.xml
deleted file mode 100644
index c89e7a4b2c58ad1a03edfa18052b548cd545c17f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-mr/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- बिल्ड आवृत्ती
- मुक्त स्त्रोत सॉफ्टवेअरसाठी परवाना तपशील
- मुक्त स्रोत परवाने
- गोपनीयता धोरण
- सेवा अटी
-
diff --git a/java/com/android/dialer/about/res/values-ms/strings.xml b/java/com/android/dialer/about/res/values-ms/strings.xml
deleted file mode 100644
index b28a3bc22f41a53a05a6c3c0974d6a2329221610..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ms/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versi binaan
- Butiran lesen untuk perisian sumber terbuka
- Lesen sumber terbuka
- Dasar privasi
- Syarat perkhidmatan
-
diff --git a/java/com/android/dialer/about/res/values-my/strings.xml b/java/com/android/dialer/about/res/values-my/strings.xml
deleted file mode 100644
index 5e87ce66c09ec42fd9cf77779b297a216a3fdb0f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-my/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- တည်ဆောက်မှု ဗားရှင်း
- အခမဲ့ရင်းမြစ်ဆော့ဖ်ဝဲအတွက် လိုင်စင်အသေးစိတ်များ
- အခမဲ့ရင်းမြစ်လိုင်စင်များ
- ပုဂ္ဂိုလ်ရေးဆိုင်ရာ မူဝါဒ
- ဝန်ဆောင်မှု စည်းမျဉ်းများ
-
diff --git a/java/com/android/dialer/about/res/values-nb/strings.xml b/java/com/android/dialer/about/res/values-nb/strings.xml
deleted file mode 100644
index 40dfb374c89ecba15dd0d39988b887d05c4bcd53..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-nb/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Delversjon
- Lisensdetaljer for programvare med åpen kildekode
- Lisenser for åpen kildekode
- Personvernregler
- Vilkår for bruk
-
diff --git a/java/com/android/dialer/about/res/values-ne/strings.xml b/java/com/android/dialer/about/res/values-ne/strings.xml
deleted file mode 100644
index 88c83940f90d27973c77c7864246d7af658ebc7a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ne/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- बिल्ड संस्करण
- खुला स्रोतका सफ्टवेयरका इजाजतपत्र सम्बन्धी विवरणहरू
- खुला स्रोतका इजाजतपत्रहरू
- गोपनीयता नीति
- सेवाका सर्तहरू
-
diff --git a/java/com/android/dialer/about/res/values-nl/strings.xml b/java/com/android/dialer/about/res/values-nl/strings.xml
deleted file mode 100644
index 481add7ebe88abef333366e570bf792893679bde..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-nl/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Buildversie
- Licentiedetails voor open-sourcesoftware
- Open-sourcelicenties
- Privacybeleid
- Servicevoorwaarden
-
diff --git a/java/com/android/dialer/about/res/values-no/strings.xml b/java/com/android/dialer/about/res/values-no/strings.xml
deleted file mode 100644
index 40dfb374c89ecba15dd0d39988b887d05c4bcd53..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-no/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Delversjon
- Lisensdetaljer for programvare med åpen kildekode
- Lisenser for åpen kildekode
- Personvernregler
- Vilkår for bruk
-
diff --git a/java/com/android/dialer/about/res/values-pa/strings.xml b/java/com/android/dialer/about/res/values-pa/strings.xml
deleted file mode 100644
index deb84bbb253fa5da163893dcb876e4c77d497a70..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-pa/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- ਨਿਰਮਾਣ ਰੂਪ
- ਖੁੱਲ੍ਹੇ ਸਰੋਤ ਸਾਫਟਵੇਅਰ ਲਈ ਲਾਇਸੰਸ ਵੇਰਵੇ
- ਖੁੱਲ੍ਹੇ ਸਰੋਤ ਲਾਇਸੰਸ
- ਪਰਦੇਦਾਰੀ ਨੀਤੀ
- ਸੇਵਾ ਦੀਆਂ ਮਦਾਂ
-
diff --git a/java/com/android/dialer/about/res/values-pl/strings.xml b/java/com/android/dialer/about/res/values-pl/strings.xml
deleted file mode 100644
index 948aba4374977746cb751ea3353a913caae2a80f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-pl/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Wersja kompilacji
- Szczegóły licencji na oprogramowanie open source
- Licencje open source
- Polityka prywatności
- Warunki korzystania z usługi
-
diff --git a/java/com/android/dialer/about/res/values-pt-rBR/strings.xml b/java/com/android/dialer/about/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 2c21f23ec8b256bf9c8f76770fcd0b5c1491c0e5..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versão
- Detalhes da licença do software de código aberto
- Licenças de código aberto
- Política de privacidade
- Termos de Serviço
-
diff --git a/java/com/android/dialer/about/res/values-pt-rPT/strings.xml b/java/com/android/dialer/about/res/values-pt-rPT/strings.xml
deleted file mode 100644
index c3ffd16fd44222c7ae44ab12f38509c8800ccb9e..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versão da compilação
- Detalhes da licença para software de código aberto
- Licenças de código aberto
- Política de Privacidade
- Termos de Utilização
-
diff --git a/java/com/android/dialer/about/res/values-pt/strings.xml b/java/com/android/dialer/about/res/values-pt/strings.xml
deleted file mode 100644
index 2c21f23ec8b256bf9c8f76770fcd0b5c1491c0e5..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-pt/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versão
- Detalhes da licença do software de código aberto
- Licenças de código aberto
- Política de privacidade
- Termos de Serviço
-
diff --git a/java/com/android/dialer/about/res/values-ro/strings.xml b/java/com/android/dialer/about/res/values-ro/strings.xml
deleted file mode 100644
index 20183ef9c956f2473d6b61a3c4c899c699b88de9..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ro/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versiunea
- Detalii privind licența pentru software-ul open source
- Licențe open source
- Politică de confidențialitate
- Termeni și condiții
-
diff --git a/java/com/android/dialer/about/res/values-ru/strings.xml b/java/com/android/dialer/about/res/values-ru/strings.xml
deleted file mode 100644
index 2cd1291f32eb56ca067bdd93fa6b445aeb895214..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ru/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Версия сборки
- Сведения о лицензиях на ПО с открытым исходным кодом
- Лицензии открытого ПО
- Конфиденциальность
- Условия использования
-
diff --git a/java/com/android/dialer/about/res/values-si/strings.xml b/java/com/android/dialer/about/res/values-si/strings.xml
deleted file mode 100644
index 2fb320b492fc9caaab47fe7236072f345cabc41a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-si/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- නිමැවුම් අනුවාදය
- විවෘත මූලාශ්ර මෘදුකාංග සඳහා බලපත්ර විස්තර
- විවෘත මූලාශ්ර බලපත්ර
- රහස්යතා ප්රතිපත්තිය
- සේවා නියම
-
diff --git a/java/com/android/dialer/about/res/values-sk/strings.xml b/java/com/android/dialer/about/res/values-sk/strings.xml
deleted file mode 100644
index 24b394f91d0663015ec8b1ec1b037132b142c448..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-sk/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Verzia zostavy
- Podrobnosti o licenciách pre softvér open source
- Licencie open source
- Pravidlá ochrany súkromia
- Zmluvné podmienky
-
diff --git a/java/com/android/dialer/about/res/values-sl/strings.xml b/java/com/android/dialer/about/res/values-sl/strings.xml
deleted file mode 100644
index f0f28c5e40e5447e12152424c234b71aaa938d45..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-sl/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Delovna različica
- Podrobnosti o licenci za odprtokodno programsko opremo
- Odprtokodne licence
- Pravilnik o zasebnosti
- Pogoji storitve
-
diff --git a/java/com/android/dialer/about/res/values-sq/strings.xml b/java/com/android/dialer/about/res/values-sq/strings.xml
deleted file mode 100644
index 64369ccf4001736160ae4307aa7d52e13bf228d4..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-sq/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Versioni i ndërtimit
- Detajet e licencës për softuer me burim të hapur
- Licencat me burim të hapur
- Politika e privatësisë
- Kushtet e shërbimit
-
diff --git a/java/com/android/dialer/about/res/values-sr/strings.xml b/java/com/android/dialer/about/res/values-sr/strings.xml
deleted file mode 100644
index 44442b9b8cc2b1d76a952ed4fbac6e928651a695..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-sr/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Верзија
- Подаци о лиценци за софтвер отвореног кода
- Лиценце отвореног кода
- Политика приватности
- Услови коришћења услуге
-
diff --git a/java/com/android/dialer/about/res/values-sv/strings.xml b/java/com/android/dialer/about/res/values-sv/strings.xml
deleted file mode 100644
index 2f607711c34be8c7d1a1daf95b07466a9346a6d1..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-sv/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Programversion
- Licensinformation för programvara med öppen källkod
- Licenser för öppen källkod
- Sekretesspolicy
- Användarvillkor
-
diff --git a/java/com/android/dialer/about/res/values-sw/strings.xml b/java/com/android/dialer/about/res/values-sw/strings.xml
deleted file mode 100644
index d84e07d13b7235e96e4a392a1ef12737efc6f1a7..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-sw/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Toleo la muundo
- Maelezo ya leseni za programu huria
- Leseni za programu huria
- Sera ya faragha
- Sheria na masharti
-
diff --git a/java/com/android/dialer/about/res/values-ta/strings.xml b/java/com/android/dialer/about/res/values-ta/strings.xml
deleted file mode 100644
index 87c4f69441b6051dc9142da83f78677624731cfe..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ta/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- நடப்புப் பதிப்பு
- ஓப்பன் சோர்ஸ் மென்பொருளுக்கான உரிம விவரங்கள்
- ஓப்பன் சோர்ஸ் உரிமங்கள்
- தனியுரிமைக் கொள்கை
- சேவை விதிமுறைகள்
-
diff --git a/java/com/android/dialer/about/res/values-te/strings.xml b/java/com/android/dialer/about/res/values-te/strings.xml
deleted file mode 100644
index 5d0c674f3f1fd1239fe71b00071e32d2eb0f0c98..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-te/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- బిల్డ్ సంస్కరణ
- ఓపెన్ సోర్స్ సాఫ్ట్వేర్ యొక్క లైసెన్స్ వివరాలు
- ఓపెన్ సోర్స్ లైసెన్స్లు
- గోప్యతా విధానం
- సేవా నిబంధనలు
-
diff --git a/java/com/android/dialer/about/res/values-th/strings.xml b/java/com/android/dialer/about/res/values-th/strings.xml
deleted file mode 100644
index 12d2bf0414666682ff58047cef0192795d0eeba9..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-th/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- เวอร์ชันบิวด์
- รายละเอียดใบอนุญาตสำหรับซอฟต์แวร์โอเพนซอร์ส
- ใบอนุญาตโอเพนซอร์ส
- นโยบายความเป็นส่วนตัว
- ข้อกำหนดในการให้บริการ
-
diff --git a/java/com/android/dialer/about/res/values-tl/strings.xml b/java/com/android/dialer/about/res/values-tl/strings.xml
deleted file mode 100644
index 68f039580e796c048aa790ed80a92166c5619dd1..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-tl/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Bersyon ng build
- Mga detalye ng lisensya para sa open source na software
- Mga open source na lisensya
- Patakaran sa privacy
- Mga tuntunin ng serbisyo
-
diff --git a/java/com/android/dialer/about/res/values-tr/strings.xml b/java/com/android/dialer/about/res/values-tr/strings.xml
deleted file mode 100644
index 8aec66e92503a6b67ecab6a0460acaccd7d619f3..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-tr/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Derleme sürümü
- Açık kaynak yazılımlar için lisans ayrıntıları
- Açık kaynak lisansları
- Gizlilik politikası
- Hizmet şartları
-
diff --git a/java/com/android/dialer/about/res/values-uk/strings.xml b/java/com/android/dialer/about/res/values-uk/strings.xml
deleted file mode 100644
index a7ef68dd95a8ac016d0a29db8ff0bf296c76daf6..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-uk/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Версія складання
- Деталі ліцензій на програмне забезпечення з відкритим кодом
- Ліцензії з відкритим кодом
- Політика конфіденційності
- Умови використання
-
diff --git a/java/com/android/dialer/about/res/values-ur/strings.xml b/java/com/android/dialer/about/res/values-ur/strings.xml
deleted file mode 100644
index 072cebc7378a4bd99d795e1879506d853a013962..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-ur/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- بلڈ ورژن
- اوپن سورس سافٹ ویئر کیلئے لائسنس کی تفصیلات
- اوپن سورس لائسنسز
- رازداری کی پالیسی
- سروس کی شرائط
-
diff --git a/java/com/android/dialer/about/res/values-uz/strings.xml b/java/com/android/dialer/about/res/values-uz/strings.xml
deleted file mode 100644
index 325e29333caea29fc87a412ada162d9a29d9b4bf..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-uz/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Yig‘ma versiyasi
- Ochiq kodli DT litsenziyalari haqida ma’lumot
- Ochiq kodli DT litsenziyalari
- Maxfiylik siyosati
- Foydalanish shartlari
-
diff --git a/java/com/android/dialer/about/res/values-vi/strings.xml b/java/com/android/dialer/about/res/values-vi/strings.xml
deleted file mode 100644
index 67ce780baa450c0c1d8f2a2839d1a1dede84c6f8..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-vi/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Phiên bản đóng gói
- Chi tiết giấy phép cho phần mềm nguồn mở
- Giấy phép nguồn mở
- Chính sách bảo mật
- Điều khoản dịch vụ
-
diff --git a/java/com/android/dialer/about/res/values-zh-rCN/strings.xml b/java/com/android/dialer/about/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 7efd200cfed686e631b9c689bf379ee5cd54e4c4..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- 版本号
- 开放源代码软件的许可详情
- 开放源代码许可
- 隐私权政策
- 服务条款
-
diff --git a/java/com/android/dialer/about/res/values-zh-rHK/strings.xml b/java/com/android/dialer/about/res/values-zh-rHK/strings.xml
deleted file mode 100644
index f188b7e12bbc8fb5fa13c3eff452b11cf51265d6..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- 型號版本
- 開放原始碼軟件的授權詳情
- 開放原始碼授權
- 私隱權政策
- 服務條款
-
diff --git a/java/com/android/dialer/about/res/values-zh-rTW/strings.xml b/java/com/android/dialer/about/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 56129571937eb68c2f5fb6b649576228de883f1f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- 版本
- 開放原始碼軟體的授權詳細資料
- 開放原始碼授權
- 隱私權政策
- 服務條款
-
diff --git a/java/com/android/dialer/about/res/values-zu/strings.xml b/java/com/android/dialer/about/res/values-zu/strings.xml
deleted file mode 100644
index 4954cccec63654849e6cea844f1b6807ce9f283f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values-zu/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
- Yakha inguqulo
- Iminingwane yelayisensi yesofthiwe yomthombo ovulelekile
- Amalayisense womthombo ovulekile
- Inqubomgomo yemfihlo
- Imigomo yesevisi
-
diff --git a/java/com/android/dialer/about/res/values/strings.xml b/java/com/android/dialer/about/res/values/strings.xml
deleted file mode 100644
index 433422cb40d092d740662e10bfaf22f1ad98b189..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/values/strings.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
- build_version
-
-
- Build version
-
-
- open_source_licenses
-
-
- License details for open source software
-
-
- Open source licenses
-
-
- privacy_policy
-
-
- Privacy policy
-
-
- https://e.foundation/legal-notice-privacy/
-
-
- Terms of service
-
-
- terms_of_service
-
-
- https://e.foundation/legal-notice-privacy/
-
-
diff --git a/java/com/android/dialer/about/res/xml/about_phone_fragment.xml b/java/com/android/dialer/about/res/xml/about_phone_fragment.xml
deleted file mode 100644
index 51f1d3eb045e28f9959b1d2022c203dfb027b98d..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/about/res/xml/about_phone_fragment.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/activecalls/ActiveCallInfo.java b/java/com/android/dialer/activecalls/ActiveCallInfo.java
index d4f76b393c1d035196db0bc56d9c5a1bd061d4bc..ccf35014189ee997862c037fbcdf19237dca0fca 100644
--- a/java/com/android/dialer/activecalls/ActiveCallInfo.java
+++ b/java/com/android/dialer/activecalls/ActiveCallInfo.java
@@ -16,8 +16,10 @@
package com.android.dialer.activecalls;
-import android.support.annotation.Nullable;
import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.Nullable;
+
import com.google.auto.value.AutoValue;
import com.google.common.base.Optional;
diff --git a/java/com/android/dialer/activecalls/ActiveCalls.java b/java/com/android/dialer/activecalls/ActiveCalls.java
index 600839c73994266b22fd3e056bc2eda2e967264b..21f7786fccd261bebf38c644feb93ae9141138c0 100644
--- a/java/com/android/dialer/activecalls/ActiveCalls.java
+++ b/java/com/android/dialer/activecalls/ActiveCalls.java
@@ -16,7 +16,8 @@
package com.android.dialer.activecalls;
-import android.support.annotation.MainThread;
+import androidx.annotation.MainThread;
+
import com.google.common.collect.ImmutableList;
/** Exposes information about current active calls to the whole dialer. */
diff --git a/java/com/android/dialer/activecalls/ActiveCallsModule.java b/java/com/android/dialer/activecalls/ActiveCallsModule.java
index 4d7f4485827ae6d1f5cc5a55ff44a6550fd82ddb..9c02ba65755ea1e28b49a78bb5fdb18432dc5804 100644
--- a/java/com/android/dialer/activecalls/ActiveCallsModule.java
+++ b/java/com/android/dialer/activecalls/ActiveCallsModule.java
@@ -17,15 +17,12 @@
package com.android.dialer.activecalls;
import com.android.dialer.activecalls.impl.ActiveCallsImpl;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
import dagger.Binds;
import dagger.Module;
import javax.inject.Singleton;
/** Module for {@link ActiveCallsComponent} */
@Module
-@InstallIn(variants = DialerVariant.DIALER_TEST) // TODO(weijiaxu): put all variants.
public abstract class ActiveCallsModule {
@Singleton
diff --git a/java/com/android/dialer/activecalls/impl/ActiveCallsImpl.java b/java/com/android/dialer/activecalls/impl/ActiveCallsImpl.java
index 3449cc8b026a496228bfb8324d8c62fcc8f46677..10e6ffa9dc9e16019d1892224dfa19a861949264 100644
--- a/java/com/android/dialer/activecalls/impl/ActiveCallsImpl.java
+++ b/java/com/android/dialer/activecalls/impl/ActiveCallsImpl.java
@@ -16,7 +16,8 @@
package com.android.dialer.activecalls.impl;
-import android.support.annotation.MainThread;
+import androidx.annotation.MainThread;
+
import com.android.dialer.activecalls.ActiveCallInfo;
import com.android.dialer.activecalls.ActiveCalls;
import com.android.dialer.common.Assert;
diff --git a/java/com/android/dialer/animation/AnimUtils.java b/java/com/android/dialer/animation/AnimUtils.java
index 9160cf58a12668c39c54748fbd83dc860d07c50a..992b4a5cf2f77e38bacbd1ced11c734af5e1061c 100644
--- a/java/com/android/dialer/animation/AnimUtils.java
+++ b/java/com/android/dialer/animation/AnimUtils.java
@@ -18,7 +18,6 @@ package com.android.dialer.animation;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
-import android.animation.ValueAnimator;
import android.view.View;
import android.view.ViewPropertyAnimator;
import android.view.animation.Interpolator;
@@ -116,127 +115,6 @@ public class AnimUtils {
animator.start();
}
- /**
- * Scales in the view from scale of 0 to actual dimensions.
- *
- * @param view The view to scale.
- * @param durationMs The duration of the scaling in milliseconds.
- * @param startDelayMs The delay to applying the scaling in milliseconds.
- */
- public static void scaleIn(final View view, int durationMs, int startDelayMs) {
- AnimatorListenerAdapter listener =
- (new AnimatorListenerAdapter() {
- @Override
- public void onAnimationStart(Animator animation) {
- view.setVisibility(View.VISIBLE);
- }
-
- @Override
- public void onAnimationCancel(Animator animation) {
- view.setScaleX(1);
- view.setScaleY(1);
- }
- });
- scaleInternal(
- view,
- 0 /* startScaleValue */,
- 1 /* endScaleValue */,
- durationMs,
- startDelayMs,
- listener,
- EASE_IN);
- }
-
- /**
- * Scales out the view from actual dimensions to 0.
- *
- * @param view The view to scale.
- * @param durationMs The duration of the scaling in milliseconds.
- */
- public static void scaleOut(final View view, int durationMs) {
- AnimatorListenerAdapter listener =
- new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- view.setVisibility(View.GONE);
- }
-
- @Override
- public void onAnimationCancel(Animator animation) {
- view.setVisibility(View.GONE);
- view.setScaleX(0);
- view.setScaleY(0);
- }
- };
-
- scaleInternal(
- view,
- 1 /* startScaleValue */,
- 0 /* endScaleValue */,
- durationMs,
- NO_DELAY,
- listener,
- EASE_OUT);
- }
-
- private static void scaleInternal(
- final View view,
- int startScaleValue,
- int endScaleValue,
- int durationMs,
- int startDelay,
- AnimatorListenerAdapter listener,
- Interpolator interpolator) {
- view.setScaleX(startScaleValue);
- view.setScaleY(startScaleValue);
-
- final ViewPropertyAnimator animator = view.animate();
- animator.cancel();
-
- animator
- .setInterpolator(interpolator)
- .scaleX(endScaleValue)
- .scaleY(endScaleValue)
- .setListener(listener)
- .withLayer();
-
- if (durationMs != DEFAULT_DURATION) {
- animator.setDuration(durationMs);
- }
- animator.setStartDelay(startDelay);
-
- animator.start();
- }
-
- /**
- * Animates a view to the new specified dimensions.
- *
- * @param view The view to change the dimensions of.
- * @param newWidth The new width of the view.
- * @param newHeight The new height of the view.
- */
- public static void changeDimensions(final View view, final int newWidth, final int newHeight) {
- ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
-
- final int oldWidth = view.getWidth();
- final int oldHeight = view.getHeight();
- final int deltaWidth = newWidth - oldWidth;
- final int deltaHeight = newHeight - oldHeight;
-
- animator.addUpdateListener(
- new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animator) {
- Float value = (Float) animator.getAnimatedValue();
-
- view.getLayoutParams().width = (int) (value * deltaWidth + oldWidth);
- view.getLayoutParams().height = (int) (value * deltaHeight + oldHeight);
- view.requestLayout();
- }
- });
- animator.start();
- }
-
public static class AnimationCallback {
public void onAnimationEnd() {}
diff --git a/java/com/android/dialer/app/AndroidManifest.xml b/java/com/android/dialer/app/AndroidManifest.xml
index 93dedb6992eb6b298dae9f58c7154d735bd351b7..15fd14c0d36ec319253f6119fe9e8fc105aafc30 100644
--- a/java/com/android/dialer/app/AndroidManifest.xml
+++ b/java/com/android/dialer/app/AndroidManifest.xml
@@ -60,18 +60,6 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -138,11 +139,6 @@
-
-
-
voiceSearchEnabledForTest = Optional.absent();
-
- /** Fragment containing the dialpad that slides into view */
- protected DialpadFragment dialpadFragment;
-
- /** Root layout of DialtactsActivity */
- private CoordinatorLayout parentLayout;
-
- /** new Fragment for search phone numbers using the keyboard and the dialpad. */
- private NewSearchFragment newSearchFragment;
-
- /** Animation that slides in. */
- private Animation slideIn;
-
- /** Animation that slides out. */
- private Animation slideOut;
- /** Fragment containing the speed dial list, call history list, and all contacts list. */
- private ListsFragment listsFragment;
- /**
- * Tracks whether onSaveInstanceState has been called. If true, no fragment transactions can be
- * commited.
- */
- private boolean stateSaved;
-
- private boolean isKeyboardOpen;
- private boolean inNewSearch;
- private boolean isRestarting;
- private boolean inDialpadSearch;
- private boolean inRegularSearch;
- private boolean clearSearchOnPause;
- private boolean isDialpadShown;
- /** Whether or not the device is in landscape orientation. */
- private boolean isLandscape;
- /** True if the dialpad is only temporarily showing due to being in call */
- private boolean inCallDialpadUp;
- /** True when this activity has been launched for the first time. */
- private boolean firstLaunch;
- /**
- * Search query to be applied to the SearchView in the ActionBar once onCreateOptionsMenu has been
- * called.
- */
- private String pendingSearchViewQuery;
-
- private PopupMenu overflowMenu;
- private EditText searchView;
- private SearchEditTextLayout searchEditTextLayout;
- private View voiceSearchButton;
- private String searchQuery;
- private String dialpadQuery;
- private DialerDatabaseHelper dialerDatabaseHelper;
- private DragDropController dragDropController;
- private ActionBarController actionBarController;
- private FloatingActionButtonController floatingActionButtonController;
- private String savedLanguageCode;
- private boolean wasConfigurationChange;
- private long timeTabSelected;
-
- public boolean isMultiSelectModeEnabled;
-
- private boolean isLastTabEnabled;
-
- AnimationListenerAdapter slideInListener =
- new AnimationListenerAdapter() {
- @Override
- public void onAnimationEnd(Animation animation) {
- maybeEnterSearchUi();
- }
- };
- /** Listener for after slide out animation completes on dialer fragment. */
- AnimationListenerAdapter slideOutListener =
- new AnimationListenerAdapter() {
- @Override
- public void onAnimationEnd(Animation animation) {
- commitDialpadFragmentHide();
- }
- };
- /** Listener used to send search queries to the phone search fragment. */
- private final TextWatcher phoneSearchQueryTextListener =
- new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- final String newText = s.toString();
- if (newText.equals(searchQuery)) {
- // If the query hasn't changed (perhaps due to activity being destroyed
- // and restored, or user launching the same DIAL intent twice), then there is
- // no need to do anything here.
- return;
- }
-
- if (count != 0) {
- PerformanceReport.recordClick(UiAction.Type.TEXT_CHANGE_WITH_INPUT);
- }
-
- LogUtil.v("DialtactsActivity.onTextChanged", "called with new query: " + newText);
- LogUtil.v("DialtactsActivity.onTextChanged", "previous query: " + searchQuery);
- searchQuery = newText;
-
- // Show search fragment only when the query string is changed to non-empty text.
- if (!TextUtils.isEmpty(newText)) {
- // Call enterSearchUi only if we are switching search modes, or showing a search
- // fragment for the first time.
- final boolean sameSearchMode =
- (isDialpadShown && inDialpadSearch) || (!isDialpadShown && inRegularSearch);
- if (!sameSearchMode) {
- enterSearchUi(isDialpadShown, searchQuery, true /* animate */);
- }
- }
-
- if (newSearchFragment != null && newSearchFragment.isVisible()) {
- newSearchFragment.setQuery(searchQuery, getCallInitiationType());
- }
- }
-
- @Override
- public void afterTextChanged(Editable s) {}
- };
- /** Open the search UI when the user clicks on the search box. */
- private final View.OnClickListener searchViewOnClickListener =
- new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (!isInSearchUi()) {
- PerformanceReport.recordClick(UiAction.Type.OPEN_SEARCH);
- actionBarController.onSearchBoxTapped();
- enterSearchUi(
- false /* smartDialSearch */, searchView.getText().toString(), true /* animate */);
- }
- }
- };
-
- private int actionBarHeight;
- private int previouslySelectedTabIndex;
-
- /**
- * The text returned from a voice search query. Set in {@link #onActivityResult} and used in
- * {@link #onResume()} to populate the search box.
- */
- private String voiceSearchQuery;
-
- /**
- * @param tab the TAB_INDEX_* constant in {@link ListsFragment}
- * @return A intent that will open the DialtactsActivity into the specified tab. The intent for
- * each tab will be unique.
- */
- public static Intent getShowTabIntent(Context context, int tab) {
- Intent intent = new Intent(context, DialtactsActivity.class);
- intent.setAction(ACTION_SHOW_TAB);
- intent.putExtra(DialtactsActivity.EXTRA_SHOW_TAB, tab);
- intent.setData(
- new Uri.Builder()
- .scheme("intent")
- .authority(context.getPackageName())
- .appendPath(TAG)
- .appendQueryParameter(DialtactsActivity.EXTRA_SHOW_TAB, String.valueOf(tab))
- .build());
-
- return intent;
- }
-
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- if (ev.getAction() == MotionEvent.ACTION_DOWN) {
- TouchPointManager.getInstance().setPoint((int) ev.getRawX(), (int) ev.getRawY());
- }
- return super.dispatchTouchEvent(ev);
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- Trace.beginSection(TAG + " onCreate");
- LogUtil.enterBlock("DialtactsActivity.onCreate");
- super.onCreate(savedInstanceState);
-
- firstLaunch = true;
- isLastTabEnabled =
- ConfigProviderComponent.get(this).getConfigProvider().getBoolean("last_tab_enabled", false);
-
- final Resources resources = getResources();
- actionBarHeight = resources.getDimensionPixelSize(R.dimen.action_bar_height_large);
-
- Trace.beginSection(TAG + " setContentView");
- setContentView(R.layout.dialtacts_activity);
- Trace.endSection();
- getWindow().setBackgroundDrawable(null);
-
- Trace.beginSection(TAG + " setup Views");
- final ActionBar actionBar = getActionBarSafely();
- actionBar.setCustomView(R.layout.search_edittext);
- actionBar.setDisplayShowCustomEnabled(true);
- actionBar.setBackgroundDrawable(null);
-
- searchEditTextLayout = actionBar.getCustomView().findViewById(R.id.search_view_container);
-
- actionBarController = new ActionBarController(this, searchEditTextLayout);
-
- searchView = searchEditTextLayout.findViewById(R.id.search_view);
- searchView.addTextChangedListener(phoneSearchQueryTextListener);
- searchView.setHint(getSearchBoxHint());
-
- voiceSearchButton = searchEditTextLayout.findViewById(R.id.voice_search_button);
- searchEditTextLayout
- .findViewById(R.id.search_box_collapsed)
- .setOnClickListener(searchViewOnClickListener);
- searchEditTextLayout
- .findViewById(R.id.search_back_button)
- .setOnClickListener(v -> exitSearchUi());
-
- isLandscape =
- getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
- previouslySelectedTabIndex = DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL;
- FloatingActionButton floatingActionButton = findViewById(R.id.floating_action_button);
- floatingActionButton.setOnClickListener(this);
- floatingActionButtonController = new FloatingActionButtonController(this, floatingActionButton);
-
- ImageButton optionsMenuButton =
- searchEditTextLayout.findViewById(R.id.dialtacts_options_menu_button);
- optionsMenuButton.setOnClickListener(this);
- overflowMenu = buildOptionsMenu(optionsMenuButton);
- optionsMenuButton.setOnTouchListener(overflowMenu.getDragToOpenListener());
-
- // Add the favorites fragment but only if savedInstanceState is null. Otherwise the
- // fragment manager is responsible for recreating it.
- if (savedInstanceState == null) {
- getFragmentManager()
- .beginTransaction()
- .add(R.id.dialtacts_frame, new ListsFragment(), TAG_FAVORITES_FRAGMENT)
- .commit();
- } else {
- searchQuery = savedInstanceState.getString(KEY_SEARCH_QUERY);
- dialpadQuery = savedInstanceState.getString(KEY_DIALPAD_QUERY);
- inRegularSearch = savedInstanceState.getBoolean(KEY_IN_REGULAR_SEARCH_UI);
- inDialpadSearch = savedInstanceState.getBoolean(KEY_IN_DIALPAD_SEARCH_UI);
- inNewSearch = savedInstanceState.getBoolean(KEY_IN_NEW_SEARCH_UI);
- firstLaunch = savedInstanceState.getBoolean(KEY_FIRST_LAUNCH);
- savedLanguageCode = savedInstanceState.getString(KEY_SAVED_LANGUAGE_CODE);
- wasConfigurationChange = savedInstanceState.getBoolean(KEY_WAS_CONFIGURATION_CHANGE);
- isDialpadShown = savedInstanceState.getBoolean(KEY_IS_DIALPAD_SHOWN);
- floatingActionButtonController.setVisible(savedInstanceState.getBoolean(KEY_FAB_VISIBLE));
- actionBarController.restoreInstanceState(savedInstanceState);
- }
-
- final boolean isLayoutRtl = ViewUtil.isRtl();
- if (isLandscape) {
- slideIn =
- AnimationUtils.loadAnimation(
- this, isLayoutRtl ? R.anim.dialpad_slide_in_left : R.anim.dialpad_slide_in_right);
- slideOut =
- AnimationUtils.loadAnimation(
- this, isLayoutRtl ? R.anim.dialpad_slide_out_left : R.anim.dialpad_slide_out_right);
- } else {
- slideIn = AnimationUtils.loadAnimation(this, R.anim.dialpad_slide_in_bottom);
- slideOut = AnimationUtils.loadAnimation(this, R.anim.dialpad_slide_out_bottom);
- }
-
- slideIn.setInterpolator(AnimUtils.EASE_IN);
- slideOut.setInterpolator(AnimUtils.EASE_OUT);
-
- slideIn.setAnimationListener(slideInListener);
- slideOut.setAnimationListener(slideOutListener);
-
- parentLayout = (CoordinatorLayout) findViewById(R.id.dialtacts_mainlayout);
- parentLayout.setOnDragListener(new LayoutOnDragListener());
- ViewUtil.doOnGlobalLayout(
- floatingActionButton,
- view -> {
- int screenWidth = parentLayout.getWidth();
- floatingActionButtonController.setScreenWidth(screenWidth);
- floatingActionButtonController.align(getFabAlignment(), false /* animate */);
- });
-
- Trace.endSection();
-
- Trace.beginSection(TAG + " initialize smart dialing");
- dialerDatabaseHelper = Database.get(this).getDatabaseHelper(this);
- SmartDialPrefix.initializeNanpSettings(this);
- Trace.endSection();
-
- Trace.endSection();
-
- updateSearchFragmentPosition();
- }
-
- @NonNull
- private ActionBar getActionBarSafely() {
- return Assert.isNotNull(getSupportActionBar());
- }
-
- @Override
- protected void onResume() {
- LogUtil.enterBlock("DialtactsActivity.onResume");
- Trace.beginSection(TAG + " onResume");
- super.onResume();
-
- // Some calls may not be recorded (eg. from quick contact),
- // so we should restart recording after these calls. (Recorded call is stopped)
- PostCall.restartPerformanceRecordingIfARecentCallExist(this);
- if (!PerformanceReport.isRecording()) {
- PerformanceReport.startRecording();
- }
-
- stateSaved = false;
- if (firstLaunch) {
- LogUtil.i("DialtactsActivity.onResume", "mFirstLaunch true, displaying fragment");
- displayFragment(getIntent());
- } else if (!phoneIsInUse() && inCallDialpadUp) {
- LogUtil.i("DialtactsActivity.onResume", "phone not in use, hiding dialpad fragment");
- hideDialpadFragment(false, true);
- inCallDialpadUp = false;
- } else if (isDialpadShown) {
- LogUtil.i("DialtactsActivity.onResume", "showing dialpad on resume");
- showDialpadFragment(false);
- } else {
- PostCall.promptUserForMessageIfNecessary(this, parentLayout);
- }
-
- // On M the fragment manager does not restore the hidden state of a fragment from
- // savedInstanceState so it must be hidden again.
- if (!isDialpadShown && dialpadFragment != null && !dialpadFragment.isHidden()) {
- LogUtil.i(
- "DialtactsActivity.onResume", "mDialpadFragment attached but not hidden, forcing hide");
- getFragmentManager().beginTransaction().hide(dialpadFragment).commit();
- }
-
- // If there was a voice query result returned in the {@link #onActivityResult} callback, it
- // will have been stashed in mVoiceSearchQuery since the search results fragment cannot be
- // shown until onResume has completed. Active the search UI and set the search term now.
- if (!TextUtils.isEmpty(voiceSearchQuery)) {
- actionBarController.onSearchBoxTapped();
- searchView.setText(voiceSearchQuery);
- voiceSearchQuery = null;
- }
-
- if (isRestarting) {
- // This is only called when the activity goes from resumed -> paused -> resumed, so it
- // will not cause an extra view to be sent out on rotation
- if (isDialpadShown) {
- Logger.get(this).logScreenView(ScreenEvent.Type.DIALPAD, this);
- }
- isRestarting = false;
- }
-
- prepareVoiceSearchButton();
-
- // Start the thread that updates the smart dial database if
- // (1) the activity is not recreated with a new configuration, or
- // (2) the activity is recreated with a new configuration but the change is a language change.
- boolean isLanguageChanged =
- !LocaleUtils.getLocale(this).getISO3Language().equals(savedLanguageCode);
- if (!wasConfigurationChange || isLanguageChanged) {
- dialerDatabaseHelper.startSmartDialUpdateThread(/* forceUpdate = */ isLanguageChanged);
- }
-
- if (isDialpadShown) {
- floatingActionButtonController.scaleOut();
- } else {
- floatingActionButtonController.align(getFabAlignment(), false /* animate */);
- }
-
- if (firstLaunch) {
- // Only process the Intent the first time onResume() is called after receiving it
- if (Calls.CONTENT_TYPE.equals(getIntent().getType())) {
- // Externally specified extras take precedence to EXTRA_SHOW_TAB, which is only
- // used internally.
- final Bundle extras = getIntent().getExtras();
- if (extras != null && extras.getInt(Calls.EXTRA_CALL_TYPE_FILTER) == Calls.VOICEMAIL_TYPE) {
- listsFragment.showTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
- Logger.get(this).logImpression(DialerImpression.Type.VVM_NOTIFICATION_CLICKED);
- } else {
- listsFragment.showTab(DialtactsPagerAdapter.TAB_INDEX_HISTORY);
- }
- } else if (getIntent().hasExtra(EXTRA_SHOW_TAB)) {
- int index =
- getIntent().getIntExtra(EXTRA_SHOW_TAB, DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL);
- if (index < listsFragment.getTabCount()) {
- // Hide dialpad since this is an explicit intent to show a specific tab, which is coming
- // from missed call or voicemail notification.
- hideDialpadFragment(false, false);
- exitSearchUi();
- listsFragment.showTab(index);
- }
- }
-
- if (getIntent().getBooleanExtra(EXTRA_CLEAR_NEW_VOICEMAILS, false)) {
- LogUtil.i("DialtactsActivity.onResume", "clearing all new voicemails");
- CallLogNotificationsService.markAllNewVoicemailsAsOld(this);
- }
- // add 1 sec delay to get memory snapshot so that dialer wont react slowly on resume.
- ThreadUtil.postDelayedOnUiThread(
- () ->
- MetricsComponent.get(this)
- .metrics()
- .recordMemory(Metrics.DIALTACTS_ON_RESUME_MEMORY_EVENT_NAME),
- 1000);
- }
-
- firstLaunch = false;
-
- setSearchBoxHint();
- timeTabSelected = SystemClock.elapsedRealtime();
-
- Trace.endSection();
- }
-
- @Override
- protected void onRestart() {
- super.onRestart();
- isRestarting = true;
- }
-
- @Override
- protected void onPause() {
- if (clearSearchOnPause) {
- hideDialpadAndSearchUi();
- clearSearchOnPause = false;
- }
- if (slideOut.hasStarted() && !slideOut.hasEnded()) {
- commitDialpadFragmentHide();
- }
- super.onPause();
- }
-
- @Override
- protected void onStop() {
- super.onStop();
- boolean timeoutElapsed =
- SystemClock.elapsedRealtime() - timeTabSelected >= HISTORY_TAB_SEEN_TIMEOUT;
- boolean isOnHistoryTab =
- listsFragment.getCurrentTabIndex() == DialtactsPagerAdapter.TAB_INDEX_HISTORY;
- if (isOnHistoryTab
- && timeoutElapsed
- && !isChangingConfigurations()
- && !getSystemService(KeyguardManager.class).isKeyguardLocked()) {
- listsFragment.markMissedCallsAsReadAndRemoveNotifications();
- }
- StorageComponent.get(this)
- .unencryptedSharedPrefs()
- .edit()
- .putInt(KEY_LAST_TAB, listsFragment.getCurrentTabIndex())
- .apply();
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- LogUtil.enterBlock("DialtactsActivity.onSaveInstanceState");
- super.onSaveInstanceState(outState);
- outState.putString(KEY_SEARCH_QUERY, searchQuery);
- outState.putString(KEY_DIALPAD_QUERY, dialpadQuery);
- outState.putString(KEY_SAVED_LANGUAGE_CODE, LocaleUtils.getLocale(this).getISO3Language());
- outState.putBoolean(KEY_IN_REGULAR_SEARCH_UI, inRegularSearch);
- outState.putBoolean(KEY_IN_DIALPAD_SEARCH_UI, inDialpadSearch);
- outState.putBoolean(KEY_IN_NEW_SEARCH_UI, inNewSearch);
- outState.putBoolean(KEY_FIRST_LAUNCH, firstLaunch);
- outState.putBoolean(KEY_IS_DIALPAD_SHOWN, isDialpadShown);
- outState.putBoolean(KEY_FAB_VISIBLE, floatingActionButtonController.isVisible());
- outState.putBoolean(KEY_WAS_CONFIGURATION_CHANGE, isChangingConfigurations());
- actionBarController.saveInstanceState(outState);
- stateSaved = true;
- }
-
- @Override
- public void onAttachFragment(final Fragment fragment) {
- LogUtil.i("DialtactsActivity.onAttachFragment", "fragment: %s", fragment);
- if (fragment instanceof DialpadFragment) {
- dialpadFragment = (DialpadFragment) fragment;
- } else if (fragment instanceof ListsFragment) {
- listsFragment = (ListsFragment) fragment;
- listsFragment.addOnPageChangeListener(this);
- } else if (fragment instanceof NewSearchFragment) {
- newSearchFragment = (NewSearchFragment) fragment;
- updateSearchFragmentPosition();
- }
- }
-
- protected void handleMenuSettings() {
- final Intent intent = new Intent(this, DialerSettingsActivity.class);
- startActivity(intent);
- }
-
- public boolean isListsFragmentVisible() {
- return listsFragment.getUserVisibleHint();
- }
-
- @Override
- public void onClick(View view) {
- int resId = view.getId();
- if (resId == R.id.floating_action_button) {
- if (!isDialpadShown) {
- LogUtil.i(
- "DialtactsActivity.onClick", "floating action button clicked, going to show dialpad");
- PerformanceReport.recordClick(UiAction.Type.OPEN_DIALPAD);
- inCallDialpadUp = false;
- showDialpadFragment(true);
- PostCall.closePrompt();
- } else {
- LogUtil.i(
- "DialtactsActivity.onClick",
- "floating action button clicked, but dialpad is already showing");
- }
- } else if (resId == R.id.voice_search_button) {
- try {
- startActivityForResult(
- new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH),
- ActivityRequestCodes.DIALTACTS_VOICE_SEARCH);
- } catch (ActivityNotFoundException e) {
- Toast.makeText(
- DialtactsActivity.this, R.string.voice_search_not_available, Toast.LENGTH_SHORT)
- .show();
- }
- } else if (resId == R.id.dialtacts_options_menu_button) {
- overflowMenu.show();
- } else {
- Assert.fail("Unexpected onClick event from " + view);
- }
- }
-
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- if (!isSafeToCommitTransactions()) {
- return true;
- }
-
- int resId = item.getItemId();
- if (resId == R.id.menu_history) {
- PerformanceReport.recordClick(UiAction.Type.OPEN_CALL_HISTORY);
- final Intent intent = new Intent(this, CallLogActivity.class);
- startActivity(intent);
- } else if (resId == R.id.menu_clear_frequents) {
- ClearFrequentsDialog.show(getFragmentManager());
- Logger.get(this).logScreenView(ScreenEvent.Type.CLEAR_FREQUENTS, this);
- return true;
- } else if (resId == R.id.menu_call_settings) {
- handleMenuSettings();
- Logger.get(this).logScreenView(ScreenEvent.Type.SETTINGS, this);
- return true;
- }
- return false;
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- LogUtil.i(
- "DialtactsActivity.onActivityResult",
- "requestCode:%d, resultCode:%d",
- requestCode,
- resultCode);
- if (requestCode == ActivityRequestCodes.DIALTACTS_VOICE_SEARCH) {
- if (resultCode == RESULT_OK) {
- final ArrayList matches =
- data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
- if (matches.size() > 0) {
- voiceSearchQuery = matches.get(0);
- } else {
- LogUtil.i("DialtactsActivity.onActivityResult", "voice search - nothing heard");
- }
- } else {
- LogUtil.e("DialtactsActivity.onActivityResult", "voice search failed");
- }
- } else if (requestCode == ActivityRequestCodes.DIALTACTS_CALL_COMPOSER) {
- if (resultCode == RESULT_FIRST_USER) {
- LogUtil.i(
- "DialtactsActivity.onActivityResult", "returned from call composer, error occurred");
- String message =
- getString(
- R.string.call_composer_connection_failed,
- data.getStringExtra(CallComposerActivity.KEY_CONTACT_NAME));
- Snackbar.make(parentLayout, message, Snackbar.LENGTH_LONG).show();
- } else {
- LogUtil.i("DialtactsActivity.onActivityResult", "returned from call composer, no error");
- }
- } else if (requestCode == ActivityRequestCodes.DIALTACTS_CALL_DETAILS) {
- if (resultCode == RESULT_OK
- && data != null
- && data.getBooleanExtra(OldCallDetailsActivity.EXTRA_HAS_ENRICHED_CALL_DATA, false)) {
- String number = data.getStringExtra(OldCallDetailsActivity.EXTRA_PHONE_NUMBER);
- int snackbarDurationMillis = 5_000;
- Snackbar.make(parentLayout, getString(R.string.ec_data_deleted), snackbarDurationMillis)
- .setAction(R.string.view_conversation, v -> {
- IntentProvider provider = IntentProvider.getSendSmsIntentProvider(number);
- startActivity(provider.getClickIntent(this));
- })
- .setActionTextColor(getResources().getColor(R.color.dialer_snackbar_action_text_color))
- .show();
- }
- } else if (requestCode == ActivityRequestCodes.DIALTACTS_DUO) {
- // We just returned from starting Duo for a task. Reload our reachability data since it
- // may have changed after a user finished activating Duo.
- DuoComponent.get(this).getDuo().reloadReachability(this);
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
-
- /**
- * Update the number of unread voicemails (potentially other tabs) displayed next to the tab icon.
- */
- public void updateTabUnreadCounts() {
- listsFragment.updateTabUnreadCounts();
- }
-
- /**
- * Initiates a fragment transaction to show the dialpad fragment. Animations and other visual
- * updates are handled by a callback which is invoked after the dialpad fragment is shown.
- *
- * @see #onDialpadShown
- */
- private void showDialpadFragment(boolean animate) {
- LogUtil.i("DialtactActivity.showDialpadFragment", "animate: %b", animate);
- if (isDialpadShown) {
- LogUtil.i("DialtactsActivity.showDialpadFragment", "dialpad already shown");
- return;
- }
- if (stateSaved) {
- LogUtil.i("DialtactsActivity.showDialpadFragment", "state already saved");
- return;
- }
- isDialpadShown = true;
-
- listsFragment.setUserVisibleHint(false);
-
- final FragmentTransaction ft = getFragmentManager().beginTransaction();
- if (dialpadFragment == null) {
- dialpadFragment = new DialpadFragment();
- ft.add(R.id.dialtacts_container, dialpadFragment, TAG_DIALPAD_FRAGMENT);
- } else {
- ft.show(dialpadFragment);
- }
-
- dialpadFragment.setAnimate(animate);
- Logger.get(this).logScreenView(ScreenEvent.Type.DIALPAD, this);
- ft.commit();
-
- if (animate) {
- floatingActionButtonController.scaleOut();
- maybeEnterSearchUi();
- } else {
- floatingActionButtonController.scaleOut();
- maybeEnterSearchUi();
- }
- actionBarController.onDialpadUp();
-
- Assert.isNotNull(listsFragment.getView()).animate().alpha(0).withLayer();
-
- // adjust the title, so the user will know where we're at when the activity start/resumes.
- setTitle(R.string.launcherDialpadActivityLabel);
- }
-
- @Override
- public void getLastOutgoingCall(LastOutgoingCallCallback callback) {
- DialerExecutorComponent.get(this)
- .dialerExecutorFactory()
- .createUiTaskBuilder(
- getFragmentManager(), "Query last phone number", Calls::getLastOutgoingCall)
- .onSuccess(output -> callback.lastOutgoingCall(output))
- .build()
- .executeParallel(this);
- }
-
- /** Callback from child DialpadFragment when the dialpad is shown. */
- @Override
- public void onDialpadShown() {
- LogUtil.enterBlock("DialtactsActivity.onDialpadShown");
- Assert.isNotNull(dialpadFragment);
- if (dialpadFragment.getAnimate()) {
- Assert.isNotNull(dialpadFragment.getView()).startAnimation(slideIn);
- } else {
- dialpadFragment.setYFraction(0);
- }
-
- updateSearchFragmentPosition();
- }
-
- @Override
- public void onCallPlacedFromDialpad() {
- clearSearchOnPause = true;
- }
-
- @Override
- public void onContactsListScrolled(boolean isDragging) {
- // intentionally empty.
- }
-
- /**
- * Initiates animations and other visual updates to hide the dialpad. The fragment is hidden in a
- * callback after the hide animation ends.
- *
- * @see #commitDialpadFragmentHide
- */
- private void hideDialpadFragment(boolean animate, boolean clearDialpad) {
- LogUtil.enterBlock("DialtactsActivity.hideDialpadFragment");
- if (dialpadFragment == null || dialpadFragment.getView() == null) {
- return;
- }
- if (clearDialpad) {
- // Temporarily disable accessibility when we clear the dialpad, since it should be
- // invisible and should not announce anything.
- dialpadFragment
- .getDigitsWidget()
- .setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
- dialpadFragment.clearDialpad();
- dialpadFragment
- .getDigitsWidget()
- .setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
- }
- if (!isDialpadShown) {
- return;
- }
- isDialpadShown = false;
- dialpadFragment.setAnimate(animate);
- listsFragment.setUserVisibleHint(true);
- listsFragment.sendScreenViewForCurrentPosition();
-
- updateSearchFragmentPosition();
-
- floatingActionButtonController.align(getFabAlignment(), animate);
- if (animate) {
- dialpadFragment.getView().startAnimation(slideOut);
- } else {
- commitDialpadFragmentHide();
- }
-
- actionBarController.onDialpadDown();
-
- // reset the title to normal.
- setTitle(R.string.launcherActivityLabel);
- }
-
- /** Finishes hiding the dialpad fragment after any animations are completed. */
- private void commitDialpadFragmentHide() {
- if (!stateSaved && dialpadFragment != null && !dialpadFragment.isHidden() && !isDestroyed()) {
- final FragmentTransaction ft = getFragmentManager().beginTransaction();
- ft.hide(dialpadFragment);
- ft.commit();
- }
- floatingActionButtonController.scaleIn();
- }
-
- private void updateSearchFragmentPosition() {
- if (newSearchFragment != null) {
- int animationDuration = getResources().getInteger(R.integer.dialpad_slide_in_duration);
- int actionbarHeight = getResources().getDimensionPixelSize(R.dimen.action_bar_height_large);
- int shadowHeight = getResources().getDrawable(R.drawable.search_shadow).getIntrinsicHeight();
- int start = isDialpadShown() ? actionbarHeight - shadowHeight : 0;
- int end = isDialpadShown() ? 0 : actionbarHeight - shadowHeight;
- newSearchFragment.animatePosition(start, end, animationDuration);
- }
- }
-
- @Override
- public boolean isInSearchUi() {
- return inDialpadSearch || inRegularSearch || inNewSearch;
- }
-
- @Override
- public boolean hasSearchQuery() {
- return !TextUtils.isEmpty(searchQuery);
- }
-
- private void setNotInSearchUi() {
- inDialpadSearch = false;
- inRegularSearch = false;
- inNewSearch = false;
- }
-
- private void hideDialpadAndSearchUi() {
- if (isDialpadShown) {
- hideDialpadFragment(false, true);
- }
- exitSearchUi();
- }
-
- private void prepareVoiceSearchButton() {
- searchEditTextLayout.setVoiceSearchEnabled(isVoiceSearchEnabled());
- voiceSearchButton.setOnClickListener(this);
- }
-
- private boolean isVoiceSearchEnabled() {
- if (voiceSearchEnabledForTest.isPresent()) {
- return voiceSearchEnabledForTest.get();
- }
- return canIntentBeHandled(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH));
- }
-
- public boolean isNearbyPlacesSearchEnabled() {
- return false;
- }
-
- protected int getSearchBoxHint() {
- return R.string.dialer_hint_find_contact;
- }
-
- /** Sets the hint text for the contacts search box */
- private void setSearchBoxHint() {
- ((TextView) searchEditTextLayout.findViewById(R.id.search_box_start_search))
- .setHint(getSearchBoxHint());
- }
-
- protected OptionsPopupMenu buildOptionsMenu(View invoker) {
- final OptionsPopupMenu popupMenu = new OptionsPopupMenu(this, invoker);
- popupMenu.inflate(R.menu.dialtacts_options);
- popupMenu.setOnMenuItemClickListener(this);
- return popupMenu;
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- if (pendingSearchViewQuery != null) {
- searchView.setText(pendingSearchViewQuery);
- pendingSearchViewQuery = null;
- }
- if (actionBarController != null) {
- actionBarController.restoreActionBarOffset();
- }
- return false;
- }
-
- /**
- * Returns true if the intent is due to hitting the green send key (hardware call button:
- * KEYCODE_CALL) while in a call.
- *
- * @param intent the intent that launched this activity
- * @return true if the intent is due to hitting the green send key while in a call
- */
- private boolean isSendKeyWhileInCall(Intent intent) {
- // If there is a call in progress and the user launched the dialer by hitting the call
- // button, go straight to the in-call screen.
- final boolean callKey = Intent.ACTION_CALL_BUTTON.equals(intent.getAction());
-
- // When KEYCODE_CALL event is handled it dispatches an intent with the ACTION_CALL_BUTTON.
- // Besides of checking the intent action, we must check if the phone is really during a
- // call in order to decide whether to ignore the event or continue to display the activity.
- if (callKey && phoneIsInUse()) {
- TelecomUtil.showInCallScreen(this, false);
- return true;
- }
-
- return false;
- }
-
- /**
- * Sets the current tab based on the intent's request type
- *
- * @param intent Intent that contains information about which tab should be selected
- */
- private void displayFragment(Intent intent) {
- // If we got here by hitting send and we're in call forward along to the in-call activity
- if (isSendKeyWhileInCall(intent)) {
- finish();
- return;
- }
-
- boolean showDialpadChooser =
- !ACTION_SHOW_TAB.equals(intent.getAction())
- && phoneIsInUse()
- && !DialpadFragment.isAddCallMode(intent);
- boolean isDialIntent = intent.getData() != null && isDialIntent(intent);
- boolean isAddCallIntent = DialpadFragment.isAddCallMode(intent);
- if (showDialpadChooser || isDialIntent || isAddCallIntent) {
- LogUtil.i(
- "DialtactsActivity.displayFragment",
- "show dialpad fragment (showDialpadChooser: %b, isDialIntent: %b, isAddCallIntent: %b)",
- showDialpadChooser,
- isDialIntent,
- isAddCallIntent);
- showDialpadFragment(false);
- dialpadFragment.setStartedFromNewIntent(true);
- if (showDialpadChooser && !dialpadFragment.isVisible()) {
- inCallDialpadUp = true;
- }
- } else if (isLastTabEnabled) {
- @TabIndex
- int tabIndex =
- StorageComponent.get(this)
- .unencryptedSharedPrefs()
- .getInt(KEY_LAST_TAB, DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL);
- // If voicemail tab is saved and its availability changes, we still move to the voicemail tab
- // but it is quickly removed and shown the contacts tab.
- if (listsFragment != null) {
- listsFragment.showTab(tabIndex);
- PerformanceReport.setStartingTabIndex(tabIndex);
- } else {
- PerformanceReport.setStartingTabIndex(DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL);
- }
- }
- }
-
- @Override
- public void onNewIntent(Intent newIntent) {
- LogUtil.enterBlock("DialtactsActivity.onNewIntent");
- setIntent(newIntent);
- firstLaunch = true;
-
- stateSaved = false;
- displayFragment(newIntent);
-
- invalidateOptionsMenu();
- }
-
- /** Returns true if the given intent contains a phone number to populate the dialer with */
- private boolean isDialIntent(Intent intent) {
- final String action = intent.getAction();
- if (Intent.ACTION_DIAL.equals(action) || ACTION_TOUCH_DIALER.equals(action)) {
- return true;
- }
- if (Intent.ACTION_VIEW.equals(action)) {
- final Uri data = intent.getData();
- if (data != null && PhoneAccount.SCHEME_TEL.equals(data.getScheme())) {
- return true;
- }
- }
- return false;
- }
-
- /** Shows the search fragment */
- private void enterSearchUi(boolean smartDialSearch, String query, boolean animate) {
- LogUtil.i("DialtactsActivity.enterSearchUi", "smart dial: %b", smartDialSearch);
- if (stateSaved || getFragmentManager().isDestroyed()) {
- // Weird race condition where fragment is doing work after the activity is destroyed
- // due to talkback being on (a bug). Just return since we can't do any
- // constructive here.
- LogUtil.i(
- "DialtactsActivity.enterSearchUi",
- "not entering search UI (mStateSaved: %b, isDestroyed: %b)",
- stateSaved,
- getFragmentManager().isDestroyed());
- return;
- }
-
- FragmentTransaction transaction = getFragmentManager().beginTransaction();
- String tag = TAG_NEW_SEARCH_FRAGMENT;
- inNewSearch = true;
-
- floatingActionButtonController.scaleOut();
-
- if (animate) {
- transaction.setCustomAnimations(android.R.animator.fade_in, 0);
- } else {
- transaction.setTransition(FragmentTransaction.TRANSIT_NONE);
- }
-
- NewSearchFragment fragment = (NewSearchFragment) getFragmentManager().findFragmentByTag(tag);
- if (fragment == null) {
- fragment = NewSearchFragment.newInstance();
- transaction.add(R.id.dialtacts_frame, fragment, tag);
- } else {
- transaction.show(fragment);
- }
-
- // DialtactsActivity will provide the options menu
- fragment.setHasOptionsMenu(false);
- fragment.setQuery(query, getCallInitiationType());
- transaction.commit();
-
- if (animate) {
- Assert.isNotNull(listsFragment.getView()).animate().alpha(0).withLayer();
- }
- listsFragment.setUserVisibleHint(false);
- }
-
- /** Hides the search fragment */
- private void exitSearchUi() {
- LogUtil.enterBlock("DialtactsActivity.exitSearchUi");
-
- // See related bug in enterSearchUI();
- if (getFragmentManager().isDestroyed() || stateSaved) {
- return;
- }
-
- searchView.setText(null);
-
- if (dialpadFragment != null) {
- dialpadFragment.clearDialpad();
- }
-
- setNotInSearchUi();
-
- // There are four states the fab can be in:
- // - Not visible and should remain not visible (do nothing)
- // - Not visible (move then show the fab)
- // - Visible, in the correct position (do nothing)
- // - Visible, in the wrong position (hide, move, then show the fab)
- if (floatingActionButtonController.isVisible()
- && getFabAlignment() != FloatingActionButtonController.ALIGN_END) {
- floatingActionButtonController.scaleOut(
- new OnVisibilityChangedListener() {
- @Override
- public void onHidden(FloatingActionButton floatingActionButton) {
- super.onHidden(floatingActionButton);
- onPageScrolled(
- listsFragment.getCurrentTabIndex(), 0 /* offset */, 0 /* pixelOffset */);
- floatingActionButtonController.scaleIn();
- }
- });
- } else if (!floatingActionButtonController.isVisible() && listsFragment.shouldShowFab()) {
- onPageScrolled(listsFragment.getCurrentTabIndex(), 0 /* offset */, 0 /* pixelOffset */);
- ThreadUtil.getUiThreadHandler()
- .postDelayed(() -> floatingActionButtonController.scaleIn(), FAB_SCALE_IN_DELAY_MS);
- }
-
- final FragmentTransaction transaction = getFragmentManager().beginTransaction();
- if (newSearchFragment != null) {
- transaction.remove(newSearchFragment);
- }
- transaction.commit();
-
- Assert.isNotNull(listsFragment.getView()).animate().alpha(1).withLayer();
-
- if (dialpadFragment == null || !dialpadFragment.isVisible()) {
- // If the dialpad fragment wasn't previously visible, then send a screen view because
- // we are exiting regular search. Otherwise, the screen view will be sent by
- // {@link #hideDialpadFragment}.
- listsFragment.sendScreenViewForCurrentPosition();
- listsFragment.setUserVisibleHint(true);
- }
- onPageSelected(listsFragment.getCurrentTabIndex());
-
- actionBarController.onSearchUiExited();
- }
-
- @Override
- public void onBackPressed() {
- PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON);
-
- if (stateSaved) {
- return;
- }
- if (isDialpadShown) {
- hideDialpadFragment(true, false);
- if (TextUtils.isEmpty(dialpadQuery)) {
- exitSearchUi();
- }
- } else if (isInSearchUi()) {
- if (isKeyboardOpen) {
- DialerUtils.hideInputMethod(parentLayout);
- PerformanceReport.recordClick(UiAction.Type.HIDE_KEYBOARD_IN_SEARCH);
- } else {
- exitSearchUi();
- }
- } else {
- super.onBackPressed();
- }
- }
-
- @Override
- public void onConfigurationChanged(Configuration configuration) {
- super.onConfigurationChanged(configuration);
- // Checks whether a hardware keyboard is available
- if (configuration.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
- isKeyboardOpen = true;
- } else if (configuration.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) {
- isKeyboardOpen = false;
- }
- }
-
- private void maybeEnterSearchUi() {
- if (!isInSearchUi()) {
- enterSearchUi(true /* isSmartDial */, searchQuery, false);
- }
- }
-
- @Override
- public void onDialpadQueryChanged(String query) {
- dialpadQuery = query;
- if (newSearchFragment != null) {
- newSearchFragment.setRawNumber(query);
- }
- final String normalizedQuery =
- SmartDialNameMatcher.normalizeNumber(/* context = */ this, query);
-
- if (!TextUtils.equals(searchView.getText(), normalizedQuery)) {
- if (DEBUG) {
- LogUtil.v("DialtactsActivity.onDialpadQueryChanged", "new query: " + query);
- }
- if (dialpadFragment == null || !dialpadFragment.isVisible()) {
- // This callback can happen if the dialpad fragment is recreated because of
- // activity destruction. In that case, don't update the search view because
- // that would bring the user back to the search fragment regardless of the
- // previous state of the application. Instead, just return here and let the
- // fragment manager correctly figure out whatever fragment was last displayed.
- if (!TextUtils.isEmpty(normalizedQuery)) {
- pendingSearchViewQuery = normalizedQuery;
- }
- return;
- }
- searchView.setText(normalizedQuery);
- }
-
- try {
- if (dialpadFragment != null && dialpadFragment.isVisible()) {
- dialpadFragment.process_quote_emergency_unquote(normalizedQuery);
- }
- } catch (Exception ignored) {
- // Skip any exceptions for this piece of code
- }
- }
-
- @Override
- public boolean onDialpadSpacerTouchWithEmptyQuery() {
- return false;
- }
-
- @Override
- public boolean shouldShowDialpadChooser() {
- // Show the dialpad chooser if we're in a call
- return true;
- }
-
- @Override
- public void onSearchListTouch() {
- if (isDialpadShown) {
- PerformanceReport.recordClick(UiAction.Type.CLOSE_DIALPAD);
- hideDialpadFragment(true, false);
- if (TextUtils.isEmpty(dialpadQuery)) {
- exitSearchUi();
- }
- } else {
- UiUtil.hideKeyboardFrom(this, searchEditTextLayout);
- }
- }
-
- @Override
- public void onListFragmentScrollStateChange(int scrollState) {
- PerformanceReport.recordScrollStateChange(scrollState);
- if (scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
- hideDialpadFragment(true, false);
- DialerUtils.hideInputMethod(parentLayout);
- }
- }
-
- @Override
- public void onListFragmentScroll(int firstVisibleItem, int visibleItemCount, int totalItemCount) {
- // TODO: No-op for now. This should eventually show/hide the actionBar based on
- // interactions with the ListsFragments.
- }
-
- private boolean phoneIsInUse() {
- return TelecomUtil.isInManagedCall(this);
- }
-
- private boolean canIntentBeHandled(Intent intent) {
- final PackageManager packageManager = getPackageManager();
- final List resolveInfo =
- packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
- return resolveInfo != null && resolveInfo.size() > 0;
- }
-
- /** Called when the user has long-pressed a contact tile to start a drag operation. */
- @Override
- public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
- listsFragment.showRemoveView(true);
- }
-
- @Override
- public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view) {}
-
- /** Called when the user has released a contact tile after long-pressing it. */
- @Override
- public void onDragFinished(int x, int y) {
- listsFragment.showRemoveView(false);
- }
-
- @Override
- public void onDroppedOnRemove() {}
-
- @Override
- public ImageView getDragShadowOverlay() {
- return findViewById(R.id.contact_tile_drag_shadow_overlay);
- }
-
- @Override
- public void setHasFrequents(boolean hasFrequents) {
- // No-op
- }
-
- /**
- * Allows the SpeedDialFragment to attach the drag controller to mRemoveViewContainer once it has
- * been attached to the activity.
- */
- @Override
- public void setDragDropController(DragDropController dragController) {
- dragDropController = dragController;
- listsFragment.getRemoveView().setDragDropController(dragController);
- }
-
- /** Implemented to satisfy {@link OldSpeedDialFragment.HostInterface} */
- @Override
- public void showAllContactsTab() {
- if (listsFragment != null) {
- listsFragment.showTab(DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS);
- }
- }
-
- /** Implemented to satisfy {@link CallLogFragment.HostInterface} */
- @Override
- public void showDialpad() {
- showDialpadFragment(true);
- }
-
- @Override
- public void enableFloatingButton(boolean enabled) {
- LogUtil.d("DialtactsActivity.enableFloatingButton", "enable: %b", enabled);
- // Floating button shouldn't be enabled when dialpad is shown.
- if (!isDialpadShown() || !enabled) {
- floatingActionButtonController.setVisible(enabled);
- }
- }
-
- @Override
- public void onPickDataUri(
- Uri dataUri, boolean isVideoCall, CallSpecificAppData callSpecificAppData) {
- clearSearchOnPause = true;
- PhoneNumberInteraction.startInteractionForPhoneCall(
- DialtactsActivity.this, dataUri, isVideoCall, callSpecificAppData);
- }
-
- @Override
- public void onPickPhoneNumber(
- String phoneNumber, boolean isVideoCall, CallSpecificAppData callSpecificAppData) {
- if (phoneNumber == null) {
- // Invalid phone number, but let the call go through so that InCallUI can show
- // an error message.
- phoneNumber = "";
- }
- PreCall.start(
- this,
- new CallIntentBuilder(phoneNumber, callSpecificAppData)
- .setIsVideoCall(isVideoCall)
- .setAllowAssistedDial(callSpecificAppData.getAllowAssistedDialing()));
-
- clearSearchOnPause = true;
- }
-
- @Override
- public void onHomeInActionBarSelected() {
- exitSearchUi();
- }
-
- @Override
- public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
- // FAB does not move with the new favorites UI
- if (newFavoritesIsEnabled()) {
- return;
- }
- int tabIndex = listsFragment.getCurrentTabIndex();
-
- // Scroll the button from center to end when moving from the Speed Dial to Call History tab.
- // In RTL, scroll when the current tab is Call History instead, since the order of the tabs
- // is reversed and the ViewPager returns the left tab position during scroll.
- boolean isRtl = ViewUtil.isRtl();
- if (!isRtl && tabIndex == DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL && !isLandscape) {
- floatingActionButtonController.onPageScrolled(positionOffset);
- } else if (isRtl && tabIndex == DialtactsPagerAdapter.TAB_INDEX_HISTORY && !isLandscape) {
- floatingActionButtonController.onPageScrolled(1 - positionOffset);
- } else if (tabIndex != DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL) {
- floatingActionButtonController.onPageScrolled(1);
- }
- }
-
- @Override
- public void onPageSelected(int position) {
- updateMissedCalls();
- int tabIndex = listsFragment.getCurrentTabIndex();
- if (tabIndex != previouslySelectedTabIndex) {
- floatingActionButtonController.scaleIn();
- }
- LogUtil.i("DialtactsActivity.onPageSelected", "tabIndex: %d", tabIndex);
- previouslySelectedTabIndex = tabIndex;
- timeTabSelected = SystemClock.elapsedRealtime();
- }
-
- @Override
- public void onPageScrollStateChanged(int state) {}
-
- public boolean isActionBarShowing() {
- return actionBarController.isActionBarShowing();
- }
-
- public boolean isDialpadShown() {
- return isDialpadShown;
- }
-
- @Override
- public void setActionBarHideOffset(int offset) {
- getActionBarSafely().setHideOffset(offset);
- }
-
- @Override
- public int getActionBarHeight() {
- return actionBarHeight;
- }
-
- @VisibleForTesting
- public int getFabAlignment() {
- if (!newFavoritesIsEnabled()
- && !isLandscape
- && !isInSearchUi()
- && listsFragment.getCurrentTabIndex() == DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL) {
- return FloatingActionButtonController.ALIGN_MIDDLE;
- }
- return FloatingActionButtonController.ALIGN_END;
- }
-
- private void updateMissedCalls() {
- if (previouslySelectedTabIndex == DialtactsPagerAdapter.TAB_INDEX_HISTORY) {
- listsFragment.markMissedCallsAsReadAndRemoveNotifications();
- }
- }
-
- @Override
- public void onDisambigDialogDismissed() {
- // Don't do anything; the app will remain open with favorites tiles displayed.
- }
-
- @Override
- public void interactionError(@InteractionErrorCode int interactionErrorCode) {
- switch (interactionErrorCode) {
- case InteractionErrorCode.USER_LEAVING_ACTIVITY:
- // This is expected to happen if the user exits the activity before the interaction occurs.
- return;
- case InteractionErrorCode.CONTACT_NOT_FOUND:
- case InteractionErrorCode.CONTACT_HAS_NO_NUMBER:
- case InteractionErrorCode.OTHER_ERROR:
- default:
- // All other error codes are unexpected. For example, it should be impossible to start an
- // interaction with an invalid contact from the Dialtacts activity.
- Assert.fail("PhoneNumberInteraction error: " + interactionErrorCode);
- }
- }
-
- @Override
- public void onRequestPermissionsResult(
- int requestCode, String[] permissions, int[] grantResults) {
- // This should never happen; it should be impossible to start an interaction without the
- // contacts permission from the Dialtacts activity.
- Assert.fail(
- String.format(
- Locale.US,
- "Permissions requested unexpectedly: %d/%s/%s",
- requestCode,
- Arrays.toString(permissions),
- Arrays.toString(grantResults)));
- }
-
- @Override
- public void onActionModeStateChanged(ActionMode mode, boolean isEnabled) {
- isMultiSelectModeEnabled = isEnabled;
- }
-
- @Override
- public boolean isActionModeStateEnabled() {
- return isMultiSelectModeEnabled;
- }
-
- private CallInitiationType.Type getCallInitiationType() {
- return isDialpadShown
- ? CallInitiationType.Type.DIALPAD
- : CallInitiationType.Type.REGULAR_SEARCH;
- }
-
- @Override
- public void onCallPlacedFromSearch() {
- DialerUtils.hideInputMethod(parentLayout);
- clearSearchOnPause = true;
- }
-
- @Override
- public void requestingPermission() {}
-
- protected int getPreviouslySelectedTabIndex() {
- return previouslySelectedTabIndex;
- }
-
- @Override
- public void onContactSelected(ImageView photo, Uri contactUri, long contactId) {
- Logger.get(this)
- .logInteraction(InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CONTACTS_FRAGMENT_ITEM);
- QuickContact.showQuickContact(
- this, photo, contactUri, QuickContact.MODE_LARGE, null /* excludeMimes */);
- }
-
- /** Popup menu accessible from the search bar */
- protected class OptionsPopupMenu extends PopupMenu {
-
- public OptionsPopupMenu(Context context, View anchor) {
- super(context, anchor, Gravity.END);
- }
-
- @Override
- public void show() {
- Menu menu = getMenu();
- MenuItem clearFrequents = menu.findItem(R.id.menu_clear_frequents);
- clearFrequents.setVisible(
- PermissionsUtil.hasContactsReadPermissions(DialtactsActivity.this)
- && listsFragment != null
- && listsFragment.hasFrequents());
-
- menu.findItem(R.id.menu_history)
- .setVisible(PermissionsUtil.hasPhonePermissions(DialtactsActivity.this));
-
- Context context = DialtactsActivity.this.getApplicationContext();
- MenuItem simulatorMenuItem = menu.findItem(R.id.menu_simulator_submenu);
- Simulator simulator = SimulatorComponent.get(context).getSimulator();
- if (simulator.shouldShow()) {
- simulatorMenuItem.setVisible(true);
- simulatorMenuItem.setActionProvider(simulator.getActionProvider(DialtactsActivity.this));
- } else {
- simulatorMenuItem.setVisible(false);
- }
- super.show();
- }
- }
-
- /**
- * Listener that listens to drag events and sends their x and y coordinates to a {@link
- * DragDropController}.
- */
- private class LayoutOnDragListener implements OnDragListener {
-
- @Override
- public boolean onDrag(View v, DragEvent event) {
- if (event.getAction() == DragEvent.ACTION_DRAG_LOCATION) {
- dragDropController.handleDragHovered(v, (int) event.getX(), (int) event.getY());
- }
- return true;
- }
- }
-
- @VisibleForTesting
- static void setVoiceSearchEnabledForTest(Optional enabled) {
- voiceSearchEnabledForTest = enabled;
- }
-
- private boolean newFavoritesIsEnabled() {
- return ConfigProviderComponent.get(this)
- .getConfigProvider()
- .getBoolean("enable_new_favorites_tab", false);
- }
-}
diff --git a/java/com/android/dialer/app/MainComponent.java b/java/com/android/dialer/app/MainComponent.java
index 1d3a4ceebac17c3486e223f951b607c989c4d1f3..c076cbceb81f044946f744ead95953a9df2b7364 100644
--- a/java/com/android/dialer/app/MainComponent.java
+++ b/java/com/android/dialer/app/MainComponent.java
@@ -59,6 +59,6 @@ public class MainComponent {
}
private static String getComponentName() {
- return "com.android.dialer.app.DialtactsActivity";
+ return "com.android.dialer.main.impl.MainActivity";
}
}
diff --git a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
index 865cb81cf982cff6844c77f4f188906604721f1b..6efdc6286c4c1372a58b9d20a71885769cc5a53d 100644
--- a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
+++ b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
@@ -17,23 +17,19 @@
package com.android.dialer.app.calllog;
import android.content.Context;
-import android.support.annotation.NonNull;
+import android.provider.BlockedNumberContract;
import android.support.v4.app.FragmentManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
+
+import androidx.annotation.NonNull;
+
import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
import com.android.dialer.blockreportspam.BlockReportSpamDialogs;
import com.android.dialer.blockreportspam.BlockReportSpamDialogs.DialogFragmentForReportingNotSpam;
import com.android.dialer.blockreportspam.BlockReportSpamDialogs.DialogFragmentForUnblockingNumberAndReportingAsNotSpam;
import com.android.dialer.common.LogUtil;
import com.android.dialer.logging.ContactSource;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ReportingLocation;
-import com.android.dialer.spam.Spam;
-import com.android.dialer.spam.SpamComponent;
-import com.android.dialer.spam.SpamSettings;
-import com.android.dialer.spam.promo.SpamBlockingPromoHelper;
/** Listener to show dialogs for block and report spam actions. */
public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClickListener {
@@ -43,9 +39,6 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
private final FragmentManager fragmentManager;
private final RecyclerView.Adapter adapter;
private final FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
- private final Spam spam;
- private final SpamSettings spamSettings;
- private final SpamBlockingPromoHelper spamBlockingPromoHelper;
public BlockReportSpamListener(
Context context,
@@ -58,9 +51,6 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
this.fragmentManager = fragmentManager;
this.adapter = adapter;
this.filteredNumberAsyncQueryHandler = filteredNumberAsyncQueryHandler;
- spam = SpamComponent.get(context).spam();
- spamSettings = SpamComponent.get(context).spamSettings();
- spamBlockingPromoHelper = new SpamBlockingPromoHelper(context, spamSettings);
}
@Override
@@ -72,29 +62,12 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
@NonNull final ContactSource.Type contactSourceType) {
BlockReportSpamDialogs.DialogFragmentForBlockingNumberAndOptionallyReportingAsSpam.newInstance(
displayNumber,
- spamSettings.isDialogReportSpamCheckedByDefault(),
+ false,
isSpamChecked -> {
LogUtil.i("BlockReportSpamListener.onBlockReportSpam", "onClick");
- if (isSpamChecked && spamSettings.isSpamEnabled()) {
- Logger.get(context)
- .logImpression(
- DialerImpression.Type
- .REPORT_CALL_AS_SPAM_VIA_CALL_LOG_BLOCK_REPORT_SPAM_SENT_VIA_BLOCK_NUMBER_DIALOG);
- spam.reportSpamFromCallHistory(
- number,
- countryIso,
- callType,
- ReportingLocation.Type.CALL_LOG_HISTORY,
- contactSourceType);
- }
filteredNumberAsyncQueryHandler.blockNumber(
- uri -> {
- Logger.get(context)
- .logImpression(DialerImpression.Type.USER_ACTION_BLOCKED_NUMBER);
- adapter.notifyDataSetChanged();
- },
- number,
- countryIso);
+ uri -> adapter.notifyDataSetChanged(),
+ number);
if (isSpamChecked) {
showSpamBlockingPromoDialog();
@@ -113,29 +86,11 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
@NonNull final ContactSource.Type contactSourceType) {
BlockReportSpamDialogs.DialogFragmentForBlockingNumberAndReportingAsSpam.newInstance(
displayNumber,
- spamSettings.isSpamEnabled(),
() -> {
LogUtil.i("BlockReportSpamListener.onBlock", "onClick");
- if (spamSettings.isSpamEnabled()) {
- Logger.get(context)
- .logImpression(
- DialerImpression.Type
- .DIALOG_ACTION_CONFIRM_NUMBER_SPAM_INDIRECTLY_VIA_BLOCK_NUMBER);
- spam.reportSpamFromCallHistory(
- number,
- countryIso,
- callType,
- ReportingLocation.Type.CALL_LOG_HISTORY,
- contactSourceType);
- }
filteredNumberAsyncQueryHandler.blockNumber(
- uri -> {
- Logger.get(context)
- .logImpression(DialerImpression.Type.USER_ACTION_BLOCKED_NUMBER);
- adapter.notifyDataSetChanged();
- },
- number,
- countryIso);
+ uri -> adapter.notifyDataSetChanged(),
+ number);
showSpamBlockingPromoDialog();
},
null)
@@ -149,30 +104,15 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
final String countryIso,
final int callType,
final ContactSource.Type contactSourceType,
- final boolean isSpam,
- final Integer blockId) {
+ final boolean isSpam) {
DialogFragmentForUnblockingNumberAndReportingAsNotSpam.newInstance(
displayNumber,
isSpam,
() -> {
LogUtil.i("BlockReportSpamListener.onUnblock", "onClick");
- if (isSpam && spamSettings.isSpamEnabled()) {
- Logger.get(context)
- .logImpression(DialerImpression.Type.REPORT_AS_NOT_SPAM_VIA_UNBLOCK_NUMBER);
- spam.reportNotSpamFromCallHistory(
- number,
- countryIso,
- callType,
- ReportingLocation.Type.CALL_LOG_HISTORY,
- contactSourceType);
+ if (BlockedNumberContract.unblock(context, number) > 0) {
+ adapter.notifyDataSetChanged();
}
- filteredNumberAsyncQueryHandler.unblock(
- (rows, values) -> {
- Logger.get(context)
- .logImpression(DialerImpression.Type.USER_ACTION_UNBLOCKED_NUMBER);
- adapter.notifyDataSetChanged();
- },
- blockId);
},
null)
.show(fragmentManager, BlockReportSpamDialogs.UNBLOCK_DIALOG_TAG);
@@ -189,16 +129,6 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
displayNumber,
() -> {
LogUtil.i("BlockReportSpamListener.onReportNotSpam", "onClick");
- if (spamSettings.isSpamEnabled()) {
- Logger.get(context)
- .logImpression(DialerImpression.Type.DIALOG_ACTION_CONFIRM_NUMBER_NOT_SPAM);
- spam.reportNotSpamFromCallHistory(
- number,
- countryIso,
- callType,
- ReportingLocation.Type.CALL_LOG_HISTORY,
- contactSourceType);
- }
adapter.notifyDataSetChanged();
},
null)
@@ -206,28 +136,5 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
}
private void showSpamBlockingPromoDialog() {
- if (!spamBlockingPromoHelper.shouldShowSpamBlockingPromo()) {
- return;
- }
-
- Logger.get(context).logImpression(DialerImpression.Type.SPAM_BLOCKING_CALL_LOG_PROMO_SHOWN);
- spamBlockingPromoHelper.showSpamBlockingPromoDialog(
- fragmentManager,
- () -> {
- Logger.get(context)
- .logImpression(DialerImpression.Type.SPAM_BLOCKING_ENABLED_THROUGH_CALL_LOG_PROMO);
- spamSettings.modifySpamBlockingSetting(
- true,
- success -> {
- if (!success) {
- Logger.get(context)
- .logImpression(
- DialerImpression.Type
- .SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_CALL_LOG_PROMO);
- }
- spamBlockingPromoHelper.showModifySettingOnCompleteSnackbar(rootView, success);
- });
- },
- null /* onDismissListener */);
}
}
diff --git a/java/com/android/dialer/app/calllog/CallLogActivity.java b/java/com/android/dialer/app/calllog/CallLogActivity.java
index ff3ff558ac971b09bea6a970b070118e5b564dba..1a07daa1d4bd6b119dfb125e67f0cea6e10c296e 100644
--- a/java/com/android/dialer/app/calllog/CallLogActivity.java
+++ b/java/com/android/dialer/app/calllog/CallLogActivity.java
@@ -21,7 +21,6 @@ import android.content.Intent;
import android.os.Bundle;
import android.provider.CallLog;
import android.provider.CallLog.Calls;
-import android.support.annotation.VisibleForTesting;
import android.support.design.widget.Snackbar;
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
@@ -38,11 +37,6 @@ import com.android.dialer.callstats.DoubleDatePickerDialog;
import com.android.dialer.common.Assert;
import com.android.dialer.constants.ActivityRequestCodes;
import com.android.dialer.database.CallLogQueryHandler;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
-import com.android.dialer.logging.UiAction;
-import com.android.dialer.performancereport.PerformanceReport;
-import com.android.dialer.postcall.PostCall;
import com.android.dialer.util.TransactionSafeActivity;
import com.android.dialer.util.ViewUtil;
@@ -50,8 +44,8 @@ import com.android.dialer.util.ViewUtil;
public class CallLogActivity extends TransactionSafeActivity implements
ViewPager.OnPageChangeListener, DoubleDatePickerDialog.OnDateSetListener {
- @VisibleForTesting static final int TAB_INDEX_ALL = 0;
- @VisibleForTesting static final int TAB_INDEX_MISSED = 1;
+ private static final int TAB_INDEX_ALL = 0;
+ private static final int TAB_INDEX_MISSED = 1;
private static final int TAB_INDEX_STATS = 2;
private static final int TAB_INDEX_COUNT = 3;
private ViewPager viewPager;
@@ -107,16 +101,8 @@ public class CallLogActivity extends TransactionSafeActivity implements
@Override
protected void onResume() {
- // Some calls may not be recorded (eg. from quick contact),
- // so we should restart recording after these calls. (Recorded call is stopped)
- PostCall.restartPerformanceRecordingIfARecentCallExist(this);
- if (!PerformanceReport.isRecording()) {
- PerformanceReport.startRecording();
- }
-
isResumed = true;
super.onResume();
- sendScreenViewForChildFragment();
}
@Override
@@ -160,7 +146,6 @@ public class CallLogActivity extends TransactionSafeActivity implements
}
if (item.getItemId() == android.R.id.home) {
- PerformanceReport.recordClick(UiAction.Type.CLOSE_CALL_HISTORY_WITH_CANCEL_BUTTON);
final Intent intent = new Intent("com.android.dialer.main.impl.MAIN");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
@@ -181,9 +166,6 @@ public class CallLogActivity extends TransactionSafeActivity implements
public void onPageSelected(int position) {
updateMissedCalls(position);
selectedPageIndex = position;
- if (isResumed) {
- sendScreenViewForChildFragment();
- }
viewPagerTabs.onPageSelected(position);
}
@@ -201,10 +183,6 @@ public class CallLogActivity extends TransactionSafeActivity implements
}
}
- private void sendScreenViewForChildFragment() {
- Logger.get(this).logScreenView(ScreenEvent.Type.CALL_LOG_FILTER, this);
- }
-
private int getRtlPosition(int position) {
if (ViewUtil.isRtl()) {
return viewPagerAdapter.getCount() - 1 - position;
@@ -236,7 +214,6 @@ public class CallLogActivity extends TransactionSafeActivity implements
@Override
public void onBackPressed() {
- PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON);
super.onBackPressed();
}
@@ -299,20 +276,6 @@ public class CallLogActivity extends TransactionSafeActivity implements
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == ActivityRequestCodes.DIALTACTS_CALL_DETAILS) {
- if (resultCode == RESULT_OK
- && data != null
- && data.getBooleanExtra(OldCallDetailsActivity.EXTRA_HAS_ENRICHED_CALL_DATA, false)) {
- String number = data.getStringExtra(OldCallDetailsActivity.EXTRA_PHONE_NUMBER);
- Snackbar.make(findViewById(R.id.calllog_frame), getString(R.string.ec_data_deleted), 5_000)
- .setAction(R.string.view_conversation, v -> {
- IntentProvider provider = IntentProvider.getSendSmsIntentProvider(number);
- startActivity(provider.getClickIntent(this));
- })
- .setActionTextColor(getResources().getColor(R.color.dialer_snackbar_action_text_color))
- .show();
- }
- }
super.onActivityResult(requestCode, resultCode, data);
}
}
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index 485683b0923cfd9f07527cf10bef30ad81886c74..866f4d725bfb2ae9cb9f0b070d0bf49abfa24cc8 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -24,17 +24,11 @@ import android.content.res.Resources;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.os.Trace;
+import android.provider.BlockedNumberContract;
import android.provider.CallLog;
import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
@@ -52,6 +46,12 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
import com.android.contacts.common.ContactsUtils;
import com.android.dialer.app.R;
import com.android.dialer.app.calllog.CallLogFragment.CallLogFragmentListener;
@@ -70,42 +70,23 @@ import com.android.dialer.common.FragmentUtils.FragmentUtilListener;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.AsyncTaskExecutor;
import com.android.dialer.common.concurrent.AsyncTaskExecutors;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.configprovider.ConfigProviderComponent;
import com.android.dialer.contacts.ContactsComponent;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.duo.DuoListener;
-import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
import com.android.dialer.logging.ContactSource;
import com.android.dialer.logging.ContactSource.Type;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.LoggingBindings.ContactsProviderMatchInfo;
-import com.android.dialer.logging.UiAction;
import com.android.dialer.main.MainActivityPeer;
-import com.android.dialer.performancereport.PerformanceReport;
import com.android.dialer.phonenumbercache.CallLogQuery;
import com.android.dialer.phonenumbercache.ContactInfo;
import com.android.dialer.phonenumbercache.ContactInfoHelper;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.spam.SpamComponent;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.PermissionsUtil;
-import com.google.i18n.phonenumbers.NumberParseException;
-import com.google.i18n.phonenumbers.PhoneNumberUtil;
-import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
import java.util.ArrayList;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
/** Adapter class to fill in data for the Call Log. */
public class CallLogAdapter extends GroupingListAdapter
- implements GroupCreator, OnVoicemailDeletedListener, DuoListener {
+ implements GroupCreator, OnVoicemailDeletedListener {
// Types of activities the call log adapter is used for
public static final int ACTIVITY_TYPE_CALL_LOG = 1;
@@ -121,11 +102,6 @@ public class CallLogAdapter extends GroupingListAdapter
public static final String LOAD_DATA_TASK_IDENTIFIER = "load_data";
- public static final String ENABLE_CALL_LOG_MULTI_SELECT = "enable_call_log_multiselect";
- public static final boolean ENABLE_CALL_LOG_MULTI_SELECT_FLAG = true;
-
- @VisibleForTesting static final String FILTER_EMERGENCY_CALLS_FLAG = "filter_emergency_calls";
-
protected final Activity activity;
protected final VoicemailPlaybackPresenter voicemailPlaybackPresenter;
/** Cache for repeated requests to Telecom/Telephony. */
@@ -134,7 +110,8 @@ public class CallLogAdapter extends GroupingListAdapter
private final CallFetcher callFetcher;
private final OnActionModeStateChangedListener actionModeStateChangedListener;
private final MultiSelectRemoveView multiSelectRemoveView;
- @NonNull private final FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
+ @NonNull
+ private final FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
private final int activityType;
/** Instance of helper class for managing views. */
@@ -157,16 +134,6 @@ public class CallLogAdapter extends GroupingListAdapter
public boolean deselectAllMode = false;
private final SparseArray selectedItems = new SparseArray<>();
- /**
- * Maps a raw input number to match info. We only log one MatchInfo per raw input number to reduce
- * the amount of data logged.
- *
- *
Note that this has to be a {@link ConcurrentMap} as the match info for each row in the UI is
- * loaded in a background thread spawned when the ViewHolder is bound.
- */
- private final ConcurrentMap contactsProviderMatchInfos =
- new ConcurrentHashMap<>();
-
private final ActionMode.Callback actionModeCallback =
new ActionMode.Callback() {
@@ -198,7 +165,6 @@ public class CallLogAdapter extends GroupingListAdapter
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
if (item.getItemId() == R.id.action_bar_delete_menu_item) {
- Logger.get(activity).logImpression(DialerImpression.Type.MULTISELECT_TAP_DELETE_ICON);
if (selectedItems.size() > 0) {
showDeleteSelectedItemsDialog();
}
@@ -246,19 +212,12 @@ public class CallLogAdapter extends GroupingListAdapter
deleteSelectedItems(voicemailsToDeleteOnConfirmation);
actionMode.finish();
dialog.cancel();
- Logger.get(activity)
- .logImpression(
- DialerImpression.Type.MULTISELECT_DELETE_ENTRY_VIA_CONFIRMATION_DIALOG);
}
})
.setOnCancelListener(
new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
- Logger.get(activity)
- .logImpression(
- DialerImpression.Type
- .MULTISELECT_CANCEL_CONFIRMATION_DIALOG_VIA_CANCEL_TOUCH);
dialogInterface.cancel();
}
})
@@ -267,16 +226,10 @@ public class CallLogAdapter extends GroupingListAdapter
new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int button) {
- Logger.get(activity)
- .logImpression(
- DialerImpression.Type
- .MULTISELECT_CANCEL_CONFIRMATION_DIALOG_VIA_CANCEL_BUTTON);
dialog.cancel();
}
})
.show();
- Logger.get(activity)
- .logImpression(DialerImpression.Type.MULTISELECT_DISPLAY_DELETE_CONFIRMATION_DIALOG);
}
private void deleteSelectedItems(SparseArray voicemailsToDelete) {
@@ -291,19 +244,11 @@ public class CallLogAdapter extends GroupingListAdapter
new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
- if (ConfigProviderComponent.get(v.getContext())
- .getConfigProvider()
- .getBoolean(ENABLE_CALL_LOG_MULTI_SELECT, ENABLE_CALL_LOG_MULTI_SELECT_FLAG)
- && voicemailPlaybackPresenter != null) {
+ if (voicemailPlaybackPresenter != null) {
if (v.getId() == R.id.primary_action_view || v.getId() == R.id.quick_contact_photo) {
if (actionMode == null) {
- Logger.get(activity)
- .logImpression(
- DialerImpression.Type.MULTISELECT_LONG_PRESS_ENTER_MULTI_SELECT_MODE);
actionMode = v.startActionMode(actionModeCallback);
}
- Logger.get(activity)
- .logImpression(DialerImpression.Type.MULTISELECT_LONG_PRESS_TAP_ENTRY);
CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder) v.getTag();
viewHolder.quickContactView.setVisibility(View.GONE);
viewHolder.checkBoxView.setVisibility(View.VISIBLE);
@@ -315,18 +260,11 @@ public class CallLogAdapter extends GroupingListAdapter
}
};
- @VisibleForTesting
- public View.OnClickListener getExpandCollapseListener() {
- return expandCollapseListener;
- }
-
/** The OnClickListener used to expand or collapse the action buttons of a call log entry. */
private final View.OnClickListener expandCollapseListener =
new View.OnClickListener() {
@Override
public void onClick(View v) {
- PerformanceReport.recordClick(UiAction.Type.CLICK_CALL_LOG_ITEM);
-
CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder) v.getTag();
if (viewHolder == null) {
return;
@@ -337,12 +275,8 @@ public class CallLogAdapter extends GroupingListAdapter
multiSelectRemoveView.setSelectAllModeToFalse();
int id = getVoicemailId(viewHolder.voicemailUri);
if (selectedItems.get(id) != null) {
- Logger.get(activity)
- .logImpression(DialerImpression.Type.MULTISELECT_SINGLE_PRESS_UNSELECT_ENTRY);
uncheckMarkCallLogEntry(viewHolder, id);
} else {
- Logger.get(activity)
- .logImpression(DialerImpression.Type.MULTISELECT_SINGLE_PRESS_SELECT_ENTRY);
checkMarkCallLogEntry(viewHolder);
// select all check box logic
if (getItemCount() == selectedItems.size()) {
@@ -362,33 +296,6 @@ public class CallLogAdapter extends GroupingListAdapter
voicemailPlaybackPresenter.resetAll();
}
- // If enriched call capabilities were unknown on the initial load,
- // viewHolder.isCallComposerCapable may be unset. Check here if we have the capabilities
- // as a last attempt at getting them before showing the expanded view to the user
- EnrichedCallCapabilities capabilities = null;
-
- if (viewHolder.number != null) {
- capabilities = getEnrichedCallManager().getCapabilities(viewHolder.number);
- }
-
- if (capabilities == null) {
- capabilities = EnrichedCallCapabilities.NO_CAPABILITIES;
- }
-
- viewHolder.isCallComposerCapable = capabilities.isCallComposerCapable();
-
- if (capabilities.isTemporarilyUnavailable()) {
- LogUtil.i(
- "mExpandCollapseListener.onClick",
- "%s is temporarily unavailable, requesting capabilities",
- LogUtil.sanitizePhoneNumber(viewHolder.number));
- // Refresh the capabilities when temporarily unavailable.
- // Similarly to when we request capabilities the first time, the 'Share and call' button
- // won't pop in with the new capabilities. Instead the row needs to be collapsed and
- // expanded again.
- getEnrichedCallManager().requestCapabilities(viewHolder.number);
- }
-
if (viewHolder.rowId == currentlyExpandedRowId) {
// Hide actions, if the clicked item is the expanded item.
viewHolder.showActions(false);
@@ -439,8 +346,6 @@ public class CallLogAdapter extends GroupingListAdapter
private void updateActionBar() {
if (actionMode == null && selectedItems.size() > 0) {
- Logger.get(activity)
- .logImpression(DialerImpression.Type.MULTISELECT_ROTATE_AND_SHOW_ACTION_MODE);
activity.startActionMode(actionModeCallback);
}
if (actionMode != null) {
@@ -512,8 +417,6 @@ public class CallLogAdapter extends GroupingListAdapter
private boolean loading = true;
- private boolean isSpamEnabled;
-
public CallLogAdapter(
Activity activity,
ViewGroup alertContainer,
@@ -552,7 +455,7 @@ public class CallLogAdapter extends GroupingListAdapter
new PhoneCallDetailsHelper(this.activity, resources, this.callLogCache);
callLogListItemHelper =
new CallLogListItemHelper(phoneCallDetailsHelper, resources, this.callLogCache);
- callLogGroupBuilder = new CallLogGroupBuilder(activity.getApplicationContext(), this);
+ callLogGroupBuilder = new CallLogGroupBuilder(this);
this.filteredNumberAsyncQueryHandler = Assert.isNotNull(filteredNumberAsyncQueryHandler);
blockReportSpamListener =
@@ -569,10 +472,6 @@ public class CallLogAdapter extends GroupingListAdapter
}
private void expandViewHolderActions(CallLogListItemViewHolder viewHolder) {
- if (!TextUtils.isEmpty(viewHolder.voicemailUri)) {
- Logger.get(activity).logImpression(DialerImpression.Type.VOICEMAIL_EXPAND_ENTRY);
- }
-
int lastExpandedPosition = currentlyExpandedPosition;
// Show the actions for the clicked list item.
viewHolder.showActions(true);
@@ -667,27 +566,14 @@ public class CallLogAdapter extends GroupingListAdapter
}
}
- public void clearFilteredNumbersCache() {
- filteredNumberAsyncQueryHandler.clearCache();
- }
-
public void onResume() {
- contactsProviderMatchInfos.clear();
if (PermissionsUtil.hasPermission(activity, android.Manifest.permission.READ_CONTACTS)) {
contactInfoCache.start();
}
- isSpamEnabled = SpamComponent.get(activity).spamSettings().isSpamEnabled();
- getDuo().registerListener(this);
notifyDataSetChanged();
}
public void onPause() {
- // The call log can be resumed/paused without loading any contacts. Don't log these events.
- if (!contactsProviderMatchInfos.isEmpty()) {
- Logger.get(activity).logContactsProviderMetrics(contactsProviderMatchInfos.values());
- }
-
- getDuo().unregisterListener(this);
pauseCache();
for (Uri uri : hiddenItemUris) {
CallLogAsyncTaskUtil.deleteVoicemail(activity, uri, null);
@@ -695,15 +581,13 @@ public class CallLogAdapter extends GroupingListAdapter
}
public void onStop() {
- getEnrichedCallManager().clearCachedData();
}
public CallLogAlertManager getAlertManager() {
return callLogAlertManager;
}
- @VisibleForTesting
- /* package */ void pauseCache() {
+ private void pauseCache() {
contactInfoCache.stop();
callLogCache.reset();
}
@@ -842,24 +726,12 @@ public class CallLogAdapter extends GroupingListAdapter
}
private boolean isHiddenRow(@Nullable String number, long rowId) {
- if (isHideableEmergencyNumberRow(number)) {
- return true;
- }
if (hiddenRowIds.contains(rowId)) {
return true;
}
return false;
}
- private boolean isHideableEmergencyNumberRow(@Nullable String number) {
- if (!ConfigProviderComponent.get(activity)
- .getConfigProvider()
- .getBoolean(FILTER_EMERGENCY_CALLS_FLAG, false)) {
- return false;
- }
- return number != null && PhoneNumberUtils.isEmergencyNumber(number);
- }
-
private void loadAndRender(
final CallLogListItemViewHolder viewHolder,
final long rowId,
@@ -869,36 +741,19 @@ public class CallLogAdapter extends GroupingListAdapter
// Reset block and spam information since this view could be reused which may contain
// outdated data.
viewHolder.isSpam = false;
- viewHolder.blockId = null;
- viewHolder.isSpamFeatureEnabled = false;
+ viewHolder.isBlocked = false;
- // Attempt to set the isCallComposerCapable field. If capabilities are unknown for this number,
- // the value will be false while capabilities are requested. mExpandCollapseListener will
- // attempt to set the field properly in that case
- viewHolder.isCallComposerCapable = isCallComposerCapable(viewHolder.number);
viewHolder.setDetailedPhoneDetails(callDetailsEntries);
final AsyncTask loadDataTask =
new AsyncTask() {
@Override
protected Boolean doInBackground(Void... params) {
- viewHolder.blockId =
- filteredNumberAsyncQueryHandler.getBlockedIdSynchronous(
- viewHolder.number, viewHolder.countryIso);
- details.isBlocked = viewHolder.blockId != null;
+ viewHolder.isBlocked = BlockedNumberContract.canCurrentUserBlockNumbers(activity) &&
+ BlockedNumberContract.isBlocked(activity, viewHolder.number);
+ details.isBlocked = viewHolder.isBlocked;
if (isCancelled()) {
return false;
}
- if (isSpamEnabled) {
- viewHolder.isSpamFeatureEnabled = true;
- // Only display the call as a spam call if there are incoming calls in the list.
- // Call log cards with only outgoing calls should never be displayed as spam.
- viewHolder.isSpam =
- details.hasIncomingCalls()
- && SpamComponent.get(activity)
- .spam()
- .checkSpamStatusSynchronous(viewHolder.number, viewHolder.countryIso);
- details.isSpam = viewHolder.isSpam;
- }
return !isCancelled() && loadData(viewHolder, rowId, details);
}
@@ -923,20 +778,6 @@ public class CallLogAdapter extends GroupingListAdapter
asyncTaskExecutor.submit(LOAD_DATA_TASK_IDENTIFIER, loadDataTask);
}
- @MainThread
- private boolean isCallComposerCapable(@Nullable String number) {
- if (number == null) {
- return false;
- }
-
- EnrichedCallCapabilities capabilities = getEnrichedCallManager().getCapabilities(number);
- if (capabilities == null) {
- getEnrichedCallManager().requestCapabilities(number);
- return false;
- }
- return capabilities.isCallComposerCapable();
- }
-
/**
* Initialize PhoneCallDetails by reading all data from cursor. This method must be run on main
* thread since cursor is not thread safe.
@@ -950,10 +791,6 @@ public class CallLogAdapter extends GroupingListAdapter
final String viaNumber = cursor.getString(CallLogQuery.VIA_NUMBER);
final int numberPresentation = cursor.getInt(CallLogQuery.NUMBER_PRESENTATION);
final ContactInfo cachedContactInfo = ContactInfoHelper.getContactInfo(cursor);
- final int transcriptionState =
- (VERSION.SDK_INT >= VERSION_CODES.O)
- ? cursor.getInt(CallLogQuery.TRANSCRIPTION_STATE)
- : VoicemailCompat.TRANSCRIPTION_NOT_STARTED;
final PhoneCallDetails details =
new PhoneCallDetails(number, numberPresentation, postDialDigits);
details.viaNumber = viaNumber;
@@ -962,8 +799,6 @@ public class CallLogAdapter extends GroupingListAdapter
details.duration = cursor.getLong(CallLogQuery.DURATION);
details.features = getCallFeatures(cursor, count);
details.geocode = cursor.getString(CallLogQuery.GEOCODED_LOCATION);
- details.transcription = cursor.getString(CallLogQuery.TRANSCRIPTION);
- details.transcriptionState = transcriptionState;
details.callTypes = getCallTypes(cursor, count);
details.accountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
@@ -1015,9 +850,6 @@ public class CallLogAdapter extends GroupingListAdapter
String phoneAccountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
- if (DuoComponent.get(activity).getDuo().isDuoAccount(phoneAccountComponentName)) {
- entry.setIsDuoCall(true);
- }
entries.addEntries(entry.build());
cursor.moveToNext();
@@ -1059,11 +891,7 @@ public class CallLogAdapter extends GroupingListAdapter
details.number + details.postDialDigits,
details.countryIso,
details.cachedContactInfo,
- position
- < ConfigProviderComponent.get(activity)
- .getConfigProvider()
- .getLong("number_of_call_to_do_remote_lookup", 5L));
- logCp2Metrics(details, info);
+ position < 5L);
}
CharSequence formattedNumber =
info.formattedNumber == null
@@ -1345,24 +1173,6 @@ public class CallLogAdapter extends GroupingListAdapter
return features;
}
- /**
- * Sets whether processing of requests for contact details should be enabled.
- *
- *
This method should be called in tests to disable such processing of requests when not
- * needed.
- */
- @VisibleForTesting
- void disableRequestProcessingForTest() {
- // TODO: Remove this and test the cache directly.
- contactInfoCache.disableRequestProcessing();
- }
-
- @VisibleForTesting
- void injectContactInfoForTest(String number, String countryIso, ContactInfo contactInfo) {
- // TODO: Remove this and test the cache directly.
- contactInfoCache.injectContactInfoForTest(number, countryIso, contactInfo);
- }
-
/**
* Stores the callback action associated with a call in the call log.
*
@@ -1430,21 +1240,6 @@ public class CallLogAdapter extends GroupingListAdapter
}
}
- @NonNull
- private EnrichedCallManager getEnrichedCallManager() {
- return EnrichedCallComponent.get(activity).getEnrichedCallManager();
- }
-
- @NonNull
- private Duo getDuo() {
- return DuoComponent.get(activity).getDuo();
- }
-
- @Override
- public void onDuoStateChanged() {
- notifyDataSetChanged();
- }
-
public void onAllSelected() {
selectAllMode = true;
deselectAllMode = false;
@@ -1469,45 +1264,6 @@ public class CallLogAdapter extends GroupingListAdapter
notifyDataSetChanged();
}
- @WorkerThread
- private void logCp2Metrics(PhoneCallDetails details, ContactInfo contactInfo) {
- if (details == null) {
- return;
- }
- CharSequence inputNumber = details.number;
- if (inputNumber == null) {
- return;
- }
-
- ContactsProviderMatchInfo.Builder matchInfo =
- ContactsProviderMatchInfo.builder()
- .setInputNumberLength(PhoneNumberUtils.normalizeNumber(inputNumber.toString()).length())
- .setInputNumberHasPostdialDigits(
- !PhoneNumberUtils.extractPostDialPortion(inputNumber.toString()).isEmpty()
- || (details.postDialDigits != null && !details.postDialDigits.isEmpty()));
-
- PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
- try {
- PhoneNumber phoneNumber = phoneNumberUtil.parse(inputNumber, details.countryIso);
- matchInfo.setInputNumberValid(phoneNumberUtil.isValidNumber(phoneNumber));
- } catch (NumberParseException e) {
- // Do nothing
- matchInfo.setInputNumberValid(false);
- }
-
- if (contactInfo != null
- && contactInfo.number != null
- && contactInfo.sourceType == Type.SOURCE_TYPE_DIRECTORY) {
- matchInfo
- .setMatchedContact(true)
- .setMatchedNumberLength(PhoneNumberUtils.normalizeNumber(contactInfo.number).length())
- .setMatchedNumberHasPostdialDigits(
- !PhoneNumberUtils.extractPostDialPortion(contactInfo.number).isEmpty());
- }
-
- contactsProviderMatchInfos.put(inputNumber.toString(), matchInfo.build());
- }
-
/** Interface used to initiate a refresh of the content. */
public interface CallFetcher {
diff --git a/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java b/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java
index f54ea79dcfef2ea86fe7f2457d23419cedf6f40c..d285848af106849bb52921445458a198f6b4dade 100644
--- a/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java
+++ b/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java
@@ -23,9 +23,11 @@ import android.net.Uri;
import android.os.AsyncTask;
import android.provider.CallLog;
import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.AsyncTaskExecutor;
import com.android.dialer.common.concurrent.AsyncTaskExecutors;
@@ -43,7 +45,7 @@ public class CallLogAsyncTaskUtil {
}
public static void markVoicemailAsRead(
- @NonNull final Context context, @NonNull final Uri voicemailUri) {
+ @NonNull final Context context, @NonNull final Uri voicemailUri) {
LogUtil.enterBlock("CallLogAsyncTaskUtil.markVoicemailAsRead, voicemailUri: " + voicemailUri);
if (asyncTaskExecutor == null) {
initTaskExecutor();
@@ -146,11 +148,8 @@ public class CallLogAsyncTaskUtil {
/** The enumeration of {@link AsyncTask} objects used in this class. */
public enum Tasks {
DELETE_VOICEMAIL,
- DELETE_CALL,
MARK_VOICEMAIL_READ,
MARK_CALL_READ,
- GET_CALL_DETAILS,
- UPDATE_DURATION,
}
/** TODO(calderwoodra): documentation */
diff --git a/java/com/android/dialer/app/calllog/CallLogFragment.java b/java/com/android/dialer/app/calllog/CallLogFragment.java
index a6d7f1ead11993e2577059b9777330e40fa33b7e..058dba8f7d33522ab3773ed956b9af0b937c67f2 100644
--- a/java/com/android/dialer/app/calllog/CallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/CallLogFragment.java
@@ -32,8 +32,6 @@ import android.os.Message;
import android.provider.CallLog;
import android.provider.CallLog.Calls;
import android.provider.ContactsContract;
-import android.support.annotation.CallSuper;
-import android.support.annotation.Nullable;
import android.support.v13.app.FragmentCompat;
import android.support.v13.app.FragmentCompat.OnRequestPermissionsResultCallback;
import android.support.v7.app.AppCompatActivity;
@@ -45,7 +43,10 @@ import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
-import com.android.dialer.app.Bindings;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.Nullable;
+
import com.android.dialer.app.R;
import com.android.dialer.app.calllog.CallLogAdapter.CallFetcher;
import com.android.dialer.app.calllog.CallLogAdapter.MultiSelectRemoveView;
@@ -58,17 +59,10 @@ import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
import com.android.dialer.common.Assert;
import com.android.dialer.common.FragmentUtils;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
import com.android.dialer.database.CallLogQueryHandler;
import com.android.dialer.database.CallLogQueryHandler.Listener;
import com.android.dialer.location.GeoUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.metrics.Metrics;
-import com.android.dialer.metrics.MetricsComponent;
-import com.android.dialer.metrics.jank.RecyclerViewJankLogger;
import com.android.dialer.oem.CequintCallerIdManager;
-import com.android.dialer.performancereport.PerformanceReport;
import com.android.dialer.phonenumbercache.ContactInfoHelper;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.widget.EmptyContentView;
@@ -297,18 +291,9 @@ public class CallLogFragment extends Fragment
protected void setupView(View view) {
recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
- if (ConfigProviderComponent.get(getContext())
- .getConfigProvider()
- .getBoolean("is_call_log_item_anim_null", false)) {
- recyclerView.setItemAnimator(null);
- }
recyclerView.setHasFixedSize(true);
- recyclerView.addOnScrollListener(
- new RecyclerViewJankLogger(
- MetricsComponent.get(getContext()).metrics(), Metrics.OLD_CALL_LOG_JANK_EVENT_NAME));
layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
- PerformanceReport.logOnScrollStateChange(recyclerView);
emptyListView = (EmptyContentView) view.findViewById(R.id.empty_list_view);
emptyListView.setImage(R.drawable.empty_call_log);
emptyListView.setActionClickedListener(this);
@@ -337,22 +322,20 @@ public class CallLogFragment extends Fragment
.getRetainedCache(),
new ContactInfoHelper(getActivity(), currentCountryIso),
onContactInfoChangedListener);
- adapter =
- Bindings.getLegacy(getActivity())
- .newCallLogAdapter(
- getActivity(),
- recyclerView,
- this,
- this,
- // We aren't calling getParentUnsafe because CallLogActivity doesn't need to
- // implement this listener
- FragmentUtils.getParent(
+ adapter = new CallLogAdapter(
+ getActivity(),
+ recyclerView,
+ this,
+ this,
+ // We aren't calling getParentUnsafe because CallLogActivity doesn't need to
+ // implement this listener
+ FragmentUtils.getParent(
this, CallLogAdapter.OnActionModeStateChangedListener.class),
- new CallLogCache(getActivity()),
- contactInfoCache,
- getVoicemailPlaybackPresenter(),
- new FilteredNumberAsyncQueryHandler(getActivity()),
- activityType);
+ new CallLogCache(getActivity()),
+ contactInfoCache,
+ getVoicemailPlaybackPresenter(),
+ new FilteredNumberAsyncQueryHandler(getActivity()),
+ activityType);
recyclerView.setAdapter(adapter);
if (adapter.getOnScrollListener() != null) {
recyclerView.addOnScrollListener(adapter.getOnScrollListener());
@@ -417,11 +400,6 @@ public class CallLogFragment extends Fragment
this.hasReadCallLogPermission = hasReadCallLogPermission;
- /*
- * Always clear the filtered numbers cache since users could have blocked/unblocked numbers
- * from the settings page
- */
- adapter.clearFilteredNumbersCache();
refreshData();
adapter.onResume();
@@ -708,11 +686,6 @@ public class CallLogFragment extends Fragment
@Override
public void onClick(View v) {
selectAllMode = !selectAllMode;
- if (selectAllMode) {
- Logger.get(v.getContext()).logImpression(DialerImpression.Type.MULTISELECT_SELECT_ALL);
- } else {
- Logger.get(v.getContext()).logImpression(DialerImpression.Type.MULTISELECT_UNSELECT_ALL);
- }
updateSelectAllIcon();
}
diff --git a/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java b/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java
index e5259117404e69563c576622109cc2e2184478c7..db3f284001b8f55c92e832dd54a139583ccc93f9 100644
--- a/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java
+++ b/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java
@@ -16,19 +16,18 @@
package com.android.dialer.app.calllog;
-import android.content.Context;
import android.database.Cursor;
import android.provider.CallLog.Calls;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
import android.text.format.Time;
+
+import androidx.annotation.Nullable;
+
import com.android.contacts.common.util.DateUtils;
import com.android.dialer.calllogutils.CallbackActionHelper;
import com.android.dialer.calllogutils.CallbackActionHelper.CallbackAction;
import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.inject.ApplicationContext;
import com.android.dialer.phonenumbercache.CallLogQuery;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import java.util.Objects;
@@ -58,12 +57,10 @@ public class CallLogGroupBuilder {
/** Instance of the time object used for time calculations. */
private static final Time TIME = new Time();
- private final Context appContext;
/** The object on which the groups are created. */
private final GroupCreator groupCreator;
- public CallLogGroupBuilder(@ApplicationContext Context appContext, GroupCreator groupCreator) {
- this.appContext = appContext;
+ public CallLogGroupBuilder(GroupCreator groupCreator) {
this.groupCreator = groupCreator;
}
@@ -100,9 +97,7 @@ public class CallLogGroupBuilder {
String groupNumber = cursor.getString(CallLogQuery.NUMBER);
String groupAccountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
int groupFeatures = cursor.getInt(CallLogQuery.FEATURES);
- int groupCallbackAction =
- CallbackActionHelper.getCallbackAction(
- appContext, groupNumber, groupFeatures, groupAccountComponentName);
+ int groupCallbackAction = CallbackActionHelper.getCallbackAction(groupNumber, groupFeatures);
groupCreator.setCallbackAction(firstRowId, groupCallbackAction);
// Instantiate other group values to those of the first call in the cursor.
@@ -130,9 +125,7 @@ public class CallLogGroupBuilder {
callFeatures = cursor.getInt(CallLogQuery.FEATURES);
accountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
accountId = cursor.getString(CallLogQuery.ACCOUNT_ID);
- callbackAction =
- CallbackActionHelper.getCallbackAction(
- appContext, number, callFeatures, accountComponentName);
+ callbackAction = CallbackActionHelper.getCallbackAction(number, callFeatures);
final boolean isSameNumber = equalNumbers(groupNumber, number);
final boolean isSamePostDialDigits = groupPostDialDigits.equals(numberPostDialDigits);
@@ -194,8 +187,7 @@ public class CallLogGroupBuilder {
* Returns true when the two input numbers can be considered identical enough for caller ID
* purposes and put in a call log group.
*/
- @VisibleForTesting
- boolean equalNumbers(@Nullable String number1, @Nullable String number2) {
+ private boolean equalNumbers(@Nullable String number1, @Nullable String number2) {
if (PhoneNumberHelper.isUriNumber(number1) || PhoneNumberHelper.isUriNumber(number2)) {
return compareSipAddresses(number1, number2);
}
@@ -216,8 +208,7 @@ public class CallLogGroupBuilder {
return TextUtils.equals(name1, name2) && TextUtils.equals(id1, id2);
}
- @VisibleForTesting
- boolean compareSipAddresses(@Nullable String number1, @Nullable String number2) {
+ private boolean compareSipAddresses(@Nullable String number1, @Nullable String number2) {
if (number1 == null || number2 == null) {
return Objects.equals(number1, number2);
}
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemHelper.java b/java/com/android/dialer/app/calllog/CallLogListItemHelper.java
index a30d4d76e3533dc1a3a6bb354b91789f11a553b6..87bba52b9060f7ecfd65de6a693eba6f2bfa8243 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemHelper.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemHelper.java
@@ -18,9 +18,11 @@ package com.android.dialer.app.calllog;
import android.content.res.Resources;
import android.provider.CallLog.Calls;
-import android.support.annotation.WorkerThread;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
+
+import androidx.annotation.WorkerThread;
+
import com.android.dialer.app.R;
import com.android.dialer.app.calllog.calllogcache.CallLogCache;
import com.android.dialer.calllogutils.PhoneCallDetails;
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index af4fb297b5490ba2aacea72196d522a13919d992..53cc4b70677bcda444f7ccc7c2d86daf4d41a246 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -17,6 +17,12 @@
package com.android.dialer.app.calllog;
import android.Manifest.permission;
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ArgbEvaluator;
+import android.animation.TimeInterpolator;
+import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
@@ -24,13 +30,10 @@ import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.AsyncTask;
+import android.provider.BlockedNumberContract;
import android.provider.CallLog;
import android.provider.CallLog.Calls;
import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresPermission;
-import android.support.annotation.VisibleForTesting;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.telecom.PhoneAccount;
@@ -43,48 +46,40 @@ import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils;
import android.view.ContextMenu;
-import android.view.LayoutInflater;
+import android.transition.TransitionManager;
+import android.view.animation.AccelerateDecelerateInterpolator;
+import android.view.animation.DecelerateInterpolator;
import android.view.MenuItem;
import android.view.View;
+import android.view.ViewGroup;
import android.view.ViewStub;
-import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresPermission;
+
import com.android.contacts.common.dialog.CallSubjectDialog;
import com.android.dialer.app.R;
import com.android.dialer.app.calllog.CallLogAdapter.OnActionModeStateChangedListener;
import com.android.dialer.app.calllog.calllogcache.CallLogCache;
import com.android.dialer.app.voicemail.VoicemailPlaybackLayout;
import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
-import com.android.dialer.blocking.BlockedNumbersMigrator;
-import com.android.dialer.blocking.FilteredNumberCompat;
-import com.android.dialer.blocking.FilteredNumbersUtil;
-import com.android.dialer.callcomposer.CallComposerActivity;
import com.android.dialer.calldetails.CallDetailsEntries;
import com.android.dialer.calldetails.OldCallDetailsActivity;
-import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.calllogutils.CallbackActionHelper.CallbackAction;
import com.android.dialer.clipboard.ClipboardUtils;
-import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.AsyncTaskExecutors;
-import com.android.dialer.configprovider.ConfigProviderComponent;
import com.android.dialer.constants.ActivityRequestCodes;
import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.dialercontact.SimDetails;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.duo.DuoComponent;
import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.lettertile.LetterTileDrawable.ContactType;
import com.android.dialer.logging.ContactSource;
import com.android.dialer.logging.ContactSource.Type;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
-import com.android.dialer.logging.UiAction;
-import com.android.dialer.performancereport.PerformanceReport;
import com.android.dialer.phonenumbercache.CachedNumberLookupService;
import com.android.dialer.phonenumbercache.ContactInfo;
import com.android.dialer.phonenumbercache.PhoneNumberCache;
@@ -128,7 +123,8 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
public final ImageView primaryActionButtonView;
private final Context context;
- @Nullable private final PhoneAccountHandle defaultPhoneAccountHandle;
+ @Nullable
+ private final PhoneAccountHandle defaultPhoneAccountHandle;
private final CallLogCache callLogCache;
private final CallLogListItemHelper callLogListItemHelper;
private final CachedNumberLookupService cachedNumberLookupService;
@@ -144,8 +140,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
public View callButtonView;
public View videoCallButtonView;
- public View setUpVideoButtonView;
- public View inviteVideoButtonView;
public View createNewContactButtonView;
public View addToExistingContactButtonView;
public View sendMessageView;
@@ -155,7 +149,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
public View reportNotSpamView;
public View detailsButtonView;
public View callWithNoteButtonView;
- public View callComposeButtonView;
public View sendVoicemailButtonView;
public ImageView workIconView;
public ImageView checkBoxView;
@@ -196,9 +189,9 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
*/
public int callType;
/**
- * ID for blocked numbers database. Set when context menu is created, if the number is blocked.
+ * Set when context menu is created, if the number is blocked.
*/
- public Integer blockId;
+ public boolean isBlocked;
/**
* The account for the current call log entry. Cached here as the call back intent is set only
* when the actions ViewStub is inflated.
@@ -221,13 +214,9 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
public CharSequence callTypeOrLocation;
/** The contact info for the contact displayed in this list item. */
public volatile ContactInfo info;
- /** Whether spam feature is enabled, which affects UI. */
- public boolean isSpamFeatureEnabled;
/** Whether the current log entry is a spam number or not. */
public boolean isSpam;
- public boolean isCallComposerCapable;
-
private View.OnClickListener expandCollapseListener;
private final OnActionModeStateChangedListener onActionModeStateChangedListener;
private final View.OnLongClickListener longPressListener;
@@ -289,19 +278,10 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
if (this.context instanceof CallLogActivity) {
hostUi = HostUi.CALL_HISTORY;
- Logger.get(this.context)
- .logQuickContactOnTouch(
- quickContactView, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CALL_HISTORY, true);
} else if (this.voicemailPlaybackPresenter == null) {
hostUi = HostUi.CALL_LOG;
- Logger.get(this.context)
- .logQuickContactOnTouch(
- quickContactView, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CALL_LOG, true);
} else {
hostUi = HostUi.VOICEMAIL;
- Logger.get(this.context)
- .logQuickContactOnTouch(
- quickContactView, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_VOICEMAIL, false);
}
quickContactView.setOverlay(null);
@@ -309,12 +289,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
primaryActionButtonView.setOnClickListener(this);
primaryActionButtonView.setOnLongClickListener(this);
primaryActionView.setOnClickListener(this.expandCollapseListener);
- if (this.voicemailPlaybackPresenter != null
- && ConfigProviderComponent.get(this.context)
- .getConfigProvider()
- .getBoolean(
- CallLogAdapter.ENABLE_CALL_LOG_MULTI_SELECT,
- CallLogAdapter.ENABLE_CALL_LOG_MULTI_SELECT_FLAG)) {
+ if (this.voicemailPlaybackPresenter != null) {
primaryActionView.setOnLongClickListener(longPressListener);
quickContactView.setOnLongClickListener(longPressListener);
quickContactView.setMulitSelectListeners(
@@ -353,90 +328,29 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
(ImageView) view.findViewById(R.id.primary_action_button));
}
- public static CallLogListItemViewHolder createForTest(Context context) {
- return createForTest(context, null, null, new CallLogCache(context));
- }
-
- public static CallLogListItemViewHolder createForTest(
- Context context,
- View.OnClickListener expandCollapseListener,
- VoicemailPlaybackPresenter voicemailPlaybackPresenter,
- CallLogCache callLogCache) {
- Resources resources = context.getResources();
- PhoneCallDetailsHelper phoneCallDetailsHelper =
- new PhoneCallDetailsHelper(context, resources, callLogCache);
-
- CallLogListItemViewHolder viewHolder =
- new CallLogListItemViewHolder(
- context,
- null,
- expandCollapseListener /* expandCollapseListener */,
- null,
- null,
- callLogCache,
- new CallLogListItemHelper(phoneCallDetailsHelper, resources, callLogCache),
- voicemailPlaybackPresenter,
- LayoutInflater.from(context).inflate(R.layout.call_log_list_item, null),
- new DialerQuickContactBadge(context),
- new View(context),
- PhoneCallDetailsViews.createForTest(context),
- new CardView(context),
- new TextView(context),
- new ImageView(context));
- viewHolder.detailsButtonView = new TextView(context);
- viewHolder.actionsView = new View(context);
- viewHolder.voicemailPlaybackView = new VoicemailPlaybackLayout(context);
- viewHolder.workIconView = new ImageButton(context);
- viewHolder.checkBoxView = new ImageButton(context);
- return viewHolder;
- }
-
@Override
public boolean onMenuItemClick(MenuItem item) {
int resId = item.getItemId();
if (resId == R.id.context_menu_copy_to_clipboard) {
ClipboardUtils.copyText(context, null, number, true);
return true;
- } else if (resId == R.id.context_menu_copy_transcript_to_clipboard) {
- ClipboardUtils.copyText(
- context, null, phoneCallDetailsViews.voicemailTranscriptionView.getText(), true);
- return true;
} else if (resId == R.id.context_menu_edit_before_call) {
final Intent intent = new Intent(Intent.ACTION_DIAL, CallUtil.getCallUri(number));
DialerUtils.startActivityWithErrorToast(context, intent);
return true;
} else if (resId == R.id.context_menu_block_report_spam) {
- Logger.get(context)
- .logImpression(DialerImpression.Type.CALL_LOG_CONTEXT_MENU_BLOCK_REPORT_SPAM);
- maybeShowBlockNumberMigrationDialog(
- new BlockedNumbersMigrator.Listener() {
- @Override
- public void onComplete() {
- blockReportListener.onBlockReportSpam(
- displayNumber, number, countryIso, callType, info.sourceType);
- }
- });
+ blockReportListener.onBlockReportSpam(
+ displayNumber, number, countryIso, callType, info.sourceType);
} else if (resId == R.id.context_menu_block) {
- Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_CONTEXT_MENU_BLOCK_NUMBER);
- maybeShowBlockNumberMigrationDialog(
- new BlockedNumbersMigrator.Listener() {
- @Override
- public void onComplete() {
- blockReportListener.onBlock(
- displayNumber, number, countryIso, callType, info.sourceType);
- }
- });
+ blockReportListener.onBlock(
+ displayNumber, number, countryIso, callType, info.sourceType);
} else if (resId == R.id.context_menu_unblock) {
- Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_CONTEXT_MENU_UNBLOCK_NUMBER);
blockReportListener.onUnblock(
- displayNumber, number, countryIso, callType, info.sourceType, isSpam, blockId);
+ displayNumber, number, countryIso, callType, info.sourceType, isSpam);
} else if (resId == R.id.context_menu_report_not_spam) {
- Logger.get(context)
- .logImpression(DialerImpression.Type.CALL_LOG_CONTEXT_MENU_REPORT_AS_NOT_SPAM);
blockReportListener.onReportNotSpam(
displayNumber, number, countryIso, callType, info.sourceType);
} else if (resId == R.id.context_menu_delete) {
- Logger.get(context).logImpression(DialerImpression.Type.USER_DELETED_CALL_LOG_ITEM);
AsyncTaskExecutors.createAsyncTaskExecutor()
.submit(TASK_DELETE, new DeleteCallTask(context, callIds));
}
@@ -463,12 +377,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
videoCallButtonView = actionsView.findViewById(R.id.video_call_action);
videoCallButtonView.setOnClickListener(this);
- setUpVideoButtonView = actionsView.findViewById(R.id.set_up_video_action);
- setUpVideoButtonView.setOnClickListener(this);
-
- inviteVideoButtonView = actionsView.findViewById(R.id.invite_video_action);
- inviteVideoButtonView.setOnClickListener(this);
-
createNewContactButtonView = actionsView.findViewById(R.id.create_new_contact_action);
createNewContactButtonView.setOnClickListener(this);
@@ -497,11 +405,10 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
callWithNoteButtonView = actionsView.findViewById(R.id.call_with_note_action);
callWithNoteButtonView.setOnClickListener(this);
- callComposeButtonView = actionsView.findViewById(R.id.call_compose_action);
- callComposeButtonView.setOnClickListener(this);
-
sendVoicemailButtonView = actionsView.findViewById(R.id.share_voicemail);
sendVoicemailButtonView.setOnClickListener(this);
+
+ actionsView.setVisibility(View.GONE);
}
}
@@ -517,7 +424,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
if (!TextUtils.isEmpty(voicemailUri)) {
// Treat as voicemail list item; show play button if not expanded.
if (!isExpanded) {
- primaryActionButtonView.setImageResource(R.drawable.quantum_ic_play_arrow_white_24);
+ primaryActionButtonView.setImageResource(R.drawable.quantum_ic_play_arrow_vd_theme_24);
primaryActionButtonView.setContentDescription(
TextUtils.expandTemplate(
context.getString(R.string.description_voicemail_action), validNameOrNumber));
@@ -546,20 +453,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
primaryActionButtonView.setImageResource(R.drawable.quantum_ic_videocam_vd_theme_24);
primaryActionButtonView.setVisibility(View.VISIBLE);
break;
- case CallbackAction.DUO:
- if (showDuoPrimaryButton()) {
- CallIntentBuilder.increaseLightbringerCallButtonAppearInCollapsedCallLogItemCount();
- primaryActionButtonView.setTag(
- IntentProvider.getDuoVideoIntentProvider(number, isNonContactEntry(info)));
- } else {
- primaryActionButtonView.setTag(IntentProvider.getReturnVideoCallIntentProvider(number));
- }
- primaryActionButtonView.setContentDescription(
- TextUtils.expandTemplate(
- context.getString(R.string.description_video_call_action), validNameOrNumber));
- primaryActionButtonView.setImageResource(R.drawable.quantum_ic_videocam_vd_theme_24);
- primaryActionButtonView.setVisibility(View.VISIBLE);
- break;
case CallbackAction.VOICE:
if (callLogCache.isVoicemailNumber(accountHandle, number)) {
// Call to generic voicemail number, in case there are multiple accounts
@@ -598,8 +491,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
// This saves us having to remember to set it to GONE in multiple places.
callButtonView.setVisibility(View.GONE);
videoCallButtonView.setVisibility(View.GONE);
- setUpVideoButtonView.setVisibility(View.GONE);
- inviteVideoButtonView.setVisibility(View.GONE);
// For an emergency number, show "Call details" only.
if (PhoneNumberHelper.isLocalEmergencyNumber(context, number)) {
@@ -607,7 +498,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
addToExistingContactButtonView.setVisibility(View.GONE);
sendMessageView.setVisibility(View.GONE);
callWithNoteButtonView.setVisibility(View.GONE);
- callComposeButtonView.setVisibility(View.GONE);
blockReportView.setVisibility(View.GONE);
blockView.setVisibility(View.GONE);
unblockView.setVisibility(View.GONE);
@@ -633,7 +523,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
addToExistingContactButtonView.setVisibility(View.GONE);
sendMessageView.setVisibility(View.GONE);
callWithNoteButtonView.setVisibility(View.GONE);
- callComposeButtonView.setVisibility(View.GONE);
blockReportView.setVisibility(View.GONE);
blockView.setVisibility(View.GONE);
unblockView.setVisibility(View.GONE);
@@ -684,14 +573,12 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
switch (callbackAction) {
case CallbackAction.IMS_VIDEO:
- case CallbackAction.DUO:
- // For an IMS video call or a Duo call, the secondary action should always be a
+ // For an IMS video call, the secondary action should always be a
// voice callback.
callButtonView.setVisibility(View.VISIBLE);
videoCallButtonView.setVisibility(View.GONE);
break;
case CallbackAction.VOICE:
- Duo duo = DuoComponent.get(context).getDuo();
// For a voice call, set the secondary callback action to be an IMS video call if it is
// available. Otherwise try to set it as a Duo call.
if (CallUtil.isVideoEnabled(context)
@@ -704,45 +591,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
if (isVoicemailNumber) {
break;
}
-
- boolean identifiedSpamCall = isSpamFeatureEnabled && isSpam;
- if (duo.isReachable(context, number)) {
- videoCallButtonView.setTag(
- IntentProvider.getDuoVideoIntentProvider(number, isNonContactEntry(info)));
- videoCallButtonView.setVisibility(View.VISIBLE);
- CallIntentBuilder.increaseLightbringerCallButtonAppearInExpandedCallLogItemCount();
- } else if (duo.isActivated(context) && !identifiedSpamCall) {
- if (ConfigProviderComponent.get(context)
- .getConfigProvider()
- .getBoolean("enable_call_log_duo_invite_button", false)) {
- inviteVideoButtonView.setTag(IntentProvider.getDuoInviteIntentProvider(number));
- inviteVideoButtonView.setVisibility(View.VISIBLE);
- Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_INVITE_SHOWN);
- CallIntentBuilder.increaseLightbringerCallButtonAppearInExpandedCallLogItemCount();
- }
- } else if (duo.isEnabled(context) && !identifiedSpamCall) {
- if (!duo.isInstalled(context)) {
- if (ConfigProviderComponent.get(context)
- .getConfigProvider()
- .getBoolean("enable_call_log_install_duo_button", false)) {
- setUpVideoButtonView.setTag(IntentProvider.getInstallDuoIntentProvider());
- setUpVideoButtonView.setVisibility(View.VISIBLE);
- Logger.get(context)
- .logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_INSTALL_SHOWN);
- CallIntentBuilder.increaseLightbringerCallButtonAppearInExpandedCallLogItemCount();
- }
- } else {
- if (ConfigProviderComponent.get(context)
- .getConfigProvider()
- .getBoolean("enable_call_log_activate_duo_button", false)) {
- setUpVideoButtonView.setTag(IntentProvider.getSetUpDuoIntentProvider());
- setUpVideoButtonView.setVisibility(View.VISIBLE);
- Logger.get(context)
- .logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_ACTIVATE_SHOWN);
- CallIntentBuilder.increaseLightbringerCallButtonAppearInExpandedCallLogItemCount();
- }
- }
- }
break;
default:
callButtonView.setVisibility(View.GONE);
@@ -781,7 +629,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
callDetailsEntries, buildContact(), canReportCallerId, canSupportAssistedDialing()));
}
- boolean isBlockedOrSpam = blockId != null || (isSpamFeatureEnabled && isSpam);
+ boolean isBlockedOrSpam = isBlocked || isSpam;
if (!isBlockedOrSpam && info != null && UriUtils.isEncodedContactUri(info.lookupUri)) {
createNewContactButtonView.setTag(
@@ -811,8 +659,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
callWithNoteButtonView.setVisibility(
supportsCallSubject && !isVoicemailNumber && info != null ? View.VISIBLE : View.GONE);
- callComposeButtonView.setVisibility(isCallComposerCapable ? View.VISIBLE : View.GONE);
-
updateBlockReportActions(canPlaceCallToNumber, isVoicemailNumber);
}
@@ -825,13 +671,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
return false;
}
- private boolean showDuoPrimaryButton() {
- Duo duo = DuoComponent.get(context).getDuo();
- return accountHandle != null
- && duo.isDuoAccount(accountHandle)
- && duo.isReachable(context, number);
- }
-
private static boolean hasDialableChar(CharSequence number) {
if (TextUtils.isEmpty(number)) {
return false;
@@ -873,8 +712,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
*
If the action views have never been shown yet for this view, inflate the view stub.
*/
public void showActions(boolean show) {
- showOrHideVoicemailTranscriptionView(show);
-
if (show) {
if (!isLoaded) {
// a bug for some unidentified reason showActions() can be called before the item is
@@ -887,63 +724,91 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
return;
}
+ TransitionManager.beginDelayedTransition((ViewGroup) rootView);
// Inflate the view stub if necessary, and wire up the event handlers.
inflateActionViewStub();
bindActionButtons();
- actionsView.setVisibility(View.VISIBLE);
- actionsView.setAlpha(1.0f);
+ animateActions(true);
+ TransitionManager.endTransitions((ViewGroup) rootView);
} else {
+ TransitionManager.beginDelayedTransition((ViewGroup) rootView);
// When recycling a view, it is possible the actionsView ViewStub was previously
// inflated so we should hide it in this case.
if (actionsView != null) {
- actionsView.setVisibility(View.GONE);
+ animateActions(false);
}
+ TransitionManager.endTransitions((ViewGroup) rootView);
}
-
updatePrimaryActionButton(show);
}
- private void showOrHideVoicemailTranscriptionView(boolean isExpanded) {
- if (callType != Calls.VOICEMAIL_TYPE) {
- return;
- }
-
- View transcriptContainerView = phoneCallDetailsViews.transcriptionView;
- TextView transcriptView = phoneCallDetailsViews.voicemailTranscriptionView;
- TextView transcriptBrandingView = phoneCallDetailsViews.voicemailTranscriptionBrandingView;
- if (!isExpanded) {
- transcriptContainerView.setVisibility(View.GONE);
+ private void animateActions(boolean shouldExpand) {
+ boolean isExpanded = actionsView.getVisibility() == View.VISIBLE;
+ if (shouldExpand == isExpanded) {
return;
}
-
- boolean show = false;
- if (TextUtils.isEmpty(transcriptView.getText())) {
- transcriptView.setVisibility(View.GONE);
- } else {
- transcriptView.setVisibility(View.VISIBLE);
- show = true;
- }
- if (TextUtils.isEmpty(transcriptBrandingView.getText())) {
- transcriptBrandingView.setVisibility(View.GONE);
+ Resources res = context.getResources();
+ actionsView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
+ int currentHeight = callLogEntryView.getMeasuredHeight();
+ int additionalHeight = actionsView.getMeasuredHeight();
+
+ int targetHeight;
+ int colorFrom, colorTo;
+ TimeInterpolator interpolator;
+ int targetVisibility;
+ float targetElevation;
+ if (shouldExpand) {
+ targetHeight = currentHeight + additionalHeight;
+ colorFrom = res.getColor(android.R.color.transparent, context.getTheme());
+ colorTo = res.getColor(R.color.cardBackgroundColor, context.getTheme());
+ interpolator = new AccelerateDecelerateInterpolator();
+ targetVisibility = View.VISIBLE;
+ targetElevation = 4f;
} else {
- transcriptBrandingView.setVisibility(View.VISIBLE);
- show = true;
- }
- if (show) {
- transcriptContainerView.setVisibility(View.VISIBLE);
- } else {
- transcriptContainerView.setVisibility(View.GONE);
- }
+ targetHeight = currentHeight - additionalHeight;
+ colorFrom = res.getColor(R.color.cardBackgroundColor, context.getTheme());
+ colorTo = res.getColor(android.R.color.transparent, context.getTheme());
+ interpolator = new DecelerateInterpolator();
+ targetVisibility = View.GONE;
+ targetElevation = 0f;
+ // need to do this before animating, otherwise the color changes are weird
+ callLogEntryView.setCardElevation(targetElevation);
+ }
+
+ ValueAnimator heightAnimator = ValueAnimator.ofInt(currentHeight, targetHeight);
+ heightAnimator.addUpdateListener(animation -> {
+ callLogEntryView.getLayoutParams().height = (int) animation.getAnimatedValue();
+ callLogEntryView.requestLayout();
+ });
+ heightAnimator.setInterpolator(interpolator);
+ heightAnimator.setDuration(200);
+
+ ValueAnimator colorAnimator = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo);
+ colorAnimator.setDuration(200);
+ colorAnimator.addUpdateListener(animator -> callLogEntryView.setCardBackgroundColor(
+ (int) animator.getAnimatedValue()));
+
+ AnimatorSet animatorSet = new AnimatorSet();
+ animatorSet.playTogether(heightAnimator, colorAnimator);
+ animatorSet.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ super.onAnimationEnd(animation);
+ actionsView.setVisibility(targetVisibility);
+ callLogEntryView.setCardElevation(targetElevation);
+
+ // we need to set this so we can expand again
+ ViewGroup.LayoutParams params = callLogEntryView.getLayoutParams();
+ params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
+ callLogEntryView.setLayoutParams(params);
+ }
+ });
+ animatorSet.start();
}
public void updatePhoto() {
quickContactView.assignContactUri(info.lookupUri);
- if (isSpamFeatureEnabled && isSpam) {
- quickContactView.setImageDrawable(context.getDrawable(R.drawable.blocked_contact));
- return;
- }
-
final String displayName = TextUtils.isEmpty(info.name) ? displayNumber : info.name;
ContactPhotoManager.getInstance(context)
.loadDialerThumbnailOrPhoto(
@@ -971,7 +836,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
}
if (view.getId() == R.id.primary_action_button && !TextUtils.isEmpty(voicemailUri)) {
- Logger.get(context).logImpression(DialerImpression.Type.VOICEMAIL_PLAY_AUDIO_DIRECTLY);
voicemailPrimaryActionButtonClicked = true;
expandCollapseListener.onClick(primaryActionView);
return;
@@ -994,68 +858,38 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
}
if (view.getId() == R.id.block_report_action) {
- Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_BLOCK_REPORT_SPAM);
- maybeShowBlockNumberMigrationDialog(
- new BlockedNumbersMigrator.Listener() {
- @Override
- public void onComplete() {
- blockReportListener.onBlockReportSpam(
- displayNumber, number, countryIso, callType, info.sourceType);
- }
- });
+ blockReportListener.onBlockReportSpam(
+ displayNumber, number, countryIso, callType, info.sourceType);
return;
}
if (view.getId() == R.id.block_action) {
- Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_BLOCK_NUMBER);
- maybeShowBlockNumberMigrationDialog(
- new BlockedNumbersMigrator.Listener() {
- @Override
- public void onComplete() {
- blockReportListener.onBlock(
- displayNumber, number, countryIso, callType, info.sourceType);
- }
- });
+ blockReportListener.onBlock(
+ displayNumber, number, countryIso, callType, info.sourceType);
return;
}
if (view.getId() == R.id.unblock_action) {
- Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_UNBLOCK_NUMBER);
blockReportListener.onUnblock(
- displayNumber, number, countryIso, callType, info.sourceType, isSpam, blockId);
+ displayNumber, number, countryIso, callType, info.sourceType, isSpam);
return;
}
if (view.getId() == R.id.report_not_spam_action) {
- Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_REPORT_AS_NOT_SPAM);
blockReportListener.onReportNotSpam(
displayNumber, number, countryIso, callType, info.sourceType);
return;
}
- if (view.getId() == R.id.call_compose_action) {
- LogUtil.i("CallLogListItemViewHolder.onClick", "share and call pressed");
- Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_SHARE_AND_CALL);
- Activity activity = (Activity) context;
- activity.startActivityForResult(
- CallComposerActivity.newIntent(activity, buildContact()),
- ActivityRequestCodes.DIALTACTS_CALL_COMPOSER);
- return;
- }
-
if (view.getId() == R.id.share_voicemail) {
- Logger.get(context).logImpression(DialerImpression.Type.VVM_SHARE_PRESSED);
voicemailPlaybackPresenter.shareVoicemail();
return;
}
- logCallLogAction(view.getId());
-
final IntentProvider intentProvider = (IntentProvider) view.getTag();
if (intentProvider == null) {
return;
}
- intentProvider.logInteraction(context);
final Intent intent = intentProvider.getClickIntent(context);
// See IntentProvider.getCallDetailIntentProvider() for why this may be null.
@@ -1063,14 +897,12 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
return;
}
if (OldCallDetailsActivity.isLaunchIntent(intent)) {
- PerformanceReport.recordClick(UiAction.Type.OPEN_CALL_DETAIL);
((Activity) context)
.startActivityForResult(intent, ActivityRequestCodes.DIALTACTS_CALL_DETAILS);
} else {
if (Intent.ACTION_CALL.equals(intent.getAction())
&& intent.getIntExtra(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, -1)
== VideoProfile.STATE_BIDIRECTIONAL) {
- Logger.get(context).logImpression(DialerImpression.Type.IMS_VIDEO_REQUESTED_FROM_CALL_LOG);
}
DialerUtils.startActivityWithErrorToast(context, intent);
@@ -1089,13 +921,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
return false;
}
- private static boolean isNonContactEntry(ContactInfo info) {
- if (info == null || info.sourceType != Type.SOURCE_TYPE_DIRECTORY) {
- return true;
- }
- return false;
- }
-
private DialerContact buildContact() {
DialerContact.Builder contact = DialerContact.newBuilder();
contact.setPhotoId(info.photoId);
@@ -1134,52 +959,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
return contact.build();
}
- private void logCallLogAction(int id) {
- if (id == R.id.send_message_action) {
- Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_SEND_MESSAGE);
- } else if (id == R.id.add_to_existing_contact_action) {
- Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_ADD_TO_CONTACT);
- switch (hostUi) {
- case HostUi.CALL_HISTORY:
- Logger.get(context)
- .logImpression(DialerImpression.Type.ADD_TO_A_CONTACT_FROM_CALL_HISTORY);
- break;
- case HostUi.CALL_LOG:
- Logger.get(context).logImpression(DialerImpression.Type.ADD_TO_A_CONTACT_FROM_CALL_LOG);
- break;
- case HostUi.VOICEMAIL:
- Logger.get(context).logImpression(DialerImpression.Type.ADD_TO_A_CONTACT_FROM_VOICEMAIL);
- break;
- default:
- throw Assert.createIllegalStateFailException();
- }
- } else if (id == R.id.create_new_contact_action) {
- Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_CREATE_NEW_CONTACT);
- switch (hostUi) {
- case HostUi.CALL_HISTORY:
- Logger.get(context)
- .logImpression(DialerImpression.Type.CREATE_NEW_CONTACT_FROM_CALL_HISTORY);
- break;
- case HostUi.CALL_LOG:
- Logger.get(context).logImpression(DialerImpression.Type.CREATE_NEW_CONTACT_FROM_CALL_LOG);
- break;
- case HostUi.VOICEMAIL:
- Logger.get(context)
- .logImpression(DialerImpression.Type.CREATE_NEW_CONTACT_FROM_VOICEMAIL);
- break;
- default:
- throw Assert.createIllegalStateFailException();
- }
- }
- }
-
- private void maybeShowBlockNumberMigrationDialog(BlockedNumbersMigrator.Listener listener) {
- if (!FilteredNumberCompat.maybeShowBlockNumberMigrationDialog(
- context, ((Activity) context).getFragmentManager(), listener)) {
- listener.onComplete();
- }
- }
-
private void updateBlockReportActions(boolean canPlaceCallToNumber, boolean isVoicemailNumber) {
// Set block/spam actions.
blockReportView.setVisibility(View.GONE);
@@ -1189,24 +968,15 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
if (!canPlaceCallToNumber
|| isVoicemailNumber
- || !FilteredNumbersUtil.canBlockNumber(context, e164Number, number)
- || !FilteredNumberCompat.canAttemptBlockOperations(context)) {
+ || !BlockedNumberContract.canCurrentUserBlockNumbers(context)
+ || PhoneNumberUtils.isEmergencyNumber(e164Number)) {
return;
}
- boolean isBlocked = blockId != null;
+
if (isBlocked) {
unblockView.setVisibility(View.VISIBLE);
} else {
- if (isSpamFeatureEnabled) {
- if (isSpam) {
- blockView.setVisibility(View.VISIBLE);
- reportNotSpamView.setVisibility(View.VISIBLE);
- } else {
- blockReportView.setVisibility(View.VISIBLE);
- }
- } else {
- blockView.setVisibility(View.VISIBLE);
- }
+ blockView.setVisibility(View.VISIBLE);
}
}
@@ -1214,11 +984,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
this.callDetailsEntries = callDetailsEntries;
}
- @VisibleForTesting
- public CallDetailsEntries getDetailedPhoneDetails() {
- return callDetailsEntries;
- }
-
@Override
public void onCreateContextMenu(
final ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
@@ -1257,24 +1022,13 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
.setOnMenuItemClickListener(this);
}
- if (callType == CallLog.Calls.VOICEMAIL_TYPE
- && phoneCallDetailsViews.voicemailTranscriptionView.length() > 0) {
- menu.add(
- ContextMenu.NONE,
- R.id.context_menu_copy_transcript_to_clipboard,
- ContextMenu.NONE,
- R.string.copy_transcript_text)
- .setOnMenuItemClickListener(this);
- }
-
String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
boolean isVoicemailNumber = callLogCache.isVoicemailNumber(accountHandle, number);
boolean canPlaceCallToNumber = PhoneNumberHelper.canPlaceCallsTo(number, numberPresentation);
if (canPlaceCallToNumber
&& !isVoicemailNumber
- && FilteredNumbersUtil.canBlockNumber(context, e164Number, number)
- && FilteredNumberCompat.canAttemptBlockOperations(context)) {
- boolean isBlocked = blockId != null;
+ && BlockedNumberContract.canCurrentUserBlockNumbers(context)
+ && !PhoneNumberUtils.isEmergencyNumber(e164Number)) {
if (isBlocked) {
menu.add(
ContextMenu.NONE,
@@ -1283,36 +1037,12 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
R.string.call_log_action_unblock_number)
.setOnMenuItemClickListener(this);
} else {
- if (isSpamFeatureEnabled) {
- if (isSpam) {
- menu.add(
- ContextMenu.NONE,
- R.id.context_menu_report_not_spam,
- ContextMenu.NONE,
- R.string.call_log_action_remove_spam)
- .setOnMenuItemClickListener(this);
- menu.add(
- ContextMenu.NONE,
- R.id.context_menu_block,
- ContextMenu.NONE,
- R.string.call_log_action_block_number)
- .setOnMenuItemClickListener(this);
- } else {
- menu.add(
- ContextMenu.NONE,
- R.id.context_menu_block_report_spam,
- ContextMenu.NONE,
- R.string.call_log_action_block_report_number)
- .setOnMenuItemClickListener(this);
- }
- } else {
- menu.add(
- ContextMenu.NONE,
- R.id.context_menu_block,
- ContextMenu.NONE,
- R.string.call_log_action_block_number)
- .setOnMenuItemClickListener(this);
- }
+ menu.add(
+ ContextMenu.NONE,
+ R.id.context_menu_block,
+ ContextMenu.NONE,
+ R.string.call_log_action_block_number)
+ .setOnMenuItemClickListener(this);
}
}
@@ -1320,8 +1050,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
menu.add(ContextMenu.NONE, R.id.context_menu_delete, ContextMenu.NONE, R.string.delete)
.setOnMenuItemClickListener(this);
}
-
- Logger.get(context).logScreenView(ScreenEvent.Type.CALL_LOG_CONTEXT_MENU, (Activity) context);
}
/** Specifies where the view holder belongs. */
@@ -1355,8 +1083,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
String countryIso,
int callType,
ContactSource.Type contactSourceType,
- boolean isSpam,
- Integer blockId);
+ boolean isSpam);
void onReportNotSpam(
String displayNumber,
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
index 03b824eb6344f281712abf4032f386a89607b8c0..60d82f69bc3572bbaa6df8555d81fd9bbd0eaf7f 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
@@ -23,39 +23,31 @@ import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
-import android.os.Build;
import android.provider.CallLog.Calls;
import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
import android.support.v4.os.UserManagerCompat;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
import com.android.dialer.app.R;
import com.android.dialer.calllogutils.PhoneNumberDisplayUtil;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.database.Selection;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.configprovider.ConfigProviderComponent;
import com.android.dialer.location.GeoUtil;
import com.android.dialer.phonenumbercache.ContactInfo;
import com.android.dialer.phonenumbercache.ContactInfoHelper;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import com.android.dialer.util.PermissionsUtil;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
/** Helper class operating on call log notifications. */
public class CallLogNotificationsQueryHelper {
-
- @VisibleForTesting
- static final String CONFIG_NEW_VOICEMAIL_NOTIFICATION_THRESHOLD_OFFSET =
- "new_voicemail_notification_threshold";
-
private final Context context;
private final NewCallsQuery newCallsQuery;
private final ContactInfoHelper contactInfoHelper;
@@ -164,11 +156,7 @@ public class CallLogNotificationsQueryHelper {
public List getNewVoicemails() {
return newCallsQuery.query(
Calls.VOICEMAIL_TYPE,
- System.currentTimeMillis()
- - ConfigProviderComponent.get(context)
- .getConfigProvider()
- .getLong(
- CONFIG_NEW_VOICEMAIL_NOTIFICATION_THRESHOLD_OFFSET, TimeUnit.DAYS.toMillis(7)));
+ System.currentTimeMillis() - TimeUnit.DAYS.toMillis(7));
}
/**
@@ -270,10 +258,8 @@ public class CallLogNotificationsQueryHelper {
public final int numberPresentation;
public final String accountComponentName;
public final String accountId;
- public final String transcription;
public final String countryIso;
public final long dateMs;
- public final int transcriptionState;
public NewCall(
Uri callsUri,
@@ -282,20 +268,16 @@ public class CallLogNotificationsQueryHelper {
int numberPresentation,
String accountComponentName,
String accountId,
- String transcription,
String countryIso,
- long dateMs,
- int transcriptionState) {
+ long dateMs) {
this.callsUri = callsUri;
this.voicemailUri = voicemailUri;
this.number = number;
this.numberPresentation = numberPresentation;
this.accountComponentName = accountComponentName;
this.accountId = accountId;
- this.transcription = transcription;
this.countryIso = countryIso;
this.dateMs = dateMs;
- this.transcriptionState = transcriptionState;
}
}
@@ -312,30 +294,18 @@ public class CallLogNotificationsQueryHelper {
Calls.NUMBER_PRESENTATION,
Calls.PHONE_ACCOUNT_COMPONENT_NAME,
Calls.PHONE_ACCOUNT_ID,
- Calls.TRANSCRIPTION,
Calls.COUNTRY_ISO,
Calls.DATE
};
- private static final String[] PROJECTION_O;
-
- static {
- List list = new ArrayList<>();
- list.addAll(Arrays.asList(PROJECTION));
- list.add(VoicemailCompat.TRANSCRIPTION_STATE);
- PROJECTION_O = list.toArray(new String[list.size()]);
- }
-
private static final int ID_COLUMN_INDEX = 0;
private static final int NUMBER_COLUMN_INDEX = 1;
private static final int VOICEMAIL_URI_COLUMN_INDEX = 2;
private static final int NUMBER_PRESENTATION_COLUMN_INDEX = 3;
private static final int PHONE_ACCOUNT_COMPONENT_NAME_COLUMN_INDEX = 4;
private static final int PHONE_ACCOUNT_ID_COLUMN_INDEX = 5;
- private static final int TRANSCRIPTION_COLUMN_INDEX = 6;
- private static final int COUNTRY_ISO_COLUMN_INDEX = 7;
- private static final int DATE_COLUMN_INDEX = 8;
- private static final int TRANSCRIPTION_STATE_COLUMN_INDEX = 9;
+ private static final int COUNTRY_ISO_COLUMN_INDEX = 6;
+ private static final int DATE_COLUMN_INDEX = 7;
private final ContentResolver contentResolver;
private final Context context;
@@ -389,7 +359,7 @@ public class CallLogNotificationsQueryHelper {
try (Cursor cursor =
contentResolver.query(
Calls.CONTENT_URI_WITH_VOICEMAIL,
- (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) ? PROJECTION_O : PROJECTION,
+ PROJECTION,
selection.getSelection(),
selection.getSelectionArgs(),
Calls.DEFAULT_SORT_ORDER)) {
@@ -428,7 +398,7 @@ public class CallLogNotificationsQueryHelper {
try (Cursor cursor =
contentResolver.query(
Calls.CONTENT_URI_WITH_VOICEMAIL,
- (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) ? PROJECTION_O : PROJECTION,
+ PROJECTION,
selection.getSelection(),
selection.getSelectionArgs(),
null)) {
@@ -456,12 +426,8 @@ public class CallLogNotificationsQueryHelper {
cursor.getInt(NUMBER_PRESENTATION_COLUMN_INDEX),
cursor.getString(PHONE_ACCOUNT_COMPONENT_NAME_COLUMN_INDEX),
cursor.getString(PHONE_ACCOUNT_ID_COLUMN_INDEX),
- cursor.getString(TRANSCRIPTION_COLUMN_INDEX),
cursor.getString(COUNTRY_ISO_COLUMN_INDEX),
- cursor.getLong(DATE_COLUMN_INDEX),
- Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
- ? cursor.getInt(TRANSCRIPTION_STATE_COLUMN_INDEX)
- : VoicemailCompat.TRANSCRIPTION_NOT_STARTED);
+ cursor.getLong(DATE_COLUMN_INDEX));
}
}
}
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
index d84bd425b14278de8030c51085636547db7784a8..947dd0213a881450645a340d4339edc1ab110d0e 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
@@ -21,11 +21,12 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
import com.android.dialer.app.voicemail.LegacyVoicemailNotificationReceiver;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
@@ -51,15 +52,13 @@ import com.android.dialer.util.PermissionsUtil;
*/
public class CallLogNotificationsService extends IntentService {
- @VisibleForTesting
- static final String ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD =
+ private static final String ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD =
"com.android.dialer.calllog.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD";
private static final String ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD =
"com.android.dialer.calllog.ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD ";
- @VisibleForTesting
- static final String ACTION_CANCEL_ALL_MISSED_CALLS =
+ private static final String ACTION_CANCEL_ALL_MISSED_CALLS =
"com.android.dialer.calllog.ACTION_CANCEL_ALL_MISSED_CALLS";
private static final String ACTION_CANCEL_SINGLE_MISSED_CALL =
@@ -104,7 +103,7 @@ public class CallLogNotificationsService extends IntentService {
}
public static PendingIntent createMarkSingleNewVoicemailAsOldIntent(
- @NonNull Context context, @Nullable Uri voicemailUri) {
+ @NonNull Context context, @Nullable Uri voicemailUri) {
Intent intent = new Intent(context, CallLogNotificationsService.class);
intent.setAction(CallLogNotificationsService.ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD);
intent.setData(voicemailUri);
diff --git a/java/com/android/dialer/app/calllog/CallLogReceiver.java b/java/com/android/dialer/app/calllog/CallLogReceiver.java
index 654436c073c4777beabc063499f356e3feb63e37..5d8d13039e711643e74b2cd8c8c7c2fceb93e3c0 100644
--- a/java/com/android/dialer/app/calllog/CallLogReceiver.java
+++ b/java/com/android/dialer/app/calllog/CallLogReceiver.java
@@ -23,8 +23,6 @@ import android.database.Cursor;
import android.provider.VoicemailContract;
import com.android.dialer.common.LogUtil;
import com.android.dialer.database.CallLogQueryHandler;
-import com.android.dialer.voicemail.listui.error.VoicemailStatusCorruptionHandler;
-import com.android.dialer.voicemail.listui.error.VoicemailStatusCorruptionHandler.Source;
/**
* Receiver for call log events.
@@ -55,8 +53,7 @@ public class CallLogReceiver extends BroadcastReceiver {
new CallLogQueryHandler.Listener() {
@Override
public void onVoicemailStatusFetched(Cursor statusCursor) {
- VoicemailStatusCorruptionHandler.maybeFixVoicemailStatus(
- context, statusCursor, Source.Notification);
+ // Do nothing
}
@Override
diff --git a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
index bea06d31ab05131ee4e5f183bd8c66898e3bed78..faece65b6d0d970d7f48097d36455610ba200f1d 100644
--- a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
+++ b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
@@ -26,14 +26,15 @@ import android.content.Context;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.provider.CallLog.Calls;
-import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
+
+import androidx.annotation.Nullable;
+
import com.android.dialer.app.R;
import com.android.dialer.common.Assert;
import com.android.dialer.common.concurrent.DialerExecutor;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
import com.android.dialer.phonenumbercache.CachedNumberLookupService;
import com.android.dialer.phonenumbercache.PhoneNumberCache;
@@ -119,20 +120,8 @@ public class ClearCallLogDialog extends DialogFragment {
return;
}
- maybeShowEnrichedCallSnackbar(activity);
-
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
-
- private void maybeShowEnrichedCallSnackbar(Activity activity) {
- if (EnrichedCallComponent.get(activity).getEnrichedCallManager().hasStoredData()) {
- Snackbar.make(
- activity.findViewById(R.id.calllog_frame),
- activity.getString(R.string.multiple_ec_data_deleted),
- 5_000)
- .show();
- }
- }
}
diff --git a/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java b/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java
index 81aed8baa8676db066b62df716224d78ae324299..ef61aac9d49e3469ce800e94c91f1ae3b6ef34f5 100644
--- a/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java
+++ b/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java
@@ -21,8 +21,6 @@ import android.util.AttributeSet;
import android.view.View;
import android.widget.QuickContactBadge;
import com.android.dialer.app.calllog.CallLogAdapter.OnActionModeStateChangedListener;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
/** Allows us to click the contact badge for non multi select mode. */
class DialerQuickContactBadge extends QuickContactBadge {
@@ -46,8 +44,6 @@ class DialerQuickContactBadge extends QuickContactBadge {
public void onClick(View v) {
if (extraOnClickListener != null
&& onActionModeStateChangeListener.isActionModeStateEnabled()) {
- Logger.get(v.getContext())
- .logImpression(DialerImpression.Type.MULTISELECT_SINGLE_PRESS_TAP_VIA_CONTACT_BADGE);
extraOnClickListener.onClick(v);
} else {
super.onClick(v);
diff --git a/java/com/android/dialer/app/calllog/IntentProvider.java b/java/com/android/dialer/app/calllog/IntentProvider.java
index 4c5a98b3a9020a72c8403ff2ee2d94e072761571..f80e0d8692efc53b8e5d2ae1050ad182e9143acc 100644
--- a/java/com/android/dialer/app/calllog/IntentProvider.java
+++ b/java/com/android/dialer/app/calllog/IntentProvider.java
@@ -21,7 +21,6 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.provider.ContactsContract;
-import android.support.annotation.Nullable;
import android.telecom.PhoneAccountHandle;
import android.telephony.TelephonyManager;
import com.android.contacts.common.model.Contact;
@@ -32,9 +31,6 @@ import com.android.dialer.calldetails.OldCallDetailsActivity;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.dialercontact.DialerContact;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
import com.android.dialer.precall.PreCall;
import com.android.dialer.util.IntentUtil;
import java.util.ArrayList;
@@ -103,72 +99,6 @@ public abstract class IntentProvider {
};
}
- public static IntentProvider getDuoVideoIntentProvider(String number, boolean isNonContact) {
- return new IntentProvider() {
- @Override
- public Intent getClickIntent(Context context) {
- return PreCall.getIntent(
- context,
- new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG)
- .setIsDuoCall(true)
- .setIsVideoCall(true));
- }
-
- @Override
- public void logInteraction(Context context) {
- Logger.get(context)
- .logImpression(DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FROM_CALL_LOG);
- if (isNonContact) {
- Logger.get(context)
- .logImpression(
- DialerImpression.Type.LIGHTBRINGER_NON_CONTACT_VIDEO_REQUESTED_FROM_CALL_LOG);
- }
- }
- };
- }
-
- public static IntentProvider getInstallDuoIntentProvider() {
- return new IntentProvider() {
- @Override
- public Intent getClickIntent(Context context) {
- return DuoComponent.get(context).getDuo().getInstallDuoIntent().orNull();
- }
-
- @Override
- public void logInteraction(Context context) {
- Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_INSTALL);
- }
- };
- }
-
- public static IntentProvider getSetUpDuoIntentProvider() {
- return new IntentProvider() {
- @Override
- public Intent getClickIntent(Context context) {
- return DuoComponent.get(context).getDuo().getActivateIntent().orNull();
- }
-
- @Override
- public void logInteraction(Context context) {
- Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_ACTIVATE);
- }
- };
- }
-
- public static IntentProvider getDuoInviteIntentProvider(String number) {
- return new IntentProvider() {
- @Override
- public Intent getClickIntent(Context context) {
- return DuoComponent.get(context).getDuo().getInviteIntent(number).orNull();
- }
-
- @Override
- public void logInteraction(Context context) {
- Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_INVITE);
- }
- };
- }
-
public static IntentProvider getReturnVoicemailCallIntentProvider() {
return new IntentProvider() {
@Override
@@ -286,5 +216,4 @@ public abstract class IntentProvider {
public Intent getLongClickIntent(Context context) {
return null;
}
- public void logInteraction(Context context) {}
}
diff --git a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
index 62ae748ded4354a817a5399de811e16a729688d8..c92177ee7f12e6a65ae98644ec39c3d16c66acdc 100644
--- a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
+++ b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
@@ -16,20 +16,19 @@
package com.android.dialer.app.calllog;
-import android.annotation.TargetApi;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Context;
-import android.os.Build.VERSION_CODES;
import android.os.PersistableBundle;
-import android.support.annotation.NonNull;
-import android.support.v4.os.BuildCompat;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telephony.CarrierConfigManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+
import com.android.dialer.app.R;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
@@ -41,7 +40,6 @@ import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.theme.base.ThemeComponent;
/** Shows a notification in the status bar for legacy vociemail. */
-@TargetApi(VERSION_CODES.O)
public final class LegacyVoicemailNotifier {
private static final String NOTIFICATION_TAG_PREFIX = "LegacyVoicemail_";
private static final String NOTIFICATION_TAG = "LegacyVoicemail";
@@ -62,7 +60,6 @@ public final class LegacyVoicemailNotifier {
boolean isRefresh) {
LogUtil.enterBlock("LegacyVoicemailNotifier.showNotification");
Assert.isNotNull(handle);
- Assert.checkArgument(BuildCompat.isAtLeastO());
TelephonyManager pinnedTelephonyManager =
context.getSystemService(TelephonyManager.class).createForPhoneAccountHandle(handle);
@@ -159,7 +156,6 @@ public final class LegacyVoicemailNotifier {
public static void cancelNotification(
@NonNull Context context, @NonNull PhoneAccountHandle phoneAccountHandle) {
LogUtil.enterBlock("LegacyVoicemailNotifier.cancelNotification");
- Assert.checkArgument(BuildCompat.isAtLeastO());
Assert.isNotNull(phoneAccountHandle);
if ("null".equals(phoneAccountHandle.getId())) {
// while PhoneAccountHandle itself will never be null, telephony may still construct a "null"
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java b/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java
index f24b3cd9823185b2ac54e1a3efe6061f891d4d8f..2ec1a533077524f82b8950968eb813cb5abce963 100644
--- a/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java
+++ b/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java
@@ -22,7 +22,6 @@ import android.content.Intent;
import android.support.v4.util.Pair;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import me.leolin.shortcutbadger.ShortcutBadger;
/**
* Receives broadcasts that should trigger a refresh of the missed call notification. This includes
@@ -63,7 +62,6 @@ public class MissedCallNotificationReceiver extends BroadcastReceiver {
LogUtil.i(
"MissedCallNotificationReceiver.onReceive",
"update missed call notifications successful");
- updateBadgeCount(context, count);
pendingResult.finish();
})
.onFailure(
@@ -76,13 +74,4 @@ public class MissedCallNotificationReceiver extends BroadcastReceiver {
.build()
.executeParallel(new Pair<>(count, phoneNumber));
}
-
- private static void updateBadgeCount(Context context, int count) {
- boolean success = ShortcutBadger.applyCount(context, count);
- LogUtil.i(
- "MissedCallNotificationReceiver.updateBadgeCount",
- "update badge count: %d success: %b",
- count,
- success);
- }
}
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotifier.java b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
index f2d2af8344992f09f1def181bf6c0588c2be5443..c4acd14bcbae389e24e3212ad6aa24708a5ca2cd 100644
--- a/java/com/android/dialer/app/calllog/MissedCallNotifier.java
+++ b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
@@ -29,11 +29,6 @@ import android.graphics.drawable.Icon;
import android.net.Uri;
import android.provider.CallLog.Calls;
import android.service.notification.StatusBarNotification;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
-import android.support.v4.os.BuildCompat;
import android.support.v4.os.UserManagerCompat;
import android.support.v4.util.Pair;
import android.telecom.PhoneAccount;
@@ -44,6 +39,11 @@ import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils;
import android.util.ArraySet;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
import com.android.contacts.common.ContactsUtils;
import com.android.dialer.app.MainComponent;
import com.android.dialer.app.R;
@@ -51,12 +51,8 @@ import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall;
import com.android.dialer.app.contactinfo.ContactPhotoLoader;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.enrichedcall.FuzzyPhoneNumberMatcher;
import com.android.dialer.notification.DialerNotificationManager;
import com.android.dialer.notification.NotificationChannelId;
import com.android.dialer.notification.missedcalls.MissedCallConstants;
@@ -78,8 +74,7 @@ public class MissedCallNotifier implements Worker, Void> {
private final Context context;
private final CallLogNotificationsQueryHelper callLogNotificationsQueryHelper;
- @VisibleForTesting
- MissedCallNotifier(
+ private MissedCallNotifier(
Context context, CallLogNotificationsQueryHelper callLogNotificationsQueryHelper) {
this.context = context;
this.callLogNotificationsQueryHelper = callLogNotificationsQueryHelper;
@@ -105,7 +100,6 @@ public class MissedCallNotifier implements Worker, Void> {
* @param number the phone number of the most recent call to display if the call log cannot be
* accessed. May be null if unknown.
*/
- @VisibleForTesting
@WorkerThread
void updateMissedCallNotification(int count, @Nullable String number) {
LogUtil.enterBlock("MissedCallNotifier.updateMissedCallNotification");
@@ -163,9 +157,7 @@ public class MissedCallNotifier implements Worker, Void> {
null,
null,
null,
- null,
- System.currentTimeMillis(),
- VoicemailCompat.TRANSCRIPTION_NOT_STARTED);
+ System.currentTimeMillis());
// TODO: look up caller ID that is not in contacts.
ContactInfo contactInfo =
@@ -219,10 +211,8 @@ public class MissedCallNotifier implements Worker, Void> {
CallLogNotificationsService.createCancelAllMissedCallsPendingIntent(context))
.setGroupSummary(useCallList)
.setOnlyAlertOnce(useCallList)
- .setPublicVersion(publicSummaryBuilder.build());
- if (BuildCompat.isAtLeastO()) {
- groupSummary.setChannelId(NotificationChannelId.MISSED_CALL);
- }
+ .setPublicVersion(publicSummaryBuilder.build())
+ .setChannelId(NotificationChannelId.MISSED_CALL);
Notification notification = groupSummary.build();
configureLedOnNotification(notification);
@@ -287,10 +277,6 @@ public class MissedCallNotifier implements Worker, Void> {
if (phoneAccount == null) {
continue;
}
- if (DuoComponent.get(context).getDuo().isDuoAccount(phoneAccountHandle)) {
- iterator.remove();
- continue;
- }
if (phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_SELF_MANAGED)) {
LogUtil.i(
"MissedCallNotifier.removeSelfManagedCalls",
@@ -304,28 +290,6 @@ public class MissedCallNotifier implements Worker, Void> {
return MissedCallNotificationTags.getNotificationTagForCallUri(call.callsUri);
}
- @WorkerThread
- public void insertPostCallNotification(@NonNull String number, @NonNull String note) {
- Assert.isWorkerThread();
- LogUtil.enterBlock("MissedCallNotifier.insertPostCallNotification");
- List newCalls = callLogNotificationsQueryHelper.getNewMissedCalls();
- if (newCalls != null && !newCalls.isEmpty()) {
- for (NewCall call : newCalls) {
- if (FuzzyPhoneNumberMatcher.matches(call.number, number.replace("tel:", ""))) {
- LogUtil.i("MissedCallNotifier.insertPostCallNotification", "Notification updated");
- // Update the first notification that matches our post call note sender.
- DialerNotificationManager.notify(
- context,
- getNotificationTagForCall(call),
- MissedCallConstants.NOTIFICATION_ID,
- getNotificationForCall(call, note));
- return;
- }
- }
- }
- LogUtil.i("MissedCallNotifier.insertPostCallNotification", "notification not found");
- }
-
private Notification getNotificationForCall(
@NonNull NewCall call, @Nullable String postCallMessage) {
ContactInfo contactInfo =
@@ -378,7 +342,7 @@ public class MissedCallNotifier implements Worker, Void> {
&& !TextUtils.equals(call.number, context.getString(R.string.handle_restricted))) {
builder.addAction(
new Notification.Action.Builder(
- Icon.createWithResource(context, R.drawable.ic_phone_24dp),
+ Icon.createWithResource(context, R.drawable.quantum_ic_phone_vd_theme_24),
context.getString(R.string.notification_missedCall_call_back),
createCallBackPendingIntent(call.number, call.callsUri))
.build());
@@ -386,7 +350,7 @@ public class MissedCallNotifier implements Worker, Void> {
if (!PhoneNumberHelper.isUriNumber(call.number)) {
builder.addAction(
new Notification.Action.Builder(
- Icon.createWithResource(context, R.drawable.quantum_ic_message_white_24),
+ Icon.createWithResource(context, R.drawable.quantum_ic_message_vd_theme_24),
context.getString(R.string.notification_missedCall_message),
createSendSmsFromNotificationPendingIntent(call.number, call.callsUri))
.build());
@@ -417,10 +381,8 @@ public class MissedCallNotifier implements Worker, Void> {
.setDeleteIntent(
CallLogNotificationsService.createCancelSingleMissedCallPendingIntent(
context, call.callsUri))
- .setContentIntent(createCallLogPendingIntent(call.callsUri));
- if (BuildCompat.isAtLeastO()) {
- builder.setChannelId(NotificationChannelId.MISSED_CALL);
- }
+ .setContentIntent(createCallLogPendingIntent(call.callsUri))
+ .setChannelId(NotificationChannelId.MISSED_CALL);
return builder;
}
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
index 9d04cb2c88c3a6b5d59826568278fe54910cb0d9..0ecdf061f51903992ccdaf0b34711b91486f9303 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
@@ -16,63 +16,38 @@
package com.android.dialer.app.calllog;
-import android.app.AlertDialog;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.res.Resources;
import android.graphics.Typeface;
-import android.net.Uri;
import android.provider.CallLog.Calls;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.support.v4.content.ContextCompat;
-import android.support.v4.os.BuildCompat;
import android.telecom.PhoneAccount;
-import android.telecom.PhoneAccountHandle;
import android.telephony.PhoneNumberUtils;
-import android.text.SpannableString;
import android.text.TextUtils;
import android.text.format.DateUtils;
-import android.text.method.LinkMovementMethod;
-import android.text.util.Linkify;
-import android.util.TypedValue;
-import android.view.Gravity;
import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-import android.widget.Toast;
+
import com.android.dialer.app.R;
import com.android.dialer.app.calllog.calllogcache.CallLogCache;
import com.android.dialer.calllogutils.PhoneCallDetails;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
import com.android.dialer.compat.telephony.TelephonyManagerCompat;
import com.android.dialer.logging.ContactSource;
import com.android.dialer.oem.MotorolaUtils;
import com.android.dialer.phonenumbercache.CachedNumberLookupService;
import com.android.dialer.phonenumbercache.PhoneNumberCache;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.spannable.ContentWithLearnMoreSpanner;
-import com.android.dialer.storage.StorageComponent;
import com.android.dialer.theme.base.ThemeComponent;
import com.android.dialer.util.DialerUtils;
-import com.android.voicemail.VoicemailClient;
-import com.android.voicemail.VoicemailComponent;
-import com.android.voicemail.impl.transcribe.TranscriptionRatingHelper;
-import com.google.internal.communications.voicemailtranscription.v1.TranscriptionRatingValue;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
/** Helper class to fill in the views in {@link PhoneCallDetailsViews}. */
-public class PhoneCallDetailsHelper
- implements TranscriptionRatingHelper.SuccessListener,
- TranscriptionRatingHelper.FailureListener {
+public class PhoneCallDetailsHelper {
/** The maximum number of icons will be shown to represent the call types in a group. */
private static final int MAX_CALL_TYPE_ICONS = 3;
- private static final String PREF_VOICEMAIL_DONATION_PROMO_SHOWN_KEY =
- "pref_voicemail_donation_promo_shown_key";
-
private final Context context;
private final Resources resources;
private final CallLogCache callLogCache;
@@ -80,10 +55,7 @@ public class PhoneCallDetailsHelper
private final Calendar calendar;
private final CachedNumberLookupService cachedNumberLookupService;
- /** The injected current time in milliseconds since the epoch. Used only by tests. */
- private Long currentTimeMillisForTest;
- private CharSequence phoneTypeLabelForTest;
/** List of items to be concatenated together for accessibility descriptions */
private ArrayList descriptionItems = new ArrayList<>();
@@ -102,33 +74,6 @@ public class PhoneCallDetailsHelper
cachedNumberLookupService = PhoneNumberCache.get(context).getCachedNumberLookupService();
}
- static boolean shouldShowVoicemailDonationPromo(
- Context context, PhoneAccountHandle accountHandle) {
- VoicemailClient client = VoicemailComponent.get(context).getVoicemailClient();
- return client.isVoicemailDonationAvailable(context, accountHandle)
- && !hasSeenVoicemailDonationPromo(context);
- }
-
- static boolean hasSeenVoicemailDonationPromo(Context context) {
- return StorageComponent.get(context.getApplicationContext())
- .unencryptedSharedPrefs()
- .getBoolean(PREF_VOICEMAIL_DONATION_PROMO_SHOWN_KEY, false);
- }
-
- private static int dpsToPixels(Context context, int dps) {
- return (int)
- (TypedValue.applyDimension(
- TypedValue.COMPLEX_UNIT_DIP, dps, context.getResources().getDisplayMetrics()));
- }
-
- private static void recordPromoShown(Context context) {
- StorageComponent.get(context.getApplicationContext())
- .unencryptedSharedPrefs()
- .edit()
- .putBoolean(PREF_VOICEMAIL_DONATION_PROMO_SHOWN_KEY, true)
- .apply();
- }
-
/** Returns true if primary name is empty or the data is from Cequint Caller ID. */
private boolean shouldShowLocation(PhoneCallDetails details) {
if (TextUtils.isEmpty(details.geocode)) {
@@ -173,9 +118,7 @@ public class PhoneCallDetailsHelper
views.callTypeIcons.setShowAssistedDialed(
(details.features & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING)
== TelephonyManagerCompat.FEATURES_ASSISTED_DIALING);
- if (BuildCompat.isAtLeastP()) {
- views.callTypeIcons.setShowRtt((details.features & Calls.FEATURES_RTT) == Calls.FEATURES_RTT);
- }
+ views.callTypeIcons.setShowRtt((details.features & Calls.FEATURES_RTT) == Calls.FEATURES_RTT);
views.callTypeIcons.requestLayout();
views.callTypeIcons.setVisibility(View.VISIBLE);
@@ -217,67 +160,9 @@ public class PhoneCallDetailsHelper
setNameView(views, details);
- if (isVoicemail) {
- int relevantLinkTypes = Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS | Linkify.WEB_URLS;
- views.voicemailTranscriptionView.setAutoLinkMask(relevantLinkTypes);
-
- String transcript = "";
- String branding = "";
- if (!TextUtils.isEmpty(details.transcription)) {
- transcript = details.transcription;
-
- if (details.transcriptionState == VoicemailCompat.TRANSCRIPTION_AVAILABLE
- || details.transcriptionState == VoicemailCompat.TRANSCRIPTION_AVAILABLE_AND_RATED) {
- branding = resources.getString(R.string.voicemail_transcription_branding_text);
- }
- } else {
- switch (details.transcriptionState) {
- case VoicemailCompat.TRANSCRIPTION_IN_PROGRESS:
- branding = resources.getString(R.string.voicemail_transcription_in_progress);
- break;
- case VoicemailCompat.TRANSCRIPTION_FAILED_NO_SPEECH_DETECTED:
- branding = resources.getString(R.string.voicemail_transcription_failed_no_speech);
- break;
- case VoicemailCompat.TRANSCRIPTION_FAILED_LANGUAGE_NOT_SUPPORTED:
- branding =
- resources.getString(R.string.voicemail_transcription_failed_language_not_supported);
- break;
- case VoicemailCompat.TRANSCRIPTION_FAILED:
- branding = resources.getString(R.string.voicemail_transcription_failed);
- break;
- default:
- break; // Fall through
- }
- }
-
- views.voicemailTranscriptionView.setText(transcript);
- views.voicemailTranscriptionBrandingView.setText(branding);
-
- View ratingView = views.voicemailTranscriptionRatingView;
- if (shouldShowTranscriptionRating(details.transcriptionState, details.accountHandle)) {
- ratingView.setVisibility(View.VISIBLE);
- ratingView
- .findViewById(R.id.voicemail_transcription_rating_good)
- .setOnClickListener(
- view ->
- recordTranscriptionRating(
- TranscriptionRatingValue.GOOD_TRANSCRIPTION, details, ratingView));
- ratingView
- .findViewById(R.id.voicemail_transcription_rating_bad)
- .setOnClickListener(
- view ->
- recordTranscriptionRating(
- TranscriptionRatingValue.BAD_TRANSCRIPTION, details, ratingView));
- } else {
- ratingView.setVisibility(View.GONE);
- }
- }
-
// Bold if not read
Typeface typeface = details.isRead ? Typeface.SANS_SERIF : Typeface.DEFAULT_BOLD;
views.nameView.setTypeface(typeface);
- views.voicemailTranscriptionView.setTypeface(typeface);
- views.voicemailTranscriptionBrandingView.setTypeface(typeface);
views.callLocationAndDate.setTypeface(typeface);
views.callLocationAndDate.setTextColor(
details.isRead
@@ -305,133 +190,6 @@ public class PhoneCallDetailsHelper
views.nameView.setTextDirection(View.TEXT_DIRECTION_LTR);
}
- private boolean shouldShowTranscriptionRating(
- int transcriptionState, PhoneAccountHandle account) {
- if (transcriptionState != VoicemailCompat.TRANSCRIPTION_AVAILABLE) {
- return false;
- }
-
- VoicemailClient client = VoicemailComponent.get(context).getVoicemailClient();
- if (client.isVoicemailDonationEnabled(context, account)) {
- return true;
- }
-
- // Also show the rating option if voicemail donation is available (but not enabled)
- // and the donation promo has not yet been shown.
- if (client.isVoicemailDonationAvailable(context, account)
- && !hasSeenVoicemailDonationPromo(context)) {
- return true;
- }
-
- return false;
- }
-
- private void recordTranscriptionRating(
- TranscriptionRatingValue ratingValue, PhoneCallDetails details, View ratingView) {
- LogUtil.enterBlock("PhoneCallDetailsHelper.recordTranscriptionRating");
-
- if (shouldShowVoicemailDonationPromo(context, details.accountHandle)) {
- showVoicemailDonationPromo(ratingValue, details, ratingView);
- } else {
- TranscriptionRatingHelper.sendRating(
- context,
- ratingValue,
- Uri.parse(details.voicemailUri),
- this::onRatingSuccess,
- this::onRatingFailure);
- }
- }
-
- private void showVoicemailDonationPromo(
- TranscriptionRatingValue ratingValue, PhoneCallDetails details, View ratingView) {
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setMessage(getVoicemailDonationPromoContent());
- builder.setPositiveButton(
- R.string.voicemail_donation_promo_opt_in,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(final DialogInterface dialog, final int button) {
- LogUtil.i("PhoneCallDetailsHelper.showVoicemailDonationPromo", "onClick");
- dialog.cancel();
- recordPromoShown(context);
- VoicemailComponent.get(context)
- .getVoicemailClient()
- .setVoicemailDonationEnabled(context, details.accountHandle, true);
- TranscriptionRatingHelper.sendRating(
- context,
- ratingValue,
- Uri.parse(details.voicemailUri),
- PhoneCallDetailsHelper.this::onRatingSuccess,
- PhoneCallDetailsHelper.this::onRatingFailure);
- ratingView.setVisibility(View.GONE);
- }
- });
- builder.setNegativeButton(
- R.string.voicemail_donation_promo_opt_out,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(final DialogInterface dialog, final int button) {
- VoicemailComponent.get(context)
- .getVoicemailClient()
- .setVoicemailDonationEnabled(context, details.accountHandle, false);
- dialog.cancel();
- recordPromoShown(context);
- ratingView.setVisibility(View.GONE);
- }
- });
- builder.setCancelable(true);
- AlertDialog dialog = builder.create();
-
- TextView title = new TextView(context);
- title.setText(R.string.voicemail_donation_promo_title);
-
- title.setTypeface(Typeface.create("sans-serif-medium", Typeface.NORMAL));
- title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
- title.setTextColor(ContextCompat.getColor(context, R.color.dialer_primary_text_color));
- title.setPadding(
- dpsToPixels(context, 24), /* left */
- dpsToPixels(context, 10), /* top */
- dpsToPixels(context, 24), /* right */
- dpsToPixels(context, 0)); /* bottom */
- dialog.setCustomTitle(title);
-
- dialog.show();
-
- // Make the message link clickable and adjust the appearance of the message and buttons
- TextView textView = (TextView) dialog.findViewById(android.R.id.message);
- textView.setLineSpacing(0, 1.2f);
- textView.setMovementMethod(LinkMovementMethod.getInstance());
- Button positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
- if (positiveButton != null) {
- positiveButton.setTextColor(ThemeComponent.get(context).theme().getColorPrimary());
- }
- Button negativeButton = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
- if (negativeButton != null) {
- negativeButton.setTextColor(ThemeComponent.get(context).theme().getTextColorSecondary());
- }
- }
-
- private SpannableString getVoicemailDonationPromoContent() {
- return new ContentWithLearnMoreSpanner(context)
- .create(
- context.getString(R.string.voicemail_donation_promo_content),
- context.getString(R.string.voicemail_donation_promo_learn_more_url));
- }
-
- @Override
- public void onRatingSuccess(Uri voicemailUri) {
- LogUtil.enterBlock("PhoneCallDetailsHelper.onRatingSuccess");
- Toast toast =
- Toast.makeText(context, R.string.voicemail_transcription_rating_thanks, Toast.LENGTH_LONG);
- toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 50);
- toast.show();
- }
-
- @Override
- public void onRatingFailure(Throwable t) {
- LogUtil.e("PhoneCallDetailsHelper.onRatingFailure", "failed to send rating", t);
- }
-
/**
* Builds a string containing the call location and date. For voicemail logs only the call date is
* returned because location information is displayed in the call action button
@@ -487,9 +245,7 @@ public class PhoneCallDetailsHelper
&& TextUtils.isEmpty(details.numberLabel))) {
// Get type label only if it will not be "Custom" because of an empty number label.
numberFormattedLabel =
- phoneTypeLabelForTest != null
- ? phoneTypeLabelForTest
- : Phone.getTypeLabel(resources, details.numberType, details.numberLabel);
+ Phone.getTypeLabel(resources, details.numberType, details.numberLabel);
}
}
if (!TextUtils.isEmpty(details.namePrimary) && TextUtils.isEmpty(numberFormattedLabel)) {
@@ -498,10 +254,6 @@ public class PhoneCallDetailsHelper
return numberFormattedLabel;
}
- public void setPhoneTypeLabelForTest(CharSequence phoneTypeLabel) {
- this.phoneTypeLabelForTest = phoneTypeLabel;
- }
-
/**
* Get the call date/time of the call. For the call log this is relative to the current time. e.g.
* 3 minutes ago. For voicemail, see {@link #getGranularDateTime(PhoneCallDetails)}
@@ -569,15 +321,9 @@ public class PhoneCallDetailsHelper
/**
* Returns the current time in milliseconds since the epoch.
- *
- *
It can be injected in tests using {@link #setCurrentTimeForTest(long)}.
*/
private long getCurrentTimeMillis() {
- if (currentTimeMillisForTest == null) {
- return System.currentTimeMillis();
- } else {
- return currentTimeMillisForTest;
- }
+ return System.currentTimeMillis();
}
/** Sets the call count, date, and if it is a voicemail, sets the duration. */
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java
index 71cbc8c12b692e42d3253f01f84b3913120be3aa..8ba34938d57dc92ac8f3a76754b4af859604b4e2 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java
@@ -16,7 +16,6 @@
package com.android.dialer.app.calllog;
-import android.content.Context;
import android.view.View;
import android.widget.TextView;
import com.android.dialer.app.R;
@@ -30,10 +29,6 @@ public final class PhoneCallDetailsViews {
public final View callTypeView;
public final CallTypeIconsView callTypeIcons;
public final TextView callLocationAndDate;
- public final View transcriptionView;
- public final TextView voicemailTranscriptionView;
- public final TextView voicemailTranscriptionBrandingView;
- public final View voicemailTranscriptionRatingView;
public final TextView callAccountLabel;
private PhoneCallDetailsViews(
@@ -41,19 +36,11 @@ public final class PhoneCallDetailsViews {
View callTypeView,
CallTypeIconsView callTypeIcons,
TextView callLocationAndDate,
- View transcriptionView,
- TextView voicemailTranscriptionView,
- TextView voicemailTranscriptionBrandingView,
- View voicemailTranscriptionRatingView,
TextView callAccountLabel) {
this.nameView = nameView;
this.callTypeView = callTypeView;
this.callTypeIcons = callTypeIcons;
this.callLocationAndDate = callLocationAndDate;
- this.transcriptionView = transcriptionView;
- this.voicemailTranscriptionView = voicemailTranscriptionView;
- this.voicemailTranscriptionBrandingView = voicemailTranscriptionBrandingView;
- this.voicemailTranscriptionRatingView = voicemailTranscriptionRatingView;
this.callAccountLabel = callAccountLabel;
}
@@ -70,23 +57,6 @@ public final class PhoneCallDetailsViews {
view.findViewById(R.id.call_type),
(CallTypeIconsView) view.findViewById(R.id.call_type_icons),
(TextView) view.findViewById(R.id.call_location_and_date),
- view.findViewById(R.id.transcription),
- (TextView) view.findViewById(R.id.voicemail_transcription),
- (TextView) view.findViewById(R.id.voicemail_transcription_branding),
- view.findViewById(R.id.voicemail_transcription_rating),
(TextView) view.findViewById(R.id.call_account_label));
}
-
- public static PhoneCallDetailsViews createForTest(Context context) {
- return new PhoneCallDetailsViews(
- new BidiTextView(context),
- new View(context),
- new CallTypeIconsView(context),
- new TextView(context),
- new View(context),
- new TextView(context),
- new TextView(context),
- new View(context),
- new TextView(context));
- }
}
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java b/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
index 5575cacc5703953ed37f33a3d9f1d073bf52e519..1a21b79b49f59ea3b64ada5b8c0fd00009c463be 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
@@ -24,7 +24,6 @@ import android.media.AudioManager;
import android.os.Bundle;
import android.provider.CallLog;
import android.provider.VoicemailContract;
-import android.support.annotation.VisibleForTesting;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -36,8 +35,6 @@ import com.android.dialer.common.FragmentUtils;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor;
import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.voicemail.listui.error.VoicemailErrorMessageCreator;
import com.android.dialer.voicemail.listui.error.VoicemailStatus;
@@ -171,7 +168,6 @@ public class VisualVoicemailCallLogFragment extends CallLogFragment {
super.onVisible();
if (getActivity() != null && preSyncVoicemailStatusCheckExecutor != null) {
preSyncVoicemailStatusCheckExecutor.executeParallel(getActivity());
- Logger.get(getActivity()).logImpression(DialerImpression.Type.VVM_TAB_VIEWED);
getActivity().setVolumeControlStream(VoicemailAudioManager.PLAYBACK_STREAM);
}
}
@@ -186,8 +182,7 @@ public class VisualVoicemailCallLogFragment extends CallLogFragment {
getActivity().sendBroadcast(intent);
}
- @VisibleForTesting
- boolean shouldAutoSync(
+ private boolean shouldAutoSync(
VoicemailErrorMessageCreator errorMessageCreator, List statuses) {
for (VoicemailStatus status : statuses) {
if (!status.isActive(getContext())) {
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java b/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java
index 7fc104bb2124ea9bd719674edaceef47b422b9c5..150daefb729af2a739f654df6bee454307da5313 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java
@@ -23,24 +23,20 @@ import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.support.v4.app.NotificationCompat;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telephony.TelephonyManager;
-import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.contacts.common.util.ContactDisplayUtils;
import com.android.dialer.app.MainComponent;
import com.android.dialer.app.R;
import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall;
import com.android.dialer.app.contactinfo.ContactPhotoLoader;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
import com.android.dialer.notification.DialerNotificationManager;
import com.android.dialer.notification.NotificationChannelManager;
import com.android.dialer.notification.NotificationManagerUtils;
@@ -90,19 +86,17 @@ final class VisualVoicemailNotifier {
.setGroupSummary(true)
.setContentIntent(newVoicemailIntent(context, null));
- if (VERSION.SDK_INT >= VERSION_CODES.O) {
- if (shouldAlert) {
- groupSummary.setOnlyAlertOnce(false);
- // Group summary will alert when posted/updated
- groupSummary.setGroupAlertBehavior(Notification.GROUP_ALERT_ALL);
- } else {
- // Only children will alert. but since all children are set to "only alert summary" it is
- // effectively silenced.
- groupSummary.setGroupAlertBehavior(Notification.GROUP_ALERT_CHILDREN);
- }
- PhoneAccountHandle handle = getAccountForCall(context, newCalls.get(0));
- groupSummary.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
+ if (shouldAlert) {
+ groupSummary.setOnlyAlertOnce(false);
+ // Group summary will alert when posted/updated
+ groupSummary.setGroupAlertBehavior(Notification.GROUP_ALERT_ALL);
+ } else {
+ // Only children will alert. but since all children are set to "only alert summary" it is
+ // effectively silenced.
+ groupSummary.setGroupAlertBehavior(Notification.GROUP_ALERT_CHILDREN);
}
+ PhoneAccountHandle handle = getAccountForCall(context, newCalls.get(0));
+ groupSummary.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
DialerNotificationManager.notify(
context, GROUP_SUMMARY_NOTIFICATION_TAG, NOTIFICATION_ID, groupSummary.build());
@@ -168,56 +162,14 @@ final class VisualVoicemailNotifier {
.setSound(getVoicemailRingtoneUri(context, handle))
.setDefaults(getNotificationDefaultFlags(context, handle));
- if (!TextUtils.isEmpty(voicemail.transcription)) {
- Logger.get(context)
- .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION);
- builder
- .setContentText(voicemail.transcription)
- .setStyle(new NotificationCompat.BigTextStyle().bigText(voicemail.transcription));
- } else {
- switch (voicemail.transcriptionState) {
- case VoicemailCompat.TRANSCRIPTION_IN_PROGRESS:
- Logger.get(context)
- .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_IN_PROGRESS);
- builder.setContentText(context.getString(R.string.voicemail_transcription_in_progress));
- break;
- case VoicemailCompat.TRANSCRIPTION_FAILED_NO_SPEECH_DETECTED:
- Logger.get(context)
- .logImpression(
- DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION_FAILURE);
- builder.setContentText(
- context.getString(R.string.voicemail_transcription_failed_no_speech));
- break;
- case VoicemailCompat.TRANSCRIPTION_FAILED_LANGUAGE_NOT_SUPPORTED:
- Logger.get(context)
- .logImpression(
- DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION_FAILURE);
- builder.setContentText(
- context.getString(R.string.voicemail_transcription_failed_language_not_supported));
- break;
- case VoicemailCompat.TRANSCRIPTION_FAILED:
- Logger.get(context)
- .logImpression(
- DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION_FAILURE);
- builder.setContentText(context.getString(R.string.voicemail_transcription_failed));
- break;
- default:
- Logger.get(context)
- .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_NO_TRANSCRIPTION);
- break;
- }
- }
-
if (voicemail.voicemailUri != null) {
builder.setDeleteIntent(
CallLogNotificationsService.createMarkSingleNewVoicemailAsOldIntent(
context, voicemail.voicemailUri));
}
- if (VERSION.SDK_INT >= VERSION_CODES.O) {
- builder.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
- builder.setGroupAlertBehavior(Notification.GROUP_ALERT_SUMMARY);
- }
+ builder.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
+ builder.setGroupAlertBehavior(Notification.GROUP_ALERT_SUMMARY);
ContactPhotoLoader loader = new ContactPhotoLoader(context, contactInfo);
Bitmap photoIcon = loader.loadPhotoIcon();
@@ -225,7 +177,6 @@ final class VisualVoicemailNotifier {
builder.setLargeIcon(photoIcon);
}
builder.setContentIntent(newVoicemailIntent(context, voicemail));
- Logger.get(context).logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED);
return builder.build();
}
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
index e3cc5158e8d87b68902103740f44b9c530735285..9957ae7b576c13828b82942db7cd61f14b4c7431 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
@@ -18,26 +18,27 @@ package com.android.dialer.app.calllog;
import android.content.Context;
import android.net.Uri;
+import android.provider.BlockedNumberContract;
import android.service.notification.StatusBarNotification;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
import android.text.TextUtils;
import android.util.ArrayMap;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
import com.android.dialer.app.R;
import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall;
import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.blocking.FilteredNumbersUtil;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
import com.android.dialer.notification.DialerNotificationManager;
import com.android.dialer.phonenumbercache.ContactInfo;
-import com.android.dialer.spam.SpamComponent;
import com.android.dialer.telecom.TelecomUtil;
+import com.android.dialer.util.EmergencyCallUtil;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -71,7 +72,7 @@ class VisualVoicemailUpdateTask implements Worker result = new ArrayList<>();
for (NewCall newCall : newCalls) {
- if (queryHandler.getBlockedIdSynchronous(newCall.number, newCall.countryIso) != null) {
+ if (BlockedNumberContract.canCurrentUserBlockNumbers(context)
+ && BlockedNumberContract.isBlocked(context, newCall.number)) {
LogUtil.i(
"VisualVoicemailUpdateTask.filterBlockedNumbers",
"found voicemail from blocked number, deleting");
@@ -197,30 +199,7 @@ class VisualVoicemailUpdateTask implements Worker filterSpamNumbers(Context context, List newCalls) {
Assert.isWorkerThread();
- if (!SpamComponent.get(context).spamSettings().isSpamBlockingEnabled()) {
- return newCalls;
- }
-
- List result = new ArrayList<>();
- for (NewCall newCall : newCalls) {
- Logger.get(context).logImpression(DialerImpression.Type.INCOMING_VOICEMAIL_SCREENED);
- if (SpamComponent.get(context)
- .spam()
- .checkSpamStatusSynchronous(newCall.number, newCall.countryIso)) {
- LogUtil.i(
- "VisualVoicemailUpdateTask.filterSpamNumbers",
- "found voicemail from spam number, suppressing notification");
- Logger.get(context)
- .logImpression(DialerImpression.Type.INCOMING_VOICEMAIL_AUTO_BLOCKED_AS_SPAM);
- if (newCall.voicemailUri != null) {
- // Mark auto blocked voicemail as old so that we don't process it again.
- VoicemailQueryHandler.markSingleNewVoicemailAsOld(context, newCall.voicemailUri);
- }
- } else {
- result.add(newCall);
- }
- }
- return result;
+ return newCalls;
}
/** Updates the voicemail notifications displayed. */
diff --git a/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java b/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
index 5d8144ca91761e7723f79ec8a75fb44cc071579f..cad838a553e0a6933ec8d95c57145878ad17057d 100644
--- a/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
+++ b/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
@@ -21,10 +21,12 @@ import android.content.ContentValues;
import android.content.Context;
import android.net.Uri;
import android.provider.CallLog.Calls;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.ThreadUtil;
@@ -52,7 +54,7 @@ public class VoicemailQueryHandler extends AsyncQueryHandler {
@WorkerThread
public static void markSingleNewVoicemailAsOld(
- final @NonNull Context context, final Uri voicemailUri) {
+ final @NonNull Context context, final Uri voicemailUri) {
if (voicemailUri == null) {
LogUtil.e("VoicemailQueryHandler.markSingleNewVoicemailAsOld", "voicemail URI is null");
return;
diff --git a/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java b/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java
index f45537ca813b2fe500cf0ea7b2128819561ac281..ca759af06f20c2a9dc11233233b48dd4202c6c09 100644
--- a/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java
+++ b/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java
@@ -17,10 +17,12 @@
package com.android.dialer.app.calllog.calllogcache;
import android.content.Context;
-import android.support.annotation.Nullable;
import android.telecom.PhoneAccountHandle;
import android.text.TextUtils;
import android.util.ArrayMap;
+
+import androidx.annotation.Nullable;
+
import com.android.dialer.app.calllog.CallLogAdapter;
import com.android.dialer.calllogutils.PhoneAccountUtils;
import com.android.dialer.telecom.TelecomUtil;
diff --git a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
index 3fcf40c2a949ff386e2ccdf638326e898f458767..702bacb5097cca1d02fd22ee1ae648b6e1c2a62d 100644
--- a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
+++ b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
@@ -19,9 +19,10 @@ package com.android.dialer.app.contactinfo;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+
import com.android.dialer.common.LogUtil;
import com.android.dialer.logging.ContactSource.Type;
import com.android.dialer.oem.CequintCallerIdManager;
@@ -321,12 +322,6 @@ public class ContactInfoCache {
requestProcessingDisabled = true;
}
- @VisibleForTesting
- public void injectContactInfoForTest(String number, String countryIso, ContactInfo contactInfo) {
- NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
- cache.put(numberCountryIso, contactInfo);
- }
-
public interface OnContactInfoChangedListener {
void onContactInfoChanged();
diff --git a/java/com/android/dialer/app/contactinfo/ContactInfoRequest.java b/java/com/android/dialer/app/contactinfo/ContactInfoRequest.java
index 5c2eb1dbb024366730edc7a7250c9c8de05343b6..256c9c06c4345965277c5ca90a6793c34ef627f0 100644
--- a/java/com/android/dialer/app/contactinfo/ContactInfoRequest.java
+++ b/java/com/android/dialer/app/contactinfo/ContactInfoRequest.java
@@ -16,8 +16,10 @@
package com.android.dialer.app.contactinfo;
-import android.support.annotation.IntDef;
import android.text.TextUtils;
+
+import androidx.annotation.IntDef;
+
import com.android.dialer.phonenumbercache.ContactInfo;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java b/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java
index be143bbca2a7ab679fedf30c10e8e4352d0ef334..68e42b261b50e42ad54c511e20a403714c16e3e6 100644
--- a/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java
+++ b/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java
@@ -21,10 +21,11 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
+
+import androidx.annotation.Nullable;
+
import com.android.dialer.app.R;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
@@ -66,8 +67,7 @@ public class ContactPhotoLoader {
return drawableToBitmap(getIcon(), photoSize, photoSize);
}
- @VisibleForTesting
- Drawable getIcon() {
+ private Drawable getIcon() {
Drawable drawable = createPhotoIconDrawable();
if (drawable == null) {
drawable = createLetterTileDrawable();
diff --git a/java/com/android/dialer/app/contactinfo/ExpirableCacheHeadlessFragment.java b/java/com/android/dialer/app/contactinfo/ExpirableCacheHeadlessFragment.java
index 267dc6250e5884b312f1364b6beaa804bf268ed7..72b68ffd6d0078f1df0be3077fdd0a3da5d43cc6 100644
--- a/java/com/android/dialer/app/contactinfo/ExpirableCacheHeadlessFragment.java
+++ b/java/com/android/dialer/app/contactinfo/ExpirableCacheHeadlessFragment.java
@@ -17,10 +17,12 @@
package com.android.dialer.app.contactinfo;
import android.os.Bundle;
-import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
+
+import androidx.annotation.NonNull;
+
import com.android.dialer.phonenumbercache.ContactInfo;
import com.android.dialer.util.ExpirableCache;
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
deleted file mode 100644
index 603c06fd304b4e6adf42d156556770150bccf4af..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-package com.android.dialer.app.filterednumber;
-
-import android.app.FragmentManager;
-import android.content.Context;
-import android.database.Cursor;
-import android.view.View;
-import com.android.dialer.app.R;
-import com.android.dialer.blocking.BlockNumberDialogFragment;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
-import com.android.dialer.location.GeoUtil;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.phonenumbercache.ContactInfoHelper;
-import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-
-/** TODO(calderwoodra): documentation */
-public class BlockedNumbersAdapter extends NumbersAdapter {
-
- private BlockedNumbersAdapter(
- Context context,
- FragmentManager fragmentManager,
- ContactInfoHelper contactInfoHelper,
- ContactPhotoManager contactPhotoManager) {
- super(context, fragmentManager, contactInfoHelper, contactPhotoManager);
- }
-
- public static BlockedNumbersAdapter newBlockedNumbersAdapter(
- Context context, FragmentManager fragmentManager) {
- return new BlockedNumbersAdapter(
- context,
- fragmentManager,
- new ContactInfoHelper(context, GeoUtil.getCurrentCountryIso(context)),
- ContactPhotoManager.getInstance(context));
- }
-
- @Override
- public void bindView(View view, final Context context, Cursor cursor) {
- super.bindView(view, context, cursor);
- final Integer id = cursor.getInt(cursor.getColumnIndex(FilteredNumberColumns._ID));
- final String countryIso =
- cursor.getString(cursor.getColumnIndex(FilteredNumberColumns.COUNTRY_ISO));
- final String number = cursor.getString(cursor.getColumnIndex(FilteredNumberColumns.NUMBER));
-
- final View deleteButton = view.findViewById(R.id.delete_button);
- deleteButton.setOnClickListener(
- new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- BlockNumberDialogFragment.show(
- id,
- number,
- countryIso,
- PhoneNumberHelper.formatNumber(getContext(), number, countryIso),
- R.id.blocked_numbers_activity_container,
- getFragmentManager(),
- new BlockNumberDialogFragment.Callback() {
- @Override
- public void onFilterNumberSuccess() {}
-
- @Override
- public void onUnfilterNumberSuccess() {
- Logger.get(context)
- .logInteraction(InteractionEvent.Type.UNBLOCK_NUMBER_MANAGEMENT_SCREEN);
- }
-
- @Override
- public void onChangeFilteredNumberUndo() {}
- });
- }
- });
-
- updateView(view, number, countryIso);
- }
-
- @Override
- public boolean isEmpty() {
- // Always return false, so that the header with blocking-related options always shows.
- return false;
- }
-}
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
deleted file mode 100644
index bf40fdf3acff4fdd13d6b04cafe04aec74270f81..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-package com.android.dialer.app.filterednumber;
-
-import android.app.ListFragment;
-import android.app.LoaderManager;
-import android.content.Context;
-import android.content.CursorLoader;
-import android.content.Loader;
-import android.database.Cursor;
-import android.graphics.drawable.ColorDrawable;
-import android.os.Bundle;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-import com.android.dialer.app.R;
-import com.android.dialer.blocking.BlockedNumbersMigrator;
-import com.android.dialer.blocking.BlockedNumbersMigrator.Listener;
-import com.android.dialer.blocking.FilteredNumberCompat;
-import com.android.dialer.blocking.FilteredNumbersUtil;
-import com.android.dialer.blocking.FilteredNumbersUtil.CheckForSendToVoicemailContactListener;
-import com.android.dialer.blocking.FilteredNumbersUtil.ImportSendToVoicemailContactsListener;
-import com.android.dialer.database.FilteredNumberContract;
-import com.android.dialer.lettertile.LetterTileDrawable;
-import com.android.dialer.theme.base.ThemeComponent;
-import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
-
-/** TODO(calderwoodra): documentation */
-public class BlockedNumbersFragment extends ListFragment
- implements LoaderManager.LoaderCallbacks,
- View.OnClickListener,
- VisualVoicemailEnabledChecker.Callback {
-
- private static final char ADD_BLOCKED_NUMBER_ICON_LETTER = '+';
- protected View migratePromoView;
- private BlockedNumbersMigrator blockedNumbersMigratorForTest;
- private TextView blockedNumbersText;
- private TextView footerText;
- private BlockedNumbersAdapter adapter;
- private VisualVoicemailEnabledChecker voicemailEnabledChecker;
- private View importSettings;
- private View blockedNumbersDisabledForEmergency;
- private View blockedNumberListDivider;
-
- @Override
- public Context getContext() {
- return getActivity();
- }
-
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
-
- LayoutInflater inflater =
- (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- getListView().addHeaderView(inflater.inflate(R.layout.blocked_number_header, null));
- getListView().addFooterView(inflater.inflate(R.layout.blocked_number_footer, null));
- //replace the icon for add number with LetterTileDrawable(), so it will have identical style
- LetterTileDrawable drawable = new LetterTileDrawable(getResources());
- drawable.setLetter(ADD_BLOCKED_NUMBER_ICON_LETTER);
- drawable.setColor(ThemeComponent.get(getContext()).theme().getColorIcon());
- drawable.setIsCircular(true);
-
- if (adapter == null) {
- adapter =
- BlockedNumbersAdapter.newBlockedNumbersAdapter(
- getContext(), getActivity().getFragmentManager());
- }
- setListAdapter(adapter);
-
- blockedNumbersText = (TextView) getListView().findViewById(R.id.blocked_number_text_view);
- migratePromoView = getListView().findViewById(R.id.migrate_promo);
- getListView().findViewById(R.id.migrate_promo_allow_button).setOnClickListener(this);
- importSettings = getListView().findViewById(R.id.import_settings);
- blockedNumbersDisabledForEmergency =
- getListView().findViewById(R.id.blocked_numbers_disabled_for_emergency);
- blockedNumberListDivider = getActivity().findViewById(R.id.blocked_number_list_divider);
- getListView().findViewById(R.id.import_button).setOnClickListener(this);
- getListView().findViewById(R.id.view_numbers_button).setOnClickListener(this);
-
- footerText = (TextView) getActivity().findViewById(R.id.blocked_number_footer_textview);
- voicemailEnabledChecker = new VisualVoicemailEnabledChecker(getContext(), this);
- voicemailEnabledChecker.asyncUpdate();
- updateActiveVoicemailProvider();
- }
-
- @Override
- public void onDestroy() {
- setListAdapter(null);
- super.onDestroy();
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getLoaderManager().initLoader(0, null, this);
- }
-
- @Override
- public void onResume() {
- super.onResume();
-
- ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
- ColorDrawable backgroundDrawable =
- new ColorDrawable(ThemeComponent.get(getContext()).theme().getColorPrimary());
- actionBar.setBackgroundDrawable(backgroundDrawable);
- actionBar.setDisplayShowCustomEnabled(false);
- actionBar.setDisplayHomeAsUpEnabled(true);
- actionBar.setDisplayShowHomeEnabled(true);
- actionBar.setDisplayShowTitleEnabled(true);
- actionBar.setTitle(R.string.manage_blocked_numbers_label);
-
- // If the device can use the framework blocking solution, users should not be able to add
- // new blocked numbers from the Blocked Management UI. They will be shown a promo card
- // asking them to migrate to new blocking instead.
- if (FilteredNumberCompat.canUseNewFiltering()) {
- migratePromoView.setVisibility(View.VISIBLE);
- blockedNumbersText.setVisibility(View.GONE);
- blockedNumberListDivider.setVisibility(View.GONE);
- importSettings.setVisibility(View.GONE);
- getListView().findViewById(R.id.import_button).setOnClickListener(null);
- getListView().findViewById(R.id.view_numbers_button).setOnClickListener(null);
- blockedNumbersDisabledForEmergency.setVisibility(View.GONE);
- footerText.setVisibility(View.GONE);
- } else {
- FilteredNumbersUtil.checkForSendToVoicemailContact(
- getActivity(),
- new CheckForSendToVoicemailContactListener() {
- @Override
- public void onComplete(boolean hasSendToVoicemailContact) {
- final int visibility = hasSendToVoicemailContact ? View.VISIBLE : View.GONE;
- importSettings.setVisibility(visibility);
- }
- });
- }
-
- // All views except migrate and the block list are hidden when new filtering is available
- if (!FilteredNumberCompat.canUseNewFiltering()
- && FilteredNumbersUtil.hasRecentEmergencyCall(getContext())) {
- blockedNumbersDisabledForEmergency.setVisibility(View.VISIBLE);
- } else {
- blockedNumbersDisabledForEmergency.setVisibility(View.GONE);
- }
-
- voicemailEnabledChecker.asyncUpdate();
- }
-
- @Override
- public View onCreateView(
- LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- return inflater.inflate(R.layout.blocked_number_fragment, container, false);
- }
-
- @Override
- public Loader onCreateLoader(int id, Bundle args) {
- final String[] projection = {
- FilteredNumberContract.FilteredNumberColumns._ID,
- FilteredNumberContract.FilteredNumberColumns.COUNTRY_ISO,
- FilteredNumberContract.FilteredNumberColumns.NUMBER,
- FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER
- };
- final String selection =
- FilteredNumberContract.FilteredNumberColumns.TYPE
- + "="
- + FilteredNumberContract.FilteredNumberTypes.BLOCKED_NUMBER;
- return new CursorLoader(
- getContext(),
- FilteredNumberContract.FilteredNumber.CONTENT_URI,
- projection,
- selection,
- null,
- null);
- }
-
- @Override
- public void onLoadFinished(Loader loader, Cursor data) {
- adapter.swapCursor(data);
- if (FilteredNumberCompat.canUseNewFiltering() || data.getCount() == 0) {
- blockedNumberListDivider.setVisibility(View.INVISIBLE);
- } else {
- blockedNumberListDivider.setVisibility(View.VISIBLE);
- }
- }
-
- @Override
- public void onLoaderReset(Loader loader) {
- adapter.swapCursor(null);
- }
-
- @Override
- public void onClick(final View view) {
- final BlockedNumbersSettingsActivity activity = (BlockedNumbersSettingsActivity) getActivity();
- if (activity == null) {
- return;
- }
-
- int resId = view.getId();
- if (resId == R.id.view_numbers_button) {
- activity.showNumbersToImportPreviewUi();
- } else if (resId == R.id.import_button) {
- FilteredNumbersUtil.importSendToVoicemailContacts(
- activity,
- new ImportSendToVoicemailContactsListener() {
- @Override
- public void onImportComplete() {
- importSettings.setVisibility(View.GONE);
- }
- });
- } else if (resId == R.id.migrate_promo_allow_button) {
- view.setEnabled(false);
- (blockedNumbersMigratorForTest != null
- ? blockedNumbersMigratorForTest
- : new BlockedNumbersMigrator(getContext()))
- .migrate(
- new Listener() {
- @Override
- public void onComplete() {
- getContext()
- .startActivity(
- FilteredNumberCompat.createManageBlockedNumbersIntent(getContext()));
- // Remove this activity from the backstack
- activity.finish();
- }
- });
- }
- }
-
- @Override
- public void onVisualVoicemailEnabledStatusChanged(boolean newStatus) {
- updateActiveVoicemailProvider();
- }
-
- private void updateActiveVoicemailProvider() {
- if (getActivity() == null || getActivity().isFinishing()) {
- return;
- }
- if (voicemailEnabledChecker.isVisualVoicemailEnabled()) {
- footerText.setText(R.string.block_number_footer_message_vvm);
- } else {
- footerText.setText(R.string.block_number_footer_message_no_vvm);
- }
- }
-
- void setBlockedNumbersMigratorForTest(BlockedNumbersMigrator blockedNumbersMigrator) {
- blockedNumbersMigratorForTest = blockedNumbersMigrator;
- }
-}
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java
deleted file mode 100644
index 5475b4ea3e98a41968b99574741f4b64092777ed..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-package com.android.dialer.app.filterednumber;
-
-import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-import android.view.MenuItem;
-import com.android.dialer.app.R;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
-
-/** TODO(calderwoodra): documentation */
-public class BlockedNumbersSettingsActivity extends AppCompatActivity {
-
- private static final String TAG_BLOCKED_MANAGEMENT_FRAGMENT = "blocked_management";
- private static final String TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT = "view_numbers_to_import";
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.blocked_numbers_activity);
-
- // If savedInstanceState != null, the Activity will automatically restore the last fragment.
- if (savedInstanceState == null) {
- showManagementUi();
- }
- }
-
- /** Shows fragment with the list of currently blocked numbers and settings related to blocking. */
- public void showManagementUi() {
- BlockedNumbersFragment fragment =
- (BlockedNumbersFragment)
- getFragmentManager().findFragmentByTag(TAG_BLOCKED_MANAGEMENT_FRAGMENT);
- if (fragment == null) {
- fragment = new BlockedNumbersFragment();
- }
-
- getFragmentManager()
- .beginTransaction()
- .replace(R.id.blocked_numbers_activity_container, fragment, TAG_BLOCKED_MANAGEMENT_FRAGMENT)
- .commit();
-
- Logger.get(this).logScreenView(ScreenEvent.Type.BLOCKED_NUMBER_MANAGEMENT, this);
- }
-
- /**
- * Shows fragment with UI to preview the numbers of contacts currently marked as send-to-voicemail
- * in Contacts. These numbers can be imported into Dialer's blocked number list.
- */
- public void showNumbersToImportPreviewUi() {
- ViewNumbersToImportFragment fragment =
- (ViewNumbersToImportFragment)
- getFragmentManager().findFragmentByTag(TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT);
- if (fragment == null) {
- fragment = new ViewNumbersToImportFragment();
- }
-
- getFragmentManager()
- .beginTransaction()
- .replace(
- R.id.blocked_numbers_activity_container, fragment, TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT)
- .addToBackStack(null)
- .commit();
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId() == android.R.id.home) {
- onBackPressed();
- return true;
- }
- return false;
- }
-
- @Override
- public void onBackPressed() {
- // TODO: Achieve back navigation without overriding onBackPressed.
- if (getFragmentManager().getBackStackEntryCount() > 0) {
- getFragmentManager().popBackStack();
- } else {
- super.onBackPressed();
- }
- }
-}
diff --git a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java b/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
deleted file mode 100644
index 2c08558ec31433b0c0e5fef41ceb2181e9df8f1a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-package com.android.dialer.app.filterednumber;
-
-import android.app.FragmentManager;
-import android.content.Context;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.text.BidiFormatter;
-import android.text.TextDirectionHeuristics;
-import android.text.TextUtils;
-import android.view.View;
-import android.widget.QuickContactBadge;
-import android.widget.SimpleCursorAdapter;
-import android.widget.TextView;
-import com.android.dialer.app.R;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
-import com.android.dialer.lettertile.LetterTileDrawable;
-import com.android.dialer.phonenumbercache.ContactInfo;
-import com.android.dialer.phonenumbercache.ContactInfoHelper;
-import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.util.UriUtils;
-
-/** TODO(calderwoodra): documentation */
-public class NumbersAdapter extends SimpleCursorAdapter {
-
- private final Context context;
- private final FragmentManager fragmentManager;
- private final ContactInfoHelper contactInfoHelper;
- private final BidiFormatter bidiFormatter = BidiFormatter.getInstance();
- private final ContactPhotoManager contactPhotoManager;
-
- public NumbersAdapter(
- Context context,
- FragmentManager fragmentManager,
- ContactInfoHelper contactInfoHelper,
- ContactPhotoManager contactPhotoManager) {
- super(context, R.layout.blocked_number_item, null, new String[] {}, new int[] {}, 0);
- this.context = context;
- this.fragmentManager = fragmentManager;
- this.contactInfoHelper = contactInfoHelper;
- this.contactPhotoManager = contactPhotoManager;
- }
-
- public void updateView(View view, String number, String countryIso) {
- final TextView callerName = (TextView) view.findViewById(R.id.caller_name);
- final TextView callerNumber = (TextView) view.findViewById(R.id.caller_number);
- final QuickContactBadge quickContactBadge =
- (QuickContactBadge) view.findViewById(R.id.quick_contact_photo);
- quickContactBadge.setOverlay(null);
- quickContactBadge.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
-
- ContactInfo info = contactInfoHelper.lookupNumber(number, countryIso);
- if (info == null) {
- info = new ContactInfo();
- info.number = number;
- }
- final CharSequence locationOrType = getNumberTypeOrLocation(info, countryIso);
- final String displayNumber = getDisplayNumber(info);
- final String displayNumberStr =
- bidiFormatter.unicodeWrap(displayNumber, TextDirectionHeuristics.LTR);
-
- String nameForDefaultImage;
- if (!TextUtils.isEmpty(info.name)) {
- nameForDefaultImage = info.name;
- callerName.setText(info.name);
- callerNumber.setText(locationOrType + " " + displayNumberStr);
- } else {
- nameForDefaultImage = displayNumber;
- callerName.setText(displayNumberStr);
- if (!TextUtils.isEmpty(locationOrType)) {
- callerNumber.setText(locationOrType);
- callerNumber.setVisibility(View.VISIBLE);
- } else {
- callerNumber.setVisibility(View.GONE);
- }
- }
- loadContactPhoto(info, nameForDefaultImage, quickContactBadge);
- }
-
- private void loadContactPhoto(ContactInfo info, String displayName, QuickContactBadge badge) {
- final String lookupKey =
- info.lookupUri == null ? null : UriUtils.getLookupKeyFromUri(info.lookupUri);
- final int contactType =
- contactInfoHelper.isBusiness(info.sourceType)
- ? LetterTileDrawable.TYPE_BUSINESS
- : LetterTileDrawable.TYPE_DEFAULT;
- final DefaultImageRequest request =
- new DefaultImageRequest(displayName, lookupKey, contactType, true /* isCircular */);
- badge.assignContactUri(info.lookupUri);
- badge.setContentDescription(
- context.getResources().getString(R.string.description_contact_details, displayName));
- contactPhotoManager.loadDirectoryPhoto(
- badge, info.photoUri, false /* darkTheme */, true /* isCircular */, request);
- }
-
- private String getDisplayNumber(ContactInfo info) {
- if (!TextUtils.isEmpty(info.formattedNumber)) {
- return info.formattedNumber;
- } else if (!TextUtils.isEmpty(info.number)) {
- return info.number;
- } else {
- return "";
- }
- }
-
- private CharSequence getNumberTypeOrLocation(ContactInfo info, String countryIso) {
- if (!TextUtils.isEmpty(info.name)) {
- return ContactsContract.CommonDataKinds.Phone.getTypeLabel(
- context.getResources(), info.type, info.label);
- } else {
- return PhoneNumberHelper.getGeoDescription(context, info.number, countryIso);
- }
- }
-
- protected Context getContext() {
- return context;
- }
-
- protected FragmentManager getFragmentManager() {
- return fragmentManager;
- }
-}
diff --git a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java b/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
deleted file mode 100644
index 106c4fb71108a8ae6be06bb864058c6ba4b33ecd..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-package com.android.dialer.app.filterednumber;
-
-import android.app.FragmentManager;
-import android.content.Context;
-import android.database.Cursor;
-import android.view.View;
-import com.android.dialer.app.R;
-import com.android.dialer.blocking.FilteredNumbersUtil;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.location.GeoUtil;
-import com.android.dialer.phonenumbercache.ContactInfoHelper;
-
-/** TODO(calderwoodra): documentation */
-public class ViewNumbersToImportAdapter extends NumbersAdapter {
-
- private ViewNumbersToImportAdapter(
- Context context,
- FragmentManager fragmentManager,
- ContactInfoHelper contactInfoHelper,
- ContactPhotoManager contactPhotoManager) {
- super(context, fragmentManager, contactInfoHelper, contactPhotoManager);
- }
-
- public static ViewNumbersToImportAdapter newViewNumbersToImportAdapter(
- Context context, FragmentManager fragmentManager) {
- return new ViewNumbersToImportAdapter(
- context,
- fragmentManager,
- new ContactInfoHelper(context, GeoUtil.getCurrentCountryIso(context)),
- ContactPhotoManager.getInstance(context));
- }
-
- @Override
- public void bindView(View view, Context context, Cursor cursor) {
- super.bindView(view, context, cursor);
-
- final String number = cursor.getString(FilteredNumbersUtil.PhoneQuery.NUMBER_COLUMN_INDEX);
-
- view.findViewById(R.id.delete_button).setVisibility(View.GONE);
- updateView(view, number, null /* countryIso */);
- }
-}
diff --git a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportFragment.java b/java/com/android/dialer/app/filterednumber/ViewNumbersToImportFragment.java
deleted file mode 100644
index be3ae79f973486cd7f619c6913b463ef4df46bc2..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportFragment.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-package com.android.dialer.app.filterednumber;
-
-import android.app.ListFragment;
-import android.app.LoaderManager;
-import android.content.Context;
-import android.content.CursorLoader;
-import android.content.Loader;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import com.android.dialer.app.R;
-import com.android.dialer.blocking.FilteredNumbersUtil;
-import com.android.dialer.blocking.FilteredNumbersUtil.ImportSendToVoicemailContactsListener;
-
-/** TODO(calderwoodra): documentation */
-public class ViewNumbersToImportFragment extends ListFragment
- implements LoaderManager.LoaderCallbacks, View.OnClickListener {
-
- private ViewNumbersToImportAdapter adapter;
-
- @Override
- public Context getContext() {
- return getActivity();
- }
-
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
-
- if (adapter == null) {
- adapter =
- ViewNumbersToImportAdapter.newViewNumbersToImportAdapter(
- getContext(), getActivity().getFragmentManager());
- }
- setListAdapter(adapter);
- }
-
- @Override
- public void onDestroy() {
- setListAdapter(null);
- super.onDestroy();
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getLoaderManager().initLoader(0, null, this);
- }
-
- @Override
- public void onResume() {
- super.onResume();
-
- ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
- actionBar.setTitle(R.string.import_send_to_voicemail_numbers_label);
- actionBar.setDisplayShowCustomEnabled(false);
- actionBar.setDisplayHomeAsUpEnabled(true);
- actionBar.setDisplayShowHomeEnabled(true);
- actionBar.setDisplayShowTitleEnabled(true);
-
- getActivity().findViewById(R.id.cancel_button).setOnClickListener(this);
- getActivity().findViewById(R.id.import_button).setOnClickListener(this);
- }
-
- @Override
- public View onCreateView(
- LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- return inflater.inflate(R.layout.view_numbers_to_import_fragment, container, false);
- }
-
- @Override
- public Loader onCreateLoader(int id, Bundle args) {
- final CursorLoader cursorLoader =
- new CursorLoader(
- getContext(),
- Phone.CONTENT_URI,
- FilteredNumbersUtil.PhoneQuery.PROJECTION,
- FilteredNumbersUtil.PhoneQuery.SELECT_SEND_TO_VOICEMAIL_TRUE,
- null,
- null);
- return cursorLoader;
- }
-
- @Override
- public void onLoadFinished(Loader loader, Cursor data) {
- adapter.swapCursor(data);
- }
-
- @Override
- public void onLoaderReset(Loader loader) {
- adapter.swapCursor(null);
- }
-
- @Override
- public void onClick(final View view) {
- if (view.getId() == R.id.import_button) {
- FilteredNumbersUtil.importSendToVoicemailContacts(
- getContext(),
- new ImportSendToVoicemailContactsListener() {
- @Override
- public void onImportComplete() {
- if (getActivity() != null) {
- getActivity().onBackPressed();
- }
- }
- });
- } else if (view.getId() == R.id.cancel_button) {
- getActivity().onBackPressed();
- }
- }
-}
diff --git a/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java b/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java
deleted file mode 100644
index 6eaa2b6b9a1c1602f4680a2bc144340a013b8c67..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2016 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
- */
-
-package com.android.dialer.app.legacybindings;
-
-import android.app.Activity;
-import android.support.annotation.NonNull;
-import android.view.ViewGroup;
-import com.android.dialer.app.calllog.CallLogAdapter;
-import com.android.dialer.app.calllog.calllogcache.CallLogCache;
-import com.android.dialer.app.contactinfo.ContactInfoCache;
-import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-
-/**
- * These are old bindings between Dialer and the container application. All new bindings should be
- * added to the bindings module and not here.
- */
-public interface DialerLegacyBindings {
-
- /**
- * activityType must be one of following constants: CallLogAdapter.ACTIVITY_TYPE_CALL_LOG, or
- * CallLogAdapter.ACTIVITY_TYPE_DIALTACTS.
- */
- CallLogAdapter newCallLogAdapter(
- Activity activity,
- ViewGroup alertContainer,
- CallLogAdapter.CallFetcher callFetcher,
- CallLogAdapter.MultiSelectRemoveView multiSelectRemoveView,
- CallLogAdapter.OnActionModeStateChangedListener actionModeStateChangedListener,
- CallLogCache callLogCache,
- ContactInfoCache contactInfoCache,
- VoicemailPlaybackPresenter voicemailPlaybackPresenter,
- @NonNull FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler,
- int activityType);
-}
diff --git a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsFactory.java b/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsFactory.java
deleted file mode 100644
index 70d379c9fbe98a9f4572887632e13e53e0dbbe57..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsFactory.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.dialer.app.legacybindings;
-
-/**
- * This interface should be implementated by the Application subclass. It allows the dialer module
- * to get references to the DialerLegacyBindings.
- */
-public interface DialerLegacyBindingsFactory {
-
- DialerLegacyBindings newDialerLegacyBindings();
-}
diff --git a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java b/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java
deleted file mode 100644
index e95c4709da61b735d26fbd68171ba9a2d630ccc1..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2016 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
- */
-
-package com.android.dialer.app.legacybindings;
-
-import android.app.Activity;
-import android.support.annotation.NonNull;
-import android.view.ViewGroup;
-import com.android.dialer.app.calllog.CallLogAdapter;
-import com.android.dialer.app.calllog.calllogcache.CallLogCache;
-import com.android.dialer.app.contactinfo.ContactInfoCache;
-import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-
-/** Default implementation for dialer legacy bindings. */
-public class DialerLegacyBindingsStub implements DialerLegacyBindings {
-
- @Override
- public CallLogAdapter newCallLogAdapter(
- Activity activity,
- ViewGroup alertContainer,
- CallLogAdapter.CallFetcher callFetcher,
- CallLogAdapter.MultiSelectRemoveView multiSelectRemoveView,
- CallLogAdapter.OnActionModeStateChangedListener actionModeStateChangedListener,
- CallLogCache callLogCache,
- ContactInfoCache contactInfoCache,
- VoicemailPlaybackPresenter voicemailPlaybackPresenter,
- @NonNull FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler,
- int activityType) {
- return new CallLogAdapter(
- activity,
- alertContainer,
- callFetcher,
- multiSelectRemoveView,
- actionModeStateChangedListener,
- callLogCache,
- contactInfoCache,
- voicemailPlaybackPresenter,
- filteredNumberAsyncQueryHandler,
- activityType);
- }
-}
diff --git a/java/com/android/dialer/app/list/ContentChangedFilter.java b/java/com/android/dialer/app/list/ContentChangedFilter.java
deleted file mode 100644
index 8c532badbe4009acb538b6165d871f5cf8fc08f5..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/list/ContentChangedFilter.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.dialer.app.list;
-
-import android.view.View;
-import android.view.View.AccessibilityDelegate;
-import android.view.ViewGroup;
-import android.view.accessibility.AccessibilityEvent;
-
-/**
- * AccessibilityDelegate that will filter out TYPE_WINDOW_CONTENT_CHANGED Used to suppress "Showing
- * items x of y" from firing of ListView whenever it's content changes. AccessibilityEvent can only
- * be rejected at a view's parent once it is generated, use addToParent() to add this delegate to
- * the parent.
- */
-public class ContentChangedFilter extends AccessibilityDelegate {
-
- // the view we don't want TYPE_WINDOW_CONTENT_CHANGED to fire.
- private View view;
-
- private ContentChangedFilter(View view) {
- super();
- this.view = view;
- }
-
- /** Add this delegate to the parent of @param view to filter out TYPE_WINDOW_CONTENT_CHANGED */
- public static void addToParent(View view) {
- View parent = (View) view.getParent();
- parent.setAccessibilityDelegate(new ContentChangedFilter(view));
- }
-
- @Override
- public boolean onRequestSendAccessibilityEvent(
- ViewGroup host, View child, AccessibilityEvent event) {
- if (child == view) {
- if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) {
- return false;
- }
- }
- return super.onRequestSendAccessibilityEvent(host, child, event);
- }
-}
diff --git a/java/com/android/dialer/app/list/DialerViewPager.java b/java/com/android/dialer/app/list/DialerViewPager.java
deleted file mode 100644
index ae99f0521bff0a5975f657c3e8cd4f1bc000f526..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/list/DialerViewPager.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.app.list;
-
-import android.content.Context;
-import android.support.v4.view.ViewPager;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-
-/** Class that handles enabling/disabling swiping between @{ViewPagerTabs}. */
-public class DialerViewPager extends ViewPager {
-
- private boolean enableSwipingPages;
-
- public DialerViewPager(Context context, AttributeSet attributeSet) {
- super(context, attributeSet);
- enableSwipingPages = true;
- }
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent event) {
- if (enableSwipingPages) {
- return super.onInterceptTouchEvent(event);
- }
-
- return false;
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- if (enableSwipingPages) {
- return super.onTouchEvent(event);
- }
-
- return false;
- }
-
- public void setEnableSwipingPages(boolean enabled) {
- enableSwipingPages = enabled;
- }
-}
diff --git a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
deleted file mode 100644
index 317f24fef95a57f2ecc6590190431fbda6c273c8..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.app.list;
-
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.support.annotation.IntDef;
-import android.support.v13.app.FragmentPagerAdapter;
-import android.view.ViewGroup;
-import com.android.dialer.app.calllog.CallLogFragment;
-import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.contactsfragment.ContactsFragment;
-import com.android.dialer.contactsfragment.ContactsFragment.Header;
-import com.android.dialer.database.CallLogQueryHandler;
-import com.android.dialer.util.ViewUtil;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/** ViewPager adapter for {@link com.android.dialer.app.DialtactsActivity}. */
-public class DialtactsPagerAdapter extends FragmentPagerAdapter {
-
- /** IntDef for indices of ViewPager tabs. */
- @Retention(RetentionPolicy.SOURCE)
- @IntDef({TAB_INDEX_SPEED_DIAL, TAB_INDEX_HISTORY, TAB_INDEX_ALL_CONTACTS, TAB_INDEX_VOICEMAIL})
- public @interface TabIndex {}
-
- public static final int TAB_INDEX_SPEED_DIAL = 0;
- public static final int TAB_INDEX_HISTORY = 1;
- public static final int TAB_INDEX_ALL_CONTACTS = 2;
- public static final int TAB_INDEX_VOICEMAIL = 3;
- public static final int TAB_COUNT_DEFAULT = 3;
- public static final int TAB_COUNT_WITH_VOICEMAIL = 4;
-
- private final List fragments = new ArrayList<>();
- private final String[] tabTitles;
- private OldSpeedDialFragment oldSpeedDialFragment;
- private CallLogFragment callLogFragment;
- private ContactsFragment contactsFragment;
- private CallLogFragment voicemailFragment;
-
- private boolean hasActiveVoicemailProvider;
-
- public DialtactsPagerAdapter(
- FragmentManager fm, String[] tabTitles, boolean hasVoicemailProvider) {
- super(fm);
- this.tabTitles = tabTitles;
- hasActiveVoicemailProvider = hasVoicemailProvider;
- fragments.addAll(Collections.nCopies(TAB_COUNT_WITH_VOICEMAIL, null));
- }
-
- @Override
- public long getItemId(int position) {
- return getRtlPosition(position);
- }
-
- @Override
- public Fragment getItem(int position) {
- LogUtil.d("ViewPagerAdapter.getItem", "position: %d", position);
- switch (getRtlPosition(position)) {
- case TAB_INDEX_SPEED_DIAL:
- if (oldSpeedDialFragment == null) {
- oldSpeedDialFragment = new OldSpeedDialFragment();
- }
- return oldSpeedDialFragment;
- case TAB_INDEX_HISTORY:
- if (callLogFragment == null) {
- callLogFragment = new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL);
- }
- return callLogFragment;
- case TAB_INDEX_ALL_CONTACTS:
- if (contactsFragment == null) {
- contactsFragment = ContactsFragment.newInstance(Header.ADD_CONTACT);
- }
- return contactsFragment;
- case TAB_INDEX_VOICEMAIL:
- if (voicemailFragment == null) {
- voicemailFragment = new VisualVoicemailCallLogFragment();
- LogUtil.v(
- "ViewPagerAdapter.getItem",
- "new VisualVoicemailCallLogFragment: %s",
- voicemailFragment);
- }
- return voicemailFragment;
- default:
- throw Assert.createIllegalStateFailException("No fragment at position " + position);
- }
- }
-
- @Override
- public Fragment instantiateItem(ViewGroup container, int position) {
- LogUtil.d("ViewPagerAdapter.instantiateItem", "position: %d", position);
- // On rotation the FragmentManager handles rotation. Therefore getItem() isn't called.
- // Copy the fragments that the FragmentManager finds so that we can store them in
- // instance variables for later.
- final Fragment fragment = (Fragment) super.instantiateItem(container, position);
- if (fragment instanceof OldSpeedDialFragment) {
- oldSpeedDialFragment = (OldSpeedDialFragment) fragment;
- } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_HISTORY) {
- callLogFragment = (CallLogFragment) fragment;
- } else if (fragment instanceof ContactsFragment) {
- contactsFragment = (ContactsFragment) fragment;
- } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_VOICEMAIL) {
- voicemailFragment = (CallLogFragment) fragment;
- LogUtil.v("ViewPagerAdapter.instantiateItem", voicemailFragment.toString());
- }
- fragments.set(position, fragment);
- return fragment;
- }
-
- /**
- * When {@link android.support.v4.view.PagerAdapter#notifyDataSetChanged} is called, this method
- * is called on all pages to determine whether they need to be recreated. When the voicemail tab
- * is removed, the view needs to be recreated by returning POSITION_NONE. If notifyDataSetChanged
- * is called for some other reason, the voicemail tab is recreated only if it is active. All other
- * tabs do not need to be recreated and POSITION_UNCHANGED is returned.
- */
- @Override
- public int getItemPosition(Object object) {
- return !hasActiveVoicemailProvider && fragments.indexOf(object) == TAB_INDEX_VOICEMAIL
- ? POSITION_NONE
- : POSITION_UNCHANGED;
- }
-
- @Override
- public int getCount() {
- return hasActiveVoicemailProvider ? TAB_COUNT_WITH_VOICEMAIL : TAB_COUNT_DEFAULT;
- }
-
- @Override
- public CharSequence getPageTitle(@TabIndex int position) {
- return tabTitles[position];
- }
-
- public int getRtlPosition(int position) {
- if (ViewUtil.isRtl()) {
- return getCount() - 1 - position;
- }
- return position;
- }
-
- public void removeVoicemailFragment(FragmentManager manager) {
- if (voicemailFragment != null) {
- manager.beginTransaction().remove(voicemailFragment).commitAllowingStateLoss();
- voicemailFragment = null;
- }
- }
-
- public boolean hasActiveVoicemailProvider() {
- return hasActiveVoicemailProvider;
- }
-
- public void setHasActiveVoicemailProvider(boolean hasActiveVoicemailProvider) {
- this.hasActiveVoicemailProvider = hasActiveVoicemailProvider;
- }
-}
diff --git a/java/com/android/dialer/app/list/DragDropController.java b/java/com/android/dialer/app/list/DragDropController.java
deleted file mode 100644
index 1c33a8a09c31d343d5fb411a47dabcdf27003acb..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/list/DragDropController.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.dialer.app.list;
-
-import android.view.View;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Class that handles and combines drag events generated from multiple views, and then fires off
- * events to any OnDragDropListeners that have registered for callbacks.
- */
-public class DragDropController {
-
- private final List onDragDropListeners = new ArrayList();
- private final DragItemContainer dragItemContainer;
- private final int[] locationOnScreen = new int[2];
-
- public DragDropController(DragItemContainer dragItemContainer) {
- this.dragItemContainer = dragItemContainer;
- }
-
- /** @return True if the drag is started, false if the drag is cancelled for some reason. */
- boolean handleDragStarted(View v, int x, int y) {
- v.getLocationOnScreen(locationOnScreen);
- x = x + locationOnScreen[0];
- y = y + locationOnScreen[1];
- final PhoneFavoriteSquareTileView tileView = dragItemContainer.getViewForLocation(x, y);
- if (tileView == null) {
- return false;
- }
- for (int i = 0; i < onDragDropListeners.size(); i++) {
- onDragDropListeners.get(i).onDragStarted(x, y, tileView);
- }
-
- return true;
- }
-
- public void handleDragHovered(View v, int x, int y) {
- v.getLocationOnScreen(locationOnScreen);
- final int screenX = x + locationOnScreen[0];
- final int screenY = y + locationOnScreen[1];
- final PhoneFavoriteSquareTileView view = dragItemContainer.getViewForLocation(screenX, screenY);
- for (int i = 0; i < onDragDropListeners.size(); i++) {
- onDragDropListeners.get(i).onDragHovered(screenX, screenY, view);
- }
- }
-
- public void handleDragFinished(int x, int y, boolean isRemoveView) {
- if (isRemoveView) {
- for (int i = 0; i < onDragDropListeners.size(); i++) {
- onDragDropListeners.get(i).onDroppedOnRemove();
- }
- }
-
- for (int i = 0; i < onDragDropListeners.size(); i++) {
- onDragDropListeners.get(i).onDragFinished(x, y);
- }
- }
-
- public void addOnDragDropListener(OnDragDropListener listener) {
- if (!onDragDropListeners.contains(listener)) {
- onDragDropListeners.add(listener);
- }
- }
-
- public void removeOnDragDropListener(OnDragDropListener listener) {
- if (onDragDropListeners.contains(listener)) {
- onDragDropListeners.remove(listener);
- }
- }
-
- /**
- * Callback interface used to retrieve views based on the current touch coordinates of the drag
- * event. The {@link DragItemContainer} houses the draggable views that this {@link
- * DragDropController} controls.
- */
- public interface DragItemContainer {
-
- PhoneFavoriteSquareTileView getViewForLocation(int x, int y);
- }
-}
diff --git a/java/com/android/dialer/app/list/ListsFragment.java b/java/com/android/dialer/app/list/ListsFragment.java
deleted file mode 100644
index 93e89230ba5356722084abbc514294197080097a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/list/ListsFragment.java
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-package com.android.dialer.app.list;
-
-import static android.support.v4.view.ViewPager.SCROLL_STATE_SETTLING;
-
-import android.app.Fragment;
-import android.content.SharedPreferences;
-import android.database.ContentObserver;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Trace;
-import android.preference.PreferenceManager;
-import android.provider.VoicemailContract;
-import android.support.v4.view.ViewPager.OnPageChangeListener;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import com.android.contacts.common.list.ViewPagerTabs;
-import com.android.dialer.app.R;
-import com.android.dialer.app.calllog.CallLogFragment;
-import com.android.dialer.app.calllog.CallLogFragment.CallLogFragmentListener;
-import com.android.dialer.app.calllog.CallLogNotificationsService;
-import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.database.CallLogQueryHandler;
-import com.android.dialer.database.CallLogQueryHandler.Listener;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
-import com.android.dialer.logging.UiAction;
-import com.android.dialer.performancereport.PerformanceReport;
-import com.android.dialer.util.PermissionsUtil;
-import com.android.dialer.voicemail.listui.error.VoicemailStatusCorruptionHandler;
-import com.android.dialer.voicemail.listui.error.VoicemailStatusCorruptionHandler.Source;
-import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
-import com.android.dialer.voicemailstatus.VoicemailStatusHelper;
-import java.util.ArrayList;
-
-/**
- * Fragment that is used as the main screen of the Dialer.
- *
- *
Contains a ViewPager that contains various contact lists like the Speed Dial list and the All
- * Contacts list. This will also eventually contain the logic that allows sliding the ViewPager
- * containing the lists up above the search bar and pin it against the top of the screen.
- */
-public class ListsFragment extends Fragment
- implements OnPageChangeListener, Listener, CallLogFragmentListener {
-
- private static final String TAG = "ListsFragment";
-
- private DialerViewPager viewPager;
- private ViewPagerTabs viewPagerTabs;
- private DialtactsPagerAdapter adapter;
- private RemoveView removeView;
- private View removeViewContent;
- private Fragment currentPage;
- private SharedPreferences prefs;
- private boolean hasFetchedVoicemailStatus;
- private boolean showVoicemailTabAfterVoicemailStatusIsFetched;
- private final ArrayList onPageChangeListeners = new ArrayList<>();
- /** The position of the currently selected tab. */
- private int tabIndex = DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL;
-
- private boolean paused;
- private CallLogQueryHandler callLogQueryHandler;
-
- private UiAction.Type[] actionTypeList;
- private final DialerImpression.Type[] swipeImpressionList =
- new DialerImpression.Type[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
- private final DialerImpression.Type[] clickImpressionList =
- new DialerImpression.Type[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
-
- // Only for detecting page selected by swiping or clicking.
- private boolean onPageScrolledBeforeScrollStateSettling;
-
- private final ContentObserver voicemailStatusObserver =
- new ContentObserver(new Handler()) {
- @Override
- public void onChange(boolean selfChange) {
- super.onChange(selfChange);
- callLogQueryHandler.fetchVoicemailStatus();
- }
- };
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- LogUtil.d("ListsFragment.onCreate", null);
- Trace.beginSection(TAG + " onCreate");
- super.onCreate(savedInstanceState);
- prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
- Trace.endSection();
- }
-
- @Override
- public void onResume() {
- LogUtil.enterBlock("ListsFragment.onResume");
- Trace.beginSection(TAG + " onResume");
- super.onResume();
-
- paused = false;
-
- if (getUserVisibleHint()) {
- sendScreenViewForCurrentPosition();
- }
-
- // Fetch voicemail status to determine if we should show the voicemail tab.
- callLogQueryHandler =
- new CallLogQueryHandler(getActivity(), getActivity().getContentResolver(), this);
- callLogQueryHandler.fetchVoicemailStatus();
- callLogQueryHandler.fetchMissedCallsUnreadCount();
- Trace.endSection();
- currentPage = adapter.getItem(viewPager.getCurrentItem());
- }
-
- @Override
- public void onPause() {
- LogUtil.enterBlock("ListsFragment.onPause");
- super.onPause();
-
- paused = true;
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- viewPager.removeOnPageChangeListener(this);
- }
-
- @Override
- public View onCreateView(
- LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- LogUtil.enterBlock("ListsFragment.onCreateView");
- Trace.beginSection(TAG + " onCreateView");
- Trace.beginSection(TAG + " inflate view");
- final View parentView = inflater.inflate(R.layout.lists_fragment, container, false);
- Trace.endSection();
- Trace.beginSection(TAG + " setup views");
-
- actionTypeList = new UiAction.Type[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
- actionTypeList[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] =
- UiAction.Type.CHANGE_TAB_TO_FAVORITE;
- actionTypeList[DialtactsPagerAdapter.TAB_INDEX_HISTORY] = UiAction.Type.CHANGE_TAB_TO_CALL_LOG;
- actionTypeList[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
- UiAction.Type.CHANGE_TAB_TO_CONTACTS;
- actionTypeList[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
- UiAction.Type.CHANGE_TAB_TO_VOICEMAIL;
-
- swipeImpressionList[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] =
- DialerImpression.Type.SWITCH_TAB_TO_FAVORITE_BY_SWIPE;
- swipeImpressionList[DialtactsPagerAdapter.TAB_INDEX_HISTORY] =
- DialerImpression.Type.SWITCH_TAB_TO_CALL_LOG_BY_SWIPE;
- swipeImpressionList[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
- DialerImpression.Type.SWITCH_TAB_TO_CONTACTS_BY_SWIPE;
- swipeImpressionList[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
- DialerImpression.Type.SWITCH_TAB_TO_VOICEMAIL_BY_SWIPE;
-
- clickImpressionList[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] =
- DialerImpression.Type.SWITCH_TAB_TO_FAVORITE_BY_CLICK;
- clickImpressionList[DialtactsPagerAdapter.TAB_INDEX_HISTORY] =
- DialerImpression.Type.SWITCH_TAB_TO_CALL_LOG_BY_CLICK;
- clickImpressionList[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
- DialerImpression.Type.SWITCH_TAB_TO_CONTACTS_BY_CLICK;
- clickImpressionList[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
- DialerImpression.Type.SWITCH_TAB_TO_VOICEMAIL_BY_CLICK;
-
- String[] tabTitles = new String[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
- tabTitles[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] =
- getResources().getString(R.string.tab_speed_dial);
- tabTitles[DialtactsPagerAdapter.TAB_INDEX_HISTORY] =
- getResources().getString(R.string.tab_history);
- tabTitles[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
- getResources().getString(R.string.tab_all_contacts);
- tabTitles[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
- getResources().getString(R.string.tab_voicemail);
-
- int[] tabIcons = new int[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
- tabIcons[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] = R.drawable.quantum_ic_grade_white_24;
- tabIcons[DialtactsPagerAdapter.TAB_INDEX_HISTORY] = R.drawable.quantum_ic_schedule_white_24;
- tabIcons[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] = R.drawable.quantum_ic_people_white_24;
- tabIcons[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] = R.drawable.quantum_ic_voicemail_white_24;
-
- viewPager = (DialerViewPager) parentView.findViewById(R.id.lists_pager);
- adapter =
- new DialtactsPagerAdapter(
- getChildFragmentManager(),
- tabTitles,
- prefs.getBoolean(
- VisualVoicemailEnabledChecker.PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER, false));
- viewPager.setAdapter(adapter);
-
- // This is deliberate. See cl/172018946 for the app startup implications of using 1 here
- // versus loading more fragments upfront.
- viewPager.setOffscreenPageLimit(1);
-
- viewPager.addOnPageChangeListener(this);
- showTab(DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL);
-
- viewPagerTabs = (ViewPagerTabs) parentView.findViewById(R.id.lists_pager_header);
- viewPagerTabs.configureTabIcons(tabIcons);
- viewPagerTabs.setViewPager(viewPager);
- addOnPageChangeListener(viewPagerTabs);
- removeView = (RemoveView) parentView.findViewById(R.id.remove_view);
- removeViewContent = parentView.findViewById(R.id.remove_view_content);
-
- if (PermissionsUtil.hasReadVoicemailPermissions(getContext())
- && PermissionsUtil.hasAddVoicemailPermissions(getContext())) {
- getActivity()
- .getContentResolver()
- .registerContentObserver(
- VoicemailContract.Status.CONTENT_URI, true, voicemailStatusObserver);
- } else {
- LogUtil.w("ListsFragment.onCreateView", "no voicemail read permissions");
- }
-
- Trace.endSection();
- Trace.endSection();
- return parentView;
- }
-
- @Override
- public void onDestroy() {
- getActivity().getContentResolver().unregisterContentObserver(voicemailStatusObserver);
- super.onDestroy();
- }
-
- public void addOnPageChangeListener(OnPageChangeListener onPageChangeListener) {
- if (!onPageChangeListeners.contains(onPageChangeListener)) {
- onPageChangeListeners.add(onPageChangeListener);
- }
- }
-
- /**
- * Shows the tab with the specified index. If the voicemail tab index is specified, but the
- * voicemail status hasn't been fetched, it will show the speed dial tab and try to show the
- * voicemail tab after the voicemail status has been fetched.
- */
- public void showTab(int index) {
- if (index == DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL) {
- if (adapter.hasActiveVoicemailProvider()) {
- viewPager.setCurrentItem(adapter.getRtlPosition(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL));
- } else if (!hasFetchedVoicemailStatus) {
- // Try to show the voicemail tab after the voicemail status returns.
- showVoicemailTabAfterVoicemailStatusIsFetched = true;
- }
- } else if (index < getTabCount()) {
- viewPager.setCurrentItem(adapter.getRtlPosition(index));
- }
- }
-
- @Override
- public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
- // onPageScrolled(0, 0, 0) is called when app launch. And we should ignore it.
- // It's also called when swipe right from first tab, but we don't care.
- if (positionOffsetPixels != 0) {
- onPageScrolledBeforeScrollStateSettling = true;
- }
- tabIndex = adapter.getRtlPosition(position);
-
- final int count = onPageChangeListeners.size();
- for (int i = 0; i < count; i++) {
- onPageChangeListeners.get(i).onPageScrolled(position, positionOffset, positionOffsetPixels);
- }
- }
-
- @Override
- public void onPageSelected(int position) {
- // onPageScrollStateChanged(SCROLL_STATE_SETTLING) must be called before this.
- // If onPageScrolled() is called before that, the page is selected by swiping;
- // otherwise the page is selected by clicking.
- if (onPageScrolledBeforeScrollStateSettling) {
- Logger.get(getContext()).logImpression(swipeImpressionList[position]);
- onPageScrolledBeforeScrollStateSettling = false;
- } else {
- Logger.get(getContext()).logImpression(clickImpressionList[position]);
- }
-
- PerformanceReport.recordClick(actionTypeList[position]);
-
- LogUtil.i("ListsFragment.onPageSelected", "position: %d", position);
- tabIndex = adapter.getRtlPosition(position);
-
- // Show the tab which has been selected instead.
- showVoicemailTabAfterVoicemailStatusIsFetched = false;
-
- final int count = onPageChangeListeners.size();
- for (int i = 0; i < count; i++) {
- onPageChangeListeners.get(i).onPageSelected(position);
- }
- sendScreenViewForCurrentPosition();
-
- if (currentPage instanceof CallLogFragment) {
- ((CallLogFragment) currentPage).onNotVisible();
- }
- currentPage = adapter.getItem(position);
- if (currentPage instanceof CallLogFragment) {
- ((CallLogFragment) currentPage).onVisible();
- }
- }
-
- @Override
- public void onPageScrollStateChanged(int state) {
- if (state != SCROLL_STATE_SETTLING) {
- onPageScrolledBeforeScrollStateSettling = false;
- }
-
- final int count = onPageChangeListeners.size();
- for (int i = 0; i < count; i++) {
- onPageChangeListeners.get(i).onPageScrollStateChanged(state);
- }
- }
-
- @Override
- public void onVoicemailStatusFetched(Cursor statusCursor) {
- hasFetchedVoicemailStatus = true;
-
- if (getActivity() == null || paused) {
- return;
- }
-
- VoicemailStatusCorruptionHandler.maybeFixVoicemailStatus(
- getContext(), statusCursor, Source.Activity);
-
- // Update hasActiveVoicemailProvider, which controls the number of tabs displayed.
- boolean hasActiveVoicemailProvider =
- VoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor) > 0;
- if (hasActiveVoicemailProvider != adapter.hasActiveVoicemailProvider()) {
- adapter.setHasActiveVoicemailProvider(hasActiveVoicemailProvider);
- adapter.notifyDataSetChanged();
-
- if (hasActiveVoicemailProvider) {
- Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_TAB_VISIBLE);
- viewPagerTabs.updateTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
- } else {
- viewPagerTabs.removeTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
- adapter.removeVoicemailFragment(getChildFragmentManager());
- }
-
- prefs
- .edit()
- .putBoolean(
- VisualVoicemailEnabledChecker.PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER,
- hasActiveVoicemailProvider)
- .apply();
- }
-
- if (hasActiveVoicemailProvider) {
- callLogQueryHandler.fetchVoicemailUnreadCount();
- }
-
- if (adapter.hasActiveVoicemailProvider() && showVoicemailTabAfterVoicemailStatusIsFetched) {
- showVoicemailTabAfterVoicemailStatusIsFetched = false;
- showTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
- }
- }
-
- @Override
- public void onVoicemailUnreadCountFetched(Cursor cursor) {
- if (getActivity() == null || getActivity().isFinishing() || cursor == null) {
- return;
- }
-
- int count = 0;
- try {
- count = cursor.getCount();
- } finally {
- cursor.close();
- }
-
- viewPagerTabs.setUnreadCount(count, DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
- viewPagerTabs.updateTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
- }
-
- @Override
- public void onMissedCallsUnreadCountFetched(Cursor cursor) {
- if (getActivity() == null || getActivity().isFinishing() || cursor == null) {
- return;
- }
-
- int count = 0;
- try {
- count = cursor.getCount();
- } finally {
- cursor.close();
- }
-
- viewPagerTabs.setUnreadCount(count, DialtactsPagerAdapter.TAB_INDEX_HISTORY);
- viewPagerTabs.updateTab(DialtactsPagerAdapter.TAB_INDEX_HISTORY);
- }
-
- @Override
- public boolean onCallsFetched(Cursor statusCursor) {
- // Return false; did not take ownership of cursor
- return false;
- }
-
- public int getCurrentTabIndex() {
- return tabIndex;
- }
-
- public boolean shouldShowFab() {
- // If the VVM TOS is visible, don't show the fab
- if (currentPage instanceof VisualVoicemailCallLogFragment
- && ((VisualVoicemailCallLogFragment) currentPage).isModalAlertVisible()) {
- return false;
- }
-
- return true;
- }
-
- @Override
- public void updateTabUnreadCounts() {
- if (callLogQueryHandler != null) {
- callLogQueryHandler.fetchMissedCallsUnreadCount();
- if (adapter.hasActiveVoicemailProvider()) {
- callLogQueryHandler.fetchVoicemailUnreadCount();
- }
- }
- }
-
- /** External method to mark all missed calls as read. */
- public void markMissedCallsAsReadAndRemoveNotifications() {
- if (callLogQueryHandler != null) {
- callLogQueryHandler.markMissedCallsAsRead();
- CallLogNotificationsService.cancelAllMissedCalls(getContext());
- }
- }
-
- public void showRemoveView(boolean show) {
- removeViewContent.setVisibility(show ? View.VISIBLE : View.GONE);
- removeView.setAlpha(show ? 0 : 1);
- removeView.animate().alpha(show ? 1 : 0).start();
- }
-
- @Override
- public void showMultiSelectRemoveView(boolean show) {
- viewPagerTabs.setVisibility(show ? View.GONE : View.VISIBLE);
- viewPager.setEnableSwipingPages(!show);
- }
-
- public boolean hasFrequents() {
- OldSpeedDialFragment page =
- (OldSpeedDialFragment)
- adapter.getItem(adapter.getRtlPosition(DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL));
- return page.hasFrequents();
- }
-
- public RemoveView getRemoveView() {
- return removeView;
- }
-
- public int getTabCount() {
- return adapter.getCount();
- }
-
- public void sendScreenViewForCurrentPosition() {
- if (!isResumed()) {
- return;
- }
-
- ScreenEvent.Type screenType;
- switch (getCurrentTabIndex()) {
- case DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL:
- screenType = ScreenEvent.Type.SPEED_DIAL;
- break;
- case DialtactsPagerAdapter.TAB_INDEX_HISTORY:
- screenType = ScreenEvent.Type.CALL_LOG;
- break;
- case DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS:
- screenType = ScreenEvent.Type.ALL_CONTACTS;
- break;
- case DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL:
- screenType = ScreenEvent.Type.VOICEMAIL_LOG;
- break;
- default:
- return;
- }
- Logger.get(getActivity()).logScreenView(screenType, getActivity());
- }
-}
diff --git a/java/com/android/dialer/app/list/OldSpeedDialFragment.java b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
deleted file mode 100644
index 9922ee232e2cfb8978a4c9715c3441199278f037..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/list/OldSpeedDialFragment.java
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-package com.android.dialer.app.list;
-
-import static android.Manifest.permission.READ_CONTACTS;
-
-import android.animation.Animator;
-import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
-import android.app.Fragment;
-import android.app.LoaderManager;
-import android.content.CursorLoader;
-import android.content.Loader;
-import android.content.pm.PackageManager;
-import android.database.Cursor;
-import android.graphics.Rect;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Trace;
-import android.support.v13.app.FragmentCompat;
-import android.support.v4.util.LongSparseArray;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.animation.AnimationUtils;
-import android.view.animation.LayoutAnimationController;
-import android.widget.AbsListView;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.FrameLayout;
-import android.widget.FrameLayout.LayoutParams;
-import android.widget.ImageView;
-import android.widget.ListView;
-import com.android.contacts.common.ContactTileLoaderFactory;
-import com.android.contacts.common.list.ContactTileView;
-import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
-import com.android.dialer.app.R;
-import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.common.FragmentUtils;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.util.PermissionsUtil;
-import com.android.dialer.util.ViewUtil;
-import com.android.dialer.widget.EmptyContentView;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-/** This fragment displays the user's favorite/frequent contacts in a grid. */
-public class OldSpeedDialFragment extends Fragment
- implements OnItemClickListener,
- PhoneFavoritesTileAdapter.OnDataSetChangedForAnimationListener,
- EmptyContentView.OnEmptyViewActionButtonClickedListener,
- FragmentCompat.OnRequestPermissionsResultCallback {
-
- private static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
-
- /**
- * By default, the animation code assumes that all items in a list view are of the same height
- * when animating new list items into view (e.g. from the bottom of the screen into view). This
- * can cause incorrect translation offsets when a item that is larger or smaller than other list
- * item is removed from the list. This key is used to provide the actual height of the removed
- * object so that the actual translation appears correct to the user.
- */
- private static final long KEY_REMOVED_ITEM_HEIGHT = Long.MAX_VALUE;
-
- private static final String TAG = "OldSpeedDialFragment";
- /** Used with LoaderManager. */
- private static final int LOADER_ID_CONTACT_TILE = 1;
-
- private final LongSparseArray itemIdTopMap = new LongSparseArray<>();
- private final LongSparseArray itemIdLeftMap = new LongSparseArray<>();
- private final ContactTileView.Listener contactTileAdapterListener =
- new ContactTileAdapterListener(this);
- private final ScrollListener scrollListener = new ScrollListener(this);
- private LoaderManager.LoaderCallbacks contactTileLoaderListener;
- private int animationDuration;
- private PhoneFavoritesTileAdapter contactTileAdapter;
- private PhoneFavoriteListView listView;
- private View contactTileFrame;
- /** Layout used when there are no favorites. */
- private EmptyContentView emptyView;
-
- @Override
- public void onCreate(Bundle savedState) {
- Trace.beginSection(TAG + " onCreate");
- super.onCreate(savedState);
-
- // Construct two base adapters which will become part of PhoneFavoriteMergedAdapter.
- // We don't construct the resultant adapter at this moment since it requires LayoutInflater
- // that will be available on onCreateView().
- contactTileAdapter =
- new PhoneFavoritesTileAdapter(getContext(), contactTileAdapterListener, this);
- contactTileAdapter.setPhotoLoader(ContactPhotoManager.getInstance(getContext()));
- contactTileLoaderListener = new ContactTileLoaderListener(this, contactTileAdapter);
- animationDuration = getResources().getInteger(R.integer.fade_duration);
- Trace.endSection();
- }
-
- @Override
- public void onResume() {
- Trace.beginSection(TAG + " onResume");
- super.onResume();
- if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
- if (getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE) == null) {
- getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, contactTileLoaderListener);
-
- } else {
- getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE).forceLoad();
- }
-
- emptyView.setDescription(R.string.speed_dial_empty);
- emptyView.setActionLabel(R.string.speed_dial_empty_add_favorite_action);
- } else {
- emptyView.setDescription(R.string.permission_no_speeddial);
- emptyView.setActionLabel(R.string.permission_single_turn_on);
- }
- Trace.endSection();
- }
-
- @Override
- public View onCreateView(
- LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- Trace.beginSection(TAG + " onCreateView");
- View parentView = inflater.inflate(R.layout.speed_dial_fragment, container, false);
-
- listView = (PhoneFavoriteListView) parentView.findViewById(R.id.contact_tile_list);
- listView.setOnItemClickListener(this);
- listView.setVerticalScrollBarEnabled(false);
- listView.setVerticalScrollbarPosition(View.SCROLLBAR_POSITION_RIGHT);
- listView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
- listView.getDragDropController().addOnDragDropListener(contactTileAdapter);
- listView.setDragShadowOverlay(
- FragmentUtils.getParentUnsafe(this, HostInterface.class).getDragShadowOverlay());
-
- emptyView = (EmptyContentView) parentView.findViewById(R.id.empty_list_view);
- emptyView.setImage(R.drawable.empty_speed_dial);
- emptyView.setActionClickedListener(this);
-
- contactTileFrame = parentView.findViewById(R.id.contact_tile_frame);
-
- final LayoutAnimationController controller =
- new LayoutAnimationController(
- AnimationUtils.loadAnimation(getContext(), android.R.anim.fade_in));
- controller.setDelay(0);
- listView.setLayoutAnimation(controller);
- listView.setAdapter(contactTileAdapter);
-
- listView.setOnScrollListener(scrollListener);
- listView.setFastScrollEnabled(false);
- listView.setFastScrollAlwaysVisible(false);
-
- // prevent content changes of the list from firing accessibility events.
- listView.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_NONE);
- ContentChangedFilter.addToParent(listView);
-
- Trace.endSection();
- return parentView;
- }
-
- public boolean hasFrequents() {
- if (contactTileAdapter == null) {
- return false;
- }
- return contactTileAdapter.getNumFrequents() > 0;
- }
-
- /* package */ void setEmptyViewVisibility(final boolean visible) {
- final int previousVisibility = emptyView.getVisibility();
- final int emptyViewVisibility = visible ? View.VISIBLE : View.GONE;
- final int listViewVisibility = visible ? View.GONE : View.VISIBLE;
-
- if (previousVisibility != emptyViewVisibility) {
- final FrameLayout.LayoutParams params = (LayoutParams) contactTileFrame.getLayoutParams();
- params.height = visible ? LayoutParams.WRAP_CONTENT : LayoutParams.MATCH_PARENT;
- contactTileFrame.setLayoutParams(params);
- emptyView.setVisibility(emptyViewVisibility);
- listView.setVisibility(listViewVisibility);
- }
- }
-
- @Override
- public void onStart() {
- super.onStart();
- listView
- .getDragDropController()
- .addOnDragDropListener(FragmentUtils.getParentUnsafe(this, OnDragDropListener.class));
- FragmentUtils.getParentUnsafe(this, HostInterface.class)
- .setDragDropController(listView.getDragDropController());
-
- // Use initLoader() instead of restartLoader() to refraining unnecessary reload.
- // This method call implicitly assures ContactTileLoaderListener's onLoadFinished() will
- // be called, on which we'll check if "all" contacts should be reloaded again or not.
- if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
- getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, contactTileLoaderListener);
- } else {
- setEmptyViewVisibility(true);
- }
- }
-
- /**
- * {@inheritDoc}
- *
- *
This is only effective for elements provided by {@link #contactTileAdapter}. {@link
- * #contactTileAdapter} has its own logic for click events.
- */
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- final int contactTileAdapterCount = contactTileAdapter.getCount();
- if (position <= contactTileAdapterCount) {
- LogUtil.e(
- "OldSpeedDialFragment.onItemClick",
- "event for unexpected position. The position "
- + position
- + " is before \"all\" section. Ignored.");
- }
- }
-
- /**
- * Cache the current view offsets into memory. Once a relayout of views in the ListView has
- * happened due to a dataset change, the cached offsets are used to create animations that slide
- * views from their previous positions to their new ones, to give the appearance that the views
- * are sliding into their new positions.
- */
- private void saveOffsets(int removedItemHeight) {
- final int firstVisiblePosition = listView.getFirstVisiblePosition();
- for (int i = 0; i < listView.getChildCount(); i++) {
- final View child = listView.getChildAt(i);
- final int position = firstVisiblePosition + i;
- // Since we are getting the position from mListView and then querying
- // mContactTileAdapter, its very possible that things are out of sync
- // and we might index out of bounds. Let's make sure that this doesn't happen.
- if (!contactTileAdapter.isIndexInBound(position)) {
- continue;
- }
- final long itemId = contactTileAdapter.getItemId(position);
- itemIdTopMap.put(itemId, child.getTop());
- itemIdLeftMap.put(itemId, child.getLeft());
- }
- itemIdTopMap.put(KEY_REMOVED_ITEM_HEIGHT, removedItemHeight);
- }
-
- /*
- * Performs animations for the gridView
- */
- private void animateGridView(final long... idsInPlace) {
- if (itemIdTopMap.size() == 0) {
- // Don't do animations if the database is being queried for the first time and
- // the previous item offsets have not been cached, or the user hasn't done anything
- // (dragging, swiping etc) that requires an animation.
- return;
- }
-
- ViewUtil.doOnPreDraw(
- listView,
- true,
- new Runnable() {
- @Override
- public void run() {
-
- final int firstVisiblePosition = listView.getFirstVisiblePosition();
- final AnimatorSet animSet = new AnimatorSet();
- final ArrayList animators = new ArrayList();
- for (int i = 0; i < listView.getChildCount(); i++) {
- final View child = listView.getChildAt(i);
- int position = firstVisiblePosition + i;
-
- // Since we are getting the position from mListView and then querying
- // mContactTileAdapter, its very possible that things are out of sync
- // and we might index out of bounds. Let's make sure that this doesn't happen.
- if (!contactTileAdapter.isIndexInBound(position)) {
- continue;
- }
-
- final long itemId = contactTileAdapter.getItemId(position);
-
- if (containsId(idsInPlace, itemId)) {
- animators.add(ObjectAnimator.ofFloat(child, "alpha", 0.0f, 1.0f));
- break;
- } else {
- Integer startTop = itemIdTopMap.get(itemId);
- Integer startLeft = itemIdLeftMap.get(itemId);
- final int top = child.getTop();
- final int left = child.getLeft();
- int deltaX = 0;
- int deltaY = 0;
-
- if (startLeft != null) {
- if (startLeft != left) {
- deltaX = startLeft - left;
- animators.add(ObjectAnimator.ofFloat(child, "translationX", deltaX, 0.0f));
- }
- }
-
- if (startTop != null) {
- if (startTop != top) {
- deltaY = startTop - top;
- animators.add(ObjectAnimator.ofFloat(child, "translationY", deltaY, 0.0f));
- }
- }
- }
- }
-
- if (animators.size() > 0) {
- animSet.setDuration(animationDuration).playTogether(animators);
- animSet.start();
- }
-
- itemIdTopMap.clear();
- itemIdLeftMap.clear();
- }
- });
- }
-
- private boolean containsId(long[] ids, long target) {
- // Linear search on array is fine because this is typically only 0-1 elements long
- for (int i = 0; i < ids.length; i++) {
- if (ids[i] == target) {
- return true;
- }
- }
- return false;
- }
-
- @Override
- public void onDataSetChangedForAnimation(long... idsInPlace) {
- animateGridView(idsInPlace);
- }
-
- @Override
- public void cacheOffsetsForDatasetChange() {
- saveOffsets(0);
- }
-
- @Override
- public void onEmptyViewActionButtonClicked() {
- String[] deniedPermissions =
- PermissionsUtil.getPermissionsCurrentlyDenied(
- getContext(), PermissionsUtil.allContactsGroupPermissionsUsedInDialer);
- if (deniedPermissions.length > 0) {
- LogUtil.i(
- "OldSpeedDialFragment.onEmptyViewActionButtonClicked",
- "Requesting permissions: " + Arrays.toString(deniedPermissions));
- FragmentCompat.requestPermissions(
- this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
- } else {
- // Switch tabs
- FragmentUtils.getParentUnsafe(this, HostInterface.class).showAllContactsTab();
- }
- }
-
- @Override
- public void onRequestPermissionsResult(
- int requestCode, String[] permissions, int[] grantResults) {
- if (requestCode == READ_CONTACTS_PERMISSION_REQUEST_CODE) {
- if (grantResults.length == 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
- PermissionsUtil.notifyPermissionGranted(getContext(), READ_CONTACTS);
- }
- }
- }
-
- private static final class ContactTileLoaderListener
- implements LoaderManager.LoaderCallbacks {
-
- private final OldSpeedDialFragment fragment;
- private final PhoneFavoritesTileAdapter adapter;
-
- ContactTileLoaderListener(OldSpeedDialFragment fragment, PhoneFavoritesTileAdapter adapter) {
- this.fragment = fragment;
- this.adapter = adapter;
- }
-
- @Override
- public CursorLoader onCreateLoader(int id, Bundle args) {
- return ContactTileLoaderFactory.createStrequentPhoneOnlyLoader(fragment.getContext());
- }
-
- @Override
- public void onLoadFinished(Loader loader, Cursor data) {
- adapter.setContactCursor(data);
- fragment.setEmptyViewVisibility(adapter.getCount() == 0);
- FragmentUtils.getParentUnsafe(fragment, HostInterface.class)
- .setHasFrequents(adapter.getNumFrequents() > 0);
- }
-
- @Override
- public void onLoaderReset(Loader loader) {}
- }
-
- private static final class ContactTileAdapterListener implements ContactTileView.Listener {
-
- private final OldSpeedDialFragment fragment;
-
- ContactTileAdapterListener(OldSpeedDialFragment fragment) {
- this.fragment = fragment;
- }
-
- @Override
- public void onContactSelected(
- Uri contactUri, Rect targetRect, CallSpecificAppData callSpecificAppData) {
- FragmentUtils.getParentUnsafe(fragment, OnPhoneNumberPickerActionListener.class)
- .onPickDataUri(contactUri, false /* isVideoCall */, callSpecificAppData);
- }
-
- @Override
- public void onCallNumberDirectly(String phoneNumber, CallSpecificAppData callSpecificAppData) {
- FragmentUtils.getParentUnsafe(fragment, OnPhoneNumberPickerActionListener.class)
- .onPickPhoneNumber(phoneNumber, false /* isVideoCall */, callSpecificAppData);
- }
- }
-
- private static class ScrollListener implements ListView.OnScrollListener {
-
- private final OldSpeedDialFragment fragment;
-
- ScrollListener(OldSpeedDialFragment fragment) {
- this.fragment = fragment;
- }
-
- @Override
- public void onScroll(
- AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
- FragmentUtils.getParentUnsafe(fragment, OnListFragmentScrolledListener.class)
- .onListFragmentScroll(firstVisibleItem, visibleItemCount, totalItemCount);
- }
-
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- FragmentUtils.getParentUnsafe(fragment, OnListFragmentScrolledListener.class)
- .onListFragmentScrollStateChange(scrollState);
- }
- }
-
- /** Interface for parents of OldSpeedDialFragment to implement. */
- public interface HostInterface {
-
- void setDragDropController(DragDropController controller);
-
- void showAllContactsTab();
-
- ImageView getDragShadowOverlay();
-
- void setHasFrequents(boolean hasFrequents);
- }
-}
diff --git a/java/com/android/dialer/app/list/OnDragDropListener.java b/java/com/android/dialer/app/list/OnDragDropListener.java
deleted file mode 100644
index b71c7fef6e5c9c9e0d9074b7a858fd1232a63247..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/list/OnDragDropListener.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.dialer.app.list;
-
-/**
- * Classes that want to receive callbacks in response to drag events should implement this
- * interface.
- */
-public interface OnDragDropListener {
-
- /**
- * Called when a drag is started.
- *
- * @param x X-coordinate of the drag event
- * @param y Y-coordinate of the drag event
- * @param view The contact tile which the drag was started on
- */
- void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view);
-
- /**
- * Called when a drag is in progress and the user moves the dragged contact to a location.
- *
- * @param x X-coordinate of the drag event
- * @param y Y-coordinate of the drag event
- * @param view Contact tile in the ListView which is currently being displaced by the dragged
- * contact
- */
- void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view);
-
- /**
- * Called when a drag is completed (whether by dropping it somewhere or simply by dragging the
- * contact off the screen)
- *
- * @param x X-coordinate of the drag event
- * @param y Y-coordinate of the drag event
- */
- void onDragFinished(int x, int y);
-
- /**
- * Called when a contact has been dropped on the remove view, indicating that the user wants to
- * remove this contact.
- */
- void onDroppedOnRemove();
-}
diff --git a/java/com/android/dialer/app/list/OnListFragmentScrolledListener.java b/java/com/android/dialer/app/list/OnListFragmentScrolledListener.java
deleted file mode 100644
index a76f3b527c7c0d39eaa3237a543584bedf083921..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/list/OnListFragmentScrolledListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2013 Google Inc.
- * Licensed to 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.
- */
-package com.android.dialer.app.list;
-
-/*
- * Interface to provide callback to activity when a child fragment is scrolled
- */
-public interface OnListFragmentScrolledListener {
-
- void onListFragmentScrollStateChange(int scrollState);
-
- void onListFragmentScroll(int firstVisibleItem, int visibleItemCount, int totalItemCount);
-}
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteListView.java b/java/com/android/dialer/app/list/PhoneFavoriteListView.java
deleted file mode 100644
index ff867f9c00bb8c71eae4bc12473911c3690a5c55..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/list/PhoneFavoriteListView.java
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.app.list;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.content.Context;
-import android.content.res.Configuration;
-import android.graphics.Bitmap;
-import android.os.Handler;
-import android.util.AttributeSet;
-import android.view.DragEvent;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.widget.GridView;
-import android.widget.ImageView;
-import com.android.dialer.app.R;
-import com.android.dialer.app.list.DragDropController.DragItemContainer;
-import com.android.dialer.common.LogUtil;
-
-/** Viewgroup that presents the user's speed dial contacts in a grid. */
-public class PhoneFavoriteListView extends GridView
- implements OnDragDropListener, DragItemContainer {
-
- public static final String LOG_TAG = PhoneFavoriteListView.class.getSimpleName();
- final int[] locationOnScreen = new int[2];
- private static final long SCROLL_HANDLER_DELAY_MILLIS = 5;
- private static final int DRAG_SCROLL_PX_UNIT = 25;
- private static final float DRAG_SHADOW_ALPHA = 0.7f;
- /**
- * {@link #topScrollBound} and {@link bottomScrollBound} will be offseted to the top / bottom by
- * {@link #getHeight} * {@link #BOUND_GAP_RATIO} pixels.
- */
- private static final float BOUND_GAP_RATIO = 0.2f;
-
- private float touchSlop;
- private int topScrollBound;
- private int bottomScrollBound;
- private int lastDragY;
- private Handler scrollHandler;
- private final Runnable dragScroller =
- new Runnable() {
- @Override
- public void run() {
- if (lastDragY <= topScrollBound) {
- smoothScrollBy(-DRAG_SCROLL_PX_UNIT, (int) SCROLL_HANDLER_DELAY_MILLIS);
- } else if (lastDragY >= bottomScrollBound) {
- smoothScrollBy(DRAG_SCROLL_PX_UNIT, (int) SCROLL_HANDLER_DELAY_MILLIS);
- }
- scrollHandler.postDelayed(this, SCROLL_HANDLER_DELAY_MILLIS);
- }
- };
- private boolean isDragScrollerRunning = false;
- private int touchDownForDragStartY;
- private Bitmap dragShadowBitmap;
- private ImageView dragShadowOverlay;
- private final AnimatorListenerAdapter dragShadowOverAnimatorListener =
- new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- if (dragShadowBitmap != null) {
- dragShadowBitmap.recycle();
- dragShadowBitmap = null;
- }
- dragShadowOverlay.setVisibility(GONE);
- dragShadowOverlay.setImageBitmap(null);
- }
- };
- private View dragShadowParent;
- private int animationDuration;
- // X and Y offsets inside the item from where the user grabbed to the
- // child's left coordinate. This is used to aid in the drawing of the drag shadow.
- private int touchOffsetToChildLeft;
- private int touchOffsetToChildTop;
- private int dragShadowLeft;
- private int dragShadowTop;
- private DragDropController dragDropController = new DragDropController(this);
-
- public PhoneFavoriteListView(Context context) {
- this(context, null);
- }
-
- public PhoneFavoriteListView(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public PhoneFavoriteListView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- animationDuration = context.getResources().getInteger(R.integer.fade_duration);
- touchSlop = ViewConfiguration.get(context).getScaledPagingTouchSlop();
- dragDropController.addOnDragDropListener(this);
- }
-
- @Override
- protected void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- touchSlop = ViewConfiguration.get(getContext()).getScaledPagingTouchSlop();
- }
-
- /**
- * TODO: This is all swipe to remove code (nothing to do with drag to remove). This should be
- * cleaned up and removed once drag to remove becomes the only way to remove contacts.
- */
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- if (ev.getAction() == MotionEvent.ACTION_DOWN) {
- touchDownForDragStartY = (int) ev.getY();
- }
-
- return super.onInterceptTouchEvent(ev);
- }
-
- @Override
- public boolean onDragEvent(DragEvent event) {
- final int action = event.getAction();
- final int eX = (int) event.getX();
- final int eY = (int) event.getY();
- switch (action) {
- case DragEvent.ACTION_DRAG_STARTED:
- {
- if (!PhoneFavoriteTileView.DRAG_PHONE_FAVORITE_TILE.equals(event.getLocalState())) {
- // Ignore any drag events that were not propagated by long pressing
- // on a {@link PhoneFavoriteTileView}
- return false;
- }
- if (!dragDropController.handleDragStarted(this, eX, eY)) {
- return false;
- }
- break;
- }
- case DragEvent.ACTION_DRAG_LOCATION:
- lastDragY = eY;
- dragDropController.handleDragHovered(this, eX, eY);
- // Kick off {@link #mScrollHandler} if it's not started yet.
- if (!isDragScrollerRunning
- &&
- // And if the distance traveled while dragging exceeds the touch slop
- (Math.abs(lastDragY - touchDownForDragStartY) >= 4 * touchSlop)) {
- isDragScrollerRunning = true;
- ensureScrollHandler();
- scrollHandler.postDelayed(dragScroller, SCROLL_HANDLER_DELAY_MILLIS);
- }
- break;
- case DragEvent.ACTION_DRAG_ENTERED:
- final int boundGap = (int) (getHeight() * BOUND_GAP_RATIO);
- topScrollBound = (getTop() + boundGap);
- bottomScrollBound = (getBottom() - boundGap);
- break;
- case DragEvent.ACTION_DRAG_EXITED:
- case DragEvent.ACTION_DRAG_ENDED:
- case DragEvent.ACTION_DROP:
- ensureScrollHandler();
- scrollHandler.removeCallbacks(dragScroller);
- isDragScrollerRunning = false;
- // Either a successful drop or it's ended with out drop.
- if (action == DragEvent.ACTION_DROP || action == DragEvent.ACTION_DRAG_ENDED) {
- dragDropController.handleDragFinished(eX, eY, false);
- }
- break;
- default:
- break;
- }
- // This ListView will consume the drag events on behalf of its children.
- return true;
- }
-
- public void setDragShadowOverlay(ImageView overlay) {
- dragShadowOverlay = overlay;
- dragShadowParent = (View) dragShadowOverlay.getParent();
- }
-
- /** Find the view under the pointer. */
- private View getViewAtPosition(int x, int y) {
- final int count = getChildCount();
- View child;
- for (int childIdx = 0; childIdx < count; childIdx++) {
- child = getChildAt(childIdx);
- if (y >= child.getTop()
- && y <= child.getBottom()
- && x >= child.getLeft()
- && x <= child.getRight()) {
- return child;
- }
- }
- return null;
- }
-
- private void ensureScrollHandler() {
- if (scrollHandler == null) {
- scrollHandler = getHandler();
- }
- }
-
- public DragDropController getDragDropController() {
- return dragDropController;
- }
-
- @Override
- public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView tileView) {
- if (dragShadowOverlay == null) {
- return;
- }
-
- dragShadowOverlay.clearAnimation();
- dragShadowBitmap = createDraggedChildBitmap(tileView);
- if (dragShadowBitmap == null) {
- return;
- }
-
- tileView.getLocationOnScreen(locationOnScreen);
- dragShadowLeft = locationOnScreen[0];
- dragShadowTop = locationOnScreen[1];
-
- // x and y are the coordinates of the on-screen touch event. Using these
- // and the on-screen location of the tileView, calculate the difference between
- // the position of the user's finger and the position of the tileView. These will
- // be used to offset the location of the drag shadow so that it appears that the
- // tileView is positioned directly under the user's finger.
- touchOffsetToChildLeft = x - dragShadowLeft;
- touchOffsetToChildTop = y - dragShadowTop;
-
- dragShadowParent.getLocationOnScreen(locationOnScreen);
- dragShadowLeft -= locationOnScreen[0];
- dragShadowTop -= locationOnScreen[1];
-
- dragShadowOverlay.setImageBitmap(dragShadowBitmap);
- dragShadowOverlay.setVisibility(VISIBLE);
- dragShadowOverlay.setAlpha(DRAG_SHADOW_ALPHA);
-
- dragShadowOverlay.setX(dragShadowLeft);
- dragShadowOverlay.setY(dragShadowTop);
- }
-
- @Override
- public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView tileView) {
- // Update the drag shadow location.
- dragShadowParent.getLocationOnScreen(locationOnScreen);
- dragShadowLeft = x - touchOffsetToChildLeft - locationOnScreen[0];
- dragShadowTop = y - touchOffsetToChildTop - locationOnScreen[1];
- // Draw the drag shadow at its last known location if the drag shadow exists.
- if (dragShadowOverlay != null) {
- dragShadowOverlay.setX(dragShadowLeft);
- dragShadowOverlay.setY(dragShadowTop);
- }
- }
-
- @Override
- public void onDragFinished(int x, int y) {
- if (dragShadowOverlay != null) {
- dragShadowOverlay.clearAnimation();
- dragShadowOverlay
- .animate()
- .alpha(0.0f)
- .setDuration(animationDuration)
- .setListener(dragShadowOverAnimatorListener)
- .start();
- }
- }
-
- @Override
- public void onDroppedOnRemove() {}
-
- private Bitmap createDraggedChildBitmap(View view) {
- view.setDrawingCacheEnabled(true);
- final Bitmap cache = view.getDrawingCache();
-
- Bitmap bitmap = null;
- if (cache != null) {
- try {
- bitmap = cache.copy(Bitmap.Config.ARGB_8888, false);
- } catch (final OutOfMemoryError e) {
- LogUtil.w(LOG_TAG, "Failed to copy bitmap from Drawing cache", e);
- bitmap = null;
- }
- }
-
- view.destroyDrawingCache();
- view.setDrawingCacheEnabled(false);
-
- return bitmap;
- }
-
- @Override
- public PhoneFavoriteSquareTileView getViewForLocation(int x, int y) {
- getLocationOnScreen(locationOnScreen);
- // Calculate the X and Y coordinates of the drag event relative to the view
- final int viewX = x - locationOnScreen[0];
- final int viewY = y - locationOnScreen[1];
- final View child = getViewAtPosition(viewX, viewY);
-
- if (!(child instanceof PhoneFavoriteSquareTileView)) {
- return null;
- }
-
- return (PhoneFavoriteSquareTileView) child;
- }
-}
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java
deleted file mode 100644
index 8fe67f4f090ebff7a4cef69cb9c2efff93e0f8f9..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
-
-* Copyright (C) 2011 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.
-*/
-package com.android.dialer.app.list;
-
-import android.content.Context;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.QuickContact;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.ImageButton;
-import android.widget.TextView;
-import com.android.contacts.common.list.ContactEntry;
-import com.android.dialer.app.R;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.widget.BidiTextView;
-
-/** Displays the contact's picture overlaid with their name and number type in a tile. */
-public class PhoneFavoriteSquareTileView extends PhoneFavoriteTileView {
-
- private final float heightToWidthRatio;
-
- private ImageButton secondaryButton;
-
- private ContactEntry contactEntry;
-
- public PhoneFavoriteSquareTileView(Context context, AttributeSet attrs) {
- super(context, attrs);
-
- heightToWidthRatio =
- getResources().getFraction(R.dimen.contact_tile_height_to_width_ratio, 1, 1);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- BidiTextView nameView = findViewById(R.id.contact_tile_name);
- nameView.setElegantTextHeight(false);
-
- TextView phoneTypeView = findViewById(R.id.contact_tile_phone_type);
- phoneTypeView.setElegantTextHeight(false);
- secondaryButton = findViewById(R.id.contact_tile_secondary_button);
- }
-
- @Override
- protected int getApproximateImageSize() {
- // The picture is the full size of the tile (minus some padding, but we can be generous)
- return getWidth();
- }
-
- private void launchQuickContact() {
- QuickContact.showQuickContact(
- getContext(),
- PhoneFavoriteSquareTileView.this,
- getLookupUri(),
- null,
- Phone.CONTENT_ITEM_TYPE);
- }
-
- @Override
- public void loadFromContact(ContactEntry entry) {
- super.loadFromContact(entry);
- if (entry != null) {
- secondaryButton.setOnClickListener(
- new OnClickListener() {
- @Override
- public void onClick(View v) {
- Logger.get(getContext())
- .logInteraction(InteractionEvent.Type.SPEED_DIAL_OPEN_CONTACT_CARD);
- launchQuickContact();
- }
- });
- }
- contactEntry = entry;
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- final int width = MeasureSpec.getSize(widthMeasureSpec);
- final int height = (int) (heightToWidthRatio * width);
- final int count = getChildCount();
- for (int i = 0; i < count; i++) {
- getChildAt(i)
- .measure(
- MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));
- }
- setMeasuredDimension(width, height);
- }
-
- @Override
- protected String getNameForView(ContactEntry contactEntry) {
- return contactEntry.getPreferredDisplayName(getContext());
- }
-
- public ContactEntry getContactEntry() {
- return contactEntry;
- }
-}
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
deleted file mode 100644
index 7f0a6bcd5bf863a9b8cd1e8cb5c4ce8870f84ed7..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
-
-* Copyright (C) 2011 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.
-*/
-package com.android.dialer.app.list;
-
-import android.content.ClipData;
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Point;
-import android.net.Uri;
-import android.provider.ContactsContract.PinnedPositions;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.ImageView;
-import com.android.contacts.common.MoreContactUtils;
-import com.android.contacts.common.list.ContactEntry;
-import com.android.contacts.common.list.ContactTileView;
-import com.android.contacts.common.model.ContactLoader;
-import com.android.dialer.app.R;
-import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.callintent.SpeedDialContactType;
-import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
-import com.android.dialer.lettertile.LetterTileDrawable;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-
-/**
- * A light version of the {@link com.android.contacts.common.list.ContactTileView} that is used in
- * Dialtacts for frequently called contacts. Slightly different behavior from superclass when you
- * tap it, you want to call the frequently-called number for the contact, even if that is not the
- * default number for that contact. This abstract class is the super class to both the row and tile
- * view.
- */
-public abstract class PhoneFavoriteTileView extends ContactTileView {
-
- // Constant to pass to the drag event so that the drag action only happens when a phone favorite
- // tile is long pressed.
- static final String DRAG_PHONE_FAVORITE_TILE = "PHONE_FAVORITE_TILE";
- private static final String TAG = PhoneFavoriteTileView.class.getSimpleName();
- // These parameters instruct the photo manager to display the default image/letter at 70% of
- // its normal size, and vertically offset upwards 12% towards the top of the letter tile, to
- // make room for the contact name and number label at the bottom of the image.
- private static final float DEFAULT_IMAGE_LETTER_OFFSET = -0.12f;
- private static final float DEFAULT_IMAGE_LETTER_SCALE = 0.70f;
- // Placeholder clip data object that is attached to drag shadows so that text views
- // don't crash with an NPE if the drag shadow is released in their bounds
- private static final ClipData EMPTY_CLIP_DATA = ClipData.newPlainText("", "");
- /** View that contains the transparent shadow that is overlaid on top of the contact image. */
- private View shadowOverlay;
- /** Users' most frequent phone number. */
- private String phoneNumberString;
-
- private boolean isPinned;
- private boolean isStarred;
- private int position = -1;
-
- public PhoneFavoriteTileView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- shadowOverlay = findViewById(R.id.shadow_overlay);
-
- setOnLongClickListener(
- (v) -> {
- final PhoneFavoriteTileView view = (PhoneFavoriteTileView) v;
- // NOTE The drag shadow is handled in the ListView.
- view.startDragAndDrop(
- EMPTY_CLIP_DATA, new EmptyDragShadowBuilder(), DRAG_PHONE_FAVORITE_TILE, 0);
- return true;
- });
- }
-
- @Override
- public void loadFromContact(ContactEntry entry) {
- super.loadFromContact(entry);
- // Set phone number to null in case we're reusing the view.
- phoneNumberString = null;
- isPinned = (entry.pinned != PinnedPositions.UNPINNED);
- isStarred = entry.isFavorite;
- if (entry != null) {
- sendViewNotification(getContext(), entry.lookupUri);
- // Grab the phone-number to call directly. See {@link onClick()}.
- phoneNumberString = entry.phoneNumber;
-
- // If this is a blank entry, don't show anything. For this to truly look like an empty row
- // the entire ContactTileRow needs to be hidden.
- if (entry == ContactEntry.BLANK_ENTRY) {
- setVisibility(View.INVISIBLE);
- } else {
- final ImageView starIcon = (ImageView) findViewById(R.id.contact_star_icon);
- starIcon.setVisibility(entry.isFavorite ? View.VISIBLE : View.GONE);
- setVisibility(View.VISIBLE);
- }
- }
- }
-
- @Override
- protected boolean isDarkTheme() {
- return false;
- }
-
- @Override
- protected OnClickListener createClickListener() {
- return new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mListener == null) {
- return;
- }
-
- CallSpecificAppData.Builder callSpecificAppData =
- CallSpecificAppData.newBuilder()
- .setAllowAssistedDialing(true)
- .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL)
- .setSpeedDialContactPosition(position);
- if (isStarred) {
- callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.STARRED_CONTACT);
- } else {
- callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.FREQUENT_CONTACT);
- }
- if (isPinned) {
- callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.PINNED_CONTACT);
- }
-
- if (TextUtils.isEmpty(phoneNumberString)) {
- // Don't set performance report now, since user may spend some time on picking a number
-
- // Copy "superclass" implementation
- Logger.get(getContext())
- .logInteraction(InteractionEvent.Type.SPEED_DIAL_CLICK_CONTACT_WITH_AMBIGUOUS_NUMBER);
- mListener.onContactSelected(
- getLookupUri(),
- MoreContactUtils.getTargetRectFromView(PhoneFavoriteTileView.this),
- callSpecificAppData.build());
- } else {
- // When you tap a frequently-called contact, you want to
- // call them at the number that you usually talk to them
- // at (i.e. the one displayed in the UI), regardless of
- // whether that's their default number.
- mListener.onCallNumberDirectly(phoneNumberString, callSpecificAppData.build());
- }
- }
- };
- }
-
- @Override
- protected DefaultImageRequest getDefaultImageRequest(String displayName, String lookupKey) {
- return new DefaultImageRequest(
- displayName,
- lookupKey,
- LetterTileDrawable.TYPE_DEFAULT,
- DEFAULT_IMAGE_LETTER_SCALE,
- DEFAULT_IMAGE_LETTER_OFFSET,
- false);
- }
-
- @Override
- protected void configureViewForImage(boolean isDefaultImage) {
- // Hide the shadow overlay if the image is a default image (i.e. colored letter tile)
- if (shadowOverlay != null) {
- shadowOverlay.setVisibility(isDefaultImage ? View.GONE : View.VISIBLE);
- }
- }
-
- @Override
- protected boolean isContactPhotoCircular() {
- // Unlike Contacts' tiles, the Dialer's favorites tiles are square.
- return false;
- }
-
- public void setPosition(int position) {
- this.position = position;
- }
-
- private ContactLoader loader;
-
- /**
- * Send a notification using a {@link ContactLoader} to inform the sync adapter that we are
- * viewing a particular contact, so that it can download the high-res photo.
- */
- private void sendViewNotification(Context context, Uri contactUri) {
- if (loader != null) {
- // Cancels the current load if it's running and clears up any memory if it's using any.
- loader.reset();
- }
- loader = new ContactLoader(context, contactUri, true /* postViewNotification */);
- // Immediately release anything we're holding in memory
- loader.registerListener(0, (loader1, contact) -> loader.reset());
- loader.startLoading();
- }
-
- /**
- * A {@link View.DragShadowBuilder} that doesn't draw anything. An object of this class should be
- * passed to {@link View#startDragAndDrop} to prevent the framework from drawing a drag shadow.
- */
- public static class EmptyDragShadowBuilder extends View.DragShadowBuilder {
-
- @Override
- public void onProvideShadowMetrics(Point size, Point touch) {
- // A workaround for P+ not accepting non-positive drag shadow sizes.
- size.set(1, 1);
- touch.set(0, 0);
- }
-
- @Override
- public void onDrawShadow(Canvas canvas) {
- // Don't draw anything
- }
- }
-}
diff --git a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
deleted file mode 100644
index 4cc48a6dec844f3324b0cec74663c1eb1334f7ca..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
+++ /dev/null
@@ -1,697 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-package com.android.dialer.app.list;
-
-import android.content.ContentProviderOperation;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.OperationApplicationException;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.RemoteException;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.PinnedPositions;
-import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
-import android.util.LongSparseArray;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import com.android.contacts.common.ContactTileLoaderFactory;
-import com.android.contacts.common.list.ContactEntry;
-import com.android.contacts.common.list.ContactTileView;
-import com.android.dialer.app.R;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.contacts.ContactsComponent;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.shortcuts.ShortcutRefresher;
-import com.android.dialer.strictmode.StrictModeUtils;
-import com.google.common.collect.ComparisonChain;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.PriorityQueue;
-
-/** Also allows for a configurable number of columns as well as a maximum row of tiled contacts. */
-public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDropListener {
-
- // Pinned positions start from 1, so there are a total of 20 maximum pinned contacts
- private static final int PIN_LIMIT = 21;
- private static final String TAG = PhoneFavoritesTileAdapter.class.getSimpleName();
- private static final boolean DEBUG = false;
- /**
- * The soft limit on how many contact tiles to show. NOTE This soft limit would not restrict the
- * number of starred contacts to show, rather 1. If the count of starred contacts is less than
- * this limit, show 20 tiles total. 2. If the count of starred contacts is more than or equal to
- * this limit, show all starred tiles and no frequents.
- */
- private static final int TILES_SOFT_LIMIT = 20;
- /** Contact data stored in cache. This is used to populate the associated view. */
- private ArrayList contactEntries = null;
-
- private int numFrequents;
- private int numStarred;
-
- private ContactTileView.Listener listener;
- private OnDataSetChangedForAnimationListener dataSetChangedListener;
- private Context context;
- private Resources resources;
- private final Comparator contactEntryComparator =
- new Comparator() {
- @Override
- public int compare(ContactEntry lhs, ContactEntry rhs) {
-
- return ComparisonChain.start()
- .compare(lhs.pinned, rhs.pinned)
- .compare(getPreferredSortName(lhs), getPreferredSortName(rhs))
- .result();
- }
-
- private String getPreferredSortName(ContactEntry contactEntry) {
- return ContactsComponent.get(context)
- .contactDisplayPreferences()
- .getSortName(contactEntry.namePrimary, contactEntry.nameAlternative);
- }
- };
- /** Back up of the temporarily removed Contact during dragging. */
- private ContactEntry draggedEntry = null;
- /** Position of the temporarily removed contact in the cache. */
- private int draggedEntryIndex = -1;
- /** New position of the temporarily removed contact in the cache. */
- private int dropEntryIndex = -1;
- /** New position of the temporarily entered contact in the cache. */
- private int dragEnteredEntryIndex = -1;
-
- private boolean awaitingRemove = false;
- private boolean delayCursorUpdates = false;
- private ContactPhotoManager photoManager;
-
- /** Indicates whether a drag is in process. */
- private boolean inDragging = false;
-
- public PhoneFavoritesTileAdapter(
- Context context,
- ContactTileView.Listener listener,
- OnDataSetChangedForAnimationListener dataSetChangedListener) {
- this.dataSetChangedListener = dataSetChangedListener;
- this.listener = listener;
- this.context = context;
- resources = context.getResources();
- numFrequents = 0;
- contactEntries = new ArrayList<>();
- }
-
- void setPhotoLoader(ContactPhotoManager photoLoader) {
- photoManager = photoLoader;
- }
-
- /**
- * Indicates whether a drag is in process.
- *
- * @param inDragging Boolean variable indicating whether there is a drag in process.
- */
- private void setInDragging(boolean inDragging) {
- delayCursorUpdates = inDragging;
- this.inDragging = inDragging;
- }
-
- /**
- * Gets the number of frequents from the passed in cursor.
- *
- *
This methods is needed so the GroupMemberTileAdapter can override this.
- *
- * @param cursor The cursor to get number of frequents from.
- */
- private void saveNumFrequentsFromCursor(Cursor cursor) {
- numFrequents = cursor.getCount() - numStarred;
- }
-
- /**
- * Creates {@link ContactTileView}s for each item in {@link Cursor}.
- *
- *
Else use {@link ContactTileLoaderFactory}
- */
- void setContactCursor(Cursor cursor) {
- if (!delayCursorUpdates && cursor != null && !cursor.isClosed()) {
- numStarred = getNumStarredContacts(cursor);
- if (awaitingRemove) {
- dataSetChangedListener.cacheOffsetsForDatasetChange();
- }
-
- saveNumFrequentsFromCursor(cursor);
- saveCursorToCache(cursor);
- // cause a refresh of any views that rely on this data
- notifyDataSetChanged();
- // about to start redraw
- dataSetChangedListener.onDataSetChangedForAnimation();
- }
- }
-
- /**
- * Saves the cursor data to the cache, to speed up UI changes.
- *
- * @param cursor Returned cursor from {@link ContactTileLoaderFactory} with data to populate the
- * view.
- */
- private void saveCursorToCache(Cursor cursor) {
- contactEntries.clear();
-
- if (cursor == null) {
- return;
- }
-
- final LongSparseArray
Nieodebrane: %s Zablokowane: %s
- %d %
+ %d %%Łącznie: %1$s, %2$sŁącznie: %sData początkowa
diff --git a/java/com/android/dialer/callstats/res/values/styles.xml b/java/com/android/dialer/callstats/res/values/styles.xml
index 3aae79757d223e1f2ee27d9e7dd0dca5486dffca..8a22520411603bcc344a7671de24453467f3ed95 100644
--- a/java/com/android/dialer/callstats/res/values/styles.xml
+++ b/java/com/android/dialer/callstats/res/values/styles.xml
@@ -27,10 +27,18 @@
@color/blocked_call
-
+
+
+
diff --git a/java/com/android/dialer/commandline/Arguments.java b/java/com/android/dialer/commandline/Arguments.java
deleted file mode 100644
index 84ed0e4228a05ae7b24ff77624923c7a54fb8b4f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/commandline/Arguments.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.commandline;
-
-import android.support.annotation.Nullable;
-import com.android.dialer.commandline.Command.IllegalCommandLineArgumentException;
-import com.google.auto.value.AutoValue;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterators;
-import com.google.common.collect.PeekingIterator;
-import com.google.common.collect.UnmodifiableIterator;
-
-/**
- * Parses command line arguments into optional flags (--foo, --key=value, --key value) and required
- * positionals (which must be passed in order). Flags must start with "--" and are always before
- * positionals. If flags are used "--" must be placed before positionals.
- *
- *
--flag will be interpreted as --flag=true, and --noflag as --flag=false
- *
- *
Grammar:
- * dialer-cmd.py
- * = ( -- ) |
- * = "no"?()?
- * = " " | "="
- */
-@AutoValue
-public abstract class Arguments {
-
- public static final Arguments EMPTY =
- new AutoValue_Arguments(ImmutableMap.of(), ImmutableList.of());
-
- public abstract ImmutableMap getFlags();
-
- public abstract ImmutableList getPositionals();
-
- /**
- * Return the positional at {@code position}. Throw {@link IllegalCommandLineArgumentException} if
- * it is absent and reports to the user {@code name} is expected.
- */
- public String expectPositional(int position, String name)
- throws IllegalCommandLineArgumentException {
- if (getPositionals().size() <= position) {
- throw new IllegalCommandLineArgumentException(name + " expected");
- }
- return getPositionals().get(position);
- }
-
- public Boolean getBoolean(String flag, boolean defaultValue)
- throws IllegalCommandLineArgumentException {
- if (!getFlags().containsKey(flag)) {
- return defaultValue;
- }
- switch (getFlags().get(flag)) {
- case "true":
- return true;
- case "false":
- return false;
- default:
- throw new IllegalCommandLineArgumentException("boolean value expected for " + flag);
- }
- }
-
- public static Arguments parse(@Nullable String[] rawArguments)
- throws IllegalCommandLineArgumentException {
- if (rawArguments == null) {
- return EMPTY;
- }
- return parse(Iterators.forArray(rawArguments));
- }
-
- public static Arguments parse(Iterable rawArguments)
- throws IllegalCommandLineArgumentException {
- return parse(Iterators.unmodifiableIterator(rawArguments.iterator()));
- }
-
- public static Arguments parse(UnmodifiableIterator iterator)
- throws IllegalCommandLineArgumentException {
- PeekingIterator peekingIterator = Iterators.peekingIterator(iterator);
- ImmutableMap flags = parseFlags(peekingIterator);
- ImmutableList positionals = parsePositionals(peekingIterator);
-
- return new AutoValue_Arguments(flags, positionals);
- }
-
- private static ImmutableMap parseFlags(PeekingIterator iterator)
- throws IllegalCommandLineArgumentException {
- ImmutableMap.Builder flags = ImmutableMap.builder();
- if (!iterator.hasNext()) {
- return flags.build();
- }
- if (!iterator.peek().startsWith("--")) {
- return flags.build();
- }
-
- while (iterator.hasNext()) {
- String peek = iterator.peek();
- if (peek.equals("--")) {
- iterator.next();
- return flags.build();
- }
- if (peek.startsWith("--")) {
- String key = iterator.next().substring(2);
- String value;
- if (iterator.hasNext() && !iterator.peek().startsWith("--")) {
- value = iterator.next();
- } else if (key.contains("=")) {
- String[] entry = key.split("=", 2);
- key = entry[0];
- value = entry[1];
- } else if (key.startsWith("no")) {
- key = key.substring(2);
- value = "false";
- } else {
- value = "true";
- }
- flags.put(key, value);
- } else {
- throw new IllegalCommandLineArgumentException("flag or '--' expected");
- }
- }
- return flags.build();
- }
-
- private static ImmutableList parsePositionals(PeekingIterator iterator) {
- ImmutableList.Builder positionals = ImmutableList.builder();
- positionals.addAll(iterator);
- return positionals.build();
- }
-}
diff --git a/java/com/android/dialer/commandline/Command.java b/java/com/android/dialer/commandline/Command.java
deleted file mode 100644
index 83618a2554f41fd0cb12d97f68d569150060f03e..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/commandline/Command.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.commandline;
-
-import android.support.annotation.NonNull;
-import com.google.common.util.concurrent.ListenableFuture;
-
-/** Handles a Command from {@link CommandLineReceiver}. */
-public interface Command {
-
- /**
- * Thrown when {@code args} in {@link #run(Arguments)} does not match the expected format. The
- * commandline will print {@code message} and {@link #getUsage()}.
- */
- class IllegalCommandLineArgumentException extends Exception {
- public IllegalCommandLineArgumentException(String message) {
- super(message);
- }
- }
-
- /** Describe the command when "help" is listing available commands. */
- @NonNull
- String getShortDescription();
-
- /**
- * Call when 'command --help' is called or when {@link IllegalCommandLineArgumentException} is
- * thrown to inform the user how should the command be used.
- */
- @NonNull
- String getUsage();
-
- ListenableFuture run(Arguments args) throws IllegalCommandLineArgumentException;
-}
diff --git a/java/com/android/dialer/commandline/CommandLineComponent.java b/java/com/android/dialer/commandline/CommandLineComponent.java
deleted file mode 100644
index 50a1ff2b242fd4599c05a343496950d82ec0330e..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/commandline/CommandLineComponent.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.commandline;
-
-import android.content.Context;
-import com.android.dialer.function.Supplier;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import com.google.common.collect.ImmutableMap;
-import dagger.Subcomponent;
-
-/** Component to get all available commands. */
-@Subcomponent
-public abstract class CommandLineComponent {
-
- public abstract Supplier> commandSupplier();
-
- public static CommandLineComponent get(Context context) {
- return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
- .commandLineComponent();
- }
-
- /** Used to refer to the root application component. */
- @IncludeInDialerRoot
- public interface HasComponent {
- CommandLineComponent commandLineComponent();
- }
-}
diff --git a/java/com/android/dialer/commandline/CommandLineModule.java b/java/com/android/dialer/commandline/CommandLineModule.java
deleted file mode 100644
index c3b58d1d5c48685f6d12596caca0118a7763b938..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/commandline/CommandLineModule.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.commandline;
-
-import com.android.dialer.commandline.impl.ActiveCallsCommand;
-import com.android.dialer.commandline.impl.BlockingCommand;
-import com.android.dialer.commandline.impl.CallCommand;
-import com.android.dialer.commandline.impl.Echo;
-import com.android.dialer.commandline.impl.Help;
-import com.android.dialer.commandline.impl.Version;
-import com.android.dialer.function.Supplier;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.google.common.collect.ImmutableMap;
-import dagger.Module;
-import dagger.Provides;
-import javax.inject.Inject;
-
-/** Provides {@link Command} */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public abstract class CommandLineModule {
-
- @Provides
- static Supplier> provideCommandSupplier(
- AospCommandInjector aospCommandInjector) {
-
- return aospCommandInjector.inject(CommandSupplier.builder()).build();
- }
-
- /** Injects standard commands to the builder */
- public static class AospCommandInjector {
- private final Help help;
- private final Version version;
- private final Echo echo;
- private final BlockingCommand blockingCommand;
- private final CallCommand callCommand;
- private final ActiveCallsCommand activeCallsCommand;
-
- @Inject
- AospCommandInjector(
- Help help,
- Version version,
- Echo echo,
- BlockingCommand blockingCommand,
- CallCommand callCommand,
- ActiveCallsCommand activeCallsCommand) {
- this.help = help;
- this.version = version;
- this.echo = echo;
- this.blockingCommand = blockingCommand;
- this.callCommand = callCommand;
- this.activeCallsCommand = activeCallsCommand;
- }
-
- public CommandSupplier.Builder inject(CommandSupplier.Builder builder) {
- builder.addCommand("help", help);
- builder.addCommand("version", version);
- builder.addCommand("echo", echo);
- builder.addCommand("blocking", blockingCommand);
- builder.addCommand("call", callCommand);
- builder.addCommand("activecalls", activeCallsCommand);
- return builder;
- }
- }
-}
diff --git a/java/com/android/dialer/commandline/CommandLineReceiver.java b/java/com/android/dialer/commandline/CommandLineReceiver.java
deleted file mode 100644
index effca2e92d9ef216713b8df02b0c6fa91f3af472..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/commandline/CommandLineReceiver.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.commandline;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.text.TextUtils;
-import com.android.dialer.buildtype.BuildType;
-import com.android.dialer.buildtype.BuildType.Type;
-import com.android.dialer.commandline.Command.IllegalCommandLineArgumentException;
-import com.android.dialer.common.LogUtil;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.MoreExecutors;
-
-/**
- * Receives broadcasts to the component from adb shell. Must be on bugfood or have debug logging
- * enabled.
- */
-public class CommandLineReceiver extends BroadcastReceiver {
-
- public static final String COMMAND = "command";
- public static final String ARGS = "args";
- public static final String TAG = "tag";
-
- @Override
- public void onReceive(Context context, Intent intent) {
- String outputTag = intent.getStringExtra(TAG);
- if (outputTag == null) {
- LogUtil.e("CommandLineReceiver", "missing tag");
- return;
- }
- if (!LogUtil.isDebugEnabled() && BuildType.get() != Type.BUGFOOD) {
- LogUtil.i(outputTag, "DISABLED");
- return;
- }
- Command command =
- CommandLineComponent.get(context)
- .commandSupplier()
- .get()
- .get(intent.getStringExtra(COMMAND));
- try {
- if (command == null) {
- LogUtil.i(outputTag, "unknown command " + intent.getStringExtra(COMMAND));
- return;
- }
-
- Arguments args = Arguments.parse(intent.getStringArrayExtra(ARGS));
-
- if (args.getBoolean("help", false)) {
- LogUtil.i(outputTag, "usage:\n" + command.getUsage());
- return;
- }
- Futures.addCallback(
- command.run(args),
- new FutureCallback() {
- @Override
- public void onSuccess(String response) {
- if (TextUtils.isEmpty(response)) {
- LogUtil.i(outputTag, "EMPTY");
- } else {
- LogUtil.i(outputTag, response);
- }
- }
-
- @Override
- public void onFailure(Throwable throwable) {
- if (throwable instanceof IllegalCommandLineArgumentException) {
- LogUtil.e(outputTag, throwable.getMessage() + "\n\nusage:\n" + command.getUsage());
- }
- LogUtil.e(outputTag, "error running command future", throwable);
- }
- },
- MoreExecutors.directExecutor());
- } catch (IllegalCommandLineArgumentException e) {
- LogUtil.e(outputTag, e.getMessage() + "\n\nusage:\n" + command.getUsage());
- } catch (Throwable throwable) {
- LogUtil.e(outputTag, "error running command", throwable);
- }
- }
-}
diff --git a/java/com/android/dialer/commandline/CommandSupplier.java b/java/com/android/dialer/commandline/CommandSupplier.java
deleted file mode 100644
index 7789258c82814fb8c6c05f2ec52e23b6ffbfdc15..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/commandline/CommandSupplier.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.commandline;
-
-import com.android.dialer.function.Supplier;
-import com.google.auto.value.AutoValue;
-import com.google.common.collect.ImmutableMap;
-
-/** Supplies commands */
-@AutoValue
-public abstract class CommandSupplier implements Supplier> {
-
- public static Builder builder() {
- return new AutoValue_CommandSupplier.Builder();
- }
-
- public abstract ImmutableMap commands();
-
- @Override
- public ImmutableMap get() {
- return commands();
- }
-
- /** builder for the supplier */
- @AutoValue.Builder
- public abstract static class Builder {
-
- abstract ImmutableMap.Builder commandsBuilder();
-
- public Builder addCommand(String key, Command command) {
- commandsBuilder().put(key, command);
- return this;
- }
-
- public abstract CommandSupplier build();
- }
-}
diff --git a/java/com/android/dialer/commandline/impl/ActiveCallsCommand.java b/java/com/android/dialer/commandline/impl/ActiveCallsCommand.java
deleted file mode 100644
index 81641ed505746e1f971349d9f44a0562ea6198a0..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/commandline/impl/ActiveCallsCommand.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.commandline.impl;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.activecalls.ActiveCallsComponent;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.android.dialer.inject.ApplicationContext;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import javax.inject.Inject;
-
-/** Manipulates {@link com.android.dialer.activecalls.ActiveCalls} */
-public class ActiveCallsCommand implements Command {
-
- private final Context appContext;
-
- @Inject
- ActiveCallsCommand(@ApplicationContext Context appContext) {
- this.appContext = appContext;
- }
-
- @NonNull
- @Override
- public String getShortDescription() {
- return "manipulate active calls";
- }
-
- @NonNull
- @Override
- public String getUsage() {
- return "activecalls list";
- }
-
- @Override
- public ListenableFuture run(Arguments args) throws IllegalCommandLineArgumentException {
- if (args.getPositionals().isEmpty()) {
- return Futures.immediateFuture(getUsage());
- }
-
- String command = args.getPositionals().get(0);
-
- switch (command) {
- case "list":
- return Futures.immediateFuture(
- ActiveCallsComponent.get(appContext).activeCalls().getActiveCalls().toString());
- default:
- throw new IllegalCommandLineArgumentException("unknown command " + command);
- }
- }
-}
diff --git a/java/com/android/dialer/commandline/impl/BlockingCommand.java b/java/com/android/dialer/commandline/impl/BlockingCommand.java
deleted file mode 100644
index d06450513a00b01c43a8e1f7867efdcbdd194eff..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/commandline/impl/BlockingCommand.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.commandline.impl;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.DialerPhoneNumber;
-import com.android.dialer.blocking.Blocking;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
-import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.phonelookup.PhoneLookupComponent;
-import com.android.dialer.phonelookup.PhoneLookupInfo;
-import com.android.dialer.phonelookup.consolidator.PhoneLookupInfoConsolidator;
-import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil;
-import com.google.common.collect.ImmutableList;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import javax.inject.Inject;
-
-/** Block or unblock a number. */
-public class BlockingCommand implements Command {
-
- @NonNull
- @Override
- public String getShortDescription() {
- return "block or unblock numbers";
- }
-
- @NonNull
- @Override
- public String getUsage() {
- return "blocking block|unblock|isblocked number\n\n" + "number should be e.164 formatted";
- }
-
- private final Context appContext;
- private final ListeningExecutorService executorService;
-
- @Inject
- BlockingCommand(
- @ApplicationContext Context context,
- @BackgroundExecutor ListeningExecutorService executorService) {
- this.appContext = context;
- this.executorService = executorService;
- }
-
- @Override
- public ListenableFuture run(Arguments args) throws IllegalCommandLineArgumentException {
- if (args.getPositionals().isEmpty()) {
- return Futures.immediateFuture(getUsage());
- }
-
- String command = args.getPositionals().get(0);
-
- if ("block".equals(command)) {
- String number = args.getPositionals().get(1);
- return Futures.transform(
- Blocking.block(appContext, ImmutableList.of(number), null),
- (unused) -> "blocked " + number,
- MoreExecutors.directExecutor());
- }
-
- if ("unblock".equals(command)) {
- String number = args.getPositionals().get(1);
- return Futures.transform(
- Blocking.unblock(appContext, ImmutableList.of(number), null),
- (unused) -> "unblocked " + number,
- MoreExecutors.directExecutor());
- }
-
- if ("isblocked".equals(command)) {
- String number = args.getPositionals().get(1);
- ListenableFuture dialerPhoneNumberFuture =
- executorService.submit(() -> new DialerPhoneNumberUtil().parse(number, null));
-
- ListenableFuture lookupFuture =
- Futures.transformAsync(
- dialerPhoneNumberFuture,
- (dialerPhoneNumber) ->
- PhoneLookupComponent.get(appContext)
- .compositePhoneLookup()
- .lookup(dialerPhoneNumber),
- executorService);
-
- return Futures.transform(
- lookupFuture,
- (info) -> new PhoneLookupInfoConsolidator(info).isBlocked() ? "true" : "false",
- MoreExecutors.directExecutor());
- }
-
- return Futures.immediateFuture(getUsage());
- }
-}
diff --git a/java/com/android/dialer/commandline/impl/CallCommand.java b/java/com/android/dialer/commandline/impl/CallCommand.java
deleted file mode 100644
index d0008a32167d878dd453dfcef6cd23d2ad79488b..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/commandline/impl/CallCommand.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.commandline.impl;
-
-import android.content.Context;
-import android.content.Intent;
-import android.support.annotation.NonNull;
-import android.telecom.TelecomManager;
-import com.android.dialer.buildtype.BuildType;
-import com.android.dialer.buildtype.BuildType.Type;
-import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.precall.PreCall;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import javax.inject.Inject;
-
-/** Make calls. Requires bugfood build. */
-public class CallCommand implements Command {
-
- private final Context appContext;
-
- @Inject
- CallCommand(@ApplicationContext Context appContext) {
- this.appContext = appContext;
- }
-
- @NonNull
- @Override
- public String getShortDescription() {
- return "make a call";
- }
-
- @NonNull
- @Override
- public String getUsage() {
- return "call [flags --] number\n"
- + "\nuse 'voicemail' to call voicemail"
- + "\n\nflags:"
- + "\n--direct send intent to telecom instead of pre call";
- }
-
- @Override
- @SuppressWarnings("missingPermission")
- public ListenableFuture run(Arguments args) throws IllegalCommandLineArgumentException {
- if (BuildType.get() != Type.BUGFOOD) {
- throw new SecurityException("Bugfood only command");
- }
- String number = args.expectPositional(0, "number");
- TelecomManager telecomManager = appContext.getSystemService(TelecomManager.class);
- CallIntentBuilder callIntentBuilder;
- if ("voicemail".equals(number)) {
- callIntentBuilder =
- CallIntentBuilder.forVoicemail(CallInitiationType.Type.DIALPAD);
- } else {
- callIntentBuilder = new CallIntentBuilder(number, CallInitiationType.Type.DIALPAD);
- }
- if (args.getBoolean("direct", false)) {
- Intent intent = callIntentBuilder.build();
- appContext
- .getSystemService(TelecomManager.class)
- .placeCall(intent.getData(), intent.getExtras());
- } else {
- Intent intent = PreCall.getIntent(appContext, callIntentBuilder);
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- appContext.startActivity(intent);
- }
- return Futures.immediateFuture("Calling " + number);
- }
-}
diff --git a/java/com/android/dialer/commandline/impl/Echo.java b/java/com/android/dialer/commandline/impl/Echo.java
deleted file mode 100644
index 2741a40420a0452ce9d8d2067f1def59f671bd6f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/commandline/impl/Echo.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.commandline.impl;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import javax.inject.Inject;
-
-/** Print arguments. */
-public class Echo implements Command {
-
- @NonNull
- @Override
- public String getShortDescription() {
- return "@hide Print all arguments.";
- }
-
- @NonNull
- @Override
- public String getUsage() {
- return "echo [arguments...]";
- }
-
- @VisibleForTesting
- @Inject
- public Echo() {}
-
- @Override
- public ListenableFuture run(Arguments args) throws IllegalCommandLineArgumentException {
- return Futures.immediateFuture(TextUtils.join(" ", args.getPositionals()));
- }
-}
diff --git a/java/com/android/dialer/commandline/impl/Help.java b/java/com/android/dialer/commandline/impl/Help.java
deleted file mode 100644
index 357b1076254e317a8ad5f87d2720c27e76ff4d97..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/commandline/impl/Help.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.commandline.impl;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.android.dialer.commandline.CommandLineComponent;
-import com.android.dialer.inject.ApplicationContext;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.Locale;
-import java.util.Map.Entry;
-import java.util.concurrent.ExecutionException;
-import javax.inject.Inject;
-
-/** List available commands */
-public class Help implements Command {
-
- @NonNull
- @Override
- public String getShortDescription() {
- return "Print this message";
- }
-
- @NonNull
- @Override
- public String getUsage() {
- return "help";
- }
-
- private final Context context;
-
- @Inject
- Help(@ApplicationContext Context context) {
- this.context = context;
- }
-
- @Override
- public ListenableFuture run(Arguments args) throws IllegalCommandLineArgumentException {
- boolean showHidden = args.getFlags().containsKey("showHidden");
-
- StringBuilder stringBuilder = new StringBuilder();
- ImmutableMap commands =
- CommandLineComponent.get(context).commandSupplier().get();
- stringBuilder
- .append(runOrThrow(commands.get("version")))
- .append("\n")
- .append("\n")
- .append("usage: [args...]\n")
- .append("\n")
- .append("\n");
-
- for (Entry entry : commands.entrySet()) {
- String description = entry.getValue().getShortDescription();
- if (!showHidden && description.startsWith("@hide ")) {
- continue;
- }
- stringBuilder.append(String.format(Locale.US, " %20s %s\n", entry.getKey(), description));
- }
-
- return Futures.immediateFuture(stringBuilder.toString());
- }
-
- private static String runOrThrow(Command command) throws IllegalCommandLineArgumentException {
- try {
- return command.run(Arguments.EMPTY).get();
- } catch (InterruptedException e) {
- Thread.interrupted();
- throw new RuntimeException(e);
- } catch (ExecutionException e) {
- throw new RuntimeException(e);
- }
- }
-}
diff --git a/java/com/android/dialer/commandline/impl/Version.java b/java/com/android/dialer/commandline/impl/Version.java
deleted file mode 100644
index 70476ea3eac4500fa2c8573d5f016ffba155f0c0..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/commandline/impl/Version.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.commandline.impl;
-
-import android.content.Context;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.support.annotation.NonNull;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.android.dialer.inject.ApplicationContext;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.Locale;
-import javax.inject.Inject;
-
-/** Print the version name and code. */
-public class Version implements Command {
-
- @NonNull
- @Override
- public String getShortDescription() {
- return "Print dialer version";
- }
-
- @NonNull
- @Override
- public String getUsage() {
- return "version";
- }
-
- private final Context appContext;
-
- @Inject
- Version(@ApplicationContext Context context) {
- this.appContext = context;
- }
-
- @Override
- public ListenableFuture run(Arguments args) throws IllegalCommandLineArgumentException {
- try {
- PackageInfo info =
- appContext.getPackageManager().getPackageInfo(appContext.getPackageName(), 0);
- return Futures.immediateFuture(
- String.format(Locale.US, "%s(%d)", info.versionName, info.versionCode));
- } catch (NameNotFoundException e) {
- throw new RuntimeException(e);
- }
- }
-}
diff --git a/java/com/android/dialer/common/Assert.java b/java/com/android/dialer/common/Assert.java
index 2d7f199ab7dccd62df977916d465ca9700c20cf8..5c3f385efed7bc402da8fe72e048946a0efde85f 100644
--- a/java/com/android/dialer/common/Assert.java
+++ b/java/com/android/dialer/common/Assert.java
@@ -17,19 +17,15 @@
package com.android.dialer.common;
import android.os.Looper;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import javax.annotation.CheckReturnValue;
/** Assertions which will result in program termination unless disabled by flags. */
public class Assert {
- private static boolean areThreadAssertsEnabled = true;
-
- public static void setAreThreadAssertsEnabled(boolean areThreadAssertsEnabled) {
- Assert.areThreadAssertsEnabled = areThreadAssertsEnabled;
- }
-
/**
* Called when a truly exceptional case occurs.
*
@@ -102,7 +98,7 @@ public class Assert {
* @throws IllegalArgumentException if {@code expression} is false
*/
public static void checkArgument(
- boolean expression, @Nullable String messageTemplate, Object... args) {
+ boolean expression, @Nullable String messageTemplate, Object... args) {
if (!expression) {
throw new IllegalArgumentException(format(messageTemplate, args));
}
@@ -182,9 +178,6 @@ public class Assert {
* @throws IllegalStateException if called on a background thread
*/
public static void isMainThread(@Nullable String messageTemplate, Object... args) {
- if (!areThreadAssertsEnabled) {
- return;
- }
checkState(Looper.getMainLooper().equals(Looper.myLooper()), messageTemplate, args);
}
@@ -205,9 +198,6 @@ public class Assert {
* @throws IllegalStateException if called on the main thread
*/
public static void isWorkerThread(@Nullable String messageTemplate, Object... args) {
- if (!areThreadAssertsEnabled) {
- return;
- }
checkState(!Looper.getMainLooper().equals(Looper.myLooper()), messageTemplate, args);
}
diff --git a/java/com/android/dialer/common/FragmentUtils.java b/java/com/android/dialer/common/FragmentUtils.java
index aa4441eebc31a84b853fc6a680a746bf8176bc42..b9c58104f706907f48ad0df6ae51a84f9b1f828f 100644
--- a/java/com/android/dialer/common/FragmentUtils.java
+++ b/java/com/android/dialer/common/FragmentUtils.java
@@ -16,23 +16,17 @@
package com.android.dialer.common;
-import android.support.annotation.CheckResult;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
import android.support.v4.app.Fragment;
+
+import androidx.annotation.CheckResult;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.dialer.main.MainActivityPeer;
/** Utility methods for working with Fragments */
public class FragmentUtils {
- private static Object parentForTesting;
-
- @VisibleForTesting(otherwise = VisibleForTesting.NONE)
- public static void setParentForTesting(Object parentForTesting) {
- FragmentUtils.parentForTesting = parentForTesting;
- }
-
/**
* Returns an instance of the {@code callbackInterface} that is defined in the parent of the
* {@code fragment}, or null if no such call back can be found.
@@ -40,12 +34,6 @@ public class FragmentUtils {
@CheckResult(suggest = "#checkParent(Fragment, Class)}")
@Nullable
public static T getParent(@NonNull Fragment fragment, @NonNull Class callbackInterface) {
- if (callbackInterface.isInstance(parentForTesting)) {
- @SuppressWarnings("unchecked") // Casts are checked using runtime methods
- T parent = (T) parentForTesting;
- return parent;
- }
-
Fragment parentFragment = fragment.getParentFragment();
if (callbackInterface.isInstance(parentFragment)) {
@SuppressWarnings("unchecked") // Casts are checked using runtime methods
@@ -76,12 +64,6 @@ public class FragmentUtils {
@Nullable
public static T getParent(
@NonNull android.app.Fragment fragment, @NonNull Class callbackInterface) {
- if (callbackInterface.isInstance(parentForTesting)) {
- @SuppressWarnings("unchecked") // Casts are checked using runtime methods
- T parent = (T) parentForTesting;
- return parent;
- }
-
android.app.Fragment parentFragment = fragment.getParentFragment();
if (callbackInterface.isInstance(parentFragment)) {
@SuppressWarnings("unchecked") // Casts are checked using runtime methods
@@ -130,9 +112,6 @@ public class FragmentUtils {
*/
public static void checkParent(@NonNull Fragment frag, @NonNull Class> callbackInterface)
throws IllegalStateException {
- if (parentForTesting != null) {
- return;
- }
if (FragmentUtils.getParent(frag, callbackInterface) == null) {
String parent =
frag.getParentFragment() == null
diff --git a/java/com/android/dialer/common/LogUtil.java b/java/com/android/dialer/common/LogUtil.java
index 126ebf282f4e753fcc20bd17b7d82db3e02d51bc..92dfe247cef380a5ce51a4467a7f630177a4a8ec 100644
--- a/java/com/android/dialer/common/LogUtil.java
+++ b/java/com/android/dialer/common/LogUtil.java
@@ -16,11 +16,12 @@
package com.android.dialer.common;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
/** Provides logging functions. */
public class LogUtil {
diff --git a/java/com/android/dialer/common/NetworkUtil.java b/java/com/android/dialer/common/NetworkUtil.java
deleted file mode 100644
index 47d84243e27fe7a3c954b6d7783bced7d2ba18ec..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/common/NetworkUtil.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.dialer.common;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiManager;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresPermission;
-import android.support.annotation.StringDef;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.Objects;
-
-/** Utility class for dealing with network */
-public class NetworkUtil {
-
- /* Returns the current network type. */
- @RequiresPermission("android.permission.ACCESS_NETWORK_STATE")
- @NetworkType
- public static String getCurrentNetworkType(@Nullable Context context) {
- if (context == null) {
- return NetworkType.NONE;
- }
- ConnectivityManager connectivityManager =
- (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- return getNetworkType(connectivityManager.getActiveNetworkInfo());
- }
-
- /* Returns the current network info. */
- @Nullable
- @RequiresPermission("android.permission.ACCESS_NETWORK_STATE")
- public static NetworkInfo getCurrentNetworkInfo(@Nullable Context context) {
- if (context == null) {
- return null;
- }
- ConnectivityManager connectivityManager =
- (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- return connectivityManager.getActiveNetworkInfo();
- }
-
- /**
- * Returns the current network type as a string. For mobile network types the subtype name of the
- * network is appended.
- */
- @RequiresPermission("android.permission.ACCESS_NETWORK_STATE")
- public static String getCurrentNetworkTypeName(@Nullable Context context) {
- if (context == null) {
- return NetworkType.NONE;
- }
- ConnectivityManager connectivityManager =
- (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo();
- @NetworkType String networkType = getNetworkType(netInfo);
- if (isNetworkTypeMobile(networkType)) {
- return networkType + " (" + netInfo.getSubtypeName() + ")";
- }
- return networkType;
- }
-
- @NetworkType
- public static String getNetworkType(@Nullable NetworkInfo netInfo) {
- if (netInfo == null || !netInfo.isConnected()) {
- return NetworkType.NONE;
- }
- switch (netInfo.getType()) {
- case ConnectivityManager.TYPE_WIFI:
- return NetworkType.WIFI;
- case ConnectivityManager.TYPE_MOBILE:
- return getMobileNetworkType(netInfo.getSubtype());
- default:
- return NetworkType.UNKNOWN;
- }
- }
-
- public static boolean isNetworkTypeMobile(@NetworkType String networkType) {
- return Objects.equals(networkType, NetworkType.MOBILE_2G)
- || Objects.equals(networkType, NetworkType.MOBILE_3G)
- || Objects.equals(networkType, NetworkType.MOBILE_4G);
- }
-
- @RequiresPermission("android.permission.ACCESS_NETWORK_STATE")
- public static String getCurrentNetworkName(Context context) {
- @NetworkType String networkType = getCurrentNetworkType(context);
- switch (networkType) {
- case NetworkType.WIFI:
- return getWifiNetworkName(context);
- case NetworkType.MOBILE_2G:
- case NetworkType.MOBILE_3G:
- case NetworkType.MOBILE_4G:
- case NetworkType.MOBILE_UNKNOWN:
- return getMobileNetworkName(context);
- default:
- return "";
- }
- }
-
- private static String getWifiNetworkName(Context context) {
- WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
- String name = null;
- if (context.checkSelfPermission("android.permission.ACCESS_WIFI_STATE")
- == PackageManager.PERMISSION_GRANTED) {
- //noinspection MissingPermission
- WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
- if (wifiInfo == null) {
- return "";
- }
- name = wifiInfo.getSSID();
- }
- return TextUtils.isEmpty(name)
- ? context.getString(R.string.network_name_wifi)
- : name.replaceAll("\"", "");
- }
-
- private static String getMobileNetworkName(Context context) {
- TelephonyManager telephonyMgr =
- (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
- String name = telephonyMgr.getNetworkOperatorName();
- return TextUtils.isEmpty(name)
- ? context.getString(R.string.network_name_mobile)
- : name.replaceAll("\"", "");
- }
-
- @NetworkType
- private static String getMobileNetworkType(int networkSubtype) {
- switch (networkSubtype) {
- case TelephonyManager.NETWORK_TYPE_1xRTT:
- case TelephonyManager.NETWORK_TYPE_CDMA:
- case TelephonyManager.NETWORK_TYPE_EDGE:
- case TelephonyManager.NETWORK_TYPE_GPRS:
- case TelephonyManager.NETWORK_TYPE_IDEN:
- return NetworkType.MOBILE_2G;
- case TelephonyManager.NETWORK_TYPE_EHRPD:
- case TelephonyManager.NETWORK_TYPE_EVDO_0:
- case TelephonyManager.NETWORK_TYPE_EVDO_A:
- case TelephonyManager.NETWORK_TYPE_EVDO_B:
- case TelephonyManager.NETWORK_TYPE_HSDPA:
- case TelephonyManager.NETWORK_TYPE_HSPA:
- case TelephonyManager.NETWORK_TYPE_HSPAP:
- case TelephonyManager.NETWORK_TYPE_HSUPA:
- case TelephonyManager.NETWORK_TYPE_UMTS:
- return NetworkType.MOBILE_3G;
- case TelephonyManager.NETWORK_TYPE_LTE:
- return NetworkType.MOBILE_4G;
- default:
- return NetworkType.MOBILE_UNKNOWN;
- }
- }
-
- /** Network types. */
- @Retention(RetentionPolicy.SOURCE)
- @StringDef(
- value = {
- NetworkType.NONE,
- NetworkType.WIFI,
- NetworkType.MOBILE_2G,
- NetworkType.MOBILE_3G,
- NetworkType.MOBILE_4G,
- NetworkType.MOBILE_UNKNOWN,
- NetworkType.UNKNOWN
- }
- )
- public @interface NetworkType {
-
- String NONE = "NONE";
- String WIFI = "WIFI";
- String MOBILE_2G = "MOBILE_2G";
- String MOBILE_3G = "MOBILE_3G";
- String MOBILE_4G = "MOBILE_4G";
- String MOBILE_UNKNOWN = "MOBILE_UNKNOWN";
- String UNKNOWN = "UNKNOWN";
- }
-}
diff --git a/java/com/android/dialer/common/PackageUtils.java b/java/com/android/dialer/common/PackageUtils.java
index ccef38f0470c0ded924914bfb4eecc6cd731f53d..1944a851a43f72a37e1a11b9db9078e917498d59 100644
--- a/java/com/android/dialer/common/PackageUtils.java
+++ b/java/com/android/dialer/common/PackageUtils.java
@@ -19,7 +19,8 @@ package com.android.dialer.common;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
/** Utility class for package management. */
public class PackageUtils {
diff --git a/java/com/android/dialer/common/PerAccountSharedPreferences.java b/java/com/android/dialer/common/PerAccountSharedPreferences.java
index 0ed1b03a56119f0c509455f95f276604311f13ae..a04a33ba2f4cc38086269b45735b84c31273c080 100644
--- a/java/com/android/dialer/common/PerAccountSharedPreferences.java
+++ b/java/com/android/dialer/common/PerAccountSharedPreferences.java
@@ -17,8 +17,10 @@ package com.android.dialer.common;
import android.content.Context;
import android.content.SharedPreferences;
-import android.support.annotation.Nullable;
import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.Nullable;
+
import java.util.Set;
/**
diff --git a/java/com/android/dialer/common/backoff/ExponentialBackoff.java b/java/com/android/dialer/common/backoff/ExponentialBackoff.java
deleted file mode 100644
index 67727d8c21035b048e437b6785cc2d680033b791..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/common/backoff/ExponentialBackoff.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.common.backoff;
-
-import com.android.dialer.common.Assert;
-
-/**
- * Given an initial backoff delay, D, a base multiplier, B, and a total number of backoffs, N, this
- * class returns values in the exponential sequence, D, D*B, D*B^2, ... D*B^(N-1), ...
- *
- *
Note: the base multiplier can be calculated using {@code ExponentialBaseCalculator}
- */
-public final class ExponentialBackoff {
- public final long initialDelayMillis;
- public final double baseMultiplier;
- public final int maximumBackoffs;
- private double nextBackoff;
- private int backoffCount;
-
- /**
- * Setup an exponential backoff with an initial delay, a base multiplier and a maximum number of
- * backoff steps.
- *
- * @throws IllegalArgumentException for negative argument values
- */
- public ExponentialBackoff(long initialDelayMillis, double baseMultiplier, int maximumBackoffs) {
- Assert.checkArgument(initialDelayMillis > 0);
- Assert.checkArgument(baseMultiplier > 0);
- Assert.checkArgument(maximumBackoffs > 0);
- this.initialDelayMillis = initialDelayMillis;
- this.baseMultiplier = baseMultiplier;
- this.maximumBackoffs = maximumBackoffs;
- reset();
- }
-
- /**
- * @return the next backoff time in the exponential sequence. Specifically, if D is the initial
- * delay, B is the base multiplier and N is the total number of backoffs, then the return
- * values will be: D, D*B, D*B^2, ... D*B^(N-1), ...
- */
- public long getNextBackoff() {
- long backoff = Math.round(nextBackoff);
- backoffCount++;
- nextBackoff *= baseMultiplier;
- return backoff;
- }
-
- /** @return the number of times getNextBackoff() has been called */
- public int getBackoffCount() {
- return backoffCount;
- }
-
- /**
- * @return {@code true} if getNextBackoff() has been called less than the maximumBackoffs value
- * specified in the constructor.
- */
- public boolean isInRange() {
- return backoffCount < maximumBackoffs;
- }
-
- /**
- * Reset the sequence of backoff values so the next call to getNextBackoff() will return the
- * initial delay and getBackoffCount() will return 0
- */
- public void reset() {
- nextBackoff = initialDelayMillis;
- backoffCount = 0;
- }
-}
diff --git a/java/com/android/dialer/common/backoff/ExponentialBaseCalculator.java b/java/com/android/dialer/common/backoff/ExponentialBaseCalculator.java
deleted file mode 100644
index a1ae8a0534807311c29b03069a789b66ca8f7c93..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/common/backoff/ExponentialBaseCalculator.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.common.backoff;
-
-import com.android.dialer.common.Assert;
-
-/**
- * Given an initial delay, D, a maximum total backoff time, T, and a maximum number of backoffs, N,
- * this class calculates a base multiplier, b, and a scaling factor, g, such that the initial
- * backoff is g*b = D and the sum of the scaled backoffs is T = g*b + g*b^2 + g*b^3 + ... g*b^N
- *
- *
T/D = (1 - b^N)/(1 - b) but this cannot be written as a simple equation for b in terms of T, N
- * and D so instead use Newton's method (https://en.wikipedia.org/wiki/Newton%27s_method) to find an
- * approximate value for b.
- *
- *
Example usage using the {@code ExponentialBackoff} would be:
- *
- *
- * // Retry with exponential backoff for up to 2 minutes, with an initial delay of 100 millis
- * // and a maximum of 10 retries
- * long initialDelayMillis = 100;
- * int maxTries = 10;
- * double base = ExponentialBaseCalculator.findBase(
- * initialDelayMillis,
- * TimeUnit.MINUTES.toMillis(2),
- * maxTries);
- * ExponentialBackoff backoff = new ExponentialBackoff(initialDelayMillis, base, maxTries);
- * while (backoff.isInRange()) {
- * ...
- * long delay = backoff.getNextBackoff();
- * // Wait for the indicated time...
- * }
- *
- */
-public final class ExponentialBaseCalculator {
- private static final int MAX_STEPS = 1000;
- private static final double DEFAULT_TOLERANCE_MILLIS = 1;
-
- /**
- * Calculate an exponential backoff base multiplier such that the first backoff delay will be as
- * specified and the sum of the delays after doing the indicated maximum number of backoffs will
- * be as specified.
- *
- * @throws IllegalArgumentException if the initial delay is greater than the total backoff time
- * @throws IllegalArgumentException if the maximum number of backoffs is not greater than 1
- * @throws IllegalStateException if it fails to find an acceptable base multiplier
- */
- public static double findBase(
- long initialDelayMillis, long totalBackoffTimeMillis, int maximumBackoffs) {
- Assert.checkArgument(initialDelayMillis < totalBackoffTimeMillis);
- Assert.checkArgument(maximumBackoffs > 1);
- long scaledTotalTime = Math.round(((double) totalBackoffTimeMillis) / initialDelayMillis);
- double scaledTolerance = DEFAULT_TOLERANCE_MILLIS / initialDelayMillis;
- return getBaseImpl(scaledTotalTime, maximumBackoffs, scaledTolerance);
- }
-
- /**
- * T/D = (1 - b^N)/(1 - b) but this cannot be written as a simple equation for b in terms of T, D
- * and N so instead we use Newtons method to find an approximate value for b.
- *
- *
Let f(b) = (1 - b^N)/(1 - b) - T/D then we want to find b* such that f(b*) = 0, or more
- * precisely |f(b*)| < tolerance
- *
- *
Using Newton's method we can interatively find b* as follows: b1 = b0 - f(b0)/f'(b0), where
- * b0 is the current best guess for b* and b1 is the next best guess.
- *
- *
b1 = b0 - f(b0)(1 - b0)/(f(b0) + T/D - N*b0^(N - 1))
- */
- private static double getBaseImpl(long t, int n, double tolerance) {
- double b0 = 2; // Initial guess for b*
- double b0n = Math.pow(b0, n);
- double fb0 = f(b0, t, b0n);
- if (Math.abs(fb0) < tolerance) {
- // Initial guess was pretty good
- return b0;
- }
-
- for (int i = 0; i < MAX_STEPS; i++) {
- double fpb0 = fp(b0, t, n, fb0, b0n);
- double b1 = b0 - fb0 / fpb0;
- double b1n = Math.pow(b1, n);
- double fb1 = f(b1, t, b1n);
-
- if (Math.abs(fb1) < tolerance) {
- // Found an acceptable value
- return b1;
- }
-
- b0 = b1;
- b0n = b1n;
- fb0 = fb1;
- }
-
- throw new IllegalStateException("Failed to find base. Too many iterations.");
- }
-
- // Evaluate f(b), the function we are trying to find the zero for.
- // Note: passing b^N as a parameter so it only has to be calculated once
- private static double f(double b, long t, double bn) {
- return (1 - bn) / (1 - b) - t;
- }
-
- // Evaluate f'(b), the derivative of the function we are trying to find the zero for.
- // Note: passing f(b) and b^N as parameters for efficiency
- private static double fp(double b, long t, int n, double fb, double bn) {
- return (fb + t - n * bn / b) / (1 - b);
- }
-}
diff --git a/java/com/android/dialer/common/concurrent/AsyncTaskExecutor.java b/java/com/android/dialer/common/concurrent/AsyncTaskExecutor.java
index 3bdcd035b996a57fcbcb59bfdb9edd301d52b82a..6def1283a62dda9c6ff253fd5370e1d2bac360f7 100644
--- a/java/com/android/dialer/common/concurrent/AsyncTaskExecutor.java
+++ b/java/com/android/dialer/common/concurrent/AsyncTaskExecutor.java
@@ -17,7 +17,9 @@
package com.android.dialer.common.concurrent;
import android.os.AsyncTask;
-import android.support.annotation.MainThread;
+
+import androidx.annotation.MainThread;
+
import java.util.concurrent.Executor;
/**
diff --git a/java/com/android/dialer/common/concurrent/AsyncTaskExecutors.java b/java/com/android/dialer/common/concurrent/AsyncTaskExecutors.java
index 5beae4de895f8fdf677070b62bd46751ee8d55e3..7c437dfdf25f6652aca20691bb7f913d2d784725 100644
--- a/java/com/android/dialer/common/concurrent/AsyncTaskExecutors.java
+++ b/java/com/android/dialer/common/concurrent/AsyncTaskExecutors.java
@@ -17,34 +17,22 @@
package com.android.dialer.common.concurrent;
import android.os.AsyncTask;
-import android.support.annotation.MainThread;
+
+import androidx.annotation.MainThread;
+
import com.android.dialer.common.Assert;
import java.util.concurrent.Executor;
/**
* Factory methods for creating AsyncTaskExecutors.
- *
- *
All of the factory methods on this class check first to see if you have set a static {@link
- * AsyncTaskExecutorFactory} set through the {@link #setFactoryForTest(AsyncTaskExecutorFactory)}
- * method, and if so delegate to that instead, which is one way of injecting dependencies for
- * testing classes whose construction cannot be controlled such as {@link android.app.Activity}.
*/
public final class AsyncTaskExecutors {
- /**
- * A single instance of the {@link AsyncTaskExecutorFactory}, to which we delegate if it is
- * non-null, for injecting when testing.
- */
- private static AsyncTaskExecutorFactory injectedAsyncTaskExecutorFactory = null;
-
/**
* Creates an AsyncTaskExecutor that submits tasks to run with {@link AsyncTask#SERIAL_EXECUTOR}.
*/
public static AsyncTaskExecutor createAsyncTaskExecutor() {
synchronized (AsyncTaskExecutors.class) {
- if (injectedAsyncTaskExecutorFactory != null) {
- return injectedAsyncTaskExecutorFactory.createAsyncTaskExeuctor();
- }
return new SimpleAsyncTaskExecutor(AsyncTask.SERIAL_EXECUTOR);
}
}
@@ -55,25 +43,10 @@ public final class AsyncTaskExecutors {
*/
public static AsyncTaskExecutor createThreadPoolExecutor() {
synchronized (AsyncTaskExecutors.class) {
- if (injectedAsyncTaskExecutorFactory != null) {
- return injectedAsyncTaskExecutorFactory.createAsyncTaskExeuctor();
- }
return new SimpleAsyncTaskExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
- public static void setFactoryForTest(AsyncTaskExecutorFactory factory) {
- synchronized (AsyncTaskExecutors.class) {
- injectedAsyncTaskExecutorFactory = factory;
- }
- }
-
- /** Interface for creating AsyncTaskExecutor objects. */
- public interface AsyncTaskExecutorFactory {
-
- AsyncTaskExecutor createAsyncTaskExeuctor();
- }
-
static class SimpleAsyncTaskExecutor implements AsyncTaskExecutor {
private final Executor executor;
diff --git a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
index 317807b1d826b134ec79bf3e6f27869ef334e940..c31c5239d0bd94252bd8ef9ab683ab11b74c4c91 100644
--- a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
+++ b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
@@ -17,8 +17,10 @@
package com.android.dialer.common.concurrent;
import android.app.FragmentManager;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.Annotations.NonUiParallel;
@@ -85,7 +87,8 @@ public class DefaultDialerExecutorFactory implements DialerExecutorFactory {
throwable -> {
throw new RuntimeException(throwable);
};
- @Nullable final ScheduledExecutorService serialExecutorService;
+ @Nullable
+ final ScheduledExecutorService serialExecutorService;
@Nullable final Executor parallelExecutor;
BaseTaskBuilder(
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutor.java b/java/com/android/dialer/common/concurrent/DialerExecutor.java
index 3ee06445fc045140dd468bbfd065361015d75dda..79c469472ada3cdb95f97d23c4b6f61f3a73a60a 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutor.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutor.java
@@ -16,10 +16,11 @@
package com.android.dialer.common.concurrent;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
import java.util.concurrent.ExecutorService;
/**
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutorFactory.java b/java/com/android/dialer/common/concurrent/DialerExecutorFactory.java
index 82f8c7c3d96060d69d6c3018c3d6bdd5007b45e9..cfde3e34a89c3e2c9211097ff85534119b9c90ac 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutorFactory.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutorFactory.java
@@ -17,7 +17,9 @@
package com.android.dialer.common.concurrent;
import android.app.FragmentManager;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
/**
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutors.java b/java/com/android/dialer/common/concurrent/DialerExecutors.java
index b29bf5d3b3b0be63712d5f43d58e0c895f4ef865..91c77aeea30f5d4e9e50f97a6da84f6596f1ddd1 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutors.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutors.java
@@ -17,7 +17,9 @@
package com.android.dialer.common.concurrent;
import android.content.Context;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
import com.android.dialer.common.Assert;
import java.util.concurrent.ExecutorService;
diff --git a/java/com/android/dialer/common/concurrent/DialerUiTaskFragment.java b/java/com/android/dialer/common/concurrent/DialerUiTaskFragment.java
index f0b75375894053a1a5ab909c9199bd49948eb207..f502a0166415bc70e93ce3b273c99062a4b4146f 100644
--- a/java/com/android/dialer/common/concurrent/DialerUiTaskFragment.java
+++ b/java/com/android/dialer/common/concurrent/DialerUiTaskFragment.java
@@ -19,10 +19,12 @@ package com.android.dialer.common.concurrent;
import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.FailureListener;
diff --git a/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java b/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java
deleted file mode 100644
index c7a7f36a6bab469b8ee17de09b7d7b4405357cfd..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.common.concurrent;
-
-import android.os.AsyncTask;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.concurrent.FallibleAsyncTask.FallibleTaskResult;
-import com.google.auto.value.AutoValue;
-
-/**
- * A task that runs work in the background, passing Throwables from {@link
- * #doInBackground(Object[])} to {@link #onPostExecute(Object)} through a {@link
- * FallibleTaskResult}.
- *
- * @param the type of the parameters sent to the task upon execution
- * @param the type of the progress units published during the background computation
- * @param the type of the result of the background computation
- * @deprecated Please use {@link DialerExecutors}.
- */
-@Deprecated
-public abstract class FallibleAsyncTask
- extends AsyncTask> {
-
- @Override
- protected final FallibleTaskResult doInBackground(ParamsT... params) {
- try {
- return FallibleTaskResult.createSuccessResult(doInBackgroundFallible(params));
- } catch (Throwable t) {
- return FallibleTaskResult.createFailureResult(t);
- }
- }
-
- /** Performs background work that may result in a Throwable. */
- @Nullable
- protected abstract ResultT doInBackgroundFallible(ParamsT... params) throws Throwable;
-
- /**
- * Holds the result of processing from {@link #doInBackground(Object[])}.
- *
- * @param the type of the result of the background computation
- */
- @AutoValue
- public abstract static class FallibleTaskResult {
-
- /** Creates an instance of FallibleTaskResult for the given throwable. */
- private static FallibleTaskResult createFailureResult(@NonNull Throwable t) {
- return new AutoValue_FallibleAsyncTask_FallibleTaskResult<>(t, null);
- }
-
- /** Creates an instance of FallibleTaskResult for the given result. */
- private static FallibleTaskResult createSuccessResult(
- @Nullable ResultT result) {
- return new AutoValue_FallibleAsyncTask_FallibleTaskResult<>(null, result);
- }
-
- /**
- * Returns the Throwable thrown in {@link #doInBackground(Object[])}, or {@code null} if
- * background work completed without throwing.
- */
- @Nullable
- public abstract Throwable getThrowable();
-
- /**
- * Returns the result of {@link #doInBackground(Object[])}, which may be {@code null}, or {@code
- * null} if the background work threw a Throwable.
- *
- *
Use {@link #isFailure()} to determine if a {@code null} return is the result of a
- * Throwable from the background work.
- */
- @Nullable
- public abstract ResultT getResult();
-
- /**
- * Returns {@code true} if this object is the result of background work that threw a Throwable.
- */
- public boolean isFailure() {
- //noinspection ThrowableResultOfMethodCallIgnored
- return getThrowable() != null;
- }
- }
-}
diff --git a/java/com/android/dialer/common/concurrent/SupportUiListener.java b/java/com/android/dialer/common/concurrent/SupportUiListener.java
index 5e3958619b66005b346849b9fefc169f112c790e..a7269d965aa80d3b17aaa1fd5702a8611cfd3d75 100644
--- a/java/com/android/dialer/common/concurrent/SupportUiListener.java
+++ b/java/com/android/dialer/common/concurrent/SupportUiListener.java
@@ -18,11 +18,13 @@ package com.android.dialer.common.concurrent;
import android.content.Context;
import android.os.Bundle;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.FailureListener;
diff --git a/java/com/android/dialer/common/concurrent/UiListener.java b/java/com/android/dialer/common/concurrent/UiListener.java
index a2d976f3bd23a3a7aa0104a5cbe3764ac4b681fb..e6fb9835edea47f8e2274aeb904811be04c9d32a 100644
--- a/java/com/android/dialer/common/concurrent/UiListener.java
+++ b/java/com/android/dialer/common/concurrent/UiListener.java
@@ -20,9 +20,11 @@ import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Context;
import android.os.Bundle;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.FailureListener;
diff --git a/java/com/android/dialer/common/database/Selection.java b/java/com/android/dialer/common/database/Selection.java
index e449fd9f6f514d28dca49578af145cef642dc108..f1b6191be21359c8662d6f90749e778d53f37044 100644
--- a/java/com/android/dialer/common/database/Selection.java
+++ b/java/com/android/dialer/common/database/Selection.java
@@ -16,9 +16,11 @@
package com.android.dialer.common.database;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.dialer.common.Assert;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/java/com/android/dialer/common/preference/AndroidManifest.xml b/java/com/android/dialer/common/preference/AndroidManifest.xml
deleted file mode 100644
index 3e8062216f0e99d6dcd18dc4323d2e7c63f2b019..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/common/preference/AndroidManifest.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/common/preference/SwitchPreferenceWithClickableSummary.java b/java/com/android/dialer/common/preference/SwitchPreferenceWithClickableSummary.java
deleted file mode 100644
index 7b3564ddcfb62692a0c675a74dfacf439ba92fa5..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/common/preference/SwitchPreferenceWithClickableSummary.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.common.preference;
-
-import static android.support.v4.content.ContextCompat.startActivity;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.TypedArray;
-import android.net.Uri;
-import android.preference.SwitchPreference;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import com.android.dialer.common.Assert;
-
-/**
- * Utility to allow the summary of a {@link SwitchPreference} to be clicked and opened via a browser
- * to the specified {@link urlToOpen} attribute while maintaining all other aspects of a {@link
- * SwitchPreference}.
- *
- *
Copied from android.provider.VoicemailContract.Voicemails. These do not plan to become public
- * in O-MR1 or in the near future.
- */
-public class VoicemailCompat {
-
- /**
- * The state of the voicemail transcription.
- *
- *
Type: INTEGER
- */
- public static final String TRANSCRIPTION_STATE = "transcription_state";
-
- /**
- * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has not yet been
- * attempted.
- */
- public static final int TRANSCRIPTION_NOT_STARTED = 0;
-
- /**
- * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has begun but is not yet
- * complete.
- */
- public static final int TRANSCRIPTION_IN_PROGRESS = 1;
-
- /**
- * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has been attempted and
- * failed for an unspecified reason.
- */
- public static final int TRANSCRIPTION_FAILED = 2;
-
- /**
- * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has completed and the
- * result has been stored in the {@link #TRANSCRIPTION} column.
- */
- public static final int TRANSCRIPTION_AVAILABLE = 3;
-
- /**
- * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has been attempted and
- * failed because no speech was detected.
- *
- *
Internal dialer use only, not part of the public SDK.
- */
- public static final int TRANSCRIPTION_FAILED_NO_SPEECH_DETECTED = -1;
-
- /**
- * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has been attempted and
- * failed because the language was not supported.
- *
- *
Internal dialer use only, not part of the public SDK.
- */
- public static final int TRANSCRIPTION_FAILED_LANGUAGE_NOT_SUPPORTED = -2;
-
- /**
- * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has completed and the
- * result has been stored in the {@link #TRANSCRIPTION} column of the database, and the user has
- * provided a quality rating for the transcription.
- */
- public static final int TRANSCRIPTION_AVAILABLE_AND_RATED = -3;
-
- /**
- * Voicemail transcription quality rating value sent to the server indicating a good transcription
- */
- public static final int TRANSCRIPTION_QUALITY_RATING_GOOD = 1;
-
- /**
- * Voicemail transcription quality rating value sent to the server indicating a bad transcription
- */
- public static final int TRANSCRIPTION_QUALITY_RATING_BAD = 2;
-}
diff --git a/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java b/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
index 41e5be29ff5b635efe695b5a946a871d0559b5c5..4519ba1ce5165485c12feb8effca267b2228e5bb 100644
--- a/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
+++ b/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
@@ -17,14 +17,12 @@
package com.android.dialer.compat.telephony;
import android.content.Context;
-import android.content.Intent;
import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
-import android.support.v4.os.BuildCompat;
import android.telecom.PhoneAccountHandle;
import android.telephony.TelephonyManager;
+
+import androidx.annotation.Nullable;
+
import com.android.dialer.common.LogUtil;
import com.android.dialer.telecom.TelecomUtil;
import java.lang.reflect.InvocationTargetException;
@@ -69,8 +67,7 @@ public class TelephonyManagerCompat {
/** Indicates the Connection/Call used assisted dialing. */
public static final int PROPERTY_ASSISTED_DIALING_USED = 1 << 9;
- public static final String EXTRA_IS_REFRESH =
- BuildCompat.isAtLeastOMR1() ? "android.telephony.extra.IS_REFRESH" : "is_refresh";
+ public static final String EXTRA_IS_REFRESH = "android.telephony.extra.IS_REFRESH";
/**
* Indicates the call underwent Assisted Dialing; typically set as a feature available from the
@@ -189,21 +186,13 @@ public class TelephonyManagerCompat {
* @param secretCode the secret code without the "*#*#" prefix and "#*#*" suffix
*/
public static void handleSecretCode(Context context, String secretCode) {
- // Must use system service on O+ to avoid using broadcasts, which are not allowed on O+.
- if (BuildCompat.isAtLeastO()) {
- if (!TelecomUtil.isDefaultDialer(context)) {
- LogUtil.e(
- "TelephonyManagerCompat.handleSecretCode",
- "not default dialer, cannot send special code");
- return;
- }
- context.getSystemService(TelephonyManager.class).sendDialerSpecialCode(secretCode);
- } else {
- // System service call is not supported pre-O, so must use a broadcast for N-.
- Intent intent =
- new Intent(SECRET_CODE_ACTION, Uri.parse("android_secret_code://" + secretCode));
- context.sendBroadcast(intent);
+ if (!TelecomUtil.isDefaultDialer(context)) {
+ LogUtil.e(
+ "TelephonyManagerCompat.handleSecretCode",
+ "not default dialer, cannot send special code");
+ return;
}
+ context.getSystemService(TelephonyManager.class).sendDialerSpecialCode(secretCode);
}
/**
@@ -226,12 +215,10 @@ public class TelephonyManagerCompat {
if (phoneAccountHandle == null) {
return telephonyManager;
}
- if (VERSION.SDK_INT >= VERSION_CODES.O) {
- TelephonyManager telephonyManagerForPhoneAccount =
- telephonyManager.createForPhoneAccountHandle(phoneAccountHandle);
- if (telephonyManagerForPhoneAccount != null) {
- return telephonyManagerForPhoneAccount;
- }
+ TelephonyManager telephonyManagerForPhoneAccount =
+ telephonyManager.createForPhoneAccountHandle(phoneAccountHandle);
+ if (telephonyManagerForPhoneAccount != null) {
+ return telephonyManagerForPhoneAccount;
}
return telephonyManager;
}
diff --git a/java/com/android/dialer/configprovider/AndroidManifest.xml b/java/com/android/dialer/configprovider/AndroidManifest.xml
deleted file mode 100644
index 772997153c54b6c063580e4c89ae88ba31576d5e..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/configprovider/AndroidManifest.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/java/com/android/dialer/configprovider/ConfigProvider.java b/java/com/android/dialer/configprovider/ConfigProvider.java
deleted file mode 100644
index 886a69e93c72fc507aca6ae522205070b44f3c07..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/configprovider/ConfigProvider.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2016 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
- */
-
-package com.android.dialer.configprovider;
-
-/** Gets config values from the container application. */
-public interface ConfigProvider {
-
- String getString(String key, String defaultValue);
-
- long getLong(String key, long defaultValue);
-
- boolean getBoolean(String key, boolean defaultValue);
-}
diff --git a/java/com/android/dialer/configprovider/ConfigProviderComponent.java b/java/com/android/dialer/configprovider/ConfigProviderComponent.java
deleted file mode 100644
index 5b5afd705e69a8eb5187fd223b6d07c0c808ce77..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/configprovider/ConfigProviderComponent.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.configprovider;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import dagger.Subcomponent;
-
-/** Dagger component to provide a {@link ConfigProvider}. */
-@Subcomponent
-public abstract class ConfigProviderComponent {
-
- @NonNull
- public abstract ConfigProvider getConfigProvider();
-
- public static ConfigProviderComponent get(Context context) {
- return ((ConfigProviderComponent.HasComponent)
- ((HasRootComponent) context.getApplicationContext()).component())
- .configProviderComponent();
- }
-
- /** Used to refer to the root application component. */
- @IncludeInDialerRoot
- public interface HasComponent {
- ConfigProviderComponent configProviderComponent();
- }
-}
diff --git a/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java b/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java
deleted file mode 100644
index c68312f56aadf2a2a7bc9cce8a6f894c055462b8..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-package com.android.dialer.configprovider;
-
-import android.app.IntentService;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.storage.StorageComponent;
-import com.android.dialer.storage.Unencrypted;
-import com.android.dialer.strictmode.StrictModeUtils;
-import javax.inject.Inject;
-
-/**
- * {@link ConfigProvider} which uses a shared preferences file.
- *
- *
Config flags can be written using adb (with root access), for example:
- *
- *
- */
-public class SharedPrefConfigProvider implements ConfigProvider {
- private static final String PREF_PREFIX = "config_provider_prefs_";
-
- private final SharedPreferences sharedPreferences;
-
- @Inject
- SharedPrefConfigProvider(@Unencrypted SharedPreferences sharedPreferences) {
- this.sharedPreferences = sharedPreferences;
- }
-
- /** Service to write values into {@link SharedPrefConfigProvider} using adb. */
- public static class Service extends IntentService {
-
- public Service() {
- super("SharedPrefConfigProvider.Service");
- }
-
- @Override
- protected void onHandleIntent(@Nullable Intent intent) {
- if (intent == null || intent.getExtras() == null || intent.getExtras().size() != 1) {
- LogUtil.w("SharedPrefConfigProvider.Service.onHandleIntent", "must set exactly one extra");
- return;
- }
- String key = intent.getExtras().keySet().iterator().next();
- Object value = intent.getExtras().get(key);
- put(key, value);
- }
-
- private void put(String key, Object value) {
- Editor editor = getSharedPrefs(getApplicationContext()).edit();
- String prefixedKey = PREF_PREFIX + key;
- if (value instanceof Boolean) {
- editor.putBoolean(prefixedKey, (Boolean) value);
- } else if (value instanceof Long) {
- editor.putLong(prefixedKey, (Long) value);
- } else if (value instanceof String) {
- editor.putString(prefixedKey, (String) value);
- } else {
- throw Assert.createAssertionFailException("unsupported extra type: " + value.getClass());
- }
- editor.apply();
- }
- }
-
- /** Set a boolean config value. */
- public void putBoolean(String key, boolean value) {
- sharedPreferences.edit().putBoolean(PREF_PREFIX + key, value).apply();
- }
-
- public void putLong(String key, long value) {
- sharedPreferences.edit().putLong(PREF_PREFIX + key, value).apply();
- }
-
- public void putString(String key, String value) {
- sharedPreferences.edit().putString(PREF_PREFIX + key, value).apply();
- }
-
- @Override
- public String getString(String key, String defaultValue) {
- // Reading shared prefs on the main thread is generally safe since a single instance is cached.
- return StrictModeUtils.bypass(
- () -> sharedPreferences.getString(PREF_PREFIX + key, defaultValue));
- }
-
- @Override
- public long getLong(String key, long defaultValue) {
- // Reading shared prefs on the main thread is generally safe since a single instance is cached.
- return StrictModeUtils.bypass(() -> sharedPreferences.getLong(PREF_PREFIX + key, defaultValue));
- }
-
- @Override
- public boolean getBoolean(String key, boolean defaultValue) {
- // Reading shared prefs on the main thread is generally safe since a single instance is cached.
- return StrictModeUtils.bypass(
- () -> sharedPreferences.getBoolean(PREF_PREFIX + key, defaultValue));
- }
-
- private static SharedPreferences getSharedPrefs(Context appContext) {
- return StorageComponent.get(appContext).unencryptedSharedPrefs();
- }
-}
diff --git a/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java b/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java
deleted file mode 100644
index 81bed19bdbc81aeebe7aedbe8940d79c8e23a251..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.configprovider;
-
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.dialer.storage.StorageModule;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Singleton;
-
-/** Dagger module providing {@link ConfigProvider} based on shared preferences. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module(includes = StorageModule.class)
-public abstract class SharedPrefConfigProviderModule {
-
- private SharedPrefConfigProviderModule() {}
-
- @Binds
- @Singleton
- abstract ConfigProvider to(SharedPrefConfigProvider impl);
-}
diff --git a/java/com/android/dialer/constants/ActivityRequestCodes.java b/java/com/android/dialer/constants/ActivityRequestCodes.java
index 9945080196b2aa35ea17423c5b839787016a8e37..12b7263fc882f8c0642c1e339ed689f2b5d30968 100644
--- a/java/com/android/dialer/constants/ActivityRequestCodes.java
+++ b/java/com/android/dialer/constants/ActivityRequestCodes.java
@@ -27,12 +27,6 @@ public final class ActivityRequestCodes {
/** Request code for {@link android.speech.RecognizerIntent#ACTION_RECOGNIZE_SPEECH} intent. */
public static final int DIALTACTS_VOICE_SEARCH = 1;
- /** Request code for {@link com.android.dialer.callcomposer.CallComposerActivity} intent. */
- public static final int DIALTACTS_CALL_COMPOSER = 2;
-
- /** Request code for {@link com.android.dialer.duo.Duo#getCallIntent(String)}. */
- public static final int DIALTACTS_DUO = 3;
-
/** Request code for {@link com.android.dialer.calldetails.OldCallDetailsActivity} intent. */
public static final int DIALTACTS_CALL_DETAILS = 4;
diff --git a/java/com/android/dialer/constants/Constants.java b/java/com/android/dialer/constants/Constants.java
index fb1aa2ae05d5b31ecf04b0cf3ee8c8143655abf8..dedcf15f620dfd246aaa905c83753a2bcb5a036f 100644
--- a/java/com/android/dialer/constants/Constants.java
+++ b/java/com/android/dialer/constants/Constants.java
@@ -16,19 +16,12 @@
package com.android.dialer.constants;
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.common.Assert;
-import com.android.dialer.proguard.UsedByReflection;
+import androidx.annotation.NonNull;
/**
- * Utility to access constants that are different across build variants (Google Dialer, AOSP,
- * etc...). This functionality depends on a an implementation being present in the app that has the
- * same package and the class name ending in "Impl". For example,
- * com.android.dialer.constants.ConstantsImpl. This class is found by the module using reflection.
+ * Utility to access constants
*/
-@UsedByReflection(value = "Constants.java")
-public abstract class Constants {
+public class Constants {
private static Constants instance;
private static boolean didInitializeInstance;
@@ -36,37 +29,30 @@ public abstract class Constants {
public static synchronized Constants get() {
if (!didInitializeInstance) {
didInitializeInstance = true;
- try {
- Class> clazz = Class.forName(Constants.class.getName() + "Impl");
- instance = (Constants) clazz.getConstructor().newInstance();
- } catch (ReflectiveOperationException e) {
- Assert.fail(
- "Unable to create an instance of ConstantsImpl. To fix this error include one of the "
- + "constants modules (googledialer, aosp etc...) in your target.");
- }
+ instance = new Constants();
}
return instance;
}
@NonNull
- public abstract String getFilteredNumberProviderAuthority();
-
- @NonNull
- public abstract String getFileProviderAuthority();
-
- @NonNull
- public abstract String getAnnotatedCallLogProviderAuthority();
+ public String getFileProviderAuthority() {
+ return "com.android.dialer.files";
+ }
@NonNull
- public abstract String getPhoneLookupHistoryProviderAuthority();
+ public String getAnnotatedCallLogProviderAuthority() {
+ return "com.android.dialer.annotatedcalllog";
+ }
@NonNull
- public abstract String getPreferredSimFallbackProviderAuthority();
-
- public abstract String getUserAgent(Context context);
+ public String getPhoneLookupHistoryProviderAuthority() {
+ return "com.android.dialer.phonelookuphistory";
+ }
@NonNull
- public abstract String getSettingsActivity();
+ public String getPreferredSimFallbackProviderAuthority() {
+ return "com.android.dialer.preferredsimfallback";
+ }
protected Constants() {}
}
diff --git a/java/com/android/dialer/constants/ScheduledJobIds.java b/java/com/android/dialer/constants/ScheduledJobIds.java
index 7ffd2da824258f80572102dba2f40baed518eafc..e9815c7502db5f2e2e0450231061793efbf402b4 100644
--- a/java/com/android/dialer/constants/ScheduledJobIds.java
+++ b/java/com/android/dialer/constants/ScheduledJobIds.java
@@ -16,7 +16,8 @@
package com.android.dialer.constants;
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -29,30 +30,11 @@ import java.lang.annotation.RetentionPolicy;
*
Do not change any existing IDs.
*/
public final class ScheduledJobIds {
- public static final int SPAM_JOB_WIFI = 50;
- public static final int SPAM_JOB_ANY_NETWORK = 51;
-
- /** Spam job type including all spam job IDs. */
- @Retention(RetentionPolicy.SOURCE)
- @IntDef({SPAM_JOB_WIFI, SPAM_JOB_ANY_NETWORK})
- public @interface SpamJobType {}
-
// This job refreshes dynamic launcher shortcuts.
public static final int SHORTCUT_PERIODIC_JOB = 100;
public static final int VVM_TASK_SCHEDULER_JOB = 200;
public static final int VVM_STATUS_CHECK_JOB = 201;
public static final int VVM_DEVICE_PROVISIONED_JOB = 202;
- public static final int VVM_TRANSCRIPTION_JOB = 203;
- public static final int VVM_TRANSCRIPTION_BACKFILL_JOB = 204;
public static final int VVM_NOTIFICATION_JOB = 205;
- public static final int VVM_TRANSCRIPTION_RATING_JOB = 206;
-
- public static final int VOIP_REGISTRATION = 300;
-
- public static final int CALL_LOG_CONFIG_POLLING_JOB = 400;
-
- // Job Ids from 10_000 to 10_100 should be reserved for proto upload jobs.
- public static final int PROTO_UPLOAD_JOB_MIN_ID = 10_000;
- public static final int PROTO_UPLOAD_JOB_MAX_ID = 10_100;
}
diff --git a/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java b/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
deleted file mode 100644
index 312b3f58a962eb7a4b3af970127a2bf170d69fbe..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.constants;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.proguard.UsedByReflection;
-
-/** Provider config values for AOSP Dialer. */
-@UsedByReflection(value = "Constants.java")
-public class ConstantsImpl extends Constants {
-
- @Override
- @NonNull
- public String getFilteredNumberProviderAuthority() {
- return "com.android.dialer.blocking.filterednumberprovider";
- }
-
- @Override
- @NonNull
- public String getFileProviderAuthority() {
- return "com.android.dialer.files";
- }
-
- @NonNull
- @Override
- public String getAnnotatedCallLogProviderAuthority() {
- return "com.android.dialer.annotatedcalllog";
- }
-
- @NonNull
- @Override
- public String getPhoneLookupHistoryProviderAuthority() {
- return "com.android.dialer.phonelookuphistory";
- }
-
- @NonNull
- @Override
- public String getPreferredSimFallbackProviderAuthority() {
- return "com.android.dialer.preferredsimfallback";
- }
-
- @Override
- public String getUserAgent(Context context) {
- return null;
- }
-
- @NonNull
- @Override
- public String getSettingsActivity() {
- return "com.android.dialer.app.settings.DialerSettingsActivity";
- }
-}
diff --git a/java/com/android/dialer/constants/googledialer/ConstantsImpl.java b/java/com/android/dialer/constants/googledialer/ConstantsImpl.java
deleted file mode 100644
index e4a96feb94e2080bc5d4163a1cda2e4b56927457..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/constants/googledialer/ConstantsImpl.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.constants;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.os.Build;
-import android.support.annotation.NonNull;
-import com.android.dialer.proguard.UsedByReflection;
-
-/** Provider config values for Google Dialer. */
-@UsedByReflection(value = "Constants.java")
-public class ConstantsImpl extends Constants {
-
- @Override
- @NonNull
- public String getFilteredNumberProviderAuthority() {
- return "com.google.android.dialer.blocking.filterednumberprovider";
- }
-
- @Override
- @NonNull
- public String getFileProviderAuthority() {
- return "com.google.android.dialer.files";
- }
-
- @NonNull
- @Override
- public String getAnnotatedCallLogProviderAuthority() {
- return "com.google.android.dialer.annotatedcalllog";
- }
-
- @NonNull
- @Override
- public String getPhoneLookupHistoryProviderAuthority() {
- return "com.google.android.dialer.phonelookuphistory";
- }
-
- @NonNull
- @Override
- public String getPreferredSimFallbackProviderAuthority() {
- return "com.google.android.dialer.preferredsimfallback";
- }
-
- @Override
- public String getUserAgent(Context context) {
- StringBuilder userAgent = new StringBuilder("GoogleDialer ");
- try {
- String versionName =
- context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
- userAgent.append(versionName).append(" ");
- } catch (PackageManager.NameNotFoundException e) {
- // ignore
- }
- userAgent.append(Build.FINGERPRINT);
-
- return userAgent.toString();
- }
-
- @NonNull
- @Override
- public String getSettingsActivity() {
- return "com.google.android.apps.dialer.settings.GoogleDialerSettingsActivity";
- }
-}
diff --git a/java/com/android/dialer/contactphoto/ContactPhotoManager.java b/java/com/android/dialer/contactphoto/ContactPhotoManager.java
index 353c1ee331eacea9603342ec4f193cffbe929d25..4bac8867a73b6cc02e551cf20a71ecb9fa4a745c 100644
--- a/java/com/android/dialer/contactphoto/ContactPhotoManager.java
+++ b/java/com/android/dialer/contactphoto/ContactPhotoManager.java
@@ -23,7 +23,6 @@ import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.net.Uri.Builder;
-import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
@@ -40,7 +39,6 @@ public abstract class ContactPhotoManager implements ComponentCallbacks2 {
public static final float SCALE_DEFAULT = 1.0f;
public static final float OFFSET_DEFAULT = 0.0f;
- public static final boolean IS_CIRCULAR_DEFAULT = false;
// TODO: Use LogUtil.isVerboseEnabled for DEBUG branches instead of a lint check.
// LINT.DoNotSubmitIf(true)
static final boolean DEBUG = false;
@@ -55,61 +53,9 @@ public abstract class ContactPhotoManager implements ComponentCallbacks2 {
private static final String OFFSET_PARAM_KEY = "offset";
private static final String IS_CIRCULAR_PARAM_KEY = "is_circular";
private static final String DEFAULT_IMAGE_URI_SCHEME = "defaultimage";
- private static final Uri DEFAULT_IMAGE_URI = Uri.parse(DEFAULT_IMAGE_URI_SCHEME + "://");
public static final DefaultImageProvider DEFAULT_AVATAR = new LetterTileDefaultImageProvider();
private static ContactPhotoManager instance;
- /**
- * Given a {@link DefaultImageRequest}, returns an Uri that can be used to request a letter tile
- * avatar when passed to the {@link ContactPhotoManager}. The internal implementation of this uri
- * is not guaranteed to remain the same across application versions, so the actual uri should
- * never be persisted in long-term storage and reused.
- *
- * @param request A {@link DefaultImageRequest} object with the fields configured to return a
- * @return A Uri that when later passed to the {@link ContactPhotoManager} via {@link
- * #loadPhoto(ImageView, Uri, int, boolean, boolean, DefaultImageRequest)}, can be used to
- * request a default contact image, drawn as a letter tile using the parameters as configured
- * in the provided {@link DefaultImageRequest}
- */
- public static Uri getDefaultAvatarUriForContact(DefaultImageRequest request) {
- final Builder builder = DEFAULT_IMAGE_URI.buildUpon();
- if (request != null) {
- if (!TextUtils.isEmpty(request.displayName)) {
- builder.appendQueryParameter(DISPLAY_NAME_PARAM_KEY, request.displayName);
- }
- if (!TextUtils.isEmpty(request.identifier)) {
- builder.appendQueryParameter(IDENTIFIER_PARAM_KEY, request.identifier);
- }
- if (request.contactType != LetterTileDrawable.TYPE_DEFAULT) {
- builder.appendQueryParameter(CONTACT_TYPE_PARAM_KEY, String.valueOf(request.contactType));
- }
- if (request.scale != SCALE_DEFAULT) {
- builder.appendQueryParameter(SCALE_PARAM_KEY, String.valueOf(request.scale));
- }
- if (request.offset != OFFSET_DEFAULT) {
- builder.appendQueryParameter(OFFSET_PARAM_KEY, String.valueOf(request.offset));
- }
- if (request.isCircular != IS_CIRCULAR_DEFAULT) {
- builder.appendQueryParameter(IS_CIRCULAR_PARAM_KEY, String.valueOf(request.isCircular));
- }
- }
- return builder.build();
- }
-
- /**
- * Adds a business contact type encoded fragment to the URL. Used to ensure photo URLS from Nearby
- * Places can be identified as business photo URLs rather than URLs for personal contact photos.
- *
- * @param photoUrl The photo URL to modify.
- * @return URL with the contact type parameter added and set to TYPE_BUSINESS.
- */
- public static String appendBusinessContactType(String photoUrl) {
- Uri uri = Uri.parse(photoUrl);
- Builder builder = uri.buildUpon();
- builder.encodedFragment(String.valueOf(LetterTileDrawable.TYPE_BUSINESS));
- return builder.build().toString();
- }
-
/**
* Removes the contact type information stored in the photo URI encoded fragment.
*
@@ -194,11 +140,6 @@ public abstract class ContactPhotoManager implements ComponentCallbacks2 {
return new ContactPhotoManagerImpl(context);
}
- @VisibleForTesting
- public static void injectContactPhotoManagerForTesting(ContactPhotoManager photoManager) {
- instance = photoManager;
- }
-
protected boolean isDefaultImageUri(Uri uri) {
return DEFAULT_IMAGE_URI_SCHEME.equals(uri.getScheme());
}
diff --git a/java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java b/java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java
index f7f79e17f55adcf35ded0317602252a68547092a..97e984bb8eab3f86bdfc3471c5300c63169adadf 100644
--- a/java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java
+++ b/java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java
@@ -43,8 +43,6 @@ import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Contacts.Photo;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.Directory;
-import android.support.annotation.UiThread;
-import android.support.annotation.WorkerThread;
import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
import android.text.TextUtils;
@@ -52,6 +50,11 @@ import android.util.LruCache;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
+
+import androidx.annotation.UiThread;
+import androidx.annotation.WorkerThread;
+
+import com.android.dialer.R;
import com.android.dialer.common.LogUtil;
import com.android.dialer.constants.Constants;
import com.android.dialer.constants.TrafficStatsTags;
@@ -198,10 +201,7 @@ class ContactPhotoManagerImpl extends ContactPhotoManager implements Callback {
context.getResources().getDimensionPixelSize(R.dimen.contact_browser_list_item_photo_size);
// Get a user agent string to use for URI photo requests.
- userAgent = Constants.get().getUserAgent(context);
- if (userAgent == null) {
- userAgent = "";
- }
+ userAgent = "";
}
/** Converts bytes to K bytes, rounding up. Used only for debug log. */
diff --git a/java/com/android/dialer/contacts/ContactsModule.java b/java/com/android/dialer/contacts/ContactsModule.java
index 2a27b766b83bd8b3f1af31552b5aabde9ece45c0..9cbb6ae8f7f49b5d1ad2613e122323dac6285182 100644
--- a/java/com/android/dialer/contacts/ContactsModule.java
+++ b/java/com/android/dialer/contacts/ContactsModule.java
@@ -24,15 +24,12 @@ import com.android.dialer.contacts.displaypreference.ContactDisplayPreferencesSt
import com.android.dialer.contacts.hiresphoto.HighResolutionPhotoRequester;
import com.android.dialer.contacts.hiresphoto.HighResolutionPhotoRequesterImpl;
import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
import dagger.Binds;
import dagger.Lazy;
import dagger.Module;
import dagger.Provides;
/** Module for standard {@link ContactsComponent} */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
@Module
public abstract class ContactsModule {
@Provides
diff --git a/java/com/android/dialer/contacts/displaypreference/ContactDisplayPreferences.java b/java/com/android/dialer/contacts/displaypreference/ContactDisplayPreferences.java
index dca466ebf59d4806a7a3396e67926382bcf759ed..ea520e880997efb96ef9afd1db5d96861fab7293 100644
--- a/java/com/android/dialer/contacts/displaypreference/ContactDisplayPreferences.java
+++ b/java/com/android/dialer/contacts/displaypreference/ContactDisplayPreferences.java
@@ -17,9 +17,13 @@
package com.android.dialer.contacts.displaypreference;
import android.content.Context;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+
+import com.android.dialer.R;
+
import java.util.Arrays;
/** Handles name ordering of a contact (Given name first or family name first.) */
diff --git a/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequesterImpl.java b/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequesterImpl.java
index 0c14613139794fea7b64f82e13d95eccd23727c6..64eab60c59a5622829cd22f4355abc27d80c7ec7 100644
--- a/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequesterImpl.java
+++ b/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequesterImpl.java
@@ -24,7 +24,6 @@ import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.RawContacts;
-import android.support.annotation.VisibleForTesting;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
import com.android.dialer.common.database.Selection;
@@ -48,8 +47,7 @@ public class HighResolutionPhotoRequesterImpl implements HighResolutionPhotoRequ
}
}
- @VisibleForTesting
- static final ComponentName SYNC_HIGH_RESOLUTION_PHOTO_SERVICE =
+ private static final ComponentName SYNC_HIGH_RESOLUTION_PHOTO_SERVICE =
new ComponentName(
"com.google.android.gms",
"com.google.android.gms.people.sync.focus.SyncHighResPhotoIntentOperation");
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-hdpi/ic_phone_attach.png b/java/com/android/dialer/contacts/resources/res/drawable-hdpi/ic_phone_attach.png
deleted file mode 100644
index 0137d75a363e0943ef28a787f8bc675fe60ad6e0..0000000000000000000000000000000000000000
Binary files a/java/com/android/dialer/contacts/resources/res/drawable-hdpi/ic_phone_attach.png and /dev/null differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-mdpi/ic_phone_attach.png b/java/com/android/dialer/contacts/resources/res/drawable-mdpi/ic_phone_attach.png
deleted file mode 100644
index b02379956e459b6ba0314e59a3fed17eee5dc5c0..0000000000000000000000000000000000000000
Binary files a/java/com/android/dialer/contacts/resources/res/drawable-mdpi/ic_phone_attach.png and /dev/null differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-xhdpi/ic_phone_attach.png b/java/com/android/dialer/contacts/resources/res/drawable-xhdpi/ic_phone_attach.png
deleted file mode 100644
index 6bd3237d0d8bdf3ec1bef58790375ac5a9c471d7..0000000000000000000000000000000000000000
Binary files a/java/com/android/dialer/contacts/resources/res/drawable-xhdpi/ic_phone_attach.png and /dev/null differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-xxhdpi/ic_phone_attach.png b/java/com/android/dialer/contacts/resources/res/drawable-xxhdpi/ic_phone_attach.png
deleted file mode 100644
index dd58d1c30598b0e02c4144ef2c198373a8aeda42..0000000000000000000000000000000000000000
Binary files a/java/com/android/dialer/contacts/resources/res/drawable-xxhdpi/ic_phone_attach.png and /dev/null differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-xxxhdpi/ic_phone_attach.png b/java/com/android/dialer/contacts/resources/res/drawable-xxxhdpi/ic_phone_attach.png
deleted file mode 100644
index e238c9915dd13c0543aaf84e99786565a02365f1..0000000000000000000000000000000000000000
Binary files a/java/com/android/dialer/contacts/resources/res/drawable-xxxhdpi/ic_phone_attach.png and /dev/null differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable/back_arrow.xml b/java/com/android/dialer/contacts/resources/res/drawable/back_arrow.xml
deleted file mode 100644
index 34fa3d7fcf60238de66cd5952ec0103d8688c7cd..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/drawable/back_arrow.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
diff --git a/java/com/android/dialer/contacts/resources/res/drawable/fastscroll_thumb.xml b/java/com/android/dialer/contacts/resources/res/drawable/fastscroll_thumb.xml
deleted file mode 100644
index 67645ff9109a425e0fa9c99739105225cc0e139c..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/drawable/fastscroll_thumb.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/java/com/android/dialer/contacts/resources/res/drawable/ic_scroll_handle_default.xml b/java/com/android/dialer/contacts/resources/res/drawable/ic_scroll_handle_default.xml
deleted file mode 100644
index 9164ab1ab3fe433fcfa4bb32ff43e411a3be927f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/drawable/ic_scroll_handle_default.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
diff --git a/java/com/android/dialer/contacts/resources/res/drawable/ic_scroll_handle_pressed.xml b/java/com/android/dialer/contacts/resources/res/drawable/ic_scroll_handle_pressed.xml
deleted file mode 100644
index c9b93d9251c43ceb76d73dcf593e8516ffc7c720..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/drawable/ic_scroll_handle_pressed.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/java/com/android/dialer/contacts/resources/res/layout/account_filter_header.xml b/java/com/android/dialer/contacts/resources/res/layout/account_filter_header.xml
deleted file mode 100644
index 592c240a9beaa2ca6b29bb381bb62083c5072091..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/layout/account_filter_header.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/contacts/resources/res/layout/contact_detail_list_padding.xml b/java/com/android/dialer/contacts/resources/res/layout/contact_detail_list_padding.xml
deleted file mode 100644
index 02a5c809c3856df054ba75ea9fcef909560b195d..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/layout/contact_detail_list_padding.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/contacts/resources/res/layout/contact_list_card.xml b/java/com/android/dialer/contacts/resources/res/layout/contact_list_card.xml
deleted file mode 100644
index 37bb8ea27a249fc6722382cecefcfd8cf718a88a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/layout/contact_list_card.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/contacts/resources/res/layout/contact_list_content.xml b/java/com/android/dialer/contacts/resources/res/layout/contact_list_content.xml
deleted file mode 100644
index 3ee27a0adc3a2186db018d37b729edab97b054b7..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/layout/contact_list_content.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/contacts/resources/res/layout/dialog_call_subject.xml b/java/com/android/dialer/contacts/resources/res/layout/dialog_call_subject.xml
index d20aa3b45f5a2f9896812e1eb90ceaa93657c0ec..465d313a2b16408f8095d49dc39dbac3157b6d8b 100644
--- a/java/com/android/dialer/contacts/resources/res/layout/dialog_call_subject.xml
+++ b/java/com/android/dialer/contacts/resources/res/layout/dialog_call_subject.xml
@@ -95,8 +95,7 @@
android:gravity="top"
android:hint="@string/call_subject_hint"
android:textColor="?android:attr/textColorSecondary"
- android:textSize="@dimen/call_subject_dialog_secondary_text_size"
- />
+ android:textSize="@dimen/call_subject_dialog_secondary_text_size"/>
-
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/contacts/resources/res/layout/search_bar_expanded.xml b/java/com/android/dialer/contacts/resources/res/layout/search_bar_expanded.xml
deleted file mode 100644
index c9ab6a92df95a31cc391961c8f5ab0e7529449f3..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/layout/search_bar_expanded.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/contacts/resources/res/values-ja/donottranslate_config.xml b/java/com/android/dialer/contacts/resources/res/values-ja/donottranslate_config.xml
index 29512c04a89acf8ff373c704b663e2f1e3c5b919..79ede4a2d107eb299a55740ee14904505c417d39 100644
--- a/java/com/android/dialer/contacts/resources/res/values-ja/donottranslate_config.xml
+++ b/java/com/android/dialer/contacts/resources/res/values-ja/donottranslate_config.xml
@@ -19,15 +19,9 @@
false
-
- true
-
false
-
- true
-
false
-
\ No newline at end of file
+
diff --git a/java/com/android/dialer/contacts/resources/res/values-ko/donottranslate_config.xml b/java/com/android/dialer/contacts/resources/res/values-ko/donottranslate_config.xml
index 8a1c2bff46e31ab3a97694225b9afb17cc8d1212..36756324016a0af1b7e870312c53d88b3a08dae3 100644
--- a/java/com/android/dialer/contacts/resources/res/values-ko/donottranslate_config.xml
+++ b/java/com/android/dialer/contacts/resources/res/values-ko/donottranslate_config.xml
@@ -18,15 +18,9 @@
false
-
- false
-
false
-
- false
-
false
-
\ No newline at end of file
+
diff --git a/java/com/android/dialer/contacts/resources/res/values-land/integers.xml b/java/com/android/dialer/contacts/resources/res/values-land/integers.xml
deleted file mode 100644
index 26bac62220a17dfce075a436cfa49a45f05bc7e4..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/values-land/integers.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- 3
-
-
- 60
-
diff --git a/java/com/android/dialer/contacts/resources/res/values-sw600dp-land/integers.xml b/java/com/android/dialer/contacts/resources/res/values-sw600dp-land/integers.xml
deleted file mode 100644
index be4eb0bb08c87f6e490c490ac1a5a60d250b7577..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/values-sw600dp-land/integers.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- 3
-
-
- 20
-
diff --git a/java/com/android/dialer/contacts/resources/res/values-sw600dp/dimens.xml b/java/com/android/dialer/contacts/resources/res/values-sw600dp/dimens.xml
deleted file mode 100644
index e5773b42de58e38e5c171f0ec3018e9cd3d25f36..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/values-sw600dp/dimens.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
- @dimen/list_visible_scrollbar_padding
-
- 24dip
-
-
- 32dp
-
- 32dp
-
diff --git a/java/com/android/dialer/contacts/resources/res/values-sw600dp/integers.xml b/java/com/android/dialer/contacts/resources/res/values-sw600dp/integers.xml
deleted file mode 100644
index 31aeee9955b0c4fee7c2aeff407280670609e29d..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/values-sw600dp/integers.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
- 3
-
-
-
- 15
-
diff --git a/java/com/android/dialer/contacts/resources/res/values-sw720dp-land/integers.xml b/java/com/android/dialer/contacts/resources/res/values-sw720dp-land/integers.xml
deleted file mode 100644
index 577716d24412691a464ffd66ce7e160da751dabb..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/values-sw720dp-land/integers.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- 4
-
-
- 30
-
diff --git a/java/com/android/dialer/contacts/resources/res/values-sw720dp/integers.xml b/java/com/android/dialer/contacts/resources/res/values-sw720dp/integers.xml
deleted file mode 100644
index 05e3093519cd6f253c7ff4d9d4ca56def4ee2783..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/contacts/resources/res/values-sw720dp/integers.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- 2
-
-
- 20
-
diff --git a/java/com/android/dialer/contacts/resources/res/values-zh-rCN/donottranslate_config.xml b/java/com/android/dialer/contacts/resources/res/values-zh-rCN/donottranslate_config.xml
index 2c130ba7011fe66443a7dea2ba657d7008ef4fcc..36756324016a0af1b7e870312c53d88b3a08dae3 100644
--- a/java/com/android/dialer/contacts/resources/res/values-zh-rCN/donottranslate_config.xml
+++ b/java/com/android/dialer/contacts/resources/res/values-zh-rCN/donottranslate_config.xml
@@ -18,15 +18,9 @@
false
-
- true
-
false
-
- true
-
false
-
\ No newline at end of file
+
diff --git a/java/com/android/dialer/contacts/resources/res/values-zh-rTW/donottranslate_config.xml b/java/com/android/dialer/contacts/resources/res/values-zh-rTW/donottranslate_config.xml
index 2c130ba7011fe66443a7dea2ba657d7008ef4fcc..36756324016a0af1b7e870312c53d88b3a08dae3 100644
--- a/java/com/android/dialer/contacts/resources/res/values-zh-rTW/donottranslate_config.xml
+++ b/java/com/android/dialer/contacts/resources/res/values-zh-rTW/donottranslate_config.xml
@@ -18,15 +18,9 @@
false
-
- true
-
false
-
- true
-
false
-
\ No newline at end of file
+
diff --git a/java/com/android/dialer/contacts/resources/res/values/colors.xml b/java/com/android/dialer/contacts/resources/res/values/colors.xml
index ab9f19b299fd6643bae4c84404be6a275f102d42..b2acf6939a2420821915f7b291c4f72c4f95b5a6 100644
--- a/java/com/android/dialer/contacts/resources/res/values/colors.xml
+++ b/java/com/android/dialer/contacts/resources/res/values/colors.xml
@@ -15,9 +15,6 @@
-->
-
- #363636
-
@@ -40,9 +37,6 @@
#d1041c
-
- #000000
-
#d8d8d8
diff --git a/java/com/android/dialer/contacts/resources/res/values/dimens.xml b/java/com/android/dialer/contacts/resources/res/values/dimens.xml
index df3e53c77c76b812871233956a0a87239a718db9..16078bfe935ce41d8ed38733d1d9391744ed991c 100644
--- a/java/com/android/dialer/contacts/resources/res/values/dimens.xml
+++ b/java/com/android/dialer/contacts/resources/res/values/dimens.xml
@@ -14,34 +14,15 @@
~ limitations under the License
-->
-
-
-
- 0dip
+32dip
- 18dp
- 8dp
-
-
- 32dip
-
- 16dip
- @dimen/list_visible_scrollbar_padding
-
- 8dip
-
- 56dp
-
- 16sp40dp
- 15dp56dp
@@ -66,21 +47,6 @@
12sp2dp
-
- 48dp
-
- 56dp
-
- 16dp
-
- 14dp
-
- 15dp
-
- 16sp
-
- 2dp
-
20dp
diff --git a/java/com/android/dialer/contacts/resources/res/values/donottranslate_config.xml b/java/com/android/dialer/contacts/resources/res/values/donottranslate_config.xml
index f37e0b8d891bca09aaf9438aaaaa47153f231c5d..dc85a94519818e052580c1620a24008f39e0a769 100644
--- a/java/com/android/dialer/contacts/resources/res/values/donottranslate_config.xml
+++ b/java/com/android/dialer/contacts/resources/res/values/donottranslate_config.xml
@@ -18,24 +18,9 @@
true
-
- true
-
true
-
- true
-
true
-
-
- true
-
-
- ContactEditorUtils_default_account
-
-
- ContactEditorUtils_anything_saved
diff --git a/java/com/android/dialer/contacts/resources/res/values/integers.xml b/java/com/android/dialer/contacts/resources/res/values/integers.xml
index f4ed5c276fd8d4c86a28833673d51ca84f949331..5e85029fb9187085af8ae7435a5dbadc6d302dbc 100644
--- a/java/com/android/dialer/contacts/resources/res/values/integers.xml
+++ b/java/com/android/dialer/contacts/resources/res/values/integers.xml
@@ -16,20 +16,6 @@
-->
-
-
- 2
-
-
- 30
-
-
- 0
-
- 0
-
250
diff --git a/java/com/android/dialer/contacts/resources/res/values/strings.xml b/java/com/android/dialer/contacts/resources/res/values/strings.xml
index cf24a8867c85bfaec6c10730e55f9ecfebacb567..7b296deaa9d013fa0b532a7cdeb1890cfaaac90b 100644
--- a/java/com/android/dialer/contacts/resources/res/values/strings.xml
+++ b/java/com/android/dialer/contacts/resources/res/values/strings.xml
@@ -122,56 +122,16 @@
Clearing frequently contacted\u2026
-
- Available
-
-
- Away
-
-
- Busy
-
-
- Contacts
-
-
- Top Suggested
-
-
- Other
-
DirectoryWork directory
-
- All contacts
-
-
- Suggestions
-
-
- Me
-
(No name)
-
- View contact
-
-
- All contacts with phone numbers
-
- Work profile contactsView updates
@@ -320,20 +280,6 @@
Chat
-
- All contacts
-
-
- Contacts in %s
-
-
- Contacts in custom view
-
-
- Single contact
-
-
-
Sort by
@@ -362,22 +308,12 @@
Clear search
-
- sans-serif
-
AccountAlways use this for calls
-
- Choose SIM for this call
-
-
- Remember this choice
-
@@ -420,11 +356,4 @@
[CHAR LIMIT=NONE]-->
Video call
-
-
- Share and call
diff --git a/java/com/android/dialer/contacts/resources/res/values/styles.xml b/java/com/android/dialer/contacts/resources/res/values/styles.xml
index 4f0b3f15f5186adba4957d708f29a97512ef7451..6ce88c3692176a5908d900cfe1908febab6b249c 100644
--- a/java/com/android/dialer/contacts/resources/res/values/styles.xml
+++ b/java/com/android/dialer/contacts/resources/res/values/styles.xml
@@ -51,7 +51,7 @@ background and text color. See also android:style/Widget.Holo.TextView.ListSepar
4dipendtrue
- true
+ false
-
\ No newline at end of file
+
diff --git a/java/com/android/dialer/duo/Duo.java b/java/com/android/dialer/duo/Duo.java
deleted file mode 100644
index 85fe9fbc163626ed63d87cc0701e243421928237..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/duo/Duo.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.duo;
-
-import android.content.Context;
-import android.content.Intent;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.telecom.Call;
-import android.telecom.PhoneAccountHandle;
-import com.google.auto.value.AutoValue;
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.List;
-
-/** Interface for Duo video call integration. */
-@SuppressWarnings("Guava")
-public interface Duo {
-
- /** @return true if the Duo integration is enabled on this device. */
- boolean isEnabled(@NonNull Context context);
-
- /** @return true if Duo is installed on this device. */
- boolean isInstalled(@NonNull Context context);
-
- /**
- * @return true if Duo is installed and the user has gone through the set-up flow confirming their
- * phone number.
- */
- boolean isActivated(@NonNull Context context);
-
- /** @return true if the parameter number is reachable on Duo. */
- @MainThread
- boolean isReachable(@NonNull Context context, @Nullable String number);
-
- /**
- * @return true if the number supports upgrading a voice call to a Duo video call. Returns {@code
- * null} if result is unknown.
- */
- @MainThread
- Optional supportsUpgrade(
- @NonNull Context context,
- @Nullable String number,
- @Nullable PhoneAccountHandle phoneAccountHandle);
-
- /** Starts a task to update the reachability of the parameter numbers asynchronously. */
- @MainThread
- ListenableFuture> updateReachability(
- @NonNull Context context, @NonNull List numbers);
-
- /**
- * Clears the current reachability data and starts a task to load the latest reachability data
- * asynchronously.
- */
- @MainThread
- void reloadReachability(@NonNull Context context);
-
- /**
- * Get the {@link PhoneAccountHandle} used by duo calls in the connection service and call log.
- */
- Optional getPhoneAccountHandle();
-
- boolean isDuoAccount(PhoneAccountHandle phoneAccountHandle);
-
- boolean isDuoAccount(String componentName);
-
- /**
- * @return an Intent to start a Duo video call with the parameter number. Must be started using
- * startActivityForResult.
- */
- @MainThread
- Optional getCallIntent(@NonNull String number);
-
- /** @return an Intent to setup duo. Must be started using startActivityForResult. */
- Optional getActivateIntent();
-
- /**
- * @return an Intent to invite the parameter number to use duo. Must be started using
- * startActivityForResult.
- */
- Optional getInviteIntent(String number);
-
- Optional getInstallDuoIntent();
-
- /** Requests upgrading the parameter ongoing call to a Duo video call. */
- @MainThread
- void requestUpgrade(@NonNull Context context, Call call);
-
- /** Registers a listener for reachability data changes. */
- @MainThread
- void registerListener(@NonNull DuoListener listener);
-
- /** Unregisters a listener for reachability data changes. */
- @MainThread
- void unregisterListener(@NonNull DuoListener listener);
-
- /** The string resource to use for outgoing Duo call entries in call details. */
- @StringRes
- @MainThread
- int getOutgoingCallTypeText();
-
- /** The string resource to use for incoming Duo call entries in call details. */
- @StringRes
- @MainThread
- int getIncomingCallTypeText();
-
- /** The ID of the drawable resource of a Duo logo. */
- @DrawableRes
- @MainThread
- int getLogo();
-
- /** Reachability information for a number. */
- @AutoValue
- abstract class ReachabilityData {
- public enum Status {
- UNKNOWN,
-
- /**
- * The number is callable. Apps should further look up “AUDIO_CALLABLE” and “VIDEO_CALLABLE”
- * keys for supported modes.
- */
- CALL,
-
- /** The number is not callable. Apps can send an invite to the contact via INVITE intent. */
- INVITE,
-
- /**
- * Neither Tachystick nor Duo is registered. Apps should show “setup” icon and send REGISTER
- * intent to.
- */
- SETUP,
-
- /**
- * Indicates that the number is callable but user needs to set up (Tachystick/Duo) before
- * calling.
- */
- SETUP_AND_CALL
- }
-
- public abstract Status status();
-
- public abstract String number();
-
- public abstract boolean audioCallable();
-
- public abstract boolean videoCallable();
-
- public abstract boolean supportsUpgrade();
-
- public static ReachabilityData create(
- Status status,
- String number,
- boolean audioCallable,
- boolean videoCallable,
- boolean supportsUpgrade) {
- return new AutoValue_Duo_ReachabilityData(
- status, number, audioCallable, videoCallable, supportsUpgrade);
- }
- }
-}
diff --git a/java/com/android/dialer/duo/DuoComponent.java b/java/com/android/dialer/duo/DuoComponent.java
deleted file mode 100644
index 307832aaf95f53cc17735b574735742f1e1b0f7e..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/duo/DuoComponent.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.duo;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import dagger.Subcomponent;
-
-/**
- */
-@Subcomponent
-public abstract class DuoComponent {
-
- @NonNull
- public abstract Duo getDuo();
-
- public static DuoComponent get(Context context) {
- return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
- .duoComponent();
- }
-
- /** Used to refer to the root application component. */
- @IncludeInDialerRoot
- public interface HasComponent {
- DuoComponent duoComponent();
- }
-}
diff --git a/java/com/android/dialer/duo/DuoListener.java b/java/com/android/dialer/duo/DuoListener.java
deleted file mode 100644
index 9c660be9c370633abef5f04a51af4232f04230d4..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/duo/DuoListener.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.duo;
-
-public interface DuoListener {
- void onDuoStateChanged();
-}
diff --git a/java/com/android/dialer/duo/stub/DuoStub.java b/java/com/android/dialer/duo/stub/DuoStub.java
deleted file mode 100644
index 2131d16f75e24a488789fd968784a4c83acad0f8..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/duo/stub/DuoStub.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.duo.stub;
-
-import android.content.Context;
-import android.content.Intent;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.telecom.Call;
-import android.telecom.PhoneAccountHandle;
-import com.android.dialer.common.Assert;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.duo.DuoListener;
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.List;
-import javax.inject.Inject;
-
-public class DuoStub implements Duo {
-
- @Inject
- public DuoStub() {}
-
- @Override
- public boolean isEnabled(@NonNull Context context) {
- return false;
- }
-
- @Override
- public boolean isInstalled(@NonNull Context context) {
- return false;
- }
-
- @Override
- public boolean isActivated(@NonNull Context context) {
- return false;
- }
-
- @MainThread
- @Override
- public boolean isReachable(@NonNull Context context, @Nullable String number) {
- Assert.isMainThread();
- Assert.isNotNull(context);
- return false;
- }
-
- @MainThread
- @Override
- public Optional supportsUpgrade(
- @NonNull Context context,
- @Nullable String number,
- @Nullable PhoneAccountHandle phoneAccountHandle) {
- Assert.isMainThread();
- Assert.isNotNull(context);
- return Optional.of(false);
- }
-
- @Override
- public ListenableFuture> updateReachability(
- @NonNull Context context, @NonNull List numbers) {
- Assert.isMainThread();
- Assert.isNotNull(context);
- Assert.isNotNull(numbers);
- return Futures.immediateFuture(ImmutableMap.of());
- }
-
- @Override
- public void reloadReachability(@NonNull Context context) {}
-
- @Override
- public Optional getPhoneAccountHandle() {
- return Optional.absent();
- }
-
- @Override
- public boolean isDuoAccount(PhoneAccountHandle phoneAccountHandle) {
- return false;
- }
-
- @Override
- public boolean isDuoAccount(String componentName) {
- return false;
- }
-
- @MainThread
- @Override
- public Optional getCallIntent(@NonNull String number) {
- Assert.isMainThread();
- Assert.isNotNull(number);
- return Optional.absent();
- }
-
- @Override
- public Optional getActivateIntent() {
- return Optional.absent();
- }
-
- @Override
- public Optional getInviteIntent(String number) {
- return Optional.absent();
- }
-
- @Override
- public Optional getInstallDuoIntent() {
- return null;
- }
-
- @MainThread
- @Override
- public void requestUpgrade(@NonNull Context context, Call call) {
- Assert.isMainThread();
- Assert.isNotNull(call);
- }
-
- @MainThread
- @Override
- public void registerListener(DuoListener listener) {
- Assert.isMainThread();
- Assert.isNotNull(listener);
- }
-
- @MainThread
- @Override
- public void unregisterListener(DuoListener listener) {
- Assert.isMainThread();
- Assert.isNotNull(listener);
- }
-
- @StringRes
- @Override
- public int getOutgoingCallTypeText() {
- return -1;
- }
-
- @StringRes
- @Override
- public int getIncomingCallTypeText() {
- return -1;
- }
-
- @DrawableRes
- @Override
- public int getLogo() {
- return -1;
- }
-}
diff --git a/java/com/android/dialer/duo/stub/StubDuoModule.java b/java/com/android/dialer/duo/stub/StubDuoModule.java
deleted file mode 100644
index 57c357080b32da47119c74296fa97bb1c2918339..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/duo/stub/StubDuoModule.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.duo.stub;
-
-import com.android.dialer.duo.Duo;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Singleton;
-
-@Module
-@InstallIn(variants = DialerVariant.DIALER_TEST)
-public abstract class StubDuoModule {
-
- @Binds
- @Singleton
- public abstract Duo bindsDuo(DuoStub duoStub);
-}
diff --git a/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java b/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java
deleted file mode 100644
index 32054e8d19052f85ca8c2449fca68b193ad00a0b..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2016 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
- */
-
-package com.android.dialer.enrichedcall;
-
-import com.google.auto.value.AutoValue;
-
-/** Value type holding enriched call capabilities. */
-@AutoValue
-public abstract class EnrichedCallCapabilities {
-
- public static final EnrichedCallCapabilities NO_CAPABILITIES = builder().build();
-
- public static final EnrichedCallCapabilities ALL_CAPABILITIES =
- builder()
- .setCallComposerCapable(true)
- .setPostCallCapable(true)
- .setVideoShareCapable(true)
- .build();
-
- public abstract boolean isCallComposerCapable();
-
- public abstract boolean isPostCallCapable();
-
- public abstract boolean isVideoShareCapable();
-
- public abstract Builder toBuilder();
-
- /**
- * Returns {@code true} if these capabilities represent those of a user that is temporarily
- * unavailable. This is an indication that capabilities should be refreshed.
- */
- public abstract boolean isTemporarilyUnavailable();
-
- /**
- * Creates an instance of {@link Builder}.
- *
- *
Unless otherwise set, all fields will default to false.
- */
- public static Builder builder() {
- return new AutoValue_EnrichedCallCapabilities.Builder()
- .setCallComposerCapable(false)
- .setPostCallCapable(false)
- .setVideoShareCapable(false)
- .setTemporarilyUnavailable(false);
- }
-
- /** Creates instances of {@link EnrichedCallCapabilities}. */
- @AutoValue.Builder
- public abstract static class Builder {
- public abstract Builder setCallComposerCapable(boolean isCapable);
-
- public abstract Builder setPostCallCapable(boolean isCapable);
-
- public abstract Builder setVideoShareCapable(boolean isCapable);
-
- public abstract Builder setTemporarilyUnavailable(boolean temporarilyUnavailable);
-
- public abstract EnrichedCallCapabilities build();
- }
-}
diff --git a/java/com/android/dialer/enrichedcall/EnrichedCallComponent.java b/java/com/android/dialer/enrichedcall/EnrichedCallComponent.java
deleted file mode 100644
index 46afd848ddace1b32175b4c2497d8ee55bba8ad4..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/EnrichedCallComponent.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.enrichedcall;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import dagger.Subcomponent;
-
-/** Subcomponent that can be used to access the enriched call implementation. */
-@Subcomponent
-public abstract class EnrichedCallComponent {
-
- @NonNull
- public abstract EnrichedCallManager getEnrichedCallManager();
-
- @NonNull
- public abstract RcsVideoShareFactory getRcsVideoShareFactory();
-
- public static EnrichedCallComponent get(Context context) {
- return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
- .enrichedCallComponent();
- }
-
- /** Used to refer to the root application component. */
- @IncludeInDialerRoot
- public interface HasComponent {
- EnrichedCallComponent enrichedCallComponent();
- }
-}
diff --git a/java/com/android/dialer/enrichedcall/EnrichedCallManager.java b/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
deleted file mode 100644
index 681193c5283c38d8a849437ca2da3efc60affb37..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- * Copyright (C) 2016 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
- */
-
-package com.android.dialer.enrichedcall;
-
-import android.content.BroadcastReceiver.PendingResult;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.calldetails.CallDetailsEntries;
-import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
-import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
-import com.android.dialer.enrichedcall.videoshare.VideoShareListener;
-import com.android.dialer.enrichedcall.videoshare.VideoShareSession;
-import com.android.dialer.multimedia.MultimediaData;
-import java.util.List;
-import java.util.Map;
-
-/** Performs all enriched calling logic. */
-public interface EnrichedCallManager {
-
- int POST_CALL_NOTE_MAX_CHAR = 60;
-
- /** Receives updates when enriched call capabilities are ready. */
- interface CapabilitiesListener {
-
- /** Callback fired when the capabilities are updated. */
- @MainThread
- void onCapabilitiesUpdated();
- }
-
- /**
- * Registers the given {@link CapabilitiesListener}.
- *
- *
As a result of this method, the listener will receive a call to {@link
- * CapabilitiesListener#onCapabilitiesUpdated()} after a call to {@link
- * #requestCapabilities(String)}.
- */
- @MainThread
- void registerCapabilitiesListener(@NonNull CapabilitiesListener listener);
-
- /**
- * Starts an asynchronous process to get enriched call capabilities of the given number.
- *
- *
Registered listeners will receive a call to {@link
- * CapabilitiesListener#onCapabilitiesUpdated()} on completion.
- *
- * @param number the remote number in any format
- */
- @MainThread
- void requestCapabilities(@NonNull String number);
-
- /**
- * Unregisters the given {@link CapabilitiesListener}.
- *
- *
As a result of this method, the listener will not receive capabilities of the given number.
- */
- @MainThread
- void unregisterCapabilitiesListener(@NonNull CapabilitiesListener listener);
-
- /** Gets the cached capabilities for the given number, else null */
- @MainThread
- @Nullable
- EnrichedCallCapabilities getCapabilities(@NonNull String number);
-
- /** Clears any cached data, such as capabilities. */
- @MainThread
- void clearCachedData();
-
- /**
- * Starts a call composer session with the given remote number.
- *
- * @param number the remote number in any format
- * @return the id for the started session, or {@link Session#NO_SESSION_ID} if the session fails
- */
- @MainThread
- long startCallComposerSession(@NonNull String number);
-
- /**
- * Sends the given information through an open enriched call session. As per the enriched calling
- * spec, up to two messages are sent: the first is an enriched call data message that optionally
- * includes the subject and the second is the optional image data message.
- *
- * @param sessionId the id for the session. See {@link #startCallComposerSession(String)}
- * @param data the {@link MultimediaData}
- * @throws IllegalArgumentException if there's no open session with the given number
- * @throws IllegalStateException if the session isn't in the {@link Session#STATE_STARTED} state
- */
- @MainThread
- void sendCallComposerData(long sessionId, @NonNull MultimediaData data);
-
- /**
- * Ends the given call composer session. Ending a session means that the call composer session
- * will be closed.
- *
- * @param sessionId the id of the session to end
- */
- @MainThread
- void endCallComposerSession(long sessionId);
-
- /**
- * Sends a post call note to the given number.
- *
- * @throws IllegalArgumentException if message is longer than {@link #POST_CALL_NOTE_MAX_CHAR}
- * characters
- */
- @MainThread
- void sendPostCallNote(@NonNull String number, @NonNull String message);
-
- /**
- * Called once the capabilities are available for a corresponding call to {@link
- * #requestCapabilities(String)}.
- *
- * @param number the remote number in any format
- * @param capabilities the supported capabilities
- */
- @MainThread
- void onCapabilitiesReceived(
- @NonNull String number, @NonNull EnrichedCallCapabilities capabilities);
-
- /** Receives updates when the state of an enriched call changes. */
- interface StateChangedListener {
-
- /**
- * Callback fired when state changes. Listeners should call {@link #getSession(long)} or {@link
- * #getSession(String, String, Filter)} to retrieve the new state.
- */
- void onEnrichedCallStateChanged();
- }
-
- /**
- * Registers the given {@link StateChangedListener}.
- *
- *
As a result of this method, the listener will receive updates when the state of any enriched
- * call changes.
- */
- @MainThread
- void registerStateChangedListener(@NonNull StateChangedListener listener);
-
- /**
- * Returns the {@link Session} for the given unique call id, falling back to the number. If a
- * filter is provided, it will be applied to both the uniqueCalId and number lookups.
- */
- @MainThread
- @Nullable
- Session getSession(@NonNull String uniqueCallId, @NonNull String number, @Nullable Filter filter);
-
- /** Returns the {@link Session} for the given sessionId, or {@code null} if no session exists. */
- @MainThread
- @Nullable
- Session getSession(long sessionId);
-
- /**
- * Returns a list containing viewable string representations of all existing sessions.
- *
- *
Intended for debug display purposes only.
- */
- @MainThread
- @NonNull
- List getAllSessionsForDisplay();
-
- @NonNull
- Filter createIncomingCallComposerFilter();
-
- @NonNull
- Filter createOutgoingCallComposerFilter();
-
- /** Receives updates when the state of an historical data changes. */
- interface HistoricalDataChangedListener {
-
- /**
- * Callback fired when historical data changes. Listeners should call {@link
- * #getAllHistoricalData(String, CallDetailsEntries)} to retrieve the new data.
- */
- void onHistoricalDataChanged();
- }
-
- /**
- * Registers the given {@link HistoricalDataChangedListener}.
- *
- *
As a result of this method, the listener will receive updates when the state of any enriched
- * call historical data changes.
- */
- @MainThread
- void registerHistoricalDataChangedListener(@NonNull HistoricalDataChangedListener listener);
-
- /**
- * Unregisters the given {@link HistoricalDataChangedListener}.
- *
- *
As a result of this method, the listener will not receive updates when the state of enriched
- * call historical data changes.
- */
- @MainThread
- void unregisterHistoricalDataChangedListener(@NonNull HistoricalDataChangedListener listener);
-
- /**
- * Starts an asynchronous process to get all historical data for the given number and set of
- * {@link CallDetailsEntries}.
- */
- @MainThread
- void requestAllHistoricalData(@NonNull String number, @NonNull CallDetailsEntries entries);
-
- /**
- * Returns a mapping of enriched call data for all of the given {@link CallDetailsEntries}, which
- * should not be modified. A {@code null} return indicates that clients should call {@link
- * #requestAllHistoricalData(String, CallDetailsEntries)}.
- *
- *
The mapping is created by finding the HistoryResults whose timestamps occurred during or
- * close after a CallDetailsEntry. A CallDetailsEntry can have multiple HistoryResults in the
- * event that both a CallComposer message and PostCall message were sent for the same call.
- */
- @Nullable
- @MainThread
- Map> getAllHistoricalData(
- @NonNull String number, @NonNull CallDetailsEntries entries);
-
- /** Returns true if any enriched calls have been made or received. */
- @MainThread
- boolean hasStoredData();
-
- /**
- * Unregisters the given {@link StateChangedListener}.
- *
- *
As a result of this method, the listener will not receive updates when the state of enriched
- * calls changes.
- */
- @MainThread
- void unregisterStateChangedListener(@NonNull StateChangedListener listener);
-
- /**
- * Called when the status of an enriched call session changes.
- *
- *
- * @throws IllegalArgumentException if the state is invalid
- */
- @MainThread
- void onSessionStatusUpdate(long sessionId, @NonNull String number, int state);
-
- /**
- * Called when the status of an enriched call message updates.
- *
- *
- * @throws IllegalArgumentException if the state is invalid
- * @throws IllegalStateException if there's no session for the given id
- */
- @MainThread
- void onMessageUpdate(long sessionId, @NonNull String messageId, int state);
-
- /**
- * Called when call composer data arrives for the given session.
- *
- * @throws IllegalStateException if there's no session for the given id
- */
- @MainThread
- void onIncomingCallComposerData(long sessionId, @NonNull MultimediaData multimediaData);
-
- /**
- * Called when post call data arrives for the given session.
- *
- * @param pendingResult PendingResult form a broadcast receiver. The broadcast might be received
- * when dialer is not in the foreground, and can not start {@link
- * com.android.dialer.app.calllog.CallLogNotificationsService} to handle the event. The
- * pendingResult allows dialer to hold on to resources when the event is handled in a
- * background thread. TODO(a bug): migrate CallLogNotificationsService to a
- * JobIntentService so it can be used in the background.
- * @throws IllegalStateException if there's no session for the given id
- */
- @MainThread
- void onIncomingPostCallData(
- @NonNull PendingResult pendingResult, long sessionId, @NonNull MultimediaData multimediaData);
-
- /**
- * Registers the given {@link VideoShareListener}.
- *
- *
As a result of this method, the listener will receive updates when any video share state
- * changes.
- */
- @MainThread
- void registerVideoShareListener(@NonNull VideoShareListener listener);
-
- /**
- * Unregisters the given {@link VideoShareListener}.
- *
- *
As a result of this method, the listener will not receive updates when any video share state
- * changes.
- */
- @MainThread
- void unregisterVideoShareListener(@NonNull VideoShareListener listener);
-
- /**
- * Called when an incoming video share invite is received.
- *
- * @return whether or not the invite was accepted by the manager (rejected when disabled)
- */
- @MainThread
- boolean onIncomingVideoShareInvite(long sessionId, @NonNull String number);
-
- /**
- * Starts a video share session with the given remote number.
- *
- * @param number the remote number in any format
- * @return the id for the started session, or {@link Session#NO_SESSION_ID} if the session fails
- */
- @MainThread
- long startVideoShareSession(@NonNull String number);
-
- /**
- * Accepts a video share session invite.
- *
- * @param sessionId the session to accept
- * @return whether or not accepting the session succeeded
- */
- @MainThread
- boolean acceptVideoShareSession(long sessionId);
-
- /**
- * Retrieve the session id for an incoming video share invite.
- *
- * @param number the remote number in any format
- * @return the id for the session invite, or {@link Session#NO_SESSION_ID} if there is no invite
- */
- @MainThread
- long getVideoShareInviteSessionId(@NonNull String number);
-
- /**
- * Returns the {@link VideoShareSession} for the given sessionId, or {@code null} if no session
- * exists.
- */
- @MainThread
- @Nullable
- VideoShareSession getVideoShareSession(long sessionId);
-
- /**
- * Ends the given video share session.
- *
- * @param sessionId the id of the session to end
- */
- @MainThread
- void endVideoShareSession(long sessionId);
-
- /** Interface for filtering sessions (compatible with Predicate from Java 8) */
- interface Filter {
- boolean test(Session session);
- }
-}
diff --git a/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java b/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java
deleted file mode 100644
index 6f4d9752188d6c6b7d6bcff7d1c2fdab11123b57..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-package com.android.dialer.enrichedcall;
-
-import android.support.annotation.NonNull;
-
-/** Utility for comparing phone numbers. */
-public class FuzzyPhoneNumberMatcher {
-
- private static final int REQUIRED_MATCHED_DIGITS = 7;
-
- /**
- * Returns {@code true} if the given numbers can be interpreted to be the same.
- *
- *
This method is called numerous times when rendering the call log. Using string methods is
- * too slow, so character by character matching is used instead.
- */
- public static boolean matches(@NonNull String lhs, @NonNull String rhs) {
- return lastSevenDigitsCharacterByCharacterMatches(lhs, rhs);
- }
-
- /**
- * This strategy examines the numbers character by character starting from the end. If the last
- * {@link #REQUIRED_MATCHED_DIGITS} match, it returns {@code true}.
- */
- private static boolean lastSevenDigitsCharacterByCharacterMatches(
- @NonNull String lhs, @NonNull String rhs) {
- int lhsIndex = lhs.length() - 1;
- int rhsIndex = rhs.length() - 1;
-
- int matchedDigits = 0;
-
- while (lhsIndex >= 0 && rhsIndex >= 0) {
- if (!Character.isDigit(lhs.charAt(lhsIndex))) {
- --lhsIndex;
- continue;
- }
- if (!Character.isDigit(rhs.charAt(rhsIndex))) {
- --rhsIndex;
- continue;
- }
- if (lhs.charAt(lhsIndex) != rhs.charAt(rhsIndex)) {
- break;
- }
- --lhsIndex;
- --rhsIndex;
- ++matchedDigits;
- }
-
- return matchedDigits >= REQUIRED_MATCHED_DIGITS;
- }
-}
diff --git a/java/com/android/dialer/enrichedcall/OutgoingCallComposerData.java b/java/com/android/dialer/enrichedcall/OutgoingCallComposerData.java
deleted file mode 100644
index 56145ddd41d94ebe33673b3c480f23e89a5799ca..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/OutgoingCallComposerData.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2016 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
- */
-
-package com.android.dialer.enrichedcall;
-
-import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import com.google.auto.value.AutoValue;
-
-/**
- * Value type holding references to all data that could be provided for the call composer.
- *
- *
Note: Either the subject, the image data, or both must be specified, e.g.
- *
- *
- */
-@AutoValue
-public abstract class OutgoingCallComposerData {
-
- public static Builder builder() {
- return new AutoValue_OutgoingCallComposerData.Builder();
- }
-
- public boolean hasImageData() {
- return getImageUri() != null && getImageContentType() != null;
- }
-
- @Nullable
- public abstract String getSubject();
-
- @Nullable
- public abstract Uri getImageUri();
-
- @Nullable
- public abstract String getImageContentType();
-
- /** Builds instances of {@link OutgoingCallComposerData}. */
- @AutoValue.Builder
- public abstract static class Builder {
- public abstract Builder setSubject(String subject);
-
- public Builder setImageData(@NonNull Uri imageUri, @NonNull String imageContentType) {
- setImageUri(Assert.isNotNull(imageUri));
- setImageContentType(Assert.isNotNull(imageContentType));
- return this;
- }
-
- abstract Builder setImageUri(Uri imageUri);
-
- abstract Builder setImageContentType(String imageContentType);
-
- abstract OutgoingCallComposerData autoBuild();
-
- /**
- * Returns the OutgoingCallComposerData from this builder.
- *
- * @return the OutgoingCallComposerData.
- * @throws IllegalStateException if neither {@link #setSubject(String)} nor {@link
- * #setImageData(Uri, String)} were called.
- */
- public OutgoingCallComposerData build() {
- OutgoingCallComposerData data = autoBuild();
- Assert.checkState(data.getSubject() != null || data.hasImageData());
- return data;
- }
- }
-}
diff --git a/java/com/android/dialer/enrichedcall/RcsVideoShareFactory.java b/java/com/android/dialer/enrichedcall/RcsVideoShareFactory.java
deleted file mode 100644
index faea3bc5a255dcf4903018e652fcdcde1d19fd6d..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/RcsVideoShareFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.enrichedcall;
-
-import android.support.annotation.NonNull;
-import com.android.incallui.videotech.VideoTech;
-import com.android.incallui.videotech.VideoTech.VideoTechListener;
-
-/** Interface for creating new RCS video tech instances. */
-public interface RcsVideoShareFactory {
-
- @NonNull
- VideoTech newRcsVideoShare(
- @NonNull EnrichedCallManager enrichedCallManager,
- @NonNull VideoTechListener videoTechListener,
- @NonNull String number);
-}
diff --git a/java/com/android/dialer/enrichedcall/Session.java b/java/com/android/dialer/enrichedcall/Session.java
deleted file mode 100644
index 06837e399f6eed7b834f41b927c3ca1ea4bdcb96..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/Session.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2016 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
- */
-
-package com.android.dialer.enrichedcall;
-
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.multimedia.MultimediaData;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/** Holds state information and data about enriched calling sessions. */
-public interface Session {
-
- /** Possible states for call composer sessions. */
- @Retention(RetentionPolicy.SOURCE)
- @IntDef({
- STATE_NONE,
- STATE_STARTING,
- STATE_STARTED,
- STATE_START_FAILED,
- STATE_MESSAGE_SENT,
- STATE_MESSAGE_FAILED,
- STATE_CLOSED,
- })
- @interface State {}
-
- int STATE_NONE = 0;
- int STATE_STARTING = STATE_NONE + 1;
- int STATE_STARTED = STATE_STARTING + 1;
- int STATE_START_FAILED = STATE_STARTED + 1;
- int STATE_MESSAGE_SENT = STATE_START_FAILED + 1;
- int STATE_MESSAGE_FAILED = STATE_MESSAGE_SENT + 1;
- int STATE_CLOSED = STATE_MESSAGE_FAILED + 1;
-
- /** Id used for sessions that fail to start. */
- long NO_SESSION_ID = -1;
-
- /**
- * An id for the specific case when sending a message fails so early that a message id isn't
- * created.
- */
- String MESSAGE_ID_COULD_NOT_CREATE_ID = "messageIdCouldNotCreateId";
-
- /**
- * Returns the id associated with this session, or {@link #NO_SESSION_ID} if this represents a
- * session that failed to start.
- */
- long getSessionId();
-
- /** Returns the id of the dialer call associated with this session, or null if there isn't one. */
- @Nullable
- String getUniqueDialerCallId();
-
- void setUniqueDialerCallId(@NonNull String id);
-
- /** Returns the number associated with the remote end of this session. */
- @NonNull
- String getRemoteNumber();
-
- /** Returns the {@link State} for this session. */
- @State
- int getState();
-
- /** Returns the {@link MultimediaData} associated with this session. */
- @NonNull
- MultimediaData getMultimediaData();
-
- /** Returns type of this session, based on some arbitrarily defined type. */
- int getType();
-
- /**
- * Sets the {@link MultimediaData} for this session.
- *
- *
- * @throws IllegalArgumentException if the type is invalid
- */
- void setSessionData(@NonNull MultimediaData multimediaData, int type);
-}
diff --git a/java/com/android/dialer/enrichedcall/extensions/StateExtension.java b/java/com/android/dialer/enrichedcall/extensions/StateExtension.java
deleted file mode 100644
index 5d90829c3e9576aa5aa003bc25a1265f24bd824d..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/extensions/StateExtension.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2016 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
- */
-
-package com.android.dialer.enrichedcall.extensions;
-
-import android.support.annotation.NonNull;
-import com.android.dialer.common.Assert;
-import com.android.dialer.enrichedcall.Session;
-import com.android.dialer.enrichedcall.Session.State;
-
-/** Extends the {@link State} to include a toString method. */
-public class StateExtension {
-
- /** Returns the string representation for the given {@link State}. */
- @NonNull
- public static String toString(@State int callComposerState) {
- if (callComposerState == Session.STATE_NONE) {
- return "STATE_NONE";
- }
- if (callComposerState == Session.STATE_STARTING) {
- return "STATE_STARTING";
- }
- if (callComposerState == Session.STATE_STARTED) {
- return "STATE_STARTED";
- }
- if (callComposerState == Session.STATE_START_FAILED) {
- return "STATE_START_FAILED";
- }
- if (callComposerState == Session.STATE_MESSAGE_SENT) {
- return "STATE_MESSAGE_SENT";
- }
- if (callComposerState == Session.STATE_MESSAGE_FAILED) {
- return "STATE_MESSAGE_FAILED";
- }
- if (callComposerState == Session.STATE_CLOSED) {
- return "STATE_CLOSED";
- }
- Assert.checkArgument(false, "Unexpected callComposerState: %d", callComposerState);
- return null;
- }
-}
diff --git a/java/com/android/dialer/enrichedcall/historyquery/HistoryQuery.java b/java/com/android/dialer/enrichedcall/historyquery/HistoryQuery.java
deleted file mode 100644
index e61c79ec8eee6c37810bdf84558b74c204ef2931..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/historyquery/HistoryQuery.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-package com.android.dialer.enrichedcall.historyquery;
-
-import android.support.annotation.NonNull;
-import com.android.dialer.common.LogUtil;
-import com.google.auto.value.AutoValue;
-
-/**
- * Data object representing the pieces of information required to query for historical enriched call
- * data.
- */
-@AutoValue
-public abstract class HistoryQuery {
-
- @NonNull
- public static HistoryQuery create(@NonNull String number, long callStartTime, long callEndTime) {
- return new AutoValue_HistoryQuery(number, callStartTime, callEndTime);
- }
-
- public abstract String getNumber();
-
- public abstract long getCallStartTimestamp();
-
- public abstract long getCallEndTimestamp();
-
- @Override
- public String toString() {
- return String.format(
- "HistoryQuery{number: %s, callStartTimestamp: %d, callEndTimestamp: %d}",
- LogUtil.sanitizePhoneNumber(getNumber()), getCallStartTimestamp(), getCallEndTimestamp());
- }
-}
diff --git a/java/com/android/dialer/enrichedcall/historyquery/proto/history_result.proto b/java/com/android/dialer/enrichedcall/historyquery/proto/history_result.proto
deleted file mode 100644
index 6aed395c66856ae8da45da8c3b05ff71ae7f7c12..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/historyquery/proto/history_result.proto
+++ /dev/null
@@ -1,23 +0,0 @@
-syntax = "proto2";
-
-option java_package = "com.android.dialer.enrichedcall.historyquery.proto";
-option java_multiple_files = true;
-
-
-package com.android.dialer.enrichedcall.historyquery.proto;
-
-// Holds data that was used in an enrichedcall in the past
-message HistoryResult {
- optional Type type = 1;
- optional string text = 2;
- optional string image_uri = 4;
- optional string image_content_type = 5;
- optional int64 timestamp = 7;
-
- enum Type {
- INCOMING_CALL_COMPOSER = 1;
- OUTGOING_CALL_COMPOSER = 2;
- INCOMING_POST_CALL = 3;
- OUTGOING_POST_CALL = 4;
- }
-}
diff --git a/java/com/android/dialer/enrichedcall/simulator/AndroidManifest.xml b/java/com/android/dialer/enrichedcall/simulator/AndroidManifest.xml
deleted file mode 100644
index 35dc531d808170992bee02ecc9705398363b7602..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/EnrichedCallSimulatorActivity.java b/java/com/android/dialer/enrichedcall/simulator/EnrichedCallSimulatorActivity.java
deleted file mode 100644
index bbc1ada6fa3e52d0606afe5f976811ceac073dec..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/EnrichedCallSimulatorActivity.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.enrichedcall.simulator;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.Button;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.enrichedcall.EnrichedCallManager.StateChangedListener;
-
-/**
- * Activity used to display Enriched call sessions that are currently in memory, and create new
- * outgoing sessions with various bits of data.
- *
- *
This activity will dynamically refresh as new sessions are added or updated, but there's no
- * update when sessions are deleted from memory. Use the refresh button to update the view.
- */
-public class EnrichedCallSimulatorActivity extends AppCompatActivity
- implements StateChangedListener, OnClickListener {
-
- public static Intent newIntent(@NonNull Context context) {
- return new Intent(Assert.isNotNull(context), EnrichedCallSimulatorActivity.class);
- }
-
- private Button refreshButton;
-
- private SessionsAdapter sessionsAdapter;
-
- @Override
- protected void onCreate(@Nullable Bundle bundle) {
- LogUtil.enterBlock("EnrichedCallSimulatorActivity.onCreate");
- super.onCreate(bundle);
- setContentView(R.layout.enriched_call_simulator_activity);
- Toolbar toolbar = findViewById(R.id.toolbar);
- toolbar.setTitle(R.string.enriched_call_simulator_activity);
-
- refreshButton = findViewById(R.id.refresh);
- refreshButton.setOnClickListener(this);
-
- RecyclerView recyclerView = findViewById(R.id.sessions_recycler_view);
- recyclerView.setLayoutManager(new LinearLayoutManager(this));
-
- sessionsAdapter = new SessionsAdapter();
- sessionsAdapter.setSessionStrings(getEnrichedCallManager().getAllSessionsForDisplay());
- recyclerView.setAdapter(sessionsAdapter);
- }
-
- @Override
- protected void onResume() {
- LogUtil.enterBlock("EnrichedCallSimulatorActivity.onResume");
- super.onResume();
- getEnrichedCallManager().registerStateChangedListener(this);
- }
-
- @Override
- protected void onPause() {
- LogUtil.enterBlock("EnrichedCallSimulatorActivity.onPause");
- super.onPause();
- getEnrichedCallManager().unregisterStateChangedListener(this);
- }
-
- @Override
- public void onEnrichedCallStateChanged() {
- LogUtil.enterBlock("EnrichedCallSimulatorActivity.onEnrichedCallStateChanged");
- refreshSessions();
- }
-
- @Override
- public void onClick(View v) {
- if (v == refreshButton) {
- LogUtil.i("EnrichedCallSimulatorActivity.onClick", "refreshing sessions");
- refreshSessions();
- }
- }
-
- private void refreshSessions() {
- sessionsAdapter.setSessionStrings(getEnrichedCallManager().getAllSessionsForDisplay());
- sessionsAdapter.notifyDataSetChanged();
- }
-
- private EnrichedCallManager getEnrichedCallManager() {
- return EnrichedCallComponent.get(this).getEnrichedCallManager();
- }
-}
diff --git a/java/com/android/dialer/enrichedcall/simulator/SessionViewHolder.java b/java/com/android/dialer/enrichedcall/simulator/SessionViewHolder.java
deleted file mode 100644
index 44431253d88205958b94d83d3e925350e9e87ced..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/SessionViewHolder.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.enrichedcall.simulator;
-
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
-import android.view.View;
-import android.widget.TextView;
-
-/** ViewHolder for an Enriched call session. */
-class SessionViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView sessionStringView;
-
- SessionViewHolder(View view) {
- super(view);
- sessionStringView = view.findViewById(R.id.session_string);
- }
-
- void updateSession(@NonNull String sessionString) {
- sessionStringView.setText(sessionString);
- }
-}
diff --git a/java/com/android/dialer/enrichedcall/simulator/SessionsAdapter.java b/java/com/android/dialer/enrichedcall/simulator/SessionsAdapter.java
deleted file mode 100644
index 25edfc7dd2a8ac1c175e3ab19f48a1b8a7655420..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/SessionsAdapter.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.enrichedcall.simulator;
-
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.ViewGroup;
-import com.android.dialer.common.Assert;
-import java.util.List;
-
-/** Adapter for the RecyclerView in {@link EnrichedCallSimulatorActivity}. */
-class SessionsAdapter extends RecyclerView.Adapter {
-
- /** List of the string representation of all in-memory sessions */
- private List sessionStrings;
-
- void setSessionStrings(@NonNull List sessionStrings) {
- this.sessionStrings = Assert.isNotNull(sessionStrings);
- }
-
- @Override
- public SessionViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
- LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
- return new SessionViewHolder(inflater.inflate(R.layout.session_view_holder, viewGroup, false));
- }
-
- @Override
- public void onBindViewHolder(SessionViewHolder viewHolder, int i) {
- viewHolder.updateSession(sessionStrings.get(i));
- }
-
- @Override
- public int getItemCount() {
- return sessionStrings.size();
- }
-}
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/layout/enriched_call_simulator_activity.xml b/java/com/android/dialer/enrichedcall/simulator/res/layout/enriched_call_simulator_activity.xml
deleted file mode 100644
index be9aa7dea19d143c8c10a31de6430694f2bc798e..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/layout/enriched_call_simulator_activity.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/layout/session_view_holder.xml b/java/com/android/dialer/enrichedcall/simulator/res/layout/session_view_holder.xml
deleted file mode 100644
index 65543bd0f309cdf0a9cab395ad296f082826a912..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/layout/session_view_holder.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-af/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-af/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-af/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-am/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-am/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-am/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ar/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ar/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ar/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-az/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-az/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-az/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-be/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-be/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-be/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-bg/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-bg/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-bg/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-bn/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-bn/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-bn/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-bs/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-bs/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-bs/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ca/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ca/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ca/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-cs/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-cs/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-cs/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-da/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-da/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-da/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-de/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-de/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-de/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-el/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-el/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-el/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-en-rAU/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-en-rAU/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-en-rGB/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-en-rGB/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-en-rIN/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-en-rIN/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-es-rUS/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-es-rUS/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-es/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-es/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-es/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-et/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-et/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-et/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-eu/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-eu/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-eu/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-fa/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-fa/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-fa/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-fi/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-fi/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-fi/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-fr-rCA/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-fr/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-fr/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-fr/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-gl/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-gl/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-gl/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-gu/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-gu/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-gu/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-hi/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-hi/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-hi/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-hr/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-hr/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-hr/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-hu/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-hu/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-hu/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-hy/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-hy/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-hy/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-in/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-in/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-in/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-is/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-is/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-is/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-it/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-it/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-it/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-iw/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-iw/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-iw/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ja/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ja/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ja/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ka/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ka/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ka/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-kk/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-kk/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-kk/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-km/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-km/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-km/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-kn/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-kn/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-kn/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ko/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ko/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ko/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ky/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ky/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ky/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-lo/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-lo/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-lo/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-lt/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-lt/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-lt/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-lv/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-lv/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-lv/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-mk/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-mk/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-mk/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ml/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ml/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ml/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-mn/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-mn/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-mn/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-mr/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-mr/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-mr/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ms/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ms/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ms/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-my/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-my/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-my/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-nb/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-nb/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-nb/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ne/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ne/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ne/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-nl/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-nl/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-nl/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-no/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-no/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-no/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-pa/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-pa/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-pa/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-pl/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-pl/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-pl/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-pt-rBR/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-pt-rPT/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-pt/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-pt/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-pt/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ro/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ro/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ro/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ru/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ru/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ru/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-si/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-si/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-si/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-sk/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-sk/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-sk/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-sl/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-sl/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-sl/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-sq/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-sq/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-sq/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-sr/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-sr/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-sr/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-sv/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-sv/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-sv/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-sw/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-sw/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-sw/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ta/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ta/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ta/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-te/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-te/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-te/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-th/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-th/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-th/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-tl/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-tl/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-tl/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-tr/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-tr/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-tr/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-uk/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-uk/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-uk/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ur/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ur/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ur/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-uz/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-uz/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-uz/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-vi/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-vi/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-vi/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rCN/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rHK/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rTW/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-zu/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-zu/strings.xml
deleted file mode 100644
index 045e125f3d8dad8668061d471dd9869e29e4713a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-zu/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml
deleted file mode 100644
index 06b04650e794ebcd4705299632d970fc4da1b389..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
- Enriched Call Simulator Activity
-
- refresh
-
\ No newline at end of file
diff --git a/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java b/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
deleted file mode 100644
index 55bc0dbb7f7b64141626b743af8aa4caef025d77..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2016 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
- */
-
-package com.android.dialer.enrichedcall.stub;
-
-import android.content.BroadcastReceiver.PendingResult;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.calldetails.CallDetailsEntries;
-import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
-import com.android.dialer.common.Assert;
-import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.enrichedcall.Session;
-import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
-import com.android.dialer.enrichedcall.videoshare.VideoShareListener;
-import com.android.dialer.enrichedcall.videoshare.VideoShareSession;
-import com.android.dialer.multimedia.MultimediaData;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-/** Stub implementation of {@link EnrichedCallManager}. */
-public final class EnrichedCallManagerStub implements EnrichedCallManager {
-
- @Override
- public void registerCapabilitiesListener(@NonNull CapabilitiesListener listener) {}
-
- @Override
- public void requestCapabilities(@NonNull String number) {}
-
- @Override
- public void unregisterCapabilitiesListener(@NonNull CapabilitiesListener listener) {}
-
- @Override
- public EnrichedCallCapabilities getCapabilities(@NonNull String number) {
- return null;
- }
-
- @Override
- public void clearCachedData() {}
-
- @Override
- public long startCallComposerSession(@NonNull String number) {
- return Session.NO_SESSION_ID;
- }
-
- @Override
- public void sendCallComposerData(long sessionId, @NonNull MultimediaData data) {}
-
- @Override
- public void endCallComposerSession(long sessionId) {}
-
- @Override
- public void sendPostCallNote(@NonNull String number, @NonNull String message) {}
-
- @Override
- public void onCapabilitiesReceived(
- @NonNull String number, @NonNull EnrichedCallCapabilities capabilities) {}
-
- @Override
- public void registerStateChangedListener(@NonNull StateChangedListener listener) {}
-
- @Nullable
- @Override
- public Session getSession(
- @NonNull String uniqueCallId, @NonNull String number, @Nullable Filter filter) {
- return null;
- }
-
- @Nullable
- @Override
- public Session getSession(long sessionId) {
- return null;
- }
-
- @MainThread
- @NonNull
- @Override
- public List getAllSessionsForDisplay() {
- Assert.isMainThread();
- return Collections.emptyList();
- }
-
- @NonNull
- @Override
- public Filter createIncomingCallComposerFilter() {
- return session -> false;
- }
-
- @NonNull
- @Override
- public Filter createOutgoingCallComposerFilter() {
- return session -> false;
- }
-
- @Override
- public void registerHistoricalDataChangedListener(
- @NonNull HistoricalDataChangedListener listener) {}
-
- @Override
- public void unregisterHistoricalDataChangedListener(
- @NonNull HistoricalDataChangedListener listener) {}
-
- @Nullable
- @Override
- @MainThread
- public Map> getAllHistoricalData(
- @NonNull String number, @NonNull CallDetailsEntries entries) {
- Assert.isMainThread();
- return null;
- }
-
- @Override
- public boolean hasStoredData() {
- Assert.isMainThread();
- return false;
- }
-
- @MainThread
- @Override
- public void requestAllHistoricalData(
- @NonNull String number, @NonNull CallDetailsEntries entries) {
- Assert.isMainThread();
- }
-
- @Override
- public void unregisterStateChangedListener(@NonNull StateChangedListener listener) {}
-
- @Override
- public void onSessionStatusUpdate(long sessionId, @NonNull String number, int state) {}
-
- @Override
- public void onMessageUpdate(long sessionId, @NonNull String messageId, int state) {}
-
- @Override
- public void onIncomingCallComposerData(long sessionId, @NonNull MultimediaData multimediaData) {}
-
- @Override
- public void onIncomingPostCallData(
- @NonNull PendingResult pendingResult,
- long sessionId,
- @NonNull MultimediaData multimediaData) {
- pendingResult.finish();
- }
-
- @Override
- public void registerVideoShareListener(@NonNull VideoShareListener listener) {}
-
- @Override
- public void unregisterVideoShareListener(@NonNull VideoShareListener listener) {}
-
- @Override
- public boolean onIncomingVideoShareInvite(long sessionId, @NonNull String number) {
- return false;
- }
-
- @Override
- public long startVideoShareSession(String number) {
- return Session.NO_SESSION_ID;
- }
-
- @Override
- public boolean acceptVideoShareSession(long sessionId) {
- return false;
- }
-
- @Override
- public long getVideoShareInviteSessionId(@NonNull String number) {
- return Session.NO_SESSION_ID;
- }
-
- @MainThread
- @Nullable
- @Override
- public VideoShareSession getVideoShareSession(long sessionId) {
- Assert.isMainThread();
- return null;
- }
-
- @Override
- public void endVideoShareSession(long sessionId) {}
-}
diff --git a/java/com/android/dialer/enrichedcall/stub/StubEnrichedCallModule.java b/java/com/android/dialer/enrichedcall/stub/StubEnrichedCallModule.java
deleted file mode 100644
index 5a0618d3cb5df88151dfd6a61f8bd3c878a407c0..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/stub/StubEnrichedCallModule.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.enrichedcall.stub;
-
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.enrichedcall.RcsVideoShareFactory;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.incallui.videotech.empty.EmptyVideoTech;
-import dagger.Module;
-import dagger.Provides;
-import javax.inject.Singleton;
-
-/** Module which binds {@link EnrichedCallManagerStub}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public class StubEnrichedCallModule {
-
- @Provides
- @Singleton
- static EnrichedCallManager provideEnrichedCallManager() {
- return new EnrichedCallManagerStub();
- }
-
- @Provides
- @Singleton
- static RcsVideoShareFactory providesRcsVideoShareFactory() {
- return (enrichedCallManager, videoTechListener, number) -> new EmptyVideoTech();
- }
-
- private StubEnrichedCallModule() {}
-}
diff --git a/java/com/android/dialer/enrichedcall/videoshare/VideoShareException.java b/java/com/android/dialer/enrichedcall/videoshare/VideoShareException.java
deleted file mode 100644
index 9d3a9ab2394746851301f7aa51b45e56b87b26bd..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/videoshare/VideoShareException.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.enrichedcall.videoshare;
-
-/** Exceptions occurring from using DreamVideo and video share configuration. */
-public class VideoShareException extends Exception {
-
- public VideoShareException(String message) {
- super(message);
- }
-}
diff --git a/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java b/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java
deleted file mode 100644
index a7d656a0a3748ede743d9d1d3549affb14f19e5f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.enrichedcall.videoshare;
-
-import android.content.Context;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-
-/** Receives updates when video share status has changed. */
-public interface VideoShareListener {
-
- /**
- * Callback fired when video share has changed (service connected / disconnected, video share
- * invite received or canceled, or when a session changes).
- */
- @MainThread
- void onVideoShareChanged(@NonNull Context context);
-}
diff --git a/java/com/android/dialer/enrichedcall/videoshare/VideoShareSession.java b/java/com/android/dialer/enrichedcall/videoshare/VideoShareSession.java
deleted file mode 100644
index b0f24ff2874df853607387fd05d766603ad28430..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/videoshare/VideoShareSession.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.enrichedcall.videoshare;
-
-import android.support.annotation.NonNull;
-import android.view.SurfaceView;
-
-/** Holds state information and data about video share sessions. */
-public interface VideoShareSession {
- void setSessionId(long sessionId);
-
- long getSessionId();
-
- int getState();
-
- void pause();
-
- void unpause();
-
- void dispose();
-
- void setSurfaceView(@NonNull SurfaceView surfaceView);
-
- void setCamera(String cameraId);
-}
diff --git a/java/com/android/dialer/enrichedcall/videoshare/VideoShareSessionListener.java b/java/com/android/dialer/enrichedcall/videoshare/VideoShareSessionListener.java
deleted file mode 100644
index 1e612bf2e61abd888d659b9bc452f15d55c4b84e..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/enrichedcall/videoshare/VideoShareSessionListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.enrichedcall.videoshare;
-
-/** Interface for receiving updates on session initialization failure or termination. */
-public interface VideoShareSessionListener {
-
- void onSessionTerminated(VideoShareSession session);
-
- void onSessionInitializationFailed(VideoShareSession session, Exception e);
-
- /**
- * Called when a session hasn't received a keep-alive or video packet within the timeout time
- * period.
- *
- * @param session The session that timed out
- */
- void onSessionTimedOut(VideoShareSession session);
-}
diff --git a/java/com/android/dialer/feedback/FeedbackComponent.java b/java/com/android/dialer/feedback/FeedbackComponent.java
deleted file mode 100644
index 3c7819760315a91530b8187fa82aba4aad71be5f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/feedback/FeedbackComponent.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.feedback;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.incallui.call.CallList;
-import dagger.Subcomponent;
-
-/** Subcomponent that can be used to access the feedback implementation. */
-@Subcomponent
-public abstract class FeedbackComponent {
- @NonNull
- public abstract CallList.Listener getCallFeedbackListener();
-
- @NonNull
- public abstract FeedbackSender getCallFeedbackSender();
-
- public static FeedbackComponent get(Context context) {
- return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
- .feedbackComponent();
- }
-
- /** Used to refer to the root application component. */
- public interface HasComponent {
- FeedbackComponent feedbackComponent();
- }
-}
diff --git a/java/com/android/dialer/feedback/FeedbackSender.java b/java/com/android/dialer/feedback/FeedbackSender.java
deleted file mode 100644
index 8f402099c7f836e35563f2f8159032685bc38c61..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/feedback/FeedbackSender.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.dialer.feedback;
-
-/** Defines the apis provided by the class handling uploading of feedback. */
-public interface FeedbackSender {
- void sendFeedback(Object feedbackOptions);
-
- Object getFeedbackOptionsBuilder();
-}
diff --git a/java/com/android/dialer/feedback/stub/CallFeedbackListenerStub.java b/java/com/android/dialer/feedback/stub/CallFeedbackListenerStub.java
deleted file mode 100644
index 3eb8590adbe5cab91a18a50620ee337c5e0a1053..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/feedback/stub/CallFeedbackListenerStub.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.feedback.stub;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.common.Assert;
-import com.android.dialer.inject.ApplicationContext;
-import com.android.incallui.call.CallList;
-import com.android.incallui.call.DialerCall;
-import javax.inject.Inject;
-
-/**
- * Stub implementation of {@link com.google.android.apps.dialer.feedback.CallFeedbackListenerImpl}
- */
-public class CallFeedbackListenerStub implements CallList.Listener {
-
- @NonNull private final Context context;
-
- @Inject
- public CallFeedbackListenerStub(@ApplicationContext @NonNull Context context) {
- this.context = Assert.isNotNull(context);
- }
-
- @Override
- public void onIncomingCall(DialerCall call) {}
-
- @Override
- public void onUpgradeToVideo(DialerCall call) {}
-
- @Override
- public void onSessionModificationStateChange(DialerCall call) {}
-
- @Override
- public void onCallListChange(CallList callList) {}
-
- @Override
- public void onDisconnect(DialerCall call) {}
-
- @Override
- public void onWiFiToLteHandover(DialerCall call) {}
-
- @Override
- public void onHandoverToWifiFailed(DialerCall call) {}
-
- @Override
- public void onInternationalCallOnWifi(@NonNull DialerCall call) {}
-}
diff --git a/java/com/android/dialer/feedback/stub/FeedbackSenderStub.java b/java/com/android/dialer/feedback/stub/FeedbackSenderStub.java
deleted file mode 100644
index cde7a99c2e29494c4b80bcac8cb4bd53843e2641..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/feedback/stub/FeedbackSenderStub.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.dialer.feedback.stub;
-
-import com.android.dialer.feedback.FeedbackSender;
-import javax.inject.Inject;
-
-/** Stub module that is returned if the Feedback module is not enabled. */
-public class FeedbackSenderStub implements FeedbackSender {
-
- @Inject
- public FeedbackSenderStub() {}
-
- @Override
- public void sendFeedback(Object feedbackOptions) {}
-
- @Override
- public Object getFeedbackOptionsBuilder() {
- return null;
- }
-}
diff --git a/java/com/android/dialer/feedback/stub/StubFeedbackModule.java b/java/com/android/dialer/feedback/stub/StubFeedbackModule.java
deleted file mode 100644
index 19f7e2e6c5ed7387aa80b6859a17670d56b370aa..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/feedback/stub/StubFeedbackModule.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.feedback.stub;
-
-import android.content.Context;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.feedback.FeedbackSender;
-import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.dialer.logging.LoggingBindings;
-import com.android.dialer.logging.LoggingBindingsFactory;
-import com.android.dialer.logging.LoggingBindingsStub;
-import com.android.incallui.call.CallList;
-import dagger.Module;
-import dagger.Provides;
-
-/** Module which bind {@link com.android.dialer.feedback.stub.CallFeedbackListenerStub}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public class StubFeedbackModule {
-
- @Provides
- static LoggingBindings provideLoggingBindings(LoggingBindingsFactory factory) {
- return new LoggingBindingsStub();
- }
-
- @Provides
- static FeedbackSender provideCallFeedbackSender() {
- LogUtil.i("StubFeedbackModule.provideCallFeedbackSender", "return stub");
- return new FeedbackSenderStub();
- }
-
- @Provides
- static CallList.Listener provideCallFeedbackListener(@ApplicationContext Context context) {
- LogUtil.i("StubFeedbackModule.provideCallFeedbackListener", "returning stub");
- return new CallFeedbackListenerStub(context);
- }
-}
diff --git a/java/com/android/dialer/function/BiConsumer.java b/java/com/android/dialer/function/BiConsumer.java
deleted file mode 100644
index 50052210e778db8b4f671781c9eb37ffa04bbbf7..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/function/BiConsumer.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.function;
-
-/** Functional interface for consuming two generic values. */
-public interface BiConsumer {
-
- /** Consumes a value. */
- void accept(T t, U u);
-}
diff --git a/java/com/android/dialer/glidephotomanager/GlidePhotoManager.java b/java/com/android/dialer/glidephotomanager/GlidePhotoManager.java
index de16c387d8e19bac030129587d6e10c29ff59905..78e61a4000ca3ed6d6876239f2566efbcdbe8ef6 100644
--- a/java/com/android/dialer/glidephotomanager/GlidePhotoManager.java
+++ b/java/com/android/dialer/glidephotomanager/GlidePhotoManager.java
@@ -16,10 +16,11 @@
package com.android.dialer.glidephotomanager;
-import android.support.annotation.MainThread;
import android.widget.ImageView;
import android.widget.QuickContactBadge;
+import androidx.annotation.MainThread;
+
/** Class to load photo for call/contacts */
public interface GlidePhotoManager {
diff --git a/java/com/android/dialer/glidephotomanager/GlidePhotoManagerModule.java b/java/com/android/dialer/glidephotomanager/GlidePhotoManagerModule.java
index d4199f0a8a758f7dac8d1a3bad9b5e416568dfeb..79629d69ef0aaa801eea60fe9c79c9e6a19e61d2 100644
--- a/java/com/android/dialer/glidephotomanager/GlidePhotoManagerModule.java
+++ b/java/com/android/dialer/glidephotomanager/GlidePhotoManagerModule.java
@@ -17,14 +17,11 @@
package com.android.dialer.glidephotomanager;
import com.android.dialer.glidephotomanager.impl.GlidePhotoManagerImpl;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
import dagger.Binds;
import dagger.Module;
import javax.inject.Singleton;
/** Module for {@link GlidePhotoManagerComponent} */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
@Module
public abstract class GlidePhotoManagerModule {
@Binds
diff --git a/java/com/android/dialer/glidephotomanager/impl/GlidePhotoManagerImpl.java b/java/com/android/dialer/glidephotomanager/impl/GlidePhotoManagerImpl.java
index 9129e588f6b10087cb1d339385e1bdd714164ae6..243e3f956689d2ad6ca7bffc9123daa10a459b40 100644
--- a/java/com/android/dialer/glidephotomanager/impl/GlidePhotoManagerImpl.java
+++ b/java/com/android/dialer/glidephotomanager/impl/GlidePhotoManagerImpl.java
@@ -22,12 +22,15 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
-import android.support.annotation.MainThread;
-import android.support.annotation.Nullable;
import android.telecom.TelecomManager;
import android.text.TextUtils;
import android.widget.ImageView;
import android.widget.QuickContactBadge;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
import com.android.dialer.common.Assert;
import com.android.dialer.glide.GlideApp;
import com.android.dialer.glide.GlideRequest;
diff --git a/java/com/android/dialer/helplines/HelplineActivity.java b/java/com/android/dialer/helplines/HelplineActivity.java
index 810a1e87ec585e6354dac01b123557cb432cfaee..17e8cc8989ee7c62e1e1279abee6c05843f6198f 100755
--- a/java/com/android/dialer/helplines/HelplineActivity.java
+++ b/java/com/android/dialer/helplines/HelplineActivity.java
@@ -15,16 +15,16 @@
*/
package com.android.dialer.helplines;
+
+import static android.graphics.Paint.UNDERLINE_TEXT_FLAG;
+
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
-import android.content.res.Resources;
import android.content.SharedPreferences;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.telephony.SubscriptionManager;
@@ -42,6 +42,9 @@ import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.dialer.R;
import com.android.dialer.app.calllog.IntentProvider;
import com.android.dialer.helplines.utils.HelplineUtils;
@@ -52,8 +55,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import static android.graphics.Paint.UNDERLINE_TEXT_FLAG;
-
public class HelplineActivity extends Activity {
public static final String SHARED_PREFERENCES_KEY = "com.android.dialer.prefs";
diff --git a/java/com/android/dialer/helplines/HelplineAdapter.java b/java/com/android/dialer/helplines/HelplineAdapter.java
index 7a1a5637e763f6067cbac38420d6b38ec42a81ff..a91037d590083a753ba255dcbc52e68e09a612e0 100644
--- a/java/com/android/dialer/helplines/HelplineAdapter.java
+++ b/java/com/android/dialer/helplines/HelplineAdapter.java
@@ -16,7 +16,6 @@
package com.android.dialer.helplines;
import android.content.res.Resources;
-import android.support.annotation.NonNull;
import android.support.v7.util.DiffUtil;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
@@ -26,6 +25,8 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+
import com.android.dialer.R;
import com.android.dialer.helplines.utils.HelplineUtils;
diff --git a/java/com/android/dialer/helplines/LoadHelplinesTask.java b/java/com/android/dialer/helplines/LoadHelplinesTask.java
index 7c8de9c5a9cd22d6b67ad3093dcf5936b6239571..1ae3d622634eaa72f447ac0e48d897ab723da1e3 100644
--- a/java/com/android/dialer/helplines/LoadHelplinesTask.java
+++ b/java/com/android/dialer/helplines/LoadHelplinesTask.java
@@ -15,14 +15,14 @@
*/
package com.android.dialer.helplines;
-import android.content.Context;
import android.content.res.Resources;
import android.os.AsyncTask;
-import android.support.annotation.NonNull;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.util.Log;
+import androidx.annotation.NonNull;
+
import org.lineageos.lib.phone.SensitivePhoneNumbers;
import org.lineageos.lib.phone.spn.Item;
diff --git a/java/com/android/dialer/helplines/res/values-az/strings.xml b/java/com/android/dialer/helplines/res/values-az/strings.xml
index a1d66bcb8bdca5ce0005d2ebcfdb90e6354c5dab..f19d1bf52218a66b49833836e6d8e0b457064610 100644
--- a/java/com/android/dialer/helplines/res/values-az/strings.xml
+++ b/java/com/android/dialer/helplines/res/values-az/strings.xml
@@ -21,7 +21,7 @@
KöməkBunlara zəng etmək güvənlidirBu nömrələrdən heç biri zəng tarixçənizdə görünmür.\nDaha ətraflı məlumat üçün istənilən bir elementə klikləyə bilərsiniz
- Kömək xətti siyahısı, töhfə verənlər tərəfindən əllə güncəllənən məlumatlarla doldurulur. Əgər hər hansısa əskik və ya yanlış məlumatla qarşılaşsanız, zəhmət olmasa %1$s üzərindən bizim əlaqə saxlamaqdan çəkinməyin.
+ Kömək xətti siyahısı, töhfə verənlər tərəfindən əllə güncəllənən məlumatlarla doldurulur. Əgər hər hansısa əskik və ya yanlış məlumatla qarşılaşsanız, lütfən %1$s üzərindən bizim əlaqə saxlamaqdan çəkinməyin.Daha çoxBilinməyən təşkilatAd
diff --git a/java/com/android/dialer/helplines/res/values-ca/strings.xml b/java/com/android/dialer/helplines/res/values-ca/strings.xml
index 19814e4310e8d36f49145af7c8c9b2d007fcfa5a..88adb7fe4925404686a153e87989f9f0f7602c4a 100644
--- a/java/com/android/dialer/helplines/res/values-ca/strings.xml
+++ b/java/com/android/dialer/helplines/res/values-ca/strings.xml
@@ -21,7 +21,7 @@
AjudaAquests són segurs per trucarCap d\'aquests números apareix a l\'historial de trucades.\nPodeu fer clic a qualsevol element per obtenir més informació
- La llista de línies d\'ajuda està plena d\'informació que els col·laboradors actualitzen manualment. Si trobeu alguna informació que falti o que sigui incorrecta, no dubteu a contactar amb nosaltres a <xliff:g id="helplines_contact_url" example="www.lineageos.org">
+ La llista de línies d\'ajuda està plena d\'informació que els col·laboradors actualitzen manualment. Si trobeu alguna informació que falti o que sigui incorrecta, no dubteu a contactar amb nosaltres a %1$sMésOrganització desconegudaNom
diff --git a/java/com/android/dialer/historyitemactions/BlockReportSpamModules.java b/java/com/android/dialer/historyitemactions/BlockReportSpamModules.java
index c47b097b727ef3271c1baf02a456f055abadcdc5..40e255c18b577e27bc439d9bab1ffedf29ab4f17 100644
--- a/java/com/android/dialer/historyitemactions/BlockReportSpamModules.java
+++ b/java/com/android/dialer/historyitemactions/BlockReportSpamModules.java
@@ -17,11 +17,10 @@
package com.android.dialer.historyitemactions;
import android.content.Context;
+
+import com.android.dialer.R;
import com.android.dialer.blockreportspam.BlockReportSpamDialogInfo;
import com.android.dialer.blockreportspam.ShowBlockReportSpamDialogNotifier;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import java.util.Optional;
/** Modules for blocking/unblocking a number and/or reporting it as spam/not spam. */
final class BlockReportSpamModules {
@@ -30,8 +29,7 @@ final class BlockReportSpamModules {
static HistoryItemActionModule moduleForMarkingNumberAsNotSpam(
Context context,
- BlockReportSpamDialogInfo blockReportSpamDialogInfo,
- Optional impression) {
+ BlockReportSpamDialogInfo blockReportSpamDialogInfo) {
return new HistoryItemActionModule() {
@Override
@@ -48,8 +46,6 @@ final class BlockReportSpamModules {
public boolean onClick() {
ShowBlockReportSpamDialogNotifier.notifyShowDialogToReportNotSpam(
context, blockReportSpamDialogInfo);
-
- impression.ifPresent(Logger.get(context)::logImpression);
return true; // Close the bottom sheet.
}
};
@@ -57,8 +53,7 @@ final class BlockReportSpamModules {
static HistoryItemActionModule moduleForBlockingNumber(
Context context,
- BlockReportSpamDialogInfo blockReportSpamDialogInfo,
- Optional impression) {
+ BlockReportSpamDialogInfo blockReportSpamDialogInfo) {
return new HistoryItemActionModule() {
@Override
@@ -75,8 +70,6 @@ final class BlockReportSpamModules {
public boolean onClick() {
ShowBlockReportSpamDialogNotifier.notifyShowDialogToBlockNumber(
context, blockReportSpamDialogInfo);
-
- impression.ifPresent(Logger.get(context)::logImpression);
return true; // Close the bottom sheet.
}
};
@@ -84,8 +77,7 @@ final class BlockReportSpamModules {
static HistoryItemActionModule moduleForUnblockingNumber(
Context context,
- BlockReportSpamDialogInfo blockReportSpamDialogInfo,
- Optional impression) {
+ BlockReportSpamDialogInfo blockReportSpamDialogInfo) {
return new HistoryItemActionModule() {
@Override
@@ -102,8 +94,6 @@ final class BlockReportSpamModules {
public boolean onClick() {
ShowBlockReportSpamDialogNotifier.notifyShowDialogToUnblockNumber(
context, blockReportSpamDialogInfo);
-
- impression.ifPresent(Logger.get(context)::logImpression);
return true; // Close the bottom sheet.
}
};
@@ -111,8 +101,7 @@ final class BlockReportSpamModules {
static HistoryItemActionModule moduleForBlockingNumberAndOptionallyReportingSpam(
Context context,
- BlockReportSpamDialogInfo blockReportSpamDialogInfo,
- Optional impression) {
+ BlockReportSpamDialogInfo blockReportSpamDialogInfo) {
return new HistoryItemActionModule() {
@Override
@@ -129,8 +118,6 @@ final class BlockReportSpamModules {
public boolean onClick() {
ShowBlockReportSpamDialogNotifier.notifyShowDialogToBlockNumberAndOptionallyReportSpam(
context, blockReportSpamDialogInfo);
-
- impression.ifPresent(Logger.get(context)::logImpression);
return true; // Close the bottom sheet.
}
};
diff --git a/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java b/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
index 9bc657067e4c21f18842cbe062c5ed6186d44bce..f76470b7a814814b6c37e816d77c03ae19f6edeb 100644
--- a/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
+++ b/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
@@ -19,7 +19,6 @@ package com.android.dialer.historyitemactions;
import android.content.Context;
import android.content.res.ColorStateList;
import android.os.Bundle;
-import android.support.annotation.NonNull;
import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.BottomSheetBehavior.BottomSheetCallback;
import android.support.design.widget.BottomSheetDialog;
@@ -34,6 +33,10 @@ import android.view.accessibility.AccessibilityManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
+import com.android.dialer.R;
import com.android.dialer.common.Assert;
import com.android.dialer.compat.android.support.design.bottomsheet.BottomSheetStateCompat;
import com.android.dialer.theme.base.ThemeComponent;
diff --git a/java/com/android/dialer/historyitemactions/HistoryItemActionModule.java b/java/com/android/dialer/historyitemactions/HistoryItemActionModule.java
index e948924d72f42a06fbddfb8cd402473b16833746..4287fb6a5f388959135f854def7d6fd59cacba9e 100644
--- a/java/com/android/dialer/historyitemactions/HistoryItemActionModule.java
+++ b/java/com/android/dialer/historyitemactions/HistoryItemActionModule.java
@@ -16,8 +16,8 @@
package com.android.dialer.historyitemactions;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.StringRes;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.StringRes;
/**
* Modules used to build {@link HistoryItemActionBottomSheet}.
diff --git a/java/com/android/dialer/historyitemactions/HistoryItemActionModulesBuilder.java b/java/com/android/dialer/historyitemactions/HistoryItemActionModulesBuilder.java
index 917aa953d7c4139df08d5692b48b015449b4f867..7fff4345974037a8af2da2369d726307b92d28a4 100644
--- a/java/com/android/dialer/historyitemactions/HistoryItemActionModulesBuilder.java
+++ b/java/com/android/dialer/historyitemactions/HistoryItemActionModulesBuilder.java
@@ -21,28 +21,20 @@ import android.content.Intent;
import android.net.Uri;
import android.provider.CallLog.Calls;
import android.provider.ContactsContract;
-import android.support.annotation.IntDef;
import android.text.TextUtils;
+
+import com.android.dialer.R;
import com.android.dialer.blockreportspam.BlockReportSpamDialogInfo;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.clipboard.ClipboardUtils;
import com.android.dialer.common.Assert;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.ReportingLocation;
import com.android.dialer.spam.Spam;
import com.android.dialer.util.CallUtil;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.util.UriUtils;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.List;
-import java.util.Optional;
/**
* Builds a list of {@link HistoryItemActionModule HistoryItemActionModules}.
@@ -83,54 +75,6 @@ import java.util.Optional;
*/
public final class HistoryItemActionModulesBuilder {
- /** Represents events when a module is tapped by the user. */
- @Retention(RetentionPolicy.SOURCE)
- @IntDef({
- Event.ADD_TO_CONTACT,
- Event.BLOCK_NUMBER,
- Event.BLOCK_NUMBER_AND_REPORT_SPAM,
- Event.REPORT_NOT_SPAM,
- Event.REQUEST_CARRIER_VIDEO_CALL,
- Event.REQUEST_DUO_VIDEO_CALL,
- Event.REQUEST_DUO_VIDEO_CALL_FOR_NON_CONTACT,
- Event.SEND_TEXT_MESSAGE,
- Event.UNBLOCK_NUMBER
- })
- @interface Event {
- int ADD_TO_CONTACT = 1;
- int BLOCK_NUMBER = 2;
- int BLOCK_NUMBER_AND_REPORT_SPAM = 3;
- int REPORT_NOT_SPAM = 4;
- int REQUEST_CARRIER_VIDEO_CALL = 5;
- int REQUEST_DUO_VIDEO_CALL = 6;
- int REQUEST_DUO_VIDEO_CALL_FOR_NON_CONTACT = 7;
- int SEND_TEXT_MESSAGE = 8;
- int UNBLOCK_NUMBER = 9;
- }
-
- /**
- * Maps each {@link Event} to a {@link DialerImpression.Type} to be logged when the modules are
- * hosted by the call log.
- */
- private static final ImmutableMap CALL_LOG_IMPRESSIONS =
- new ImmutableMap.Builder()
- .put(Event.ADD_TO_CONTACT, DialerImpression.Type.ADD_TO_A_CONTACT_FROM_CALL_LOG)
- .put(Event.BLOCK_NUMBER, DialerImpression.Type.CALL_LOG_BLOCK_NUMBER)
- .put(Event.BLOCK_NUMBER_AND_REPORT_SPAM, DialerImpression.Type.CALL_LOG_BLOCK_REPORT_SPAM)
- .put(Event.REPORT_NOT_SPAM, DialerImpression.Type.CALL_LOG_REPORT_AS_NOT_SPAM)
- .put(
- Event.REQUEST_CARRIER_VIDEO_CALL,
- DialerImpression.Type.IMS_VIDEO_REQUESTED_FROM_CALL_LOG)
- .put(
- Event.REQUEST_DUO_VIDEO_CALL,
- DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FROM_CALL_LOG)
- .put(
- Event.REQUEST_DUO_VIDEO_CALL_FOR_NON_CONTACT,
- DialerImpression.Type.LIGHTBRINGER_NON_CONTACT_VIDEO_REQUESTED_FROM_CALL_LOG)
- .put(Event.SEND_TEXT_MESSAGE, DialerImpression.Type.CALL_LOG_SEND_MESSAGE)
- .put(Event.UNBLOCK_NUMBER, DialerImpression.Type.CALL_LOG_UNBLOCK_NUMBER)
- .build();
-
private final Context context;
private final HistoryItemActionModuleInfo moduleInfo;
private final List modules;
@@ -213,14 +157,7 @@ public final class HistoryItemActionModulesBuilder {
// If the module info is for a video call, add an appropriate video call module.
if ((moduleInfo.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO) {
- boolean isDuoCall = isDuoCall();
- modules.add(
- IntentModule.newCallModule(
- context,
- callIntentBuilder.setIsDuoCall(isDuoCall),
- isDuoCall
- ? getImpressionsForDuoVideoCall()
- : getImpressions(Event.REQUEST_CARRIER_VIDEO_CALL)));
+ modules.add(IntentModule.newCallModule(context, callIntentBuilder));
return this;
}
@@ -229,27 +166,12 @@ public final class HistoryItemActionModulesBuilder {
//
// The carrier video call module takes precedence over the Duo module.
if (canPlaceCarrierVideoCall()) {
- modules.add(
- IntentModule.newCallModule(
- context, callIntentBuilder, getImpressions(Event.REQUEST_CARRIER_VIDEO_CALL)));
- } else if (canPlaceDuoCall()) {
- modules.add(
- IntentModule.newCallModule(
- context, callIntentBuilder.setIsDuoCall(true), getImpressionsForDuoVideoCall()));
+ modules.add(IntentModule.newCallModule(
+ context, callIntentBuilder));
}
return this;
}
- /**
- * Returns a list of impressions to be logged when the user taps the module that attempts to
- * initiate a Duo video call.
- */
- private ImmutableList getImpressionsForDuoVideoCall() {
- return isExistingContact()
- ? getImpressions(Event.REQUEST_DUO_VIDEO_CALL)
- : getImpressions(
- Event.REQUEST_DUO_VIDEO_CALL, Event.REQUEST_DUO_VIDEO_CALL_FOR_NON_CONTACT);
- }
/**
* Adds a module for sending text messages.
@@ -275,9 +197,8 @@ public final class HistoryItemActionModulesBuilder {
return this;
}
- modules.add(
- IntentModule.newModuleForSendingTextMessage(
- context, moduleInfo.getNormalizedNumber(), getImpressions(Event.SEND_TEXT_MESSAGE)));
+ modules.add(IntentModule.newModuleForSendingTextMessage(context,
+ moduleInfo.getNormalizedNumber()));
return this;
}
@@ -334,8 +255,7 @@ public final class HistoryItemActionModulesBuilder {
context,
intent,
R.string.add_to_contacts,
- R.drawable.quantum_ic_person_add_vd_theme_24,
- getImpressions(Event.ADD_TO_CONTACT)));
+ R.drawable.quantum_ic_person_add_vd_theme_24));
return this;
}
@@ -371,7 +291,6 @@ public final class HistoryItemActionModulesBuilder {
.setNormalizedNumber(moduleInfo.getNormalizedNumber())
.setCountryIso(moduleInfo.getCountryIso())
.setCallType(moduleInfo.getCallType())
- .setReportingLocation(getReportingLocation())
.setContactSource(moduleInfo.getContactSource())
.build();
@@ -381,13 +300,13 @@ public final class HistoryItemActionModulesBuilder {
if (Spam.shouldShowAsSpam(moduleInfo.getIsSpam(), moduleInfo.getCallType())) {
modules.add(
BlockReportSpamModules.moduleForMarkingNumberAsNotSpam(
- context, blockReportSpamDialogInfo, getImpression(Event.REPORT_NOT_SPAM)));
+ context, blockReportSpamDialogInfo));
modules.add(
moduleInfo.getIsBlocked()
? BlockReportSpamModules.moduleForUnblockingNumber(
- context, blockReportSpamDialogInfo, getImpression(Event.UNBLOCK_NUMBER))
+ context, blockReportSpamDialogInfo)
: BlockReportSpamModules.moduleForBlockingNumber(
- context, blockReportSpamDialogInfo, getImpression(Event.BLOCK_NUMBER)));
+ context, blockReportSpamDialogInfo));
return this;
}
@@ -396,7 +315,7 @@ public final class HistoryItemActionModulesBuilder {
if (moduleInfo.getIsBlocked()) {
modules.add(
BlockReportSpamModules.moduleForUnblockingNumber(
- context, blockReportSpamDialogInfo, getImpression(Event.UNBLOCK_NUMBER)));
+ context, blockReportSpamDialogInfo));
return this;
}
@@ -404,7 +323,7 @@ public final class HistoryItemActionModulesBuilder {
// spam, add the "Block/Report spam" module.
modules.add(
BlockReportSpamModules.moduleForBlockingNumberAndOptionallyReportingSpam(
- context, blockReportSpamDialogInfo, getImpression(Event.BLOCK_NUMBER_AND_REPORT_SPAM)));
+ context, blockReportSpamDialogInfo));
return this;
}
@@ -457,21 +376,6 @@ public final class HistoryItemActionModulesBuilder {
&& moduleInfo.getCanSupportCarrierVideoCall();
}
- private boolean isDuoCall() {
- return DuoComponent.get(context)
- .getDuo()
- .isDuoAccount(moduleInfo.getPhoneAccountComponentName());
- }
-
- private boolean canPlaceDuoCall() {
- Duo duo = DuoComponent.get(context).getDuo();
-
- return duo.isInstalled(context)
- && duo.isEnabled(context)
- && duo.isActivated(context)
- && duo.isReachable(context, moduleInfo.getNormalizedNumber());
- }
-
/**
* Lookup URIs are currently fetched from the cached column of the system call log. This URI
* contains encoded information for non-contacts for the purposes of populating contact cards.
@@ -503,50 +407,4 @@ public final class HistoryItemActionModulesBuilder {
String.format("Unsupported host: %s", moduleInfo.getHost()));
}
}
-
- /**
- * Maps the value of {@link HistoryItemActionModuleInfo#getHost()} to {@link
- * ReportingLocation.Type}, which is for logging where a spam number is reported.
- */
- private ReportingLocation.Type getReportingLocation() {
- switch (moduleInfo.getHost()) {
- case CALL_LOG:
- return ReportingLocation.Type.CALL_LOG_HISTORY;
- case VOICEMAIL:
- return ReportingLocation.Type.VOICEMAIL_HISTORY;
- default:
- throw Assert.createUnsupportedOperationFailException(
- String.format("Unsupported host: %s", moduleInfo.getHost()));
- }
- }
-
- /** Returns a list of impressions to be logged for the given {@link Event events}. */
- private ImmutableList getImpressions(@Event int... events) {
- Assert.isNotNull(events);
-
- ImmutableList.Builder impressionListBuilder =
- new ImmutableList.Builder<>();
- for (@Event int event : events) {
- getImpression(event).ifPresent(impressionListBuilder::add);
- }
-
- return impressionListBuilder.build();
- }
-
- /**
- * Returns an impression to be logged for the given {@link Event}, or {@link Optional#empty()} if
- * no impression is available for the event.
- */
- private Optional getImpression(@Event int event) {
- switch (moduleInfo.getHost()) {
- case CALL_LOG:
- return Optional.of(CALL_LOG_IMPRESSIONS.get(event));
- case VOICEMAIL:
- // TODO(a bug): Return proper impressions for voicemail.
- return Optional.empty();
- default:
- throw Assert.createUnsupportedOperationFailException(
- String.format("Unsupported host: %s", moduleInfo.getHost()));
- }
- }
}
diff --git a/java/com/android/dialer/historyitemactions/IntentModule.java b/java/com/android/dialer/historyitemactions/IntentModule.java
index f4fc678fd9544273fa6dc9e31e9f7f86f30b44d3..d474f5cfb80b5bfdbfe14c2510e1c6b4ea68784d 100644
--- a/java/com/android/dialer/historyitemactions/IntentModule.java
+++ b/java/com/android/dialer/historyitemactions/IntentModule.java
@@ -18,15 +18,15 @@ package com.android.dialer.historyitemactions;
import android.content.Context;
import android.content.Intent;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.StringRes;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.StringRes;
+
+import com.android.dialer.R;
import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
import com.android.dialer.precall.PreCall;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.IntentUtil;
-import com.google.common.collect.ImmutableList;
/**
* {@link HistoryItemActionModule} useful for making easy to build modules based on starting an
@@ -38,28 +38,16 @@ public class IntentModule implements HistoryItemActionModule {
private final Intent intent;
private final @StringRes int text;
private final @DrawableRes int image;
- private final ImmutableList impressions;
-
- /**
- * @deprecated use {@link IntentModule#IntentModule(Context, Intent, int, int, ImmutableList)}
- * instead.
- */
- @Deprecated
- public IntentModule(Context context, Intent intent, @StringRes int text, @DrawableRes int image) {
- this(context, intent, text, image, /* impressions = */ ImmutableList.of());
- }
- IntentModule(
+ public IntentModule(
Context context,
Intent intent,
@StringRes int text,
- @DrawableRes int image,
- ImmutableList impressions) {
+ @DrawableRes int image) {
this.context = context;
this.intent = intent;
this.text = text;
this.image = image;
- this.impressions = impressions;
}
@Override
@@ -75,21 +63,13 @@ public class IntentModule implements HistoryItemActionModule {
@Override
public boolean onClick() {
DialerUtils.startActivityWithErrorToast(context, intent);
- impressions.forEach(Logger.get(context)::logImpression);
return true;
}
- /** @deprecated Use {@link #newCallModule(Context, CallIntentBuilder, ImmutableList)} instead. */
- @Deprecated
- public static IntentModule newCallModule(Context context, CallIntentBuilder callIntentBuilder) {
- return newCallModule(context, callIntentBuilder, /* impressions = */ ImmutableList.of());
- }
-
/** Creates a module for starting an outgoing call with a {@link CallIntentBuilder}. */
- static IntentModule newCallModule(
+ public static IntentModule newCallModule(
Context context,
- CallIntentBuilder callIntentBuilder,
- ImmutableList impressions) {
+ CallIntentBuilder callIntentBuilder) {
@StringRes int text;
@DrawableRes int image;
@@ -98,30 +78,20 @@ public class IntentModule implements HistoryItemActionModule {
image = R.drawable.quantum_ic_videocam_vd_white_24;
} else {
text = R.string.voice_call;
- image = R.drawable.quantum_ic_call_white_24;
+ image = R.drawable.quantum_ic_call_vd_theme_24;
}
return new IntentModule(
- context, PreCall.getIntent(context, callIntentBuilder), text, image, impressions);
- }
-
- /**
- * @deprecated Use {@link #newModuleForSendingTextMessage(Context, String, ImmutableList)}
- * instead.
- */
- @Deprecated
- public static IntentModule newModuleForSendingTextMessage(Context context, String number) {
- return newModuleForSendingTextMessage(context, number, /* impressions = */ ImmutableList.of());
+ context, PreCall.getIntent(context, callIntentBuilder), text, image);
}
/** Creates a module for sending a text message to the given number. */
- static IntentModule newModuleForSendingTextMessage(
- Context context, String number, ImmutableList impressions) {
+ public static IntentModule newModuleForSendingTextMessage(
+ Context context, String number) {
return new IntentModule(
context,
IntentUtil.getSendSmsIntent(number),
R.string.send_a_message,
- R.drawable.quantum_ic_message_vd_theme_24,
- impressions);
+ R.drawable.quantum_ic_message_vd_theme_24);
}
}
diff --git a/java/com/android/dialer/i18n/DialerBidiFormatter.java b/java/com/android/dialer/i18n/DialerBidiFormatter.java
index 440db17832dfce3a0929cdf99e06c0f65346d0f1..5b8c0b3283ef46fd0dd7607d7f2d532a7e205870 100644
--- a/java/com/android/dialer/i18n/DialerBidiFormatter.java
+++ b/java/com/android/dialer/i18n/DialerBidiFormatter.java
@@ -16,12 +16,14 @@
package com.android.dialer.i18n;
-import android.support.annotation.Nullable;
import android.telephony.PhoneNumberUtils;
import android.text.SpannableStringBuilder;
import android.text.SpannedString;
import android.text.TextUtils;
import android.util.Patterns;
+
+import androidx.annotation.Nullable;
+
import java.util.regex.Matcher;
/** A formatter that applies bidirectional formatting to phone numbers in text. */
diff --git a/java/com/android/dialer/inject/ContextModule.java b/java/com/android/dialer/inject/ContextModule.java
index 72febbb629539bb4a01920353c71c06aa8536afb..12128bafa516e19040c24f2061b0d82f37a41767 100644
--- a/java/com/android/dialer/inject/ContextModule.java
+++ b/java/com/android/dialer/inject/ContextModule.java
@@ -17,13 +17,14 @@
package com.android.dialer.inject;
import android.content.Context;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
import dagger.Module;
import dagger.Provides;
/** Provides the singleton application context object. */
@Module
-@InstallIn(variants = {DialerVariant.DIALER_DEMO, DialerVariant.DIALER_TEST})
public final class ContextModule {
@NonNull private final Context context;
diff --git a/java/com/android/dialer/inject/DialerRootComponent.java b/java/com/android/dialer/inject/DialerRootComponent.java
deleted file mode 100644
index e508e17b6b29504471fbf9b131f90fe49049ebcf..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/inject/DialerRootComponent.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.inject;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotates the place with this annotation when a RootComponent is needed.
- *
- *
Usually users put this annotation on application class that is root of dependencies (the last
- * thing to compile). The annotation processor will figure out what it needs to generate a variant
- * root through dependencies.
- *
- *
Example:
- *
- *
- *
- * @DialerRootComponent(variant = DialerVariant.DIALER_AOSP)
- * public class RootDialerAosp {}
- *
- *
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.SOURCE)
-public @interface DialerRootComponent {
- DialerVariant variant();
-
- Class> injectClass() default Object.class;
-}
diff --git a/java/com/android/dialer/inject/DialerVariant.java b/java/com/android/dialer/inject/DialerVariant.java
deleted file mode 100644
index 2e5794ffbdefe49d0ba4ec6b19a54dc5857ff7e4..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/inject/DialerVariant.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.inject;
-
-/** Represents all dialer variants. */
-public enum DialerVariant {
- // AOSP Dialer variants
- DIALER_AOSP("DialerAosp"),
- DIALER_AOSP_ESPRESSO("DialerAospEspresso"),
- DIALER_ROBOLECTRIC("DialerRobolectric"),
-
-
-
- // TEST variant will be used in situations where we need create in-test application class which
- // doesn't belong to any variants listed above
- DIALER_TEST("DialerTest"),
- // Just for sample code in inject/demo.
- DIALER_DEMO("DialerDemo");
-
- private final String variant;
-
- DialerVariant(String variant) {
- this.variant = variant;
- }
-
- @Override
- public String toString() {
- return variant;
- }
-}
diff --git a/java/com/android/dialer/inject/InstallIn.java b/java/com/android/dialer/inject/InstallIn.java
deleted file mode 100644
index a6f973b7b7073aa76de1f6490ad8b8c2f9d87fb5..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/inject/InstallIn.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.inject;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Target;
-
-/**
- * Annotation for {@link dagger.Module dagger.Modules} which causes them to be installed in the
- * specified variants.
- *
- *
It has a parameter for users to enter on which variants annotated module will be installed and
- * also must be non-empty. Example:
- *
- *
- *
- * @InstallIn(variants = {DialerVariant.DIALER_AOSP, DialerVariant.DIALER_TEST})
- * public class Module1 {}
- *
- *
- *
- */
-@Target(ElementType.TYPE)
-public @interface InstallIn {
- DialerVariant[] variants();
-}
diff --git a/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java b/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java
index 924b41e8426af8cb802513eb151d239423ad2e13..5987a279e5142d95f7af10ee0cdd4bae82e8db4f 100644
--- a/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java
+++ b/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java
@@ -21,7 +21,7 @@ import java.lang.annotation.Target;
/**
* Only used by rootcomponent generator to store metadata for locating annotated class with {@link
- * IncludeInDialerRoot}, {@link InstallIn}.
+ * IncludeInDialerRoot}.
*/
@Target(ElementType.TYPE)
public @interface RootComponentGeneratorMetadata {
diff --git a/java/com/android/dialer/inject/demo/DemoDaggerApplication.java b/java/com/android/dialer/inject/demo/DemoDaggerApplication.java
deleted file mode 100644
index ab40eca1b2311436ddeea41c7129773d3c19ba8f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/inject/demo/DemoDaggerApplication.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.inject.demo;
-
-import android.app.Application;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.ContextModule;
-import com.android.dialer.inject.DialerRootComponent;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.HasRootComponent;
-
-/** Demo dialer dagger application. */
-@DialerRootComponent(variant = DialerVariant.DIALER_DEMO)
-public final class DemoDaggerApplication extends Application implements HasRootComponent {
-
- private volatile Object rootComponent;
-
- /** Returns a cached instance of application's root component. */
- @Override
- @NonNull
- public final Object component() {
- Object result = rootComponent;
- if (result == null) {
- synchronized (this) {
- result = rootComponent;
- if (result == null) {
- rootComponent =
- result = DaggerDialerDemo.builder().contextModule(new ContextModule(this)).build();
- }
- }
- }
- return result;
- }
-
- @Override
- public void onCreate() {
- super.onCreate();
-
- DemoSubcomponent.get(this).demoObjects();
- }
-}
diff --git a/java/com/android/dialer/inject/demo/DemoModule.java b/java/com/android/dialer/inject/demo/DemoModule.java
deleted file mode 100644
index 9917c7dbd68af409aa20908c3c4c200b531b51d3..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/inject/demo/DemoModule.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.inject.demo;
-
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import dagger.Module;
-import dagger.Provides;
-import dagger.multibindings.IntoSet;
-
-/** Module for demo dagger application. */
-@Module
-@InstallIn(variants = DialerVariant.DIALER_DEMO)
-public final class DemoModule {
-
- private DemoModule() {}
-
- @Provides
- @IntoSet
- static DemoObject provide() {
- return DemoObject.create("prod");
- }
-}
diff --git a/java/com/android/dialer/inject/demo/DemoObject.java b/java/com/android/dialer/inject/demo/DemoObject.java
deleted file mode 100644
index 3c3862124ffec2b59df8145499c0ab5474119697..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/inject/demo/DemoObject.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.inject.demo;
-
-import com.google.auto.value.AutoValue;
-
-/** Object used to demonstrate dagger bindings. */
-@AutoValue
-abstract class DemoObject {
-
- abstract String value();
-
- static DemoObject create(String value) {
- return new AutoValue_DemoObject(value);
- }
-}
diff --git a/java/com/android/dialer/inject/demo/DemoSubcomponent.java b/java/com/android/dialer/inject/demo/DemoSubcomponent.java
deleted file mode 100644
index 3e4dd66bb9580c911c7ec59e7c6fd28f886338e1..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/inject/demo/DemoSubcomponent.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.inject.demo;
-
-import android.content.Context;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import dagger.Subcomponent;
-import java.util.Set;
-
-/** Subcomponent for the demo dagger application. */
-@Subcomponent
-public abstract class DemoSubcomponent {
-
- abstract Set demoObjects();
-
- public static DemoSubcomponent get(Context context) {
- return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
- .demoSubcomponent();
- }
-
- /** Used to refer to the root application component. */
- @IncludeInDialerRoot
- public interface HasComponent {
- DemoSubcomponent demoSubcomponent();
- }
-}
diff --git a/java/com/android/dialer/interactions/PhoneNumberInteraction.java b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
index 27ade19059b14008e7d74bbf62f5ed73f214e3cc..47c85ee6e00037c69831d2637a9a2d534da42285 100644
--- a/java/com/android/dialer/interactions/PhoneNumberInteraction.java
+++ b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
@@ -38,8 +38,6 @@ import android.provider.ContactsContract.CommonDataKinds.SipAddress;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
-import android.support.annotation.IntDef;
-import android.support.annotation.VisibleForTesting;
import android.support.v4.app.ActivityCompat;
import android.view.LayoutInflater;
import android.view.View;
@@ -48,18 +46,20 @@ import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ListAdapter;
import android.widget.TextView;
+
+import androidx.annotation.IntDef;
+
import com.android.contacts.common.Collapser;
import com.android.contacts.common.Collapser.Collapsible;
import com.android.contacts.common.MoreContactUtils;
import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.dialer.R;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.callintent.CallIntentParser;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
import com.android.dialer.precall.PreCall;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.PermissionsUtil;
@@ -88,8 +88,7 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener {
public static final int REQUEST_CALL_PHONE = 2;
- @VisibleForTesting
- public static final String[] PHONE_NUMBER_PROJECTION =
+ private static final String[] PHONE_NUMBER_PROJECTION =
new String[] {
Phone._ID,
Phone.NUMBER,
@@ -350,11 +349,6 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener {
|| ((TransactionSafeActivity) context).isSafeToCommitTransactions();
}
- @VisibleForTesting
- /* package */ CursorLoader getLoader() {
- return loader;
- }
-
private void showDisambiguationDialog(ArrayList phoneList) {
// TODO(a bug): don't leak the activity
final Activity activity = (Activity) context;
@@ -384,8 +378,7 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener {
}
/** A model object for capturing a phone number for a given contact. */
- @VisibleForTesting
- /* package */ static class PhoneItem implements Parcelable, Collapsible {
+ private static class PhoneItem implements Parcelable, Collapsible {
public static final Parcelable.Creator CREATOR =
new Parcelable.Creator() {
@@ -559,12 +552,6 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener {
final PhoneItem phoneItem = phoneList.get(which);
final CheckBox checkBox = (CheckBox) alertDialog.findViewById(R.id.setPrimary);
if (checkBox.isChecked()) {
- if (callSpecificAppData.getCallInitiationType() == CallInitiationType.Type.SPEED_DIAL) {
- Logger.get(getContext())
- .logInteraction(
- InteractionEvent.Type.SPEED_DIAL_SET_DEFAULT_NUMBER_FOR_AMBIGUOUS_CONTACT);
- }
-
// Request to mark the data as primary in the background.
final Intent serviceIntent =
ContactUpdateService.createSetSuperPrimaryIntent(activity, phoneItem.id);
diff --git a/java/com/android/dialer/lettertile/LetterTileDrawable.java b/java/com/android/dialer/lettertile/LetterTileDrawable.java
index b747c4f4c2a85e1c1200690227ce19a2e0751548..efe595eb22267b26a2073a6f0e9a30427b573982 100644
--- a/java/com/android/dialer/lettertile/LetterTileDrawable.java
+++ b/java/com/android/dialer/lettertile/LetterTileDrawable.java
@@ -28,11 +28,14 @@ import android.graphics.Paint.Align;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.telecom.TelecomManager;
import android.text.TextUtils;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
import com.android.dialer.common.Assert;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -80,10 +83,6 @@ public class LetterTileDrawable extends Drawable {
public static final int SHAPE_RECTANGLE = 2;
- /** 54% opacity */
- private static final int ALPHA = 138;
- /** 100% opacity */
- private static final int SPAM_ALPHA = 255;
/** Default icon scale for vector drawable. */
private static final float VECTOR_ICON_SCALE = 0.7f;
@@ -94,7 +93,8 @@ public class LetterTileDrawable extends Drawable {
private final char[] firstChar = new char[1];
/** Letter tile */
- @NonNull private final TypedArray colors;
+ @NonNull
+ private final TypedArray colors;
private final int spamColor;
private final int defaultColor;
@@ -122,8 +122,7 @@ public class LetterTileDrawable extends Drawable {
defaultColor = res.getColor(R.color.letter_tile_default_color);
tileFontColor = res.getColor(R.color.letter_tile_font_color);
letterToTileRatio = res.getFraction(R.dimen.letter_to_tile_ratio, 1, 1);
- defaultPersonAvatar =
- res.getDrawable(R.drawable.product_logo_avatar_anonymous_white_color_120, null);
+ defaultPersonAvatar = res.getDrawable(R.drawable.quantum_ic_person_vd_theme_24, null);
defaultBusinessAvatar = res.getDrawable(R.drawable.quantum_ic_business_vd_theme_24, null);
defaultVoicemailAvatar = res.getDrawable(R.drawable.quantum_ic_voicemail_vd_theme_24, null);
defaultSpamAvatar = res.getDrawable(R.drawable.quantum_ic_report_vd_theme_24, null);
@@ -169,6 +168,7 @@ public class LetterTileDrawable extends Drawable {
case TYPE_PERSON:
case TYPE_GENERIC_AVATAR:
default:
+ scale = VECTOR_ICON_SCALE;
return defaultPersonAvatar;
}
}
@@ -218,7 +218,6 @@ public class LetterTileDrawable extends Drawable {
paint.getTextBounds(firstChar, 0, 1, rect);
paint.setTypeface(Typeface.create("sans-serif", Typeface.NORMAL));
paint.setColor(tileFontColor);
- paint.setAlpha(ALPHA);
// Draw the letter in the canvas, vertically shifted up or down by the user-defined
// offset
@@ -238,7 +237,6 @@ public class LetterTileDrawable extends Drawable {
}
drawable.setBounds(getScaledBounds(scale, offset));
- drawable.setAlpha(drawable == defaultSpamAvatar ? SPAM_ALPHA : ALPHA);
drawable.draw(canvas);
}
}
diff --git a/java/com/android/dialer/lettertile/res/values/colors.xml b/java/com/android/dialer/lettertile/res/values/colors.xml
index 406b4900bf6d5d1e6beb26b13c024a0820b66a14..5a5452abfe27e35e0a730b9de190f8e6912c8074 100644
--- a/java/com/android/dialer/lettertile/res/values/colors.xml
+++ b/java/com/android/dialer/lettertile/res/values/colors.xml
@@ -16,20 +16,18 @@
-->
- #DB4437
- #E91E63
- #9C27B0
- #673AB7
- #3F51B5
- #4285F4
- #039BE5
- #0097A7
- #009688
- #0F9D58
- #689F38
- #EF6C00
- #FF5722
- #757575
+ @*android:color/system_accent1_300
+ @*android:color/system_accent2_300
+ @*android:color/system_accent3_300
+ @*android:color/system_accent1_400
+ @*android:color/system_accent2_400
+ @*android:color/system_accent3_400
+ @*android:color/system_accent1_500
+ @*android:color/system_accent2_500
+ @*android:color/system_accent3_500
+ @*android:color/system_accent1_600
+ @*android:color/system_accent2_600
+ @*android:color/system_accent3_600#A52714
@@ -37,4 +35,4 @@
#cccccc#ffffff
-
\ No newline at end of file
+
diff --git a/java/com/android/dialer/location/AndroidManifest.xml b/java/com/android/dialer/location/AndroidManifest.xml
deleted file mode 100644
index 8f74480203f3f128b576f0986a25753c6f337d0a..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/location/AndroidManifest.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/java/com/android/dialer/location/CountryDetector.java b/java/com/android/dialer/location/CountryDetector.java
index 664bb50d5ba8d40ed42e548d78fdd465ccbf880f..8b05e8464338918dec133fd5463879e58f491ff5 100644
--- a/java/com/android/dialer/location/CountryDetector.java
+++ b/java/com/android/dialer/location/CountryDetector.java
@@ -27,12 +27,13 @@ import android.location.Geocoder;
import android.location.Location;
import android.location.LocationManager;
import android.preference.PreferenceManager;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
import android.support.v4.os.UserManagerCompat;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
@@ -73,15 +74,14 @@ public class CountryDetector {
// exceedingly rare event that the device does not have a default locale set for some reason.
private static final String DEFAULT_COUNTRY_ISO = "US";
- @VisibleForTesting public static CountryDetector instance;
+ private static CountryDetector instance;
private final TelephonyManager telephonyManager;
private final LocaleProvider localeProvider;
private final Geocoder geocoder;
private final Context appContext;
- @VisibleForTesting
- public CountryDetector(
+ private CountryDetector(
Context appContext,
TelephonyManager telephonyManager,
LocationManager locationManager,
@@ -245,7 +245,8 @@ public class CountryDetector {
/** Worker that given a {@link Location} returns an ISO 3166-1 two letter country code. */
private static class GeocodeCountryWorker implements Worker {
- @NonNull private final Geocoder geocoder;
+ @NonNull
+ private final Geocoder geocoder;
GeocodeCountryWorker(@NonNull Geocoder geocoder) {
this.geocoder = Assert.isNotNull(geocoder);
diff --git a/java/com/android/dialer/logging/Logger.java b/java/com/android/dialer/logging/Logger.java
deleted file mode 100644
index 207c35d9c3a69acdae07f41c2749a7482bd6c7d4..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/logging/Logger.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.dialer.logging;
-
-import android.content.Context;
-import java.util.Objects;
-
-/** Single entry point for all logging/analytics-related work for all user interactions. */
-public class Logger {
-
- private static LoggingBindings loggingBindings;
-
- private Logger() {}
-
- public static LoggingBindings get(Context context) {
- Objects.requireNonNull(context);
- if (loggingBindings != null) {
- return loggingBindings;
- }
-
- Context application = context.getApplicationContext();
- if (application instanceof LoggingBindingsFactory) {
- loggingBindings = ((LoggingBindingsFactory) application).newLoggingBindings();
- }
-
- if (loggingBindings == null) {
- loggingBindings = new LoggingBindingsStub();
- }
- return loggingBindings;
- }
-
- public static void setForTesting(LoggingBindings loggingBindings) {
- Logger.loggingBindings = loggingBindings;
- }
-}
diff --git a/java/com/android/dialer/logging/LoggingBindings.java b/java/com/android/dialer/logging/LoggingBindings.java
deleted file mode 100644
index 9288324a15208244e1eac8d492824aa21d2f04df..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/logging/LoggingBindings.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.dialer.logging;
-
-import android.app.Activity;
-import android.widget.QuickContactBadge;
-import com.google.auto.value.AutoValue;
-import java.util.Collection;
-
-/** Allows the container application to gather analytics. */
-public interface LoggingBindings {
-
- /**
- * Logs an DialerImpression event that's not associated with a specific call.
- *
- * @param dialerImpression an integer representing what event occurred.
- */
- void logImpression(DialerImpression.Type dialerImpression);
-
- /**
- * Logs an impression for a general dialer event that's not associated with a specific call.
- *
- * @param dialerImpression an integer representing what event occurred.
- */
- @Deprecated
- void logImpression(int dialerImpression);
-
- /**
- * Logs an impression for a general dialer event that's associated with a specific call.
- *
- * @param dialerImpression an integer representing what event occurred.
- * @param callId unique ID of the call.
- * @param callStartTimeMillis the absolute time when the call started.
- */
- void logCallImpression(
- DialerImpression.Type dialerImpression, String callId, long callStartTimeMillis);
-
- /**
- * Logs an interaction that occurred.
- *
- * @param interaction an integer representing what interaction occurred.
- * @see com.android.dialer.logging.InteractionEvent
- */
- void logInteraction(InteractionEvent.Type interaction);
-
- /**
- * Logs an event indicating that a screen was displayed.
- *
- * @param screenEvent an integer representing the displayed screen.
- * @param activity Parent activity of the displayed screen.
- * @see com.android.dialer.logging.ScreenEvent
- */
- void logScreenView(com.android.dialer.logging.ScreenEvent.Type screenEvent, Activity activity);
-
- /** Logs the composition of contact tiles in the speed dial tab. */
- void logSpeedDialContactComposition(
- int counter,
- int starredContactsCount,
- int pinnedContactsCount,
- int multipleNumbersContactsCount,
- int contactsWithPhotoCount,
- int contactsWithNameCount,
- int lightbringerReachableContactsCount);
-
- /** Logs a hit event to the analytics server. */
- void sendHitEventAnalytics(String category, String action, String label, long value);
-
- /** Logs where a quick contact badge is clicked */
- void logQuickContactOnTouch(
- QuickContactBadge quickContact,
- InteractionEvent.Type interactionEvent,
- boolean shouldPerformClick);
-
- /** Logs People Api lookup result with error */
- void logPeopleApiLookupReportWithError(
- long latency, int httpResponseCode, PeopleApiLookupError.Type errorType);
-
- /** Logs successful People Api lookup result */
- void logSuccessfulPeopleApiLookupReport(long latency, int httpResponseCode);
-
- /** Logs a call auto-blocked in call screening. */
- void logAutoBlockedCall(String phoneNumber);
-
- /** Logs annotated call log metrics. */
- void logAnnotatedCallLogMetrics(int invalidNumbersInCallLog);
-
- /** Logs annotated call log metrics. */
- void logAnnotatedCallLogMetrics(int numberRowsThatDidPop, int numberRowsThatDidNotPop);
-
- /** Logs contacts provider metrics. */
- void logContactsProviderMetrics(Collection matchInfos);
-
- /** Input type for {@link #logContactsProviderMetrics(Collection)}. */
- @AutoValue
- abstract class ContactsProviderMatchInfo {
- public abstract boolean matchedContact();
-
- public abstract boolean inputNumberValid();
-
- public abstract int inputNumberLength();
-
- public abstract int matchedNumberLength();
-
- public abstract boolean inputNumberHasPostdialDigits();
-
- public abstract boolean matchedNumberHasPostdialDigits();
-
- public static Builder builder() {
- return new AutoValue_LoggingBindings_ContactsProviderMatchInfo.Builder()
- .setMatchedContact(false)
- .setMatchedNumberLength(0)
- .setMatchedNumberHasPostdialDigits(false);
- }
-
- /** Builder. */
- @AutoValue.Builder
- public abstract static class Builder {
- public abstract Builder setMatchedContact(boolean value);
-
- public abstract Builder setInputNumberValid(boolean value);
-
- public abstract Builder setInputNumberLength(int value);
-
- public abstract Builder setMatchedNumberLength(int value);
-
- public abstract Builder setInputNumberHasPostdialDigits(boolean value);
-
- public abstract Builder setMatchedNumberHasPostdialDigits(boolean value);
-
- public abstract ContactsProviderMatchInfo build();
- }
- }
-}
diff --git a/java/com/android/dialer/logging/LoggingBindingsFactory.java b/java/com/android/dialer/logging/LoggingBindingsFactory.java
deleted file mode 100644
index 0722cf45306ecc02caf5e0b51d162d154c41bcba..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/logging/LoggingBindingsFactory.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.dialer.logging;
-
-/**
- * This interface should be implementated by the Application subclass. It allows this module to get
- * references to the LoggingBindings.
- */
-public interface LoggingBindingsFactory {
-
- LoggingBindings newLoggingBindings();
-}
diff --git a/java/com/android/dialer/logging/LoggingBindingsStub.java b/java/com/android/dialer/logging/LoggingBindingsStub.java
deleted file mode 100644
index 9231782311a60fce399db06306bbb1c984353e18..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/logging/LoggingBindingsStub.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-package com.android.dialer.logging;
-
-import android.app.Activity;
-import android.widget.QuickContactBadge;
-import java.util.Collection;
-
-/** Default implementation for logging bindings. */
-public class LoggingBindingsStub implements LoggingBindings {
-
- @Override
- public void logImpression(DialerImpression.Type dialerImpression) {}
-
- @Override
- public void logImpression(int dialerImpression) {}
-
- @Override
- public void logCallImpression(
- DialerImpression.Type dialerImpression, String callId, long callStartTimeMillis) {}
-
- @Override
- public void logInteraction(InteractionEvent.Type interaction) {}
-
- @Override
- public void logScreenView(ScreenEvent.Type screenEvent, Activity activity) {}
-
- @Override
- public void logSpeedDialContactComposition(
- int counter,
- int starredContactsCount,
- int pinnedContactsCount,
- int multipleNumbersContactsCount,
- int contactsWithPhotoCount,
- int contactsWithNameCount,
- int lightbringerReachableContactsCount) {}
-
- @Override
- public void sendHitEventAnalytics(String category, String action, String label, long value) {}
-
- @Override
- public void logQuickContactOnTouch(
- QuickContactBadge quickContact,
- InteractionEvent.Type interactionEvent,
- boolean shouldPerformClick) {}
-
- @Override
- public void logPeopleApiLookupReportWithError(
- long latency, int httpResponseCode, PeopleApiLookupError.Type errorType) {}
-
- @Override
- public void logSuccessfulPeopleApiLookupReport(long latency, int httpResponseCode) {}
-
- @Override
- public void logAutoBlockedCall(String phoneNumber) {}
-
- @Override
- public void logAnnotatedCallLogMetrics(int invalidNumbersInCallLog) {}
-
- @Override
- public void logAnnotatedCallLogMetrics(int numberRowsThatDidPop, int numberRowsThatDidNotPop) {}
-
- @Override
- public void logContactsProviderMetrics(Collection matchInfos) {}
-}
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
deleted file mode 100644
index 0f362d9bcc27d28b70c1ce3c45831a5f68dfe626..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ /dev/null
@@ -1,800 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message DialerImpression {
- // Event enums to be used for Impression Logging in Dialer.
- // It's perfectly acceptable for this enum to be large
- // Values should be from 1000 to 100000.
- // Next Tag: 1409
- enum Type {
- UNKNOWN_AOSP_EVENT_TYPE = 1000;
-
- // User opened the app
- APP_LAUNCHED = 1001;
-
- // User pressed the speaker phone button
- IN_CALL_SCREEN_TURN_ON_SPEAKERPHONE = 1002;
-
- // User pressed the speaker phone button again
- IN_CALL_SCREEN_TURN_ON_WIRED_OR_EARPIECE = 1003;
-
- // Number not identified as spam and the user tapped the block/report spam
- // button in the call log
- CALL_LOG_BLOCK_REPORT_SPAM = 1004;
-
- // Number identified as spam and the user tapped on the block number call
- // log item
- CALL_LOG_BLOCK_NUMBER = 1005;
-
- // User tapped on the unblock number in the call log
- // This does not deal with whether the user reported this spam or not while
- // initially blocking For that refer to
- // REPORT_AS_NOT_SPAM_VIA_UNBLOCK_NUMBER. If the user had not reported it as
- // spam they then have the option of directly unblocking the number, a
- // success of which is logged in USER_ACTION_UNBLOCKED_NUMBER
- CALL_LOG_UNBLOCK_NUMBER = 1006;
-
- // Number was identified as spam, and the user tapped that it was not spam
- CALL_LOG_REPORT_AS_NOT_SPAM = 1007;
-
- // Confirmation dialog in which the user confirmed that the number was not
- // spam
- DIALOG_ACTION_CONFIRM_NUMBER_NOT_SPAM = 1008;
-
- // User unblocked a number and also acknowledged that the number is not spam
- // This happens when the user had initially blocked a number and also
- // claimed the number was spam and had now proceeded to undo that.
- REPORT_AS_NOT_SPAM_VIA_UNBLOCK_NUMBER = 1009
-
- ;
-
- // A number that was identified as spam and the user proceeded to block it.
- // However this impression was to make sure that while blocking the number
- // the user also acknowledged that they were going to be reporting this as
- // spam. There is no option for the user in this case to not report it as
- // spam and block it only. The only flow is: system identified number as
- // spam -> user wants to block it -> confirmation dialog shows up asking
- // user to acknowledge they want to block and report as spam -> user
- // acknowledges and this is when this impression is sent
- DIALOG_ACTION_CONFIRM_NUMBER_SPAM_INDIRECTLY_VIA_BLOCK_NUMBER = 1010;
-
- // User reported the number as spam by tick marking on report spam when
- // blocking the number via call log. This is for case where the user wants
- // to block a number and also report it as spam
- REPORT_CALL_AS_SPAM_VIA_CALL_LOG_BLOCK_REPORT_SPAM_SENT_VIA_BLOCK_NUMBER_DIALOG =
- 1011
-
- ;
-
- // User made it to the last step and actually blocked the number
- USER_ACTION_BLOCKED_NUMBER = 1012
-
- ;
-
- // User made it to the last step but blocking failed because user is
- // secondary or dialer is not default
- USER_ACTION_BLOCK_NUMBER_FAILED = 1369;
-
- // User made it to the last step and actually unblocked the number
- USER_ACTION_UNBLOCKED_NUMBER = 1013;
-
- // User made it to the last step but unblocking failed because user is
- // secondary or dialer is not default
- USER_ACTION_UNBLOCK_NUMBER_FAILED = 1370;
-
- // User blocked a number, does not guarantee if the number was reported as
- // spam or not To compute the number of blocked numbers that were reported
- // as not spam and yet blocked Subtract this value from
- // SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_SPAM. It would be
- // interesting to see how this value compares with
- // SPAM_AFTER_CALL_NOTIFICATION_REPORT_NUMBER_AS_NOT_SPAM
- SPAM_AFTER_CALL_NOTIFICATION_BLOCK_NUMBER = 1014;
-
- // Displays the dialog for first time spam calls with actions "Not spam",
- // "Block", and "Dismiss".
- SPAM_AFTER_CALL_NOTIFICATION_SHOW_SPAM_DIALOG = 1015;
-
- // Displays the dialog for the first time unknown calls with actions "Add
- // contact", "Block/report spam", and "Dismiss".
- SPAM_AFTER_CALL_NOTIFICATION_SHOW_NON_SPAM_DIALOG = 1016;
-
- // User added the number to contacts from the after call notification
- SPAM_AFTER_CALL_NOTIFICATION_ADD_TO_CONTACTS = 1019
-
- ;
-
- // User marked the number as spam on the after call notification flow
- SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_SPAM = 1020
-
- ;
-
- SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_NOT_SPAM_AND_BLOCKED = 1021;
-
- // User reported the number as not spam
- SPAM_AFTER_CALL_NOTIFICATION_REPORT_NUMBER_AS_NOT_SPAM = 1022
-
- ;
-
- // User dismissed the spam notification
- SPAM_AFTER_CALL_NOTIFICATION_ON_DISMISS_SPAM_DIALOG = 1024;
-
- // User dismissed the non spam notification
- SPAM_AFTER_CALL_NOTIFICATION_ON_DISMISS_NON_SPAM_DIALOG = 1025;
-
- // From the service instead of an activity logs the number of times the
- // number was marked as Spam by the user (e.g from the feedback prompt)
- SPAM_NOTIFICATION_SERVICE_ACTION_MARK_NUMBER_AS_SPAM = 1026
-
- ;
-
- // From the service instead of an activity logs the number of times the
- // number was marked as Not Spam by the user (e.g from the feedback prompt)
- SPAM_NOTIFICATION_SERVICE_ACTION_MARK_NUMBER_AS_NOT_SPAM = 1027
-
- ;
-
- // User is in a active call i.e either incoming or outgoing
- // This is mainly so we can assign an impression event to a call event i.e
- // so that we may be able to stitch different types of events if they make
- // sense e.g user pressed a speaker button and we want to associate that to
- // a call event
- USER_PARTICIPATED_IN_A_CALL = 1028
-
- ;
-
- // Incoming call is a spam call
- INCOMING_SPAM_CALL = 1029;
-
- // Incoming call is a non spam call
- INCOMING_NON_SPAM_CALL = 1030;
-
- // Spam notifications shown despite throttling
- SPAM_NOTIFICATION_SHOWN_AFTER_THROTTLE = 1041
-
- ;
-
- // Spam notifications not shown due to throttling
- SPAM_NOTIFICATION_NOT_SHOWN_AFTER_THROTTLE = 1042;
-
- // Non spam notifications shown despite throttling
- NON_SPAM_NOTIFICATION_SHOWN_AFTER_THROTTLE = 1043
-
- ;
-
- // Non spam notifications not shown due to throttling
- NON_SPAM_NOTIFICATION_NOT_SHOWN_AFTER_THROTTLE = 1044;
-
- // Voicemail status has updated in the voicemail tab and the change PIN
- // prompt is shown.
- VOICEMAIL_ALERT_SET_PIN_SHOWN = 1045;
-
- // User has clicked the change PIN action in the voicemail tab
- VOICEMAIL_ALERT_SET_PIN_CLICKED = 1046;
-
- // User was not able to or did not participate in the call e.g missed calls,
- // rejected calls
- USER_DID_NOT_PARTICIPATE_IN_CALL = 1047;
-
- // User deleted a call log entry
- USER_DELETED_CALL_LOG_ITEM = 1048
-
- ;
-
- // User tapped on "Send a message"
- CALL_LOG_SEND_MESSAGE = 1049
-
- ;
-
- // User tapped on "Add to contact"
- CALL_LOG_ADD_TO_CONTACT = 1050
-
- ;
-
- // User tapped on "Create new contact"
- CALL_LOG_CREATE_NEW_CONTACT = 1051
-
- ;
-
- // User deleted an entry from the voicemail tab
- VOICEMAIL_DELETE_ENTRY = 1052
-
- ;
-
- // Voicemail call log entry was expanded. Could be either if the user tapped
- // the voicemail call log entry or pressed the play button when the
- // voicemail call log entry was not expanded
- VOICEMAIL_EXPAND_ENTRY = 1053
-
- ;
-
- // The play button for voicemail call log entry was tapped directly (i.e
- // when the voicemail call log entry was not expanded and the playbutton was
- // tapped)
- VOICEMAIL_PLAY_AUDIO_DIRECTLY = 1054
-
- ;
-
- // The play button after expanding the voicemail call log entry was tapped
- VOICEMAIL_PLAY_AUDIO_AFTER_EXPANDING_ENTRY = 1055
-
- ;
-
- // Incoming call was rejected from the notifications
- REJECT_INCOMING_CALL_FROM_NOTIFICATION = 1056
-
- ;
-
- // Incoming call was rejected from the answer screen including rejecting via
- // sms and talkback
- REJECT_INCOMING_CALL_FROM_ANSWER_SCREEN = 1057
-
- ;
-
- // User tapped block and spam buttons in context menu, same as buttons in
- // call log drop down
- // menu (See 1004-1007).
- CALL_LOG_CONTEXT_MENU_BLOCK_REPORT_SPAM = 1058;
- CALL_LOG_CONTEXT_MENU_BLOCK_NUMBER = 1059;
- CALL_LOG_CONTEXT_MENU_UNBLOCK_NUMBER = 1060;
- CALL_LOG_CONTEXT_MENU_REPORT_AS_NOT_SPAM = 1061;
-
- NEW_CONTACT_OVERFLOW = 1062;
- NEW_CONTACT_FAB = 1063;
-
- // The ToS is shown the user
- VOICEMAIL_VVM3_TOS_SHOWN = 1064;
-
- // The user has accepted the ToS
- VOICEMAIL_VVM3_TOS_ACCEPTED = 1065;
-
- // The user has went through the decline ToS dialog and VVM is disabled
- VOICEMAIL_VVM3_TOS_DECLINED = 1066;
-
- // The user has clicked the decline ToS button, and a conformation dialog
- // was shown
- VOICEMAIL_VVM3_TOS_DECLINE_CLICKED = 1067;
-
- // The use has clicked the decline ToS button but the PIN has been
- // randomized. A dialog to instruct the user to set the PIN has been shown
- VOICEMAIL_VVM3_TOS_DECLINE_CHANGE_PIN_SHOWN = 1068;
-
- // The user does not have a permission and are presented with a
- // non-framework UI to request permission.
- STORAGE_PERMISSION_DISPLAYED = 1069;
- CAMERA_PERMISSION_DISPLAYED = 1074;
-
- // The user is being shown the Android framework UI to request a permission.
- STORAGE_PERMISSION_REQUESTED = 1070;
- CAMERA_PERMISSION_REQUESTED = 1075;
-
- // The user has permenantly denied a permission, so the user is being
- // sent to dialer settings to grant permission.
- STORAGE_PERMISSION_SETTINGS = 1071;
- CAMERA_PERMISSION_SETTINGS = 1076;
-
- // The user granted a permission.
- STORAGE_PERMISSION_GRANTED = 1072;
- CAMERA_PERMISSION_GRANTED = 1077;
-
- // The user denied a permission.
- STORAGE_PERMISSION_DENIED = 1073;
- CAMERA_PERMISSION_DENIED = 1078;
-
- // Voicemail config corruption is detected when in dialtacts activity.
- VOICEMAIL_CONFIGURATION_STATE_CORRUPTION_DETECTED_FROM_ACTIVITY = 1079;
- // Voicemail config corruption is detected when a new voicemail notification
- // has arrived.
- VOICEMAIL_CONFIGURATION_STATE_CORRUPTION_DETECTED_FROM_NOTIFICATION = 1080;
-
- // Android Auto Backup and Restore (Dolly)
- BACKUP_ON_BACKUP = 1081 [deprecated = true];
- BACKUP_ON_FULL_BACKUP = 1082 [deprecated = true];
- BACKUP_ON_BACKUP_DISABLED = 1083 [deprecated = true];
- BACKUP_VOICEMAIL_BACKED_UP = 1084 [deprecated = true];
- BACKUP_FULL_BACKED_UP = 1085 [deprecated = true];
- BACKUP_ON_BACKUP_JSON_EXCEPTION = 1086 [deprecated = true];
-
- BACKUP_ON_QUOTA_EXCEEDED = 1087 [deprecated = true];
-
- BACKUP_ON_RESTORE = 1088 [deprecated = true];
- BACKUP_RESTORED_FILE = 1089 [deprecated = true];
- BACKUP_RESTORED_VOICEMAIL = 1090 [deprecated = true];
- BACKUP_ON_RESTORE_FINISHED = 1091 [deprecated = true];
- BACKUP_ON_RESTORE_DISABLED = 1092 [deprecated = true];
- BACKUP_ON_RESTORE_JSON_EXCEPTION = 1093 [deprecated = true];
- BACKUP_ON_RESTORE_IO_EXCEPTION = 1094 [deprecated = true];
-
- BACKUP_MAX_VM_BACKUP_REACHED = 1095 [deprecated = true];
-
- EVENT_ANSWER_HINT_ACTIVATED = 1096;
- EVENT_ANSWER_HINT_DEACTIVATED = 1097;
-
- VVM_TAB_VIEWED = 1098;
-
- VVM_SHARE_VISIBLE = 1099;
- VVM_SHARE_PRESSED = 1100;
-
- OUTGOING_VIDEO_CALL = 1101;
- INCOMING_VIDEO_CALL = 1102;
- USER_PARTICIPATED_IN_A_VIDEO_CALL = 1103;
-
- BACKUP_ON_RESTORE_VM_DUPLICATE_NOT_RESTORING = 1104 [deprecated = true];
-
- // User tapped the 'Share and call' button to start the call composer
- CALL_LOG_SHARE_AND_CALL = 1105;
- CALL_COMPOSER_ACTIVITY_PLACE_RCS_CALL = 1106;
- CALL_COMPOSER_ACTIVITY_SEND_AND_CALL_PRESSED_WHEN_SESSION_NOT_READY = 1107;
-
- POST_CALL_PROMPT_USER_TO_SEND_MESSAGE_CLICKED = 1108;
- POST_CALL_PROMPT_USER_TO_SEND_MESSAGE = 1109;
- POST_CALL_PROMPT_USER_TO_VIEW_SENT_MESSAGE = 1110;
- POST_CALL_PROMPT_USER_TO_VIEW_SENT_MESSAGE_CLICKED = 1111;
-
- IN_CALL_SCREEN_TURN_ON_MUTE = 1112;
- IN_CALL_SCREEN_TURN_OFF_MUTE = 1113;
- IN_CALL_SCREEN_SWAP_CAMERA = 1114;
- IN_CALL_SCREEN_TURN_ON_VIDEO = 1115;
- IN_CALL_SCREEN_TURN_OFF_VIDEO = 1116;
-
- VIDEO_CALL_WITH_INCOMING_VOICE_CALL = 1117;
- VIDEO_CALL_WITH_INCOMING_VIDEO_CALL = 1118;
- VOICE_CALL_WITH_INCOMING_VOICE_CALL = 1119;
- VOICE_CALL_WITH_INCOMING_VIDEO_CALL = 1120;
-
- CALL_DETAILS_COPY_NUMBER = 1121;
- CALL_DETAILS_EDIT_BEFORE_CALL = 1122;
- CALL_DETAILS_CALL_BACK = 1123 [deprecated = true];
-
- VVM_USER_DISMISSED_VM_ALMOST_FULL_PROMO = 1124;
- VVM_USER_DISMISSED_VM_FULL_PROMO = 1125;
- VVM_USER_ENABLED_ARCHIVE_FROM_VM_ALMOST_FULL_PROMO = 1126;
- VVM_USER_ENABLED_ARCHIVE_FROM_VM_FULL_PROMO = 1127;
- VVM_USER_SHOWN_VM_ALMOST_FULL_PROMO = 1128;
- VVM_USER_SHOWN_VM_FULL_PROMO = 1129;
- VVM_USER_SHOWN_VM_ALMOST_FULL_ERROR_MESSAGE = 1130;
- VVM_USER_SHOWN_VM_FULL_ERROR_MESSAGE = 1131;
- VVM_USER_TURNED_ARCHIVE_ON_FROM_SETTINGS = 1132;
- VVM_USER_TURNED_ARCHIVE_OFF_FROM_SETTINGS = 1133;
- VVM_ARCHIVE_AUTO_DELETED_VM_FROM_SERVER = 1134;
- VVM_ARCHIVE_AUTO_DELETE_TURNED_OFF = 1135;
-
- VVM_TAB_VISIBLE = 1136;
- VVM_UNBUNDLED_EVENT_RECEIVED = 1137;
- VVM_ACTIVATION_STARTED = 1138;
- VVM_ACTIVATION_COMPLETED = 1139;
- VVM_AUTO_RETRY_ACTIVATION = 1140;
- VVM_PROVISIONING_STARTED = 1141;
- VVM_PROVISIONING_COMPLETED = 1142;
- VVM_SYNC_STARTED = 1143;
- VVM_SYNC_COMPLETED = 1144;
- VVM_AUTO_RETRY_SYNC = 1145;
- VVM_USER_RETRY = 1146;
- VVM_USER_SYNC = 1147;
- VVM_SETTINGS_VIEWED = 1148;
- VVM_CHANGE_PIN_CLICKED = 1149;
- VVM_CHANGE_PIN_COMPLETED = 1150;
- VVM_CHANGE_RINGTONE_CLICKED = 1151 [deprecated = true];
- VVM_CHANGE_VIBRATION_CLICKED = 1152;
- VVM_USER_ENABLED_IN_SETTINGS = 1153;
- VVM_USER_DISABLED_IN_SETTINGS = 1154;
- VVM_ADVANCED_SETINGS_CLICKED = 1155;
- VVM_NOTIFICATION_CLICKED = 1156;
- VVM_NOTIFICATION_CREATED = 1157;
- VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION = 1158;
- VVM_TRANSCRIPTION_DOWNLOADED = 1159;
- VVM_CHANGE_AIRPLANE_MODE_CLICKED = 1160;
- VVM_CALL_VOICEMAIL_CLICKED = 1161;
- VVM_QUOTA_CHECK_UNAVAILABLE = 1162;
-
- // Emergency location impressions
- EMERGENCY_NEW_EMERGENCY_CALL = 1163;
- EMERGENCY_CALLBACK = 1164;
- EMERGENCY_NO_LOCATION_PERMISSION = 1165;
- EMERGENCY_BATTERY_TOO_LOW_TO_GET_LOCATION = 1166;
- EMERGENCY_CANT_GET_LOCATION = 1167;
- EMERGENCY_STALE_LOCATION = 1168;
- EMERGENCY_INACCURATE_LOCATION = 1169;
- EMERGENCY_GOT_LOCATION = 1170;
- EMERGENCY_GOT_ADDRESS = 1171;
- EMERGENCY_GOT_MAP = 1172;
- EMERGENCY_LAUNCHED_MAP = 1173;
-
- VIDEO_CALL_UPGRADE_REQUESTED = 1174
-
- ;
- VIDEO_CALL_REQUEST_ACCEPTED = 1175
-
- ;
- VIDEO_CALL_REQUEST_ACCEPTED_AS_AUDIO = 1176
-
- ;
- VIDEO_CALL_REQUEST_DECLINED = 1177
-
- ;
- VIDEO_CALL_REQUEST_RECEIVED = 1178
-
- ;
-
- RCS_VIDEO_SHARE_UPGRADE_REQUESTED = 1179;
- RCS_VIDEO_SHARE_REQUEST_ACCEPTED = 1180;
- RCS_VIDEO_SHARE_REQUEST_DECLINED = 1181;
- RCS_VIDEO_SHARE_REQUEST_RECEIVED = 1182;
-
- IMS_VIDEO_UPGRADE_REQUESTED = 1183;
- IMS_VIDEO_REQUEST_ACCEPTED = 1184;
- IMS_VIDEO_REQUEST_ACCEPTED_AS_AUDIO = 1185;
- IMS_VIDEO_REQUEST_DECLINED = 1186;
- IMS_VIDEO_REQUEST_RECEIVED = 1187;
-
- VVM_STATUS_CHECK_READY = 1188;
- VVM_STATUS_CHECK_REACTIVATION = 1189;
-
- VVM_ARCHIVE_AUTO_DELETE_FAILED_DUE_TO_FAILED_QUOTA_CHECK = 1190;
-
- // User pressed the speaker phone button on the return-to-call bubble
- BUBBLE_TURN_ON_SPEAKERPHONE = 1191;
- // User pressed the speaker phone button again on the return-to-call bubble
- BUBBLE_TURN_ON_WIRED_OR_EARPIECE = 1192;
- // User muted the call from the return-to-call bubble
- BUBBLE_MUTE_CALL = 1193;
- // User unmuted the call from the return-to-call bubble
- BUBBLE_UNMUTE_CALL = 1194;
- // User ended the call from the return-to-call bubble
- BUBBLE_END_CALL = 1195;
-
- LIGHTBRINGER_VIDEO_REQUESTED_FROM_SEARCH = 1196;
- LIGHTBRINGER_VIDEO_REQUESTED_FROM_CALL_LOG =
- 1197; // Including call history
- IMS_VIDEO_REQUESTED_FROM_SEARCH = 1198;
- IMS_VIDEO_REQUESTED_FROM_CALL_LOG = 1199; // Including call history
-
- // Multi select impressions
- MULTISELECT_LONG_PRESS_ENTER_MULTI_SELECT_MODE = 1200;
- MULTISELECT_LONG_PRESS_TAP_ENTRY = 1201;
- MULTISELECT_SINGLE_PRESS_SELECT_ENTRY = 1202;
- MULTISELECT_SINGLE_PRESS_UNSELECT_ENTRY = 1203;
- MULTISELECT_SINGLE_PRESS_TAP_VIA_CONTACT_BADGE = 1204;
- MULTISELECT_SELECT_ALL = 1205;
- MULTISELECT_UNSELECT_ALL = 1206;
- MULTISELECT_TAP_DELETE_ICON = 1207;
- MULTISELECT_DISPLAY_DELETE_CONFIRMATION_DIALOG = 1208;
- MULTISELECT_DELETE_ENTRY_VIA_CONFIRMATION_DIALOG = 1209;
- MULTISELECT_CANCEL_CONFIRMATION_DIALOG_VIA_CANCEL_BUTTON = 1210;
- MULTISELECT_CANCEL_CONFIRMATION_DIALOG_VIA_CANCEL_TOUCH = 1211;
- MULTISELECT_ROTATE_AND_SHOW_ACTION_MODE = 1212;
-
- // Impressions for verizon VVM with backup and transcription ToS
- VOICEMAIL_VVM3_TOS_V2_CREATED = 1213;
- VOICEMAIL_VVM3_TOS_V2_ACCEPTED = 1214;
- VOICEMAIL_VVM3_TOS_V2_DECLINE_CLICKED = 1215;
- // Impressions for dialer voicemail with backup and transcription ToS
- VOICEMAIL_DIALER_TOS_CREATED = 1216;
- VOICEMAIL_DIALER_TOS_ACCEPTED = 1217;
- VOICEMAIL_DIALER_TOS_DECLINE_CLICKED = 1218;
-
- // Add or create contact
- // Creating new contact fab was logged as NEW_CONTACT_FAB
- CREATE_NEW_CONTACT_FROM_CALL_LOG = 1219;
- CREATE_NEW_CONTACT_FROM_DIALPAD = 1220;
- CREATE_NEW_CONTACT_FROM_VOICEMAIL = 1221;
- CREATE_NEW_CONTACT_FROM_CALL_HISTORY = 1222;
- ADD_TO_A_CONTACT_FROM_CALL_LOG = 1223;
- ADD_TO_A_CONTACT_FROM_DIALPAD = 1224;
- ADD_TO_A_CONTACT_FROM_VOICEMAIL = 1225;
- ADD_TO_A_CONTACT_FROM_CALL_HISTORY = 1226;
-
- // Impressions for dialer reporting caller id as inaccurate
- CALLER_ID_REPORTED = 1227;
- CALLER_ID_REPORT_FAILED = 1228;
-
- // Impressions for interactions with the voicemail transcription server
- VVM_TRANSCRIPTION_REQUEST_SENT = 1229;
- VVM_TRANSCRIPTION_REQUEST_RETRY = 1230;
- VVM_TRANSCRIPTION_RESPONSE_SUCCESS = 1231;
- VVM_TRANSCRIPTION_RESPONSE_EMPTY = 1232;
- VVM_TRANSCRIPTION_RESPONSE_INVALID = 1233;
- VVM_TRANSCRIPTION_RESPONSE_RECOVERABLE_ERROR = 1234;
- VVM_TRANSCRIPTION_RESPONSE_FATAL_ERROR = 1235;
-
- // In in call UI
- UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN = 1236;
-
- // Bubble primary button first click to expand bubble (by user)
- BUBBLE_PRIMARY_BUTTON_EXPAND = 1237;
- // Bubble prinary button second click to return to call
- BUBBLE_PRIMARY_BUTTON_RETURN_TO_CALL = 1238;
-
- // Dialer Key/Value Backup and Restore
- BACKUP_KEY_VALUE_ON_BACKUP = 1239;
- BACKUP_KEY_VALUE_ON_RESTORE = 1240;
- BACKUP_KEY_VALUE_ON_RESTORE_FINISHED = 1241;
- BACKUP_KEY_VALUE_GET_BACKUP_SPECIFICATION = 1242;
- BACKUP_KEY_VALUE_BACKUP_AGENT_CONSTRUCTOR = 1243;
-
- // In the in call UI
- UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_LIGHTBRINGER = 1244;
- UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_IMS = 1245;
- UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_RCS = 1246;
- LIGHTBRINGER_UPGRADE_REQUESTED = 1247;
-
- // Found Lightbringer reachable contact when launching Dialer
- HAS_LIGHTBRINGER_REACHABLE_CONTACTS = 1248;
-
- // This impression is logged once per process when the number of
- // notifications is very high and the system may suppress future
- // notifications.
- HIGH_GLOBAL_NOTIFICATION_COUNT_REACHED = 1249;
-
- // More impressions for interactions with the voicemail transcription server
- VVM_TRANSCRIPTION_REQUEST_SENT_ASYNC = 1250;
- VVM_TRANSCRIPTION_VOICEMAIL_RECEIVED = 1251;
- VVM_TRANSCRIPTION_VOICEMAIL_FORMAT_NOT_SUPPORTED = 1252;
- VVM_TRANSCRIPTION_VOICEMAIL_INVALID_DATA = 1253;
- VVM_TRANSCRIPTION_VOICEMAIL_UPLOAD_FAILED = 1254;
- VVM_TRANSCRIPTION_RESPONSE_LANGUAGE_NOT_SUPPORTED = 1255;
- VVM_TRANSCRIPTION_RESPONSE_NO_SPEECH_DETECTED = 1256;
- VVM_TRANSCRIPTION_RESPONSE_EXPIRED = 1257;
- VVM_TRANSCRIPTION_RESPONSE_TOO_MANY_ERRORS = 1258;
- VVM_TRANSCRIPTION_POLLING_TIMEOUT = 1259;
-
- // Bubble collapse initiated by user, i.e. no hiding after collapse
- BUBBLE_COLLAPSE_BY_USER = 1260;
-
- // In in-call UI
- IN_CALL_SHOW_DIALPAD_BUTTON_PRESSED = 1261;
- IN_CALL_ADD_CALL_BUTTON_PRESSED = 1262;
- IN_CALL_MERGE_BUTTON_PRESSED = 1263;
- IN_CALL_SWAP_SECONDARY_BUTTON_PRESSED = 1264;
-
- // In in-call dialpad
- IN_CALL_DIALPAD_NUMBER_BUTTON_PRESSED = 1265;
- IN_CALL_DIALPAD_HANG_UP_BUTTON_PRESSED = 1266;
- IN_CALL_DIALPAD_CLOSE_BUTTON_PRESSED = 1267;
-
- // More voicemail transcription impressions
- VVM_NOTIFICATION_CREATED_WITH_IN_PROGRESS = 1268;
- VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION_FAILURE = 1269;
- VVM_NOTIFICATION_CREATED_WITH_NO_TRANSCRIPTION = 1270;
- VVM_TRANSCRIPTION_JOB_STOPPED = 1271;
- VVM_TRANSCRIPTION_TASK_CANCELLED = 1272;
-
- // Swipe/click to switch tabs
- SWITCH_TAB_TO_FAVORITE_BY_SWIPE = 1273;
- SWITCH_TAB_TO_CALL_LOG_BY_SWIPE = 1274;
- SWITCH_TAB_TO_CONTACTS_BY_SWIPE = 1275;
- SWITCH_TAB_TO_VOICEMAIL_BY_SWIPE = 1276;
- SWITCH_TAB_TO_FAVORITE_BY_CLICK = 1277;
- SWITCH_TAB_TO_CALL_LOG_BY_CLICK = 1278;
- SWITCH_TAB_TO_CONTACTS_BY_CLICK = 1279;
- SWITCH_TAB_TO_VOICEMAIL_BY_CLICK = 1280;
-
- LIGHTBRINGER_NON_CONTACT_UPGRADE_REQUESTED = 1281;
- LIGHTBRINGER_NON_CONTACT_VIDEO_REQUESTED_FROM_CALL_LOG =
- 1282; // Including call history
-
- // More voicemail transcription impressions
- VVM_TRANSCRIPTION_POLL_REQUEST = 1283;
-
- // Callback impressions (with more granularity) from the call details UI
- CALL_DETAILS_IMS_VIDEO_CALL_BACK = 1284;
- CALL_DETAILS_LIGHTBRINGER_CALL_BACK = 1285;
- CALL_DETAILS_VOICE_CALL_BACK = 1286;
-
- // Assisted Dialing related impressions tracking failures modes within the
- // library.
-
- // Indicates a failure to parse a provided number string in libphonenumber.
- ASSISTED_DIALING_CONSTRAINT_PARSING_FAILURE = 1287;
- // Indicates that the number attempting to be assisted dialed already
- // specified a country code.
- ASSISTED_DIALING_CONSTRAINT_NUMBER_HAS_COUNTRY_CODE = 1288;
- // Indicates that the number attempting to be assisted dialed had an
- // extension.
- ASSISTED_DIALING_CONSTRAINT_NUMBER_HAS_EXTENSION = 1289;
- // Indicates that the user disabled the feature.
- ASSISTED_DIALING_FEATURE_DISABLED_BY_USER = 1292;
-
- // User reports a same prefix call as spam from call history
- REPORT_SAME_PREFIX_CALL_AS_SPAM_VIA_CALL_HISTORY = 1290
-
- ;
-
- // User reports a same prefix call as not spam from call history
- REPORT_SAME_PREFIX_CALL_AS_NOT_SPAM_VIA_CALL_HISTORY = 1291
-
- ;
-
- PRECALL_INITIATED = 1293;
- PRECALL_INITIATED_EXTERNAL = 1294;
- PRECALL_CANCELED = 1295;
-
- DUAL_SIM_CHANGE_SIM_PRESSED = 1296;
- DUAL_SIM_SELECTION_SHOWN = 1297;
- DUAL_SIM_SELECTION_VOICEMAIL = 1298;
- DUAL_SIM_SELECTION_IN_CONTACTS = 1299;
- DUAL_SIM_SELECTION_SUGGESTION_AVAILABLE = 1300;
- DUAL_SIM_SELECTION_SUGGESTED_CARRIER = 1301;
- DUAL_SIM_SELECTION_SUGGESTED_FREQUENCY = 1302;
- DUAL_SIM_SELECTION_SUGGESTED_SIM_SELECTED = 1303;
- DUAL_SIM_SELECTION_NON_SUGGESTED_SIM_SELECTED = 1304;
- DUAL_SIM_SELECTION_PREFERRED_SET = 1305;
- DUAL_SIM_SELECTION_PREFERRED_USED = 1306;
- DUAL_SIM_SELECTION_PREFERRED_NOT_SELECTABLE = 1389;
- DUAL_SIM_SELECTION_GLOBAL_USED = 1307;
- DUAL_SIM_SELECTION_GLOBAL_NOT_SELECTABLE = 1390;
- DUAL_SIM_SELECTION_SUGGESTION_AUTO_SELECTED = 1322;
- DUAL_SIM_SELECTION_SUGGESTION_AUTO_NOT_SELECTABLE = 1391;
-
- DUO_CALL_LOG_SET_UP_INSTALL = 1308;
- DUO_CALL_LOG_SET_UP_ACTIVATE = 1309;
- DUO_CALL_LOG_INVITE = 1310;
-
- // Bubble primary button first click to expand bubble
- BUBBLE_V2_CLICK_TO_EXPAND = 1311;
- // Bubble primary button second click to collapse bubble
- BUBBLE_V2_CLICK_TO_COLLAPSE = 1312;
- // User return to call from bubble call action menu
- BUBBLE_V2_RETURN_TO_CALL = 1313;
- // User muted call from bubble call action menu
- BUBBLE_V2_MUTE_CALL = 1314;
- // User unmuted call from bubble call action menu
- BUBBLE_V2_UNMUTE_CALL = 1315;
- // User choose audio route speakerphone from bubble call action menu
- BUBBLE_V2_SPEAKERPHONE = 1316;
- // User choose audio route wired or earpiece from bubble call action menu
- BUBBLE_V2_WIRED_OR_EARPIECE = 1317;
- // User choose audio route bluetooth from bubble call action menu
- BUBBLE_V2_BLUETOOTH = 1318;
- // User ended call from bubble call action menu
- BUBBLE_V2_END_CALL = 1319;
- // Drag bubble to bottom and dismiss
- BUBBLE_V2_BOTTOM_ACTION_DISMISS = 1320;
- // Drag bubble to bottom and end call
- BUBBLE_V2_BOTTOM_ACTION_END_CALL = 1321;
-
- // Bubble appears
- BUBBLE_V2_SHOW = 1323;
-
- DUO_CALL_LOG_SET_UP_INSTALL_SHOWN = 1324;
- DUO_CALL_LOG_SET_UP_ACTIVATE_SHOWN = 1325;
- DUO_CALL_LOG_INVITE_SHOWN = 1326;
-
- // NUI bottom navigation bar user actions
- MAIN_SWITCH_TAB_TO_FAVORITE = 1327;
- MAIN_SWITCH_TAB_TO_CALL_LOG = 1328;
- MAIN_SWITCH_TAB_TO_CONTACTS = 1329;
- MAIN_SWITCH_TAB_TO_VOICEMAIL = 1330;
- // NUI search
- MAIN_TOUCH_DIALPAD_SEARCH_LIST_TO_CLOSE_SEARCH_AND_DIALPAD = 1331;
- MAIN_TOUCH_DIALPAD_SEARCH_LIST_TO_HIDE_DIALPAD = 1332;
- MAIN_TOUCH_SEARCH_LIST_TO_CLOSE_SEARCH = 1333;
- MAIN_TOUCH_SEARCH_LIST_TO_HIDE_KEYBOARD = 1334;
- MAIN_PRESS_BACK_BUTTON_TO_CLOSE_SEARCH = 1335;
- MAIN_PRESS_BACK_BUTTON_TO_CLOSE_SEARCH_AND_DIALPAD = 1336;
- MAIN_PRESS_BACK_BUTTON_TO_HIDE_DIALPAD = 1337;
- MAIN_CLICK_SEARCH_BAR = 1338;
- MAIN_CLICK_SEARCH_BAR_VOICE_BUTTON = 1339;
- // NUI FAB
- MAIN_CLICK_FAB_TO_OPEN_DIALPAD = 1340;
-
- // The call log was not dirty.
- ANNOTATED_CALL_LOG_NOT_DIRTY = 1341;
- // The call log was dirty but no changes were needed.
- ANNOTATED_CALL_LOG_NO_CHANGES_NEEDED = 1342;
- // The call log was force refreshed but no changes were needed.
- ANNOTATED_CALL_LOG_FORCE_REFRESH_NO_CHANGES_NEEDED = 1343;
- // The call log was dirty and changes were needed.
- ANNOTATED_CALL_LOG_CHANGES_NEEDED = 1344;
- // The call log was force refreshed and changes were needed.
- ANNOTATED_CALL_LOG_FORCE_REFRESH_CHANGES_NEEDED = 1345;
-
- MAIN_VVM_TAB_VISIBLE = 1346;
-
- // Main bottom navigation bar non user actions
- MAIN_OPEN_WITH_TAB_FAVORITE = 1347;
- MAIN_OPEN_WITH_TAB_CALL_LOG = 1348;
- MAIN_OPEN_WITH_TAB_CONTACTS = 1349;
- MAIN_OPEN_WITH_TAB_VOICEMAIL = 1350;
- MAIN_OPEN_WITH_DIALPAD = 1351;
-
- // Incoming call screened for spam auto blocking
- INCOMING_CALL_SCREENED = 1352;
- // Incoming call auto blocked as spam
- INCOMING_CALL_AUTO_BLOCKED_AS_SPAM = 1353;
- // Incoming voicemail screened for spam auto blocking
- INCOMING_VOICEMAIL_SCREENED = 1354;
- // Incoming voicemail auto blocked as spam
- INCOMING_VOICEMAIL_AUTO_BLOCKED_AS_SPAM = 1355;
- // User reported auto blocked spam call as spam
- AUTO_BLOCKED_SPAM_CALL_REPORTED_AS_SPAM = 1356;
- // User reported auto blocked spam call as not spam
- AUTO_BLOCKED_SPAM_CALL_REPORTED_AS_NOT_SPAM = 1357;
-
- // User enabled spam blocking through setting page.
- SPAM_BLOCKING_ENABLED_THROUGH_SETTING = 1358;
- // User disabled spam blocking through setting page.
- SPAM_BLOCKING_DISABLED_THROUGH_SETTING = 1359;
- // Failure happened while modifying spam blocking setting.
- SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_SETTING = 1360;
-
- VVM_NOTIFICATIONS_SETTING_CLICKED = 1361;
- VVM_USER_TURNED_TRANSCRIBE_ON_FROM_SETTINGS = 1362;
- VVM_USER_TURNED_TRANSCRIBE_OFF_FROM_SETTINGS = 1363;
- VVM_USER_TURNED_DONATION_ON_FROM_SETTINGS = 1364;
- VVM_USER_TURNED_DONATION_OFF_FROM_SETTINGS = 1365;
-
- // Spam blocking call log promo shown for user.
- SPAM_BLOCKING_CALL_LOG_PROMO_SHOWN = 1366;
- // User enabled spam blocking through call log promo.
- SPAM_BLOCKING_ENABLED_THROUGH_CALL_LOG_PROMO = 1367;
- // Failure happened while enabling spam blocking through call log promo.
- SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_CALL_LOG_PROMO = 1368;
-
- TOKEN_FETCHER_NEED_USER_APPROVAL = 1371;
- TOKEN_FETCHER_IO_EXCEPTION = 1372;
- TOKEN_FETCHER_AUTH_EXCEPTION = 1373;
- TOKEN_FETCHER_CLEAR_EXCEPTION = 1374;
-
- PEOPLE_API_LOOKUP_FAILED = 1375;
-
- // New Speed Dial impressions
- LIGHTBRINGER_VIDEO_REQUESTED_FOR_FAVORITE_CONTACT = 1376;
- LIGHTBRINGER_VIDEO_REQUESTED_FOR_SUGGESTED_CONTACT = 1377;
- LIGHTBRINGER_VIDEO_REQUESTED_FOR_FAVORITE_CONTACT_DISAMBIG = 1378;
-
- // Spam blocking after call notification promo shown for user.
- SPAM_BLOCKING_AFTER_CALL_NOTIFICATION_PROMO_SHOWN = 1379;
- // User enabled spam blocking through after call notification promo.
- SPAM_BLOCKING_ENABLED_THROUGH_AFTER_CALL_NOTIFICATION_PROMO = 1380;
- // Failure happened while enabling spam blocking through after call
- // notification promo.
- SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_AFTER_CALL_NOTIFICATION_PROMO = 1381;
-
- // RTT call impressions
- OUTGOING_RTT_CALL = 1382;
- INCOMING_RTT_CALL = 1383;
- // The call turns into RTT call mid call.
- RTT_MID_CALL_ENABLED = 1384;
- // Mid call RTT request accepted.
- RTT_MID_CALL_ACCEPTED = 1385;
- // Mid call RTT request rejected.
- RTT_MID_CALL_REJECTED = 1386;
-
- // Send button clicked in RTT call, this includes send button on keyboard.
- RTT_SEND_BUTTON_CLICKED = 1387;
- RTT_KEYBOARD_SEND_BUTTON_CLICKED = 1388;
-
- // For background calling
- START_CALL_IN_BUBBLE_MODE = 1392;
-
- // Switch audio route
- IN_CALL_SWITCH_AUDIO_ROUTE_SPEAKER = 1393;
- IN_CALL_SWITCH_AUDIO_ROUTE_WIRED_HEADSET = 1394;
- IN_CALL_SWITCH_AUDIO_ROUTE_EARPIECE = 1395;
- IN_CALL_SWITCH_AUDIO_ROUTE_BLUETOOTH = 1396;
-
- // Impressions for PhoneLookup
- PEOPLE_API_PHONE_LOOKUP_TIMEOUT = 1397;
- CP2_EXTENDED_DIRECTORY_PHONE_LOOKUP_TIMEOUT = 1398;
-
- // Favorite general
- FAVORITE_ADD_FAVORITE = 1399;
- FAVORITE_OPEN_DISAMBIG_DIALOG = 1400;
- FAVORITE_REMOVE_FAVORITE_BY_DRAG_AND_DROP = 1401;
- FAVORITE_MOVE_FAVORITE_BY_DRAG_AND_DROP = 1402;
- // Favorite menu
- FAVORITE_OPEN_FAVORITE_MENU = 1403;
- FAVORITE_SEND_MESSAGE = 1404;
- FAVORITE_OPEN_CONTACT_CARD = 1405;
- FAVORITE_REMOVE_FAVORITE = 1406; // Include drag and drop
- // Favorite disambig
- FAVORITE_SET_VIDEO_DEFAULT = 1407;
- FAVORITE_SET_VOICE_DEFAULT = 1408;
- }
-}
diff --git a/java/com/android/dialer/logging/interaction_event.proto b/java/com/android/dialer/logging/interaction_event.proto
deleted file mode 100644
index d7a09bdfba43515a4d2886f95de09e663355f6f3..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/logging/interaction_event.proto
+++ /dev/null
@@ -1,66 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message InteractionEvent {
- // Next Tag: 38
- enum Type {
-
- UNKNOWN = 0;
-
- // Leaving tags 1-14 for more frequent interactions, e.g. ANSWERED_CALL
-
- // An incoming call was blocked
- CALL_BLOCKED = 15;
-
- // The user blocked a number from the Call Log screen
- BLOCK_NUMBER_CALL_LOG = 16;
-
- // The user blocked a number from the Call details screen
- BLOCK_NUMBER_CALL_DETAIL = 17;
-
- // The user blocked a number from the Management screen
- BLOCK_NUMBER_MANAGEMENT_SCREEN = 18;
-
- // The user unblocked a number from the Call Log screen
- UNBLOCK_NUMBER_CALL_LOG = 19;
-
- // The user unblocked a number from the Call details screen
- UNBLOCK_NUMBER_CALL_DETAIL = 20;
-
- // The user unblocked a number from the Management screen
- UNBLOCK_NUMBER_MANAGEMENT_SCREEN = 21;
-
- // The user blocked numbers from contacts marked as send to voicemail
- IMPORT_SEND_TO_VOICEMAIL = 22;
-
- // The user blocked a number then undid the block
- UNDO_BLOCK_NUMBER = 23;
-
- // The user unblocked a number then undid the unblock
- UNDO_UNBLOCK_NUMBER = 24;
-
- // Actions in speed dial
- SPEED_DIAL_PIN_CONTACT = 25;
- SPEED_DIAL_REMOVE_CONTACT = 26;
- SPEED_DIAL_OPEN_CONTACT_CARD = 27;
- SPEED_DIAL_CLICK_CONTACT_WITH_AMBIGUOUS_NUMBER = 28;
-
- SPEED_DIAL_SET_DEFAULT_NUMBER_FOR_AMBIGUOUS_CONTACT = 29;
-
- // Open quick contact from where
- OPEN_QUICK_CONTACT_FROM_CALL_LOG = 30;
- OPEN_QUICK_CONTACT_FROM_CALL_DETAILS = 31;
- OPEN_QUICK_CONTACT_FROM_ALL_CONTACTS_GENERAL = 32;
- OPEN_QUICK_CONTACT_FROM_CONTACTS_FRAGMENT_BADGE = 33;
- OPEN_QUICK_CONTACT_FROM_CONTACTS_FRAGMENT_ITEM = 34;
- OPEN_QUICK_CONTACT_FROM_SEARCH = 35;
- OPEN_QUICK_CONTACT_FROM_VOICEMAIL = 36;
- OPEN_QUICK_CONTACT_FROM_CALL_HISTORY = 37;
- }
-}
diff --git a/java/com/android/dialer/logging/people_api_lookup_error.proto b/java/com/android/dialer/logging/people_api_lookup_error.proto
deleted file mode 100644
index 45064162179a1b9dc5709375fd90970c82b05ec7..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/logging/people_api_lookup_error.proto
+++ /dev/null
@@ -1,18 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message PeopleApiLookupError {
- enum Type {
- UNKNOWN = 0;
- HTTP_RESPONSE_ERROR = 1;
- WRONG_KIND_VALUE = 2;
- NO_ITEM_FOUND = 3;
- JSON_PARSING_ERROR = 4;
- }
-}
diff --git a/java/com/android/dialer/logging/reporting_location.proto b/java/com/android/dialer/logging/reporting_location.proto
deleted file mode 100644
index d2fd6dd973b230661d2ba30639a603561e8351e1..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/logging/reporting_location.proto
+++ /dev/null
@@ -1,19 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message ReportingLocation {
- // Spam reporting location
- enum Type {
- UNKNOWN_REPORTING_LOCATION = 0;
- CALL_LOG_HISTORY = 1;
- FEEDBACK_PROMPT = 2;
- VOICEMAIL_HISTORY = 3;
- CONTACT_DETAILS = 4;
- }
-}
diff --git a/java/com/android/dialer/logging/screen_event.proto b/java/com/android/dialer/logging/screen_event.proto
deleted file mode 100644
index 8081f6e45c0bc464d459f50f3ae01334e261c728..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/logging/screen_event.proto
+++ /dev/null
@@ -1,79 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message ScreenEvent {
- enum Type {
-
- UNKNOWN = 0;
-
- DIALPAD = 1;
-
- SPEED_DIAL = 2;
-
- CALL_LOG = 3;
-
- // The tab containing the list of voicemails only.
- VOICEMAIL_LOG = 4;
-
- // The tab containing the list of all contacts.
- ALL_CONTACTS = 5;
-
- // List of search results returned by typing into the search box.
- REGULAR_SEARCH = 6;
-
- // List of search results returned by typing into the dialpad.
- SMART_DIAL_SEARCH = 7;
-
- CALL_LOG_FILTER = 8;
-
- SETTINGS = 9;
-
- // The "Import/export contacts" dialog launched via the overflow menu.
- IMPORT_EXPORT_CONTACTS = 10;
-
- // The "Clear frequents" dialog launched via the overflow menu.
- CLEAR_FREQUENTS = 11;
-
- // The "Send feedback" dialog launched via the overflow menu.
- SEND_FEEDBACK = 12;
-
- // The main in call screen that displays caller details and contact photos
- INCALL = 13;
-
- // The screen that displays the glowpad widget (slide right to answer,
- // slide left to dismiss).
- INCOMING_CALL = 14;
-
- // Conference management fragment displayed for conferences that support
- // management of individual calls within the conference.
- CONFERENCE_MANAGEMENT = 15;
-
- // The dialpad displayed in-call that is used to send dtmf tones.
- INCALL_DIALPAD = 16;
-
- // Menu options displayed when long pressing on a call log entry
- CALL_LOG_CONTEXT_MENU = 17;
-
- // Screen displayed to allow the user to see an overview of all blocked
- // numbers
- BLOCKED_NUMBER_MANAGEMENT = 18;
-
- // Screen displayed to allow the user to add a new blocked number
- BLOCKED_NUMBER_ADD_NUMBER = 19;
-
- CALL_DETAILS = 20;
-
- MAIN_SPEED_DIAL = 21;
- MAIN_CALL_LOG = 22;
- MAIN_CONTACTS = 23;
- MAIN_VOICEMAIL = 24;
- MAIN_DIALPAD = 25;
- MAIN_SEARCH = 26;
- }
-}
diff --git a/java/com/android/dialer/logging/ui_action.proto b/java/com/android/dialer/logging/ui_action.proto
deleted file mode 100644
index d14bfbbc8198abc8ae418bd7f154c04aa83bfb84..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/logging/ui_action.proto
+++ /dev/null
@@ -1,44 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message UiAction {
- enum Type {
- UNKNOWN = 0;
-
- // General action starting from 1
- CHANGE_TAB_TO_FAVORITE = 1;
- CHANGE_TAB_TO_CALL_LOG = 2;
- CHANGE_TAB_TO_CONTACTS = 3;
- CHANGE_TAB_TO_VOICEMAIL = 4;
- PRESS_ANDROID_BACK_BUTTON = 5;
- TEXT_CHANGE_WITH_INPUT = 6;
- SCROLL = 7;
-
- // In call log, starting from 100
- CLICK_CALL_LOG_ITEM = 100;
- OPEN_CALL_DETAIL = 101;
- CLOSE_CALL_DETAIL_WITH_CANCEL_BUTTON = 102;
- COPY_NUMBER_IN_CALL_DETAIL = 103;
- EDIT_NUMBER_BEFORE_CALL_IN_CALL_DETAIL = 104;
-
- // In dialpad, starting from 200
- OPEN_DIALPAD = 200;
- CLOSE_DIALPAD = 201;
- PRESS_CALL_BUTTON_WITHOUT_CALLING = 202;
-
- // In search, starting from 300
- OPEN_SEARCH = 300;
- HIDE_KEYBOARD_IN_SEARCH = 301;
- CLOSE_SEARCH_WITH_HIDE_BUTTON = 302;
-
- // In call history, starting from 400
- OPEN_CALL_HISTORY = 400;
- CLOSE_CALL_HISTORY_WITH_CANCEL_BUTTON = 401;
- }
-}
diff --git a/java/com/android/dialer/logging/video_tech.proto b/java/com/android/dialer/logging/video_tech.proto
deleted file mode 100644
index 1f274be831074b3cb77dccfcaf5831e0e27d256e..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/logging/video_tech.proto
+++ /dev/null
@@ -1,18 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message VideoTech {
- enum Type {
- NONE = 0;
-
- IMS_VIDEO_TECH = 1;
- LIGHTBRINGER_VIDEO_TECH = 2;
- RCS_VIDEO_SHARE = 3;
- }
-}
\ No newline at end of file
diff --git a/java/com/android/dialer/lookup/LookupCacheService.java b/java/com/android/dialer/lookup/LookupCacheService.java
index 43dc9f06cf2252898424c9d4d86bb8ff60c0ba7c..87111d687ae2ad0b00e33d3eaca3d2da5162e6f8 100644
--- a/java/com/android/dialer/lookup/LookupCacheService.java
+++ b/java/com/android/dialer/lookup/LookupCacheService.java
@@ -20,11 +20,12 @@ import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.telephony.PhoneNumberUtils;
import android.telephony.TelephonyManager;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.dialer.logging.ContactSource;
import com.android.dialer.phonenumbercache.CachedNumberLookupService;
import com.android.dialer.phonenumbercache.ContactInfo;
@@ -92,7 +93,8 @@ public class LookupCacheService implements CachedNumberLookupService {
}
@Override
- @NonNull public ContactInfo getContactInfo() {
+ @NonNull
+ public ContactInfo getContactInfo() {
return info;
}
diff --git a/java/com/android/dialer/lookup/LookupProvider.java b/java/com/android/dialer/lookup/LookupProvider.java
index 5e8fc1d99465e302b672c8beb39afb530170e161..42d7dd2e31b11c25da243f6ebf57f132bc6e3694 100644
--- a/java/com/android/dialer/lookup/LookupProvider.java
+++ b/java/com/android/dialer/lookup/LookupProvider.java
@@ -70,8 +70,6 @@ public class LookupProvider extends ContentProvider {
public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);
public static final Uri NEARBY_LOOKUP_URI =
Uri.withAppendedPath(AUTHORITY_URI, "nearby");
- public static final Uri PEOPLE_LOOKUP_URI =
- Uri.withAppendedPath(AUTHORITY_URI, "people");
public static final Uri NEARBY_AND_PEOPLE_LOOKUP_URI =
Uri.withAppendedPath(AUTHORITY_URI, "nearby_and_people");
public static final Uri IMAGE_CACHE_URI =
@@ -275,7 +273,7 @@ public class LookupProvider extends ContentProvider {
}
}, Looper.getMainLooper());
- return locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ return locationManager.getLastKnownLocation(LocationManager.FUSED_PROVIDER);
} catch (IllegalArgumentException e) {
return null;
}
@@ -303,7 +301,7 @@ public class LookupProvider extends ContentProvider {
} catch (UnsupportedEncodingException e) {
}
- ArrayList results = null;
+ ArrayList results = new ArrayList<>();
if ((type == NEARBY || type == NEARBY_AND_PEOPLE) && lastLocation != null) {
ForwardLookup fl = ForwardLookup.getInstance(getContext());
List nearby = fl.lookup(getContext(), filter, lastLocation);
@@ -311,13 +309,6 @@ public class LookupProvider extends ContentProvider {
results.addAll(nearby);
}
}
- if (type == PEOPLE || type == NEARBY_AND_PEOPLE) {
- PeopleLookup pl = PeopleLookup.getInstance(getContext());
- List people = pl.lookup(getContext(), filter);
- if (people != null) {
- results.addAll(people);
- }
- }
if (results.isEmpty()) {
if (DEBUG) Log.v(TAG, "handleFilter(" + filter + "): No results");
diff --git a/java/com/android/dialer/lookup/LookupSettings.java b/java/com/android/dialer/lookup/LookupSettings.java
index 80f482c79135da8e23cbf518d207dc48b3c769c0..d7ad1d909944dd6ba70c3dc84054a1dc518d4fd3 100644
--- a/java/com/android/dialer/lookup/LookupSettings.java
+++ b/java/com/android/dialer/lookup/LookupSettings.java
@@ -16,14 +16,8 @@
package com.android.dialer.lookup;
-import android.content.ContentResolver;
import android.content.Context;
import android.content.SharedPreferences;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.provider.Settings;
-
-import java.util.List;
public final class LookupSettings {
private static final String TAG = LookupSettings.class.getSimpleName();
@@ -32,36 +26,27 @@ public final class LookupSettings {
public static final String FLP_OPENSTREETMAP = "OpenStreetMap";
public static final String FLP_DEFAULT = FLP_OPENSTREETMAP;
- /** People lookup providers */
- public static final String PLP_AUSKUNFT = "Auskunft";
- public static final String PLP_DEFAULT = PLP_AUSKUNFT;
-
/** Reverse lookup providers */
- public static final String RLP_OPENCNAM = "OpenCnam";
public static final String RLP_YELLOWPAGES = "YellowPages";
public static final String RLP_YELLOWPAGES_CA = "YellowPages_CA";
public static final String RLP_ZABASEARCH = "ZabaSearch";
public static final String RLP_CYNGN_CHINESE = "CyngnChinese";
public static final String RLP_DASTELEFONBUCH = "DasTelefonbuch";
- public static final String RLP_AUSKUNFT = "Auskunft";
- public static final String RLP_DEFAULT = RLP_OPENCNAM;
+ public static final String RLP_DEFAULT = RLP_YELLOWPAGES;
/** Preferences */
private static final String SHARED_PREFERENCES_NAME = "lookup_settings";
private static final String ENABLE_FORWARD_LOOKUP = "enable_forward_lookup";
- private static final String ENABLE_PEOPLE_LOOKUP = "enable_people_lookup";
private static final String ENABLE_REVERSE_LOOKUP = "enable_reverse_lookup";
- private static final String FORWARD_LOOKUP_PROVIDER = "forward_lookup_provider";
- private static final String PEOPLE_LOOKUP_PROVIDER = "people_lookup_provider";
- private static final String REVERSE_LOOKUP_PROVIDER = "reverse_lookup_provider";
- private static final String OPENCNAM_ACCOUNT_SID = "opencnam_account_sid";
- private static final String OPENCNAM_AUTH_TOKEN = "opencnam_auth_token";
+ private static final String FORWARD_LOOKUP_PROVIDER = "forward_lookup_provider2";
+ private static final String REVERSE_LOOKUP_PROVIDER = "reverse_lookup_provider2";
private LookupSettings() {
}
private static SharedPreferences getSharedPreferences(Context context) {
- return context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
+ return context.createDeviceProtectedStorageContext()
+ .getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
}
public static boolean isForwardLookupEnabled(Context context) {
@@ -72,14 +57,6 @@ public final class LookupSettings {
getSharedPreferences(context).edit().putBoolean(ENABLE_FORWARD_LOOKUP, value).commit();
}
- public static boolean isPeopleLookupEnabled(Context context) {
- return getSharedPreferences(context).getBoolean(ENABLE_PEOPLE_LOOKUP, false);
- }
-
- public static void setPeopleLookupEnabled(Context context, boolean value) {
- getSharedPreferences(context).edit().putBoolean(ENABLE_PEOPLE_LOOKUP, value).commit();
- }
-
public static boolean isReverseLookupEnabled(Context context) {
return getSharedPreferences(context).getBoolean(ENABLE_REVERSE_LOOKUP, false);
}
@@ -96,14 +73,6 @@ public final class LookupSettings {
getSharedPreferences(context).edit().putString(FORWARD_LOOKUP_PROVIDER, value).commit();
}
- public static String getPeopleLookupProvider(Context context) {
- return getSharedPreferences(context).getString(PEOPLE_LOOKUP_PROVIDER, PLP_DEFAULT);
- }
-
- public static void setPeopleLookupProvider(Context context, String value) {
- getSharedPreferences(context).edit().putString(PEOPLE_LOOKUP_PROVIDER, value).commit();
- }
-
public static String getReverseLookupProvider(Context context) {
return getSharedPreferences(context).getString(REVERSE_LOOKUP_PROVIDER, RLP_DEFAULT);
}
@@ -111,20 +80,4 @@ public final class LookupSettings {
public static void setReverseLookupProvider(Context context, String value) {
getSharedPreferences(context).edit().putString(REVERSE_LOOKUP_PROVIDER, value).commit();
}
-
- public static String getOpenCnamAccountSid(Context context) {
- return getSharedPreferences(context).getString(OPENCNAM_ACCOUNT_SID, null);
- }
-
- public static void setOpenCnamAccountSid(Context context, String value) {
- getSharedPreferences(context).edit().putString(OPENCNAM_ACCOUNT_SID, value).commit();
- }
-
- public static String getOpenCnamAuthToken(Context context) {
- return getSharedPreferences(context).getString(OPENCNAM_AUTH_TOKEN, null);
- }
-
- public static void setOpenCnamAuthToken(Context context, String value) {
- getSharedPreferences(context).edit().putString(OPENCNAM_AUTH_TOKEN, value).commit();
- }
}
diff --git a/java/com/android/dialer/lookup/LookupSettingsFragment.java b/java/com/android/dialer/lookup/LookupSettingsFragment.java
index bca92f97890124656348ba5a7abf00aafe6d72a8..526a7f5cfbbfa7442a392ae569a2d654c2d763d0 100644
--- a/java/com/android/dialer/lookup/LookupSettingsFragment.java
+++ b/java/com/android/dialer/lookup/LookupSettingsFragment.java
@@ -20,50 +20,43 @@ import android.content.Context;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.ListPreference;
-import android.preference.PreferenceFragment;
import android.preference.SwitchPreference;
import com.android.dialer.R;
+import com.android.dialer.app.settings.DialerPreferenceFragment;
import java.util.Arrays;
-public class LookupSettingsFragment extends PreferenceFragment
+public class LookupSettingsFragment extends DialerPreferenceFragment
implements Preference.OnPreferenceChangeListener {
private static final String KEY_ENABLE_FORWARD_LOOKUP = "enable_forward_lookup";
- private static final String KEY_ENABLE_PEOPLE_LOOKUP = "enable_people_lookup";
private static final String KEY_ENABLE_REVERSE_LOOKUP = "enable_reverse_lookup";
private static final String KEY_FORWARD_LOOKUP_PROVIDER = "forward_lookup_provider";
- private static final String KEY_PEOPLE_LOOKUP_PROVIDER = "people_lookup_provider";
private static final String KEY_REVERSE_LOOKUP_PROVIDER = "reverse_lookup_provider";
private SwitchPreference enableForwardLookup;
- private SwitchPreference enablePeopleLookup;
private SwitchPreference enableReverseLookup;
private ListPreference forwardLookupProvider;
- private ListPreference peopleLookupProvider;
private ListPreference reverseLookupProvider;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ getPreferenceManager().setStorageDeviceProtected();
addPreferencesFromResource(R.xml.lookup_settings);
enableForwardLookup = (SwitchPreference) findPreference(KEY_ENABLE_FORWARD_LOOKUP);
- enablePeopleLookup = (SwitchPreference) findPreference(KEY_ENABLE_PEOPLE_LOOKUP);
enableReverseLookup = (SwitchPreference) findPreference(KEY_ENABLE_REVERSE_LOOKUP);
enableForwardLookup.setOnPreferenceChangeListener(this);
- enablePeopleLookup.setOnPreferenceChangeListener(this);
enableReverseLookup.setOnPreferenceChangeListener(this);
forwardLookupProvider = (ListPreference) findPreference(KEY_FORWARD_LOOKUP_PROVIDER);
- peopleLookupProvider = (ListPreference) findPreference(KEY_PEOPLE_LOOKUP_PROVIDER);
reverseLookupProvider = (ListPreference) findPreference(KEY_REVERSE_LOOKUP_PROVIDER);
forwardLookupProvider.setOnPreferenceChangeListener(this);
- peopleLookupProvider.setOnPreferenceChangeListener(this);
reverseLookupProvider.setOnPreferenceChangeListener(this);
}
@@ -81,14 +74,10 @@ public class LookupSettingsFragment extends PreferenceFragment
if (preference == enableForwardLookup) {
LookupSettings.setForwardLookupEnabled(context, (Boolean) newValue);
- } else if (preference == enablePeopleLookup) {
- LookupSettings.setPeopleLookupEnabled(context, (Boolean) newValue);
} else if (preference == enableReverseLookup) {
LookupSettings.setReverseLookupEnabled(context, (Boolean) newValue);
} else if (preference == forwardLookupProvider) {
LookupSettings.setForwardLookupProvider(context, (String) newValue);
- } else if (preference == peopleLookupProvider) {
- LookupSettings.setPeopleLookupProvider(context, (String) newValue);
} else if (preference == reverseLookupProvider) {
LookupSettings.setReverseLookupProvider(context, (String) newValue);
}
@@ -100,7 +89,6 @@ public class LookupSettingsFragment extends PreferenceFragment
Context context = getContext();
enableForwardLookup.setChecked(LookupSettings.isForwardLookupEnabled(context));
- enablePeopleLookup.setChecked(LookupSettings.isPeopleLookupEnabled(context));
enableReverseLookup.setChecked(LookupSettings.isReverseLookupEnabled(context));
}
@@ -108,7 +96,6 @@ public class LookupSettingsFragment extends PreferenceFragment
Context context = getContext();
restoreLookupProvider(forwardLookupProvider, LookupSettings.getForwardLookupProvider(context));
- restoreLookupProvider(peopleLookupProvider, LookupSettings.getPeopleLookupProvider(context));
restoreLookupProvider(reverseLookupProvider, LookupSettings.getReverseLookupProvider(context));
}
@@ -121,17 +108,37 @@ public class LookupSettingsFragment extends PreferenceFragment
}
if (provider == null) {
- pref.setValueIndex(0);
-
+ setDefaultProvider(pref);
+ } else {
+ String[] providers = new String[0];
if (pref == forwardLookupProvider) {
- LookupSettings.setForwardLookupProvider(context, pref.getValue());
- } else if (pref == peopleLookupProvider) {
- LookupSettings.setPeopleLookupProvider(context, pref.getValue());
+ providers = getContext().getResources().getStringArray(R.array.forward_lookup_providers);
} else if (pref == reverseLookupProvider) {
- LookupSettings.setReverseLookupProvider(context, pref.getValue());
+ providers = getContext().getResources().getStringArray(R.array.reverse_lookup_providers);
}
- } else {
- pref.setValue(provider);
+
+ boolean found = false;
+ for (String p : providers) {
+ if (p.equals(provider)) {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ setDefaultProvider(pref);
+ } else {
+ pref.setValue(provider);
+ }
+ }
+ }
+
+ private void setDefaultProvider(ListPreference pref) {
+ Context context = getContext();
+ if (pref == forwardLookupProvider) {
+ LookupSettings.setForwardLookupProvider(context, LookupSettings.FLP_DEFAULT);
+ } else if (pref == reverseLookupProvider) {
+ LookupSettings.setReverseLookupProvider(context, LookupSettings.RLP_DEFAULT);
}
}
}
diff --git a/java/com/android/dialer/lookup/PeopleLookup.java b/java/com/android/dialer/lookup/PeopleLookup.java
deleted file mode 100644
index c7e53dfc3b52c31834561862c4deaea11c2794db..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/lookup/PeopleLookup.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2014 Xiao-Long Chen
- *
- * 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.
- */
-
-package com.android.dialer.lookup;
-
-import android.content.Context;
-import android.util.Log;
-
-import com.android.dialer.phonenumbercache.ContactInfo;
-import com.android.dialer.lookup.auskunft.AuskunftPeopleLookup;
-
-import java.util.List;
-
-public abstract class PeopleLookup {
- private static final String TAG = PeopleLookup.class.getSimpleName();
-
- private static PeopleLookup INSTANCE = null;
-
- public static PeopleLookup getInstance(Context context) {
- String provider = LookupSettings.getPeopleLookupProvider(context);
-
- if (INSTANCE == null || !isInstance(provider)) {
- Log.d(TAG, "Chosen people lookup provider: " + provider);
-
- if (provider.equals(LookupSettings.PLP_AUSKUNFT)) {
- INSTANCE = new AuskunftPeopleLookup(context);
- }
- }
-
- return INSTANCE;
- }
-
- private static boolean isInstance(String provider) {
- if (provider.equals(LookupSettings.PLP_AUSKUNFT)
- && INSTANCE instanceof AuskunftPeopleLookup) {
- return true;
- } else {
- return false;
- }
- }
-
- public abstract List lookup(Context context, String filter);
-}
diff --git a/java/com/android/dialer/lookup/ReverseLookup.java b/java/com/android/dialer/lookup/ReverseLookup.java
index a2cc89656c861eed4d682cf49bcc646588f691c8..ff19002c043a1b9616044ea9554772f7f2393ca4 100644
--- a/java/com/android/dialer/lookup/ReverseLookup.java
+++ b/java/com/android/dialer/lookup/ReverseLookup.java
@@ -22,9 +22,7 @@ import android.net.Uri;
import android.util.Log;
import com.android.dialer.phonenumbercache.ContactInfo;
-import com.android.dialer.lookup.auskunft.AuskunftReverseLookup;
import com.android.dialer.lookup.dastelefonbuch.TelefonbuchReverseLookup;
-import com.android.dialer.lookup.opencnam.OpenCnamReverseLookup;
import com.android.dialer.lookup.yellowpages.YellowPagesReverseLookup;
import com.android.dialer.lookup.zabasearch.ZabaSearchReverseLookup;
@@ -41,17 +39,13 @@ public abstract class ReverseLookup {
if (INSTANCE == null || !isInstance(provider)) {
Log.d(TAG, "Chosen reverse lookup provider: " + provider);
- if (provider.equals(LookupSettings.RLP_OPENCNAM)) {
- INSTANCE = new OpenCnamReverseLookup(context);
- } else if (provider.equals(LookupSettings.RLP_YELLOWPAGES)
+ if (provider.equals(LookupSettings.RLP_YELLOWPAGES)
|| provider.equals(LookupSettings.RLP_YELLOWPAGES_CA)) {
INSTANCE = new YellowPagesReverseLookup(context, provider);
} else if (provider.equals(LookupSettings.RLP_ZABASEARCH)) {
INSTANCE = new ZabaSearchReverseLookup(context);
} else if (provider.equals(LookupSettings.RLP_DASTELEFONBUCH)) {
INSTANCE = new TelefonbuchReverseLookup(context);
- } else if (provider.equals(LookupSettings.RLP_AUSKUNFT)) {
- INSTANCE = new AuskunftReverseLookup(context);
}
}
@@ -59,10 +53,7 @@ public abstract class ReverseLookup {
}
private static boolean isInstance(String provider) {
- if (provider.equals(LookupSettings.RLP_OPENCNAM)
- && INSTANCE instanceof OpenCnamReverseLookup) {
- return true;
- } else if ((provider.equals(LookupSettings.RLP_YELLOWPAGES)
+ if ((provider.equals(LookupSettings.RLP_YELLOWPAGES)
|| provider.equals(LookupSettings.RLP_YELLOWPAGES_CA))
&& INSTANCE instanceof YellowPagesReverseLookup) {
return true;
@@ -72,9 +63,6 @@ public abstract class ReverseLookup {
} else if (provider.equals(LookupSettings.RLP_DASTELEFONBUCH)
&& INSTANCE instanceof TelefonbuchReverseLookup) {
return true;
- } else if (provider.equals(LookupSettings.RLP_AUSKUNFT)
- && INSTANCE instanceof AuskunftReverseLookup) {
- return true;
} else {
return false;
}
diff --git a/java/com/android/dialer/lookup/auskunft/AuskunftApi.java b/java/com/android/dialer/lookup/auskunft/AuskunftApi.java
deleted file mode 100644
index 5b6b2512c584fa66e502f0255261d2ca1f20c4b0..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/lookup/auskunft/AuskunftApi.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * Copyright (c) 2015, The CyanogenMod 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.
- */
-
-package com.android.dialer.lookup.auskunft;
-
-import android.content.Context;
-import android.net.Uri;
-import android.util.Log;
-
-import com.android.dialer.lookup.LookupUtils;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public final class AuskunftApi {
- private static final String TAG = AuskunftApi.class.getSimpleName();
-
- private static final String PEOPLE_LOOKUP_URL = "https://auskunft.at/suche";
-
- private static final String SEARCH_RESULTS_REGEX =
- "(?i)(.*?)(.*?) query(String filter) throws IOException {
- // build URI
- Uri uri = Uri.parse(PEOPLE_LOOKUP_URL)
- .buildUpon()
- .appendQueryParameter("query", filter)
- .build();
-
- // get all search entry sections
- List entries = LookupUtils.allRegexResults(
- LookupUtils.httpGet(uri.toString(), null), SEARCH_RESULTS_REGEX, true);
-
- // abort lookup if nothing found
- if (entries == null || entries.isEmpty()) {
- Log.w(TAG, "nothing found");
- return null;
- }
-
- // build response by iterating through the search entries and parsing their HTML data
- List infos = new ArrayList();
- for (String entry : entries) {
- // parse wanted data and replace null values
- String name = replaceNullResult(LookupUtils.firstRegexResult(entry, NAME_REGEX, true));
- String address = replaceNullResult(LookupUtils.firstRegexResult(entry, ADDRESS_REGEX, true));
- String number = replaceNullResult(LookupUtils.firstRegexResult(entry, NUMBER_REGEX, true));
- // ignore entry if name or number is empty (should not occur)
- // missing addresses won't be a problem (but do occur)
- if (name.isEmpty() || number.isEmpty()) {
- continue;
- }
-
- ContactInfo info = new ContactInfo();
- info.name = cleanupResult(name);
- info.number = cleanupResult(number);
- info.address = cleanupResult(address);
- info.url = uri.toString();
-
- infos.add(info);
- }
- return infos;
- }
-
- private static String cleanupResult(String result) {
- // get displayable text
- result = LookupUtils.fromHtml(result);
- // replace newlines with spaces
- result = result.replaceAll("\\r|\\n", " ");
- // replace multiple spaces with one
- result = result.replaceAll("\\s+", " ");
- // remove business identifier that is originally not part of the name
- result = result.replace(BUSINESS_IDENTIFIER, "");
- // final trimming
- result = result.trim();
-
- return result;
- }
-
- private static String replaceNullResult(String result) {
- return (result == null) ? "" : result;
- }
-
- static class ContactInfo {
- String name;
- String number;
- String url;
- String address;
- };
-}
diff --git a/java/com/android/dialer/lookup/auskunft/AuskunftPeopleLookup.java b/java/com/android/dialer/lookup/auskunft/AuskunftPeopleLookup.java
deleted file mode 100644
index 6feb1a58f08b6fd54e675f7ac00a23a1f5b45fb6..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/lookup/auskunft/AuskunftPeopleLookup.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Copyright (c) 2015, The CyanogenMod 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.
- */
-
-package com.android.dialer.lookup.auskunft;
-
-import android.content.Context;
-import android.util.Log;
-
-import com.android.dialer.phonenumbercache.ContactInfo;
-import com.android.dialer.lookup.ContactBuilder;
-import com.android.dialer.lookup.PeopleLookup;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class AuskunftPeopleLookup extends PeopleLookup {
- private static final String TAG = AuskunftPeopleLookup.class.getSimpleName();
-
- public AuskunftPeopleLookup(Context context) {
- }
-
- @Override
- public List lookup(Context context, String filter) {
- try {
- List infos = AuskunftApi.query(filter);
- if (infos != null) {
- List result = new ArrayList<>();
- for (AuskunftApi.ContactInfo info : infos) {
- result.add(ContactBuilder.forPeopleLookup(info.number)
- .setName(ContactBuilder.Name.createDisplayName(info.name))
- .addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(info.number))
- .addWebsite(ContactBuilder.WebsiteUrl.createProfile(info.url))
- .addAddress(ContactBuilder.Address.createFormattedHome(info.address))
- .build());
- }
- return result;
- }
- } catch (IOException e) {
- Log.e(TAG, "People lookup failed", e);
- }
- return null;
- }
-}
diff --git a/java/com/android/dialer/lookup/auskunft/AuskunftReverseLookup.java b/java/com/android/dialer/lookup/auskunft/AuskunftReverseLookup.java
deleted file mode 100644
index 6b6f4154317d00e104879bf91e992d09832e41ad..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/lookup/auskunft/AuskunftReverseLookup.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Copyright (c) 2015, The CyanogenMod 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.
- */
-
-package com.android.dialer.lookup.auskunft;
-
-import android.content.Context;
-
-import com.android.dialer.phonenumbercache.ContactInfo;
-import com.android.dialer.lookup.ContactBuilder;
-import com.android.dialer.lookup.ReverseLookup;
-
-import java.io.IOException;
-import java.util.List;
-
-public class AuskunftReverseLookup extends ReverseLookup {
- public AuskunftReverseLookup(Context context) {
- }
-
- @Override
- public ContactInfo lookupNumber(Context context, String normalizedNumber,
- String formattedNumber) throws IOException {
- // only Austrian numbers are supported
- if (normalizedNumber.startsWith("+") && !normalizedNumber.startsWith("+43")) {
- return null;
- }
-
- // query the API and return null if nothing found or general error
- List infos = AuskunftApi.query(normalizedNumber);
- AuskunftApi.ContactInfo info = infos != null && !infos.isEmpty() ? infos.get(0) : null;
- if (info == null) {
- return null;
- }
-
- return ContactBuilder.forReverseLookup(normalizedNumber, formattedNumber)
- .setName(ContactBuilder.Name.createDisplayName(info.name))
- .addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(info.number))
- .addWebsite(ContactBuilder.WebsiteUrl.createProfile(info.url))
- .addAddress(ContactBuilder.Address.createFormattedHome(info.address))
- .build();
- }
-}
diff --git a/java/com/android/dialer/lookup/dastelefonbuch/TelefonbuchApi.java b/java/com/android/dialer/lookup/dastelefonbuch/TelefonbuchApi.java
index ab1eb408516c6aa5099dbba3b9ce58884b462bb7..ee58019a9d13fc169436950535b606f43d770038 100644
--- a/java/com/android/dialer/lookup/dastelefonbuch/TelefonbuchApi.java
+++ b/java/com/android/dialer/lookup/dastelefonbuch/TelefonbuchApi.java
@@ -27,25 +27,27 @@ public class TelefonbuchApi {
private static final String TAG = TelefonbuchApi.class.getSimpleName();
private static final String REVERSE_LOOKUP_URL =
- "https://www.dastelefonbuch.de/?s=a20000" +
- "&cmd=search&sort_ok=0&sp=55&vert_ok=0&aktion=23";
+ "https://www.dastelefonbuch.de/R%C3%BCckw%C3%A4rts-Suche/";
- private static String NAME_REGEX ="\\s*\n?(.*?)\n?\\s*";
- private static String NUMBER_REGEX = ".*(.*?) ";
+ private static String RELEVANT_CONTENT_REGEX =
+ "
(.*)
";
+ private static String NAME_REGEX ="
";
+ private static String NUMBER_REGEX = "";
private static String ADDRESS_REGEX = "\n?(.*?)";
+ private static String WEBSITE_REGEX = ".*
- *
- * 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.
- */
-
-package com.android.dialer.lookup.opencnam;
-
-import android.content.Context;
-import android.net.Uri;
-import android.provider.Settings;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.dialer.phonenumbercache.ContactInfo;
-import com.android.dialer.lookup.ContactBuilder;
-import com.android.dialer.lookup.LookupSettings;
-import com.android.dialer.lookup.LookupUtils;
-import com.android.dialer.lookup.ReverseLookup;
-
-import java.io.IOException;
-
-public class OpenCnamReverseLookup extends ReverseLookup {
- private static final String TAG = OpenCnamReverseLookup.class.getSimpleName();
-
- private static final boolean DEBUG = false;
-
- private static final String LOOKUP_URL = "https://api.opencnam.com/v2/phone/";
-
- /** Query parameters for paid accounts */
- private static final String ACCOUNT_SID = "account_sid";
- private static final String AUTH_TOKEN = "auth_token";
-
- public OpenCnamReverseLookup(Context context) {
- }
-
- /**
- * Perform phone number lookup.
- *
- * @param context The application context
- * @param normalizedNumber The normalized phone number
- * @param formattedNumber The formatted phone number
- * @return The phone number info object
- */
- @Override
- public ContactInfo lookupNumber(Context context,
- String normalizedNumber, String formattedNumber) throws IOException {
- if (normalizedNumber.startsWith("+") && !normalizedNumber.startsWith("+1")) {
- // Any non-US number will return "We currently accept only US numbers"
- return null;
- }
-
- String displayName = httpGetRequest(context, normalizedNumber);
- if (DEBUG) Log.d(TAG, "Reverse lookup returned name: " + displayName);
-
- // Check displayName. The free tier of the service will return the
- // following for some numbers:
- // "CNAM for phone "NORMALIZED" is currently unavailable for Hobbyist Tier users."
-
- if (displayName.contains("Hobbyist Tier")) {
- return null;
- }
-
- String number = formattedNumber != null ? formattedNumber : normalizedNumber;
-
- return ContactBuilder.forReverseLookup(normalizedNumber, formattedNumber)
- .setName(ContactBuilder.Name.createDisplayName(displayName))
- .addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(number))
- .setPhotoUri(ContactBuilder.PHOTO_URI_BUSINESS)
- .build();
- }
-
- private String httpGetRequest(Context context, String number) throws IOException {
- Uri.Builder builder = Uri.parse(LOOKUP_URL + number).buildUpon();
-
- // Paid account
- String accountSid = LookupSettings.getOpenCnamAccountSid(context);
- String authToken = LookupSettings.getOpenCnamAuthToken(context);
-
- if (!TextUtils.isEmpty(accountSid) && !TextUtils.isEmpty(authToken)) {
- Log.d(TAG, "Using paid account");
-
- builder.appendQueryParameter(ACCOUNT_SID, accountSid);
- builder.appendQueryParameter(AUTH_TOKEN, authToken);
- }
-
- return LookupUtils.httpGet(builder.build().toString(), null);
- }
-}
diff --git a/java/com/android/dialer/lookup/openstreetmap/OpenStreetMapForwardLookup.java b/java/com/android/dialer/lookup/openstreetmap/OpenStreetMapForwardLookup.java
index 4482e6043de6f066b9a8fc6b87b089d01a5ae3b1..6d3a92d7c296d76c6cc24a9016fa49dce4851474 100644
--- a/java/com/android/dialer/lookup/openstreetmap/OpenStreetMapForwardLookup.java
+++ b/java/com/android/dialer/lookup/openstreetmap/OpenStreetMapForwardLookup.java
@@ -48,7 +48,7 @@ public class OpenStreetMapForwardLookup extends ForwardLookup {
/** Query URL */
private static final String LOOKUP_URL = "https://overpass-api.de/api/interpreter";
private static final String LOOKUP_QUERY =
- "[out:json];node[name~\"%s\"][phone](around:%d,%f,%f);out body;";
+ "[out:json];node[name~\"%s\",i][phone](around:%d,%f,%f);out body;";
private static final String RESULT_ELEMENTS = "elements";
private static final String RESULT_TAGS = "tags";
@@ -65,15 +65,7 @@ public class OpenStreetMapForwardLookup extends ForwardLookup {
@Override
public List lookup(Context context, String filter, Location lastLocation) {
- // The OSM API doesn't support case-insentive searches, but does
- // support regular expressions.
- String regex = "";
- for (int i = 0; i < filter.length(); i++) {
- char c = filter.charAt(i);
- regex += "[" + Character.toUpperCase(c) + Character.toLowerCase(c) + "]";
- }
-
- String request = String.format(Locale.ENGLISH, LOOKUP_QUERY, regex,
+ String request = String.format(Locale.ENGLISH, LOOKUP_QUERY, filter,
RADIUS, lastLocation.getLatitude(), lastLocation.getLongitude());
try {
diff --git a/java/com/android/dialer/lookup/res/drawable-hdpi/ic_places_picture_holo_light.png b/java/com/android/dialer/lookup/res/drawable-hdpi/ic_places_picture_holo_light.png
deleted file mode 100644
index f70e8e711155f7ee77fc2b3fc42e1e62f059720f..0000000000000000000000000000000000000000
Binary files a/java/com/android/dialer/lookup/res/drawable-hdpi/ic_places_picture_holo_light.png and /dev/null differ
diff --git a/java/com/android/dialer/lookup/res/drawable-xhdpi/ic_places_picture_holo_light.png b/java/com/android/dialer/lookup/res/drawable-xhdpi/ic_places_picture_holo_light.png
deleted file mode 100644
index 7c92a6030c376ce8947d96c278b6c6c157eee92c..0000000000000000000000000000000000000000
Binary files a/java/com/android/dialer/lookup/res/drawable-xhdpi/ic_places_picture_holo_light.png and /dev/null differ
diff --git a/java/com/android/dialer/lookup/res/drawable-xxhdpi/ic_places_picture_holo_light.png b/java/com/android/dialer/lookup/res/drawable-xxhdpi/ic_places_picture_holo_light.png
deleted file mode 100644
index 43029bd81bf60c5a9fe13432d0955531f842c9bb..0000000000000000000000000000000000000000
Binary files a/java/com/android/dialer/lookup/res/drawable-xxhdpi/ic_places_picture_holo_light.png and /dev/null differ
diff --git a/java/com/android/dialer/lookup/res/values-ar/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ar/cm_strings.xml
index d113a49d7b85fda363ccd3e7166a47bf469c26d3..1d271c8a6142d768b3f6ab0eeaec3e16c203a8fb 100644
--- a/java/com/android/dialer/lookup/res/values-ar/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-ar/cm_strings.xml
@@ -16,16 +16,12 @@
-->
الأماكن القريبة
- الناسالبحث عن رقم الهاتفالبحث الأماميإظهر الأماكن القريبة عند البحث في الهاتف
- بحث عن أشخاص
- إظهار نتائج عبر الإنترنت للناس عند البحث في الهاتفبحث عكسيالبحث عن معلومات حول شخص أو مكان للأرقام غير المعروفة في المكالمات الواردةموفر البحث الأمامي
- موفر البحث عن الأشخاصموفر البحث العكسيقد ترسل عمليات البحث استعلامات عبر بروتوكول آمن (https) إلى مواقع ويب بعيدة لجمع المعلومات. قد يتضمن الاستعلام رقم هاتف الطرف الآخر أو استعلام البحث
diff --git a/java/com/android/dialer/lookup/res/values-ast-rES/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ast-rES/cm_strings.xml
index 08c867f950fffa7caac03eda69a804923165d793..aa21386714f893eb4039bc518526b3ac306b212e 100644
--- a/java/com/android/dialer/lookup/res/values-ast-rES/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-ast-rES/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Llugares cercanos
- PersonesBusca de númberos de teléfonuBusca direutaAmuesa los llugares cercanos al buscar nel marcador
- Busca de persones
- Amuesa los resultaos en llinia de les persones al buscar nel marcadorBusca inversaBusca la información tocante a la persona o\'l llugar de les llamaes entrantes con númberos desconocíosFornidor de busques direutes
- Fornidor de busca de personesFornidor de busques inversesLes busques puen unviar solicitúes per un protocolu seguru (https) a sitios web remotos p\'atropar información. La consulta pue incluyir el númberu de teléfonu del otru llamador o la consulta de busca
diff --git a/java/com/android/dialer/lookup/res/values-az/cm_strings.xml b/java/com/android/dialer/lookup/res/values-az/cm_strings.xml
index 5f89382869893e4f62d5f19402042d1eb0a613a5..1006855e0a7ae505d35d63a6cedb6554273a80e8 100644
--- a/java/com/android/dialer/lookup/res/values-az/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-az/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Yaxınlıqdakı məkanlar
- İnsanlarTelefon nömrəsi axtarYönləndirmə axtarışıNömrə yığımında axtarış edərkən yaxın məkanları göstər
- Şəxs axtarışı
- Nömrə yığımında axtarış edərkən şəxslər üçün xətdə nəticələrini göstərGeri axtarışGələn zənglərdə bilinməyən nömrələr üçün şəxs və ya yer haqqında məlumat axtarAxtarış yönləndirmə provayderi
- Şəxs axtarış provayderiTərs axtarış provayderiAxtarışlar, məlumat yığmaq üçün uzaq veb saytlara təhlükəsiz bir protokol (https) üzərindən sorğu göndərə bilər. Sorğu, digər tərəflərin telefon nömrəsini və ya axtarış sorğusunu ehtiva edə bilər.
diff --git a/java/com/android/dialer/lookup/res/values-be/cm_strings.xml b/java/com/android/dialer/lookup/res/values-be/cm_strings.xml
index 0f6356383bd9ed8e0ae12e9c0db7bebf0969d83c..e4916dc61f9da16d812cf75b9d68a9eae106a61c 100644
--- a/java/com/android/dialer/lookup/res/values-be/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-be/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Месцы побач
- ЛюдзіПошук нумара тэлефонаПрамы пошукПаказваць месцы побач пры пошуку ў нумаранабіральніку
- Пошук людзей
- Паказваць вынікі з сеткі пры пошуку людзей у нумаранабіральнікуЗваротны пошукПошук інфармацыі пра асобу або месца для ўваходных з невядомых нумароўПастаўшчык прамога пошуку
- Пастаўшчык пошуку даных пра людзейПастаўшчык зваротнага пошукуПры пошуку пэўнай інфармацыі запыты адпраўляюцца праз абаронены пратакол (https) на аддаленыя вэб-сайты для збору інфармацыі. Запыт можа ўключаць тэлефонны нумар іншай асобы або пошукавы запыт
diff --git a/java/com/android/dialer/lookup/res/values-bg/cm_strings.xml b/java/com/android/dialer/lookup/res/values-bg/cm_strings.xml
index 865e257e978b2ef4875a94754fe3e6921728f251..5ca8b73c4363ff60bf30ba78baa84de8d5fe9495 100644
--- a/java/com/android/dialer/lookup/res/values-bg/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-bg/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Места наблизо
- ХораТърсене на телефонен номерТърсене напредПокажи местата в близост, при търсене в указателя
- Търсене на хора
- Покажи онлайн резултати за хора, при търсене в указателяОбратно търсенеТърсене на информация за човек или място за непознати номера при входящи обажданияДоставчик на информация
- Доставчик на информация за хораДоставчик на информация при обратно търсенеТърсенето може да изпраща заявки през защитен протокол (https) до отдалечени уеб сайтове, за да събира информация. Искането на другата страна може да включва телефонен номер или заявка за търсене
diff --git a/java/com/android/dialer/lookup/res/values-ca/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ca/cm_strings.xml
index 7372cdf4336b729ce0b1d3aeef6db75f9513859a..72742b6f33bd3fff5d137c2932eb88e0ca1b74b6 100644
--- a/java/com/android/dialer/lookup/res/values-ca/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-ca/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Llocs propers
- PersonesCerca de número de telèfonCerca directaMostra resultats de llocs propers quan es busqui al marcador
- Cerca de persones
- Mostra resultats en línia per a les persones en buscar al marcadorCerca inversaBusca informació sobre la persona o lloc per a números desconeguts en les trucades entrantsProveïdor de cerca directa
- Proveïdor de cerca de personesProveïdor de cerca inversaLes cerques poden enviar consultes a través d\'un protocol segur (https) a llocs web remots per recopilar informació. La consulta pot incloure el número de telèfon de l\'altra part o la consulta de cerca
diff --git a/java/com/android/dialer/lookup/res/values-cs/cm_strings.xml b/java/com/android/dialer/lookup/res/values-cs/cm_strings.xml
index 4ea509e7b2d3efc15b209f6bddecae6fe7269212..131a0b0bed4fff66a278f3d83b32983e4f15245e 100644
--- a/java/com/android/dialer/lookup/res/values-cs/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-cs/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Blízká místa
- LidéVyhledávání telefonního číslaPředběžné vyhledáváníZobrazit blízká místa při vyhledávání v číselníku
- Vyhledávání lidí
- Zobrazit výsledky lidí online při vyhledávání v číselníkuZpětné vyhledáváníVyhledávání informací o osobě nebo místě pro neznámá čísla při příchozím hovoruPoskytovatel předběžného vyhledávání
- Poskytovatel vyhledávání osobPoskytovatel zpětného vyhledáváníVyhledávání může odesílat dotazy přes zabezpečený protokol (https) na vzdálené webové stránky pro získání informací. Dotaz může obsahovat telefonní číslo druhé strany nebo vyhledávací dotaz
diff --git a/java/com/android/dialer/lookup/res/values-cy/cm_strings.xml b/java/com/android/dialer/lookup/res/values-cy/cm_strings.xml
index 48b03f3a313492d36054e70bc88f7037f5f25435..72076e1eb756f12aa41b8543a14e9562bd426d10 100644
--- a/java/com/android/dialer/lookup/res/values-cy/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-cy/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Lleoedd cyfagos
- PobolChwilio rhif ffônChwiliad dargyfeiriadDangos llefydd gerllaw wrth chwilio yn y deialydd
- Chwilio pobol
- Dangos canlyniadau ar-lein wrth chwilio am bobol yn y deialyddChwiliad croesChwilio am wybodaeth am y person neu leoliad rhifau anhysbys sy\'n dy alwDarparydd chwiliad dargyfeiriad
- Darparydd chwiliad pobolDarparydd chwiliad croesGall chwiliadau anfon ymholiadau dros brotocol diogel (https) at wefannau pell i gasglu gwybodaeth. Gall yr ymholiad gynnwys rhif ffôn y parti arall neu\'r term chwilio.
diff --git a/java/com/android/dialer/lookup/res/values-da/cm_strings.xml b/java/com/android/dialer/lookup/res/values-da/cm_strings.xml
index 91cbb82ec950fe1978267db832e42861244dcf96..d4f7a6a0048eae8e417b0bc989da0d50c7d44b0f 100644
--- a/java/com/android/dialer/lookup/res/values-da/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-da/cm_strings.xml
@@ -16,12 +16,9 @@
-->
Steder tæt på
- FolkSlå telefonnummer opSlå telefonnummer op, når du ringerVis nærliggende steder, ved søgning i telefonen
- Slå folk op
- Vis online-resultater for folk, ved søgning i telefonenSlå telefonnummer op, når du modtager opkaldSlå information op om personen, eller stedet, for ukendte numre, ved indgående opkald
diff --git a/java/com/android/dialer/lookup/res/values-de/cm_strings.xml b/java/com/android/dialer/lookup/res/values-de/cm_strings.xml
index 82444d2a00000af9e7e8f7d10e502315b3acdb6b..f1f590763d9251053f8070cd41a170d6664f29b7 100644
--- a/java/com/android/dialer/lookup/res/values-de/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-de/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Orte in der Nähe
- PersonenTelefonnummernsucheVorwärtssucheBei der Telefonnummernsuche Orte in der Nähe einschließen
- Personensuche
- Bei der Telefonnummernsuche Onlineergebnisse für Personen anzeigenRückwärtssucheBei eingehenden Anrufen von unbekannten Nummern Informationen über die Person oder den Ort suchenDienst für Vorwärtssuche
- Dienst für PersonensucheDienst für RückwärtssucheSuchen können Abfragen an Remote-Websites über ein sicheres Protokoll (https) senden, um Informationen zu sammeln. Die Abfrage kann die Telefonnummer des anderen Teilnehmers oder die Suchanfrage enthalten
diff --git a/java/com/android/dialer/lookup/res/values-el/cm_strings.xml b/java/com/android/dialer/lookup/res/values-el/cm_strings.xml
index 4e28a3768c03000f2484b9a09c88b5f50fd7ab55..6934652ab4e5cd14c1603bb5d6fafbe66240640d 100644
--- a/java/com/android/dialer/lookup/res/values-el/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-el/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Κοντινές τοποθεσίες
- ΆτομαΑναζήτηση τηλεφωνικού αριθμούΚανονική αναζήτησηΕμφάνιση κοντινών τοποθεσιών κατά την αναζήτηση στην εφαρμογή τηλεφώνου
- Αναζήτηση ατόμων
- Εμφάνιση online αποτελεσμάτων για τα άτομα κατά την αναζήτηση στην εφαρμογή τηλεφώνουΑντίστροφη αναζήτησηΑναζήτηση πληροφοριών σχετικά με το άτομο ή την τοποθεσία για άγνωστους αριθμούς στις εισερχόμενες κλήσειςΠάροχος κανονικής αναζήτησης
- Πάροχος αναζήτησης ατόμωνΠάροχος αντίστροφης αναζήτησηςΟι αναζητήσεις ενδέχεται να στέλνουν ερωτήματα μέσω ενός ασφαλούς πρωτοκόλλου (https) σε απομακρυσμένους ιστότοπους για τη συλλογή πληροφοριών. Το ερώτημα ενδέχεται να περιλαμβάνει τον αριθμό τηλεφώνου του άλλου μέρους ή το ερώτημα αναζήτησης
diff --git a/java/com/android/dialer/lookup/res/values-en-rAU/cm_strings.xml b/java/com/android/dialer/lookup/res/values-en-rAU/cm_strings.xml
index 4c8383ef13d59196b4888c0db3a14e88e7bf6369..eece59933e5f1641f34d0581ebe2b2d57e8ad700 100644
--- a/java/com/android/dialer/lookup/res/values-en-rAU/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-en-rAU/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Nearby places
- PeoplePhone number lookupForward lookupShow nearby places when searching in the dialler
- People lookup
- Show online results for people when searching in the diallerReverse lookupLook up information about the person or place for unknown numbers on incoming callsForward lookup provider
- People lookup providerReverse lookup providerLookups may send queries over a secure protocol (https) to remote websites to gather information. The query may include the other party\'s phone number or the search query
diff --git a/java/com/android/dialer/lookup/res/values-en-rCA/cm_strings.xml b/java/com/android/dialer/lookup/res/values-en-rCA/cm_strings.xml
index 4c8383ef13d59196b4888c0db3a14e88e7bf6369..eece59933e5f1641f34d0581ebe2b2d57e8ad700 100644
--- a/java/com/android/dialer/lookup/res/values-en-rCA/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-en-rCA/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Nearby places
- PeoplePhone number lookupForward lookupShow nearby places when searching in the dialler
- People lookup
- Show online results for people when searching in the diallerReverse lookupLook up information about the person or place for unknown numbers on incoming callsForward lookup provider
- People lookup providerReverse lookup providerLookups may send queries over a secure protocol (https) to remote websites to gather information. The query may include the other party\'s phone number or the search query
diff --git a/java/com/android/dialer/lookup/res/values-en-rGB/cm_strings.xml b/java/com/android/dialer/lookup/res/values-en-rGB/cm_strings.xml
index 4c8383ef13d59196b4888c0db3a14e88e7bf6369..eece59933e5f1641f34d0581ebe2b2d57e8ad700 100644
--- a/java/com/android/dialer/lookup/res/values-en-rGB/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-en-rGB/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Nearby places
- PeoplePhone number lookupForward lookupShow nearby places when searching in the dialler
- People lookup
- Show online results for people when searching in the diallerReverse lookupLook up information about the person or place for unknown numbers on incoming callsForward lookup provider
- People lookup providerReverse lookup providerLookups may send queries over a secure protocol (https) to remote websites to gather information. The query may include the other party\'s phone number or the search query
diff --git a/java/com/android/dialer/lookup/res/values-en-rIN/cm_strings.xml b/java/com/android/dialer/lookup/res/values-en-rIN/cm_strings.xml
index 4c8383ef13d59196b4888c0db3a14e88e7bf6369..eece59933e5f1641f34d0581ebe2b2d57e8ad700 100644
--- a/java/com/android/dialer/lookup/res/values-en-rIN/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-en-rIN/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Nearby places
- PeoplePhone number lookupForward lookupShow nearby places when searching in the dialler
- People lookup
- Show online results for people when searching in the diallerReverse lookupLook up information about the person or place for unknown numbers on incoming callsForward lookup provider
- People lookup providerReverse lookup providerLookups may send queries over a secure protocol (https) to remote websites to gather information. The query may include the other party\'s phone number or the search query
diff --git a/java/com/android/dialer/lookup/res/values-es-rUS/cm_strings.xml b/java/com/android/dialer/lookup/res/values-es-rUS/cm_strings.xml
index e881a907631fefe86f0ced5fce04ef8893263299..f801af828be6b4943eb8d879a3d077f7f194744c 100644
--- a/java/com/android/dialer/lookup/res/values-es-rUS/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-es-rUS/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Lugares cercanos
- PersonasBúsqueda de números telefónicosBúsqueda directaMostrar lugares cercanos al buscar en el marcador
- Búsqueda de personas
- Mostrar resultados en línea para personas al buscar en el marcadorBúsqueda inversaBuscar información sobre la persona o lugar para números desconocidos en llamadas entrantesProveedor de búsqueda directa
- Proveedor de búsqueda de personasProveedor de búsqueda inversaLas búsquedas pueden enviar consultas sobre un protocolo seguro (https) a sitios web remotos para recopilar información. La consulta puede incluir el número de teléfono de la contraparte o la consulta de búsqueda
diff --git a/java/com/android/dialer/lookup/res/values-es/cm_strings.xml b/java/com/android/dialer/lookup/res/values-es/cm_strings.xml
index 141d5c6059f57515a81863da9ec23c65b46a4f0d..05300a522511d5c78640bd3c74092dc457ed8a4e 100644
--- a/java/com/android/dialer/lookup/res/values-es/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-es/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Lugares cercanos
- PersonasBúsqueda de número telefónicoBúsqueda directaMostrar lugares cercanos al buscar en el marcador
- Búsqueda de personas
- Mostrar resultados en línea de personas al buscar en el marcadorBúsqueda inversaBuscar información sobre la persona o lugar para números desconocidos en las llamadas entrantesProveedor de búsqueda directa
- Proveedor de búsqueda de personasProveedor de búsqueda inversaLas búsquedas pueden enviar consultas a través de un protocolo seguro (https) a sitios web remotos para recopilar información. La consulta puede incluir el número de teléfono de la otra parte o la consulta de búsqueda
diff --git a/java/com/android/dialer/lookup/res/values-et/cm_strings.xml b/java/com/android/dialer/lookup/res/values-et/cm_strings.xml
index b7b43b9aed6bdb978b2816a8cc4a75701bf8dfe2..a663e22089fd430fd043fd3769c298a3a069e7d3 100644
--- a/java/com/android/dialer/lookup/res/values-et/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-et/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Lähedal asuvad kohad
- InimesedNumbriotsingEdasine otsingNäita helistajast otsides lähedal asuvaid kohti
- Inimeste otsing
- Näita helistajast inimesi otsides võrgutulemusiPöördotsingOtsi teavet isiku või koha kohta, kui kõne tuleb tundmatult numbriltOtsingupakkuja
- Inimeste otsingupakkujaPöördotsingu pakkujaOtsingud võivad info hankimiseks saata välistele saitidele päringuid üle turvalise protokolli (HTTPS). Päring võib sisaldada teise osapoole telefoninumbrit või otsingusõna
diff --git a/java/com/android/dialer/lookup/res/values-eu/cm_strings.xml b/java/com/android/dialer/lookup/res/values-eu/cm_strings.xml
index 439a1068858904ac58d567c70c7e847512f4cbda..87a08ace73e75e1594cf839d776a46cd4d6537ba 100644
--- a/java/com/android/dialer/lookup/res/values-eu/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-eu/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Inguruko tokiak
- JendeaTelefono zenbakien bilaketaTokien bilaketaErakutsi inguruko tokiak markatzailean bilatzean
- Pertsonen bilaketa
- Erakutsi sareko emaitzak pertsonak markatzailean bilatzeanBilaketa alderantzikatuaBilatu pertsona edo lekuko informazioa zenbaki ezezagunen deientzakoTokien bilaketarako hornitzailea
- Pertsonen bilaketarako hornitzaileaBilaketa alderantzikatuaren hornitzaileaBilaketek protokolo seguru baten bidez (https) galderak bidali ditzakete urruneko webguneetara informazio bila. Galderek beste partearen telefono zenbakia eraman dezakete
diff --git a/java/com/android/dialer/lookup/res/values-fi/cm_strings.xml b/java/com/android/dialer/lookup/res/values-fi/cm_strings.xml
index 71ab5b772f31d8fa4091f74106466d7abf5931e0..a4f8736bece8ecc4365a3efe6b38cece081efcdc 100644
--- a/java/com/android/dialer/lookup/res/values-fi/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-fi/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Lähellä olevat sijainnit
- IhmisetPuhelinnumeron hakuPaikkahaku
- Näytä lähistöllä olevat paikat, kun etsitään numeronvalitsimella
- Henkilöhaku
- Näytä internet-tulokset ihmisistä kun etsitään numeronvalitsimessa
+ Näytä puhelusovelluksen haussa läheisiä sijaintejaKäänteinen hakuEtsi tuntemattomasta numerosta soittavan henkilön tai paikan tietoja tulevissa puheluissaPaikkahauntarjoaja
- Henkilön haun tarjoajaKäänteisen haun tarjoajaHaku voi lähettää kyselyjä suojatun protokollan (https) kautta etäsivustoille tietojen keräämiseksi. Kysely voi sisältää toisen osapuolen puhelinnumeron tai hakukyselyn
diff --git a/java/com/android/dialer/lookup/res/values-fr/cm_strings.xml b/java/com/android/dialer/lookup/res/values-fr/cm_strings.xml
index 281bdf3bd99092fe56968c76810997f8ae6b6532..9a468dea3f7306a16650aacdac10c07f9ca35a18 100644
--- a/java/com/android/dialer/lookup/res/values-fr/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-fr/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Lieux à proximité
- PersonnesRecherche de numéro de téléphoneRecherche directeAfficher les lieux à proximité lors d\'une recherche à l\'aide du clavier
- Recherche de personnes
- Afficher les résultats en ligne lors d\'une recherche de personnes à l\'aide du clavierRecherche inverséeRechercher des informations sur la personne ou sur le lieu lors d\'un appel entrant en provenance d\'un numéro inconnuMoteur de recherche directe
- Moteur de recherche sur les appelantsMoteur de recherche inverséeLorsque vous effectuez des recherches, des requêtes sont susceptibles d\'être envoyées à des sites distants via un protocole sécurisé (https) pour recueillir des informations. Elles peuvent inclure le numéro de téléphone d\'un tiers ou la requête de recherche.
diff --git a/java/com/android/dialer/lookup/res/values-fur-rIT/cm_strings.xml b/java/com/android/dialer/lookup/res/values-fur-rIT/cm_strings.xml
index e94355f1ae2ec11bf1ed16026e643276ed46fb78..7cb403f5e644d032cbeffd6462c44ef804a416e5 100644
--- a/java/com/android/dialer/lookup/res/values-fur-rIT/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-fur-rIT/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Puescj tai contors
- PersonisRicercje numars telefonicsRicercje direteMostre lûcs tai contors te ricercje cul tastierin telefonic
- Ricercje personis
- Mostre i risultâts in linie te ricercje cul tastierin telefonicRicercje contrarieCîr informazions su la persone o il puest pai numars no cognossûts des clamadis in jentradeFurnidôr servizi di ricercje direte
- Furnidôr servizi di ricercje di personisFurnidôr servizi di ricercje contrarieAl è pussibil che lis ricercjis a mandedin interogazions midiant un protocol sigûr (https) a sîts web esternis par tirâ dongje lis informazions necessariis. La interogazion e pues includi il numar di telefon dal interlocutôr o il test de ricercje
diff --git a/java/com/android/dialer/lookup/res/values-fy-rNL/cm_strings.xml b/java/com/android/dialer/lookup/res/values-fy-rNL/cm_strings.xml
index bba21b2558cd3c682a641e6eb50744872d534e0b..78272118903ef6a50562fcc5e8ed1cb9c24aa7ea 100644
--- a/java/com/android/dialer/lookup/res/values-fy-rNL/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-fy-rNL/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Plakken tichteby
- MinskenTelefoannûmer sykjeFoarút sykjePlakken tichteby wylst it sykjen yn de kiezer toane
- Minsken sykje
- Lit online sykresultaten sjen foar minsken wylst it sykjen yn de kiezerOmkeard sykjeYnformaasje oer de persoan of plak sykje by ynkommende oproppen fan ûnbekende nûmersTsjinst om foarút te sykjen
- Oanbieder foar minsken sykjeOanbieder foar omkeard sykjeSykopdrachten kinne gegevens ferstjoere nei eksterne websites fia in befeilige protokol (https) om ynformaasje te sammeljen. De gegevens kinne it telefoannûmer fan de oare partij of de sykopdracht befetsje
diff --git a/java/com/android/dialer/lookup/res/values-gd/cm_strings.xml b/java/com/android/dialer/lookup/res/values-gd/cm_strings.xml
index a5c7961cb89425fb07fae4d02a559186bd503b24..12083035565bf5d5ca92b085e70ca69396bbb8c5 100644
--- a/java/com/android/dialer/lookup/res/values-gd/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-gd/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Àitichean faisg ort
- DaoineRannsachadh àireamhan fònRannsachadh air adhartSeall ionadan am fagas nuair a bhios mi a’ lorg rud san daithealair
- Rannsachadh dhaoine
- Seall toraidhean air loidhne airson daoine nuair a bhios mi a’ lorg rud san daithealairRannsachadh contrarraRannsaich fiosrachadh mun neach no ionad airson àireamh nach aithne dhut nuair a thig gairm a-steachSolaraiche an rannsachaidh air adhart
- Solaraiche an rannsachaidh dhaoineSolaraiche an rannsachaidh chontrarraFaodaidh an rannsachadh ceistean a chur a-null gu làraichean-lìn cèine slighe pròtacail thèarainte (https) airson fiosrachadh a chruinneachadh. Faodaidh a’ cheist gabhail a-steach àireamh fòn an neach eile no a’ cheist rannsachaidh
diff --git a/java/com/android/dialer/lookup/res/values-gl/cm_strings.xml b/java/com/android/dialer/lookup/res/values-gl/cm_strings.xml
index abf5327eb676420e1c26aeb618904faca5e33c09..32794dad863b2fa92fcb117e20fa84dd80e3a0a3 100644
--- a/java/com/android/dialer/lookup/res/values-gl/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-gl/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Lugares próximos
- XenteBusca de número de teléfonoBusca directaAmosar lugares próximos ao buscar no dial
- Procura de persoas
- Amosar os resultados da Internet de persoas relacionadas ao procurar no marcadorPorcura inversaProcurar información sobre persoas ou lugares para números descoñecidos nas chamadas entrantesFornecedor de busca avanzada
- Fornecedor de busca de persoasFornecedor de busca inversaAs buscas poden enviar consultas a través dun protocolo seguro (https) a sitios web remotos para recompilar información. A consulta pode incluír o número de teléfono da outra parte ou a consulta de busca
diff --git a/java/com/android/dialer/lookup/res/values-hr/cm_strings.xml b/java/com/android/dialer/lookup/res/values-hr/cm_strings.xml
index 5a25daab083222a4f41dd21af67b1e145d9dc030..d3100bd84377bba3fc17369d44c46f3324137c8a 100644
--- a/java/com/android/dialer/lookup/res/values-hr/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-hr/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Mjesta u blizini
- OsobePretraživanje telefonskih brojevaPretraživanje unaprijedPrikaz obližnjih mjesta prilikom pretraživanja u biraču brojeva
- Pretraživanje ljudi
- Prikaz internetskih rezultata za ljude prilikom pretraživanja u biraču brojevaObrnuto pretraživanjePretraživanje podataka o osobi ili mjestu za nepoznate brojeve kod dolaznih pozivaPružatelj pretraživanja unaprijed
- Pružatelj pretraživanja ljudiPružatelj obrnutog pretraživanjaPretraživanja mogu slati upite putem sigurnog protokola (https) udaljenim web-stranicama da bi prikupila informacije. Upit može uključivati telefonski broj drugog korisnika ili upit za pretraživanje
diff --git a/java/com/android/dialer/lookup/res/values-hu/cm_strings.xml b/java/com/android/dialer/lookup/res/values-hu/cm_strings.xml
index 04e05df94b7d7e1afc03aebf780b80428c663250..4340c0a881572ea59e39db305c3c34a3743c20e0 100644
--- a/java/com/android/dialer/lookup/res/values-hu/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-hu/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Közeli helyek
- EmberekTelefonszám-lekérdezésCímlekérdezésKözeli helyek megjelenítése a tárcsázóban történő kereséskor
- Személy-lekérdezés
- Online eredmények megjelenítése a tárcsázóban történő személykereséskorFordított-lekérdezésSzemély vagy hely információk megjelenítése ismeretlen számról történő bejövő hívás eseténCímlekérdezési szolgáltató
- Személy-lekérdezési szolgáltatóFordított-lekérdezési szolgáltatóA kikeresések lekérdezhetnek egy biztonságos (https) protokollon keresztül távoli webhelyeket az információk összegyűjtésének érdekében. A tudakozódás tartalmazhatja a másik fél telefonszámát vagy lekérdezési keresőkifejezést
diff --git a/java/com/android/dialer/lookup/res/values-in/cm_strings.xml b/java/com/android/dialer/lookup/res/values-in/cm_strings.xml
index 2b923cccc365191fe10760cb56080313fbb87921..a86967142657c76159c829f5e12ca1355abe6022 100644
--- a/java/com/android/dialer/lookup/res/values-in/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-in/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Tempat terdekat
- OrangPenelusuran nomor teleponPenelusuran kedepanTampilkan tempat terdekat ketika mencari di dialer
- Penelusuran orang
- Tampilkan hasil online untuk orang-orang saat melakukan penelusuran pada dialerPenelusuran terbalikMencari informasi tentang orang atau tempat untuk panggilan masuk dari nomor tak diketahuiPenyedia penelusuran kedepan
- Penyedia penelusuran orangPenyedia penelusuran terbalikPencarian dapat mengirimkan pertanyaan melalui protokol aman (https) ke remote website untuk mengumpulkan informasi. Kueri mungkin termasuk nomor telepon pihak lain atau kueri penelusuran
diff --git a/java/com/android/dialer/lookup/res/values-is/cm_strings.xml b/java/com/android/dialer/lookup/res/values-is/cm_strings.xml
index 30b0b92094887a909dc47420ad1b1f1b16f866e3..0fc96b06b00d03bafeca71f982c4316b4d6595ba 100644
--- a/java/com/android/dialer/lookup/res/values-is/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-is/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Nálægir staðir
- FólkUppfletting á símanúmeriLeita áframSýna staði í nágrenninu þegar leitað er á hringiskjá
- Uppfletting á einstaklingum
- Sýna niðustöður af netinu um fólk þegar leitað er á hringiskjáLeita í hina áttinaFlettu upp upplýsingum um einstakling eða stað þegar hringt er úr óþekktum símanúmerumFramvirk uppflettiþjónusta (forward lookup)
- Uppflettiþjónusta fyrir fólkAfturvirk uppflettiþjónusta (reverse lookup)Uppflettingar gætu sent beiðnir í gegnum öruggan samskiptamáta (HTTPS) á fjartengt vefsvæði til að safna upplýsingum. Beiðnir gætu innihaldið símanúmer hins aðilans eða umbeðinn leitarstreng
diff --git a/java/com/android/dialer/lookup/res/values-it/cm_strings.xml b/java/com/android/dialer/lookup/res/values-it/cm_strings.xml
index 944a8f3706fb6ac19e89ed739126a67bdbfde8b7..42dcbf47be73aabc856fc554f429bc5b30beab4a 100644
--- a/java/com/android/dialer/lookup/res/values-it/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-it/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Posti nelle vicinanze
- PersoneRicerca numeri telefoniciRicerca direttaMostra luoghi nelle vicinanze durante la ricerca nel tastierino
- Ricerca persone
- Mostra risultati online durante la ricerca nel tastierinoRicerca inversaCerca informazioni sulla persona o luogo per i numeri sconosciuti delle chiamate in ingressoProvider di ricerca diretta
- Provider di ricerca personeProvider di ricerca inversaLe ricerche potrebbero inviare query tramite un protocollo sicuro (https) a siti web in remoto per raccogliere le informazioni necessarie. La query può includere il numero di telefono del corrispondente o il testo della ricerca
diff --git a/java/com/android/dialer/lookup/res/values-iw/cm_strings.xml b/java/com/android/dialer/lookup/res/values-iw/cm_strings.xml
index f548ade263bf01c60b057b9924c25ea229e0eef0..047984ad890de65272674be0a1b5ca3fb1bf8ab3 100644
--- a/java/com/android/dialer/lookup/res/values-iw/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-iw/cm_strings.xml
@@ -16,16 +16,12 @@
-->
מקומות סמוכים
- אנשיםחיפוש מספר טלפוןחיפוש מקדיםהצג מקומות סמוכים בעת חיפוש בחייגן
- חיפוש אנשים
- הצג תוצאות מהרשת עבור אנשים בעת חיפוש בחייגןחיפוש הפוךחפש מידע אודות אדם או מקום עבור מספרים לא ידועים בשיחות נכנסותספק חיפוש מקדים
- ספק חיפוש אנשיםספק חיפוש הפוךהחיפוש ישלח מידע בפרוטוקול מוצפן (https) לשרת מרוחק לקבלת מידע. השאילתות יכילו את מספר הפלאפון ו\או שאילתות החיפוש
diff --git a/java/com/android/dialer/lookup/res/values-ja/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ja/cm_strings.xml
index 8e619b754e8310422a1aae0698f678fe9f24e700..eda08065ed392adfd73dea2ee10138b4275a5800 100644
--- a/java/com/android/dialer/lookup/res/values-ja/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-ja/cm_strings.xml
@@ -16,16 +16,12 @@
-->
近くの場所
- 人物電話番号検索正引き検索ダイヤル画面で検索しているときに近くの場所を表示します
- 人物を検索
- ダイヤル画面で検索しているときに人物のオンラインの検索結果を表示します逆引き検索着信中の不明な番号の人物または場所の情報を検索します正引き検索のプロバイダー
- 人物検索のプロバイダー逆引き検索のプロバイダーLookups は情報を収集するために、セキュアなプロトコル (https) 上で外部のウェブサイトにクエリを送信する可能性があります。クエリは相手の電話番号や検索クエリを含むことがあります。
diff --git a/java/com/android/dialer/lookup/res/values-ka/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ka/cm_strings.xml
index b8fb3dd079128ff27de6429d0b57d3dc222d1543..bcb77d92aca2daf2e92923c53bfdf2158c7cd14b 100644
--- a/java/com/android/dialer/lookup/res/values-ka/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-ka/cm_strings.xml
@@ -16,16 +16,12 @@
-->
ახლომდებარე ადგილები
- ხალხისატელეფონო ნომრის მონახვაპირდაპირი ძიებაახლომდებარე ადგილების ჩვენება ნომრის ასაკრეფში ძიებისას
- ხალხის მონახვა
- შედეგების ჩვენება ინტერნეტიდან, ხალხის ძიებისას ნომრის ასაკრეფშიშებრუნებული ძიებამონაცემების მოძიება პირის ან ადგილის შესახებ, უცნობი ნომრიდან შემომავალი ზარისასპირდაპირი ძიების მომსახურების მომწოდებელი
- ხალხის შესახებ მონაცემების მომწოდებელიშებრუნებული ძიების მომსახურების მომწოდებელიძიებისას შესაძლოა მოთხოვნები გადაიგზავნოს დაცული კავშირით (https) შესაბამის ვებსაიტებზე, მონაცემების მოსაგროვებლად. მოთხოვნა შეიძლება შეიცავდეს მოსაძიებელი პირის ტელეფონის ნომერს ან საძიებო ფრაზას
diff --git a/java/com/android/dialer/lookup/res/values-kab-rDZ/cm_strings.xml b/java/com/android/dialer/lookup/res/values-kab-rDZ/cm_strings.xml
index 4fc7ec83bf0898d58b15743adea1ee39077a339b..453b344441a4b7462c1a77fa2fcbd0239cc3bdd6 100644
--- a/java/com/android/dialer/lookup/res/values-kab-rDZ/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-kab-rDZ/cm_strings.xml
@@ -16,11 +16,8 @@
-->
Imukan iqerban
- ImdanenAnadi n uṭṭun n tiliɣriAnadi ɣer zdatSken imukan iqerban ticki yettnadi g unasiw
- Anadi n imdanenAnadi n tlɣut ɣef umdan neɣ amkan iεnan uṭṭunen irussinen g sawalen i d-ikecmen
- Amessis n unadi n imdanen
diff --git a/java/com/android/dialer/lookup/res/values-kn/cm_strings.xml b/java/com/android/dialer/lookup/res/values-kn/cm_strings.xml
index cc97c344cebfbd6b833d943fb3a8cfc75d427b1a..58e153c77cd15eec024a5de579fb7d68fc086e7a 100644
--- a/java/com/android/dialer/lookup/res/values-kn/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-kn/cm_strings.xml
@@ -16,16 +16,12 @@
-->
ಸಮೀಪದ ಸ್ಥಳಗಳು
- ಜನರುಫೋನ್ ಸಂಖ್ಯೆ ಹುಡುಕುಮುಂಚಿತ ಮೇಲ್ವಿಚಾರಣೆಕರೆ ಘಟಕದಲ್ಲಿ ಹುಡುಕುವುವಾಗ, ಸಮೀಪದ ಸ್ಥಳಗಳನ್ನು ತೋರಿಸು
- ವ್ಯಕ್ತಿ ಹುಡುಕು
- ಕರೆ ಘಟಕದಲ್ಲಿ ಜನರ ಹುಡುಕಿದಾಗ, ಮಿನ್ಕಾಣ್ಕೆಯ ಉತ್ತರವನ್ನು ತೋರಿಸುಉಲ್ಟ ಹುಡುಕುಆಗಮಿತ ಕರೆಗಳಲ್ಲಿ ಅಪರಿಚಿತ ಸಂಖ್ಯೆಗಳ ವ್ಯಕ್ತಿ ಅಥವ ಸ್ಥಳದ ಬಗ್ಗೆ ಮಾಹಿತಿ ಮೇಲ್ವಿಚಾರಿಸುಮುಂಚಿತ ಮೇಲ್ವಿಚಾರಣೆ ಪರಿಚಾರಕ
- ಜನರ ಹುಡುಕುವ ಪರಿಚಾರಕಉಲ್ಟ ಹುಡುಕುವ ಪರಿಚಾರಕಮೇಲ್ವಿಚಾರಣೆ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸಲು ದೂರದ ಜಾಲತಾಣಗಳಿಗೆ ಸುರಕ್ಷಿತ ಶಿಷ್ಟಾಚಾರ (https) ಬಳಸಿ ಪ್ರಶ್ನೆಗಳನ್ನು ಕಳುಹಿಸಬಹುದು. ಪರಿಚಾರಕ ಪ್ರಶ್ನೆಯಲ್ಲಿ ಇನ್ನೊಬ್ಬ ವ್ಯಕ್ತಿಯ ದೂರವಾಣಿ ಸಂಖ್ಯೆಯನ್ನೂ ಕಳುಹಿಸಬಹುದು
diff --git a/java/com/android/dialer/lookup/res/values-ko/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ko/cm_strings.xml
index a592ec6153ad2ef77ffca2942a15303ec1aae881..bc4e9093bb0a746aa8fa0e548bf31e78bf246921 100644
--- a/java/com/android/dialer/lookup/res/values-ko/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-ko/cm_strings.xml
@@ -16,16 +16,12 @@
-->
주변 장소
- 사람들전화번호 검색순서대로 검색다이얼러에서 검색 시 근처 장소 표시
- 사람 검색
- 다이얼러에서 검색 시 온라인 사람 찾기 결과 표시역방향 검색모르는 번호에서 전화가 오면 연락처나 장소에 대한 정보를 검색정방향 검색 제공자
- 사람 검색 제공자역방향 검색 제공자검색 기능은 정보 수집을 목적으로 https 보안 프로토콜을 사용하여 원격 웹 사이트에 쿼리를 보낼 수 있습니다. 이 쿼리에는 검색어 또는 상대방의 전화번호가 포함될 수 있습니다.
diff --git a/java/com/android/dialer/lookup/res/values-nb/cm_strings.xml b/java/com/android/dialer/lookup/res/values-nb/cm_strings.xml
index 1cd105645f4ae5d7a85721133033f829fd3e7e81..0ec28cfe1818ae556cd8f776f53d40515b17dc2a 100644
--- a/java/com/android/dialer/lookup/res/values-nb/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-nb/cm_strings.xml
@@ -16,15 +16,11 @@
-->
Nærliggende steder
- FolkTelefonnummeroppletingVideresendingsoppletingVis nærliggende steder når du søker i telefonappen
- Oppleting av folk
- Vis nettresultater for folk når du søker i telefonappenOmvendt oppletingSlå opp informasjon om personen eller stedet når det kommer inn en samtale med ukjent nummerTjeneste for oppleting av videresending
- Tjeneste for oppleting av folkTjeneste for omvendt oppleting
diff --git a/java/com/android/dialer/lookup/res/values-nl/cm_strings.xml b/java/com/android/dialer/lookup/res/values-nl/cm_strings.xml
index 64ae49ec8985c5847f57f0601f746c5d059b832e..aa6b15c3058539c0a9581731663ed7b45104fe28 100644
--- a/java/com/android/dialer/lookup/res/values-nl/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-nl/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Nabijgelegen plaatsen
- MensenTelefoonnummer zoekenVooruit zoekenToon nabijgelegen plaatsen in de kiezer tijdens het zoeken
- Mensen zoeken
- Laat online-resultaten zien voor personen tijdens het zoeken in de kiezerOmgekeerd zoekenInformatie over de persoon of plaats opzoeken bij inkomende oproepen van onbekende nummersDienst om vooruit te zoeken
- Personen zoekdienstAanbieder voor omgekeerd zoekenZoekopdrachten kunnen gegevens versturen naar externe websites via een beveiligd protocol (https) om informatie te verzamelen. De gegevens kunnen het telefoonnummer van de andere partij of de zoekopdracht bevatten
diff --git a/java/com/android/dialer/lookup/res/values-pl/cm_strings.xml b/java/com/android/dialer/lookup/res/values-pl/cm_strings.xml
index 5afde1d06b77e508f40af5129118fc5b174147d4..011054ffd80e31457b311a26742c6cbdff88ad3d 100644
--- a/java/com/android/dialer/lookup/res/values-pl/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-pl/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Miejsca w pobliżu
- LudzieWyszukiwanie numeru telefonuWyszukiwanie do przoduPokaż miejsca w pobliżu podczas wyszukiwania w dialerze
- Wyszukiwanie osób
- Pokaż wyniki online dla osób podczas wyszukiwania w dialerzeWyszukiwanie wsteczWyszukaj informacje o osobie lub miejscu dla nieznanych numerów połączeń przychodzącychDostawca wyszukiwania w przód
- Dostawca wyszukiwania osóbDostawca wyszukiwania wsteczWyszukiwania mogą wysyłać zapytania za pomocą protokołu bezpiecznego (https) do zdalnych stron internetowych w celu zbierania informacji. Zapytanie może zawierać numer telefonu lub zapytania wyszukiwania rozmówcy
diff --git a/java/com/android/dialer/lookup/res/values-pt-rBR/cm_strings.xml b/java/com/android/dialer/lookup/res/values-pt-rBR/cm_strings.xml
index 496fb0d792efe9685e06476ced2fcc16965c39e4..4f45fe25942123142cf4f66bae9bd71b66103ec7 100644
--- a/java/com/android/dialer/lookup/res/values-pt-rBR/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-pt-rBR/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Locais próximos
- PessoasPesquisar números de telefonePesquisa de encaminhamentoMostrar lugares próximos ao pesquisar no discador
- Pesquisar pessoas
- Mostrar resultados online para pessoas ao pesquisar no discadorPesquisa inversaProcurar informações sobre a pessoa ou local para números desconhecidos em chamadas recebidasProvedor de pesquisa de encaminhamento
- Provedor de pesquisa de pessoasProvedor de pesquisa inversaAs pesquisas podem enviar consultas usando um protocolo seguro (HTTPS) para obterem informações em sites remotos. A consulta pode incluir o número de telefone da outra pessoa ou o conteúdo da pesquisa
diff --git a/java/com/android/dialer/lookup/res/values-pt-rPT/cm_strings.xml b/java/com/android/dialer/lookup/res/values-pt-rPT/cm_strings.xml
index 7d9885892427601b092c5db67361c5b6d94cc8d3..2103c97c5a463158b40bdcd7789a2dcbff178864 100644
--- a/java/com/android/dialer/lookup/res/values-pt-rPT/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-pt-rPT/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Locais próximos
- PessoasPesquisa de números de telefonePesquisa diretaMostrar locais próximos ao pesquisar no teclado
- Pesquisa de pessoas
- Mostrar resultados on-line para as pessoas ao pesquisar no tecladoPesquisa inversaProcurar informações sobre a pessoa ou local para números desconhecidos de chamadas recebidasFornecedor de pesquisa direta
- Fornecedor de pesquisa de pessoasFornecedor de pesquisa inversaAs pesquisas podem enviar consultas através de um protocolo seguro (https) para sites remotos de forma a conseguirem informações. A consulta pode incluir o número de telefone da outra pessoa ou o conteúdo da pesquisa
diff --git a/java/com/android/dialer/lookup/res/values-ro/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ro/cm_strings.xml
index 3a4a2630bbab14b0243d4705943def579a48b3dc..7186e04c0c3395bffa5a015b3c92924e5fabf4fd 100644
--- a/java/com/android/dialer/lookup/res/values-ro/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-ro/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Locații în apropiere
- PersoaneCăutare număr de telefonCăutare redirecționatăArată locațiile din apropiere când se caută în telefon
- Căutare persoane
- Arată rezultatele online pentru persoane când caut în telefonCăutare inversăCaută informații despre persoană sau locație pentru numerele necunoscute la primirea apelurilorFurnizor de căutare redirecționată
- Furnizor de căutare a persoanelorFurnizor de căutare inversăCăutările pot trimite interogări peste un protocol securizat (https) la site-uri web de la distanță pentru a colecta informaţii. Interogarea poate include numărul de telefon al celeilalte părţi sau interogarea căutării
diff --git a/java/com/android/dialer/lookup/res/values-ru/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ru/cm_strings.xml
index c3a30ca29bc2eb268a0eeadab93f7c1b6fd56b62..b9ba62b5008e87d6de35cd0d8f93dbaf9684b3de 100644
--- a/java/com/android/dialer/lookup/res/values-ru/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-ru/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Места рядом
- ЛюдиПоиск номеров телефонаПрямой поискПоказывать ближайшие организации при поиске в номеронабирателе
- Поиск контактов
- Показывать результаты из сети при поиске людей через номеронабирательОбратный поискПоиск информации о человеке или месте для входящих с неизвестных номеровПровайдер прямого поиска
- Провайдер поиска данных о людяхПровайдер обратного поискаДля сбора информации поисковые запросы могут передаваться на удаленные веб-сайты по защищенному протоколу (https). Запрос может включать телефонный номер другой стороны или поисковый запрос
diff --git a/java/com/android/dialer/lookup/res/values-sk/cm_strings.xml b/java/com/android/dialer/lookup/res/values-sk/cm_strings.xml
index 0030c3a99243cf1e8485c3ecaa14ed3d862164bb..352e8cd70fd3d99434d30c6cfa8e9a2890c57d5c 100644
--- a/java/com/android/dialer/lookup/res/values-sk/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-sk/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Miesta v blízkosti
- ĽudiaVyhľadávanie telefónneho číslaVyhľadávanie vpredZobraziť miesta v blízkosti pri vyhľadávaní v číselníku
- Vyhľadávanie ľudí
- Zobraziť výsledky ľudí pri vyhľadávaní v číselníkuSpätné vyhľadávanieVyhľadať informácie o osobe alebo mieste pre neznáme čísla u prichádzajúcich hovorovPoskytovateľ vyhľadávania vpred
- Poskytovateľ pre vyhľadávanie ľudíPoskytovateľ pre spätné vyhľadávanieVyhľadávanie môže posielať informácie prostredníctvom zabezpečeného protokolu (https) na vzdialené webové stránky. Dopyt môže obsahovať telefónne číslo druhej strany alebo vyhľadávací dopyt
diff --git a/java/com/android/dialer/lookup/res/values-sl/cm_strings.xml b/java/com/android/dialer/lookup/res/values-sl/cm_strings.xml
index b677ab5a5a466e2c1a89850601a0be7ac9481557..1f6435cd7f70a4a0d65f9aa7a6a3dc40a1b98aed 100644
--- a/java/com/android/dialer/lookup/res/values-sl/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-sl/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Bližnja mesta
- OsebeIskanje za telefonsko številkoPosredujoče iskanjePrikaži bližnja mesta med iskanjem v klicalniku
- Iskanje za osebami
- Prikaži spletne rezultate za osebe med iskanjem v klicalnikuObratno iskanjePoišči podatke o osebi ali mestu za neznane številke med dohodnimi kliciPonudnik posredujočega iskanja
- Ponudnik iskanja za osebamiPonudnik obratnega iskanjaIskanja lahko pošiljajo poizvedbe prek varnega protokola (https) oddaljenim spletnim stranem za zbiranje podatkov. Poizvedba lahko vključuje telefonsko številko druge osebe ali poizvedbo iskanja
diff --git a/java/com/android/dialer/lookup/res/values-sq/cm_strings.xml b/java/com/android/dialer/lookup/res/values-sq/cm_strings.xml
index 153d36897491183d5ca5a2353620a6aa99f8a66c..14c1d5d51025dd727dacb72614e06ab49988ad74 100644
--- a/java/com/android/dialer/lookup/res/values-sq/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-sq/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Vendet përreth
- PersonaKërkim në numratorKërkim në përparësiShfaq vendet përreth kur kërkon me tastierë
- Kërko persona
- Shfaq rezultate online për persona kur kërkon me tastierëKërkim i anasjelltëKërkon informacion për personin ose origjinën e numrave të panjohur qe telefonojnëOfruesi i shërbimit të kërkimit të hershëm
- Ofruesi për kërkimet e personaveOfruesi i shërbimit të kërkimit të anasjelltëKërkimet mund të dërgojnë pyetje mbi protokolle të sigurta (https) drejt faqeve të tjera për të marë informacion. Kjo kërkesë mund të përfshijë numrin e personit tjetër ose pse kërkohet
diff --git a/java/com/android/dialer/lookup/res/values-sr/cm_strings.xml b/java/com/android/dialer/lookup/res/values-sr/cm_strings.xml
index 6b81d1d9b08602782b920d00fea60339b60008ba..bc6b4fe7c68bb4ac6e257d4976b4071fcae50568 100644
--- a/java/com/android/dialer/lookup/res/values-sr/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-sr/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Места у околини
- ОсобеПретрага бројева телефонаНапредни прегледПрикажи околна места приликом претраге у бројчанику
- Проналажење људи
- Прикажи интернет резултате за људе приликом претраге у бројчаникуОбрнуто проналажењеПотражи информације о особи или месту за непознате бројеве на долазним позивимаДобављач напредне претраге
- Добављач проналажења људиПровајдер обрнутог проналажењаПретраге могу слати упите преко безбедног (https) протокола удаљеним веб сајтовима да добију информације. Упити могу садржати број телефона друге стране или упит претраге
diff --git a/java/com/android/dialer/lookup/res/values-sv/cm_strings.xml b/java/com/android/dialer/lookup/res/values-sv/cm_strings.xml
index ad8774d4b074bb016f87a7ed550d7074a7c25662..fa4eb9ee3a8a8354590f77d5e4b516128e0ef7d9 100644
--- a/java/com/android/dialer/lookup/res/values-sv/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-sv/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Platser i närheten
- PersonerTelefonnummersökningPlatssökningVisa platser i närheten vid sökning med knappsatsen
- Personsökning
- Visa online-resultat för personer vid sökning med knappsatsenOmvänd sökningSök efter information om personen eller platsen för okända nummer vid inkommande samtalPlatssökningstjänst
- PersonsökningstjänstLeverantör för omvänd sökningSökningar kan innebära att förfrågningar skickas till webbplatser via ett säkert protokoll (HTTPS) för att samla in information. Förfrågningarna kan innehålla motpartens telefonnummer, söktermen, eller båda två.
diff --git a/java/com/android/dialer/lookup/res/values-th/cm_strings.xml b/java/com/android/dialer/lookup/res/values-th/cm_strings.xml
index 0d57c5ad978a87bb9fc702f5bfaa3079b82d2058..6469055051bad6541988db079b39176fb823cfd8 100644
--- a/java/com/android/dialer/lookup/res/values-th/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-th/cm_strings.xml
@@ -16,16 +16,12 @@
-->
สถานที่ใกล้เคียง
- บุคคลค้นหาหมายเลขโทรศัพท์ค้นหาการส่งต่อแสดงสถานที่ใกล้เคียงเมื่อค้นหาจากแอปโทรศัพท์
- ค้นหาบุคคล
- แสดงผลการค้นหาออนไลน์เมื่อค้นหาในแอปโทรศัพท์ค้นหาย้อนกลับค้นหาข้อมูลเกี่ยวกับบุคคลหรือสถานที่สำหรับหมายเลขสายเรียกเข้าที่ไม่รู้จักผู้ให้บริการการค้นหาการส่งต่อ
- ผู้ให้บริการค้นหาบุคคลผู้ให้บริการค้นหาย้อนกลับค้นหาอาจส่งแบบสอบถามผ่านโพรโทคอลปลอดภัย (https) ไปยังเว็บไซต์ระยะไกลเพื่อรวบรวมข้อมูล แบบสอบถามอาจรวมถึงหมายเลขโทรศัพท์ของบุคคลอื่นหรือค้นหา
diff --git a/java/com/android/dialer/lookup/res/values-tr/cm_strings.xml b/java/com/android/dialer/lookup/res/values-tr/cm_strings.xml
index 8225bfe8029b39edf5562bd4cbc5f40089a7218e..fa62c8b6c7c46b4d294a282bc2e9e5dec042c13f 100644
--- a/java/com/android/dialer/lookup/res/values-tr/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-tr/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Yakın yerler
- KişilerTelefon numarası aramaYönlendirme aramasıÇevirici içinde arama yaparken yakınlardaki yerleri göster
- Kişi araması
- Çevirici içinde arama yaparken insanlar için çevrim içi sonuçları gösterBilinmeyen numaradan aranmaGelen aramalarda bilinmeyen numaralar için kişi veya yer hakkında bilgi araArama yönlendirme sağlayıcısı
- Kişi arama sağlayıcısıTers arama sağlayıcısıAramalar, bilgi toplamak için uzak web sitelerine güvenli bir protokol (https) üzerinden sorgu gönderebilir. Sorgu, diğer tarafın telefon numarasını veya arama sorgusunu içerebilir
diff --git a/java/com/android/dialer/lookup/res/values-uk/cm_strings.xml b/java/com/android/dialer/lookup/res/values-uk/cm_strings.xml
index 4f19963c0e9c0bbba126a56aece26673b821875b..88894590f83b8495102a06917436829df484a86e 100644
--- a/java/com/android/dialer/lookup/res/values-uk/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-uk/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Місця поблизу
- ЛюдиПошук номеру телефонаПрямий пошукПоказувати найближчі місця при пошуку в номеронабирачі
- Пошук контактів
- Показувати результати з мережі при пошуку в номеронабирачіЗворотній пошукПошук інформації про людину або місце для вхідних з невідомих номерівПостачальник прямого пошуку
- Постачальник пошуку даних про людейПостачальник зворотнього пошукуПошукові запити можуть відправляти запити за захищеним протоколом (https) на віддалені веб-сайти для збору інформації. Запит може включати телефонний номер іншої сторони або пошуковий запит
diff --git a/java/com/android/dialer/lookup/res/values-vi/cm_strings.xml b/java/com/android/dialer/lookup/res/values-vi/cm_strings.xml
index b96a85f4e1295cbe347f11454f37542c77ec96dd..4d040b85ab553a4ee2150156d1f12bd684ad9754 100644
--- a/java/com/android/dialer/lookup/res/values-vi/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-vi/cm_strings.xml
@@ -16,16 +16,12 @@
-->
Địa điểm gần kề
- Mọi ngườiTra cứu số điện thoạiTra cứu xuôiHiển thị các địa điểm gần kề khi tìm kiếm trong trình quay số
- Tra cứu mọi người
- Hiển thị kết quả trực tuyến về người khi tìm kiếm trong trình quay sốTra cứu ngượcTra cứu thông tin về người hoặc địa điểm cho các số không xác định trên các cuộc gọi đếnNhà cung cấp tra cứu xuôi
- Nhà cung cấp tra cứu ngườiNhà cung cấp tra cứu ngượcTra cứu có thể gửi truy vấn qua giao thức an toàn (https) tới các trang web từ xa để thu thập thông tin. Truy vấn có thể bao gồm số điện thoại của bên kia hoặc truy vấn tìm kiếm
diff --git a/java/com/android/dialer/lookup/res/values-zh-rCN/cm_strings.xml b/java/com/android/dialer/lookup/res/values-zh-rCN/cm_strings.xml
index b7b949e9142c74aeea5984679b9f3a7761b4c5af..d1b10489606e8ef3da58c262b97963075d7262e7 100644
--- a/java/com/android/dialer/lookup/res/values-zh-rCN/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-zh-rCN/cm_strings.xml
@@ -16,16 +16,12 @@
-->
附近地点
- 人电话号码查询正向查询在拨号器搜索时显示附近地点
- 人名查询
- 在拨号器中搜索时显示在线人名搜索结果反向查询为未知来电号码查询人名或地点信息正向查询提供商
- 人名查询提供商反向查询提供商查询将会发送基于安全协议(https)的请求到远程网站以获取信息。此查询可能会包含第三方的电话号码或搜索查询。
diff --git a/java/com/android/dialer/lookup/res/values-zh-rTW/cm_strings.xml b/java/com/android/dialer/lookup/res/values-zh-rTW/cm_strings.xml
index 39e00c2396a9bcf5a5ede96f0806db372e90557d..4564d3d2f8f90f25723d5ca783500992e1fbff04 100644
--- a/java/com/android/dialer/lookup/res/values-zh-rTW/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values-zh-rTW/cm_strings.xml
@@ -16,16 +16,12 @@
-->
附近的地點
- 聯絡人搜尋電話號碼正向搜尋在撥號程式搜尋時顯示附近的地點
- 聯絡人搜尋
- 在撥號程式搜尋時顯示線上的聯絡人搜尋結果反向搜尋為未知的來電號碼搜尋聯絡人或地點資料正向搜尋供應商
- 聯絡人搜尋供應商反向搜尋供應商查找可以透過安全協定 (https) 向遠端網站傳送查詢以收集資訊。查詢可能包括對方的電話號碼或搜尋查詢
diff --git a/java/com/android/dialer/lookup/res/values/cm_arrays.xml b/java/com/android/dialer/lookup/res/values/cm_arrays.xml
index 14a7f9c26897cde280bb77bc8fe921efbef6fefd..8486e192a70ded9e01424437a85c3b9443f3280a 100644
--- a/java/com/android/dialer/lookup/res/values/cm_arrays.xml
+++ b/java/com/android/dialer/lookup/res/values/cm_arrays.xml
@@ -23,27 +23,15 @@
OpenStreetMap
-
- Auskunft
-
-
-
- Auskunft (AT)
-
-
- AuskunftDasTelefonbuch
- OpenCnamYellowPagesYellowPages_CAZabaSearch
- Auskunft (AT)Das Telefonbuch (DE)
- OpenCnam (US)YellowPages (US)YellowPages (CA)ZabaSearch (US)
diff --git a/java/com/android/dialer/lookup/res/values/cm_strings.xml b/java/com/android/dialer/lookup/res/values/cm_strings.xml
index fed7c00679b1d0eda20e16016ea48cd5ce5ad9e5..f3bc1c915fc9ad9c76c7b983ed494fdfac1cc9a4 100644
--- a/java/com/android/dialer/lookup/res/values/cm_strings.xml
+++ b/java/com/android/dialer/lookup/res/values/cm_strings.xml
@@ -17,18 +17,14 @@
Nearby places
- PeoplePhone number lookupForward lookupShow nearby places when searching in the dialer
- People lookup
- Show online results for people when searching in the dialerReverse lookupLook up information about the person or place for unknown numbers on incoming callsForward lookup provider
- People lookup providerReverse lookup provider
diff --git a/java/com/android/dialer/lookup/res/xml/lookup_settings.xml b/java/com/android/dialer/lookup/res/xml/lookup_settings.xml
index 006345f52b8bf4808ff41322494c6f3113d2f15d..66c5bb1e459e6cd8c1d92f1a25302907be126ac3 100644
--- a/java/com/android/dialer/lookup/res/xml/lookup_settings.xml
+++ b/java/com/android/dialer/lookup/res/xml/lookup_settings.xml
@@ -33,22 +33,6 @@
android:summary="%s"
android:persistent="false" />
-
-
-
-
-
-
-
-
+
diff --git a/java/com/android/dialer/main/impl/DefaultDialerActivity.java b/java/com/android/dialer/main/impl/DefaultDialerActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..d40e0211de3256e265755ffd56675d168aa9cc4c
--- /dev/null
+++ b/java/com/android/dialer/main/impl/DefaultDialerActivity.java
@@ -0,0 +1,68 @@
+/*
+ * SPDX-FileCopyrightText: The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.android.dialer.main.impl;
+
+import android.app.Activity;
+import android.app.role.RoleManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.telecom.TelecomManager;
+import android.view.View;
+
+import com.android.dialer.R;
+import com.android.dialer.widget.EmptyContentView;
+
+public class DefaultDialerActivity extends AppCompatActivity implements
+ EmptyContentView.OnEmptyViewActionButtonClickedListener {
+
+ private static final int REQUEST_DEFAULT_DIALER = 1;
+
+ private RoleManager mRoleManager;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ setTheme(R.style.MainActivityTheme);
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.default_dialer_view);
+
+ mRoleManager = (RoleManager) getSystemService(Context.ROLE_SERVICE);
+
+ EmptyContentView emptyContentView = findViewById(R.id.empty_list_view);
+ emptyContentView.setDescription(R.string.default_dialer_text);
+ emptyContentView.setImage(R.drawable.quantum_ic_call_vd_theme_24);
+ emptyContentView.setActionLabel(R.string.default_dialer_action);
+ emptyContentView.setActionClickedListener(this);
+ emptyContentView.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ if (mRoleManager.isRoleHeld(RoleManager.ROLE_DIALER)) {
+ finish();
+ }
+ }
+
+ @Override
+ public void onEmptyViewActionButtonClicked() {
+ Intent roleRequest = mRoleManager.createRequestRoleIntent(RoleManager.ROLE_DIALER);
+ roleRequest.putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME,
+ getPackageName());
+ startActivityForResult(roleRequest, REQUEST_DEFAULT_DIALER);
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ if (requestCode == REQUEST_DEFAULT_DIALER) {
+ if (resultCode == Activity.RESULT_OK) {
+ finish();
+ }
+ }
+ }
+}
diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java
index f539bdcee23299fb5995faddf4101bf8878f9903..d745483e6f19df9914b7e45dbefa1eb205d95d1a 100644
--- a/java/com/android/dialer/main/impl/MainActivity.java
+++ b/java/com/android/dialer/main/impl/MainActivity.java
@@ -21,24 +21,17 @@ import android.content.Intent;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;
import com.android.dialer.blockreportspam.ShowBlockReportSpamDialogReceiver;
-import com.android.dialer.calllog.config.CallLogConfigComponent;
-import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.interactions.PhoneNumberInteraction.DisambigDialogDismissedListener;
-import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorCode;
-import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorListener;
import com.android.dialer.main.MainActivityPeer;
import com.android.dialer.main.impl.bottomnav.BottomNavBar.TabIndex;
import com.android.dialer.R;
+import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.TransactionSafeActivity;
/** This is the main activity for dialer. It hosts favorites, call log, search, dialpad, etc... */
// TODO(calderwoodra): Do not extend TransactionSafeActivity after new SpeedDial is launched
public class MainActivity extends TransactionSafeActivity
- implements MainActivityPeer.PeerSupplier,
- // TODO(calderwoodra): remove these 2 interfaces when we migrate to new speed dial fragment
- InteractionErrorListener,
- DisambigDialogDismissedListener {
+ implements MainActivityPeer.PeerSupplier {
private MainActivityPeer activePeer;
@@ -48,50 +41,19 @@ public class MainActivity extends TransactionSafeActivity
*/
private ShowBlockReportSpamDialogReceiver showBlockReportSpamDialogReceiver;
- public static Intent getShowCallLogIntent(Context context) {
- return getShowTabIntent(context, TabIndex.CALL_LOG);
- }
-
- /** Returns intent that will open MainActivity to the specified tab. */
- public static Intent getShowTabIntent(Context context, @TabIndex int tabIndex) {
- if (CallLogConfigComponent.get(context).callLogConfig().isNewPeerEnabled()) {
- // TODO(calderwoodra): implement this in NewMainActivityPeer
- return null;
- }
- return OldMainActivityPeer.getShowTabIntent(context, tabIndex);
- }
-
- /**
- * @param context Context of the application package implementing MainActivity class.
- * @return intent for MainActivity.class
- */
- public static Intent getIntent(Context context) {
- return new Intent(context, MainActivity.class)
- .setAction(Intent.ACTION_VIEW)
- .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- }
-
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.MainActivityTheme);
super.onCreate(savedInstanceState);
LogUtil.enterBlock("MainActivity.onCreate");
- // If peer was set by the super, don't reset it.
- activePeer = getNewPeer();
+
+ activePeer = new OldMainActivityPeer(this);
activePeer.onActivityCreate(savedInstanceState);
showBlockReportSpamDialogReceiver =
new ShowBlockReportSpamDialogReceiver(getSupportFragmentManager());
}
- protected MainActivityPeer getNewPeer() {
- if (CallLogConfigComponent.get(this).callLogConfig().isNewPeerEnabled()) {
- return new NewMainActivityPeer(this);
- } else {
- return new OldMainActivityPeer(this);
- }
- }
-
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
@@ -102,6 +64,12 @@ public class MainActivity extends TransactionSafeActivity
@Override
protected void onResume() {
super.onResume();
+
+ if (!TelecomUtil.isDefaultDialer(this)) {
+ startActivity(new Intent(this, DefaultDialerActivity.class));
+ return;
+ }
+
activePeer.onActivityResume();
LocalBroadcastManager.getInstance(this)
@@ -149,28 +117,6 @@ public class MainActivity extends TransactionSafeActivity
super.onBackPressed();
}
- @Override
- public void interactionError(@InteractionErrorCode int interactionErrorCode) {
- switch (interactionErrorCode) {
- case InteractionErrorCode.USER_LEAVING_ACTIVITY:
- // This is expected to happen if the user exits the activity before the interaction occurs.
- return;
- case InteractionErrorCode.CONTACT_NOT_FOUND:
- case InteractionErrorCode.CONTACT_HAS_NO_NUMBER:
- case InteractionErrorCode.OTHER_ERROR:
- default:
- // All other error codes are unexpected. For example, it should be impossible to start an
- // interaction with an invalid contact from this activity.
- throw Assert.createIllegalStateFailException(
- "PhoneNumberInteraction error: " + interactionErrorCode);
- }
- }
-
- @Override
- public void onDisambigDialogDismissed() {
- // Don't do anything; the app will remain open with favorites tiles displayed.
- }
-
@Override
public MainActivityPeer getPeer() {
return activePeer;
diff --git a/java/com/android/dialer/main/impl/MainSearchController.java b/java/com/android/dialer/main/impl/MainSearchController.java
index 515f11bbecc0b3dd2c0080ca0b5ecd43c6ffac94..5151c44c523728bf68b9f4e7a93fec345afbbd3e 100644
--- a/java/com/android/dialer/main/impl/MainSearchController.java
+++ b/java/com/android/dialer/main/impl/MainSearchController.java
@@ -22,8 +22,6 @@ import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
@@ -32,7 +30,12 @@ import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.Toast;
+
+import androidx.annotation.AttrRes;
+import androidx.annotation.Nullable;
+
import com.android.contacts.common.dialog.ClearFrequentsDialog;
+import com.android.dialer.R;
import com.android.dialer.app.calllog.CallLogActivity;
import com.android.dialer.app.settings.DialerSettingsActivity;
import com.android.dialer.callintent.CallInitiationType;
@@ -42,15 +45,13 @@ import com.android.dialer.dialpadview.DialpadFragment;
import com.android.dialer.dialpadview.DialpadFragment.DialpadListener;
import com.android.dialer.dialpadview.DialpadFragment.OnDialpadQueryChangedListener;
import com.android.dialer.helplines.HelplineActivity;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
import com.android.dialer.main.impl.bottomnav.BottomNavBar;
import com.android.dialer.main.impl.toolbar.MainToolbar;
import com.android.dialer.main.impl.toolbar.SearchBarListener;
import com.android.dialer.searchfragment.list.NewSearchFragment;
import com.android.dialer.searchfragment.list.NewSearchFragment.SearchFragmentListener;
import com.android.dialer.smartdial.util.SmartDialNameMatcher;
+import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.TransactionSafeActivity;
import com.google.common.base.Optional;
import java.util.ArrayList;
@@ -73,7 +74,6 @@ import java.util.List;
public class MainSearchController implements SearchBarListener {
private static final String KEY_IS_FAB_HIDDEN = "is_fab_hidden";
- private static final String KEY_TOOLBAR_SHADOW_VISIBILITY = "toolbar_shadow_visibility";
private static final String KEY_IS_TOOLBAR_EXPANDED = "is_toolbar_expanded";
private static final String KEY_IS_TOOLBAR_SLIDE_UP = "is_toolbar_slide_up";
@@ -84,7 +84,6 @@ public class MainSearchController implements SearchBarListener {
private final BottomNavBar bottomNav;
private final FloatingActionButton fab;
private final MainToolbar toolbar;
- private final View toolbarShadow;
/** View located underneath the toolbar that needs to animate with it. */
private final View fragmentContainer;
@@ -108,13 +107,11 @@ public class MainSearchController implements SearchBarListener {
BottomNavBar bottomNav,
FloatingActionButton fab,
MainToolbar toolbar,
- View toolbarShadow,
View fragmentContainer) {
this.activity = activity;
this.bottomNav = bottomNav;
this.fab = fab;
this.toolbar = toolbar;
- this.toolbarShadow = toolbarShadow;
this.fragmentContainer = fragmentContainer;
dialpadFragment =
@@ -150,12 +147,9 @@ public class MainSearchController implements SearchBarListener {
return;
}
- Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_DIALPAD, activity);
-
fab.hide();
toolbar.slideUp(animate, fragmentContainer);
toolbar.expand(animate, Optional.absent(), /* requestFocus */ false);
- toolbarShadow.setVisibility(View.VISIBLE);
activity.setTitle(R.string.dialpad_activity_title);
@@ -270,23 +264,14 @@ public class MainSearchController implements SearchBarListener {
LogUtil.enterBlock("MainSearchController.onSearchListTouched");
if (isDialpadVisible()) {
if (TextUtils.isEmpty(dialpadFragment.getQuery())) {
- Logger.get(activity)
- .logImpression(
- DialerImpression.Type.MAIN_TOUCH_DIALPAD_SEARCH_LIST_TO_CLOSE_SEARCH_AND_DIALPAD);
closeSearch(true);
} else {
- Logger.get(activity)
- .logImpression(DialerImpression.Type.MAIN_TOUCH_DIALPAD_SEARCH_LIST_TO_HIDE_DIALPAD);
hideDialpad(/* animate=*/ true);
}
} else if (isSearchVisible()) {
if (TextUtils.isEmpty(toolbar.getQuery())) {
- Logger.get(activity)
- .logImpression(DialerImpression.Type.MAIN_TOUCH_SEARCH_LIST_TO_CLOSE_SEARCH);
closeSearch(true);
} else {
- Logger.get(activity)
- .logImpression(DialerImpression.Type.MAIN_TOUCH_SEARCH_LIST_TO_HIDE_KEYBOARD);
closeKeyboard();
}
}
@@ -300,17 +285,10 @@ public class MainSearchController implements SearchBarListener {
public boolean onBackPressed() {
if (isDialpadVisible() && !TextUtils.isEmpty(dialpadFragment.getQuery())) {
LogUtil.i("MainSearchController.onBackPressed", "Dialpad visible with query");
- Logger.get(activity)
- .logImpression(DialerImpression.Type.MAIN_PRESS_BACK_BUTTON_TO_HIDE_DIALPAD);
hideDialpad(/* animate=*/ true);
return true;
} else if (isSearchVisible()) {
LogUtil.i("MainSearchController.onBackPressed", "Search is visible");
- Logger.get(activity)
- .logImpression(
- isDialpadVisible()
- ? DialerImpression.Type.MAIN_PRESS_BACK_BUTTON_TO_CLOSE_SEARCH_AND_DIALPAD
- : DialerImpression.Type.MAIN_PRESS_BACK_BUTTON_TO_CLOSE_SEARCH);
closeSearch(true);
return true;
} else {
@@ -342,8 +320,8 @@ public class MainSearchController implements SearchBarListener {
fab.show();
}
showBottomNav();
+ updateStatusBarColor(android.R.attr.statusBarColor);
toolbar.collapse(animate);
- toolbarShadow.setVisibility(View.GONE);
activity.getFragmentManager().beginTransaction().hide(searchFragment).commit();
// Clear the dialpad so the phone number isn't persisted between search sessions.
@@ -398,20 +376,17 @@ public class MainSearchController implements SearchBarListener {
@Override
public void onSearchBarClicked() {
LogUtil.enterBlock("MainSearchController.onSearchBarClicked");
- Logger.get(activity).logImpression(DialerImpression.Type.MAIN_CLICK_SEARCH_BAR);
openSearch(Optional.absent());
}
private void openSearch(Optional query) {
LogUtil.enterBlock("MainSearchController.openSearch");
- Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_SEARCH, activity);
-
fab.hide();
toolbar.expand(/* animate=*/ true, query, /* requestFocus */ true);
toolbar.showKeyboard();
- toolbarShadow.setVisibility(View.VISIBLE);
hideBottomNav();
+ updateStatusBarColor(android.R.attr.colorBackgroundFloating);
FragmentTransaction transaction = activity.getFragmentManager().beginTransaction();
// Show Search
@@ -458,7 +433,6 @@ public class MainSearchController implements SearchBarListener {
@Override
public void onVoiceButtonClicked(VoiceSearchResultCallback voiceSearchResultCallback) {
- Logger.get(activity).logImpression(DialerImpression.Type.MAIN_CLICK_SEARCH_BAR_VOICE_BUTTON);
try {
Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
activity.startActivityForResult(voiceIntent, ActivityRequestCodes.DIALTACTS_VOICE_SEARCH);
@@ -471,11 +445,9 @@ public class MainSearchController implements SearchBarListener {
public boolean onMenuItemClicked(MenuItem menuItem) {
if (menuItem.getItemId() == R.id.settings) {
activity.startActivity(new Intent(activity, DialerSettingsActivity.class));
- Logger.get(activity).logScreenView(ScreenEvent.Type.SETTINGS, activity);
return true;
} else if (menuItem.getItemId() == R.id.clear_frequents) {
ClearFrequentsDialog.show(activity.getFragmentManager());
- Logger.get(activity).logScreenView(ScreenEvent.Type.CLEAR_FREQUENTS, activity);
return true;
} else if (menuItem.getItemId() == R.id.menu_call_history) {
final Intent intent = new Intent(activity, CallLogActivity.class);
@@ -540,13 +512,11 @@ public class MainSearchController implements SearchBarListener {
public void onSaveInstanceState(Bundle bundle) {
bundle.putBoolean(KEY_IS_FAB_HIDDEN, !fab.isShown());
- bundle.putInt(KEY_TOOLBAR_SHADOW_VISIBILITY, toolbarShadow.getVisibility());
bundle.putBoolean(KEY_IS_TOOLBAR_EXPANDED, toolbar.isExpanded());
bundle.putBoolean(KEY_IS_TOOLBAR_SLIDE_UP, toolbar.isSlideUp());
}
public void onRestoreInstanceState(Bundle savedInstanceState) {
- toolbarShadow.setVisibility(savedInstanceState.getInt(KEY_TOOLBAR_SHADOW_VISIBILITY));
if (savedInstanceState.getBoolean(KEY_IS_FAB_HIDDEN, false)) {
fab.hide();
}
@@ -561,12 +531,9 @@ public class MainSearchController implements SearchBarListener {
}
}
- public void addOnSearchShowListener(OnSearchShowListener listener) {
- onSearchShowListenerList.add(listener);
- }
-
- public void removeOnSearchShowListener(OnSearchShowListener listener) {
- onSearchShowListenerList.remove(listener);
+ private void updateStatusBarColor(@AttrRes int colorAttribute) {
+ int color = DialerUtils.resolveColor(activity, colorAttribute);
+ activity.getWindow().setStatusBarColor(color);
}
private void notifyListenersOnSearchOpen() {
@@ -587,14 +554,4 @@ public class MainSearchController implements SearchBarListener {
void onSearchClose();
}
-
- @VisibleForTesting
- void setDialpadFragment(DialpadFragment dialpadFragment) {
- this.dialpadFragment = dialpadFragment;
- }
-
- @VisibleForTesting
- void setSearchFragment(NewSearchFragment searchFragment) {
- this.searchFragment = searchFragment;
- }
}
diff --git a/java/com/android/dialer/main/impl/NewMainActivityPeer.java b/java/com/android/dialer/main/impl/NewMainActivityPeer.java
deleted file mode 100644
index f2d6fa6d3df126c2b0c1794287f59fe008f04d0e..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/main/impl/NewMainActivityPeer.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * 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
- */
-
-package com.android.dialer.main.impl;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-import com.android.dialer.calllog.CallLogComponent;
-import com.android.dialer.calllog.ui.NewCallLogFragment;
-import com.android.dialer.common.concurrent.DefaultFutureCallback;
-import com.android.dialer.main.MainActivityPeer;
-import com.android.dialer.main.impl.bottomnav.BottomNavBar;
-import com.android.dialer.main.impl.bottomnav.BottomNavBar.OnBottomNavTabSelectedListener;
-import com.android.dialer.main.impl.bottomnav.BottomNavBar.TabIndex;
-import com.android.dialer.voicemail.listui.NewVoicemailFragment;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.MoreExecutors;
-
-/** MainActivityPeer that implements the new fragments. */
-public class NewMainActivityPeer implements MainActivityPeer {
-
- private final MainActivity mainActivity;
-
- public NewMainActivityPeer(MainActivity mainActivity) {
- this.mainActivity = mainActivity;
- }
-
- @Override
- public void onActivityCreate(Bundle saveInstanceState) {
- mainActivity.setContentView(R.layout.main_activity);
- MainBottomNavBarBottomNavTabListener bottomNavBarBottomNavTabListener =
- new MainBottomNavBarBottomNavTabListener(
- mainActivity.getSupportFragmentManager(), mainActivity.getApplicationContext());
- BottomNavBar bottomNav = mainActivity.findViewById(R.id.bottom_nav_bar);
- bottomNav.addOnTabSelectedListener(bottomNavBarBottomNavTabListener);
- bottomNav.selectTab(TabIndex.SPEED_DIAL);
- }
-
- @Override
- public void onActivityResume() {}
-
- @Override
- public void onUserLeaveHint() {}
-
- @Override
- public void onActivityPause() {}
-
- @Override
- public void onActivityStop() {}
-
- @Override
- public void onActivityDestroyed() {}
-
- @Override
- public void onNewIntent(Intent intent) {}
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {}
-
- @Override
- public void onSaveInstanceState(Bundle bundle) {}
-
- @Override
- public boolean onBackPressed() {
- return false;
- }
-
- /**
- * Implementation of {@link OnBottomNavTabSelectedListener} that handles logic for showing each of
- * the main tabs.
- */
- private static final class MainBottomNavBarBottomNavTabListener
- implements OnBottomNavTabSelectedListener {
-
- private static final String SPEED_DIAL_TAG = "speed_dial";
- private static final String CALL_LOG_TAG = "call_log";
- private static final String VOICEMAIL_TAG = "voicemail";
-
- private final FragmentManager supportFragmentManager;
- private final Context appContext;
-
- private MainBottomNavBarBottomNavTabListener(
- FragmentManager supportFragmentManager, Context appContext) {
- this.supportFragmentManager = supportFragmentManager;
- this.appContext = appContext;
- }
-
- @Override
- public void onSpeedDialSelected() {
- hideAllFragments();
- // TODO(calderwoodra): Since we aren't using fragment utils in this peer, let's disable
- // speed dial until we figure out a solution.
- // SpeedDialFragment fragment =
- // (SpeedDialFragment) supportFragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
- // if (fragment == null) {
- // supportFragmentManager
- // .beginTransaction()
- // .add(R.id.fragment_container, SpeedDialFragment.newInstance(), SPEED_DIAL_TAG)
- // .commit();
- // } else {
- // supportFragmentManager.beginTransaction().show(fragment).commit();
- // }
- }
-
- @Override
- public void onCallLogSelected() {
- hideAllFragments();
- NewCallLogFragment fragment =
- (NewCallLogFragment) supportFragmentManager.findFragmentByTag(CALL_LOG_TAG);
- if (fragment == null) {
- supportFragmentManager
- .beginTransaction()
- .add(R.id.fragment_container, new NewCallLogFragment(), CALL_LOG_TAG)
- .commit();
- } else {
- supportFragmentManager.beginTransaction().show(fragment).commit();
- }
- }
-
- @Override
- public void onContactsSelected() {
- hideAllFragments();
- // TODO(calderwoodra): Implement ContactsFragment when FragmentUtils#getParent works
- }
-
- @Override
- public void onVoicemailSelected() {
- hideAllFragments();
- NewVoicemailFragment fragment =
- (NewVoicemailFragment) supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG);
- if (fragment == null) {
- supportFragmentManager
- .beginTransaction()
- .add(R.id.fragment_container, new NewVoicemailFragment(), VOICEMAIL_TAG)
- .commit();
- } else {
- supportFragmentManager.beginTransaction().show(fragment).commit();
- }
- }
-
- // TODO(calderwoodra): fix overlapping fragments issue
- private void hideAllFragments() {
- FragmentTransaction supportTransaction = supportFragmentManager.beginTransaction();
- Fragment speedDialFragment = supportFragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
- if (speedDialFragment != null) {
- supportTransaction.hide(speedDialFragment);
- }
-
- Fragment callLogFragment = supportFragmentManager.findFragmentByTag(CALL_LOG_TAG);
- if (callLogFragment != null) {
- if (callLogFragment.isVisible()) {
- // If the user taps any bottom nav button and the call log is showing, immediately cancel
- // missed calls (unbold them and clear their notifications).
- Futures.addCallback(
- // TODO(zachh): Use dagger to create Peer and MainBottomNavBarBottomNavTabListener.
- CallLogComponent.get(appContext).getClearMissedCalls().clearAll(),
- new DefaultFutureCallback<>(),
- MoreExecutors.directExecutor());
- }
- supportTransaction.hide(callLogFragment);
- }
-
- if (supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG) != null) {
- supportTransaction.hide(supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG));
- }
- supportTransaction.commit();
- }
- }
-}
diff --git a/java/com/android/dialer/main/impl/OldMainActivityPeer.java b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
index a1afc616434834de12def196a0c5542a627c0c37..4ca77fd392e8d4f20934934882c9907db13cf964 100644
--- a/java/com/android/dialer/main/impl/OldMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
@@ -21,11 +21,9 @@ import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.KeyguardManager;
-import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
@@ -34,13 +32,10 @@ import android.os.Handler;
import android.provider.CallLog.Calls;
import android.provider.ContactsContract.QuickContact;
import android.provider.VoicemailContract;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.content.ContextCompat;
-import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.telecom.PhoneAccount;
@@ -49,40 +44,27 @@ import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.view.ActionMode;
-import android.view.DragEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
-import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
-import com.android.dialer.animation.AnimUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
import com.android.dialer.app.MainComponent;
import com.android.dialer.app.calllog.CallLogAdapter;
import com.android.dialer.app.calllog.CallLogFragment;
import com.android.dialer.app.calllog.CallLogFragment.CallLogFragmentListener;
import com.android.dialer.app.calllog.CallLogNotificationsService;
-import com.android.dialer.app.calllog.IntentProvider;
import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
-import com.android.dialer.app.list.DragDropController;
-import com.android.dialer.app.list.OldSpeedDialFragment;
-import com.android.dialer.app.list.OnDragDropListener;
-import com.android.dialer.app.list.OnListFragmentScrolledListener;
-import com.android.dialer.app.list.PhoneFavoriteSquareTileView;
-import com.android.dialer.app.list.RemoveView;
-import com.android.dialer.callcomposer.CallComposerActivity;
-import com.android.dialer.calldetails.OldCallDetailsActivity;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.calllog.CallLogComponent;
-import com.android.dialer.calllog.config.CallLogConfigComponent;
-import com.android.dialer.calllog.ui.NewCallLogFragment;
import com.android.dialer.common.FragmentUtils.FragmentUtilListener;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DefaultFutureCallback;
import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.ThreadUtil;
import com.android.dialer.common.concurrent.UiListener;
-import com.android.dialer.configprovider.ConfigProviderComponent;
import com.android.dialer.constants.ActivityRequestCodes;
import com.android.dialer.contactsfragment.ContactsFragment;
import com.android.dialer.contactsfragment.ContactsFragment.Header;
@@ -93,22 +75,14 @@ import com.android.dialer.dialpadview.DialpadFragment;
import com.android.dialer.dialpadview.DialpadFragment.DialpadListener;
import com.android.dialer.dialpadview.DialpadFragment.LastOutgoingCallCallback;
import com.android.dialer.dialpadview.DialpadFragment.OnDialpadQueryChangedListener;
-import com.android.dialer.duo.DuoComponent;
import com.android.dialer.i18n.LocaleUtils;
-import com.android.dialer.interactions.PhoneNumberInteraction;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
import com.android.dialer.main.MainActivityPeer;
import com.android.dialer.main.impl.bottomnav.BottomNavBar;
import com.android.dialer.main.impl.bottomnav.BottomNavBar.OnBottomNavTabSelectedListener;
import com.android.dialer.main.impl.bottomnav.BottomNavBar.TabIndex;
import com.android.dialer.main.impl.bottomnav.MissedCallCountObserver;
import com.android.dialer.main.impl.toolbar.MainToolbar;
-import com.android.dialer.metrics.Metrics;
-import com.android.dialer.metrics.MetricsComponent;
import com.android.dialer.postcall.PostCall;
-import com.android.dialer.precall.PreCall;
import com.android.dialer.promotion.Promotion;
import com.android.dialer.promotion.Promotion.PromotionType;
import com.android.dialer.promotion.PromotionComponent;
@@ -119,18 +93,12 @@ import com.android.dialer.storage.StorageComponent;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.theme.base.Theme;
import com.android.dialer.theme.base.ThemeComponent;
-import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.util.TransactionSafeActivity;
-import com.android.dialer.voicemail.listui.NewVoicemailFragment;
-import com.android.dialer.voicemail.listui.error.VoicemailStatusCorruptionHandler;
-import com.android.dialer.voicemail.listui.error.VoicemailStatusCorruptionHandler.Source;
import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
import com.android.dialer.voicemailstatus.VoicemailStatusHelper;
import com.android.voicemail.VoicemailComponent;
-import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.MoreExecutors;
import java.util.Locale;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
@@ -154,24 +122,6 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
// TODO(calderwoodra): change to AppCompatActivity once new speed dial ships
private final TransactionSafeActivity activity;
- private final BroadcastReceiver disableCallLogFrameworkReceiver =
- new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (bottomNavTabListener == null) {
- return;
- }
- /*
- * Remove the NewCallLogFragment and NewVoicemailFragment if it is currently attached. If
- * this is not done, user interaction with the fragment could cause call log framework
- * state to be unexpectedly written. For example scrolling could cause the
- * AnnotatedCallLog to be read (which would trigger database creation).
- */
- bottomNavTabListener.disableNewCallLogFragment();
- bottomNavTabListener.disableNewVoicemailFragment();
- }
- };
-
// Contacts
private MainOnContactSelectedListener onContactSelectedListener;
@@ -189,11 +139,8 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
// Call Log
private MainCallLogHost callLogHostInterface;
private MainCallLogFragmentListener callLogFragmentListener;
- private MainOnListFragmentScrolledListener onListFragmentScrolledListener;
// Speed Dial
- private MainOnPhoneNumberPickerActionListener onPhoneNumberPickerActionListener;
- private MainOldSpeedDialFragmentHost oldSpeedDialFragmentHost;
private MainSpeedDialFragmentHost speedDialFragmentHost;
/** Language the device was in last time {@link #onSaveInstanceState(Bundle)} was called. */
@@ -209,14 +156,6 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
private UiListener missedCallObserverUiListener;
private View bottomSheet;
- public static Intent getShowTabIntent(Context context, @TabIndex int tabIndex) {
- Intent intent = new Intent(context, MainActivity.class);
- intent.setAction(ACTION_SHOW_TAB);
- intent.putExtra(EXTRA_SHOW_TAB, tabIndex);
- // TODO(calderwoodra): Do we need to set some URI data here
- return intent;
- }
-
static boolean isShowTabIntent(Intent intent) {
return ACTION_SHOW_TAB.equals(intent.getAction()) && intent.hasExtra(EXTRA_SHOW_TAB);
}
@@ -277,7 +216,6 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
FloatingActionButton fab = activity.findViewById(R.id.fab);
fab.setOnClickListener(
v -> {
- Logger.get(activity).logImpression(DialerImpression.Type.MAIN_CLICK_FAB_TO_OPEN_DIALPAD);
searchController.showDialpad(true);
if (callLogAdapterOnActionModeStateChangedListener.isEnabled) {
LogUtil.i("OldMainActivityPeer.onFabClicked", "closing multiselect");
@@ -311,9 +249,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
activity, activity.getContentResolver(), bottomNav, toolbar, bottomNavTabListener);
bottomNav.addOnTabSelectedListener(callLogFragmentListener);
- searchController =
- getNewMainSearchController(
- bottomNav, fab, toolbar, activity.findViewById(R.id.toolbar_shadow), snackbarContainer);
+ searchController = getNewMainSearchController(bottomNav, fab, toolbar, snackbarContainer);
toolbar.setSearchBarListener(searchController);
onDialpadQueryChangedListener = getNewOnDialpadQueryChangedListener(searchController);
@@ -324,17 +260,6 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
new MainCallLogAdapterOnActionModeStateChangedListener();
callLogHostInterface = new MainCallLogHost(searchController, fab);
- onListFragmentScrolledListener = new MainOnListFragmentScrolledListener(snackbarContainer);
- onPhoneNumberPickerActionListener = new MainOnPhoneNumberPickerActionListener(activity);
- oldSpeedDialFragmentHost =
- new MainOldSpeedDialFragmentHost(
- activity,
- activity.findViewById(R.id.root_layout),
- bottomNav,
- activity.findViewById(R.id.contact_tile_drag_shadow_overlay),
- activity.findViewById(R.id.remove_view),
- activity.findViewById(R.id.search_view_container),
- toolbar);
speedDialFragmentHost =
new MainSpeedDialFragmentHost(
toolbar,
@@ -438,7 +363,6 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
if (extras != null && extras.getInt(Calls.EXTRA_CALL_TYPE_FILTER) == Calls.VOICEMAIL_TYPE) {
LogUtil.i("OldMainActivityPeer.onHandleIntent", "Voicemail content type intent");
tabToSelect = TabIndex.VOICEMAIL;
- Logger.get(activity).logImpression(DialerImpression.Type.VVM_NOTIFICATION_CLICKED);
} else {
LogUtil.i("OldMainActivityPeer.onHandleIntent", "Call log content type intent");
tabToSelect = TabIndex.CALL_LOG;
@@ -451,14 +375,12 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
LogUtil.i("OldMainActivityPeer.onHandleIntent", "Show last tab");
tabToSelect = lastTabController.getLastTab();
}
- logImpressionForSelectedTab(tabToSelect);
bottomNav.selectTab(tabToSelect);
if (isDialOrAddCallIntent(intent)) {
LogUtil.i("OldMainActivityPeer.onHandleIntent", "Dial or add call intent");
// Dialpad will grab the intent and populate the number
searchController.showDialpadFromNewIntent();
- Logger.get(activity).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_DIALPAD);
}
if (intent.getBooleanExtra(MainComponent.EXTRA_CLEAR_NEW_VOICEMAILS, false)) {
@@ -467,21 +389,6 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
}
}
- /** Log impression for non user tab selection. */
- private void logImpressionForSelectedTab(@TabIndex int tab) {
- if (tab == TabIndex.SPEED_DIAL) {
- Logger.get(activity).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_TAB_FAVORITE);
- } else if (tab == TabIndex.CALL_LOG) {
- Logger.get(activity).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_TAB_CALL_LOG);
- } else if (tab == TabIndex.CONTACTS) {
- Logger.get(activity).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_TAB_CONTACTS);
- } else if (tab == TabIndex.VOICEMAIL) {
- Logger.get(activity).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_TAB_VOICEMAIL);
- } else {
- throw new IllegalStateException("Invalid tab: " + tab);
- }
- }
-
/** Returns true if the given intent is a Dial intent with data or an Add Call intent. */
private boolean isDialOrAddCallIntent(Intent intent) {
if (intent == null) {
@@ -519,44 +426,6 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
} else {
bottomNav.setVisibility(View.VISIBLE);
}
-
- /*
- * While the activity is running, listen for the call log framework being disabled. If this is
- * not done, user interaction with the fragment could cause call log framework state to be
- * unexpectedly written. For example scrolling could cause the AnnotatedCallLog to be read
- * (which would trigger database creation).
- */
- LocalBroadcastManager.getInstance(activity)
- .registerReceiver(
- disableCallLogFrameworkReceiver, new IntentFilter("disableCallLogFramework"));
-
- /*
- * Similar to above, if the new call log/new voicemail is being shown and then the activity is
- * paused, when the user returns we need to remove the NewCallLogFragment if the framework has
- * been disabled in the meantime.
- */
- bottomNavTabListener.ensureCorrectCallLogShown();
- bottomNavTabListener.ensureCorrectVoicemailShown();
-
- // Config the badge of missed calls for the new call log.
- if (bottomNavTabListener.newCallLogFragmentActive()) {
- if (PermissionsUtil.hasCallLogReadPermissions(activity)) {
- missedCallCountObserver.onChange(false); // Set the initial value for the badge
- activity
- .getContentResolver()
- .registerContentObserver(Calls.CONTENT_URI, true, missedCallCountObserver);
- } else {
- bottomNav.setNotificationCount(TabIndex.CALL_LOG, 0);
- }
- }
-
- // add 1 sec delay to get memory snapshot so that dialer wont react slowly on resume.
- ThreadUtil.postDelayedOnUiThread(
- () ->
- MetricsComponent.get(activity)
- .metrics()
- .recordMemory(Metrics.OLD_MAIN_ACTIVITY_PEER_ON_RESUME_MEMORY_EVENT_NAME),
- 1000);
}
@Override
@@ -567,7 +436,6 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
@Override
public void onActivityPause() {
searchController.onActivityPause();
- LocalBroadcastManager.getInstance(activity).unregisterReceiver(disableCallLogFrameworkReceiver);
activity.getContentResolver().unregisterContentObserver(missedCallCountObserver);
}
@@ -612,43 +480,8 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
resultCode);
if (requestCode == ActivityRequestCodes.DIALTACTS_VOICE_SEARCH) {
searchController.onVoiceResults(resultCode, data);
- } else if (requestCode == ActivityRequestCodes.DIALTACTS_CALL_COMPOSER) {
- if (resultCode == AppCompatActivity.RESULT_FIRST_USER) {
- LogUtil.i(
- "OldMainActivityPeer.onActivityResult", "returned from call composer, error occurred");
- String message =
- activity.getString(
- R.string.call_composer_connection_failed,
- data.getStringExtra(CallComposerActivity.KEY_CONTACT_NAME));
- Snackbar.make(snackbarContainer, message, Snackbar.LENGTH_LONG).show();
- } else {
- LogUtil.i("OldMainActivityPeer.onActivityResult", "returned from call composer, no error");
- }
-
} else if (requestCode == ActivityRequestCodes.DIALTACTS_CALL_DETAILS) {
- if (resultCode == AppCompatActivity.RESULT_OK
- && data != null
- && data.getBooleanExtra(OldCallDetailsActivity.EXTRA_HAS_ENRICHED_CALL_DATA, false)) {
- String number = data.getStringExtra(OldCallDetailsActivity.EXTRA_PHONE_NUMBER);
- int snackbarDurationMillis = 5_000;
- Snackbar.make(
- snackbarContainer,
- activity.getString(R.string.ec_data_deleted),
- snackbarDurationMillis)
- .setAction(
- R.string.view_conversation,
- v ->
- activity.startActivity(
- IntentProvider.getSendSmsIntentProvider(number).getClickIntent(activity)))
- .setActionTextColor(
- ContextCompat.getColor(activity, R.color.dialer_snackbar_action_text_color))
- .show();
- }
-
- } else if (requestCode == ActivityRequestCodes.DIALTACTS_DUO) {
- // We just returned from starting Duo for a task. Reload our reachability data since it
- // may have changed after a user finished activating Duo.
- DuoComponent.get(activity).getDuo().reloadReachability(activity);
+ // ignored
} else {
LogUtil.e("OldMainActivityPeer.onActivityResult", "Unknown request code: " + requestCode);
@@ -684,12 +517,6 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
return (T) callLogHostInterface;
} else if (callbackInterface.isInstance(callLogFragmentListener)) {
return (T) callLogFragmentListener;
- } else if (callbackInterface.isInstance(onListFragmentScrolledListener)) {
- return (T) onListFragmentScrolledListener;
- } else if (callbackInterface.isInstance(onPhoneNumberPickerActionListener)) {
- return (T) onPhoneNumberPickerActionListener;
- } else if (callbackInterface.isInstance(oldSpeedDialFragmentHost)) {
- return (T) oldSpeedDialFragmentHost;
} else if (callbackInterface.isInstance(searchController)) {
return (T) searchController;
} else if (callbackInterface.isInstance(speedDialFragmentHost)) {
@@ -703,10 +530,9 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
BottomNavBar bottomNavBar,
FloatingActionButton fab,
MainToolbar mainToolbar,
- View toolbarShadow,
View fragmentContainer) {
return new MainSearchController(
- activity, bottomNavBar, fab, mainToolbar, toolbarShadow, fragmentContainer);
+ activity, bottomNavBar, fab, mainToolbar, fragmentContainer);
}
public MainOnDialpadQueryChangedListener getNewOnDialpadQueryChangedListener(
@@ -966,8 +792,6 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
@Override
public void onVoicemailStatusFetched(Cursor statusCursor) {
LogUtil.i("OldMainActivityPeer.MainCallLogFragmentListener", "onVoicemailStatusFetched");
- VoicemailStatusCorruptionHandler.maybeFixVoicemailStatus(
- context, statusCursor, Source.Activity);
// Update hasActiveVoicemailProvider, which controls the number of tabs displayed.
int numberOfActiveVoicemailSources =
@@ -983,7 +807,6 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
numberOfActiveVoicemailSources));
if (hasActiveVoicemailProvider) {
- Logger.get(context).logImpression(DialerImpression.Type.MAIN_VVM_TAB_VISIBLE);
bottomNavBar.showVoicemail(true);
callLogQueryHandler.fetchVoicemailUnreadCount();
} else {
@@ -1045,15 +868,8 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
}
private void markMissedCallsAsReadAndRemoveNotification() {
- if (bottomNavTabListener.newCallLogFragmentActive()) {
- Futures.addCallback(
- CallLogComponent.get(context).getClearMissedCalls().clearAll(),
- new DefaultFutureCallback<>(),
- MoreExecutors.directExecutor());
- } else {
- callLogQueryHandler.markMissedCallsAsRead();
- CallLogNotificationsService.cancelAllMissedCalls(context);
- }
+ callLogQueryHandler.markMissedCallsAsRead();
+ CallLogNotificationsService.cancelAllMissedCalls(context);
}
private void setCurrentTab(@TabIndex int tabIndex) {
@@ -1070,10 +886,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
registerVoicemailStatusContentObserver(context);
// TODO(a bug): Don't use callLogQueryHandler
callLogQueryHandler.fetchVoicemailStatus();
-
- if (!bottomNavTabListener.newCallLogFragmentActive()) {
- callLogQueryHandler.fetchMissedCallsUnreadCount();
- }
+ callLogQueryHandler.fetchMissedCallsUnreadCount();
// Reset the tab on resume to restart the timer
setCurrentTab(bottomNavBar.getSelectedTab());
}
@@ -1082,9 +895,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
public void onActivityStop(boolean changingConfigurations, boolean keyguardLocked) {
context.getContentResolver().unregisterContentObserver(voicemailStatusObserver);
activityIsAlive = false;
- // The new call log fragment handles this on its own.
- if (!bottomNavTabListener.newCallLogFragmentActive()
- && viewedCallLogTabPastTimeThreshold()
+ if (viewedCallLogTabPastTimeThreshold()
&& !changingConfigurations
&& !keyguardLocked) {
markMissedCallsAsReadAndRemoveNotification();
@@ -1102,157 +913,6 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
}
}
- /** @see OnListFragmentScrolledListener */
- private static final class MainOnListFragmentScrolledListener
- implements OnListFragmentScrolledListener {
-
- private final View parentLayout;
-
- MainOnListFragmentScrolledListener(View parentLayout) {
- this.parentLayout = parentLayout;
- }
-
- @Override
- public void onListFragmentScrollStateChange(int scrollState) {
- DialerUtils.hideInputMethod(parentLayout);
- }
-
- @Override
- public void onListFragmentScroll(
- int firstVisibleItem, int visibleItemCount, int totalItemCount) {
- // TODO: No-op for now. This should eventually show/hide the actionBar based on
- // interactions with the ListsFragments.
- }
- }
-
- /** @see OnPhoneNumberPickerActionListener */
- private static final class MainOnPhoneNumberPickerActionListener
- implements OnPhoneNumberPickerActionListener {
-
- private final TransactionSafeActivity activity;
-
- MainOnPhoneNumberPickerActionListener(TransactionSafeActivity activity) {
- this.activity = activity;
- }
-
- @Override
- public void onPickDataUri(
- Uri dataUri, boolean isVideoCall, CallSpecificAppData callSpecificAppData) {
- PhoneNumberInteraction.startInteractionForPhoneCall(
- activity, dataUri, isVideoCall, callSpecificAppData);
- }
-
- @Override
- public void onPickPhoneNumber(
- String phoneNumber, boolean isVideoCall, CallSpecificAppData callSpecificAppData) {
- if (phoneNumber == null) {
- // Invalid phone number, but let the call go through so that InCallUI can show
- // an error message.
- phoneNumber = "";
- }
- PreCall.start(
- activity,
- new CallIntentBuilder(phoneNumber, callSpecificAppData)
- .setIsVideoCall(isVideoCall)
- .setAllowAssistedDial(callSpecificAppData.getAllowAssistedDialing()));
- }
-
- @Override
- public void onHomeInActionBarSelected() {
- // TODO(calderwoodra): investigate if we need to exit search here
- // PhoneNumberPickerFragment#onOptionsItemSelected
- }
- }
-
- /**
- * Handles the callbacks for {@link OldSpeedDialFragment} and drag/drop logic for drag to remove.
- *
- * @see OldSpeedDialFragment.HostInterface
- * @see OnDragDropListener
- */
- private static final class MainOldSpeedDialFragmentHost
- implements OldSpeedDialFragment.HostInterface, OnDragDropListener {
-
- private final Context context;
- private final View rootLayout;
- private final BottomNavBar bottomNavBar;
- private final ImageView dragShadowOverlay;
- private final RemoveView removeView;
- private final View removeViewContent;
- private final View searchViewContainer;
- private final MainToolbar toolbar;
-
- MainOldSpeedDialFragmentHost(
- Context context,
- View rootLayout,
- BottomNavBar bottomNavBar,
- ImageView dragShadowOverlay,
- RemoveView removeView,
- View searchViewContainer,
- MainToolbar toolbar) {
- this.context = context;
- this.rootLayout = rootLayout;
- this.bottomNavBar = bottomNavBar;
- this.dragShadowOverlay = dragShadowOverlay;
- this.removeView = removeView;
- this.searchViewContainer = searchViewContainer;
- this.toolbar = toolbar;
- removeViewContent = removeView.findViewById(R.id.remove_view_content);
- }
-
- @Override
- public void setDragDropController(DragDropController dragDropController) {
- removeView.setDragDropController(dragDropController);
- rootLayout.setOnDragListener(
- (v, event) -> {
- if (event.getAction() == DragEvent.ACTION_DRAG_LOCATION) {
- dragDropController.handleDragHovered(v, (int) event.getX(), (int) event.getY());
- }
- return true;
- });
- }
-
- @Override
- public void showAllContactsTab() {
- bottomNavBar.selectTab(TabIndex.CONTACTS);
- Logger.get(context).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_TAB_CONTACTS);
- }
-
- @Override
- public ImageView getDragShadowOverlay() {
- return dragShadowOverlay;
- }
-
- @Override
- public void setHasFrequents(boolean hasFrequents) {
- toolbar.showClearFrequents(hasFrequents);
- }
-
- @Override
- public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
- showRemoveView(true);
- }
-
- @Override
- public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view) {}
-
- @Override
- public void onDragFinished(int x, int y) {
- showRemoveView(false);
- }
-
- @Override
- public void onDroppedOnRemove() {}
-
- private void showRemoveView(boolean show) {
- if (show) {
- AnimUtils.crossFadeViews(removeViewContent, searchViewContainer, 300);
- } else {
- AnimUtils.crossFadeViews(searchViewContainer, removeViewContent, 300);
- }
- }
- }
-
/**
* Handles the callbacks for {@link SpeedDialFragment}.
*
@@ -1331,21 +991,14 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
if (selectedTab == TabIndex.SPEED_DIAL) {
return;
}
- Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_SPEED_DIAL, activity);
selectedTab = TabIndex.SPEED_DIAL;
- if (ConfigProviderComponent.get(activity)
- .getConfigProvider()
- .getBoolean("enable_new_favorites_tab", false)) {
- android.support.v4.app.Fragment supportFragment =
- supportFragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
- showSupportFragment(
- supportFragment == null ? SpeedDialFragment.newInstance() : supportFragment,
- SPEED_DIAL_TAG);
- } else {
- Fragment fragment = fragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
- showFragment(fragment == null ? new OldSpeedDialFragment() : fragment, SPEED_DIAL_TAG);
- }
+ android.support.v4.app.Fragment supportFragment =
+ supportFragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
+ showSupportFragment(
+ supportFragment == null ? SpeedDialFragment.newInstance() : supportFragment,
+ SPEED_DIAL_TAG);
+
fab.show();
}
@@ -1355,18 +1008,11 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
if (selectedTab == TabIndex.CALL_LOG) {
return;
}
- Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_CALL_LOG, activity);
selectedTab = TabIndex.CALL_LOG;
- if (CallLogConfigComponent.get(activity).callLogConfig().isNewCallLogFragmentEnabled()) {
- android.support.v4.app.Fragment supportFragment =
- supportFragmentManager.findFragmentByTag(CALL_LOG_TAG);
- showSupportFragment(
- supportFragment == null ? new NewCallLogFragment() : supportFragment, CALL_LOG_TAG);
- } else {
- Fragment fragment = fragmentManager.findFragmentByTag(CALL_LOG_TAG);
- showFragment(fragment == null ? new CallLogFragment() : fragment, CALL_LOG_TAG);
- }
+ Fragment fragment = fragmentManager.findFragmentByTag(CALL_LOG_TAG);
+ showFragment(fragment == null ? new CallLogFragment() : fragment, CALL_LOG_TAG);
+
fab.show();
showPromotionBottomSheet(activity, bottomSheet);
}
@@ -1401,86 +1047,12 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
- void disableNewCallLogFragment() {
- LogUtil.i("MainBottomNavBarBottomNavTabListener.disableNewCallLogFragment", "disabled");
- android.support.v4.app.Fragment supportFragment =
- supportFragmentManager.findFragmentByTag(CALL_LOG_TAG);
- if (supportFragment != null) {
- supportFragmentManager.beginTransaction().remove(supportFragment).commitAllowingStateLoss();
- // If the NewCallLogFragment was showing, immediately show the old call log fragment
- // instead.
- if (selectedTab == TabIndex.CALL_LOG) {
- LogUtil.i(
- "MainBottomNavBarBottomNavTabListener.disableNewCallLogFragment", "showing old");
- Fragment fragment = fragmentManager.findFragmentByTag(CALL_LOG_TAG);
- showFragment(fragment == null ? new CallLogFragment() : fragment, CALL_LOG_TAG);
- }
- }
- }
-
- void disableNewVoicemailFragment() {
- LogUtil.i("MainBottomNavBarBottomNavTabListener.disableNewVoicemailFragment", "disabled");
- android.support.v4.app.Fragment supportFragment =
- supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG);
- if (supportFragment != null) {
- supportFragmentManager.beginTransaction().remove(supportFragment).commitAllowingStateLoss();
- // If the NewVoicemailFragment was showing, immediately show the old voicemail fragment
- // instead.
- if (selectedTab == TabIndex.VOICEMAIL) {
- LogUtil.i(
- "MainBottomNavBarBottomNavTabListener.disableNewVoicemailFragment", "showing old");
- Fragment fragment = fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
- showFragment(
- fragment == null ? new VisualVoicemailCallLogFragment() : fragment, VOICEMAIL_TAG);
- }
- }
- }
-
- void ensureCorrectCallLogShown() {
- android.support.v4.app.Fragment supportFragment =
- supportFragmentManager.findFragmentByTag(CALL_LOG_TAG);
- if (supportFragment != null
- && !CallLogConfigComponent.get(activity).callLogConfig().isNewCallLogFragmentEnabled()) {
- LogUtil.i("MainBottomNavBarBottomNavTabListener.ensureCorrectCallLogShown", "disabling");
- disableNewCallLogFragment();
- }
- }
-
- void ensureCorrectVoicemailShown() {
- android.support.v4.app.Fragment supportFragment =
- supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG);
- if (supportFragment != null
- && !CallLogConfigComponent.get(activity)
- .callLogConfig()
- .isNewVoicemailFragmentEnabled()) {
- LogUtil.i("MainBottomNavBarBottomNavTabListener.ensureCorrectVoicemailShown", "disabling");
- disableNewVoicemailFragment();
- }
- }
-
- boolean newCallLogFragmentActive() {
- return supportFragmentManager.findFragmentByTag(CALL_LOG_TAG) != null
- || (fragmentManager.findFragmentByTag(CALL_LOG_TAG) == null
- && CallLogConfigComponent.get(activity)
- .callLogConfig()
- .isNewCallLogFragmentEnabled());
- }
-
- boolean newVoicemailFragmentActive() {
- return supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG) != null
- || (fragmentManager.findFragmentByTag(VOICEMAIL_TAG) == null
- && CallLogConfigComponent.get(activity)
- .callLogConfig()
- .isNewVoicemailFragmentEnabled());
- }
-
@Override
public void onContactsSelected() {
LogUtil.enterBlock("MainBottomNavBarBottomNavTabListener.onContactsSelected");
if (selectedTab == TabIndex.CONTACTS) {
return;
}
- Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_CONTACTS, activity);
selectedTab = TabIndex.CONTACTS;
Fragment fragment = fragmentManager.findFragmentByTag(CONTACTS_TAG);
showFragment(
@@ -1495,24 +1067,16 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
if (selectedTab == TabIndex.VOICEMAIL) {
return;
}
- Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_VOICEMAIL, activity);
selectedTab = TabIndex.VOICEMAIL;
- if (CallLogConfigComponent.get(activity).callLogConfig().isNewVoicemailFragmentEnabled()) {
- android.support.v4.app.Fragment supportFragment =
- supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG);
- showSupportFragment(
- supportFragment == null ? new NewVoicemailFragment() : supportFragment, VOICEMAIL_TAG);
- } else {
- VisualVoicemailCallLogFragment fragment =
- (VisualVoicemailCallLogFragment) fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
- if (fragment == null) {
- fragment = new VisualVoicemailCallLogFragment();
- }
- showFragment(fragment, VOICEMAIL_TAG);
- fragment.setUserVisibleHint(true);
- fragment.onVisible();
+ VisualVoicemailCallLogFragment fragment =
+ (VisualVoicemailCallLogFragment) fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
+ if (fragment == null) {
+ fragment = new VisualVoicemailCallLogFragment();
}
+ showFragment(fragment, VOICEMAIL_TAG);
+ fragment.setUserVisibleHint(true);
+ fragment.onVisible();
}
private void showFragment(@NonNull Fragment fragment, String tag) {
diff --git a/java/com/android/dialer/main/impl/bottomnav/BottomNavBar.java b/java/com/android/dialer/main/impl/bottomnav/BottomNavBar.java
index 798f01edfe350ac098b3804f5898dc22ff9153f0..7a7e37d68137b43f95f8cfdaf4c699fe12a9dde6 100644
--- a/java/com/android/dialer/main/impl/bottomnav/BottomNavBar.java
+++ b/java/com/android/dialer/main/impl/bottomnav/BottomNavBar.java
@@ -17,15 +17,18 @@
package com.android.dialer.main.impl.bottomnav;
import android.content.Context;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
+import com.android.dialer.main.impl.MainActivity;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -69,43 +72,19 @@ public final class BottomNavBar extends LinearLayout {
contacts = findViewById(R.id.contacts_tab);
voicemail = findViewById(R.id.voicemail_tab);
- speedDial.setup(R.string.tab_title_speed_dial, R.drawable.quantum_ic_star_vd_theme_24);
- callLog.setup(R.string.tab_title_call_history, R.drawable.quantum_ic_access_time_vd_theme_24);
- contacts.setup(R.string.tab_all_contacts, R.drawable.quantum_ic_people_vd_theme_24);
- voicemail.setup(R.string.tab_title_voicemail, R.drawable.quantum_ic_voicemail_vd_theme_24);
-
- speedDial.setOnClickListener(
- v -> {
- if (selectedTab != TabIndex.SPEED_DIAL) {
- Logger.get(getContext())
- .logImpression(DialerImpression.Type.MAIN_SWITCH_TAB_TO_FAVORITE);
- }
- selectTab(TabIndex.SPEED_DIAL);
- });
- callLog.setOnClickListener(
- v -> {
- if (selectedTab != TabIndex.CALL_LOG) {
- Logger.get(getContext())
- .logImpression(DialerImpression.Type.MAIN_SWITCH_TAB_TO_CALL_LOG);
- }
- selectTab(TabIndex.CALL_LOG);
- });
- contacts.setOnClickListener(
- v -> {
- if (selectedTab != TabIndex.CONTACTS) {
- Logger.get(getContext())
- .logImpression(DialerImpression.Type.MAIN_SWITCH_TAB_TO_CONTACTS);
- }
- selectTab(TabIndex.CONTACTS);
- });
- voicemail.setOnClickListener(
- v -> {
- if (selectedTab != TabIndex.VOICEMAIL) {
- Logger.get(getContext())
- .logImpression(DialerImpression.Type.MAIN_SWITCH_TAB_TO_VOICEMAIL);
- }
- selectTab(TabIndex.VOICEMAIL);
- });
+ speedDial.setup(R.string.tab_title_speed_dial, R.drawable.quantum_ic_star_outline_vd_theme_24,
+ R.drawable.quantum_ic_star_vd_theme_24);
+ callLog.setup(R.string.tab_title_call_history, R.drawable.quantum_ic_access_time_vd_theme_24,
+ R.drawable.quantum_ic_clock_filled_vd_theme_24);
+ contacts.setup(R.string.tab_all_contacts, R.drawable.quantum_ic_people_outline_vd_theme_24,
+ R.drawable.quantum_ic_people_vd_theme_24);
+ voicemail.setup(R.string.tab_title_voicemail, R.drawable.quantum_ic_voicemail_vd_theme_24,
+ R.drawable.quantum_ic_voicemail_vd_theme_24);
+
+ speedDial.setOnClickListener(v -> selectTab(TabIndex.SPEED_DIAL));
+ callLog.setOnClickListener(v -> selectTab(TabIndex.CALL_LOG));
+ contacts.setOnClickListener(v -> selectTab(TabIndex.CONTACTS));
+ voicemail.setOnClickListener(v -> selectTab(TabIndex.VOICEMAIL));
}
private void setSelected(View view) {
diff --git a/java/com/android/dialer/main/impl/bottomnav/BottomNavItem.java b/java/com/android/dialer/main/impl/bottomnav/BottomNavItem.java
index 4cba2a4709c44113fbb9ffe92027f5fd4fed5bde..eafcaeda14f16c4987034cda2be13498ceed3c80 100644
--- a/java/com/android/dialer/main/impl/bottomnav/BottomNavItem.java
+++ b/java/com/android/dialer/main/impl/bottomnav/BottomNavItem.java
@@ -16,28 +16,44 @@
package com.android.dialer.main.impl.bottomnav;
+import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.ColorStateList;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.Nullable;
-import android.support.annotation.Px;
-import android.support.annotation.StringRes;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.Px;
+import androidx.annotation.StringRes;
+
+import com.android.dialer.R;
import com.android.dialer.common.Assert;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.theme.base.ThemeComponent;
+import com.android.dialer.common.MathUtil;
+import com.android.dialer.util.DialerUtils;
+import com.android.incallui.answer.impl.utils.Interpolators;
/** Navigation item in a bottom nav. */
final class BottomNavItem extends LinearLayout {
+ @Nullable
+ private View activeIndicatorView;
+ private ValueAnimator activeIndicatorAnimator;
private ImageView image;
private TextView text;
private TextView notificationBadge;
+ private @DrawableRes int drawableRes;
+ private @DrawableRes int drawableResSelected;
+
+ private final ActiveIndicatorTransform activeIndicatorTransform = new ActiveIndicatorTransform();
+ private float activeIndicatorProgress = 0F;
+ private boolean initialized;
public BottomNavItem(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
@@ -46,23 +62,64 @@ final class BottomNavItem extends LinearLayout {
@Override
protected void onFinishInflate() {
super.onFinishInflate();
+ activeIndicatorView = findViewById(R.id.active_indicator);
+ activeIndicatorView.setBackgroundResource(R.drawable.pill);
image = findViewById(R.id.bottom_nav_item_image);
text = findViewById(R.id.bottom_nav_item_text);
notificationBadge = findViewById(R.id.notification_badge);
+ initialized = true;
}
@Override
public void setSelected(boolean selected) {
super.setSelected(selected);
- int colorId =
- selected
- ? getContext().getResources().getColor(R.color.nav_item_selected)
- : getContext().getResources().getColor(R.color.nav_item);
+ int colorId = selected
+ ? DialerUtils.resolveColor(getContext(), android.R.attr.textColorPrimary)
+ : DialerUtils.resolveColor(getContext(), android.R.attr.textColorSecondary);
+ image.setImageResource(selected ? drawableResSelected : drawableRes);
image.setImageTintList(ColorStateList.valueOf(colorId));
text.setTextColor(colorId);
+
+ float newIndicatorProgress = selected ? 1F : 0F;
+ maybeAnimateActiveIndicatorToProgress(newIndicatorProgress);
+ }
+
+ private void setActiveIndicatorProgress(
+ @FloatRange(from = 0F, to = 1F) float progress, float target) {
+ if (activeIndicatorView != null) {
+ activeIndicatorTransform.updateForProgress(progress, target, activeIndicatorView);
+ }
+ activeIndicatorProgress = progress;
}
- void setup(@StringRes int stringRes, @DrawableRes int drawableRes) {
+ /** If the active indicator is enabled, animate from it's current state to it's new state. */
+ private void maybeAnimateActiveIndicatorToProgress(
+ @FloatRange(from = 0F, to = 1F) final float newProgress) {
+ // If the active indicator is disabled or this view is in the process of being initialized,
+ // jump the active indicator to it's final state.
+ if (!initialized || activeIndicatorView == null || !activeIndicatorView.isAttachedToWindow()) {
+ setActiveIndicatorProgress(newProgress, newProgress);
+ return;
+ }
+
+ if (activeIndicatorAnimator != null) {
+ activeIndicatorAnimator.cancel();
+ activeIndicatorAnimator = null;
+ }
+ activeIndicatorAnimator = ValueAnimator.ofFloat(activeIndicatorProgress, newProgress);
+ activeIndicatorAnimator.addUpdateListener(animation -> {
+ float progress = (float) animation.getAnimatedValue();
+ setActiveIndicatorProgress(progress, newProgress);
+ });
+ activeIndicatorAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
+ activeIndicatorAnimator.setDuration(400);
+ activeIndicatorAnimator.start();
+ }
+
+ void setup(@StringRes int stringRes, @DrawableRes int drawableRes,
+ @DrawableRes int drawableResSelected) {
+ this.drawableRes = drawableRes;
+ this.drawableResSelected = drawableResSelected;
text.setText(stringRes);
image.setImageResource(drawableRes);
}
@@ -74,15 +131,7 @@ final class BottomNavItem extends LinearLayout {
} else {
String countString = String.format(Integer.toString(count));
- boolean use99PlusCount =
- ConfigProviderComponent.get(getContext())
- .getConfigProvider()
- .getBoolean("use_99_plus", false);
- boolean use9Plus = !use99PlusCount;
-
- if (use99PlusCount && count > 99) {
- countString = getContext().getString(R.string.bottom_nav_count_99_plus);
- } else if (use9Plus && count > 9) {
+ if (count > 9) {
countString = getContext().getString(R.string.bottom_nav_count_9_plus);
}
notificationBadge.setVisibility(View.VISIBLE);
@@ -103,4 +152,69 @@ final class BottomNavItem extends LinearLayout {
image.setLayoutParams(params);
}
}
+
+ /**
+ * A class used to manipulate the {@link NavigationBarItemView}'s active indicator view when
+ * animating between hidden and shown.
+ *
+ *
By default, this class scales the indicator in the x direction to reveal the default pill
+ * shape.
+ *
+ *
Subclasses can override {@link #updateForProgress(float, float, View)} to manipulate the
+ * view in any way appropriate.
+ */
+ private static class ActiveIndicatorTransform {
+
+ private static final float SCALE_X_HIDDEN = .4F;
+ private static final float SCALE_X_SHOWN = 1F;
+
+ // The fraction of the animation's total duration over which the indicator will be faded in or
+ // out.
+ private static final float ALPHA_FRACTION = 1F / 5F;
+
+ /**
+ * Calculate the alpha value, based on a progress and target value, that has the indicator
+ * appear or disappear over the first 1/5th of the transform.
+ */
+ protected float calculateAlpha(
+ @FloatRange(from = 0F, to = 1F) float progress,
+ @FloatRange(from = 0F, to = 1F) float targetValue) {
+ // Animate the alpha of the indicator over the first ALPHA_FRACTION of the animation
+ float startAlphaFraction = targetValue == 0F ? 1F - ALPHA_FRACTION : 0F;
+ float endAlphaFraction = targetValue == 0F ? 1F : 0F + ALPHA_FRACTION;
+ return MathUtil.lerp(0F, 1F, progress);
+ }
+
+ protected float calculateScaleX(
+ @FloatRange(from = 0F, to = 1F) float progress,
+ @FloatRange(from = 0F, to = 1F) float targetValue) {
+ return MathUtil.lerp(SCALE_X_HIDDEN, SCALE_X_SHOWN, progress);
+ }
+
+ protected float calculateScaleY(
+ @FloatRange(from = 0F, to = 1F) float progress,
+ @FloatRange(from = 0F, to = 1F) float targetValue) {
+ return 1F;
+ }
+
+ /**
+ * Called whenever the {@code indicator} should update its parameters (scale, alpha, etc.) in
+ * response to a change in progress.
+ *
+ * @param progress A value between 0 and 1 where 0 represents a fully hidden indicator and 1
+ * indicates a fully shown indicator.
+ * @param targetValue The final value towards which the progress is moving. This will be either
+ * 0 and 1 and can be used to determine whether the indicator is showing or hiding if show
+ * and hide animations differ.
+ * @param indicator The active indicator {@link View}.
+ */
+ public void updateForProgress(
+ @FloatRange(from = 0F, to = 1F) float progress,
+ @FloatRange(from = 0F, to = 1F) float targetValue,
+ @NonNull View indicator) {
+ indicator.setScaleX(calculateScaleX(progress, targetValue));
+ indicator.setScaleY(calculateScaleY(progress, targetValue));
+ indicator.setAlpha(calculateAlpha(progress, targetValue));
+ }
+ }
}
diff --git a/java/com/android/dialer/main/impl/bottomnav/MissedCallCountObserver.java b/java/com/android/dialer/main/impl/bottomnav/MissedCallCountObserver.java
index a4995c1e693fcf1d71d015c06d188c0e33124b2a..9907d84346616e14c95bf2b291b6747df6345aae 100644
--- a/java/com/android/dialer/main/impl/bottomnav/MissedCallCountObserver.java
+++ b/java/com/android/dialer/main/impl/bottomnav/MissedCallCountObserver.java
@@ -21,7 +21,9 @@ import android.content.Context;
import android.database.ContentObserver;
import android.database.Cursor;
import android.provider.CallLog.Calls;
-import android.support.annotation.RequiresPermission;
+
+import androidx.annotation.RequiresPermission;
+
import com.android.dialer.common.concurrent.DialerExecutorComponent;
import com.android.dialer.common.concurrent.UiListener;
import com.android.dialer.main.impl.bottomnav.BottomNavBar.TabIndex;
diff --git a/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_bar_layout.xml b/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_bar_layout.xml
index 1dd60d8dbf2f133416ba2af4c8873d8ad9954a2c..668a6557ecff0a061c3ed4476a42a7ba52c57143 100644
--- a/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_bar_layout.xml
+++ b/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_bar_layout.xml
@@ -19,7 +19,7 @@
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="?android:attr/colorBackgroundFloating"
+ android:background="@color/rounded_dialpad_bg_color"
android:elevation="8dp">
-
\ No newline at end of file
+
diff --git a/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_item.xml b/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_item.xml
index 02874a9d8d103ee9a912ffbfdeaf0e54b6f5f62a..874acd9b9a90cf34d0d549af296fe6ca03554768 100644
--- a/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_item.xml
+++ b/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_item.xml
@@ -16,23 +16,41 @@
-->
+ android:gravity="center">
+
+
+
+
+ android:layout_marginTop="4dp"
+ android:layout_marginBottom="4dp"
+ android:layout_gravity="center"
+ tools:src="@drawable/quantum_ic_star_vd_theme_24"/>
+
-
\ No newline at end of file
+ style="@style/Dialer.TextAppearance.OVERLINE"
+ android:textColor="?android:attr/textColorPrimary"/>
+
diff --git a/java/com/android/dialer/main/impl/bottomnav/res/values/strings.xml b/java/com/android/dialer/main/impl/bottomnav/res/values/strings.xml
index 6d38869595a18ae327e942068e0bd344e7580bc9..36189b852fa233467fbe059777f2513ed9ec6796 100644
--- a/java/com/android/dialer/main/impl/bottomnav/res/values/strings.xml
+++ b/java/com/android/dialer/main/impl/bottomnav/res/values/strings.xml
@@ -21,12 +21,7 @@
FavoritesVoicemail
-
- Contacts9+
-
-
- 99+
-
\ No newline at end of file
+
diff --git a/java/com/android/dialer/main/impl/res/layout/default_dialer_view.xml b/java/com/android/dialer/main/impl/res/layout/default_dialer_view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..917ac9956faf0aefac8b7c0762cd77a7da82a69f
--- /dev/null
+++ b/java/com/android/dialer/main/impl/res/layout/default_dialer_view.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
diff --git a/java/com/android/dialer/main/impl/res/layout/main_activity.xml b/java/com/android/dialer/main/impl/res/layout/main_activity.xml
index 25db6377345e4f7e6b69166924592615669e0a57..96ad911bcbcaa4212ff1555876f3f55a7ab317d0 100644
--- a/java/com/android/dialer/main/impl/res/layout/main_activity.xml
+++ b/java/com/android/dialer/main/impl/res/layout/main_activity.xml
@@ -27,8 +27,6 @@
layout="@layout/toolbar_layout"/>
-
-
+ app:backgroundTint="@color/dialer_theme_color_light"/>
diff --git a/java/com/android/dialer/main/impl/res/values-af/strings.xml b/java/com/android/dialer/main/impl/res/values-af/strings.xml
index 807a21063819a90dd12c4e46c0a28b2a9c394c53..fd974b7fc7bdc4fa53b246d505ffa8cd637805ff 100644
--- a/java/com/android/dialer/main/impl/res/values-af/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-af/strings.xml
@@ -18,12 +18,7 @@
"Foon"
- "@android:string/search_go"
- "Deursoek kontakte en plekke"
- "Kontakte"
- "Bekyk kontakte""Oproepgeskiedenis""Spoedbel""Stemboodskap"
- "Instellings"
diff --git a/java/com/android/dialer/main/impl/res/values-am/strings.xml b/java/com/android/dialer/main/impl/res/values-am/strings.xml
index da7efe48cfcb42b6de212674e9941a06beabfd59..a6e1fecdff1646beb64ea19130a653e4815a0516 100644
--- a/java/com/android/dialer/main/impl/res/values-am/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-am/strings.xml
@@ -18,12 +18,7 @@
"ስልክ"
- "@android:string/search_go"
- "ዕውቂያዎችን እና ቦታዎችን ይፈልጉ"
- "እውቂያዎች"
- "እውቂያዎችን ይመልከቱ""የጥሪ ታሪክ""አቋራጭ መደወያ""የድምፅ መልዕክት"
- "ቅንብሮች"
diff --git a/java/com/android/dialer/main/impl/res/values-ar/strings.xml b/java/com/android/dialer/main/impl/res/values-ar/strings.xml
index ea066199ce8331ba882e80612ed83caef76f91b5..60a22fa4767fac8e7ef1fe86cb527ba397a45ed8 100644
--- a/java/com/android/dialer/main/impl/res/values-ar/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ar/strings.xml
@@ -18,12 +18,7 @@
"الهاتف"
- "@android:string/search_go"
- "البحث عن جهات الاتصال والأماكن"
- "جهات الاتصال"
- "عرض جهات الاتصال""سجلّ المكالمات""اتصال سريع""بريد صوتي"
- "الإعدادات"
diff --git a/java/com/android/dialer/main/impl/res/values-az/strings.xml b/java/com/android/dialer/main/impl/res/values-az/strings.xml
index ca63818316345ccc4ff24732600d52c3ca997f1c..59073313714a1017e7b950e9bf6088b8aca3a1b9 100644
--- a/java/com/android/dialer/main/impl/res/values-az/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-az/strings.xml
@@ -18,12 +18,7 @@
"Telefon"
- "@android:string/search_go"
- "Kontakt və yer axtarın"
- "Kontaktlar"
- "Kontaktlara Baxın""Zəng Tarixçəsi""Cəld Yığım""E-məktub"
- "Ayarlar"
diff --git a/java/com/android/dialer/main/impl/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/main/impl/res/values-b+sr+Latn/strings.xml
index b4c35614961e1594b280f52e6d6168fe66bd691d..0157b52ac79091913d0abd662efd00c2c59e5e48 100644
--- a/java/com/android/dialer/main/impl/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-b+sr+Latn/strings.xml
@@ -18,12 +18,7 @@
"Telefon"
- "@android:string/search_go"
- "Pretražite kontakte i mesta"
- "Kontakti"
- "Pregledajte kontakte""Ist. poziva""Brzo poz.""Gov. pošta"
- "Podešavanja"
diff --git a/java/com/android/dialer/main/impl/res/values-be/strings.xml b/java/com/android/dialer/main/impl/res/values-be/strings.xml
index 68bed0d396edf0207b6b11913d63e73f3ed36c4b..35d8e2c4af2c77828ccc046b1e09911c26d7fcf9 100644
--- a/java/com/android/dialer/main/impl/res/values-be/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-be/strings.xml
@@ -18,12 +18,7 @@
"Тэлефон"
- "@android:string/search_go"
- "Пошук кантактаў і месцаў"
- "Кантакты"
- "Прагляд кантактаў""Выклікі""Хуткі наб.""Гал. пошта"
- "Налады"
diff --git a/java/com/android/dialer/main/impl/res/values-bg/strings.xml b/java/com/android/dialer/main/impl/res/values-bg/strings.xml
index 8d7cc056ba0ff6080cc346d477c28ff74dc78f6d..bd2da314cc42e200e7420e6a681005310872fe6a 100644
--- a/java/com/android/dialer/main/impl/res/values-bg/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-bg/strings.xml
@@ -18,12 +18,7 @@
"Телефон"
- "@android:string/search_go"
- "Търсене на контакти и места"
- "Контакти"
- "Преглед на контактите""История""Бързо наб.""Гл. поща"
- "Настройки"
diff --git a/java/com/android/dialer/main/impl/res/values-bn/strings.xml b/java/com/android/dialer/main/impl/res/values-bn/strings.xml
index a9a63dc9a8b61456c1c1be8064a38592a9adc88c..dd2ff75a1fca958112cb637bf4437d7caec15529 100644
--- a/java/com/android/dialer/main/impl/res/values-bn/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-bn/strings.xml
@@ -18,12 +18,7 @@
"ফোন"
- "@android:string/search_go"
- "পরিচিতি এবং স্থানগুলি খুঁজুন"
- "পরিচিতিগুলি"
- "পরিচিতিগুলি দেখুন""কলের ইতিহাস""দ্রুত ডায়াল""ভয়েসমেল"
- "সেটিংস"
diff --git a/java/com/android/dialer/main/impl/res/values-bs/strings.xml b/java/com/android/dialer/main/impl/res/values-bs/strings.xml
index c93dfb7940f219b8e4e5b045abe5bb7b32398fae..f45a2906047ae9d040f8dbd55458a253e10b2646 100644
--- a/java/com/android/dialer/main/impl/res/values-bs/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-bs/strings.xml
@@ -18,12 +18,7 @@
"Telefon"
- "@android:string/search_go"
- "Pretraži kontakte i mjesta"
- "Kontakti"
- "Prikaži kontakte""His. pozi.""Brzo bira.""Govor. poš."
- "Postavke"
diff --git a/java/com/android/dialer/main/impl/res/values-ca/strings.xml b/java/com/android/dialer/main/impl/res/values-ca/strings.xml
index fc19cfba38a956486bb3be194fa62371810a0087..3375bcb7bdc4d93f20ba7e9260738bc97a71e20f 100644
--- a/java/com/android/dialer/main/impl/res/values-ca/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ca/strings.xml
@@ -18,12 +18,7 @@
"Telèfon"
- "@android:string/search_go"
- "Cerca contactes i llocs"
- "Contactes"
- "Mostra contactes""Hist. trucades""Marc. ràpid""Miss. de veu"
- "Configuració"
diff --git a/java/com/android/dialer/main/impl/res/values-cs/strings.xml b/java/com/android/dialer/main/impl/res/values-cs/strings.xml
index fb4dba1f27a8ccd3fe4f36192d055d657b282174..eae65f3aea1ed4226228dad4f5075f0a3a200044 100644
--- a/java/com/android/dialer/main/impl/res/values-cs/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-cs/strings.xml
@@ -18,12 +18,7 @@
"Telefon"
- "@android:string/search_go"
- "Hledat kontakty a místa"
- "Kontakty"
- "Zobrazit kontakty""Historie volání""Oblíbené""Schránka"
- "Nastavení"
diff --git a/java/com/android/dialer/main/impl/res/values-da/strings.xml b/java/com/android/dialer/main/impl/res/values-da/strings.xml
index fec5f74db96b030dcf282d45a6a69eecfc1da0de..ce342ee67bb4b328bfa95d9f380756e6420c7cef 100644
--- a/java/com/android/dialer/main/impl/res/values-da/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-da/strings.xml
@@ -18,12 +18,7 @@
"Telefon"
- "@android:string/search_go"
- "Søg efter kontaktpersoner og steder"
- "Kontaktpersoner"
- "Se kontaktpersoner""Opkaldshistorik""Hurtigkald""Talebesked"
- "Indstillinger"
diff --git a/java/com/android/dialer/main/impl/res/values-de/strings.xml b/java/com/android/dialer/main/impl/res/values-de/strings.xml
index 891caba7b255055f443e584b28d3e445f45f802e..2fc8615bad582ed851abffdbc40bc61bafb86934 100644
--- a/java/com/android/dialer/main/impl/res/values-de/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-de/strings.xml
@@ -18,12 +18,7 @@
"Telefon"
- "@android:string/search_go"
- "Kontakte und Orte suchen"
- "Kontakte"
- "Kontakte ansehen""Anrufliste""Kurzwahl""Mailbox"
- "Einstellungen"
diff --git a/java/com/android/dialer/main/impl/res/values-el/strings.xml b/java/com/android/dialer/main/impl/res/values-el/strings.xml
index 30613d8c7f7ff38ef2fb02b9ad81dc4da2a45e35..0deb3e88f3284970728870fbb41d62ec680eba73 100644
--- a/java/com/android/dialer/main/impl/res/values-el/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-el/strings.xml
@@ -18,12 +18,7 @@
"Τηλέφωνο"
- "@android:string/search_go"
- "Αναζητήστε επαφές και μέρη"
- "Επαφές"
- "Προβολή επαφών""Ιστορικό""Ταχεία κλ.""Αυτ. τηλ."
- "Ρυθμίσεις"
diff --git a/java/com/android/dialer/main/impl/res/values-en-rAU/strings.xml b/java/com/android/dialer/main/impl/res/values-en-rAU/strings.xml
index aca6d15f33924ead3b6b9fbe9d4a314ba568d7c7..d2b06f17bd992804a2a6d38247bee4aff17e64e5 100644
--- a/java/com/android/dialer/main/impl/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-en-rAU/strings.xml
@@ -18,12 +18,7 @@
"Telephone"
- "@android:string/search_go"
- "Search contacts and places"
- "Contacts"
- "View contacts""Call history""Speed dial""Voicemail"
- "Settings"
diff --git a/java/com/android/dialer/main/impl/res/values-en-rGB/strings.xml b/java/com/android/dialer/main/impl/res/values-en-rGB/strings.xml
index aca6d15f33924ead3b6b9fbe9d4a314ba568d7c7..d2b06f17bd992804a2a6d38247bee4aff17e64e5 100644
--- a/java/com/android/dialer/main/impl/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-en-rGB/strings.xml
@@ -18,12 +18,7 @@
"Telephone"
- "@android:string/search_go"
- "Search contacts and places"
- "Contacts"
- "View contacts""Call history""Speed dial""Voicemail"
- "Settings"
diff --git a/java/com/android/dialer/main/impl/res/values-en-rIN/strings.xml b/java/com/android/dialer/main/impl/res/values-en-rIN/strings.xml
index aca6d15f33924ead3b6b9fbe9d4a314ba568d7c7..d2b06f17bd992804a2a6d38247bee4aff17e64e5 100644
--- a/java/com/android/dialer/main/impl/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-en-rIN/strings.xml
@@ -18,12 +18,7 @@
"Telephone"
- "@android:string/search_go"
- "Search contacts and places"
- "Contacts"
- "View contacts""Call history""Speed dial""Voicemail"
- "Settings"
diff --git a/java/com/android/dialer/main/impl/res/values-es-rUS/strings.xml b/java/com/android/dialer/main/impl/res/values-es-rUS/strings.xml
index e015142bf42eef4e23e0bd3b260cc72530a92327..c55027645fbc15d12b77718a3d95e7f51b38a67e 100644
--- a/java/com/android/dialer/main/impl/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-es-rUS/strings.xml
@@ -18,12 +18,7 @@
"Teléfono"
- "@android:string/search_go"
- "Buscar contactos y lugares"
- "Contactos"
- "Ver contactos""Hist. llam""Marc. ráp.""Buz. voz"
- "Configuración"
diff --git a/java/com/android/dialer/main/impl/res/values-es/strings.xml b/java/com/android/dialer/main/impl/res/values-es/strings.xml
index 0d6f677c1383529c40548c040fcb52ccc3d7872b..fd4801d3d8a5d41847d558be88513fad60de4a71 100644
--- a/java/com/android/dialer/main/impl/res/values-es/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-es/strings.xml
@@ -18,12 +18,7 @@
"Teléfono"
- "@android:string/search_go"
- "Buscar contactos y sitios"
- "Contactos"
- "Ver contactos""Historial""Marcación""Buzón"
- "Ajustes"
diff --git a/java/com/android/dialer/main/impl/res/values-et/strings.xml b/java/com/android/dialer/main/impl/res/values-et/strings.xml
index b2bad401c85a214fd6d731d56725669ded1aedcf..32d431c3145376b0dbc73f011e864887a35ef94c 100644
--- a/java/com/android/dialer/main/impl/res/values-et/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-et/strings.xml
@@ -18,12 +18,7 @@
"Telefon"
- "@android:string/search_go"
- "Otsige kontakte ja soovitusi"
- "Kontaktid"
- "Vaadake kontakte""Kõneajalugu""Kiirvalimine""Kõnepost"
- "Seaded"
diff --git a/java/com/android/dialer/main/impl/res/values-eu/strings.xml b/java/com/android/dialer/main/impl/res/values-eu/strings.xml
index de46e5d0a504bd3bf891a296ac0ec5f4471e616f..a977e96927587a66804073a0470d212f98887801 100644
--- a/java/com/android/dialer/main/impl/res/values-eu/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-eu/strings.xml
@@ -18,12 +18,7 @@
"Telefonoa"
- "@android:string/search_go"
- "Ikusi kontaktuak eta tokiak"
- "Kontaktuak"
- "Ikusi kontaktuak""Deien historia""Mark. biz.""Erantzung."
- "Ezarpenak"
diff --git a/java/com/android/dialer/main/impl/res/values-fa/strings.xml b/java/com/android/dialer/main/impl/res/values-fa/strings.xml
index aa727125145b761e4e7327b07d2bb7c836f01806..2f14cfc4f112535c79e48f13c6c35ab7e17175f0 100644
--- a/java/com/android/dialer/main/impl/res/values-fa/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-fa/strings.xml
@@ -18,12 +18,7 @@
"تلفن"
- "@android:string/search_go"
- "جستجوی مخاطبین و مکانها"
- "مخاطبین"
- "مشاهده مخاطبین""سابقه تماس""شمارهگیری سریع""پست صوتی"
- "تنظیمات"
diff --git a/java/com/android/dialer/main/impl/res/values-fi/strings.xml b/java/com/android/dialer/main/impl/res/values-fi/strings.xml
index 3b8768cfd3f0cfe72fefb3c5e5bd1a7d4ec69a22..2557e87785c58d111bf54d28586eb55e87aeee5c 100644
--- a/java/com/android/dialer/main/impl/res/values-fi/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-fi/strings.xml
@@ -18,12 +18,7 @@
"Puhelin"
- "@android:string/haku_aloita"
- "Haku yhteystiedoista ja paikoista"
- "Yhteystiedot"
- "Näytä yhteystiedot""Soittohistoria""Pikavalinta""Vastaaja"
- "Asetukset"
diff --git a/java/com/android/dialer/main/impl/res/values-fr-rCA/strings.xml b/java/com/android/dialer/main/impl/res/values-fr-rCA/strings.xml
index 5fe4b696706915c737046b1f3b72fe1c1751b21c..ac80c2a95f46fe7426952c9c7873e3e1ee21a552 100644
--- a/java/com/android/dialer/main/impl/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-fr-rCA/strings.xml
@@ -18,12 +18,7 @@
"Téléphoner"
- "@android:string/search_go"
- "Rechercher dans les contacts et les lieux"
- "Contacts"
- "Afficher les contacts""Appels""Comp. abr.""Mess. voc."
- "Paramètres"
diff --git a/java/com/android/dialer/main/impl/res/values-fr/strings.xml b/java/com/android/dialer/main/impl/res/values-fr/strings.xml
index 47e5b392bf8059d3de3639d9c6d291cc85bf2a96..461cae4e2fa474b5cc8689072403eb8092147732 100644
--- a/java/com/android/dialer/main/impl/res/values-fr/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-fr/strings.xml
@@ -18,12 +18,7 @@
"Téléphone"
- "@android:string/search_go"
- "Recherchez des contacts et des adresses"
- "Contacts"
- "Consultez vos contacts""Historique""Num. abrégée""Messagerie"
- "Paramètres"
diff --git a/java/com/android/dialer/main/impl/res/values-gl/strings.xml b/java/com/android/dialer/main/impl/res/values-gl/strings.xml
index b8ddabbc5d1c1cdbfe350abd585f3b6d2d977880..39c47fe59f5912d1646b7d080f77925d373628ec 100644
--- a/java/com/android/dialer/main/impl/res/values-gl/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-gl/strings.xml
@@ -18,12 +18,7 @@
"Teléfono"
- "@android:string/search_go"
- "Busca contactos e lugares"
- "Contactos"
- "Mira os contactos""Historial""Marc. ráp.""Correo voz"
- "Configuración"
diff --git a/java/com/android/dialer/main/impl/res/values-gu/strings.xml b/java/com/android/dialer/main/impl/res/values-gu/strings.xml
index 7139f0e103aad8d547a90206e6987e210f6db231..9c2600e492a6cb187acfed6383a8618097ed8181 100644
--- a/java/com/android/dialer/main/impl/res/values-gu/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-gu/strings.xml
@@ -18,12 +18,7 @@
"ફોન"
- "@android:string/search_go"
- "સંપર્કો અને સ્થાનો શોધો"
- "સંપર્કો"
- "સંપર્કો જુઓ""કૉલ ઇતિહાસ""સ્પીડ ડાયલ""વૉઇસમેઇલ"
- "સેટિંગ્સ"
diff --git a/java/com/android/dialer/main/impl/res/values-hi/strings.xml b/java/com/android/dialer/main/impl/res/values-hi/strings.xml
index 71bfc2b9401bf5ff670afb8965b07f83fcd4a418..93887bec4a6ca149b3a14c40c874836f04d710fe 100644
--- a/java/com/android/dialer/main/impl/res/values-hi/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-hi/strings.xml
@@ -18,12 +18,7 @@
"फ़ोन"
- "@android:string/search_go"
- "संपर्क और स्थान खोजें"
- "संपर्क"
- "संपर्क देखें""कॉल इतिहास""स्पीड डायल""वॉइसमेल"
- "सेटिंग"
diff --git a/java/com/android/dialer/main/impl/res/values-hr/strings.xml b/java/com/android/dialer/main/impl/res/values-hr/strings.xml
index 90782db5f7648590082120197bb5dbce9a9e708a..805fb284f51353e4c9cd1a88cf6715da350cf049 100644
--- a/java/com/android/dialer/main/impl/res/values-hr/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-hr/strings.xml
@@ -18,12 +18,7 @@
"Telefon"
- "@android:string/search_go"
- "Pretraži kontakte i mjesta"
- "Kontakti"
- "Prikaži kontakte""Povijest poziva""Brzo biranje""Govorna pošta"
- "Postavke"
diff --git a/java/com/android/dialer/main/impl/res/values-hu/strings.xml b/java/com/android/dialer/main/impl/res/values-hu/strings.xml
index a10cd06385a7c372b3b61df479c6e4fccef6d0a7..451c4bdba03b67d1cb539b38d6092ad65776fc34 100644
--- a/java/com/android/dialer/main/impl/res/values-hu/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-hu/strings.xml
@@ -18,12 +18,7 @@
"Telefon"
- "@android:string/search_go"
- "Névjegyek és helyek keresése"
- "Névjegyek"
- "Névjegyek megtekintése""Előzmények""Gyorshívó""Hangposta"
- "Beállítások"
diff --git a/java/com/android/dialer/main/impl/res/values-hy/strings.xml b/java/com/android/dialer/main/impl/res/values-hy/strings.xml
index 7a482f06491612f4e774d4a6b2e0c8a6f4b5dcc3..5e5120521eb88e96ebe3a1dcbd05571f70116799 100644
--- a/java/com/android/dialer/main/impl/res/values-hy/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-hy/strings.xml
@@ -18,12 +18,7 @@
"Հեռախոս"
- "@android:string/search_go"
- "Գտնել կոնտակտներ և վայրեր"
- "Կոնտակտներ"
- "Դիտել կոնտակտները""Զանգերի պատմ.""Արագ հավաքում""Ձայն. փոստ"
- "Կարգավորումներ"
diff --git a/java/com/android/dialer/main/impl/res/values-in/strings.xml b/java/com/android/dialer/main/impl/res/values-in/strings.xml
index 70537cd841075ff9d80533461d2bc1634eb58d34..11a3a9ef48c3aaf2fbed3e0dd7c196fdefbbf25c 100644
--- a/java/com/android/dialer/main/impl/res/values-in/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-in/strings.xml
@@ -18,12 +18,7 @@
"Telepon"
- "@android:string/search_go"
- "Telusuri kontak dan tempat"
- "Kontak"
- "Lihat Kontak""Histori Panggilan""Panggilan Cepat""Pesan Suara"
- "Setelan"
diff --git a/java/com/android/dialer/main/impl/res/values-is/strings.xml b/java/com/android/dialer/main/impl/res/values-is/strings.xml
index 40494800635f377c28a658cd1589a5efe369c945..5cda66a9b455e1b9f3eaf2583e8219e5305c600b 100644
--- a/java/com/android/dialer/main/impl/res/values-is/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-is/strings.xml
@@ -18,12 +18,7 @@
"Sími"
- "@android:string/search_go"
- "Leita að tengiliðum og stöðum"
- "Tengiliðir"
- "Skoða tengiliði""Símtalaferill""Hraðval""Talhólf"
- "Stillingar"
diff --git a/java/com/android/dialer/main/impl/res/values-it/strings.xml b/java/com/android/dialer/main/impl/res/values-it/strings.xml
index bf1bdbfa86cc37dab88ba7bb35e1481e677757d2..f2812320e7763e6c2b6f0281f227e278d3497870 100644
--- a/java/com/android/dialer/main/impl/res/values-it/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-it/strings.xml
@@ -18,12 +18,7 @@
"Telefono"
- "@android:string/search_go"
- "Cerca contatti e luoghi"
- "Contatti"
- "Visualizza contatti""Cronologia""Chiamata rapida""Segreteria"
- "Impostazioni"
diff --git a/java/com/android/dialer/main/impl/res/values-iw/strings.xml b/java/com/android/dialer/main/impl/res/values-iw/strings.xml
index 4e43c0d0d84236e10d9c272feab24164650ce7cd..c6af97e42e701d4a169a0c01defd6d610ec807b9 100644
--- a/java/com/android/dialer/main/impl/res/values-iw/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-iw/strings.xml
@@ -18,12 +18,7 @@
"טלפון"
- "@android:string/search_go"
- "חיפוש אנשי קשר ומקומות"
- "אנשי קשר"
- "הצגת אנשי הקשר""היסטוריית שיחות""חיוג מהיר""דואר קולי"
- "הגדרות"
diff --git a/java/com/android/dialer/main/impl/res/values-ja/strings.xml b/java/com/android/dialer/main/impl/res/values-ja/strings.xml
index 10949c014b4256e250be6ce02848e95414224e03..2c4a743e91d6439ed3ea042c6d3529cb0ffe3739 100644
--- a/java/com/android/dialer/main/impl/res/values-ja/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ja/strings.xml
@@ -18,12 +18,7 @@
"電話"
- "@android:string/search_go"
- "連絡先や場所を検索"
- "連絡先"
- "連絡先を表示""通話履歴""クイックアクセス""ボイスメール"
- "設定"
diff --git a/java/com/android/dialer/main/impl/res/values-ka/strings.xml b/java/com/android/dialer/main/impl/res/values-ka/strings.xml
index 559d47a211d97817475121b5edb7474e7a9c1efd..e35b69ba6c518d59b9c5f1afed45a18f7ec4545a 100644
--- a/java/com/android/dialer/main/impl/res/values-ka/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ka/strings.xml
@@ -18,12 +18,7 @@
"ტელეფონი"
- "@android:string/search_go"
- "კონტაქტებისა და ადგილების ძიება"
- "კონტაქტები"
- "კონტაქტების ნახვა""ზარის ისტ.""სწრ.აკრეფა""ხმოვ.ფოსტა"
- "პარამეტრები"
diff --git a/java/com/android/dialer/main/impl/res/values-kk/strings.xml b/java/com/android/dialer/main/impl/res/values-kk/strings.xml
index 3222d14f5a6391a09a273e7e3ff186b825e1d547..ecaf9cb14539a80305f2a3e78498d23b227d1a4c 100644
--- a/java/com/android/dialer/main/impl/res/values-kk/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-kk/strings.xml
@@ -18,12 +18,7 @@
"Телефон"
- "@android:string/search_go"
- "Контактілер мен орындарды іздеу"
- "Контактілер"
- "Контактілерді көру""Қоңыраулар тарихы""Жылдам теру""Дауыстық хабар"
- "Параметрлер"
diff --git a/java/com/android/dialer/main/impl/res/values-km/strings.xml b/java/com/android/dialer/main/impl/res/values-km/strings.xml
index dd591291ae75528f3c90bad6d66009669df3cf33..582153795720562aee093d127e2d48d043d415eb 100644
--- a/java/com/android/dialer/main/impl/res/values-km/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-km/strings.xml
@@ -18,12 +18,7 @@
"ទូរសព្ទ"
- "@android:string/search_go"
- "ទំនាក់ទំនង និងកន្លែងស្វែងរក"
- "ទំនាក់ទំនង"
- "មើលទំនាក់ទំនង""ប្រវត្តិហៅទូរសព្ទ""ការហៅរហ័ស""សារជាសំឡេង"
- "ការកំណត់"
diff --git a/java/com/android/dialer/main/impl/res/values-kn/strings.xml b/java/com/android/dialer/main/impl/res/values-kn/strings.xml
index a52318fed6f6c577f0f4bf67f2594a77891439e6..68498ff35071eeee322bfc1fb72dc91c7637fe5a 100644
--- a/java/com/android/dialer/main/impl/res/values-kn/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-kn/strings.xml
@@ -18,12 +18,7 @@
"ಫೋನ್"
- "@android:string/search_go"
- "ಸಂಪರ್ಕಗಳು ಮತ್ತು ಸ್ಥಳಗಳನ್ನು ಹುಡುಕಿ"
- "ಸಂಪರ್ಕಗಳು"
- "ಸಂಪರ್ಕ ವೀಕ್ಷಿಸು""ಕರೆ ಇತಿಹಾಸ""ಸ್ಪೀಡ್ ಡಯಲ್""ಧ್ವನಿಮೇಲ್"
- "ಸೆಟ್ಟಿಂಗ್ಗಳು"
diff --git a/java/com/android/dialer/main/impl/res/values-ko/strings.xml b/java/com/android/dialer/main/impl/res/values-ko/strings.xml
index 43b6281f841458e45a39dd838515cd1cc98baf23..51238c7d9e27c08fbdda7933dd4e99ba55e60878 100644
--- a/java/com/android/dialer/main/impl/res/values-ko/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ko/strings.xml
@@ -18,12 +18,7 @@
"전화"
- "@android:string/search_go"
- "연락처 및 장소 검색"
- "연락처"
- "연락처 보기""통화 기록""단축 다이얼""음성사서함"
- "설정"
diff --git a/java/com/android/dialer/main/impl/res/values-ky/strings.xml b/java/com/android/dialer/main/impl/res/values-ky/strings.xml
index 6e33d6202a94c63cd04016a4110df19db139b4de..ce3f0fdcb94eb978358ace877f5e52a6ffd25b2d 100644
--- a/java/com/android/dialer/main/impl/res/values-ky/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ky/strings.xml
@@ -18,12 +18,7 @@
"Чалуу"
- "@android:string/search_go"
- "Байланыштарды жана жерлерди издөө"
- "Байланыштар"
- "Байланыштарды көрүү""Чалуу таржымалы""Тез терүү""Үн почтасы"
- "Жөндөөлөр"
diff --git a/java/com/android/dialer/main/impl/res/values-lo/strings.xml b/java/com/android/dialer/main/impl/res/values-lo/strings.xml
index 1b033218019a956821e821f4eb4932f7220dce06..86ebfafd549c6f2ab72cbacc1f80a8482ce69333 100644
--- a/java/com/android/dialer/main/impl/res/values-lo/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-lo/strings.xml
@@ -18,12 +18,7 @@
"ໂທລະສັບ"
- "@android:string/search_go"
- "ຊອກຫາລາຍຊື່ຜູ້ຕິດຕໍ່ ແລະ ສະຖານທີ່"
- "ລາຍຊື່ຜູ້ຕິດຕໍ່"
- "ເບິ່ງລາຍຊື່ຜູ້ຕິດຕໍ່""ປະຫວັດການໂທ""ໂທດ່ວນ""ຂໍ້ຄວາມສຽງ"
- "ການຕັ້ງຄ່າ"
diff --git a/java/com/android/dialer/main/impl/res/values-lt/strings.xml b/java/com/android/dialer/main/impl/res/values-lt/strings.xml
index ba02f027149204294ebe41b8c7475d0cbde4a4f4..d4029d36de59e5c8c4c8fcce619871aecee76048 100644
--- a/java/com/android/dialer/main/impl/res/values-lt/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-lt/strings.xml
@@ -18,12 +18,7 @@
"Telefonas"
- "@android:string/search_go"
- "Ieškoti kontaktų ir vietų"
- "Kontaktai"
- "Žr. kontaktus""Sk. istor.""Sp. rink.""Balso p."
- "Nustatymai"
diff --git a/java/com/android/dialer/main/impl/res/values-lv/strings.xml b/java/com/android/dialer/main/impl/res/values-lv/strings.xml
index 95bf42555956b89466372f13f70fd4295783d720..08f55c0c71feed1e387632b8828e6968dd52bffe 100644
--- a/java/com/android/dialer/main/impl/res/values-lv/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-lv/strings.xml
@@ -18,12 +18,7 @@
"Tālrunis"
- "@android:string/search_go"
- "Meklēt kontaktpersonas un vietas"
- "Kontaktpersonas"
- "Skatīt kontaktpersonas""Vēsture""Ātrā izv.""Balss pasts"
- "Iestatījumi"
diff --git a/java/com/android/dialer/main/impl/res/values-mk/strings.xml b/java/com/android/dialer/main/impl/res/values-mk/strings.xml
index edcc3f9e52fe90cd6c158e0e5eb05b185771ed42..8b4539c3efc80ffd13cfa1e3b7dded197d4276ef 100644
--- a/java/com/android/dialer/main/impl/res/values-mk/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-mk/strings.xml
@@ -18,12 +18,7 @@
"Телефон"
- "@android:string/search_go"
- "Пребарајте контакти и места"
- "Контакти"
- "Прикажи контакти""Историја""Брзо бирање""Гов. пошта"
- "Поставки"
diff --git a/java/com/android/dialer/main/impl/res/values-ml/strings.xml b/java/com/android/dialer/main/impl/res/values-ml/strings.xml
index 0749cdac1585ff847e3def6931945d77b3847aa1..1534fef6a0e316b2546855c6d0dc7db7d7a86f5e 100644
--- a/java/com/android/dialer/main/impl/res/values-ml/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ml/strings.xml
@@ -18,12 +18,7 @@
"ഫോണ്"
- "@android:string/search_go"
- "കോൺടാക്റ്റുകളും സ്ഥലങ്ങളും തിരയുക"
- "കോൺടാക്റ്റുകൾ"
- "കോൺടാക്റ്റുകൾ കാണുക""കോള് ചരിത്രം""സ്പീഡ് ഡയൽ""വോയ്സ്മെയിൽ"
- "ക്രമീകരണം"
diff --git a/java/com/android/dialer/main/impl/res/values-mn/strings.xml b/java/com/android/dialer/main/impl/res/values-mn/strings.xml
index 3d2d5a9a2e08e41b4f2baff1025e02d982a2bb8a..8ef9782f5092840bab0c3c069d3accdfb5c263a8 100644
--- a/java/com/android/dialer/main/impl/res/values-mn/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-mn/strings.xml
@@ -18,12 +18,7 @@
"Утас"
- "@android:string/search_go"
- "Харилцагчид, газруудаас хайх"
- "Харилцагчид"
- "Харилцагчдыг харах""Дуудлагын түүх""Шуурхай залгах""Дуут шуудан"
- "Тохиргоо"
diff --git a/java/com/android/dialer/main/impl/res/values-mr/strings.xml b/java/com/android/dialer/main/impl/res/values-mr/strings.xml
index 0520600bdae375d9034dfd89f9602a454cb37a72..bcfad670bdbb4cf8bebd0ecc087aa865f087ae54 100644
--- a/java/com/android/dialer/main/impl/res/values-mr/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-mr/strings.xml
@@ -18,12 +18,7 @@
"फोन"
- "@android:string/search_go"
- "संपर्क आणि स्थाने शोधा"
- "संपर्क"
- "संपर्क पहा""कॉल इतिहास""जलद डायल""व्हॉइसमेल"
- "सेटिंग्ज"
diff --git a/java/com/android/dialer/main/impl/res/values-ms/strings.xml b/java/com/android/dialer/main/impl/res/values-ms/strings.xml
index 5374322606fdee82174809e93f023a52ebd3602d..b433e3194978cfe5682a36a46970d880bd95bba6 100644
--- a/java/com/android/dialer/main/impl/res/values-ms/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ms/strings.xml
@@ -18,12 +18,7 @@
"Telefon"
- "@android:string/search_go"
- "Cari kenalan dan tempat"
- "Kenalan"
- "Lihat Kenalan""Sjrh Pgln""Dail Laju""Mel suara"
- "Tetapan"
diff --git a/java/com/android/dialer/main/impl/res/values-my/strings.xml b/java/com/android/dialer/main/impl/res/values-my/strings.xml
index fd2b6a75ac601d59561365632d9ce436a2dfcd04..965951404aeb466b7be0e1352b465b332e0ed45d 100644
--- a/java/com/android/dialer/main/impl/res/values-my/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-my/strings.xml
@@ -18,12 +18,7 @@
"ဖုန်း"
- "@android:string/search_go"
- "အဆက်အသွယ်များနှင့် နေရာများကို ရှာဖွေရန်"
- "အဆက်အသွယ်များ"
- "အဆက်အသွယ်များကို ကြည့်ရှုရန်""ခေါ်ဆိုမှု""နံပါတ်ကွက်""အသံမေးလ်"
- "ဆက်တင်များ"
diff --git a/java/com/android/dialer/main/impl/res/values-nb/strings.xml b/java/com/android/dialer/main/impl/res/values-nb/strings.xml
index e2300e1d00193e0b992768e7ee0a7594f9bfc7b5..456f4be89ffa74b83c0de97a23d188c2b3e97d4c 100644
--- a/java/com/android/dialer/main/impl/res/values-nb/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-nb/strings.xml
@@ -18,12 +18,7 @@
"Telefon"
- "@android:string/search_go"
- "Søk etter kontakter og steder"
- "Google-kontakter"
- "Se kontakter""Anropslogg""Hurtigvalg""Talepost"
- "Innstillinger"
diff --git a/java/com/android/dialer/main/impl/res/values-ne/strings.xml b/java/com/android/dialer/main/impl/res/values-ne/strings.xml
index 89d260ff92b90ff91d15ad7f9435bb4b7a5c02ac..6a429e5d853090ca6ff6198dbfaa93905aa26fdf 100644
--- a/java/com/android/dialer/main/impl/res/values-ne/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ne/strings.xml
@@ -18,12 +18,7 @@
"फोन"
- "@android:स्ट्रिङ/खोज_जानुहोस्"
- "सम्पर्क र स्थानहरू खोज्नुहोस्"
- "सम्पर्कहरू"
- "सम्पर्कहरू हेर्नुहोस्""कल इतिहास""स्पिड डायल""भ्वाइस मेल"
- "सेटिङहरू"
diff --git a/java/com/android/dialer/main/impl/res/values-night/styles.xml b/java/com/android/dialer/main/impl/res/values-night/styles.xml
index 63d4e9c1e703b1966edb2565c409a6d456430e52..19afffcf27b1f5cc420d9fb3ff03755834745d51 100644
--- a/java/com/android/dialer/main/impl/res/values-night/styles.xml
+++ b/java/com/android/dialer/main/impl/res/values-night/styles.xml
@@ -17,8 +17,8 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/java/com/android/dialer/main/impl/res/values-vi/strings.xml b/java/com/android/dialer/main/impl/res/values-vi/strings.xml
index a4d26a9ca79749e21f54bbed158377dce5b50b83..14b2a34bb5ea25e0956df2010836b35f4aca6c3d 100644
--- a/java/com/android/dialer/main/impl/res/values-vi/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-vi/strings.xml
@@ -18,12 +18,7 @@
"Điện thoại"
- "@android:string/search_go"
- "Tìm kiếm liên hệ và địa điểm"
- "Danh bạ"
- "Xem Danh bạ""Nhật ký cuộc gọi""Quay số nhanh""Thư thoại"
- "Cài đặt"
diff --git a/java/com/android/dialer/main/impl/res/values-zh-rCN/strings.xml b/java/com/android/dialer/main/impl/res/values-zh-rCN/strings.xml
index 6484c2604c13fd6b3a6f4231f0b150372c18fa3d..cbe279033134bdd249238d95ea6ed8c8da0a6060 100644
--- a/java/com/android/dialer/main/impl/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-zh-rCN/strings.xml
@@ -18,12 +18,7 @@
"拨打电话"
- "@android:string/search_go"
- "搜索联系人和地点"
- "联系人"
- "查看联系人""通话记录""快速拨号""语音邮件"
- "设置"
diff --git a/java/com/android/dialer/main/impl/res/values-zh-rHK/strings.xml b/java/com/android/dialer/main/impl/res/values-zh-rHK/strings.xml
index f593c4a1b0a56a7bd52ea3ec0a667023e267ab73..4e020a48c737934474efe5cff28260c2755cdfa0 100644
--- a/java/com/android/dialer/main/impl/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-zh-rHK/strings.xml
@@ -18,12 +18,7 @@
"電話"
- "@android:string/search_go"
- "搜尋聯絡人和地點"
- "通訊錄"
- "查看通訊錄""通話記錄""快速撥號""留言"
- "設定"
diff --git a/java/com/android/dialer/main/impl/res/values-zh-rTW/strings.xml b/java/com/android/dialer/main/impl/res/values-zh-rTW/strings.xml
index 3327432ea43e1e4ab24be9d12c21a96dd12bd1a1..07e0de2de47fe10edb332e80c9370edfb478d263 100644
--- a/java/com/android/dialer/main/impl/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-zh-rTW/strings.xml
@@ -18,12 +18,7 @@
"手機"
- "@android:string/search_go"
- "搜尋聯絡人和地點"
- "聯絡人"
- "查看聯絡人""通話紀錄""快速撥號""語音信箱"
- "設定"
diff --git a/java/com/android/dialer/main/impl/res/values-zu/strings.xml b/java/com/android/dialer/main/impl/res/values-zu/strings.xml
index 6bb935daae0971f9606704025cc1980ecda661f6..cf8ad687d6f6076bab5efbe4e3ed65196548e3c9 100644
--- a/java/com/android/dialer/main/impl/res/values-zu/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-zu/strings.xml
@@ -18,12 +18,7 @@
"Ifoni"
- "@android:string/search_go"
- "Sesha oxhumana nabo nezindawo"
- "Oxhumana nabo"
- "Buka oxhumana nabo""Umlando wekholi""Ukudayela okusheshayo""Ivoyisimeyili"
- "Izilungiselelo"
diff --git a/java/com/android/dialer/main/impl/res/values/strings.xml b/java/com/android/dialer/main/impl/res/values/strings.xml
index cde78e66dcf380338626e9b8f5f84c7b0d13a0d6..cd41c267e4bf697070064c5d0c705f499edd1dbc 100644
--- a/java/com/android/dialer/main/impl/res/values/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values/strings.xml
@@ -21,16 +21,6 @@
Phone Keypad
-
- @android:string/search_go
-
- Search contacts and places
-
-
- Contacts
-
- View Contacts
-
Voice search not available
diff --git a/java/com/android/dialer/main/impl/res/values/styles.xml b/java/com/android/dialer/main/impl/res/values/styles.xml
index 4b153b6809d84200264f8f859e9a8eaf9976cb59..322d62a918e4f9120785aa0e385adb3046b1163c 100644
--- a/java/com/android/dialer/main/impl/res/values/styles.xml
+++ b/java/com/android/dialer/main/impl/res/values/styles.xml
@@ -17,24 +17,34 @@
-
+
-
+
-
-
-
\ No newline at end of file
diff --git a/java/com/android/dialer/storage/StorageModule.java b/java/com/android/dialer/storage/StorageModule.java
index 370998cdb22f6b4ec1c4664b12db88902be1a112..e1c5b4b08fb5d4d49221b579db133c6a5b70fa53 100644
--- a/java/com/android/dialer/storage/StorageModule.java
+++ b/java/com/android/dialer/storage/StorageModule.java
@@ -20,14 +20,11 @@ import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.v4.content.ContextCompat;
import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
/** Module for the storage component. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
@Module
public class StorageModule {
diff --git a/java/com/android/dialer/strictmode/DialerStrictMode.java b/java/com/android/dialer/strictmode/DialerStrictMode.java
deleted file mode 100644
index 462db573bc84158f3977c975d333b7c72835c0b5..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/strictmode/DialerStrictMode.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.strictmode;
-
-import android.app.Application;
-import android.support.annotation.MainThread;
-
-/** Interface for strict mode to handle strict mode violations. */
-public interface DialerStrictMode {
-
- /** Initializes strict mode on application start. */
- @MainThread
- void onApplicationCreate(Application application);
-}
diff --git a/java/com/android/dialer/strictmode/StrictModeComponent.java b/java/com/android/dialer/strictmode/StrictModeComponent.java
deleted file mode 100644
index 7b9f48e203d256f2369cc14f02a18074c5ab7eb4..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/strictmode/StrictModeComponent.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.strictmode;
-
-import android.content.Context;
-import com.android.dialer.inject.HasRootComponent;
-import dagger.Subcomponent;
-
-/** Dagger component for DialerStrictMode. */
-@Subcomponent
-public abstract class StrictModeComponent {
-
- public abstract DialerStrictMode getDialerStrictMode();
-
- public static StrictModeComponent get(Context context) {
- return ((StrictModeComponent.HasComponent)
- ((HasRootComponent) context.getApplicationContext()).component())
- .strictModeComponent();
- }
-
- /** Used to refer to the root application component. */
- public interface HasComponent {
- StrictModeComponent strictModeComponent();
- }
-}
diff --git a/java/com/android/dialer/strictmode/StrictModeUtils.java b/java/com/android/dialer/strictmode/StrictModeUtils.java
deleted file mode 100644
index 27f8142d8289e01eefbfda2ffa4e9c9ee00fe310..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/strictmode/StrictModeUtils.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.strictmode;
-
-import android.app.Application;
-import android.content.Context;
-import android.os.Looper;
-import android.os.StrictMode;
-import android.os.StrictMode.ThreadPolicy;
-import android.preference.PreferenceManager;
-import android.support.annotation.AnyThread;
-import android.support.v4.os.UserManagerCompat;
-import com.android.dialer.buildtype.BuildType;
-import com.android.dialer.buildtype.BuildType.Type;
-import com.android.dialer.function.Supplier;
-import com.android.dialer.storage.StorageComponent;
-
-/** Utilities for enforcing strict-mode in an app. */
-public final class StrictModeUtils {
-
- private static final ThreadPolicy THREAD_NO_PENALTY =
- new StrictMode.ThreadPolicy.Builder().permitAll().build();
-
- /**
- * Convenience method for disabling and enabling the thread policy death penalty using lambdas.
- *
- *
The thread policy is only mutated if this is called from the main thread.
- */
- @AnyThread
- public static T bypass(Supplier supplier) {
- if (isStrictModeAllowed() && onMainThread()) {
- ThreadPolicy originalPolicy = StrictMode.getThreadPolicy();
- StrictMode.setThreadPolicy(THREAD_NO_PENALTY);
- try {
- return supplier.get();
- } finally {
- StrictMode.setThreadPolicy(originalPolicy);
- }
- }
- return supplier.get();
- }
-
- /**
- * Convenience method for disabling and enabling the thread policy death penalty using lambdas.
- *
- *
The thread policy is only mutated if this is called from the main thread.
- */
- @AnyThread
- public static void bypass(Runnable runnable) {
- if (isStrictModeAllowed() && onMainThread()) {
- ThreadPolicy originalPolicy = StrictMode.getThreadPolicy();
- StrictMode.setThreadPolicy(THREAD_NO_PENALTY);
- try {
- runnable.run();
- } finally {
- StrictMode.setThreadPolicy(originalPolicy);
- }
- } else {
- runnable.run();
- }
- }
-
- public static boolean isStrictModeAllowed() {
- return BuildType.get() == Type.BUGFOOD;
- }
-
- private static boolean onMainThread() {
- return Looper.getMainLooper().equals(Looper.myLooper());
- }
-
- /**
- * We frequently access shared preferences on the main thread, which causes strict mode
- * violations. When strict mode is allowed, warm up the shared preferences so that later uses of
- * shared preferences access the in-memory versions and we don't have to bypass strict mode at
- * every point in the application where shared preferences are accessed.
- */
- public static void warmupSharedPrefs(Application application) {
- // From credential-encrypted (CE) storage, i.e.:
- // /data/data/com.android.dialer/shared_prefs
-
- if (UserManagerCompat.isUserUnlocked(application)) {
- // _preferences.xml
- PreferenceManager.getDefaultSharedPreferences(application);
-
- // .xml
- application.getSharedPreferences(application.getPackageName(), Context.MODE_PRIVATE);
- }
-
- // From device-encrypted (DE) storage, i.e.:
- // /data/user_de/0/com.android.dialer/shared_prefs/
-
- // _preferences.xml
- StorageComponent.get(application).unencryptedSharedPrefs();
- }
-
- private StrictModeUtils() {}
-}
diff --git a/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java b/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java
deleted file mode 100644
index f3ce70cfd6124bf52b3828a6026aeadbb7a97186..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.strictmode.impl;
-
-import android.app.Application;
-import android.os.Build;
-import android.os.Build.VERSION_CODES;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.StrictMode;
-import android.os.StrictMode.ThreadPolicy;
-import android.os.StrictMode.VmPolicy;
-import android.support.annotation.MainThread;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import com.android.dialer.strictmode.DialerStrictMode;
-import com.android.dialer.strictmode.StrictModeUtils;
-import com.google.auto.value.AutoValue;
-import java.util.Map;
-import javax.inject.Inject;
-
-final class SystemDialerStrictMode implements DialerStrictMode {
- private static final VmPolicy VM_DEATH_PENALTY =
- new StrictMode.VmPolicy.Builder().penaltyLog().penaltyDeath().build();
-
- private static final ThreadPolicy THREAD_DEATH_PENALTY =
- new StrictMode.ThreadPolicy.Builder().penaltyLog().penaltyDeath().build();
-
- @Inject
- public SystemDialerStrictMode() {}
-
- @MainThread
- @Override
- public void onApplicationCreate(Application application) {
- if (StrictModeUtils.isStrictModeAllowed()) {
- StrictModeUtils.warmupSharedPrefs(application);
- setRecommendedMainThreadPolicy(THREAD_DEATH_PENALTY);
- setRecommendedVMPolicy(VM_DEATH_PENALTY);
-
- // Because Android resets StrictMode policies after Application.onCreate is done, we set it
- // again right after.
- // See cl/105932355 for the discussion.
- // See a bug for the public bug.
- Handler handler = new Handler(Looper.myLooper());
- handler.postAtFrontOfQueue(() -> setRecommendedMainThreadPolicy(THREAD_DEATH_PENALTY));
- }
- }
-
- /**
- * Set the recommended policy for the app.
- *
- * @param threadPenalties policy with preferred penalties. Detection bits will be ignored.
- */
- private static void setRecommendedMainThreadPolicy(StrictMode.ThreadPolicy threadPenalties) {
- StrictMode.ThreadPolicy threadPolicy =
- new StrictMode.ThreadPolicy.Builder(threadPenalties).detectAll().build();
- StrictMode.setThreadPolicy(threadPolicy);
- }
-
- /**
- * Set the recommended policy for the app.
- *
- * @param vmPenalties policy with preferred penalties. Detection bits should be unset.
- */
- private static void setRecommendedVMPolicy(StrictMode.VmPolicy vmPenalties) {
- setRecommendedVMPolicy(vmPenalties, StrictModeVmConfig.empty());
- }
-
- /**
- * Set the recommended policy for the app.
- *
- * @param vmPenalties policy with preferred penalties. Detection bits should be unset.
- */
- private static void setRecommendedVMPolicy(
- StrictMode.VmPolicy vmPenalties, StrictModeVmConfig config) {
- Assert.isNotNull(config);
- StrictMode.VmPolicy.Builder vmPolicyBuilder =
- new StrictMode.VmPolicy.Builder(vmPenalties)
- .detectLeakedClosableObjects()
- .detectLeakedSqlLiteObjects();
- if (Build.VERSION.SDK_INT >= VERSION_CODES.O) {
- vmPolicyBuilder.detectContentUriWithoutPermission();
- // TODO(azlatin): Enable detecting untagged sockets once: a bug is fixed.
- // vmPolicyBuilder.detectUntaggedSockets();
- }
- StrictMode.setVmPolicy(vmPolicyBuilder.build());
- }
-
- /** VmPolicy configuration. */
- @AutoValue
- abstract static class StrictModeVmConfig {
- /** A map of a class to the maximum number of allowed instances of that class. */
- @Nullable
- abstract Map, Integer> maxInstanceLimits();
-
- public static StrictModeVmConfig empty() {
- return builder().build();
- }
-
- public static Builder builder() {
- return new AutoValue_SystemDialerStrictMode_StrictModeVmConfig.Builder();
- }
-
- /** VmPolicy configuration builder. */
- @AutoValue.Builder
- public abstract static class Builder {
- public abstract Builder setMaxInstanceLimits(Map, Integer> limits);
-
- public abstract StrictModeVmConfig build();
-
- Builder() {}
- }
-
- StrictModeVmConfig() {}
- }
-}
diff --git a/java/com/android/dialer/strictmode/impl/SystemStrictModeModule.java b/java/com/android/dialer/strictmode/impl/SystemStrictModeModule.java
deleted file mode 100644
index ac6416cfc61eb4d061b723db12049be3718ff62c..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/strictmode/impl/SystemStrictModeModule.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.strictmode.impl;
-
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.dialer.strictmode.DialerStrictMode;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Singleton;
-
-/** Module which binds {@link SystemDialerStrictMode}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public abstract class SystemStrictModeModule {
-
- @Binds
- @Singleton
- public abstract DialerStrictMode bindDialerStrictMode(SystemDialerStrictMode impl);
-}
diff --git a/java/com/android/dialer/telecom/TelecomCallUtil.java b/java/com/android/dialer/telecom/TelecomCallUtil.java
index 6b66d868ef442b1a3806a54ee082b03fb0554cc8..482c8682657032966048d675dfa8e9f1cd2a5d72 100644
--- a/java/com/android/dialer/telecom/TelecomCallUtil.java
+++ b/java/com/android/dialer/telecom/TelecomCallUtil.java
@@ -18,12 +18,14 @@ package com.android.dialer.telecom;
import android.content.Context;
import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
import android.telecom.Call;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
import com.android.dialer.common.Assert;
import com.android.dialer.location.GeoUtil;
import com.google.common.base.Optional;
diff --git a/java/com/android/dialer/telecom/TelecomUtil.java b/java/com/android/dialer/telecom/TelecomUtil.java
index 633a53e8b71dd98f4d41fa614739d7bbd4e96663..7867820ded8b87f245d795d24a84853d7979819b 100644
--- a/java/com/android/dialer/telecom/TelecomUtil.java
+++ b/java/com/android/dialer/telecom/TelecomUtil.java
@@ -16,6 +16,7 @@
package com.android.dialer.telecom;
+import android.app.role.RoleManager;
import android.Manifest;
import android.Manifest.permission;
import android.content.ComponentName;
@@ -23,14 +24,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
import android.os.UserHandle;
import android.provider.CallLog.Calls;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresPermission;
-import android.support.annotation.VisibleForTesting;
import android.support.v4.content.ContextCompat;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
@@ -39,6 +34,11 @@ import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.text.TextUtils;
import android.util.Pair;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresPermission;
+
import com.android.dialer.common.LogUtil;
import com.google.common.base.Optional;
import java.util.ArrayList;
@@ -67,11 +67,6 @@ public abstract class TelecomUtil {
private static final Map, Boolean> isVoicemailNumberCache =
new ConcurrentHashMap<>();
- @VisibleForTesting(otherwise = VisibleForTesting.NONE)
- public static void setInstanceForTesting(TelecomUtilImpl instanceForTesting) {
- instance = instanceForTesting;
- }
-
public static void showInCallScreen(Context context, boolean showDialpad) {
if (hasReadPhoneStatePermission(context)) {
try {
@@ -197,7 +192,7 @@ public abstract class TelecomUtil {
* valid SIM. Absent otherwise.
*/
public static Optional getSubscriptionInfo(
- @NonNull Context context, @NonNull PhoneAccountHandle phoneAccountHandle) {
+ @NonNull Context context, @NonNull PhoneAccountHandle phoneAccountHandle) {
if (TextUtils.isEmpty(phoneAccountHandle.getId())) {
return Optional.absent();
}
@@ -343,8 +338,7 @@ public abstract class TelecomUtil {
}
/** Contains an implementation for {@link TelecomUtil} methods */
- @VisibleForTesting()
- public static class TelecomUtilImpl {
+ private static class TelecomUtilImpl {
public boolean isInManagedCall(Context context) {
if (hasReadPhoneStatePermission(context)) {
@@ -356,11 +350,7 @@ public abstract class TelecomUtil {
// Dialer is launched.
// Instead, Dialer should use TelecomManager#isInManagedCall, which only returns true if the
// device is in a managed call which Dialer would know about.
- if (VERSION.SDK_INT >= VERSION_CODES.O) {
- return getTelecomManager(context).isInManagedCall();
- } else {
- return getTelecomManager(context).isInCall();
- }
+ return getTelecomManager(context).isInManagedCall();
}
return false;
}
@@ -375,19 +365,18 @@ public abstract class TelecomUtil {
}
public boolean isDefaultDialer(Context context) {
- final boolean result =
- TextUtils.equals(
- context.getPackageName(), getTelecomManager(context).getDefaultDialerPackage());
- if (result) {
- warningLogged = false;
- } else {
+ final RoleManager rm = (RoleManager) context.getSystemService(Context.ROLE_SERVICE);
+ if (rm == null || !rm.isRoleHeld(RoleManager.ROLE_DIALER)) {
if (!warningLogged) {
// Log only once to prevent spam.
LogUtil.w(TAG, "Dialer is not currently set to be default dialer");
warningLogged = true;
}
+ return false;
}
- return result;
+
+ warningLogged = false;
+ return true;
}
}
}
diff --git a/java/com/android/dialer/theme/base/Theme.java b/java/com/android/dialer/theme/base/Theme.java
index 6e0d20a7a7e06d86e2f1b8419336cb5080c19fcd..2d639355fff255b096f984fada6f6f0488a72c11 100644
--- a/java/com/android/dialer/theme/base/Theme.java
+++ b/java/com/android/dialer/theme/base/Theme.java
@@ -17,10 +17,12 @@
package com.android.dialer.theme.base;
import android.content.Context;
-import android.support.annotation.ColorInt;
-import android.support.annotation.IntDef;
-import android.support.annotation.StyleRes;
import android.view.LayoutInflater;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.IntDef;
+import androidx.annotation.StyleRes;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -73,4 +75,7 @@ public interface Theme {
@ColorInt
int getColorIconOnUnthemedDarkBackground();
+
+ @ColorInt
+ int getColorCallNotificationBackground();
}
diff --git a/java/com/android/dialer/theme/base/impl/AospThemeImpl.java b/java/com/android/dialer/theme/base/impl/AospThemeImpl.java
index c8f20c731fb0047bc2a547518812c06bb4c34cb3..0d9d1998edd502062f26393d4c11085ceeaed2de 100644
--- a/java/com/android/dialer/theme/base/impl/AospThemeImpl.java
+++ b/java/com/android/dialer/theme/base/impl/AospThemeImpl.java
@@ -18,10 +18,12 @@ package com.android.dialer.theme.base.impl;
import android.content.Context;
import android.content.res.TypedArray;
-import android.support.annotation.ColorInt;
-import android.support.annotation.StyleRes;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.StyleRes;
+
import com.android.dialer.common.Assert;
import com.android.dialer.theme.base.R;
import com.android.dialer.theme.base.Theme;
@@ -45,6 +47,7 @@ public class AospThemeImpl implements Theme {
private int colorBackgroundFloating = -1;
private int colorTextOnUnthemedDarkBackground = -1;
private int colorIconOnUnthemedDarkBackground = -1;
+ private int colorCallNotificationBackground = -1;
public AospThemeImpl(Context context) {
@@ -69,6 +72,7 @@ public class AospThemeImpl implements Theme {
R.attr.colorIconSecondary,
R.attr.colorTextOnUnthemedDarkBackground,
R.attr.colorIconOnUnthemedDarkBackground,
+ R.attr.colorCallNotificationBackground
});
colorPrimary = array.getColor(/* index= */ 0, /* defValue= */ -1);
colorPrimaryDark = array.getColor(/* index= */ 1, /* defValue= */ -1);
@@ -83,6 +87,7 @@ public class AospThemeImpl implements Theme {
colorIconSecondary = array.getColor(/* index= */ 10, /* defValue= */ -1);
colorTextOnUnthemedDarkBackground = array.getColor(/* index= */ 11, /* defValue= */ -1);
colorIconOnUnthemedDarkBackground = array.getColor(/* index= */ 12, /* defValue= */ -1);
+ colorCallNotificationBackground = array.getColor(/* index= */ 13, /* defValue= */ -1);
array.recycle();
}
@@ -172,4 +177,10 @@ public class AospThemeImpl implements Theme {
Assert.checkArgument(colorIconOnUnthemedDarkBackground != -1);
return colorIconOnUnthemedDarkBackground;
}
+
+ @Override
+ public @ColorInt int getColorCallNotificationBackground() {
+ Assert.checkArgument(colorCallNotificationBackground != -1);
+ return colorCallNotificationBackground;
+ }
}
diff --git a/java/com/android/dialer/theme/base/impl/AospThemeModule.java b/java/com/android/dialer/theme/base/impl/AospThemeModule.java
index 7cf52cadd13fe5e3806a56d1728e06938cd12184..7070932abc095cd604b72a5ca5bfab4ded34d0c5 100644
--- a/java/com/android/dialer/theme/base/impl/AospThemeModule.java
+++ b/java/com/android/dialer/theme/base/impl/AospThemeModule.java
@@ -18,14 +18,11 @@ package com.android.dialer.theme.base.impl;
import android.content.Context;
import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
import com.android.dialer.theme.base.Theme;
import dagger.Module;
import dagger.Provides;
/** Module which binds {@link AospThemeImpl}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
@Module
public class AospThemeModule {
diff --git a/java/com/android/dialer/theme/base/res/values-night/theme_dialer_light.xml b/java/com/android/dialer/theme/base/res/values-night/theme_dialer_light.xml
new file mode 100644
index 0000000000000000000000000000000000000000..97133e397faf23f02bf93cf0b05372eb74369508
--- /dev/null
+++ b/java/com/android/dialer/theme/base/res/values-night/theme_dialer_light.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
diff --git a/java/com/android/dialer/theme/base/res/values/attr.xml b/java/com/android/dialer/theme/base/res/values/attr.xml
index 790ae7043547d799355e91eef388408118351133..4b45dfdb46f54279b08266a82eb33c78d01d64d1 100644
--- a/java/com/android/dialer/theme/base/res/values/attr.xml
+++ b/java/com/android/dialer/theme/base/res/values/attr.xml
@@ -25,14 +25,7 @@
-
-
-
-
-
-
-
-
+
diff --git a/java/com/android/dialer/theme/base/res/values/styles_dialer_light.xml b/java/com/android/dialer/theme/base/res/values/styles_dialer_light.xml
index 5fecbaee5c5b3ced493e3a1ad2e2ed91a6ee8e9f..466360aea76a3e41347f8c19ac2fc178cb8f55df 100644
--- a/java/com/android/dialer/theme/base/res/values/styles_dialer_light.xml
+++ b/java/com/android/dialer/theme/base/res/values/styles_dialer_light.xml
@@ -33,7 +33,10 @@
@color/settings_text_color_secondary?android:attr/colorBackground
- ?android:attr/colorPrimary
+ @color/dialer_theme_color
+ @color/dialer_primary_color
+ @color/dialer_primary_color
+ @color/dialer_primary_color
diff --git a/java/com/android/dialer/theme/base/res/values/theme_dialer_dark.xml b/java/com/android/dialer/theme/base/res/values/theme_dialer_dark.xml
index 142bb897bffb18d7a1b16d978a60b8fb8dd55778..836edacb051266f23bb24efaac586e6bfe599f2b 100644
--- a/java/com/android/dialer/theme/base/res/values/theme_dialer_dark.xml
+++ b/java/com/android/dialer/theme/base/res/values/theme_dialer_dark.xml
@@ -15,14 +15,6 @@
~ limitations under the License
-->
-
-
-
-
\ No newline at end of file
+
diff --git a/java/com/android/dialer/theme/base/res/values/theme_dialer_light.xml b/java/com/android/dialer/theme/base/res/values/theme_dialer_light.xml
index 61e0a1b7b41b1e204ee23bea4b3322068fab3ee6..b058ab447898b7effdfe9695081e58e39d7000b1 100644
--- a/java/com/android/dialer/theme/base/res/values/theme_dialer_light.xml
+++ b/java/com/android/dialer/theme/base/res/values/theme_dialer_light.xml
@@ -28,8 +28,8 @@
@style/DialerActionBarBaseTheme@drawable/abc_list_selector_holo_dark
- @color/settings_primary_dark@color/dialer_ripple_color
+ true
@@ -47,7 +47,7 @@
true@color/dialer_background_color
- @android:color/white
+ @color/dialer_background_floating@color/dialer_search_bar_color
@@ -58,26 +58,23 @@
@color/google_grey_600
- @color/dialer_theme_color
- @color/dialer_theme_color
- @color/dialer_theme_color_dark
- @color/dialer_theme_color_dark
- @color/dialer_secondary_color
- @color/dialer_secondary_color
+ @color/dialer_primary_color
+ @color/dialer_primary_color
+ @color/dialer_primary_color
+ @color/dialer_primary_color
+ @color/dialer_theme_color
+ @color/dialer_theme_color
- ?android:attr/colorPrimary
+ ?android:attr/colorAccent@color/google_grey_700@color/google_grey_400
- @android:color/white
- @android:color/white
- @color/google_grey_900
- @color/google_grey_100
- @color/google_blue_900
- @color/google_blue_100
+ @*android:color/system_neutral1_0
+ @*android:color/system_neutral1_0@color/dialer_theme_color_20pct
+ @*android:color/system_accent2_200
@@ -92,13 +89,9 @@
-
-
+
diff --git a/java/com/android/dialer/theme/common/res/values-af/strings.xml b/java/com/android/dialer/theme/common/res/values-af/strings.xml
index 5c9a1e1615206177a12a9cc5bc9881e07a0693c4..d20c544c96d730b923f4db332ef1d81815a45bb1 100644
--- a/java/com/android/dialer/theme/common/res/values-af/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-af/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefoonhokkieNoodnommer
- FoonBelGaan voort met oproep deur Wi-Fi te gebruik …RTT nie beskikbaar vir hierdie oproep nie
diff --git a/java/com/android/dialer/theme/common/res/values-am/strings.xml b/java/com/android/dialer/theme/common/res/values-am/strings.xml
index ae8a1a9d7fafa0b5ea86c287acd21ea165b48674..1deb5c54ba0cb0db9adb44ae1466f8d3f0942323 100644
--- a/java/com/android/dialer/theme/common/res/values-am/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-am/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dየሕዝብ ስልክየአደጋ ጊዜ ቁጥር
- ስልክ ደውልWi‑Fi ን መጠቀም በመቀጠል ላይ…አርቲቲ ለዚህ ጥሪ አይገኝም
diff --git a/java/com/android/dialer/theme/common/res/values-ar/strings.xml b/java/com/android/dialer/theme/common/res/values-ar/strings.xml
index bb9660571be7c25bc1da7f85ff2d8247ce301b99..ce96e3a8f5120274f2e7a36793db9814ea7b2500 100644
--- a/java/com/android/dialer/theme/common/res/values-ar/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ar/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dهاتف يعمل بالعملةرقم الطوارئ
- الهاتفاتصالجارٍ متابعة المكالمة باستخدام Wi‑Fi…لا تتوفر ميزة \"المراسلة النصية في الوقت الفعلي\" لهذه المكالمة
diff --git a/java/com/android/dialer/theme/common/res/values-az/strings.xml b/java/com/android/dialer/theme/common/res/values-az/strings.xml
index ff19fabbb4567569fd64c9932e08435044e81998..3b4134eeea0346e37394bfa949b0dd7abe57af47 100644
--- a/java/com/android/dialer/theme/common/res/values-az/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-az/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTaksofonTəcili nömrə
- TelefonZəng edinWi‑Fi istifadə edərək zəngə davam edin…Bu zəng üçün RTT əlçatan deyil
diff --git a/java/com/android/dialer/theme/common/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/theme/common/res/values-b+sr+Latn/strings.xml
index 27e8beb7111a6ff6fd23923a570621101f921708..e1f1f0b703dfbe3ef2b1c6d6767ff9d9c7a88e65 100644
--- a/java/com/android/dialer/theme/common/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-b+sr+Latn/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefonska govornicaBroj hitne službe
- TelefonPozoviPoziv se nastavlja pomoću Wi‑Fi-ja…RTT nije dostupan za ovaj poziv
diff --git a/java/com/android/dialer/theme/common/res/values-be/strings.xml b/java/com/android/dialer/theme/common/res/values-be/strings.xml
index 2e35ba2f0ba4b3591ef6a8941279f619a09a6a88..a4226ac36d150c094d1091455c2ba1e8a5128068 100644
--- a/java/com/android/dialer/theme/common/res/values-be/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-be/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dТаксафонНумар экстраннай службы
- ТэлефонВыклікацьПрацягваць выклік, выкарыстоўваючы сетку Wi‑Fi…RTT недаступна для гэтага выкліку
diff --git a/java/com/android/dialer/theme/common/res/values-bg/strings.xml b/java/com/android/dialer/theme/common/res/values-bg/strings.xml
index 45bafb893d230016afee54c3be8642660f0b8f9c..cc2f090568cac16954c6148495b46ff08a90f302 100644
--- a/java/com/android/dialer/theme/common/res/values-bg/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-bg/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dОбществен телефонСпешен номер
- ТелефонОбажданеОбаждането продължава през Wi‑Fi…ТСРВ не е налице за това обаждане
diff --git a/java/com/android/dialer/theme/common/res/values-bn/strings.xml b/java/com/android/dialer/theme/common/res/values-bn/strings.xml
index 7752d4e9b577555065930f78355ff504b1b3959b..4332497ccf0bfc933f0928abc7de75494a7fefd9 100644
--- a/java/com/android/dialer/theme/common/res/values-bn/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-bn/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dপে ফোনজরুরি নম্বর
- ফোনকল করুনওয়াই-ফাই দিয়ে কল জারি রাখা হচ্ছে…এই কলের জন্য RTT সুবিধা উপলভ্য নয়
diff --git a/java/com/android/dialer/theme/common/res/values-bs/strings.xml b/java/com/android/dialer/theme/common/res/values-bs/strings.xml
index 8f67289ad3e5e551a3fd623d0d789f0d6087e1e4..1f948aca753c1bbb67ceb10b6dd1c6e81d7b1c41 100644
--- a/java/com/android/dialer/theme/common/res/values-bs/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-bs/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefonska govornicaBroj za hitne slučajeve
- TelefonPozoviNastavak poziva putem Wi‑Fi-ja…RTT nije dostupan za ovaj poziv
diff --git a/java/com/android/dialer/theme/common/res/values-ca/strings.xml b/java/com/android/dialer/theme/common/res/values-ca/strings.xml
index c0797fe5c958284784ac6cea8952b0229ef75e70..ea3381e0c0472a8e3a47a08d4c6e8e7ab2ef6682 100644
--- a/java/com/android/dialer/theme/common/res/values-ca/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ca/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelèfon públicNúmero d\'emergència
- TelèfonTrucaS\'està continuant la trucada mitjançant la Wi‑Fi…La funció RTT no està disponible en aquesta trucada
diff --git a/java/com/android/dialer/theme/common/res/values-cs/strings.xml b/java/com/android/dialer/theme/common/res/values-cs/strings.xml
index 8471ec0c4f910f0cb1b1b0ee497d7503f4673be6..0905f069aa2b0b3c0c3838a6c5550346a16cdf66 100644
--- a/java/com/android/dialer/theme/common/res/values-cs/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-cs/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefonní automatČíslo tísňové linky
- TelefonVolatHovor pokračuje přes Wi-Fi…Pro tento hovor není funkce SMS během hovoru dostupná
diff --git a/java/com/android/dialer/theme/common/res/values-da/strings.xml b/java/com/android/dialer/theme/common/res/values-da/strings.xml
index 8863a78dde9ce6609508973be5f2e190812c6c2e..c1e4511a2c2790f811b1c9095bb22e96d4048afd 100644
--- a/java/com/android/dialer/theme/common/res/values-da/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-da/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dMønttelefonAlarmnummer
- OpkaldRing opOpkaldet fortsættes via Wi-Fi…Sms i realtid er ikke tilgængeligt for dette opkald
diff --git a/java/com/android/dialer/theme/common/res/values-de/strings.xml b/java/com/android/dialer/theme/common/res/values-de/strings.xml
index 12269e3e3702a61b7fec0740b2089ab2f57c6b3a..08d4c653e4bda36ff4d0566cd41c17bc50009bc6 100644
--- a/java/com/android/dialer/theme/common/res/values-de/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-de/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dMünztelefonNotrufnummer
- TelefonAnrufenAnruf wird über WLAN fortgesetzt…RTT ist für diesen Anruf nicht verfügbar
diff --git a/java/com/android/dialer/theme/common/res/values-el/strings.xml b/java/com/android/dialer/theme/common/res/values-el/strings.xml
index c39584091f9425ca4c242ebb25a2e49bb61d2d54..2e3539c300b0cd6d4f0acd8d45a7369b7f596054 100644
--- a/java/com/android/dialer/theme/common/res/values-el/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-el/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dΤηλέφωνο με χρέωσηΑριθμός έκτακτης ανάγκης
- ΤηλέφωνοΚλήσηΣυνέχιση κλήσης μέσω Wi‑Fi…Το RTT δεν είναι διαθέσιμο για αυτήν την κλήση
diff --git a/java/com/android/dialer/theme/common/res/values-en-rAU/strings.xml b/java/com/android/dialer/theme/common/res/values-en-rAU/strings.xml
index c366dac6746cf0128e1b076d893e006a942c6365..b95c8a13cc5f11e997a05061c1636ee8400d19d6 100644
--- a/java/com/android/dialer/theme/common/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-en-rAU/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dPayphoneEmergency number
- PhoneCallContinuing call using Wi‑Fi…RTT not available for this call
diff --git a/java/com/android/dialer/theme/common/res/values-en-rGB/strings.xml b/java/com/android/dialer/theme/common/res/values-en-rGB/strings.xml
index c366dac6746cf0128e1b076d893e006a942c6365..b95c8a13cc5f11e997a05061c1636ee8400d19d6 100644
--- a/java/com/android/dialer/theme/common/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-en-rGB/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dPayphoneEmergency number
- PhoneCallContinuing call using Wi‑Fi…RTT not available for this call
diff --git a/java/com/android/dialer/theme/common/res/values-en-rIN/strings.xml b/java/com/android/dialer/theme/common/res/values-en-rIN/strings.xml
index c366dac6746cf0128e1b076d893e006a942c6365..b95c8a13cc5f11e997a05061c1636ee8400d19d6 100644
--- a/java/com/android/dialer/theme/common/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-en-rIN/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dPayphoneEmergency number
- PhoneCallContinuing call using Wi‑Fi…RTT not available for this call
diff --git a/java/com/android/dialer/theme/common/res/values-es-rUS/strings.xml b/java/com/android/dialer/theme/common/res/values-es-rUS/strings.xml
index 340c0d08e5892a5368a494534fef7d5e3e0259bb..c8bedd9c351fa968fc766dbf5643f619a3fd496b 100644
--- a/java/com/android/dialer/theme/common/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-es-rUS/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTeléfono públicoNúmero de emergencia
- TeléfonoLlamarContinuando llamada a través de Wi-Fi…La función de RTT no está disponible en esta llamada
diff --git a/java/com/android/dialer/theme/common/res/values-es/strings.xml b/java/com/android/dialer/theme/common/res/values-es/strings.xml
index 50eb04321feecee0096e4d56af2b85402f738271..03f2ffa8ef724aadf64b591b5af7d6d641513883 100644
--- a/java/com/android/dialer/theme/common/res/values-es/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-es/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTeléfono públicoNúmero de emergencia
- TeléfonoLlamarContinuando la llamada a través de Wi-Fi…TTR no disponible para esta llamada
diff --git a/java/com/android/dialer/theme/common/res/values-et/strings.xml b/java/com/android/dialer/theme/common/res/values-et/strings.xml
index a7a4466094020ac85b2a7deef1e68d635a6ce746..4f8ce8a17faa0e8da6de93e35cc6d49d82087c84 100644
--- a/java/com/android/dialer/theme/common/res/values-et/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-et/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefoniautomaatHädaabinumber
- TelefonHelistaKõnet jätkatakse WiFi kaudu …RTT pole selle kõne puhul saadaval
diff --git a/java/com/android/dialer/theme/common/res/values-eu/strings.xml b/java/com/android/dialer/theme/common/res/values-eu/strings.xml
index 8232dc67bd82f00e549bbf973249e4ee171613c4..3026e143ca06d3e4b255d43365e2de845439d855 100644
--- a/java/com/android/dialer/theme/common/res/values-eu/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-eu/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefono publikoaLarrialdietarako zenbakia
- TelefonoaDeituWi-Fi bidezko konexiora aldatzen…Deietan testua bidaltzeko eginbidea ez dago erabilgarri dei honetan
diff --git a/java/com/android/dialer/theme/common/res/values-fa/strings.xml b/java/com/android/dialer/theme/common/res/values-fa/strings.xml
index d96d7aa9fd5ce344a80f5f0e3fb95f2cb4bf4fe4..9991a368e010049eb8f0921a88dc8cc34d91c956 100644
--- a/java/com/android/dialer/theme/common/res/values-fa/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-fa/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dتلفن عمومیشماره اضطراری
- تلفنتماسادامه تماس با استفاده از Wi‑Fi…«نوشتار همزمان» برای این تماس دردسترس نیست
diff --git a/java/com/android/dialer/theme/common/res/values-fi/strings.xml b/java/com/android/dialer/theme/common/res/values-fi/strings.xml
index 7ab7e462f54c22e5b0c0429f7adf2071737944b5..5960fef3eb2af13567b19b51c983f417299c6045 100644
--- a/java/com/android/dialer/theme/common/res/values-fi/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-fi/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dMaksupuhelinHätänumero
- PuhelinSoitaJatketaan puhelua Wi‑Fi-yhteydellä…RTT ei ole käytettävissä tässä puhelussa.
diff --git a/java/com/android/dialer/theme/common/res/values-fr-rCA/strings.xml b/java/com/android/dialer/theme/common/res/values-fr-rCA/strings.xml
index b774b4c15c6d73c953d0701e34c0cf3325f7ea7b..45b8a582bf1f5916421d64087355398014f5e525 100644
--- a/java/com/android/dialer/theme/common/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-fr-rCA/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dCabine téléphoniqueNuméro d\'urgence
- TéléphoneAppelerTransfert de l\'appel du réseau Wi-Fi au réseau LTE en cours…Texte en temps réel non disponible pour cet appel
diff --git a/java/com/android/dialer/theme/common/res/values-fr/strings.xml b/java/com/android/dialer/theme/common/res/values-fr/strings.xml
index 0c0e8f5613cc0451e9cbd7f1ac707ea2525f90b5..5498637c1bac349d14c05f68f875d86f966bdd06 100644
--- a/java/com/android/dialer/theme/common/res/values-fr/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-fr/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dCabine téléphoniqueNuméro d\'urgence
- TéléphoneAppelerPoursuite de l\'appel en utilisant le Wi-Fi…Texte en temps réel non disponible pour cet appel
diff --git a/java/com/android/dialer/theme/common/res/values-gl/strings.xml b/java/com/android/dialer/theme/common/res/values-gl/strings.xml
index c6c240580974e8710d884b14b0ca7ac66d392c36..1346355a50fa3893bf9586ed6f5b28b7c943f7f6 100644
--- a/java/com/android/dialer/theme/common/res/values-gl/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-gl/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTeléfono públicoNúmero de urxencia
- TeléfonoChamarContinuando a chamada a través da wifi…A función RTT non está dispoñible para esta chamada
diff --git a/java/com/android/dialer/theme/common/res/values-gu/strings.xml b/java/com/android/dialer/theme/common/res/values-gu/strings.xml
index 1934b67fad2e5a0cef063ea89997756874cf9859..42d606770277f4b021ee0767ae9922f36776c338 100644
--- a/java/com/android/dialer/theme/common/res/values-gu/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-gu/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dપેફોનકટોકટીનો નંબર
- ફોનકૉલ કરોવાઇ-ફાઇનો ઉપયોગ કરીને કૉલ ચાલુ રાખી રહ્યાં છીએ…આ કૉલ માટે RTT ઉપલબ્ધ નથી
diff --git a/java/com/android/dialer/theme/common/res/values-hi/strings.xml b/java/com/android/dialer/theme/common/res/values-hi/strings.xml
index b2439884bacd07e7ffa923fd6c4995aa93cebd8c..81e154f73dd866461417828ef0ae81e2aa5b63f2 100644
--- a/java/com/android/dialer/theme/common/res/values-hi/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-hi/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dपे-फ़ोनआपातकालीन नंबर
- फ़ोनकॉल करेंकॉल वाई‑फ़ाई पर जारी रखा जा रहा है…इस कॉल के लिए आरटीटी उपलब्ध नहीं है
diff --git a/java/com/android/dialer/theme/common/res/values-hr/strings.xml b/java/com/android/dialer/theme/common/res/values-hr/strings.xml
index b344138149e2bdd0dd54897b0cc9a259679262f0..b33cc09f1dcf5c7f068fe3e9fb6ba4dc0a3ec75c 100644
--- a/java/com/android/dialer/theme/common/res/values-hr/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-hr/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dJavna telefonska govornicaBroj hitne službe
- TelefonPozoviPoziv se nastavlja putem Wi‑Fi mreže…RTT nije dostupan za ovaj poziv
diff --git a/java/com/android/dialer/theme/common/res/values-hu/strings.xml b/java/com/android/dialer/theme/common/res/values-hu/strings.xml
index 73e832a45568b199387e5e7f1edf67acae664c74..87dec5b06388a49a92d2f9a5a42fae0cc5d9e61b 100644
--- a/java/com/android/dialer/theme/common/res/values-hu/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-hu/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dNyilvános telefonSegélyhívó szám
- TelefonHívásHívás folytatása Wi‑Fi-kapcsolaton keresztül…Az RTT funkció nem áll rendelkezésre ebben a hívásban.
diff --git a/java/com/android/dialer/theme/common/res/values-hy/strings.xml b/java/com/android/dialer/theme/common/res/values-hy/strings.xml
index 586b10e36819eb5d4eb9d363db181f6d8f0eda1d..18ec3ff6fcdaa1013a36b16c05363e206ba7e1de 100644
--- a/java/com/android/dialer/theme/common/res/values-hy/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-hy/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dԲջջային տերմինալԱրտակարգ ծառայության հեռախոսահամար
- ՀեռախոսԶանգելԱնցում Wi‑Fi-ին…RTT գործառույթը հասանելի չէ այս զանգի համար
diff --git a/java/com/android/dialer/theme/common/res/values-in/strings.xml b/java/com/android/dialer/theme/common/res/values-in/strings.xml
index b15e59be58b65642a808a3e375754087c1d0c1ec..a6782290a0959fc61973e76733b2a63e050903dc 100644
--- a/java/com/android/dialer/theme/common/res/values-in/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-in/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelepon UmumNomor darurat
- TeleponTeleponMelanjutkan panggilan dengan Wi‑Fi…RTT tidak tersedia untuk panggilan ini
diff --git a/java/com/android/dialer/theme/common/res/values-is/strings.xml b/java/com/android/dialer/theme/common/res/values-is/strings.xml
index 87a4ca4ca1fd32095625f18d1a5747cf68160681..61c504dbf4724617fbd0a8d70b954c1c17966f80 100644
--- a/java/com/android/dialer/theme/common/res/values-is/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-is/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dSímasjálfsaliNeyðarnúmer
- SímiHringjaHeldur símtali áfram með Wi‑Fi…RTT er ekki í boði fyrir þetta símtal
diff --git a/java/com/android/dialer/theme/common/res/values-it/strings.xml b/java/com/android/dialer/theme/common/res/values-it/strings.xml
index c5b1addb64f483fa6d401ccd88afaa36829fc3bb..f066fa21cf6181609b1c7037526641d880b4ac4b 100644
--- a/java/com/android/dialer/theme/common/res/values-it/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-it/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dCabina telefonicaNumero di emergenza
- TelefonoChiamaProseguimento della chiamata utilizzando la rete Wi-Fi…RTT non disponibile per questa chiamata
diff --git a/java/com/android/dialer/theme/common/res/values-iw/strings.xml b/java/com/android/dialer/theme/common/res/values-iw/strings.xml
index 6513602d5e1a7b6397c7372147a366abddf5aa44..28fd1337dced2cf09fd9b3fff1d5f1955852b1f6 100644
--- a/java/com/android/dialer/theme/common/res/values-iw/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-iw/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dטלפון ציבורימספר חירום
- טלפוןהתקשרהמערכת ממשיכה את השיחה באמצעות Wi‑Fi…אי אפשר להשתמש ב-RTT בשיחה הזו
diff --git a/java/com/android/dialer/theme/common/res/values-ja/strings.xml b/java/com/android/dialer/theme/common/res/values-ja/strings.xml
index 36c3059050b1e1f72d03909e11dbfc0f39e0ce9c..832ce3d12a73ae1fea7c601669bbef60545fbfdc 100644
--- a/java/com/android/dialer/theme/common/res/values-ja/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ja/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$d公衆電話緊急通報番号
- 電話発信Wi‑Fi を使用して通話を継続しています…この通話では RTT をご利用いただけません
diff --git a/java/com/android/dialer/theme/common/res/values-ka/strings.xml b/java/com/android/dialer/theme/common/res/values-ka/strings.xml
index 78448ea4d84644a52c4bbc90094800d59e568a6b..5a710967e8f97cc6ad31837484f25df158851101 100644
--- a/java/com/android/dialer/theme/common/res/values-ka/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ka/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dგადახდის ტელეფონიგადაუდებელი დახმარების ნომერი
- ტელეფონიდარეკვაზარი გრძელდება Wi‑Fi-ს გამოყენებით…RTT ამ ზარისთვის მიუწვდომელია
diff --git a/java/com/android/dialer/theme/common/res/values-kk/strings.xml b/java/com/android/dialer/theme/common/res/values-kk/strings.xml
index fc87c6c7539aacb430bfd194ba0fd94ecafcc034..5bbd1db85d9bfe3d71d469564c8fe6f96fa128fb 100644
--- a/java/com/android/dialer/theme/common/res/values-kk/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-kk/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dАвтомат-телефонТөтенше қызмет нөмір
- ТелефонҚоңырау шалуҚоңырау Wi‑Fi арқылы жалғасуда…Бұл қоңырауда RTT мүмкіндігі жоқ
diff --git a/java/com/android/dialer/theme/common/res/values-km/strings.xml b/java/com/android/dialer/theme/common/res/values-km/strings.xml
index 4d1bbc31c851d06bd06fdba5bbe79410e5607169..ff91325a7edffc20defc364328e0b0e85a093b3c 100644
--- a/java/com/android/dialer/theme/common/res/values-km/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-km/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dទូរស័ព្ទសាធារណៈលេខអាសន្ន
- ទូរស័ព្ទហៅទូរសព្ទកំពុងបន្តការហៅទូរសព្ទដោយប្រើ Wi‑Fi…RTT មិនអាចប្រើបានសម្រាប់ការហៅនេះទេ
diff --git a/java/com/android/dialer/theme/common/res/values-kn/strings.xml b/java/com/android/dialer/theme/common/res/values-kn/strings.xml
index 388608ed1ff34d927ffec4cdb70386ef18a8ef0d..2e15bcc45bccfa054f277436324ee909fc5ad8dc 100644
--- a/java/com/android/dialer/theme/common/res/values-kn/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-kn/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dಪೇಫೋನ್ತುರ್ತು ಸಂಖ್ಯೆ
- ಫೋನ್ಕರೆಮಾಡಿವೈ-ಫೈ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕರೆ ಮಾಡುವುದನ್ನು ಮುಂದುವರಿಸಲಾಗುತ್ತಿದೆ…ಈ ಕರೆಗಾಗಿ RTT ಲಭ್ಯವಿಲ್ಲ
diff --git a/java/com/android/dialer/theme/common/res/values-ko/strings.xml b/java/com/android/dialer/theme/common/res/values-ko/strings.xml
index 82d647efbe1388c8ac6d7a6c1ddf08661bca309c..ab65a677f8f565b4c16b8b49101bb95d5f335a03 100644
--- a/java/com/android/dialer/theme/common/res/values-ko/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ko/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$d공중전화긴급 전화번호
- 휴대전화전화Wi‑Fi를 사용하여 계속 통화 중…이 통화에서 RTT를 사용할 수 없음
diff --git a/java/com/android/dialer/theme/common/res/values-ky/strings.xml b/java/com/android/dialer/theme/common/res/values-ky/strings.xml
index ededcdcce0f0ee578dc1d2a5c5078e7f92d18656..f08190474a3239c4075e6beca62c444d25ae8de3 100644
--- a/java/com/android/dialer/theme/common/res/values-ky/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ky/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dТаксофонӨзгөчө кырдаал номери
- ТелефонЧалууWi‑Fi аркылуу чалуу улантылууда…Бул чалууда RTT функциясы жеткиликтүү эмес
diff --git a/java/com/android/dialer/theme/common/res/values-lo/strings.xml b/java/com/android/dialer/theme/common/res/values-lo/strings.xml
index c4c83637933520698bbdfc739bb02a3f5b9b2781..1eac99448feb5dd2f2f301271b71f2975e387e3e 100644
--- a/java/com/android/dialer/theme/common/res/values-lo/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-lo/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dຕູ້ໂທລະສັບສາທາລະນະເບີໂທສຸກເສີນ
- ໂທລະສັບໂທກຳລັງສືບຕໍ່ການໂທໂດຍໃຊ້ Wi‑Fi…ບໍ່ສາມາດໃຊ້ RTT ສຳລັບການໂທນີ້ໄດ້
diff --git a/java/com/android/dialer/theme/common/res/values-lt/strings.xml b/java/com/android/dialer/theme/common/res/values-lt/strings.xml
index 05f9a3958f545ad6f8e51d673397e7a5607eb208..12035e2db2f5f908db34eaba4776799b86867aba 100644
--- a/java/com/android/dialer/theme/common/res/values-lt/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-lt/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTaksofonasPagalbos numeris
- TelefonasSkambintiSkambutis tęsiamas naudojant „Wi‑Fi“…Atliekant šį skambutį RTT paslauga nepasiekiama
diff --git a/java/com/android/dialer/theme/common/res/values-lv/strings.xml b/java/com/android/dialer/theme/common/res/values-lv/strings.xml
index 8ea71185aeded11c4ed694c8928244e4d0f89543..2879fc053eb7389ff7876f8599fa5469455a2384 100644
--- a/java/com/android/dialer/theme/common/res/values-lv/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-lv/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dMaksas tālrunisĀrkārtas numurs
- TālrunisZvanītZvans tiek turpināts, izmantojot Wi‑Fi…RTT nav pieejams šim zvanam.
diff --git a/java/com/android/dialer/theme/common/res/values-mk/strings.xml b/java/com/android/dialer/theme/common/res/values-mk/strings.xml
index c043447302aff3083dcf256a66919f5c8f06fdda..78cad3d58cfb1d7f04164e36ea1f9d09b7cf13de 100644
--- a/java/com/android/dialer/theme/common/res/values-mk/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-mk/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dГоворницаБрој за итни случаи
- ТелефонПовикајтеПовикот ќе продолжи преку Wi‑Fi…RTT не е достапна за повиков
diff --git a/java/com/android/dialer/theme/common/res/values-ml/strings.xml b/java/com/android/dialer/theme/common/res/values-ml/strings.xml
index 5075c9b883db36ba8258461a8bc1f185e786c022..f81838cf4b5b8649ffd8e767574255583aa3b160 100644
--- a/java/com/android/dialer/theme/common/res/values-ml/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ml/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dപണം നൽകി ഉപയോഗിക്കുന്ന ഫോൺഅടിയന്തര നമ്പർ
- ഫോണ്വിളിക്കുകവൈഫൈ ഉപയോഗിച്ച് കോൾ തുടരുന്നു…ഈ കോളിന് RTT ലഭ്യമല്ല
diff --git a/java/com/android/dialer/theme/common/res/values-mn/strings.xml b/java/com/android/dialer/theme/common/res/values-mn/strings.xml
index 4baeb92b129df9c547e6b6aa749b1732566814eb..ad1bcd9a720856aae74fdc8e1144292664161e1e 100644
--- a/java/com/android/dialer/theme/common/res/values-mn/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-mn/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dPayphoneЯаралтай тусламжийн дугаар
- УтасЗалгахWi‑Fi ашиглан дуудлагыг үргэлжлүүлж байна…RTT (Тухайн агшны текст) энэ дуудлагад боломжгүй байна
diff --git a/java/com/android/dialer/theme/common/res/values-mr/strings.xml b/java/com/android/dialer/theme/common/res/values-mr/strings.xml
index 5a436526a587709bad484eea250804914bfae8bb..4285801e0371570edcf6021fbe8f78501b0ca111 100644
--- a/java/com/android/dialer/theme/common/res/values-mr/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-mr/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dसार्वजनिक फोनआणीबाणी क्रमांक
- फोनकॉल करावाय-फाय वापरून कॉल सुरू ठेवा…या कॉलसाठी RTT उपलब्द्ध नाही
diff --git a/java/com/android/dialer/theme/common/res/values-ms/strings.xml b/java/com/android/dialer/theme/common/res/values-ms/strings.xml
index 3fbbb2797c9bd189f746bca598ba30315b11aab6..8539d05377e6be7e0a9d3c449ef4f372f7842715 100644
--- a/java/com/android/dialer/theme/common/res/values-ms/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ms/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefon AwamNombor kecemasan
- TelefonPanggilMeneruskan panggilan menggunakan Wi‑Fi…RTT tidak tersedia untuk panggilan ini
diff --git a/java/com/android/dialer/theme/common/res/values-my/strings.xml b/java/com/android/dialer/theme/common/res/values-my/strings.xml
index 108bcd4a7661f07e542d94f0c824e714ce0ebfeb..0a3c120898fb2e5a009ca127ab5617c09733afdc 100644
--- a/java/com/android/dialer/theme/common/res/values-my/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-my/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dငွေပေးရသည့်ဖုန်းအရေးပေါ်နံပါတ်
- ဖုန်းခေါ်ဆိုရန်Wi‑Fi သုံးပြီး ဆက်လက်ခေါ်ဆိုနေသည်…ဤခေါ်ဆိုမှုအတွက် RTT ကို အသုံးမပြုနိုင်ပါ
diff --git a/java/com/android/dialer/theme/common/res/values-nb/strings.xml b/java/com/android/dialer/theme/common/res/values-nb/strings.xml
index 8d18894cec7463a794b4a1b9f028a64ecfb441cd..ca560a5655196adb6acb73a7a4d00c434858a7f1 100644
--- a/java/com/android/dialer/theme/common/res/values-nb/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-nb/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefonkioskNødnummer
- TelefonRingFortsetter samtalen via Wi‑Fi …STT er ikke tilgjengelig for dette anropet
diff --git a/java/com/android/dialer/theme/common/res/values-ne/strings.xml b/java/com/android/dialer/theme/common/res/values-ne/strings.xml
index dc71dda0ddb0b302c3cb6083def8634f965dd8cb..01f47adf91e4a02d22492b2d31cb5a776e066e3a 100644
--- a/java/com/android/dialer/theme/common/res/values-ne/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ne/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dपेफोनआपतकालीन नम्बर
- फोनकल गर्नुहोस्Wi‑Fi प्रयोग गरी कललाई निरन्तरता दिँदै…यो कलमा RTT उपलब्ध छैन
diff --git a/java/com/android/dialer/theme/common/res/values-night/colors.xml b/java/com/android/dialer/theme/common/res/values-night/colors.xml
index aa42d8b8895086f751d4aa4028b08f7a2c9da1bf..45bccc61e2e003f7f849cd13ddda7ad99d412e06 100644
--- a/java/com/android/dialer/theme/common/res/values-night/colors.xml
+++ b/java/com/android/dialer/theme/common/res/values-night/colors.xml
@@ -16,6 +16,9 @@
-->
-
- #1C3AA9
+ #3ee0a0
+ #ffb3ac
+ #b5c4ff
+ @*android:color/system_accent1_600
+ @android:color/black
diff --git a/java/com/android/dialer/theme/common/res/values-nl/strings.xml b/java/com/android/dialer/theme/common/res/values-nl/strings.xml
index 758ca048c0272eb522bebe634333e1a603347790..db21f0b6abc52325c7aec8f11e747421cc98075b 100644
--- a/java/com/android/dialer/theme/common/res/values-nl/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-nl/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefooncelAlarmnummer
- TelefoonBellenGesprek voortzetten via wifi…RTT niet beschikbaar voor deze oproep
diff --git a/java/com/android/dialer/theme/common/res/values-no/strings.xml b/java/com/android/dialer/theme/common/res/values-no/strings.xml
index 8d18894cec7463a794b4a1b9f028a64ecfb441cd..ca560a5655196adb6acb73a7a4d00c434858a7f1 100644
--- a/java/com/android/dialer/theme/common/res/values-no/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-no/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefonkioskNødnummer
- TelefonRingFortsetter samtalen via Wi‑Fi …STT er ikke tilgjengelig for dette anropet
diff --git a/java/com/android/dialer/theme/common/res/values-pa/strings.xml b/java/com/android/dialer/theme/common/res/values-pa/strings.xml
index fb831dde67bcc1d66438407e01deed0c9672d2ba..6c68a77aacdb424ade1ebbb68349e3874b8cbaf4 100644
--- a/java/com/android/dialer/theme/common/res/values-pa/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-pa/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dਪੇਫੋਨਸੰਕਟਕਾਲੀਨ ਨੰਬਰ
- ਫੋਨਕਾਲ ਕਰੋਵਾਈ-ਫਾਈ ਦੀ ਵਰਤੋ ਨਾਲ ਕਾਲ ਜਾਰੀ ਰੱਖੋ…ਇਸ ਕਾਲ ਲਈ RTT ਉਪਲਬਧ ਨਹੀਂ ਹੈ
diff --git a/java/com/android/dialer/theme/common/res/values-pl/strings.xml b/java/com/android/dialer/theme/common/res/values-pl/strings.xml
index 54e5ee856366966a67ecfd1a2733398df095c06b..9526bbf181cb4a73c27d544fbc798f6c48e80b82 100644
--- a/java/com/android/dialer/theme/common/res/values-pl/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-pl/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dAutomat telefonicznyNumer alarmowy
- TelefonZadzwońKontynuuję rozmowę przy użyciu sieci Wi-Fi…Funkcja RTT jest niedostępna w przypadku tego połączenia
diff --git a/java/com/android/dialer/theme/common/res/values-pt-rBR/strings.xml b/java/com/android/dialer/theme/common/res/values-pt-rBR/strings.xml
index 99c2a8b3919fcdea033b0ccbba619db068803bdf..89254374a64257d90ea47f0cd22b7a13d83cf9cf 100644
--- a/java/com/android/dialer/theme/common/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-pt-rBR/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefone públicoNúmero de emergência
- TelefoneLigarContinuando a chamada por Wi‑Fi…A RTT não está disponível para esta chamada
diff --git a/java/com/android/dialer/theme/common/res/values-pt-rPT/strings.xml b/java/com/android/dialer/theme/common/res/values-pt-rPT/strings.xml
index 37d9cd1da52afdbdcef755f8fc12906a189e3d92..c93ce9225860461632ee9734ee61fc3071afb2f3 100644
--- a/java/com/android/dialer/theme/common/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-pt-rPT/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefone públicoNúmero de emergência
- TelefoneTelefonarContinuar a chamada através de Wi‑Fi…RTT não está disponível para esta chamada
diff --git a/java/com/android/dialer/theme/common/res/values-pt/strings.xml b/java/com/android/dialer/theme/common/res/values-pt/strings.xml
index 99c2a8b3919fcdea033b0ccbba619db068803bdf..89254374a64257d90ea47f0cd22b7a13d83cf9cf 100644
--- a/java/com/android/dialer/theme/common/res/values-pt/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-pt/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefone públicoNúmero de emergência
- TelefoneLigarContinuando a chamada por Wi‑Fi…A RTT não está disponível para esta chamada
diff --git a/java/com/android/dialer/theme/common/res/values-ro/strings.xml b/java/com/android/dialer/theme/common/res/values-ro/strings.xml
index 8dd7733165dae42dddc2dacd81271cc6547dc31f..6602ff95d03932902199f43d3940a07f0341433f 100644
--- a/java/com/android/dialer/theme/common/res/values-ro/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ro/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefon publicNumăr de urgență
- TelefonApelațiSe continuă apelul folosind Wi‑Fi…Funcția TTR nu este disponibilă pentru apel
diff --git a/java/com/android/dialer/theme/common/res/values-ru/strings.xml b/java/com/android/dialer/theme/common/res/values-ru/strings.xml
index be33a125caad2e532e3af52aa6176a58dc9aab0d..8a7cbb74d02e43371b8408122746faf3573b5347 100644
--- a/java/com/android/dialer/theme/common/res/values-ru/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ru/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dТелефон-автоматЭкстренная служба
- ТелефонПозвонитьПереключение на Wi‑Fi…Функция RTT недоступна для этого вызова
diff --git a/java/com/android/dialer/theme/common/res/values-si/strings.xml b/java/com/android/dialer/theme/common/res/values-si/strings.xml
index bf9403e389e87081e7938ee001e29e37ab05f770..9a5371a2560e3f830a98c9d8f16c45e433bac719 100644
--- a/java/com/android/dialer/theme/common/res/values-si/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-si/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dපේෆෝනයහදිසි ඇමතුම් අංකය
- දුරකථනයඇමතුමWi‑Fi භාවිතයෙන් ඇමතුම දිගටම කරගෙන යමින්…RTT මෙම ඇමතුම සඳහා ලබා ගත නොහැකිය
diff --git a/java/com/android/dialer/theme/common/res/values-sk/strings.xml b/java/com/android/dialer/theme/common/res/values-sk/strings.xml
index faafa6e3d3475bbe800740bd1ea2018034777ecd..fe5a657670ea32c36345fc65caaae210d9291b78 100644
--- a/java/com/android/dialer/theme/common/res/values-sk/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-sk/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefónny automatČíslo tiesňovej linky
- TelefónVolaťPokračuje sa v hovore cez Wi‑Fi…Pre tento hovor nie je okamžitý text k dispozícii
diff --git a/java/com/android/dialer/theme/common/res/values-sl/strings.xml b/java/com/android/dialer/theme/common/res/values-sl/strings.xml
index d4a8efa31eeb1efb06fe7dafac8cc01db60c3392..48b88d772b7384fd7caa537c7479b9e6fb299582 100644
--- a/java/com/android/dialer/theme/common/res/values-sl/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-sl/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefonska govorilnicaŠtevilka za klic v sili
- TelefonPokličiNadaljevanje klica prek Wi-Fi-ja …RTT ni na voljo za ta klic
diff --git a/java/com/android/dialer/theme/common/res/values-sq/strings.xml b/java/com/android/dialer/theme/common/res/values-sq/strings.xml
index 3924fb826bc0759ff91b2158ecb46f6404e0eb22..7632ba805370002cf73d42f9c08784a7acc65c45 100644
--- a/java/com/android/dialer/theme/common/res/values-sq/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-sq/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefon me pagesëNumri i urgjencës
- TelefoniTelefonoPo vazhdon telefonatën duke përdorur Wi‑Fi…Funksioni RTT nuk ofrohet për këtë telefonatë
diff --git a/java/com/android/dialer/theme/common/res/values-sr/strings.xml b/java/com/android/dialer/theme/common/res/values-sr/strings.xml
index 0b65e5aaee055a758d42fdcf8fa4047b6a3f376f..65c7e75c87afc5f33617ca69f8aba738990df1ab 100644
--- a/java/com/android/dialer/theme/common/res/values-sr/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-sr/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dТелефонска говорницаБрој хитне службе
- ТелефонПозовиПозив се наставља помоћу Wi‑Fi-ја…RTT није доступан за овај позив
diff --git a/java/com/android/dialer/theme/common/res/values-sv/strings.xml b/java/com/android/dialer/theme/common/res/values-sv/strings.xml
index 4154f3d92eeca739c10bb821bcfd0e477d68289f..d230c0844e85049b51e52a7fcea900e5e40b3d87 100644
--- a/java/com/android/dialer/theme/common/res/values-sv/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-sv/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTelefonautomatLarmnummer
- TelefonRingSamtalet fortsätter med Wi‑Fi …RTT är inte tillgängligt för det här samtalet
diff --git a/java/com/android/dialer/theme/common/res/values-sw/strings.xml b/java/com/android/dialer/theme/common/res/values-sw/strings.xml
index 6b358dcd7467c960bac8cdd026436021b69bf0b7..98f90cdf6b2a553968b9235a24a781a3629463af 100644
--- a/java/com/android/dialer/theme/common/res/values-sw/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-sw/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dSimu ya kulipiaNambari ya dharura
- SimuPiga simuInaendelea kupiga simu ya video kupitia Wi‑Fi…RTT haipatikani kwa ajili ya simu hii
diff --git a/java/com/android/dialer/theme/common/res/values-ta/strings.xml b/java/com/android/dialer/theme/common/res/values-ta/strings.xml
index 5b2e9c9ffae84353189928b7d3ae5f92bfd2443f..7ba97a7ddda858ebb3d6f77860fa5af629f689b1 100644
--- a/java/com/android/dialer/theme/common/res/values-ta/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ta/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dகட்டணத் தொலைபேசிஅவசர எண்
- மொபைல்அழைவைஃபையைப் பயன்படுத்தி அழைப்பைத் தொடர்கிறது…இந்த அழைப்பிற்கு RTT கிடையாது
diff --git a/java/com/android/dialer/theme/common/res/values-te/strings.xml b/java/com/android/dialer/theme/common/res/values-te/strings.xml
index b88dd8bf6d9882bd4e85ac933463462dec3cc2fa..c3b0b590be3994d1b86845e78ed3df777437ccf4 100644
--- a/java/com/android/dialer/theme/common/res/values-te/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-te/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dపే ఫోన్అత్యవసర నంబర్
- ఫోన్కాల్ చేయిWi‑Fiని ఉపయోగించి కాల్ను కొనసాగిస్తోంది…ఈ కాల్కు RTT అందుబాటులో లేదు
diff --git a/java/com/android/dialer/theme/common/res/values-th/strings.xml b/java/com/android/dialer/theme/common/res/values-th/strings.xml
index 4324baa39e0dcf432cc24edb0d26c345582a3278..ff666483015fe34d574393060fd02c473eeeae65 100644
--- a/java/com/android/dialer/theme/common/res/values-th/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-th/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dโทรศัพท์สาธารณะหมายเลขฉุกเฉิน
- โทรศัพท์โทรโทรต่อไปโดยใช้ Wi‑Fi…RTT ไม่สามารถใช้ได้สำหรับการโทรนี้
diff --git a/java/com/android/dialer/theme/common/res/values-tl/strings.xml b/java/com/android/dialer/theme/common/res/values-tl/strings.xml
index 8b210f6e263ca65ef6e05be5e665081f29cd94d7..c57fb3bd3b43c19c6ce8f3e1c87b5b28a41fed47 100644
--- a/java/com/android/dialer/theme/common/res/values-tl/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-tl/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dPayphonePang-emergency na numero
- TeleponoTawagIpinagpapatuloy ang tawag gamit ang Wi‑Fi…Hindi available ang RTT para sa tawag na ito
diff --git a/java/com/android/dialer/theme/common/res/values-tr/strings.xml b/java/com/android/dialer/theme/common/res/values-tr/strings.xml
index 324f3dc4bae797cbef609d2222a9a9014c8d8a9b..e8e656990912223848d4167a876400484fba40f5 100644
--- a/java/com/android/dialer/theme/common/res/values-tr/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-tr/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dAnkesörlü telefonAcil durum numarası
- TelefonTelefon etGörüşmeye kablosuz ağ kullanılarak devam ediliyor…Bu çağrıda RTT kullanılamaz
diff --git a/java/com/android/dialer/theme/common/res/values-uk/strings.xml b/java/com/android/dialer/theme/common/res/values-uk/strings.xml
index de131f635e813a7793a6bef0f639ef9dc61a7c5b..fbd60626f6512960b1c3aa2ce0b2d9b86d12bbb6 100644
--- a/java/com/android/dialer/theme/common/res/values-uk/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-uk/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dТаксофонЕкстрений номер
- ТелефонВикликПродовження виклику за допомогою Wi-Fi…Функція RTT недоступна для цього виклику
diff --git a/java/com/android/dialer/theme/common/res/values-ur/strings.xml b/java/com/android/dialer/theme/common/res/values-ur/strings.xml
index af868ec366ee7a547ccc9959a58d077462e9612c..249b895e2eeaa798d3d958174f3adb8db8c38ca1 100644
--- a/java/com/android/dialer/theme/common/res/values-ur/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ur/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dپے فونایمرجنسی نمبر
- فونکال کریںWi‑Fi کے ذریعے کال جاری ہے…اس کال کے لئے RTT دستیاب نہیں ہے
diff --git a/java/com/android/dialer/theme/common/res/values-uz/strings.xml b/java/com/android/dialer/theme/common/res/values-uz/strings.xml
index a575046deef5d68daefc8f49e9c0e6b2c27c7259..0dd750ba2b51bfb022064ab57c5cfbaa3f347763 100644
--- a/java/com/android/dialer/theme/common/res/values-uz/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-uz/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dTaksofonFavqulodda xizmat raqami
- TelefonTelefonChaqiruv Wi‑Fi orqali davom ettirish…Ushbu chaqiruvda RTT funksiyasidan foydalanish imkonsiz
diff --git a/java/com/android/dialer/theme/common/res/values-vi/strings.xml b/java/com/android/dialer/theme/common/res/values-vi/strings.xml
index bb274aea520862ca792dc934bebef20893fd4532..dae2a2173fa0b8f43c62ed9130ff5efd55bef1d3 100644
--- a/java/com/android/dialer/theme/common/res/values-vi/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-vi/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dĐiện thoại công cộngSố khẩn cấp
- Điện thoạiGọiĐang tiếp tục cuộc gọi bằng cách sử dụng Wi‑Fi…Không thể sử dụng tin nhắn theo thời gian thực (RTT) cho cuộc gọi này
diff --git a/java/com/android/dialer/theme/common/res/values-zh-rCN/strings.xml b/java/com/android/dialer/theme/common/res/values-zh-rCN/strings.xml
index 780fbe7b98700ad00e7cc208a0f67aa2194cf68e..a224f80b1a9cae5903d1ad442a6e7b7c8a232e55 100644
--- a/java/com/android/dialer/theme/common/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-zh-rCN/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$d公用电话紧急呼救号码
- 电话拨打电话正在使用 WLAN 继续通话…此通话不支持实时信息 (RTT) 功能
diff --git a/java/com/android/dialer/theme/common/res/values-zh-rHK/strings.xml b/java/com/android/dialer/theme/common/res/values-zh-rHK/strings.xml
index 02cd157e6e9d040640248d62191f172183c31929..18a38d3686cca47eb1ab9ec2d7247cb9dacca06d 100644
--- a/java/com/android/dialer/theme/common/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-zh-rHK/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$d公共電話緊急電話號碼
- 電話通話正在使用 Wi‑Fi 繼續通話…RTT 不適用於此通話
diff --git a/java/com/android/dialer/theme/common/res/values-zh-rTW/strings.xml b/java/com/android/dialer/theme/common/res/values-zh-rTW/strings.xml
index cce900b6d4001e2595346ec217a6bbf0dc009bc1..be50373339bfc66f40576f3925f2cdecc2dbce3e 100644
--- a/java/com/android/dialer/theme/common/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-zh-rTW/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$d公用電話緊急電話號碼
- 電話撥號使用 Wi‑Fi 繼續進行通話…本次通話不支援即時文字訊息功能
diff --git a/java/com/android/dialer/theme/common/res/values-zu/strings.xml b/java/com/android/dialer/theme/common/res/values-zu/strings.xml
index cdcec45b2e5524726d1025b474f9b9eedfb7a104..f6eb72f11dbf6677124313eff6c597531023bd36 100644
--- a/java/com/android/dialer/theme/common/res/values-zu/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-zu/strings.xml
@@ -3,7 +3,6 @@
%1$s %2$dUcingo olufakwa imaliInombolo ephuthumayo
- IfoniShayaQhubeka ifone usebenzisa i-Wi‑Fi…I-RTT ayitholakaleli le kholi
diff --git a/java/com/android/dialer/theme/common/res/values/colors.xml b/java/com/android/dialer/theme/common/res/values/colors.xml
index 1831862b1857f3aeb22e5cf5734cd9d274de92f6..08255f32f8c6325d2fc80c837d13c3a10568d35b 100644
--- a/java/com/android/dialer/theme/common/res/values/colors.xml
+++ b/java/com/android/dialer/theme/common/res/values/colors.xml
@@ -16,11 +16,12 @@
-->
- #00C853
- #BD2A2A
+ #006c49
+ #b52425#D8D8D8#2A56C6
- #4285F4
+ @*android:color/system_accent1_600
+ @android:color/white#097138
@@ -31,4 +32,6 @@
#CFD8DC
-
\ No newline at end of file
+
+ @*android:color/system_neutral1_50
+
diff --git a/java/com/android/dialer/theme/common/res/values/dimens.xml b/java/com/android/dialer/theme/common/res/values/dimens.xml
index 88b8a0423093212b7f89c09df38d889402073f6b..4c2edb48a1f0f955659518a7e87e4c65586b5834 100644
--- a/java/com/android/dialer/theme/common/res/values/dimens.xml
+++ b/java/com/android/dialer/theme/common/res/values/dimens.xml
@@ -19,10 +19,6 @@
24dp24dp
- 16sp
- 12sp
- 14sp
- 14sp48dp15dp
@@ -34,23 +30,15 @@
64dp3dp48dp
-
- 72dp2dp1.00.54
-
- 56dp
-
48dp
-
- 72dp
-
88dp
diff --git a/java/com/android/dialer/theme/common/res/values/strings.xml b/java/com/android/dialer/theme/common/res/values/strings.xml
index 5952a01d75a068fbe958e27547af8a937e21ab9d..c2511a36c84c97b7a9b05e8580400cc8ae189cb0 100644
--- a/java/com/android/dialer/theme/common/res/values/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values/strings.xml
@@ -29,10 +29,6 @@
Emergency number
-
- Phone
-
Call
diff --git a/java/com/android/dialer/theme/common/res/values/styles.xml b/java/com/android/dialer/theme/common/res/values/styles.xml
index 2c6446ca1051a4108753880c7e0b82a76602b13c..70c91d7ad11eaab81c68e62d78d611816699b7d4 100644
--- a/java/com/android/dialer/theme/common/res/values/styles.xml
+++ b/java/com/android/dialer/theme/common/res/values/styles.xml
@@ -22,8 +22,9 @@
wrap_content4dpfalse
- 2dp
- ?android:attr/colorBackgroundFloating
+ 28dp
+ ?android:attr/colorBackground
+ 0dp
@@ -31,4 +32,14 @@
20dp12dp
-
\ No newline at end of file
+
+
+
+
+
diff --git a/java/com/android/dialer/theme/common/res/values/text_styles.xml b/java/com/android/dialer/theme/common/res/values/text_styles.xml
index def5862d4d9d9590e18b3ebbfedf947b0f83d537..18bd0ff5f65de648f8995bc254d4f598e4f013c8 100644
--- a/java/com/android/dialer/theme/common/res/values/text_styles.xml
+++ b/java/com/android/dialer/theme/common/res/values/text_styles.xml
@@ -95,4 +95,4 @@
end1
-
\ No newline at end of file
+
diff --git a/java/com/android/dialer/theme/hidden/res/color/dialer_primary_text_color.xml b/java/com/android/dialer/theme/hidden/res/color/dialer_primary_text_color.xml
index 58aa2b0e1ce437dd24ea3f624b0a7afcb3a45304..ef8c996e71568bef2a7e2cdfecbca1d679e81efb 100644
--- a/java/com/android/dialer/theme/hidden/res/color/dialer_primary_text_color.xml
+++ b/java/com/android/dialer/theme/hidden/res/color/dialer_primary_text_color.xml
@@ -16,6 +16,6 @@
-->
-
+
-
\ No newline at end of file
+
diff --git a/java/com/android/dialer/theme/hidden/res/values-night/colors_dialer_dark.xml b/java/com/android/dialer/theme/hidden/res/values-night/colors_dialer_dark.xml
deleted file mode 100644
index 8d04c725319edf2be03a26f7f05c8737f8934986..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/theme/hidden/res/values-night/colors_dialer_dark.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
- #5195EA
- #335195EA
- #5195EA
- #33ffffff
- @color/google_grey_900
- #2374CE
-
diff --git a/java/com/android/dialer/common/preference/res/values/attrs.xml b/java/com/android/dialer/theme/hidden/res/values-night/colors_dialer_light.xml
similarity index 54%
rename from java/com/android/dialer/common/preference/res/values/attrs.xml
rename to java/com/android/dialer/theme/hidden/res/values-night/colors_dialer_light.xml
index c1d1de015aeb88737d106519e78b73a33f53ca4d..99fda0728001c2f6e16ffc682f845e9b4a29309d 100644
--- a/java/com/android/dialer/common/preference/res/values/attrs.xml
+++ b/java/com/android/dialer/theme/hidden/res/values-night/colors_dialer_light.xml
@@ -1,4 +1,3 @@
-
-
-
-
+
+ @color/dialer_background_color
+ @android:color/system_neutral1_900
+ @android:color/system_neutral1_800
+ @android:color/system_neutral1_800
+ @android:color/system_neutral1_800
+ @android:color/system_accent1_100
-
diff --git a/java/com/android/dialer/theme/hidden/res/values/colors_dialer_light.xml b/java/com/android/dialer/theme/hidden/res/values/colors_dialer_light.xml
index e4d1e29aafe202add75235eac423009e6c23bbe8..9779716eb88965ba7405777afc937a108ae2b5d3 100644
--- a/java/com/android/dialer/theme/hidden/res/values/colors_dialer_light.xml
+++ b/java/com/android/dialer/theme/hidden/res/values/colors_dialer_light.xml
@@ -15,12 +15,16 @@
-->
- #2A56C6
+ @android:color/system_accent1_600#332A56C6@color/dialer_background_color
- #F50057
- #FAFAFA
+ @android:color/system_neutral2_50
+ @android:color/system_accent3_400#1f000000
- @color/google_grey_50
- #1C3AA9
+ @android:color/system_neutral1_10
+ @android:color/system_neutral1_50
+ @android:color/system_neutral1_50
+ @android:color/system_neutral1_100
+ @android:color/system_neutral1_900
+ @android:color/system_accent1_600
diff --git a/java/com/android/dialer/theme/hidden/res/values/styles.xml b/java/com/android/dialer/theme/hidden/res/values/styles.xml
index 44a35f8a2a46ee4d7aa292352366d78346d6d4ab..b2fab956fc040e5553a3c3f11c330ea9e5a659d8 100644
--- a/java/com/android/dialer/theme/hidden/res/values/styles.xml
+++ b/java/com/android/dialer/theme/hidden/res/values/styles.xml
@@ -52,10 +52,9 @@
activity's theme extends from Dialer.ThemeBase(.NoActionBar) or doesn't specify a theme. -->
diff --git a/java/com/android/dialer/theme/res/values-af/strings.xml b/java/com/android/dialer/theme/res/values-af/strings.xml
index 44406169979949b2dee86a7f17f12a3c9f744189..6ec7f2f7aeab91bfe6751fcbb810dac2cd60344b 100644
--- a/java/com/android/dialer/theme/res/values-af/strings.xml
+++ b/java/com/android/dialer/theme/res/values-af/strings.xml
@@ -20,7 +20,6 @@
"Onbekend""%1$s%2$d""Telefoonhokkie"
- "Foon""Video-oproep""Bel"
diff --git a/java/com/android/dialer/theme/res/values-am/strings.xml b/java/com/android/dialer/theme/res/values-am/strings.xml
index cb697277b8679389f011f5da6748d3fbd9800acc..71861443ca8592910fc21fa27a7f8e01d9d8342f 100644
--- a/java/com/android/dialer/theme/res/values-am/strings.xml
+++ b/java/com/android/dialer/theme/res/values-am/strings.xml
@@ -20,7 +20,6 @@
"ያልታወቀ""%1$s%2$d""የሕዝብ ስልክ"
- "ስልክ""የቪዲዮ ጥሪ""ደውል"
diff --git a/java/com/android/dialer/theme/res/values-ar/strings.xml b/java/com/android/dialer/theme/res/values-ar/strings.xml
index 49ecdf692301e8042101abd10064e20d9e0215f5..480f352ebd7761b8f927684d3b68c1ea6b2c2e46 100644
--- a/java/com/android/dialer/theme/res/values-ar/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ar/strings.xml
@@ -20,7 +20,6 @@
"غير معروف""%1$s%2$d""هاتف يعمل بالعملة"
- "الهاتف""مكالمة فيديو""اتصال"
diff --git a/java/com/android/dialer/theme/res/values-az/strings.xml b/java/com/android/dialer/theme/res/values-az/strings.xml
index 6aa8a03bdbe9ca86d02127e1d8ce531211347474..e2b75c76a0e1cb30ee65c93eb4882fd1946b1cd6 100644
--- a/java/com/android/dialer/theme/res/values-az/strings.xml
+++ b/java/com/android/dialer/theme/res/values-az/strings.xml
@@ -20,7 +20,6 @@
"Naməlum""%1$s%2$d""Taksofon"
- "Telefon""Video zəng""Zəng edin"
diff --git a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
index 159f2a144ee590edf7488f0769e8c0791d4da795..c412fa80bcb6bc9d73f8f7854a636501ad0c6f8e 100644
--- a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
@@ -20,7 +20,6 @@
"Nepoznato""%1$s%2$d""Telefonska govornica"
- "Telefon""Uputi video poziv""Pozovi"
diff --git a/java/com/android/dialer/theme/res/values-be/strings.xml b/java/com/android/dialer/theme/res/values-be/strings.xml
index c69fa10dded495f441f12041f2d6b8ffdac0ff7c..962709974d90d92bfe3439795d35f5bf84e61bdf 100644
--- a/java/com/android/dialer/theme/res/values-be/strings.xml
+++ b/java/com/android/dialer/theme/res/values-be/strings.xml
@@ -20,7 +20,6 @@
"Невядомы""%1$s%2$d""Таксафон"
- "Тэлефон""Відэавыклік""Выклікаць"
diff --git a/java/com/android/dialer/theme/res/values-bg/strings.xml b/java/com/android/dialer/theme/res/values-bg/strings.xml
index 0e829a5bbfac1f17e025385977073e30589ad0e5..53885db76fcab301badaab9bb39d258fe8b75a25 100644
--- a/java/com/android/dialer/theme/res/values-bg/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bg/strings.xml
@@ -20,7 +20,6 @@
"Неизвестен номер""%1$s%2$d""Обществен телефон"
- "Телефон""Видеообаждане""Обаждане"
diff --git a/java/com/android/dialer/theme/res/values-bn/strings.xml b/java/com/android/dialer/theme/res/values-bn/strings.xml
index be082640f2bd0184ebea3e9ce9bd7f2127520693..37e62084075380e47cfdb3196b2e9b296692471f 100644
--- a/java/com/android/dialer/theme/res/values-bn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bn/strings.xml
@@ -20,7 +20,6 @@
"অজানা""%1$s%2$d""পে ফোন"
- "ফোন""ভিডিও কল""কল করুন"
diff --git a/java/com/android/dialer/theme/res/values-bs/strings.xml b/java/com/android/dialer/theme/res/values-bs/strings.xml
index 7d1e17bc8894cdec9a135b5fa1134734ecfc642a..507b50b1d795e8ee0bd3ec2deb368c92ec8611f8 100644
--- a/java/com/android/dialer/theme/res/values-bs/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bs/strings.xml
@@ -20,7 +20,6 @@
"Nepoznato""%1$s%2$d""Telefonska govornica"
- "Telefon""Videopoziv""Pozovi"
diff --git a/java/com/android/dialer/theme/res/values-ca/strings.xml b/java/com/android/dialer/theme/res/values-ca/strings.xml
index a15434b8a685aa54dd283e33bacb539744204985..03a181ab602c2468b3aef408a8bef7c4b8aa2045 100644
--- a/java/com/android/dialer/theme/res/values-ca/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ca/strings.xml
@@ -20,7 +20,6 @@
"Desconegut""%1$s%2$d""Telèfon públic"
- "Telèfon""Videotrucada""Truca"
diff --git a/java/com/android/dialer/theme/res/values-cs/strings.xml b/java/com/android/dialer/theme/res/values-cs/strings.xml
index 7525c3eafb1ccbb3f64dff640adcf61e5423f117..201b3cbf71cfb8125202a1fea21a86d916a58f2e 100644
--- a/java/com/android/dialer/theme/res/values-cs/strings.xml
+++ b/java/com/android/dialer/theme/res/values-cs/strings.xml
@@ -20,7 +20,6 @@
"Neznámé""%1$s%2$d""Telefonní automat"
- "Telefon""Zahájit videohovor""Volat"
diff --git a/java/com/android/dialer/theme/res/values-da/strings.xml b/java/com/android/dialer/theme/res/values-da/strings.xml
index 1c2bbb5287104ed54d218f8923e0a2aa66a43775..8bd2bda67bf5e06d5adfb2338d5bc81e41aea06e 100644
--- a/java/com/android/dialer/theme/res/values-da/strings.xml
+++ b/java/com/android/dialer/theme/res/values-da/strings.xml
@@ -20,7 +20,6 @@
"Ukendt""%1$s%2$d""Mønttelefon"
- "Opkald""Videoopkald""Ring op"
diff --git a/java/com/android/dialer/theme/res/values-de/strings.xml b/java/com/android/dialer/theme/res/values-de/strings.xml
index 102d59cbe4f9ead5fdb34467b97ddc7bfc52e7c1..3ec7c4dda52f76d437613ef0514bce7d4f1f17ae 100644
--- a/java/com/android/dialer/theme/res/values-de/strings.xml
+++ b/java/com/android/dialer/theme/res/values-de/strings.xml
@@ -20,7 +20,6 @@
"Unbekannt""%1$s%2$d""Münztelefon"
- "Telefon""Videoanruf""Anrufen"
diff --git a/java/com/android/dialer/theme/res/values-el/strings.xml b/java/com/android/dialer/theme/res/values-el/strings.xml
index 20cd8561203828f2e3115330f3d00708bda57f31..ef620587ae5ddbc8f6d53a7a8cd1bf118a560da1 100644
--- a/java/com/android/dialer/theme/res/values-el/strings.xml
+++ b/java/com/android/dialer/theme/res/values-el/strings.xml
@@ -20,7 +20,6 @@
"Άγνωστος""%1$s%2$d""Τηλέφωνο με χρέωση"
- "Τηλέφωνο""Βιντεοκλήση""Κλήση"
diff --git a/java/com/android/dialer/theme/res/values-en-rAU/strings.xml b/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
index 5ab154e4d39202f1437d5bf62a1be912e551610e..d58a3adc2a8f4bcb5308b13f8bbf020ebdc61a59 100644
--- a/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
@@ -20,7 +20,6 @@
"Unknown""%1$s%2$d""Payphone"
- "Phone""Video call""Call"
diff --git a/java/com/android/dialer/theme/res/values-en-rGB/strings.xml b/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
index 5ab154e4d39202f1437d5bf62a1be912e551610e..d58a3adc2a8f4bcb5308b13f8bbf020ebdc61a59 100644
--- a/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
@@ -20,7 +20,6 @@
"Unknown""%1$s%2$d""Payphone"
- "Phone""Video call""Call"
diff --git a/java/com/android/dialer/theme/res/values-en-rIN/strings.xml b/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
index 5ab154e4d39202f1437d5bf62a1be912e551610e..d58a3adc2a8f4bcb5308b13f8bbf020ebdc61a59 100644
--- a/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
@@ -20,7 +20,6 @@
"Unknown""%1$s%2$d""Payphone"
- "Phone""Video call""Call"
diff --git a/java/com/android/dialer/theme/res/values-es-rUS/strings.xml b/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
index ac31fffcf33c55c1f6a154334e21a05611868b15..75b84d5001598ec0ac815e7ce303123f90f86a3b 100644
--- a/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
@@ -20,7 +20,6 @@
"Desconocido""%1$s%2$d""Teléfono público"
- "Teléfono""Videollamada""Llamar"
diff --git a/java/com/android/dialer/theme/res/values-es/strings.xml b/java/com/android/dialer/theme/res/values-es/strings.xml
index 8a12c02857e68542bec64074afb9781a5385d938..1198075366910725b869c8370fe457c5f9eb6262 100644
--- a/java/com/android/dialer/theme/res/values-es/strings.xml
+++ b/java/com/android/dialer/theme/res/values-es/strings.xml
@@ -20,7 +20,6 @@
"Desconocido""%1$s%2$d""Teléfono público"
- "Teléfono""Videollamada""Llamar"
diff --git a/java/com/android/dialer/theme/res/values-et/strings.xml b/java/com/android/dialer/theme/res/values-et/strings.xml
index 42adb0352b606133201089c248c89ae2ad9a5d30..4397827adb088317dfd0fafeb2ead2ca481bb901 100644
--- a/java/com/android/dialer/theme/res/values-et/strings.xml
+++ b/java/com/android/dialer/theme/res/values-et/strings.xml
@@ -20,7 +20,6 @@
"Tundmatu""%1$s%2$d""Telefoniautomaat"
- "Telefon""Videokõne""Helista"
diff --git a/java/com/android/dialer/theme/res/values-eu/strings.xml b/java/com/android/dialer/theme/res/values-eu/strings.xml
index 8760dac58e49c57d00c2c77387123d976f9db893..d117403ea70a93b87190b24cebd992f7cc66eafc 100644
--- a/java/com/android/dialer/theme/res/values-eu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-eu/strings.xml
@@ -20,7 +20,6 @@
"Ezezaguna""%1$s%2$d""Telefono publikoa"
- "Telefonoa""Bideo-deia""Deitu"
diff --git a/java/com/android/dialer/theme/res/values-fa/strings.xml b/java/com/android/dialer/theme/res/values-fa/strings.xml
index 0379d7c977aa0637c4ae1929feec0f0065a20d7c..c909281a4a2fbf1344795585d0fc3ee769e8bfc4 100644
--- a/java/com/android/dialer/theme/res/values-fa/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fa/strings.xml
@@ -20,7 +20,6 @@
"ناشناس""%1$d%2$s""تلفن عمومی"
- "تلفن""تماس ویدیویی""تماس"
diff --git a/java/com/android/dialer/theme/res/values-fi/strings.xml b/java/com/android/dialer/theme/res/values-fi/strings.xml
index 82172e6d2e47396edf6d19e4591b3ca25388efb4..737e4b84917343ff1f4b4aa6a2607f67982be0f5 100644
--- a/java/com/android/dialer/theme/res/values-fi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fi/strings.xml
@@ -20,7 +20,6 @@
"Tuntematon""%1$s%2$d""Maksupuhelin"
- "Puhelin""Videopuhelu""Soita"
diff --git a/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml b/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
index 3fe64f4a370dd2856acb3707a89722f5684331fb..d7cbcc308104dcc339296e58b941da76f5d43d97 100644
--- a/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
@@ -20,7 +20,6 @@
"Inconnu""%1$s%2$d""Cabine téléphonique"
- "Téléphone""Appel vidéo""Appeler"
diff --git a/java/com/android/dialer/theme/res/values-fr/strings.xml b/java/com/android/dialer/theme/res/values-fr/strings.xml
index 3fe64f4a370dd2856acb3707a89722f5684331fb..d7cbcc308104dcc339296e58b941da76f5d43d97 100644
--- a/java/com/android/dialer/theme/res/values-fr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fr/strings.xml
@@ -20,7 +20,6 @@
"Inconnu""%1$s%2$d""Cabine téléphonique"
- "Téléphone""Appel vidéo""Appeler"
diff --git a/java/com/android/dialer/theme/res/values-gl/strings.xml b/java/com/android/dialer/theme/res/values-gl/strings.xml
index c137c523f1375737b07df3cc0b1625af1c36d5cb..f1928d51043d52221c5eb29f5b9f9faa0d371182 100644
--- a/java/com/android/dialer/theme/res/values-gl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-gl/strings.xml
@@ -20,7 +20,6 @@
"Descoñecido""%1$s%2$d""Teléfono público"
- "Teléfono""Videochamada""Chamar"
diff --git a/java/com/android/dialer/theme/res/values-gu/strings.xml b/java/com/android/dialer/theme/res/values-gu/strings.xml
index 7af93677c4943eeb6aa3ffb1c88e61a0460b8330..57203173a7371cefc4ce81b9a14498fa6c7b674c 100644
--- a/java/com/android/dialer/theme/res/values-gu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-gu/strings.xml
@@ -20,7 +20,6 @@
"અજાણ્યું""%1$s%2$d""પેફોન"
- "ફોન""વિડિઓ કૉલ""કૉલ કરો"
diff --git a/java/com/android/dialer/theme/res/values-hi/strings.xml b/java/com/android/dialer/theme/res/values-hi/strings.xml
index a475383edaacfeb54277d839abb5d10a4f10c29b..60c5ed6839b355e150e738e9fe69ecda327d98be 100644
--- a/java/com/android/dialer/theme/res/values-hi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hi/strings.xml
@@ -20,7 +20,6 @@
"अज्ञात""%1$s%2$d""पे-फ़ोन"
- "फ़ोन""वीडियो कॉल""कॉल करें"
diff --git a/java/com/android/dialer/theme/res/values-hr/strings.xml b/java/com/android/dialer/theme/res/values-hr/strings.xml
index 668d8ff2f7f928a8d276ee85efff63ba84b3058c..fd30b1523a24fdf53f6d20b793523f2c5ed2533c 100644
--- a/java/com/android/dialer/theme/res/values-hr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hr/strings.xml
@@ -20,7 +20,6 @@
"Nepoznato""%1$s%2$d""Javna telefonska govornica"
- "Telefon""Videopoziv""Pozovi"
diff --git a/java/com/android/dialer/theme/res/values-hu/strings.xml b/java/com/android/dialer/theme/res/values-hu/strings.xml
index 75c89c67e4ff6e344ded325256d39e1113c912b6..b10188412fe04d45a427e55c42865727e95a817a 100644
--- a/java/com/android/dialer/theme/res/values-hu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hu/strings.xml
@@ -20,7 +20,6 @@
"Ismeretlen""%1$s%2$d""Nyilvános telefon"
- "Telefon""Videohívás""Hívás"
diff --git a/java/com/android/dialer/theme/res/values-hy/strings.xml b/java/com/android/dialer/theme/res/values-hy/strings.xml
index cefdf459ed35d2d602dc06f9f1994d4a22d807e9..2e1619403c8e5fdabebd36c6f613933e7305bcbe 100644
--- a/java/com/android/dialer/theme/res/values-hy/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hy/strings.xml
@@ -20,7 +20,6 @@
"Անհայտ""%1$s%2$d""Բջջային տերմինալ"
- "Հեռախոս""Տեսազանգ""Զանգել"
diff --git a/java/com/android/dialer/theme/res/values-in/strings.xml b/java/com/android/dialer/theme/res/values-in/strings.xml
index ef441369eb22e7dca7af663da91e037f6e05b9f4..c1816bb314a5f446b7aa8cc6dea83bd5c26aacc1 100644
--- a/java/com/android/dialer/theme/res/values-in/strings.xml
+++ b/java/com/android/dialer/theme/res/values-in/strings.xml
@@ -20,7 +20,6 @@
"Tidak diketahui""%1$s%2$d""Telepon Umum"
- "Telepon""Video call""Telepon"
diff --git a/java/com/android/dialer/theme/res/values-is/strings.xml b/java/com/android/dialer/theme/res/values-is/strings.xml
index 88763f5f5a9259be8c00dd471f047954a3373e81..e0981c5a62740490184fd2ab95ab4796819277c1 100644
--- a/java/com/android/dialer/theme/res/values-is/strings.xml
+++ b/java/com/android/dialer/theme/res/values-is/strings.xml
@@ -20,7 +20,6 @@
"Óþekkt""%1$s%2$d""Símasjálfsali"
- "Sími""Hringja myndsímtal""Hringja"
diff --git a/java/com/android/dialer/theme/res/values-it/strings.xml b/java/com/android/dialer/theme/res/values-it/strings.xml
index ec0caa916ce3ab6590af6b6c4d96bb3e75696d2b..b7bcf480ce0da5f2883c319c3c2239a5db8ae6e1 100644
--- a/java/com/android/dialer/theme/res/values-it/strings.xml
+++ b/java/com/android/dialer/theme/res/values-it/strings.xml
@@ -20,7 +20,6 @@
"Sconosciuto""%1$s%2$d""Cabina telefonica"
- "Telefono""Videochiamata""Chiama"
diff --git a/java/com/android/dialer/theme/res/values-iw/strings.xml b/java/com/android/dialer/theme/res/values-iw/strings.xml
index e6652dc6e6467268d4f8cd6014c4d1308f16d946..4b5f596951d670afd03c365481dd87dd6de912a3 100644
--- a/java/com/android/dialer/theme/res/values-iw/strings.xml
+++ b/java/com/android/dialer/theme/res/values-iw/strings.xml
@@ -20,7 +20,6 @@
"לא ידוע""%1$s%2$d""טלפון ציבורי"
- "טלפון""שיחת וידאו""התקשר"
diff --git a/java/com/android/dialer/theme/res/values-ja/strings.xml b/java/com/android/dialer/theme/res/values-ja/strings.xml
index a3517171f391f0bf8cf16ce97f1bd8b004d207e5..e3a408548fa514a7d979c7536dc0a5dcdeb9521e 100644
--- a/java/com/android/dialer/theme/res/values-ja/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ja/strings.xml
@@ -20,7 +20,6 @@
"不明""%1$s(%2$d)""公衆電話"
- "電話""ビデオハングアウト""発信"
diff --git a/java/com/android/dialer/theme/res/values-ka/strings.xml b/java/com/android/dialer/theme/res/values-ka/strings.xml
index 03e368bfd9c2d569be50e06ab9b634b861effc49..550c553a7c3d5089af4a93972182a954b8ee169b 100644
--- a/java/com/android/dialer/theme/res/values-ka/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ka/strings.xml
@@ -20,7 +20,6 @@
"უცნობი""%1$s%2$d""გადახდის ტელეფონი"
- "ტელეფონი""ვიდეოზარი""დარეკვა"
diff --git a/java/com/android/dialer/theme/res/values-kk/strings.xml b/java/com/android/dialer/theme/res/values-kk/strings.xml
index a26da8c98160c434ec4c61ee3333ee67e9df0d65..0604bf822dca9f1983e1f494e0028c9b18b2bf6c 100644
--- a/java/com/android/dialer/theme/res/values-kk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-kk/strings.xml
@@ -20,7 +20,6 @@
"Белгісіз""%1$s%2$d""Автомат-телефон"
- "Телефон""Бейне қоңырау""Қоңырау шалу"
diff --git a/java/com/android/dialer/theme/res/values-km/strings.xml b/java/com/android/dialer/theme/res/values-km/strings.xml
index 9128d45a88dba31999312a03d02364f2f8176f0a..3450e70c3ac536e1eb96b2617d010f405d6bfada 100644
--- a/java/com/android/dialer/theme/res/values-km/strings.xml
+++ b/java/com/android/dialer/theme/res/values-km/strings.xml
@@ -20,7 +20,6 @@
"មិនស្គាល់""%1$s%2$d""ទូរស័ព្ទសាធារណៈ"
- "ទូរស័ព្ទ""ការហៅវីដេអូ""ហៅទូរសព្ទ"
diff --git a/java/com/android/dialer/theme/res/values-kn/strings.xml b/java/com/android/dialer/theme/res/values-kn/strings.xml
index 63f2e5ba548ea6e9496cbecf0759bb1b52e0ffb5..0b4b2a54b97fbd3a0f10d174ca047cffe79ce31b 100644
--- a/java/com/android/dialer/theme/res/values-kn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-kn/strings.xml
@@ -20,7 +20,6 @@
"ಅಪರಿಚಿತ""%1$s%2$d""ಪೇಫೋನ್"
- "ಫೋನ್""ವೀಡಿಯೊ ಕರೆ""ಕರೆಮಾಡಿ"
diff --git a/java/com/android/dialer/theme/res/values-ko/strings.xml b/java/com/android/dialer/theme/res/values-ko/strings.xml
index 03c0ab180ab1952ebf408ddab10ca867791237c1..088f0d500a2d26b414a5c525a0df66775e67774c 100644
--- a/java/com/android/dialer/theme/res/values-ko/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ko/strings.xml
@@ -20,7 +20,6 @@
"알 수 없음""%1$s%2$d""공중전화"
- "휴대전화""화상 통화""전화"
diff --git a/java/com/android/dialer/theme/res/values-ky/strings.xml b/java/com/android/dialer/theme/res/values-ky/strings.xml
index ccbcecb2ed2d275978f3296df93845339637e0e7..42917d6fe6cc1e5a3ca3923de131f39b1bf2f731 100644
--- a/java/com/android/dialer/theme/res/values-ky/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ky/strings.xml
@@ -20,7 +20,6 @@
"Белгисиз""%1$s%2$d""Таксофон"
- "Телефон""Видео чалуу""Чалуу"
diff --git a/java/com/android/dialer/theme/res/values-lo/strings.xml b/java/com/android/dialer/theme/res/values-lo/strings.xml
index 8148bce64eeac3cf037893e0c13c01bb02c11ef6..784c238c810e87020491227ed16a7b1bcc76c974 100644
--- a/java/com/android/dialer/theme/res/values-lo/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lo/strings.xml
@@ -20,7 +20,6 @@
"ບໍ່ຮູ້ຈັກ""%1$s%2$d""ຕູ້ໂທລະສັບສາທາລະນະ"
- "ໂທລະສັບ""ໂທວິດີໂອ""ໂທ"
diff --git a/java/com/android/dialer/theme/res/values-lt/strings.xml b/java/com/android/dialer/theme/res/values-lt/strings.xml
index db133d92717f538dfaf24a98511b8ed51d9fd2ff..bbed6d1e91e3f3c640620d381e334c66c5c91113 100644
--- a/java/com/android/dialer/theme/res/values-lt/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lt/strings.xml
@@ -20,7 +20,6 @@
"Nežinomas""%1$d%2$s""Taksofonas"
- "Telefonas""Vaizdo skambutis""Skambinti"
diff --git a/java/com/android/dialer/theme/res/values-lv/strings.xml b/java/com/android/dialer/theme/res/values-lv/strings.xml
index 435d334600d8823aaf6a09ef2a19ad26a8f5d813..9597cb86786f595624a91fc1dd9c5f9a0ff8def8 100644
--- a/java/com/android/dialer/theme/res/values-lv/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lv/strings.xml
@@ -20,7 +20,6 @@
"Nezināms""%1$s%2$d""Maksas tālrunis"
- "Tālrunis""Videozvans""Zvanīt"
diff --git a/java/com/android/dialer/theme/res/values-mk/strings.xml b/java/com/android/dialer/theme/res/values-mk/strings.xml
index f8e8fbbc650072d6452e6713388b608dcdcd7890..e9cda3859aaae9b08e5b1d0647a17763c1450011 100644
--- a/java/com/android/dialer/theme/res/values-mk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mk/strings.xml
@@ -20,7 +20,6 @@
"Непознато""%1$s%2$d""Говорница"
- "Телефон""Воспоставете видеоповик""Повикајте"
diff --git a/java/com/android/dialer/theme/res/values-ml/strings.xml b/java/com/android/dialer/theme/res/values-ml/strings.xml
index beae000b163015aa0e7b0c1c6d9e57ca00b45fc4..afdd07a98a497814b05139c558c3130d4f1a799d 100644
--- a/java/com/android/dialer/theme/res/values-ml/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ml/strings.xml
@@ -20,7 +20,6 @@
"അജ്ഞാതം""%1$s%2$d""പണം നൽകി ഉപയോഗിക്കുന്ന ഫോൺ"
- "ഫോണ്""വീഡിയോ കോള്""വിളിക്കുക"
diff --git a/java/com/android/dialer/theme/res/values-mn/strings.xml b/java/com/android/dialer/theme/res/values-mn/strings.xml
index 3a37dd101c370df805b3072a7a96123a91947b0e..bede15e5452fda0758122803df2135f611a55026 100644
--- a/java/com/android/dialer/theme/res/values-mn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mn/strings.xml
@@ -20,7 +20,6 @@
"Тодорхойгүй""%1$s%2$d""Payphone"
- "Утас""Видео дуудлага""Залгах"
diff --git a/java/com/android/dialer/theme/res/values-mr/strings.xml b/java/com/android/dialer/theme/res/values-mr/strings.xml
index c60c7b74742223fe2b776d70d9aef145c2cf0f0c..e3f22af8d5a844074715eaa618c0a498f932fd07 100644
--- a/java/com/android/dialer/theme/res/values-mr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mr/strings.xml
@@ -20,7 +20,6 @@
"अज्ञात""%1$s%2$d""सार्वजनिक फोन"
- "फोन""व्हिडिओ कॉल""कॉल करा"
diff --git a/java/com/android/dialer/theme/res/values-ms/strings.xml b/java/com/android/dialer/theme/res/values-ms/strings.xml
index f3d1a7b891b014281d1c4762bae1b6f1102bf8d1..4a29f65aae2fa853c409c0c53435f9cfa8c11dee 100644
--- a/java/com/android/dialer/theme/res/values-ms/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ms/strings.xml
@@ -20,7 +20,6 @@
"Tidak diketahui""%1$s%2$d""Telefon Awam"
- "Telefon""Panggilan video""Panggil"
diff --git a/java/com/android/dialer/theme/res/values-my/strings.xml b/java/com/android/dialer/theme/res/values-my/strings.xml
index 0e61898da0cfa75c58724fc6a81af477f6d01966..3941b2370577644d61681665a0f9def6b9d823bb 100644
--- a/java/com/android/dialer/theme/res/values-my/strings.xml
+++ b/java/com/android/dialer/theme/res/values-my/strings.xml
@@ -20,7 +20,6 @@
"အကြောင်းအရာ မသိရှိ""%1$s%2$d""ငွေပေးရသည့်ဖုန်း"
- "ဖုန်း""ဗီဒီယိုခေါ်ဆိုမှု""ခေါ်ဆိုရန်"
diff --git a/java/com/android/dialer/theme/res/values-nb/strings.xml b/java/com/android/dialer/theme/res/values-nb/strings.xml
index 97ddbec63e9a1ba850e8c52978f4b9cb3ff448c3..d6e48445a1ffae1420fbaeb1d6b08ecbab50de5b 100644
--- a/java/com/android/dialer/theme/res/values-nb/strings.xml
+++ b/java/com/android/dialer/theme/res/values-nb/strings.xml
@@ -20,7 +20,6 @@
"Ukjent""%1$s%2$d""Telefonkiosk"
- "Telefon""Videosamtale""Ring"
diff --git a/java/com/android/dialer/theme/res/values-ne/strings.xml b/java/com/android/dialer/theme/res/values-ne/strings.xml
index c4e69920153306c1220ac9f05833d77f3dde6853..f85fc73ce320482e7a1608ec87df16527918db05 100644
--- a/java/com/android/dialer/theme/res/values-ne/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ne/strings.xml
@@ -20,7 +20,6 @@
"अज्ञात""%1$s%2$d""पेफोन"
- "फोन""भिडियो कल""कल गर्नुहोस्"
diff --git a/java/com/android/dialer/theme/res/values-nl/strings.xml b/java/com/android/dialer/theme/res/values-nl/strings.xml
index 19346eb4706a335f06364275d42c48917373bd33..022d3ad627aa2bde5c0c1df99b0f4f1dd6c3a2b4 100644
--- a/java/com/android/dialer/theme/res/values-nl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-nl/strings.xml
@@ -20,7 +20,6 @@
"Onbekend""%1$s%2$d""Telefooncel"
- "Telefoon""Videogesprek""Bellen"
diff --git a/java/com/android/dialer/theme/res/values-no/strings.xml b/java/com/android/dialer/theme/res/values-no/strings.xml
index 97ddbec63e9a1ba850e8c52978f4b9cb3ff448c3..d6e48445a1ffae1420fbaeb1d6b08ecbab50de5b 100644
--- a/java/com/android/dialer/theme/res/values-no/strings.xml
+++ b/java/com/android/dialer/theme/res/values-no/strings.xml
@@ -20,7 +20,6 @@
"Ukjent""%1$s%2$d""Telefonkiosk"
- "Telefon""Videosamtale""Ring"
diff --git a/java/com/android/dialer/theme/res/values-pa/strings.xml b/java/com/android/dialer/theme/res/values-pa/strings.xml
index e74c7aad8e7b9823066d2048badf4ffeb80b1643..a86f1ea5d40a89db8c6c36f14c14038e757d2c5c 100644
--- a/java/com/android/dialer/theme/res/values-pa/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pa/strings.xml
@@ -20,7 +20,6 @@
"ਅਗਿਆਤ""%1$s%2$d""ਪੇਫੋਨ"
- "ਫੋਨ""ਵੀਡੀਓ ਕਾਲ""ਕਾਲ ਕਰੋ"
diff --git a/java/com/android/dialer/theme/res/values-pl/strings.xml b/java/com/android/dialer/theme/res/values-pl/strings.xml
index ea1136727f39002a50fee6e60413acd93cd3a2c4..c1914ef9bdc12abfb238dc47e945309d06ce716a 100644
--- a/java/com/android/dialer/theme/res/values-pl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pl/strings.xml
@@ -20,7 +20,6 @@
"Nieznane""%1$s%2$d""Automat telefoniczny"
- "Telefon""Rozmowa wideo""Zadzwoń"
diff --git a/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml b/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
index 552839577232aea0c35e45ca795af2b7b15a50a5..c855241306db115d48e989b38256a2c4b210f9da 100644
--- a/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
@@ -20,7 +20,6 @@
"Desconhecido""%1$s%2$d""Telefone público"
- "Telefone""Videochamada""Ligar"
diff --git a/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml b/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
index 52c22ba3de31ae08546226fc9ca2c518c716e6ad..2b91dcfc7a66ea832d1ed53133d6b50e9f287a20 100644
--- a/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
@@ -20,7 +20,6 @@
"Desconhecido""%1$s%2$d""Telefone público"
- "Telefone""Videochamada""Telefonar"
diff --git a/java/com/android/dialer/theme/res/values-pt/strings.xml b/java/com/android/dialer/theme/res/values-pt/strings.xml
index 552839577232aea0c35e45ca795af2b7b15a50a5..c855241306db115d48e989b38256a2c4b210f9da 100644
--- a/java/com/android/dialer/theme/res/values-pt/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt/strings.xml
@@ -20,7 +20,6 @@
"Desconhecido""%1$s%2$d""Telefone público"
- "Telefone""Videochamada""Ligar"
diff --git a/java/com/android/dialer/theme/res/values-ro/strings.xml b/java/com/android/dialer/theme/res/values-ro/strings.xml
index d572b7124454fcbdf695c900ef0df83c426c1d74..305a94e82f0104c5ef2314e66ab8e9ed57b19054 100644
--- a/java/com/android/dialer/theme/res/values-ro/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ro/strings.xml
@@ -20,7 +20,6 @@
"Necunoscut""%1$s%2$d""Telefon public"
- "Telefon""Apel video""Apelați"
diff --git a/java/com/android/dialer/theme/res/values-ru/strings.xml b/java/com/android/dialer/theme/res/values-ru/strings.xml
index 2cb464882a2f78d6b9c3dea8180dfe1083868afd..e3937d990bfc01763538dc8fba471e466da6ad97 100644
--- a/java/com/android/dialer/theme/res/values-ru/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ru/strings.xml
@@ -20,7 +20,6 @@
"Неизвестно""%1$s%2$d""Телефон-автомат"
- "Телефон""Видеовызов""Позвонить"
diff --git a/java/com/android/dialer/theme/res/values-si/strings.xml b/java/com/android/dialer/theme/res/values-si/strings.xml
index 08a421e8355b101d56fc4bb4cbb043e851e1b978..d28647c25286b256c36fd38d964e1a409e29a17d 100644
--- a/java/com/android/dialer/theme/res/values-si/strings.xml
+++ b/java/com/android/dialer/theme/res/values-si/strings.xml
@@ -20,7 +20,6 @@
"නොදනී""%1$s%2$d""පේෆෝනය"
- "දුරකථනය""වීඩියෝ ඇමතුම""ඇමතුම"
diff --git a/java/com/android/dialer/theme/res/values-sk/strings.xml b/java/com/android/dialer/theme/res/values-sk/strings.xml
index e8e201975e53f849c2b5806cde2d567a4bdfa23a..17f8660acfa04e808bb9a27c235b1cdc3f63d793 100644
--- a/java/com/android/dialer/theme/res/values-sk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sk/strings.xml
@@ -20,7 +20,6 @@
"Neznáme""%1$s%2$d""Telefónny automat"
- "Telefón""Videohovor""Volať"
diff --git a/java/com/android/dialer/theme/res/values-sl/strings.xml b/java/com/android/dialer/theme/res/values-sl/strings.xml
index ee80c787e0e8a6fc22f822819b68865a74c8cd33..34e8d6892ed7239450f64c935539650c709371c1 100644
--- a/java/com/android/dialer/theme/res/values-sl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sl/strings.xml
@@ -20,7 +20,6 @@
"Neznano""%1$s%2$d""Telefonska govorilnica"
- "Telefon""Videoklic""Pokliči"
diff --git a/java/com/android/dialer/theme/res/values-sq/strings.xml b/java/com/android/dialer/theme/res/values-sq/strings.xml
index c0a61b0a6b016c8e43dc9adf4657272c6744632b..03f034bb1b498698a3aacfdfb361007590e67e14 100644
--- a/java/com/android/dialer/theme/res/values-sq/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sq/strings.xml
@@ -20,7 +20,6 @@
"I panjohur""%1$s%2$d""Telefon me pagesë"
- "Telefoni""Telefonatë me video""Telefono"
diff --git a/java/com/android/dialer/theme/res/values-sr/strings.xml b/java/com/android/dialer/theme/res/values-sr/strings.xml
index 9349977015116e8c2ec9d30f865f43dbbf2e3e01..3eecd0dd5a64ba266df3f80ca57e855b2daf3401 100644
--- a/java/com/android/dialer/theme/res/values-sr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sr/strings.xml
@@ -20,7 +20,6 @@
"Непознато""%1$s%2$d""Телефонска говорница"
- "Телефон""Упути видео позив""Позови"
diff --git a/java/com/android/dialer/theme/res/values-sv/strings.xml b/java/com/android/dialer/theme/res/values-sv/strings.xml
index b2811a1ca112e4590bc61f46168efd7d7c5428d3..3683b3608bdb4fff30067398bd3934006d82cce3 100644
--- a/java/com/android/dialer/theme/res/values-sv/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sv/strings.xml
@@ -20,7 +20,6 @@
"Okänd""%1$s%2$d""Telefonautomat"
- "Telefon""Videosamtal""Ring"
diff --git a/java/com/android/dialer/theme/res/values-sw/strings.xml b/java/com/android/dialer/theme/res/values-sw/strings.xml
index c5e50b8f7f968beab324a3eecc04a6677f9346bd..cad25fb80078c793cf7d43d4b64c0b459e4b3ec7 100644
--- a/java/com/android/dialer/theme/res/values-sw/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sw/strings.xml
@@ -20,7 +20,6 @@
"Haijulikani""%1$s%2$d""Simu ya kulipia"
- "Simu""Simu ya video""Piga simu"
diff --git a/java/com/android/dialer/theme/res/values-ta/strings.xml b/java/com/android/dialer/theme/res/values-ta/strings.xml
index 0be66175de61479c5cb80db79cf83fdc6f617979..e6b40d80a0c09cdc6353eee2ca819a3fd706aa7c 100644
--- a/java/com/android/dialer/theme/res/values-ta/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ta/strings.xml
@@ -20,7 +20,6 @@
"தெரியாதவர்""%1$s%2$d""கட்டணத் தொலைபேசி"
- "மொபைல்""வீடியோ அழைப்பு""அழை"
diff --git a/java/com/android/dialer/theme/res/values-te/strings.xml b/java/com/android/dialer/theme/res/values-te/strings.xml
index d8406a8f3abf6cee4285dcbd4d324791f3cdaae6..d0eff6676fe4291e291eb33842e67d6abee4e7a9 100644
--- a/java/com/android/dialer/theme/res/values-te/strings.xml
+++ b/java/com/android/dialer/theme/res/values-te/strings.xml
@@ -20,7 +20,6 @@
"తెలియదు""%1$s%2$d""పే ఫోన్"
- "ఫోన్""వీడియో కాల్""కాల్ చేయి"
diff --git a/java/com/android/dialer/theme/res/values-th/strings.xml b/java/com/android/dialer/theme/res/values-th/strings.xml
index be1dc1d45e7f5e7bc97904740a2710386f9e5446..b4e3789467a05c63c3c8ba0ab41caebbefec591a 100644
--- a/java/com/android/dialer/theme/res/values-th/strings.xml
+++ b/java/com/android/dialer/theme/res/values-th/strings.xml
@@ -20,7 +20,6 @@
"ไม่ทราบ""%1$s%2$d""โทรศัพท์สาธารณะ"
- "โทรศัพท์""แฮงเอาท์วิดีโอ""โทร"
diff --git a/java/com/android/dialer/theme/res/values-tl/strings.xml b/java/com/android/dialer/theme/res/values-tl/strings.xml
index 2f03ae63bb0c79f2a656ffc9330a8f14e6d50e8c..4f1a1ab45a750ba92f44c07068bc5982029d5d14 100644
--- a/java/com/android/dialer/theme/res/values-tl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-tl/strings.xml
@@ -20,7 +20,6 @@
"Di-kilala""%1$s%2$d""Payphone"
- "Telepono""Mag-video call""Tawag"
diff --git a/java/com/android/dialer/theme/res/values-tr/strings.xml b/java/com/android/dialer/theme/res/values-tr/strings.xml
index bcbd5255e52b775b99a51e154c277694422dbd54..b4cda7a91fbc571e59457a1840ce1446e2e1b5dd 100644
--- a/java/com/android/dialer/theme/res/values-tr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-tr/strings.xml
@@ -20,7 +20,6 @@
"Bilinmiyor""%1$s%2$d""Ankesörlü telefon"
- "Telefon""Görüntülü görüşme""Telefon et"
diff --git a/java/com/android/dialer/theme/res/values-uk/strings.xml b/java/com/android/dialer/theme/res/values-uk/strings.xml
index 73aa2f993fc717924e3448cca2a73a9b7aa4c0a8..fa8a70eeb4b40931ad4d95832e20ed0c5bfc823f 100644
--- a/java/com/android/dialer/theme/res/values-uk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-uk/strings.xml
@@ -20,7 +20,6 @@
"Невідомий""%1$s%2$d""Таксофон"
- "Телефон""Відеодзвінок""Виклик"
diff --git a/java/com/android/dialer/theme/res/values-ur/strings.xml b/java/com/android/dialer/theme/res/values-ur/strings.xml
index b61ace1e7054bef98370a040efd47d830238d9c3..6315ca19581a9e0adf1ac50da8c71f5a2f84a603 100644
--- a/java/com/android/dialer/theme/res/values-ur/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ur/strings.xml
@@ -20,7 +20,6 @@
"نامعلوم""%1$s%2$d""پے فون"
- "فون""ویڈیو کال""کال کریں"
diff --git a/java/com/android/dialer/theme/res/values-uz/strings.xml b/java/com/android/dialer/theme/res/values-uz/strings.xml
index 72d4663cfbb699ab9f0fc3e8cad1eb96de8660c9..88da6bb2599c917cf551dc3836e2351ce144c394 100644
--- a/java/com/android/dialer/theme/res/values-uz/strings.xml
+++ b/java/com/android/dialer/theme/res/values-uz/strings.xml
@@ -20,7 +20,6 @@
"Noma’lum""%1$s%2$d""Taksofon"
- "Telefon""Video suhbat""Telefon"
diff --git a/java/com/android/dialer/theme/res/values-vi/strings.xml b/java/com/android/dialer/theme/res/values-vi/strings.xml
index 23ee89a0df9bda29af3c81bbe0fa2289ad82c269..1901be1bd5f7ede8d903d488800b0afb85b25687 100644
--- a/java/com/android/dialer/theme/res/values-vi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-vi/strings.xml
@@ -20,7 +20,6 @@
"Không xác định""%1$s%2$d""Điện thoại công cộng"
- "Điện thoại""Gọi điện video""Gọi"
diff --git a/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml b/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
index 77676bd7f978333ea01650b00e0da074e6891756..c7a880c20bc3ec89f7ef679b3651765bb911501a 100644
--- a/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
@@ -20,7 +20,6 @@
"未知""%1$s%2$d""公用电话"
- "电话""视频通话""拨打电话"
diff --git a/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml b/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
index f455dc4cb80f2821c092b1d827212ff6eac745ff..293ad28c3aa88c8874851e3019659a001f767706 100644
--- a/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
@@ -20,7 +20,6 @@
"未知""%1$s%2$d""公共電話"
- "電話""視像通話""通話"
diff --git a/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml b/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
index 2db624c241708e3bc56e8ee3d638c4dedb0caa45..6ca8004dc4435ed394ece3a3b6d542b6c53ceaa5 100644
--- a/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
@@ -20,7 +20,6 @@
"不明""%1$s%2$d""公用電話"
- "電話""視訊通話""撥號"
diff --git a/java/com/android/dialer/theme/res/values-zu/strings.xml b/java/com/android/dialer/theme/res/values-zu/strings.xml
index e985338d10d7b9b9163bf6c8f67b95fe76eb6ad7..83a2732799d951ed7a06de94f671052bc1b93701 100644
--- a/java/com/android/dialer/theme/res/values-zu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zu/strings.xml
@@ -20,7 +20,6 @@
"Akwaziwa""%1$s%2$d""Ucingo olufakwa imali"
- "Ifoni""Ikholi yevidiyo""Shaya"
diff --git a/java/com/android/dialer/time/Clock.java b/java/com/android/dialer/time/Clock.java
deleted file mode 100644
index 4b7edc662f7e615353be6b221b938c14bf841f28..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/time/Clock.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.time;
-
-/** Functional interface for providing time since epoch. */
-public interface Clock {
- /** Returns milliseconds since epoch. */
- long currentTimeMillis();
-}
diff --git a/java/com/android/dialer/util/DialerUtils.java b/java/com/android/dialer/util/DialerUtils.java
index 49a07334fe24d56711a2e1e266ff0d085073c31c..13c4929594c90266cfdf22c36c34f51ed4943bdd 100644
--- a/java/com/android/dialer/util/DialerUtils.java
+++ b/java/com/android/dialer/util/DialerUtils.java
@@ -22,6 +22,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
+import android.content.res.TypedArray;
import android.graphics.Point;
import android.os.Bundle;
import android.telecom.TelecomManager;
@@ -31,11 +32,14 @@ import android.text.TextDirectionHeuristics;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
+
+import androidx.annotation.AttrRes;
+import androidx.annotation.ColorInt;
+
+import com.android.dialer.R;
import com.android.dialer.common.LogUtil;
import com.android.dialer.telecom.TelecomUtil;
-import java.io.File;
import java.util.Iterator;
-import java.util.Random;
/** General purpose utility methods for the Dialer. */
public class DialerUtils {
@@ -46,10 +50,6 @@ public class DialerUtils {
*/
private static final String WPS_PREFIX = "*272";
- public static final String FILE_PROVIDER_CACHE_DIR = "my_cache";
-
- private static final Random RANDOM = new Random();
-
/**
* Attempts to start an activity and displays a toast with the default error message if the
* activity is not found, instead of throwing an exception.
@@ -204,16 +204,12 @@ public class DialerUtils {
}
}
- /**
- * Create a File in the cache directory that Dialer's FileProvider knows about so they can be
- * shared to other apps.
- */
- public static File createShareableFile(Context context) {
- long fileId = Math.abs(RANDOM.nextLong());
- File parentDir = new File(context.getCacheDir(), FILE_PROVIDER_CACHE_DIR);
- if (!parentDir.exists()) {
- parentDir.mkdirs();
+ public static @ColorInt int resolveColor(Context context, @AttrRes int styledAttributeId) {
+ TypedArray a = context.obtainStyledAttributes(new int[] {styledAttributeId});
+ try {
+ return a.getColor(0, 0);
+ } finally {
+ a.recycle();
}
- return new File(parentDir, String.valueOf(fileId));
}
}
diff --git a/java/com/android/dialer/util/DrawableConverter.java b/java/com/android/dialer/util/DrawableConverter.java
index 5670315c996c30bea64d483be09b7ce34360d0ca..03c9b67ffbbc277357cefd5b5255a9767d22c830 100644
--- a/java/com/android/dialer/util/DrawableConverter.java
+++ b/java/com/android/dialer/util/DrawableConverter.java
@@ -21,10 +21,12 @@ import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.dialer.common.LogUtil;
/** Provides utilities for bitmaps and drawables. */
@@ -82,7 +84,7 @@ public class DrawableConverter {
@Nullable
public static Drawable getRoundedDrawable(
- @NonNull Context context, @Nullable Drawable photo, int width, int height) {
+ @NonNull Context context, @Nullable Drawable photo, int width, int height) {
Bitmap bitmap = drawableToBitmap(photo);
if (bitmap != null) {
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, width, height, false);
diff --git a/java/com/android/dialer/util/EmergencyCallUtil.java b/java/com/android/dialer/util/EmergencyCallUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..cbcddee2f7510f402bbd5a9706462b200058032e
--- /dev/null
+++ b/java/com/android/dialer/util/EmergencyCallUtil.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+package com.android.dialer.util;
+
+import android.content.Context;
+import android.provider.Settings;
+
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.storage.StorageComponent;
+
+import java.util.concurrent.TimeUnit;
+
+/** Utility to help with tasks related to emergency calls. */
+public class EmergencyCallUtil {
+
+ // Pref key for storing the time of end of the last emergency call in milliseconds after epoch.\
+ private static final String LAST_EMERGENCY_CALL_MS_PREF_KEY = "last_emergency_call_ms";
+ // Pref key for storing whether a notification has been dispatched to notify the user that call
+ // blocking has been disabled because of a recent emergency call.
+ protected static final String NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY =
+ "notified_call_blocking_disabled_by_emergency_call";
+ // Disable incoming call blocking if there was a call within the past 2 days.
+ static final long RECENT_EMERGENCY_CALL_THRESHOLD_MS = TimeUnit.DAYS.toMillis(2);
+
+ /**
+ * Used for testing to specify the custom threshold value, in milliseconds for whether an
+ * emergency call is "recent". The default value will be used if this custom threshold is less
+ * than zero. For example, to set this threshold to 60 seconds:
+ *
+ *
adb shell settings put system dialer_emergency_call_threshold_ms 60000
+ */
+ private static final String RECENT_EMERGENCY_CALL_THRESHOLD_SETTINGS_KEY =
+ "dialer_emergency_call_threshold_ms";
+
+ public static long getLastEmergencyCallTimeMillis(Context context) {
+ return StorageComponent.get(context)
+ .unencryptedSharedPrefs()
+ .getLong(LAST_EMERGENCY_CALL_MS_PREF_KEY, 0);
+ }
+
+ public static boolean hasRecentEmergencyCall(Context context) {
+ if (context == null) {
+ return false;
+ }
+
+ Long lastEmergencyCallTime = getLastEmergencyCallTimeMillis(context);
+ if (lastEmergencyCallTime == 0) {
+ return false;
+ }
+
+ return (System.currentTimeMillis() - lastEmergencyCallTime)
+ < getRecentEmergencyCallThresholdMs(context);
+ }
+
+ public static void recordLastEmergencyCallTime(Context context) {
+ if (context == null) {
+ return;
+ }
+
+ StorageComponent.get(context)
+ .unencryptedSharedPrefs()
+ .edit()
+ .putLong(LAST_EMERGENCY_CALL_MS_PREF_KEY, System.currentTimeMillis())
+ .putBoolean(NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY, false)
+ .apply();
+ }
+
+ private static long getRecentEmergencyCallThresholdMs(Context context) {
+ if (LogUtil.isVerboseEnabled()) {
+ long thresholdMs =
+ Settings.System.getLong(
+ context.getContentResolver(), RECENT_EMERGENCY_CALL_THRESHOLD_SETTINGS_KEY, 0);
+ return thresholdMs > 0 ? thresholdMs : RECENT_EMERGENCY_CALL_THRESHOLD_MS;
+ } else {
+ return RECENT_EMERGENCY_CALL_THRESHOLD_MS;
+ }
+ }
+}
diff --git a/java/com/android/dialer/util/MoreStrings.java b/java/com/android/dialer/util/MoreStrings.java
index 5a43b1d1084032c790bb71359d0cdc7330bb3645..297389c308526e7a7b7d03f60423e35e9164ad82 100644
--- a/java/com/android/dialer/util/MoreStrings.java
+++ b/java/com/android/dialer/util/MoreStrings.java
@@ -16,9 +16,10 @@
package com.android.dialer.util;
-import android.support.annotation.Nullable;
import android.text.TextUtils;
+import androidx.annotation.Nullable;
+
/** Static utility methods for Strings. */
public class MoreStrings {
diff --git a/java/com/android/dialer/util/PermissionsUtil.java b/java/com/android/dialer/util/PermissionsUtil.java
index 7e8aae9436c91a5d6a352ca0cadad3d83c522426..76bc5b1758c6c1de7126f05854ece015e7beb5a5 100644
--- a/java/com/android/dialer/util/PermissionsUtil.java
+++ b/java/com/android/dialer/util/PermissionsUtil.java
@@ -36,11 +36,13 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.LocalBroadcastManager;
import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+
+import com.android.dialer.R;
import com.android.dialer.common.LogUtil;
import com.android.dialer.storage.StorageComponent;
import java.util.ArrayList;
@@ -51,8 +53,7 @@ import java.util.List;
/** Utility class to help with runtime permissions. */
public class PermissionsUtil {
- @VisibleForTesting
- public static final String PREFERENCE_CAMERA_ALLOWED_BY_USER = "camera_allowed_by_user";
+ private static final String PREFERENCE_CAMERA_ALLOWED_BY_USER = "camera_allowed_by_user";
private static final String PERMISSION_PREFERENCE = "dialer_permissions";
private static final String CEQUINT_PERMISSION = "com.cequint.ecid.CALLER_ID_LOOKUP";
diff --git a/java/com/android/dialer/util/ViewUtil.java b/java/com/android/dialer/util/ViewUtil.java
index 81a32f98584189f226e9dcd830f386e0e725030e..d2e4e992706c2ff521604271572c81925e8d4dc1 100644
--- a/java/com/android/dialer/util/ViewUtil.java
+++ b/java/com/android/dialer/util/ViewUtil.java
@@ -22,7 +22,6 @@ import android.graphics.Paint;
import android.os.PowerManager;
import android.provider.Settings;
import android.provider.Settings.Global;
-import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.TypedValue;
import android.view.View;
@@ -30,6 +29,9 @@ import android.view.ViewGroup;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.view.ViewTreeObserver.OnPreDrawListener;
import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
import java.util.Locale;
/** Provides static functions to work with views */
@@ -101,7 +103,7 @@ public class ViewUtil {
}
public static void doOnPreDraw(
- @NonNull final View view, final boolean drawNextFrame, final ViewRunnable runnable) {
+ @NonNull final View view, final boolean drawNextFrame, final ViewRunnable runnable) {
view.getViewTreeObserver()
.addOnPreDrawListener(
new OnPreDrawListener() {
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailAdapter.java b/java/com/android/dialer/voicemail/listui/NewVoicemailAdapter.java
deleted file mode 100644
index 5b2f0619f77ddbb68a54ba3a8f8c2fddeb047069..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailAdapter.java
+++ /dev/null
@@ -1,1115 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-package com.android.dialer.voicemail.listui;
-
-import android.app.FragmentManager;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.database.Cursor;
-import android.media.MediaPlayer;
-import android.media.MediaPlayer.OnCompletionListener;
-import android.media.MediaPlayer.OnErrorListener;
-import android.media.MediaPlayer.OnPreparedListener;
-import android.net.Uri;
-import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
-import android.support.design.widget.Snackbar;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.util.ArrayMap;
-import android.util.ArraySet;
-import android.util.Pair;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import com.android.dialer.calllogutils.CallLogDates;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.time.Clock;
-import com.android.dialer.voicemail.listui.NewVoicemailViewHolder.NewVoicemailViewHolderListener;
-import com.android.dialer.voicemail.listui.error.VoicemailErrorMessage;
-import com.android.dialer.voicemail.listui.error.VoicemailErrorMessageCreator;
-import com.android.dialer.voicemail.listui.error.VoicemailStatus;
-import com.android.dialer.voicemail.model.VoicemailEntry;
-import com.android.voicemail.VoicemailClient;
-import com.google.common.collect.ImmutableList;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.Locale;
-import java.util.Objects;
-import java.util.Set;
-
-/** {@link RecyclerView.Adapter} for the new voicemail call log fragment. */
-final class NewVoicemailAdapter extends RecyclerView.Adapter
- implements NewVoicemailViewHolderListener {
-
- private static final int VOICEMAIL_DELETE_DELAY_MS = 3000;
-
- /** IntDef for the different types of rows that can be shown in the call log. */
- @Retention(RetentionPolicy.SOURCE)
- @IntDef({RowType.HEADER, RowType.VOICEMAIL_ENTRY, RowType.VOICEMAIL_ALERT})
- @interface RowType {
- /** A row representing a voicemail alert. */
- int VOICEMAIL_ALERT = 1;
- /** Header that displays "Today", "Yesterday" or "Older". */
- int HEADER = 2;
- /** A row representing a voicemail entry. */
- int VOICEMAIL_ENTRY = 3;
- }
-
- private Cursor cursor;
- private final Clock clock;
-
- /** {@link Integer#MAX_VALUE} when the "Today" header should not be displayed. */
- private int todayHeaderPosition = Integer.MAX_VALUE;
- /** {@link Integer#MAX_VALUE} when the "Yesterday" header should not be displayed. */
- private int yesterdayHeaderPosition = Integer.MAX_VALUE;
- /** {@link Integer#MAX_VALUE} when the "Older" header should not be displayed. */
- private int olderHeaderPosition = Integer.MAX_VALUE;
- /** {@link Integer#MAX_VALUE} when the voicemail alert message should not be displayed. */
- private int voicemailAlertPosition = Integer.MAX_VALUE;
-
- private final FragmentManager fragmentManager;
- /** A valid id for {@link VoicemailEntry} is greater than 0 */
- private long currentlyExpandedViewHolderId = -1;
-
- private VoicemailErrorMessage voicemailErrorMessage;
-
- /**
- * It takes time to delete voicemails from the server, so we "remove" them and remember the
- * positions we removed until a new cursor is ready.
- */
- Set deletedVoicemailPosition = new ArraySet<>();
-
- /**
- * A set of (re-usable) view holders being used by the recycler view to display voicemails. This
- * set may include multiple view holder with the same ID and shouldn't be used to lookup a
- * specific viewholder based on this value, instead use newVoicemailViewHolderArrayMap for that
- * purpose.
- */
- private final Set newVoicemailViewHolderSet = new ArraySet<>();
- /**
- * This allows us to retrieve the view holder corresponding to a particular view holder id, and
- * will always ensure there is only (up-to-date) view holder corresponding to a view holder id,
- * unlike the newVoicemailViewHolderSet.
- */
- private final ArrayMap newVoicemailViewHolderArrayMap =
- new ArrayMap<>();
-
- // A single instance of a media player re-used across the expanded view holders.
- private final NewVoicemailMediaPlayer mediaPlayer =
- new NewVoicemailMediaPlayer(new MediaPlayer());
-
- /** @param cursor whose projection is {@link VoicemailCursorLoader#VOICEMAIL_COLUMNS} */
- NewVoicemailAdapter(Cursor cursor, Clock clock, FragmentManager fragmentManager) {
- LogUtil.enterBlock("NewVoicemailAdapter");
- this.cursor = cursor;
- this.clock = clock;
- this.fragmentManager = fragmentManager;
- initializeMediaPlayerListeners();
- updateHeaderPositions();
- }
-
- private void updateHeaderPositions() {
- LogUtil.i(
- "NewVoicemailAdapter.updateHeaderPositions",
- "before updating todayPos:%d, yestPos:%d, olderPos:%d, alertPos:%d",
- todayHeaderPosition,
- yesterdayHeaderPosition,
- olderHeaderPosition,
- voicemailAlertPosition);
-
- // If there are no rows to display, set all header positions to MAX_VALUE.
- if (!cursor.moveToFirst()) {
- todayHeaderPosition = Integer.MAX_VALUE;
- yesterdayHeaderPosition = Integer.MAX_VALUE;
- olderHeaderPosition = Integer.MAX_VALUE;
- return;
- }
-
- long currentTimeMillis = clock.currentTimeMillis();
-
- int numItemsInToday = 0;
- int numItemsInYesterday = 0;
-
- do {
- long timestamp = VoicemailCursorLoader.getTimestamp(cursor);
- long dayDifference = CallLogDates.getDayDifference(currentTimeMillis, timestamp);
- if (dayDifference == 0) {
- numItemsInToday++;
- } else if (dayDifference == 1) {
- numItemsInYesterday++;
- } else {
- break;
- }
- } while (cursor.moveToNext());
-
- if (numItemsInToday > 0) {
- numItemsInToday++; // including the "Today" header;
- }
- if (numItemsInYesterday > 0) {
- numItemsInYesterday++; // including the "Yesterday" header;
- }
-
- int alertOffSet = 0;
- if (voicemailAlertPosition != Integer.MAX_VALUE) {
- Assert.checkArgument(
- voicemailAlertPosition == 0, "voicemail alert can only be 0, when showing");
- alertOffSet = 1;
- }
-
- // Set all header positions.
- // A header position will be MAX_VALUE if there is no item to be displayed under that header.
- todayHeaderPosition = numItemsInToday > 0 ? alertOffSet : Integer.MAX_VALUE;
- yesterdayHeaderPosition =
- numItemsInYesterday > 0 ? numItemsInToday + alertOffSet : Integer.MAX_VALUE;
- olderHeaderPosition =
- !cursor.isAfterLast()
- ? numItemsInToday + numItemsInYesterday + alertOffSet
- : Integer.MAX_VALUE;
-
- LogUtil.i(
- "NewVoicemailAdapter.updateHeaderPositions",
- "after updating todayPos:%d, yestPos:%d, olderPos:%d, alertOffSet:%d, alertPos:%d",
- todayHeaderPosition,
- yesterdayHeaderPosition,
- olderHeaderPosition,
- alertOffSet,
- voicemailAlertPosition);
- }
-
- private void initializeMediaPlayerListeners() {
- mediaPlayer.setOnCompletionListener(onCompletionListener);
- mediaPlayer.setOnPreparedListener(onPreparedListener);
- mediaPlayer.setOnErrorListener(onErrorListener);
- }
-
- public void updateCursor(Cursor updatedCursor) {
- LogUtil.enterBlock("NewVoicemailAdapter.updateCursor");
- deletedVoicemailPosition.clear();
- this.cursor = updatedCursor;
- updateHeaderPositions();
- notifyDataSetChanged();
- }
-
- @Override
- public ViewHolder onCreateViewHolder(ViewGroup viewGroup, @RowType int viewType) {
- LogUtil.enterBlock("NewVoicemailAdapter.onCreateViewHolder");
- LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
- View view;
- switch (viewType) {
- case RowType.VOICEMAIL_ALERT:
- view = inflater.inflate(R.layout.new_voicemail_entry_alert, viewGroup, false);
- return new NewVoicemailAlertViewHolder(view);
- case RowType.HEADER:
- view = inflater.inflate(R.layout.new_voicemail_entry_header, viewGroup, false);
- return new NewVoicemailHeaderViewHolder(view);
- case NewVoicemailAdapter.RowType.VOICEMAIL_ENTRY:
- view = inflater.inflate(R.layout.new_voicemail_entry, viewGroup, false);
- NewVoicemailViewHolder newVoicemailViewHolder =
- new NewVoicemailViewHolder(view, clock, this);
- newVoicemailViewHolderSet.add(newVoicemailViewHolder);
- return newVoicemailViewHolder;
- default:
- throw Assert.createUnsupportedOperationFailException("Unsupported view type: " + viewType);
- }
- }
-
- // TODO(uabdullah): a bug - Clean up logging in this function, here for debugging during
- // development.
- @Override
- public void onBindViewHolder(ViewHolder viewHolder, int position) {
- LogUtil.enterBlock("NewVoicemailAdapter.onBindViewHolder, pos:" + position);
- // Re-request a bind when a viewholder is deleted to ensure correct position
- if (deletedVoicemailPosition.contains(position)) {
- LogUtil.i(
- "NewVoicemailAdapter.onBindViewHolder",
- "pos:%d contains deleted voicemail, re-bind. #of deleted voicemail positions: %d",
- position,
- deletedVoicemailPosition.size());
- // TODO(uabdullah): This should be removed when we support multi-select delete
- Assert.checkArgument(
- deletedVoicemailPosition.size() == 1, "multi-deletes not currently supported");
- onBindViewHolder(viewHolder, ++position);
- return;
- }
-
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- printHashSet();
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- printArrayMap();
-
- if (viewHolder instanceof NewVoicemailHeaderViewHolder) {
- LogUtil.i(
- "NewVoicemailAdapter.onBindViewHolder", "view holder at pos:%d is a header", position);
- onBindHeaderViewHolder(viewHolder, position);
- return;
- }
-
- if (viewHolder instanceof NewVoicemailAlertViewHolder) {
- LogUtil.i(
- "NewVoicemailAdapter.onBindViewHolder", "view holder at pos:%d is a alert", position);
- onBindAlertViewHolder(viewHolder, position);
- return;
- }
-
- LogUtil.i(
- "NewVoicemailAdapter.onBindViewHolder",
- "view holder at pos:%d is a not a header or an alert",
- position);
-
- NewVoicemailViewHolder newVoicemailViewHolder = (NewVoicemailViewHolder) viewHolder;
- int nonVoicemailEntryHeaders = getHeaderCountAtPosition(position);
-
- LogUtil.i(
- "NewVoicemailAdapter.onBindViewHolder",
- "view holder at pos:%d, nonVoicemailEntryHeaders:%d",
- position,
- nonVoicemailEntryHeaders);
-
- // Remove if the viewholder is being recycled.
- if (newVoicemailViewHolderArrayMap.containsKey(newVoicemailViewHolder.getViewHolderId())) {
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- LogUtil.i(
- "NewVoicemailAdapter.onBindViewHolder",
- "Removing from hashset:%d, hashsetSize:%d, currExpanded:%d",
- newVoicemailViewHolder.getViewHolderId(),
- newVoicemailViewHolderArrayMap.size(),
- currentlyExpandedViewHolderId);
-
- newVoicemailViewHolderArrayMap.remove(newVoicemailViewHolder.getViewHolderId());
- printHashSet();
- printArrayMap();
- }
-
- newVoicemailViewHolder.reset();
- cursor.moveToPosition(position - nonVoicemailEntryHeaders);
- newVoicemailViewHolder.bindViewHolderValuesFromAdapter(
- cursor, fragmentManager, mediaPlayer, position, currentlyExpandedViewHolderId);
-
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- LogUtil.i(
- "NewVoicemailAdapter.onBindViewHolder",
- "Adding to hashset:%d, hashsetSize:%d, pos:%d, currExpanded:%d",
- newVoicemailViewHolder.getViewHolderId(),
- newVoicemailViewHolderArrayMap.size(),
- position,
- currentlyExpandedViewHolderId);
-
- // Need this to ensure correct getCurrentlyExpandedViewHolder() value
- newVoicemailViewHolderArrayMap.put(
- newVoicemailViewHolder.getViewHolderId(), newVoicemailViewHolder);
-
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- printHashSet();
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- printArrayMap();
-
- // If the viewholder is playing the voicemail, keep updating its media player view (seekbar,
- // duration etc.)
- if (newVoicemailViewHolder.isViewHolderExpanded() && mediaPlayer.isPlaying()) {
- LogUtil.i(
- "NewVoicemailAdapter.onBindViewHolder",
- "Adding to hashset:%d, hashsetSize:%d, pos:%d, currExpanded:%d",
- newVoicemailViewHolderSet.size(),
- newVoicemailViewHolderArrayMap.size(),
- position,
- currentlyExpandedViewHolderId);
-
- Assert.checkArgument(
- newVoicemailViewHolder
- .getViewHolderVoicemailUri()
- .equals(mediaPlayer.getLastPlayedOrPlayingVoicemailUri()),
- "only the expanded view holder can be playing.");
- Assert.isNotNull(getCurrentlyExpandedViewHolder());
- Assert.checkArgument(
- getCurrentlyExpandedViewHolder()
- .getViewHolderVoicemailUri()
- .equals(mediaPlayer.getLastPlayedOrPlayingVoicemailUri()));
-
- recursivelyUpdateMediaPlayerViewOfExpandedViewHolder(newVoicemailViewHolder);
- }
- // Updates the hashmap with the most up-to-date state of the viewholder.
- newVoicemailViewHolderArrayMap.put(
- newVoicemailViewHolder.getViewHolderId(), newVoicemailViewHolder);
-
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- printHashSet();
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- printArrayMap();
- }
-
- private int getHeaderCountAtPosition(int position) {
- int previousHeaders = 0;
- if (voicemailAlertPosition != Integer.MAX_VALUE && position > voicemailAlertPosition) {
- previousHeaders++;
- }
- if (todayHeaderPosition != Integer.MAX_VALUE && position > todayHeaderPosition) {
- previousHeaders++;
- }
- if (yesterdayHeaderPosition != Integer.MAX_VALUE && position > yesterdayHeaderPosition) {
- previousHeaders++;
- }
- if (olderHeaderPosition != Integer.MAX_VALUE && position > olderHeaderPosition) {
- previousHeaders++;
- }
- return previousHeaders;
- }
-
- private void onBindAlertViewHolder(ViewHolder viewHolder, int position) {
- LogUtil.i(
- "NewVoicemailAdapter.onBindAlertViewHolder",
- "pos:%d, voicemailAlertPosition:%d",
- position,
- voicemailAlertPosition);
-
- NewVoicemailAlertViewHolder alertViewHolder = (NewVoicemailAlertViewHolder) viewHolder;
- @RowType int viewType = getItemViewType(position);
-
- Assert.checkArgument(position == 0, "position is not 0");
- Assert.checkArgument(
- position == voicemailAlertPosition,
- String.format(
- Locale.US,
- "position:%d and voicemailAlertPosition:%d are different",
- position,
- voicemailAlertPosition));
- Assert.checkArgument(viewType == RowType.VOICEMAIL_ALERT, "Invalid row type: " + viewType);
- Assert.checkArgument(
- voicemailErrorMessage.getActions().size() <= 2,
- "Too many actions: " + voicemailErrorMessage.getActions().size());
-
- alertViewHolder.setTitle(voicemailErrorMessage.getTitle());
- alertViewHolder.setDescription(voicemailErrorMessage.getDescription());
-
- if (!voicemailErrorMessage.getActions().isEmpty()) {
- alertViewHolder.setPrimaryButton(voicemailErrorMessage.getActions().get(0));
- }
- if (voicemailErrorMessage.getActions().size() > 1) {
- alertViewHolder.setSecondaryButton(voicemailErrorMessage.getActions().get(1));
- }
- }
-
- private void onBindHeaderViewHolder(ViewHolder viewHolder, int position) {
- NewVoicemailHeaderViewHolder headerViewHolder = (NewVoicemailHeaderViewHolder) viewHolder;
- @RowType int viewType = getItemViewType(position);
- if (position == todayHeaderPosition) {
- headerViewHolder.setHeader(R.string.new_voicemail_header_today);
- } else if (position == yesterdayHeaderPosition) {
- headerViewHolder.setHeader(R.string.new_voicemail_header_yesterday);
- } else if (position == olderHeaderPosition) {
- headerViewHolder.setHeader(R.string.new_voicemail_header_older);
- } else {
- throw Assert.createIllegalStateFailException(
- "Unexpected view type " + viewType + " at position: " + position);
- }
- }
-
- private void printArrayMap() {
- LogUtil.i(
- "NewVoicemailAdapter.printArrayMap",
- "hashMapSize: %d, currentlyExpandedViewHolderId:%d",
- newVoicemailViewHolderArrayMap.size(),
- currentlyExpandedViewHolderId);
-
- if (!newVoicemailViewHolderArrayMap.isEmpty()) {
- String ids = "";
- for (long id : newVoicemailViewHolderArrayMap.keySet()) {
- ids = ids + id + " ";
- }
- LogUtil.i("NewVoicemailAdapter.printArrayMap", "ids are " + ids);
- }
- }
-
- private void printHashSet() {
- LogUtil.i(
- "NewVoicemailAdapter.printHashSet",
- "hashSetSize: %d, currentlyExpandedViewHolderId:%d",
- newVoicemailViewHolderSet.size(),
- currentlyExpandedViewHolderId);
-
- if (!newVoicemailViewHolderSet.isEmpty()) {
- String viewHolderID = "";
- for (NewVoicemailViewHolder vh : newVoicemailViewHolderSet) {
- viewHolderID = viewHolderID + vh.getViewHolderId() + " ";
- }
- LogUtil.i("NewVoicemailAdapter.printHashSet", "ids are " + viewHolderID);
- }
- }
-
- /**
- * The {@link NewVoicemailAdapter} needs to keep track of {@link NewVoicemailViewHolder} that has
- * been expanded. This is so that the adapter can ensure the correct {@link
- * NewVoicemailMediaPlayerView} and {@link NewVoicemailViewHolder} states are maintained
- * (playing/paused/reset) for the expanded viewholder, especially when views are recycled in
- * {@link RecyclerView}. Since we can only have one expanded voicemail view holder, this method
- * ensures that except for the currently expanded view holder, all the other view holders visible
- * on the screen are collapsed.
- *
- *
The {@link NewVoicemailMediaPlayer} is also reset, if there is an existing playing
- * voicemail.
- *
- *
This is the function that is responsible of keeping track of the expanded viewholder in the
- * {@link NewVoicemailAdapter}
- *
- *
This is the first function called in the adapter when a viewholder has been expanded.
- *
- *
This is the function that is responsible of keeping track of the expanded viewholder in the
- * {@link NewVoicemailAdapter}
- *
- * @param viewHolderRequestedToExpand is the view holder that is currently expanded.
- * @param voicemailEntryOfViewHolder
- */
- @Override
- public void expandViewHolderFirstTimeAndCollapseAllOtherVisibleViewHolders(
- NewVoicemailViewHolder viewHolderRequestedToExpand,
- VoicemailEntry voicemailEntryOfViewHolder,
- NewVoicemailViewHolderListener listener) {
-
- LogUtil.i(
- "NewVoicemailAdapter.expandViewHolderFirstTimeAndCollapseAllOtherVisibleViewHolders",
- "viewholder id:%d being request to expand, isExpanded:%b, size of our view holder "
- + "dataset:%d, hashmap size:%d",
- viewHolderRequestedToExpand.getViewHolderId(),
- viewHolderRequestedToExpand.isViewHolderExpanded(),
- newVoicemailViewHolderSet.size(),
- newVoicemailViewHolderArrayMap.size());
-
- currentlyExpandedViewHolderId = viewHolderRequestedToExpand.getViewHolderId();
-
- for (NewVoicemailViewHolder viewHolder : newVoicemailViewHolderSet) {
- if (viewHolder.getViewHolderId() != viewHolderRequestedToExpand.getViewHolderId()) {
- viewHolder.collapseViewHolder();
- }
- }
-
- // If the media player is playing and we expand something other than the currently playing one
- // we should stop playing the media player
- if (mediaPlayer.isPlaying()
- && !Objects.equals(
- mediaPlayer.getLastPlayedOrPlayingVoicemailUri(),
- viewHolderRequestedToExpand.getViewHolderVoicemailUri())) {
- LogUtil.i(
- "NewVoicemailAdapter.expandViewHolderFirstTimeAndCollapseAllOtherVisibleViewHolders",
- "Reset the media player since we expanded something other that the playing "
- + "voicemail, MP was playing:%s, viewholderExpanded:%d, MP.isPlaying():%b",
- String.valueOf(mediaPlayer.getLastPlayedOrPlayingVoicemailUri()),
- viewHolderRequestedToExpand.getViewHolderId(),
- mediaPlayer.isPlaying());
- mediaPlayer.reset();
- }
-
- // If the media player is paused and we expand something other than the currently paused one
- // we should stop playing the media player
- if (mediaPlayer.isPaused()
- && !Objects.equals(
- mediaPlayer.getLastPausedVoicemailUri(),
- viewHolderRequestedToExpand.getViewHolderVoicemailUri())) {
- LogUtil.i(
- "NewVoicemailAdapter.expandViewHolderFirstTimeAndCollapseAllOtherVisibleViewHolders",
- "There was an existing paused viewholder, the media player should reset since we "
- + "expanded something other that the paused voicemail, MP.paused:%s",
- String.valueOf(mediaPlayer.getLastPausedVoicemailUri()));
- mediaPlayer.reset();
- }
-
- Assert.checkArgument(
- !viewHolderRequestedToExpand.isViewHolderExpanded(),
- "cannot expand a voicemail that is not collapsed");
-
- viewHolderRequestedToExpand.expandAndBindViewHolderAndMediaPlayerViewWithAdapterValues(
- voicemailEntryOfViewHolder, fragmentManager, mediaPlayer, listener);
-
- // There should be nothing playing when we expand a viewholder for the first time
- Assert.checkArgument(!mediaPlayer.isPlaying());
- }
-
- /**
- * Ensures that when we collapse the expanded view, we don't expand it again when we are recycling
- * the viewholders. If we collapse an existing playing voicemail viewholder, we should stop
- * playing it.
- *
- * @param collapseViewHolder is the view holder that is currently collapsed.
- */
- @Override
- public void collapseExpandedViewHolder(NewVoicemailViewHolder collapseViewHolder) {
- Assert.checkArgument(collapseViewHolder.getViewHolderId() == currentlyExpandedViewHolderId);
- collapseViewHolder.collapseViewHolder();
- currentlyExpandedViewHolderId = -1;
-
- // If the view holder is currently playing, then we should stop playing it.
- if (mediaPlayer.isPlaying()) {
- Assert.checkArgument(
- Objects.equals(
- mediaPlayer.getLastPlayedOrPlayingVoicemailUri(),
- collapseViewHolder.getViewHolderVoicemailUri()),
- "the voicemail being played should have been of the recently collapsed view holder.");
- mediaPlayer.reset();
- }
- }
-
- @Override
- public void pauseViewHolder(NewVoicemailViewHolder expandedViewHolder) {
- Assert.isNotNull(
- getCurrentlyExpandedViewHolder(),
- "cannot have pressed pause if the viewholder wasn't expanded");
- Assert.checkArgument(
- getCurrentlyExpandedViewHolder()
- .getViewHolderVoicemailUri()
- .equals(expandedViewHolder.getViewHolderVoicemailUri()),
- "view holder whose pause button was pressed has to have been the expanded "
- + "viewholder being tracked by the adapter.");
- mediaPlayer.pauseMediaPlayer(expandedViewHolder.getViewHolderVoicemailUri());
- expandedViewHolder.setPausedStateOfMediaPlayerView(
- expandedViewHolder.getViewHolderVoicemailUri(), mediaPlayer);
- }
-
- @Override
- public void resumePausedViewHolder(NewVoicemailViewHolder expandedViewHolder) {
- Assert.isNotNull(
- getCurrentlyExpandedViewHolder(),
- "cannot have pressed pause if the viewholder wasn't expanded");
- Assert.checkArgument(
- getCurrentlyExpandedViewHolder()
- .getViewHolderVoicemailUri()
- .equals(expandedViewHolder.getViewHolderVoicemailUri()),
- "view holder whose play button was pressed has to have been the expanded "
- + "viewholder being tracked by the adapter.");
- Assert.isNotNull(
- mediaPlayer.getLastPausedVoicemailUri(), "there should be be an pausedUri to resume");
- Assert.checkArgument(
- mediaPlayer
- .getLastPlayedOrPlayingVoicemailUri()
- .equals(expandedViewHolder.getViewHolderVoicemailUri()),
- "only the last playing uri can be resumed");
- Assert.checkArgument(
- mediaPlayer
- .getLastPreparedOrPreparingToPlayVoicemailUri()
- .equals(expandedViewHolder.getViewHolderVoicemailUri()),
- "only the last prepared uri can be resumed");
- Assert.checkArgument(
- mediaPlayer
- .getLastPreparedOrPreparingToPlayVoicemailUri()
- .equals(mediaPlayer.getLastPlayedOrPlayingVoicemailUri()),
- "the last prepared and playing voicemails have to be the same when resuming");
-
- onPreparedListener.onPrepared(mediaPlayer.getMediaPlayer());
- }
-
- @Override
- public void deleteViewHolder(
- Context context,
- FragmentManager fragmentManager,
- NewVoicemailViewHolder expandedViewHolder,
- Uri voicemailUri) {
- LogUtil.i(
- "NewVoicemailAdapter.deleteViewHolder",
- "deleting adapter position %d, id:%d, uri:%s ",
- expandedViewHolder.getAdapterPosition(),
- expandedViewHolder.getViewHolderId(),
- String.valueOf(voicemailUri));
-
- deletedVoicemailPosition.add(expandedViewHolder.getAdapterPosition());
-
- Assert.checkArgument(expandedViewHolder.getViewHolderVoicemailUri().equals(voicemailUri));
-
- Assert.checkArgument(currentlyExpandedViewHolderId == expandedViewHolder.getViewHolderId());
-
- collapseExpandedViewHolder(expandedViewHolder);
-
- showUndoSnackbar(
- context,
- expandedViewHolder.getMediaPlayerView(),
- expandedViewHolder.getAdapterPosition(),
- voicemailUri);
- }
-
- private void showUndoSnackbar(
- Context context, View newVoicemailMediaPlayerView, int position, Uri voicemailUri) {
- LogUtil.i(
- "NewVoicemailAdapter.showUndoSnackbar",
- "position:%d and uri:%s",
- position,
- String.valueOf(voicemailUri));
- Snackbar undoSnackbar =
- Snackbar.make(
- newVoicemailMediaPlayerView,
- R.string.snackbar_voicemail_deleted,
- VOICEMAIL_DELETE_DELAY_MS);
- undoSnackbar.addCallback(
- new Snackbar.Callback() {
- @Override
- public void onShown(Snackbar sb) {
- notifyItemRemoved(position);
- LogUtil.i(
- "NewVoicemailAdapter.showUndoSnackbar",
- "onShown for position:%d and uri:%s",
- position,
- voicemailUri);
- super.onShown(sb);
- }
-
- @Override
- public void onDismissed(Snackbar transientBottomBar, int event) {
- LogUtil.i(
- "NewVoicemailAdapter.showUndoSnackbar",
- "onDismissed for event:%d, position:%d and uri:%s",
- event,
- position,
- String.valueOf(voicemailUri));
-
- switch (event) {
- case DISMISS_EVENT_SWIPE:
- case DISMISS_EVENT_ACTION:
- case DISMISS_EVENT_MANUAL:
- LogUtil.i(
- "NewVoicemailAdapter.showUndoSnackbar",
- "Not proceeding with deleting the voicemail");
- deletedVoicemailPosition.remove(position);
- notifyItemChanged(position);
- break;
- case DISMISS_EVENT_TIMEOUT:
- case DISMISS_EVENT_CONSECUTIVE:
- LogUtil.i(
- "NewVoicemailAdapter.showUndoSnackbar", "Proceeding with deleting voicemail");
-
- DialerExecutorComponent.get(context)
- .dialerExecutorFactory()
- .createNonUiTaskBuilder(this::deleteVoicemail)
- .build()
- .executeSerial(new Pair<>(context, voicemailUri));
- break;
- default:
- Assert.checkArgument(event <= 4 && event >= 0, "unknown event");
- }
- }
-
- @WorkerThread
- private Void deleteVoicemail(Pair contextUriPair) {
- Assert.isWorkerThread();
- Context context = contextUriPair.first;
- Uri uri = contextUriPair.second;
- LogUtil.i(
- "NewVoicemailAdapter.deleteVoicemail", "deleting uri:%s", String.valueOf(uri));
- ContentValues values = new ContentValues();
- values.put(Voicemails.DELETED, "1");
-
- int numRowsUpdated = context.getContentResolver().update(uri, values, null, null);
-
- LogUtil.i("NewVoicemailAdapter.deleteVoicemail", "return value:%d", numRowsUpdated);
- Assert.checkArgument(numRowsUpdated == 1, "voicemail delete was not successful");
-
- Intent intent = new Intent(VoicemailClient.ACTION_UPLOAD);
- intent.setPackage(context.getPackageName());
- context.sendBroadcast(intent);
- return null;
- }
- });
-
- undoSnackbar
- .setAction(
- R.string.snackbar_undo,
- new OnClickListener() {
- @Override
- public void onClick(View v) {
- // does nothing, but needed for the undo button to show
- }
- })
- .setActionTextColor(
- context.getResources().getColor(R.color.dialer_snackbar_action_text_color))
- .show();
- }
-
- /**
- * This function is called recursively to update the seekbar, duration, play/pause buttons of the
- * expanded view holder if its playing.
- *
- *
Since this function is called at 30 frames/second, its possible (and eventually will happen)
- * that between each update the playing voicemail state could have changed, in which case this
- * method should stop calling itself. These conditions are:
- *
- *
- *
The user scrolled the playing voicemail out of view.
- *
Another view holder was expanded.
- *
The playing voicemail was paused.
- *
The media player returned {@link MediaPlayer#isPlaying()} to be true but had its {@link
- * MediaPlayer#getCurrentPosition()} > {@link MediaPlayer#getDuration()}.
- *
The {@link MediaPlayer} stopped playing.
- *
- *
- *
Note: Since the update happens at 30 frames/second, it's also possible that the viewholder
- * was recycled when scrolling the playing voicemail out of view.
- *
- * @param expandedViewHolderPossiblyPlaying the view holder that was expanded and could or could
- * not be playing. This viewholder can be recycled.
- */
- private void recursivelyUpdateMediaPlayerViewOfExpandedViewHolder(
- NewVoicemailViewHolder expandedViewHolderPossiblyPlaying) {
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- LogUtil.i(
- "NewVoicemailAdapter.recursivelyUpdateMediaPlayerViewOfExpandedViewHolder",
- "currentlyExpanded:%d",
- currentlyExpandedViewHolderId);
-
- // It's possible that by the time this is run, the expanded view holder has been
- // scrolled out of view (and possibly recycled)
- if (getCurrentlyExpandedViewHolder() == null) {
- LogUtil.i(
- "NewVoicemailAdapter.recursivelyUpdateMediaPlayerViewOfExpandedViewHolder",
- "viewholder:%d media player view, no longer on screen, no need to update",
- expandedViewHolderPossiblyPlaying.getViewHolderId());
- return;
- }
-
- // Another viewholder was expanded, no need to update
- if (!getCurrentlyExpandedViewHolder().equals(expandedViewHolderPossiblyPlaying)) {
- LogUtil.i(
- "NewVoicemailAdapter.recursivelyUpdateMediaPlayerViewOfExpandedViewHolder",
- "currentlyExpandedViewHolderId:%d and the one we are attempting to update:%d "
- + "aren't the same.",
- currentlyExpandedViewHolderId,
- expandedViewHolderPossiblyPlaying.getViewHolderId());
- return;
- }
-
- Assert.checkArgument(expandedViewHolderPossiblyPlaying.isViewHolderExpanded());
- Assert.checkArgument(
- expandedViewHolderPossiblyPlaying.getViewHolderId()
- == getCurrentlyExpandedViewHolder().getViewHolderId());
-
- // If the viewholder was paused, there is no need to update the media player view
- if (mediaPlayer.isPaused()) {
- Assert.checkArgument(
- expandedViewHolderPossiblyPlaying
- .getViewHolderVoicemailUri()
- .equals(mediaPlayer.getLastPausedVoicemailUri()),
- "only the expanded viewholder can be paused.");
-
- LogUtil.i(
- "NewVoicemailAdapter.recursivelyUpdateMediaPlayerViewOfExpandedViewHolder",
- "set the media player to a paused state");
- expandedViewHolderPossiblyPlaying.setPausedStateOfMediaPlayerView(
- expandedViewHolderPossiblyPlaying.getViewHolderVoicemailUri(), mediaPlayer);
- return;
- }
-
- // In some weird corner cases a media player could return isPlaying() as true but would
- // have getCurrentPosition > getDuration(). We consider that as the voicemail has finished
- // playing.
- if (mediaPlayer.isPlaying() && mediaPlayer.getCurrentPosition() < mediaPlayer.getDuration()) {
-
- Assert.checkArgument(
- mediaPlayer
- .getLastPlayedOrPlayingVoicemailUri()
- .equals(getCurrentlyExpandedViewHolder().getViewHolderVoicemailUri()));
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- LogUtil.i(
- "NewVoicemailAdapter.recursivelyUpdateMediaPlayerViewOfExpandedViewHolder",
- "recursely update the player, currentlyExpanded:%d",
- expandedViewHolderPossiblyPlaying.getViewHolderId());
-
- Assert.checkArgument(
- expandedViewHolderPossiblyPlaying
- .getViewHolderVoicemailUri()
- .equals(getCurrentlyExpandedViewHolder().getViewHolderVoicemailUri()));
-
- expandedViewHolderPossiblyPlaying.updateMediaPlayerViewWithPlayingState(
- expandedViewHolderPossiblyPlaying, mediaPlayer);
-
- ThreadUtil.postDelayedOnUiThread(
- new Runnable() {
- @Override
- public void run() {
- recursivelyUpdateMediaPlayerViewOfExpandedViewHolder(
- expandedViewHolderPossiblyPlaying);
- }
- },
- 1000 / 30 /*30 FPS*/);
- return;
- }
-
- if (!mediaPlayer.isPlaying()
- || (mediaPlayer.isPlaying()
- && mediaPlayer.getCurrentPosition() > mediaPlayer.getDuration())) {
- LogUtil.i(
- "NewVoicemailAdapter.recursivelyUpdateMediaPlayerViewOfExpandedViewHolder",
- "resetting the player, currentlyExpanded:%d, MPPlaying:%b",
- getCurrentlyExpandedViewHolder().getViewHolderId(),
- mediaPlayer.isPlaying());
- mediaPlayer.reset();
- Assert.checkArgument(
- expandedViewHolderPossiblyPlaying
- .getViewHolderVoicemailUri()
- .equals(getCurrentlyExpandedViewHolder().getViewHolderVoicemailUri()));
- expandedViewHolderPossiblyPlaying.setMediaPlayerViewToResetState(
- expandedViewHolderPossiblyPlaying, mediaPlayer);
- return;
- }
-
- String error =
- String.format(
- "expandedViewHolderPossiblyPlaying:%d, expanded:%b, CurrentExpanded:%d, uri:%s, "
- + "MPPlaying:%b, MPPaused:%b, MPPreparedUri:%s, MPPausedUri:%s",
- expandedViewHolderPossiblyPlaying.getViewHolderId(),
- expandedViewHolderPossiblyPlaying.isViewHolderExpanded(),
- currentlyExpandedViewHolderId,
- String.valueOf(expandedViewHolderPossiblyPlaying.getViewHolderVoicemailUri()),
- mediaPlayer.isPlaying(),
- mediaPlayer.isPaused(),
- String.valueOf(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri()),
- String.valueOf(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri()));
-
- throw Assert.createAssertionFailException(
- "All cases should have been handled before. Error " + error);
- }
-
- // When a voicemail has finished playing.
- OnCompletionListener onCompletionListener =
- new OnCompletionListener() {
-
- @Override
- public void onCompletion(MediaPlayer mp) {
- Assert.checkArgument(
- mediaPlayer
- .getLastPlayedOrPlayingVoicemailUri()
- .equals(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri()));
- Assert.checkArgument(!mediaPlayer.isPlaying());
-
- LogUtil.i(
- "NewVoicemailAdapter.onCompletionListener",
- "completed playing voicemailUri: %s, expanded viewholder is %d, visibility :%b",
- mediaPlayer.getLastPlayedOrPlayingVoicemailUri().toString(),
- currentlyExpandedViewHolderId,
- isCurrentlyExpandedViewHolderInViewHolderSet());
-
- Assert.checkArgument(
- currentlyExpandedViewHolderId != -1,
- "a voicemail that was never expanded, should never be playing.");
- mediaPlayer.reset();
- }
- };
-
- // When a voicemail has been prepared and can be played
- private final OnPreparedListener onPreparedListener =
- new OnPreparedListener() {
-
- /**
- * When a user pressed the play button, this listener should be called immediately. The
- * asserts ensures that is the case. This function starts playing the voicemail and updates
- * the UI.
- */
- @Override
- public void onPrepared(MediaPlayer mp) {
- LogUtil.i(
- "NewVoicemailAdapter.onPrepared",
- "MPPreparedUri: %s, currentlyExpandedViewHolderId:%d, and its visibility on "
- + "the screen is:%b",
- String.valueOf(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri()),
- currentlyExpandedViewHolderId,
- isCurrentlyExpandedViewHolderInViewHolderSet());
-
- NewVoicemailViewHolder currentlyExpandedViewHolder = getCurrentlyExpandedViewHolder();
- Assert.checkArgument(currentlyExpandedViewHolder != null);
- Assert.checkArgument(
- currentlyExpandedViewHolder
- .getViewHolderVoicemailUri()
- .equals(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri()),
- "should only have prepared the last expanded view holder.");
-
- mediaPlayer.start(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri());
-
- recursivelyUpdateMediaPlayerViewOfExpandedViewHolder(currentlyExpandedViewHolder);
-
- Assert.checkArgument(mediaPlayer.isPlaying());
- LogUtil.i("NewVoicemailAdapter.onPrepared", "voicemail should be playing");
- }
- };
-
- // TODO(uabdullah): when playing the voicemail results in an error
- // we must update the viewholder and mention there was an error playing the voicemail, and reset
- // the media player and the media player view
- private final OnErrorListener onErrorListener =
- new OnErrorListener() {
- @Override
- public boolean onError(MediaPlayer mp, int what, int extra) {
- LogUtil.e("NewVoicemailAdapter.onError", "onError, what:%d, extra:%d", what, extra);
- Assert.checkArgument(
- mediaPlayer.getMediaPlayer().equals(mp),
- "there should always only be one instance of the media player");
- Assert.checkArgument(
- mediaPlayer
- .getLastPlayedOrPlayingVoicemailUri()
- .equals(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri()));
- LogUtil.i(
- "NewVoicemailAdapter.onErrorListener",
- "error playing voicemailUri: %s",
- mediaPlayer.getLastPlayedOrPlayingVoicemailUri().toString());
- return false;
- }
- };
-
- private boolean isCurrentlyExpandedViewHolderInViewHolderSet() {
- for (NewVoicemailViewHolder viewHolder : newVoicemailViewHolderSet) {
- if (viewHolder.getViewHolderId() == currentlyExpandedViewHolderId) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * The expanded view holder may or may not be visible on the screen. Since the {@link
- * NewVoicemailViewHolder} may be recycled, it's possible that the expanded view holder is
- * recycled for a non-expanded view holder when the expanded view holder is scrolled out of view.
- *
- * @return the expanded view holder if it is amongst the recycled views on the screen, otherwise
- * null.
- */
- @Nullable
- private NewVoicemailViewHolder getCurrentlyExpandedViewHolder() {
- if (newVoicemailViewHolderArrayMap.containsKey(currentlyExpandedViewHolderId)) {
- Assert.checkArgument(
- newVoicemailViewHolderArrayMap.get(currentlyExpandedViewHolderId).getViewHolderId()
- == currentlyExpandedViewHolderId);
- return newVoicemailViewHolderArrayMap.get(currentlyExpandedViewHolderId);
- } else {
- // returned when currentlyExpandedViewHolderId = -1 (viewholder was collapsed)
- LogUtil.i(
- "NewVoicemailAdapter.getCurrentlyExpandedViewHolder",
- "no view holder found in hashmap size:%d for %d",
- newVoicemailViewHolderArrayMap.size(),
- currentlyExpandedViewHolderId);
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- printHashSet();
- printArrayMap();
- return null;
- }
- }
-
- @Override
- public int getItemCount() {
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- LogUtil.enterBlock("NewVoicemailAdapter.getItemCount");
- int numberOfHeaders = 0;
- if (voicemailAlertPosition != Integer.MAX_VALUE) {
- numberOfHeaders++;
- }
- if (todayHeaderPosition != Integer.MAX_VALUE) {
- numberOfHeaders++;
- }
- if (yesterdayHeaderPosition != Integer.MAX_VALUE) {
- numberOfHeaders++;
- }
- if (olderHeaderPosition != Integer.MAX_VALUE) {
- numberOfHeaders++;
- }
- // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
- LogUtil.i(
- "NewVoicemailAdapter.getItemCount",
- "cursor cnt:%d, num of headers:%d, delete size:%d",
- cursor.getCount(),
- numberOfHeaders,
- deletedVoicemailPosition.size());
- return cursor.getCount() + numberOfHeaders - deletedVoicemailPosition.size();
- }
-
- @RowType
- @Override
- public int getItemViewType(int position) {
- LogUtil.enterBlock("NewVoicemailAdapter.getItemViewType");
- if (voicemailAlertPosition != Integer.MAX_VALUE && position == voicemailAlertPosition) {
- return RowType.VOICEMAIL_ALERT;
- }
- if (todayHeaderPosition != Integer.MAX_VALUE && position == todayHeaderPosition) {
- return RowType.HEADER;
- }
- if (yesterdayHeaderPosition != Integer.MAX_VALUE && position == yesterdayHeaderPosition) {
- return RowType.HEADER;
- }
- if (olderHeaderPosition != Integer.MAX_VALUE && position == olderHeaderPosition) {
- return RowType.HEADER;
- }
- return RowType.VOICEMAIL_ENTRY;
- }
-
- /**
- * This will be called once the voicemail that was attempted to be played (and was not locally
- * available) was downloaded from the server. However it is possible that by the time the download
- * was completed, the view holder was collapsed. In that case we shouldn't play the voicemail.
- */
- public void checkAndPlayVoicemail() {
- LogUtil.i(
- "NewVoicemailAdapter.checkAndPlayVoicemail",
- "expandedViewHolder:%d, inViewHolderSet:%b, MPRequestToDownload:%s",
- currentlyExpandedViewHolderId,
- isCurrentlyExpandedViewHolderInViewHolderSet(),
- String.valueOf(mediaPlayer.getVoicemailRequestedToDownload()));
-
- NewVoicemailViewHolder currentlyExpandedViewHolder = getCurrentlyExpandedViewHolder();
- if (currentlyExpandedViewHolderId != -1
- && isCurrentlyExpandedViewHolderInViewHolderSet()
- && currentlyExpandedViewHolder != null
- // Used to differentiate underlying table changes from voicemail downloads and other changes
- // (e.g delete)
- && mediaPlayer.getVoicemailRequestedToDownload() != null
- && (mediaPlayer
- .getVoicemailRequestedToDownload()
- .equals(currentlyExpandedViewHolder.getViewHolderVoicemailUri()))) {
- currentlyExpandedViewHolder.clickPlayButtonOfViewHoldersMediaPlayerView(
- currentlyExpandedViewHolder);
- } else {
- LogUtil.i("NewVoicemailAdapter.checkAndPlayVoicemail", "not playing downloaded voicemail");
- }
- }
-
- /**
- * Updates the voicemail alert message to reflect the state of the {@link VoicemailStatus} table.
- * TODO(uabdullah): Handle ToS properly (a bug)
- */
- public void updateVoicemailAlertWithMostRecentStatus(
- Context context, ImmutableList voicemailStatuses) {
-
- if (voicemailStatuses.isEmpty()) {
- LogUtil.i(
- "NewVoicemailAdapter.updateVoicemailAlertWithMostRecentStatus",
- "voicemailStatuses was empty");
- return;
- }
-
- voicemailErrorMessage = null;
- VoicemailErrorMessageCreator messageCreator = new VoicemailErrorMessageCreator();
-
- for (VoicemailStatus status : voicemailStatuses) {
- voicemailErrorMessage = messageCreator.create(context, status, null);
- if (voicemailErrorMessage != null) {
- break;
- }
- }
-
- if (voicemailErrorMessage != null) {
- LogUtil.i("NewVoicemailAdapter.updateVoicemailAlertWithMostRecentStatus", "showing alert");
- voicemailAlertPosition = 0;
- updateHeaderPositions();
- notifyItemChanged(0);
- }
- }
-}
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailAlertViewHolder.java b/java/com/android/dialer/voicemail/listui/NewVoicemailAlertViewHolder.java
deleted file mode 100644
index ac989a8df4db5bbc7e2aa5d2675d50d8be0de84f..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailAlertViewHolder.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.dialer.voicemail.listui;
-
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-import com.android.dialer.voicemail.listui.error.VoicemailErrorMessage.Action;
-
-/** ViewHolder for {@link NewVoicemailAdapter} to display voicemail error states. */
-final class NewVoicemailAlertViewHolder extends ViewHolder {
-
- private final TextView voicemailErrorTitleTextView;
- private final TextView voicemailErrorDetailsTextView;
- private final Button primaryButton;
- private final Button secondaryButton;
-
- NewVoicemailAlertViewHolder(View view) {
- super(view);
- voicemailErrorTitleTextView = view.findViewById(R.id.voicemail_alert_header);
- voicemailErrorDetailsTextView = view.findViewById(R.id.voicemail_alert_details);
- primaryButton = view.findViewById(R.id.voicemail_alert_primary_button);
- secondaryButton = view.findViewById(R.id.voicemail_alert_primary_button);
- }
-
- void setTitle(CharSequence error) {
- voicemailErrorTitleTextView.setText(error);
- }
-
- void setDescription(CharSequence error) {
- voicemailErrorDetailsTextView.setText(error);
- }
-
- void setPrimaryButton(Action action) {
- primaryButton.setVisibility(View.VISIBLE);
- primaryButton.setText(action.getText());
- primaryButton.setOnClickListener(action.getListener());
- }
-
- void setSecondaryButton(Action action) {
- secondaryButton.setVisibility(View.VISIBLE);
- secondaryButton.setText(action.getText());
- secondaryButton.setOnClickListener(action.getListener());
- }
-}
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java b/java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java
deleted file mode 100644
index 87b0a63432fd308b4c39835dba6b8d814aab0187..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.voicemail.listui;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.provider.VoicemailContract.Status;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.LoaderManager.LoaderCallbacks;
-import android.support.v4.content.Loader;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import com.android.dialer.calllog.CallLogComponent;
-import com.android.dialer.calllog.RefreshAnnotatedCallLogReceiver;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.UiListener;
-import com.android.dialer.voicemail.listui.error.VoicemailStatus;
-import com.android.dialer.voicemailstatus.VoicemailStatusQuery;
-import com.android.dialer.widget.EmptyContentView;
-import com.android.voicemail.VoicemailComponent;
-import com.google.common.collect.ImmutableList;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.ArrayList;
-import java.util.List;
-
-// TODO(uabdullah): Register content observer for VoicemailContract.Status.CONTENT_URI in onStart
-/** Fragment for Dialer Voicemail Tab. */
-public final class NewVoicemailFragment extends Fragment implements LoaderCallbacks {
-
- private RecyclerView recyclerView;
- private RefreshAnnotatedCallLogReceiver refreshAnnotatedCallLogReceiver;
- private UiListener> queryVoicemailStatusTableListener;
-
- // View required to show/hide recycler and empty views
- FrameLayout fragmentRootFrameLayout;
-
- private EmptyContentView emptyContentView;
-
- public NewVoicemailFragment() {
- LogUtil.enterBlock("NewVoicemailFragment.NewVoicemailFragment");
- }
-
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
-
- LogUtil.enterBlock("NewVoicemailFragment.onActivityCreated");
-
- refreshAnnotatedCallLogReceiver = new RefreshAnnotatedCallLogReceiver(getContext());
- queryVoicemailStatusTableListener =
- DialerExecutorComponent.get(getContext())
- .createUiListener(
- getActivity().getFragmentManager(),
- "NewVoicemailFragment.queryVoicemailStatusTable");
- }
-
- @Override
- public void onStart() {
- super.onStart();
- LogUtil.enterBlock("NewVoicemailFragment.onStart");
- }
-
- @Override
- public void onResume() {
- super.onResume();
-
- boolean isHidden = isHidden();
- LogUtil.i("NewVoicemailFragment.onResume", "isHidden = %s", isHidden);
-
- // As a fragment's onResume() is tied to the containing Activity's onResume(), being resumed is
- // not equivalent to becoming visible.
- // For example, when an activity with a hidden fragment is resumed, the fragment's onResume()
- // will be called but it is not visible.
- if (!isHidden) {
- onFragmentShown();
- }
- }
-
- @Override
- public void onPause() {
- super.onPause();
- LogUtil.enterBlock("NewVoicemailFragment.onPause");
-
- onFragmentHidden();
- }
-
- @Override
- public void onHiddenChanged(boolean hidden) {
- super.onHiddenChanged(hidden);
- LogUtil.i("NewVoicemailFragment.onHiddenChanged", "hidden = %s", hidden);
-
- if (hidden) {
- onFragmentHidden();
- } else {
- onFragmentShown();
- }
- }
-
- /**
- * To be called when the fragment becomes visible.
- *
- *
Note that for a fragment, being resumed is not equivalent to becoming visible.
- *
- *
For example, when an activity with a hidden fragment is resumed, the fragment's onResume()
- * will be called but it is not visible.
- */
- private void onFragmentShown() {
- registerRefreshAnnotatedCallLogReceiver();
-
- CallLogComponent.get(getContext())
- .getRefreshAnnotatedCallLogNotifier()
- .notify(/* checkDirty = */ true);
- }
-
- /**
- * To be called when the fragment becomes hidden.
- *
- *
This can happen in the following two cases:
- *
- *
- *
hide the fragment but keep the parent activity visible (e.g., calling {@link
- * android.support.v4.app.FragmentTransaction#hide(Fragment)} in an activity, or
- *
the parent activity is paused.
- *
- */
- private void onFragmentHidden() {
- unregisterRefreshAnnotatedCallLogReceiver();
- }
-
- @Override
- public View onCreateView(
- LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- LogUtil.enterBlock("NewVoicemailFragment.onCreateView");
-
- fragmentRootFrameLayout =
- (FrameLayout) inflater.inflate(R.layout.new_voicemail_call_log_fragment, container, false);
- recyclerView = fragmentRootFrameLayout.findViewById(R.id.new_voicemail_call_log_recycler_view);
-
- emptyContentView = fragmentRootFrameLayout.findViewById(R.id.empty_content_view);
- getLoaderManager().restartLoader(0, null, this);
- return fragmentRootFrameLayout;
- }
-
- @Override
- public Loader onCreateLoader(int id, Bundle args) {
- LogUtil.enterBlock("NewVoicemailFragment.onCreateLoader");
- return new VoicemailCursorLoader(getContext());
- }
-
- @Override
- public void onLoadFinished(Loader loader, Cursor data) {
- LogUtil.i("NewVoicemailFragment.onLoadFinished", "cursor size is %d", data.getCount());
- if (data.getCount() == 0) {
- showEmptyVoicemailFragmentView();
- return;
- }
- showView(recyclerView);
-
- if (recyclerView.getAdapter() == null) {
- recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
- // TODO(uabdullah): Replace getActivity().getFragmentManager() with getChildFragment()
- recyclerView.setAdapter(
- new NewVoicemailAdapter(
- data, System::currentTimeMillis, getActivity().getFragmentManager()));
- } else {
- // This would only be called in cases such as when voicemail has been fetched from the server
- // or a changed occurred in the annotated table changed (e.g deletes). To check if the change
- // was due to a voicemail download,
- // NewVoicemailAdapter.mediaPlayer.getVoicemailRequestedToDownload() is called.
- LogUtil.i(
- "NewVoicemailFragment.onLoadFinished",
- "adapter: %s was not null, checking and playing the voicemail if conditions met",
- recyclerView.getAdapter());
- ((NewVoicemailAdapter) recyclerView.getAdapter()).updateCursor(data);
- ((NewVoicemailAdapter) recyclerView.getAdapter()).checkAndPlayVoicemail();
- queryAndUpdateVoicemailStatusAlert();
- }
- }
-
- /** Shows the view when there are no voicemails to be displayed * */
- private void showEmptyVoicemailFragmentView() {
- LogUtil.enterBlock("NewVoicemailFragment.showEmptyVoicemailFragmentView");
-
- showView(emptyContentView);
-
- emptyContentView.setDescription((R.string.empty_voicemail_tab_text));
- emptyContentView.setImage(R.drawable.quantum_ic_voicemail_vd_theme_24);
- }
-
- private void showView(View view) {
- LogUtil.i("NewVoicemailFragment.showView", "Showing view: " + view);
- emptyContentView.setVisibility(view == emptyContentView ? View.VISIBLE : View.GONE);
- recyclerView.setVisibility(view == recyclerView ? View.VISIBLE : View.GONE);
- }
-
- private void registerRefreshAnnotatedCallLogReceiver() {
- LogUtil.enterBlock("NewVoicemailFragment.registerRefreshAnnotatedCallLogReceiver");
-
- LocalBroadcastManager.getInstance(getContext())
- .registerReceiver(
- refreshAnnotatedCallLogReceiver, RefreshAnnotatedCallLogReceiver.getIntentFilter());
- }
-
- private void unregisterRefreshAnnotatedCallLogReceiver() {
- LogUtil.enterBlock("NewVoicemailFragment.unregisterRefreshAnnotatedCallLogReceiver");
-
- // Cancel pending work as we don't need it any more.
- CallLogComponent.get(getContext()).getRefreshAnnotatedCallLogNotifier().cancel();
-
- LocalBroadcastManager.getInstance(getContext())
- .unregisterReceiver(refreshAnnotatedCallLogReceiver);
- }
-
- private void queryAndUpdateVoicemailStatusAlert() {
- queryVoicemailStatusTableListener.listen(
- getContext(),
- queryVoicemailStatus(getContext()),
- this::updateVoicemailStatusAlert,
- throwable -> {
- throw new RuntimeException(throwable);
- });
- }
-
- private ListenableFuture> queryVoicemailStatus(Context context) {
- return DialerExecutorComponent.get(context)
- .backgroundExecutor()
- .submit(
- () -> {
- StringBuilder where = new StringBuilder();
- List selectionArgs = new ArrayList<>();
-
- VoicemailComponent.get(context)
- .getVoicemailClient()
- .appendOmtpVoicemailStatusSelectionClause(context, where, selectionArgs);
-
- ImmutableList.Builder statuses = ImmutableList.builder();
-
- try (Cursor cursor =
- context
- .getContentResolver()
- .query(
- Status.CONTENT_URI,
- VoicemailStatusQuery.getProjection(),
- where.toString(),
- selectionArgs.toArray(new String[selectionArgs.size()]),
- null)) {
- if (cursor == null) {
- LogUtil.e(
- "NewVoicemailFragment.queryVoicemailStatus", "query failed. Null cursor.");
- return statuses.build();
- }
-
- LogUtil.i(
- "NewVoicemailFragment.queryVoicemailStatus",
- "cursor size:%d ",
- cursor.getCount());
-
- while (cursor.moveToNext()) {
- VoicemailStatus status = new VoicemailStatus(context, cursor);
- if (status.isActive(context)) {
- LogUtil.i(
- "NewVoicemailFragment.queryVoicemailStatus", "inactive source ignored");
- statuses.add(status);
- // TODO(a bug): Handle Service State Listeners
- }
- }
- }
- LogUtil.i(
- "NewVoicemailFragment.queryVoicemailStatus",
- "query returned %d results",
- statuses.build().size());
- return statuses.build();
- });
- }
-
- private void updateVoicemailStatusAlert(ImmutableList voicemailStatuses) {
- ((NewVoicemailAdapter) recyclerView.getAdapter())
- .updateVoicemailAlertWithMostRecentStatus(getContext(), voicemailStatuses);
- }
-
- @Override
- public void onLoaderReset(Loader loader) {
- LogUtil.enterBlock("NewVoicemailFragment.onLoaderReset");
- recyclerView.setAdapter(null);
- }
-}
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailHeaderViewHolder.java b/java/com/android/dialer/voicemail/listui/NewVoicemailHeaderViewHolder.java
deleted file mode 100644
index 6bd8e86ce14fe45287a1e56d9129156f52987c24..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailHeaderViewHolder.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.voicemail.listui;
-
-import android.support.annotation.StringRes;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.view.View;
-import android.widget.TextView;
-
-/** ViewHolder for {@link NewVoicemailAdapter} to display "Today" or "Older" divider row. */
-final class NewVoicemailHeaderViewHolder extends ViewHolder {
-
- private final TextView headerTextView;
-
- NewVoicemailHeaderViewHolder(View view) {
- super(view);
- headerTextView = view.findViewById(R.id.new_voicemail_header_text);
- }
-
- void setHeader(@StringRes int header) {
- headerTextView.setText(header);
- }
-
- @VisibleForTesting(otherwise = VisibleForTesting.NONE)
- String getHeaderText() {
- return headerTextView.getText().toString();
- }
-}
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayer.java b/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayer.java
deleted file mode 100644
index efa1060ed9fedbffa2bd17b68aa0e9781d721823..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayer.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright (C) 2017 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
- */
-
-package com.android.dialer.voicemail.listui;
-
-import android.content.Context;
-import android.media.AudioManager;
-import android.media.MediaPlayer;
-import android.media.MediaPlayer.OnCompletionListener;
-import android.media.MediaPlayer.OnErrorListener;
-import android.media.MediaPlayer.OnPreparedListener;
-import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.strictmode.StrictModeUtils;
-import java.io.IOException;
-
-/** A wrapper around {@link MediaPlayer} */
-public class NewVoicemailMediaPlayer {
-
- private final MediaPlayer mediaPlayer;
- private Uri voicemailLastPlayedOrPlayingUri;
- private Uri voicemailUriLastPreparedOrPreparingToPlay;
-
- private OnErrorListener newVoicemailMediaPlayerOnErrorListener;
- private OnPreparedListener newVoicemailMediaPlayerOnPreparedListener;
- private OnCompletionListener newVoicemailMediaPlayerOnCompletionListener;
- private Uri pausedUri;
- @Nullable private Uri voicemailRequestedToDownload;
-
- public NewVoicemailMediaPlayer(@NonNull MediaPlayer player) {
- mediaPlayer = Assert.isNotNull(player);
- }
-
- // TODO(uabdullah): Consider removing the StrictModeUtils.bypass (a bug)
- public void prepareMediaPlayerAndPlayVoicemailWhenReady(Context context, Uri uri)
- throws IOException {
- Assert.checkArgument(uri != null, "Media player cannot play a null uri");
- LogUtil.i(
- "NewVoicemailMediaPlayer",
- "trying to prepare playing voicemail uri: %s",
- String.valueOf(uri));
- try {
- reset();
- voicemailUriLastPreparedOrPreparingToPlay = uri;
- verifyListenersNotNull();
- LogUtil.i("NewVoicemailMediaPlayer", "setData source");
- StrictModeUtils.bypass(
- () -> {
- try {
- mediaPlayer.setDataSource(context, uri);
- setAudioManagerToNonSpeakerMode(context);
- } catch (IOException e) {
- LogUtil.i(
- "NewVoicemailMediaPlayer",
- "threw an Exception when setting datasource "
- + e
- + " for uri: "
- + uri
- + "for context : "
- + context);
- }
- });
- LogUtil.i("NewVoicemailMediaPlayer", "prepare async");
- StrictModeUtils.bypass(() -> mediaPlayer.prepareAsync());
- } catch (IllegalStateException e) {
- LogUtil.i(
- "NewVoicemailMediaPlayer", "caught an IllegalStateException state exception : \n" + e);
- } catch (Exception e) {
- LogUtil.i(
- "NewVoicemailMediaPlayer",
- "threw an Exception " + e + " for uri: " + uri + "for context : " + context);
- }
- }
-
- /** We should never start playing voicemails from the speaker mode */
- private void setAudioManagerToNonSpeakerMode(Context context) {
- AudioManager audioManager = context.getSystemService(AudioManager.class);
- audioManager.setMode(AudioManager.STREAM_MUSIC);
- audioManager.setSpeakerphoneOn(false);
- }
-
- private void verifyListenersNotNull() {
- Assert.isNotNull(
- newVoicemailMediaPlayerOnErrorListener,
- "newVoicemailMediaPlayerOnErrorListener must be set before preparing to "
- + "play voicemails");
- Assert.isNotNull(
- newVoicemailMediaPlayerOnCompletionListener,
- "newVoicemailMediaPlayerOnCompletionListener must be set before preparing"
- + " to play voicemails");
- Assert.isNotNull(
- newVoicemailMediaPlayerOnPreparedListener,
- "newVoicemailMediaPlayerOnPreparedListener must be set before preparing to"
- + " play voicemails");
- }
-
- // Must be called from onPrepared
- public void start(Uri startPlayingVoicemailUri) {
- Assert.checkArgument(
- startPlayingVoicemailUri.equals(voicemailUriLastPreparedOrPreparingToPlay),
- "uri:%s was not prepared before calling start. Uri that is currently prepared: %s",
- startPlayingVoicemailUri,
- getLastPreparedOrPreparingToPlayVoicemailUri());
-
- mediaPlayer.start();
- voicemailLastPlayedOrPlayingUri = startPlayingVoicemailUri;
- pausedUri = null;
- voicemailRequestedToDownload = null;
- }
-
- public void reset() {
- LogUtil.enterBlock("NewVoicemailMediaPlayer.reset");
- mediaPlayer.reset();
- voicemailLastPlayedOrPlayingUri = null;
- voicemailUriLastPreparedOrPreparingToPlay = null;
- pausedUri = null;
- voicemailRequestedToDownload = null;
- }
-
- public void pauseMediaPlayer(Uri voicemailUri) {
- pausedUri = voicemailUri;
- Assert.checkArgument(
- voicemailUriLastPreparedOrPreparingToPlay.equals(voicemailLastPlayedOrPlayingUri),
- "last prepared and last playing should be the same");
- Assert.checkArgument(
- pausedUri.equals(voicemailLastPlayedOrPlayingUri),
- "only the last played uri can be paused");
- mediaPlayer.pause();
- }
-
- public void seekTo(int progress) {
- mediaPlayer.seekTo(progress);
- }
-
- public void setOnErrorListener(OnErrorListener onErrorListener) {
- mediaPlayer.setOnErrorListener(onErrorListener);
- newVoicemailMediaPlayerOnErrorListener = onErrorListener;
- }
-
- public void setOnPreparedListener(OnPreparedListener onPreparedListener) {
- mediaPlayer.setOnPreparedListener(onPreparedListener);
- newVoicemailMediaPlayerOnPreparedListener = onPreparedListener;
- }
-
- public void setOnCompletionListener(OnCompletionListener onCompletionListener) {
- mediaPlayer.setOnCompletionListener(onCompletionListener);
- newVoicemailMediaPlayerOnCompletionListener = onCompletionListener;
- }
-
- public void setVoicemailRequestedToDownload(@NonNull Uri uri) {
- Assert.isNotNull(uri, "cannot download a null voicemail");
- voicemailRequestedToDownload = uri;
- }
-
- /**
- * Note: In some cases it's possible mediaPlayer.isPlaying() can return true, but
- * mediaPlayer.getCurrentPosition() can be greater than mediaPlayer.getDuration(), after which
- * mediaPlayer.isPlaying() will be false. This is a weird corner case and adding the
- * mediaPlayer.getCurrentPosition() < mediaPlayer.getDuration() check here messes with the
- * mediaPlayer.start() (doesn't return mediaPlayer.isPlaying() to be true immediately).
- *
- * @return if the media plaer;
- */
- public boolean isPlaying() {
- return mediaPlayer.isPlaying();
- }
-
- public int getCurrentPosition() {
- return mediaPlayer.getCurrentPosition();
- }
-
- public Uri getLastPlayedOrPlayingVoicemailUri() {
- if (mediaPlayer.isPlaying()) {
- Assert.isNotNull(voicemailLastPlayedOrPlayingUri);
- }
-
- return voicemailLastPlayedOrPlayingUri == null ? Uri.EMPTY : voicemailLastPlayedOrPlayingUri;
- }
-
- /**
- * All the places that call this function, we expect the voicemail to have been prepared, but we
- * could get rid of the assert check in the future if needed.
- */
- public Uri getLastPreparedOrPreparingToPlayVoicemailUri() {
- return Assert.isNotNull(
- voicemailUriLastPreparedOrPreparingToPlay,
- "we expect whoever called this to have prepared a voicemail before calling this function");
- }
-
- public Uri getLastPausedVoicemailUri() {
- return pausedUri;
- }
-
- public MediaPlayer getMediaPlayer() {
- return mediaPlayer;
- }
-
- public int getDuration() {
- Assert.checkArgument(mediaPlayer != null);
- return mediaPlayer.getDuration();
- }
-
- /**
- * A null v/s non-value is important for the {@link NewVoicemailAdapter} to differentiate between
- * a underlying table change due to a voicemail being downloaded or something else (e.g delete).
- *
- * @return if there was a Uri that was requested to be downloaded from the server, null otherwise.
- */
- @Nullable
- public Uri getVoicemailRequestedToDownload() {
- return voicemailRequestedToDownload;
- }
-
- public boolean isPaused() {
- return pausedUri != null;
- }
-}
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java b/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java
deleted file mode 100644
index f821f4f8a750ad1f2835bf4f468101e184a9f2a7..0000000000000000000000000000000000000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java
+++ /dev/null
@@ -1,677 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-package com.android.dialer.voicemail.listui;
-
-import android.app.FragmentManager;
-import android.content.Context;
-import android.content.Intent;
-import android.database.Cursor;
-import android.graphics.drawable.Drawable;
-import android.media.AudioManager;
-import android.net.Uri;
-import android.provider.VoicemailContract;
-import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.util.Pair;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.ImageButton;
-import android.widget.LinearLayout;
-import android.widget.SeekBar;
-import android.widget.SeekBar.OnSeekBarChangeListener;
-import android.widget.TextView;
-import com.android.dialer.callintent.CallInitiationType.Type;
-import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutor.SuccessListener;
-import com.android.dialer.common.concurrent.DialerExecutor.Worker;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.precall.PreCall;
-import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.voicemail.listui.NewVoicemailViewHolder.NewVoicemailViewHolderListener;
-import com.android.dialer.voicemail.model.VoicemailEntry;
-import java.util.Locale;
-
-/**
- * The view of the media player that is visible when a {@link NewVoicemailViewHolder} is expanded.
- */
-public final class NewVoicemailMediaPlayerView extends LinearLayout {
-
- private ImageButton playButton;
- private ImageButton pauseButton;
- private ImageButton speakerButton;
- private ImageButton phoneButton;
- private ImageButton deleteButton;
- private TextView currentSeekBarPosition;
- private SeekBar seekBarView;
- private Drawable voicemailSeekHandleDisabled;
-
- private TextView totalDurationView;
- private TextView voicemailLoadingStatusView;
- private Uri voicemailUri;
- private String numberVoicemailFrom;
- private String phoneAccountId;
- private String phoneAccountComponentName;
- private FragmentManager fragmentManager;
- private NewVoicemailViewHolder newVoicemailViewHolder;
- private NewVoicemailMediaPlayer mediaPlayer;
- private NewVoicemailViewHolderListener newVoicemailViewHolderListener;
-
- public NewVoicemailMediaPlayerView(Context context, AttributeSet attrs) {
- super(context, attrs);
- LogUtil.enterBlock("NewVoicemailMediaPlayer");
- LayoutInflater inflater =
- (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- inflater.inflate(R.layout.new_voicemail_media_player_layout, this);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- LogUtil.enterBlock("NewVoicemailMediaPlayer.onFinishInflate");
- initializeMediaPlayerButtonsAndViews();
- setupListenersForMediaPlayerButtons();
- }
-
- private void initializeMediaPlayerButtonsAndViews() {
- playButton = findViewById(R.id.playButton);
- pauseButton = findViewById(R.id.pauseButton);
- currentSeekBarPosition = findViewById(R.id.playback_position_text);
- seekBarView = findViewById(R.id.playback_seek);
- speakerButton = findViewById(R.id.speakerButton);
- phoneButton = findViewById(R.id.phoneButton);
- deleteButton = findViewById(R.id.deleteButton);
- totalDurationView = findViewById(R.id.playback_seek_total_duration);
- voicemailLoadingStatusView = findViewById(R.id.playback_state_text);
-
- voicemailSeekHandleDisabled =
- getContext()
- .getResources()
- .getDrawable(R.drawable.ic_voicemail_seek_handle_disabled, getContext().getTheme());
- }
-
- private void setupListenersForMediaPlayerButtons() {
- playButton.setOnClickListener(playButtonListener);
- pauseButton.setOnClickListener(pauseButtonListener);
- seekBarView.setOnSeekBarChangeListener(seekbarChangeListener);
- speakerButton.setOnClickListener(speakerButtonListener);
- phoneButton.setOnClickListener(phoneButtonListener);
- deleteButton.setOnClickListener(deleteButtonListener);
- }
-
- public void reset() {
- LogUtil.i(
- "NewVoicemailMediaPlayer.reset",
- "the uri for this is " + voicemailUri + " and number is " + numberVoicemailFrom);
- voicemailUri = null;
- voicemailLoadingStatusView.setVisibility(GONE);
- numberVoicemailFrom = null;
- phoneAccountId = null;
- phoneAccountComponentName = null;
- }
-
- /**
- * Can be called either when binding happens on the {@link NewVoicemailViewHolder} from {@link
- * NewVoicemailAdapter} or when a user expands a {@link NewVoicemailViewHolder}. During the
- * binding, since {@link NewVoicemailMediaPlayerView} is part of {@link NewVoicemailViewHolder},
- * we have to ensure that during the binding the values from the {@link NewVoicemailAdapter} are
- * also propogated down to the {@link NewVoicemailMediaPlayerView} via {@link
- * NewVoicemailViewHolder}. In the case of when the {@link NewVoicemailViewHolder} is expanded,
- * the most recent value and states from the {@link NewVoicemailAdapter} are set for the expanded
- * {@link NewVoicemailMediaPlayerView}.
- *
- * @param viewHolder
- * @param voicemailEntryFromAdapter are the voicemail related values from the {@link
- * AnnotatedCallLog} converted into {@link VoicemailEntry} format.
- * @param fragmentManager
- * @param mp the media player passed down from the adapter
- * @param listener
- */
- void bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView(
- NewVoicemailViewHolder viewHolder,
- @NonNull VoicemailEntry voicemailEntryFromAdapter,
- @NonNull FragmentManager fragmentManager,
- NewVoicemailMediaPlayer mp,
- NewVoicemailViewHolderListener listener) {
-
- Assert.isNotNull(voicemailEntryFromAdapter);
- Uri uri = Uri.parse(voicemailEntryFromAdapter.getVoicemailUri());
-
- numberVoicemailFrom = voicemailEntryFromAdapter.getNumber().getNormalizedNumber();
- phoneAccountId = voicemailEntryFromAdapter.getPhoneAccountId();
- phoneAccountComponentName = voicemailEntryFromAdapter.getPhoneAccountComponentName();
-
- Assert.isNotNull(viewHolder);
- Assert.isNotNull(uri);
- Assert.isNotNull(listener);
- Assert.isNotNull(totalDurationView);
- Assert.checkArgument(uri.equals(viewHolder.getViewHolderVoicemailUri()));
-
- LogUtil.i(
- "NewVoicemailMediaPlayerView.bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView",
- "Updating the viewholder:%d mediaPlayerView with uri value:%s",
- viewHolder.getViewHolderId(),
- uri.toString());
-
- this.fragmentManager = fragmentManager;
-
- newVoicemailViewHolder = viewHolder;
- newVoicemailViewHolderListener = listener;
- mediaPlayer = mp;
- voicemailUri = uri;
- totalDurationView.setText(
- VoicemailEntryText.getVoicemailDuration(getContext(), voicemailEntryFromAdapter));
- // Not sure if these are needed, but it'll ensure that onInflate() has atleast happened.
- initializeMediaPlayerButtonsAndViews();
- setupListenersForMediaPlayerButtons();
-
- // TODO(uabdullah): Handle seekbar seeking properly (a bug)
- seekBarView.setEnabled(false);
- seekBarView.setThumb(voicemailSeekHandleDisabled);
-
- updatePhoneIcon(numberVoicemailFrom);
-
- // During the binding we only send a request to the adapter to tell us what the
- // state of the media player should be and call that function.
- // This could be the paused state, or the playing state of the resume state.
- // Our job here is only to send the request upto the adapter and have it decide what we should
- // do.
- LogUtil.i(
- "NewVoicemailMediaPlayerView.bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView",
- "Updating media player values for id:" + viewHolder.getViewHolderId());
-
- // During the binding make sure that the first time we just set the mediaplayer view
- // This does not take care of the constant update
- if (mp.isPlaying() && mp.getLastPlayedOrPlayingVoicemailUri().equals(voicemailUri)) {
- Assert.checkArgument(
- mp.getLastPlayedOrPlayingVoicemailUri()
- .equals(mp.getLastPreparedOrPreparingToPlayVoicemailUri()));
- LogUtil.i(
- "NewVoicemailMediaPlayerView.bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView",
- "show playing state");
- playButton.setVisibility(GONE);
- pauseButton.setVisibility(VISIBLE);
- currentSeekBarPosition.setText(formatAsMinutesAndSeconds(mp.getCurrentPosition()));
-
- if (seekBarView.getMax() != mp.getDuration()) {
- seekBarView.setMax(mp.getDuration());
- }
- seekBarView.setProgress(mp.getCurrentPosition());
-
- } else if (mediaPlayer.isPaused() && mp.getLastPausedVoicemailUri().equals(voicemailUri)) {
- LogUtil.i(
- "NewVoicemailMediaPlayerView.bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView",
- "show paused state");
- Assert.checkArgument(viewHolder.getViewHolderVoicemailUri().equals(voicemailUri));
- playButton.setVisibility(VISIBLE);
- pauseButton.setVisibility(GONE);
- currentSeekBarPosition.setText(formatAsMinutesAndSeconds(mp.getCurrentPosition()));
- if (seekBarView.getMax() != mp.getDuration()) {
- seekBarView.setMax(mp.getDuration());
- }
- seekBarView.setProgress(mp.getCurrentPosition());
-
- } else {
- LogUtil.i(
- "NewVoicemailMediaPlayerView.bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView",
- "show reset state");
- playButton.setVisibility(VISIBLE);
- pauseButton.setVisibility(GONE);
- seekBarView.setProgress(0);
- seekBarView.setMax(100);
- currentSeekBarPosition.setText(formatAsMinutesAndSeconds(0));
- }
- }
-
- /**
- * Updates the phone icon depending if we can dial it or not.
- *
- *
Note: This must be called after the onClickListeners have been set, otherwise isClickable()
- * state is not maintained.
- */
- private void updatePhoneIcon(@Nullable String numberVoicemailFrom) {
- // TODO(uabdullah): Handle restricted/blocked numbers (a bug)
- if (TextUtils.isEmpty(numberVoicemailFrom)) {
- phoneButton.setEnabled(false);
- phoneButton.setClickable(false);
- } else {
- phoneButton.setEnabled(true);
- phoneButton.setClickable(true);
- }
- }
-
- private final OnSeekBarChangeListener seekbarChangeListener =
- new OnSeekBarChangeListener() {
- @Override
- public void onProgressChanged(SeekBar seekBarfromProgress, int progress, boolean fromUser) {
- // TODO(uabdullah): Only for debugging purposes, to be removed.
- if (progress < 100) {
- LogUtil.i(
- "NewVoicemailMediaPlayer.seekbarChangeListener",
- "onProgressChanged, progress:%d, seekbarMax: %d, fromUser:%b",
- progress,
- seekBarfromProgress.getMax(),
- fromUser);
- }
-
- if (fromUser) {
- mediaPlayer.seekTo(progress);
- currentSeekBarPosition.setText(formatAsMinutesAndSeconds(progress));
- }
- }
-
- @Override
- // TODO(uabdullah): Handle this case
- public void onStartTrackingTouch(SeekBar seekBar) {
- LogUtil.i("NewVoicemailMediaPlayer.onStartTrackingTouch", "does nothing for now");
- }
-
- @Override
- // TODO(uabdullah): Handle this case
- public void onStopTrackingTouch(SeekBar seekBar) {
- LogUtil.i("NewVoicemailMediaPlayer.onStopTrackingTouch", "does nothing for now");
- }
- };
-
- private final View.OnClickListener pauseButtonListener =
- new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- LogUtil.i(
- "NewVoicemailMediaPlayer.pauseButtonListener",
- "pauseMediaPlayerAndSetPausedStateOfViewHolder button for voicemailUri: %s",
- voicemailUri.toString());
-
- Assert.checkArgument(playButton.getVisibility() == GONE);
- Assert.checkArgument(mediaPlayer != null);
- Assert.checkArgument(
- mediaPlayer.getLastPlayedOrPlayingVoicemailUri().equals((voicemailUri)),
- "the voicemail being played is the only voicemail that should"
- + " be paused. last played voicemail:%s, uri:%s",
- mediaPlayer.getLastPlayedOrPlayingVoicemailUri().toString(),
- voicemailUri.toString());
- Assert.checkArgument(
- newVoicemailViewHolder.getViewHolderVoicemailUri().equals(voicemailUri),
- "viewholder uri and mediaplayer view should be the same.");
- newVoicemailViewHolderListener.pauseViewHolder(newVoicemailViewHolder);
- }
- };
-
- /**
- * Attempts to imitate clicking the play button. This is useful for when we the user attempted to
- * play a voicemail, but the media player didn't start playing till the voicemail was downloaded
- * from the server. However once we have the voicemail downloaded, we want to start playing, so as
- * to make it seem like that this is a continuation of the users initial play button click.
- */
- public final void clickPlayButton() {
- playButtonListener.onClick(null);
- }
-
- private final View.OnClickListener playButtonListener =
- new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- LogUtil.i(
- "NewVoicemailMediaPlayer.playButtonListener",
- "play button for voicemailUri: %s",
- String.valueOf(voicemailUri));
-
- if (mediaPlayer.getLastPausedVoicemailUri() != null
- && mediaPlayer
- .getLastPausedVoicemailUri()
- .toString()
- .contentEquals(voicemailUri.toString())) {
- LogUtil.i(
- "NewVoicemailMediaPlayer.playButtonListener",
- "resume playing voicemailUri: %s",
- voicemailUri.toString());
-
- newVoicemailViewHolderListener.resumePausedViewHolder(newVoicemailViewHolder);
-
- } else {
- playVoicemailWhenAvailableLocally();
- }
- }
- };
-
- /**
- * Plays the voicemail when we are able to play the voicemail locally from the device. This
- * involves checking if the voicemail is available to play locally, if it is, then we setup the
- * Media Player to play the voicemail. If the voicemail is not available, then we need download
- * the voicemail from the voicemail server to the device, and then have the Media player play it.
- */
- private void playVoicemailWhenAvailableLocally() {
- LogUtil.enterBlock("playVoicemailWhenAvailableLocally");
- Worker, Pair> checkVoicemailHasContent =
- this::queryVoicemailHasContent;
- SuccessListener> checkVoicemailHasContentCallBack = this::prepareMediaPlayer;
-
- DialerExecutorComponent.get(getContext())
- .dialerExecutorFactory()
- .createUiTaskBuilder(fragmentManager, "lookup_voicemail_content", checkVoicemailHasContent)
- .onSuccess(checkVoicemailHasContentCallBack)
- .build()
- .executeSerial(new Pair<>(getContext(), voicemailUri));
- }
-
- private Pair queryVoicemailHasContent(Pair contextUriPair) {
- Context context = contextUriPair.first;
- Uri uri = contextUriPair.second;
-
- try (Cursor cursor = context.getContentResolver().query(uri, null, null, null, null)) {
- if (cursor != null && cursor.moveToFirst()) {
- return new Pair<>(
- cursor.getInt(cursor.getColumnIndex(VoicemailContract.Voicemails.HAS_CONTENT)) == 1,
- uri);
- }
- return new Pair<>(false, uri);
- }
- }
-
- /**
- * If the voicemail is available to play locally, setup the media player to play it. Otherwise
- * send a request to download the voicemail and then play it.
- */
- private void prepareMediaPlayer(Pair booleanUriPair) {
- boolean voicemailAvailableLocally = booleanUriPair.first;
- Uri uri = booleanUriPair.second;
- LogUtil.i(
- "NewVoicemailMediaPlayer.prepareMediaPlayer",
- "voicemail available locally: %b for voicemailUri: %s",
- voicemailAvailableLocally,
- uri.toString());
-
- if (voicemailAvailableLocally) {
- try {
- Assert.checkArgument(mediaPlayer != null, "media player should not have been null");
- mediaPlayer.prepareMediaPlayerAndPlayVoicemailWhenReady(getContext(), uri);
- } catch (Exception e) {
- LogUtil.e(
- "NewVoicemailMediaPlayer.prepareMediaPlayer",
- "Exception when mediaPlayer.prepareMediaPlayerAndPlayVoicemailWhenReady"
- + "(getContext(), uri)\n"
- + e
- + "\n uri:"
- + uri
- + "context should not be null, its value is :"
- + getContext());
- }
- } else {
- LogUtil.i(
- "NewVoicemailMediaPlayer.prepareVoicemailForMediaPlayer", "need to download content");
- // Important to set since it allows the adapter to differentiate when to start playing the
- // voicemail, after it's downloaded.
- mediaPlayer.setVoicemailRequestedToDownload(uri);
- voicemailLoadingStatusView.setVisibility(VISIBLE);
- sendIntentToDownloadVoicemail(uri);
- }
- }
-
- private void sendIntentToDownloadVoicemail(Uri uri) {
- LogUtil.i("NewVoicemailMediaPlayer.sendIntentToDownloadVoicemail", "uri:%s", uri.toString());
-
- Worker, Pair> getVoicemailSourcePackage =
- this::queryVoicemailSourcePackage;
- SuccessListener> checkVoicemailHasSourcePackageCallBack = this::sendIntent;
-
- DialerExecutorComponent.get(getContext())
- .dialerExecutorFactory()
- .createUiTaskBuilder(fragmentManager, "lookup_voicemail_pkg", getVoicemailSourcePackage)
- .onSuccess(checkVoicemailHasSourcePackageCallBack)
- .build()
- .executeSerial(new Pair<>(getContext(), voicemailUri));
- }
-
- private void sendIntent(Pair booleanUriPair) {
- String sourcePackage = booleanUriPair.first;
- Uri uri = booleanUriPair.second;
- LogUtil.i(
- "NewVoicemailMediaPlayer.sendIntent",
- "srcPkg:%s, uri:%s",
- sourcePackage,
- String.valueOf(uri));
- Intent intent = new Intent(VoicemailContract.ACTION_FETCH_VOICEMAIL, uri);
- intent.setPackage(sourcePackage);
- voicemailLoadingStatusView.setVisibility(VISIBLE);
- getContext().sendBroadcast(intent);
- }
-
- @Nullable
- private Pair queryVoicemailSourcePackage(Pair