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 - Ander Gids Werkgids - Alle kontakte - Voorstelle - Ek (Geen naam nie) - Bekyk kontak - Alle kontakte met foonnommers - Werkprofielkontakte Bekyk opdaterings Slegs toestel, ongesinkroniseerd Naam @@ -113,10 +101,6 @@ Klets met ICQ Klets met Jabber Klets - Alle kontakte - Kontakte in %s - Kontakte in gepasmaakte aansig - Enkel kontak Sorteer volgens Voornaam Van @@ -128,8 +112,6 @@ Vee soektog uit Rekening Gebruik dit altyd vir oproepe - Kies SIM vir hierdie oproep - Onthou hierdie keuse Oproep met \'n nota Tik \'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ər Kataloq İş 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ər Yalnız cihaz, sinxronizasiya edilmir Ad @@ -113,10 +101,6 @@ ICQ üzərindən çat Jabber üzərindən çat Çat - Bütün kontaktlar - %s adındakı kontaktlar - Fərdi baxışdan kontakt - Tək kontakt Bunlardan biri üzrə sırala Ad Soyad @@ -128,8 +112,6 @@ Axtarışı təmizləyin Hesab Həmişə bu zənglər üçün istifadə edin - Bu zəng üçün SIM seçin - Bu seçimi yadda saxlayın Qeyd ilə zəng edin Zə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 - Drugo Direktorijum Direktorijum za Work - Svi kontakti - Predlozi - Ja (Nema imena) - Prikaži kontakt - Svi kontakti sa brojevima telefona - Kontakti sa profila za Work Prikaži ažuriranja Samo na uređaju, ne sinhronizuje se Ime @@ -113,10 +101,6 @@ Započni ćaskanje preko ICQ-a Započni ćaskanje preko Jabber-a Ćaskanje - Svi kontakti - Kontakti u grupi %s - Kontakti u prilagođenom prikazu - Pojedinačni kontakt Sortiraj prema Imenu Prezimenu @@ -128,8 +112,6 @@ Brisanje pretrage Nalog Uvek koristi ovo za pozive - Izaberite SIM za ovaj poziv - Zapamti ovaj izbor Poziv sa beleškom Unesite 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 - Ostalo Imenik Poslovni imenik - Svi kontakti - Prijedlozi - Ja (Bez imena) - Prikaži kontakt - Svi kontakti s brojevima telefona - Kontakti radnog profila Prikaži ažuriranja Samo uređaj, nesinhroniziran Ime @@ -113,10 +101,6 @@ Chat putem aplikacije ICQ Chat putem aplikacije Jabber Chat - Svi kontakti - Kontakti na računu %s - Kontakti u prilagođenom prikazu - Jedan kontakt Poredaj po Ime Prezime @@ -128,8 +112,6 @@ Obriši pretragu Račun Uvijek koristi ovu karticu za pozive - Odaberite SIM za ovaj poziv - Zapamti ovaj odabir Poziv s bilješkom Upiš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 - Altres Directori Directori 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 professional Mostra les actualitzacions Només al dispositiu, no se sincronitza Nom @@ -113,10 +101,6 @@ Xateja amb ICQ Xateja amb Jabber Xat - Tots els contactes - Contactes a %s - Contactes en visualització personalitzada - Un sol contacte Ordena per Nom Cognoms @@ -128,8 +112,6 @@ Esborra la cerca Compte Utilitza sempre per a les trucades - Tria la SIM per a aquesta trucada - Recorda aquesta selecció Trucada amb una nota Escriu 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 - (Žádné jméno) - Zobrazit kontakt - Kontakty s telefonními čísly - Kontakty z pracovního profilu Zobrazit aktualizace Pouze na zařízení, nesynchronizováno Jméno @@ -113,10 +101,6 @@ Chatovat pomocí ICQ Chatovat pomocí Jabberu Chat - Všechny kontakty - Kontakty v účtu %s - Kontakty ve vlastním zobrazení - Jeden kontakt Seřadit podle Jméno Příjmení @@ -128,8 +112,6 @@ Vymazat vyhledávání Účet Vždy používat pro hovory - Vyberte SIM kartu na tento hovor - Zapamatovat tuto volbu Volání s poznámkou Zadejte 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 - Andre Indeks Indeks for arbejde - Alle kontakter - Forslag - Mig (Intet navn) - Se kontaktperson - Alle kontaktpersoner med telefonnumre - Kontaktpersoner for arbejdsprofil Se opdateringer Kun enhed, ikke synkroniseret Navn @@ -113,10 +101,6 @@ Chat ved hjælp af ICQ Chat ved hjælp af Jabber Chat - Alle kontaktpersoner - Kontaktpersoner i %s - Kontakter i tilpasset visning - Enkelt kontaktperson Sortér efter Fornavn Efternavn @@ -128,8 +112,6 @@ Ryd søgning Konto Brug altid ved opkald - Vælg SIM-kort til dette opkald - Husk dette valg Ring med en note Angiv 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 - Andere Verzeichnis Verzeichnis geschäftlicher Kontakte - Alle Kontakte - Vorschläge - Ich (Kein Name) - Kontakt ansehen - Alle Kontakte mit Telefonnummern - Arbeitsprofilkontakte Updates ansehen Nur auf dem Gerät, nicht synchronisiert Name @@ -113,10 +101,6 @@ Über ICQ chatten Über Jabber chatten Chat - Alle Kontakte - Kontakte in %s - Kontakte in benutzerdef. Ansicht - Einzelner Kontakt Sortieren nach Vorname Nachname @@ -128,8 +112,6 @@ Suche zurücksetzen Konto Diese SIM für alle Anrufe verwenden - SIM für diesen Anruf auswählen - Auswahl speichern Mit einer Notiz anrufen Notiz 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 - Other Directory Work directory - All contacts - Suggestions - Me (No name) - View contact - All contacts with phone numbers - Work profile contacts View updates Device only, unsynced Name @@ -113,10 +101,6 @@ Chat using ICQ Chat using Jabber Chat - All contacts - Contacts in %s - Contacts in customised view - Single contact Sort by First name Surname @@ -128,8 +112,6 @@ Clear search Account Always use this for calls - Choose SIM for this call - Remember this choice Call with a note Type 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 - Other Directory Work directory - All contacts - Suggestions - Me (No name) - View contact - All contacts with phone numbers - Work profile contacts View updates Device only, unsynced Name @@ -113,10 +101,6 @@ Chat using ICQ Chat using Jabber Chat - All contacts - Contacts in %s - Contacts in customised view - Single contact Sort by First name Surname @@ -128,8 +112,6 @@ Clear search Account Always use this for calls - Choose SIM for this call - Remember this choice Call with a note Type 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 - Other Directory Work directory - All contacts - Suggestions - Me (No name) - View contact - All contacts with phone numbers - Work profile contacts View updates Device only, unsynced Name @@ -113,10 +101,6 @@ Chat using ICQ Chat using Jabber Chat - All contacts - Contacts in %s - Contacts in customised view - Single contact Sort by First name Surname @@ -128,8 +112,6 @@ Clear search Account Always use this for calls - Choose SIM for this call - Remember this choice Call with a note Type 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 - Otros Directorio Directorio del trabajo - Todos los contactos - Sugerencias - Yo (Sin nombre) - Ver contacto - Todos los contactos con número de teléfono - Contactos del perfil de trabajo Ver actualizaciones Solo en el dispositivo, no sincronizado Nombre @@ -113,10 +101,6 @@ Chat mediante ICQ Chat mediante Jabber Chat - Todos los contactos - Contactos en %s - Contactos en vista personalizada - Contacto único Ordenar por Nombre Apellido @@ -128,8 +112,6 @@ Borrar la búsqueda Cuenta Usar siempre para llamadas - Elige una SIM para realizar esta llamada - Recordar esta opción Llamada con una nota Escribe 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 - Otro Directorio Directorio de trabajo - Todos los contactos - Sugerencias - Yo (Sin nombre) - Ver contacto - Todos los contactos con número - Contactos del perfil de trabajo Ver actualizaciones Solo está en el dispositivo, no se sincroniza Nombre @@ -113,10 +101,6 @@ Chatear con ICQ Chatear con Jabber Chat - Todos los contactos - Contactos en %s - Contactos en vista personalizada - Contacto único Ordenar por Nombre Apellidos @@ -128,8 +112,6 @@ Borrar la búsqueda Cuenta Usar siempre esta para llamadas - Elegir SIM para esta llamada - Recordar esta opción Llamada con una nota Escribe 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 - Muu Kataloog Töökontaktide kataloog - Kõik kontaktid - Soovitused - Mina (Nimi puudub) - Kuva kontakt - Kõik telefoninumbritega kontaktid - Tööprofiili kontaktid Kuva värskendused Ainult seadmes, sünkroonimata Nimi @@ -113,10 +101,6 @@ Vestlus ICQ-d kasutades Vestlus Jabberit kasutades Vestlus - Kõik kontaktid - Konto %s kontaktid - Kontaktid kohandatud vaates - Üks kontakt Sortimisalus Eesnimi Perekonnanimi @@ -128,8 +112,6 @@ Otsingu kustutamine Konto Kasuta helistamiseks alati seda - Valige selle kõne jaoks SIM-kaart - Jäta valik meelde Kõne koos märkusega Sisestage 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 bat Direktorioa Laneko kontaktuak - Kontaktu guztiak - Iradokizunak - Ni (Izenik ez) - Ikusi kontaktua - Telefono-zenbakiak dituzten kontaktu guztiak - Laneko profileko kontaktuak Ikusi berritasunak Gailuan soilik egongo da; ez da sinkronizatuko Izena @@ -113,10 +101,6 @@ Txateatu ICQ bidez Txateatu Jabber bidez Txateatu - Kontaktu guztiak - Kontu honetako kontaktuak: %s - Ikuspegi pertsonalizatuko kontaktuak - Kontaktu bakarra Ordenatzeko irizpidea Izena Abizena @@ -128,8 +112,6 @@ Garbitu bilaketa Kontua Erabili beti hau deietarako - Aukeratu dei hau egiteko SIM txartela - Gogoratu aukera hau Egin deia oharrarekin Idatzi 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 - Muu Osoitekirja Työhakemisto - Kaikki yhteystiedot - Ehdotukset - Minä (Ei nimeä) - Näytä yhteystieto - Kaikki kontaktit, joilla on puhelinnumero - Työprofiilin yhteystiedot Näytä päivitykset Vain laitteessa, ei synkronoida Nimi @@ -113,10 +101,6 @@ Keskustele ICQ:n avulla Keskustele Jabberin avulla Keskustelu - Yhteystiedot - Yhteystiedot tilissä %s - Muokatun näkymän yhteystiedot - Yksi yhteystieto Lajitteluperuste Etunimi Sukunimi @@ -128,8 +112,6 @@ Tyhjennä haku Tili Käytä kaikille puheluille - Valitse SIM tätä puhelua varten - Muista valinta Soita ja lähetä muistiinpano Kirjoita 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 - Autre Répertoire Annuaire 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 professionnel Afficher les mises à jour Appareil uniquement, sans synchronisation Nom @@ -113,10 +101,6 @@ Clavarder via ICQ Clavarder via Jabber Clavarder - Tous les contacts - Contacts du compte \"%s\" - Contacts en affichage personnalisé - Contact Trier par Prénom Nom de famille @@ -128,8 +112,6 @@ Effacer les termes de recherche Compte Toujours l\'utiliser pour les appels - Choisir une carte SIM pour cet appel - Mémoriser ce choix Appeler avec une note Tapez 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 - Autre Répertoire Contacts 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 professionnel Afficher les mises à jour Appareil uniquement, non synchronisé Nom @@ -113,10 +101,6 @@ Chatter via ICQ Chatter via Jabber Chat - Tous les contacts - Contacts du compte \"%s\" - Contacts avec affichage perso. - Contact Trier par Prénom Nom @@ -128,8 +112,6 @@ Effacer la recherche Compte Toujours l\'utiliser pour les appels - Choisir la carte SIM pour cet appel - Mémoriser ce choix Appeler avec une note Saisissez 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 - Outro Directorio Directorio 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 traballo Ver actualizacións Só no dispositivo, sen sincronizar Nome @@ -113,10 +101,6 @@ Chatear con ICQ Chatear con Jabber Chatear - Todos os contactos - Contactos en %s - Contactos na vista personalizada - Un só contacto Ordenar por Nome Apelidos @@ -128,8 +112,6 @@ Borrar busca Conta Usar sempre para as chamadas - Escolle a SIM para esta chamada - Lembrar esta opción Chamar cunha nota Escribe 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 - Drugo Direktorij Poslovni direktorij - Svi kontakti - Prijedlozi - Ja (Bez imena) - Prikaži kontakt - Svi kontakti s telefonskim brojevima - Poslovni kontakti Prikaži ažuriranja Samo uređaj, bez sinkronizacije Ime @@ -113,10 +101,6 @@ Chatajte pomoću ICQ-a Chatajte uz Jabber Chat - Svi kontakti - Kontakti na računu %s - Kontakti u prilagođenom prikazu - Jedan kontakt Poredaj po Ime Prezime @@ -128,8 +112,6 @@ Brisanje pretraživanja Račun Uvijek upotrebljavaj za pozive - Odabir SIM-a za ovaj poziv - Zapamti ovaj odabir Poziv uz bilješku Napiš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éb Címtár Munkahelyi 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évjegyek Frissítések megtekintése Csak az eszközön, nincs szinkronizálva Név @@ -113,10 +101,6 @@ Csevegés az ICQ-n Csevegés Jabberen Csevegés - Az összes névjegy - Ismerősök itt: %s - Egyéni nézet névjegyei - Egyetlen névjegy Rendezés alapja Utónév Vezetéknév @@ -128,8 +112,6 @@ Keresés törlése Fiók Mindig ezt használja hívásokhoz - SIM-kártya kiválasztása a híváshoz - Választás megjegyzése Hí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 - Lainnya Direktori Direktori kerja - Semua kontak - Saran - Saya (Tanpa nama) - Lihat kontak - Semua kontak dengan nomor telepon - Kontak profil kerja Lihat pembaruan Hanya perangkat, tidak disinkronkan Nama @@ -113,10 +101,6 @@ Ngobrol menggunakan ICQ Ngobrol menggunakan Jabber Ngobrol - Semua kontak - Kontak di %s - Kontak dalam tampilan khusus - Kontak tunggal Urutkan menurut Nama depan Nama belakang @@ -128,8 +112,6 @@ Hapus penelusuran Akun Selalu gunakan ini untuk telepon - Pilih SIM untuk panggilan ini - Ingat pilihan ini Telepon dengan catatan Ketik 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ði Skoða uppfærslur Eingöngu á tæki, ósamstillt Nafn @@ -113,10 +101,6 @@ Spjalla með ICQ Spjalla með Jabber Spjalla - Allir tengiliðir - Tengiliðir á %s - Tengiliðir á sérsniðnu yfirliti - Einn tengiliður Raða eftir Fornafn Eftirnafn @@ -128,8 +112,6 @@ Hreinsa leit Reikningur Nota þetta alltaf fyrir símtöl - Veldu SIM-kort fyrir þetta símtal - Muna þetta val Símtal með texta Sláð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 - Altro Directory Directory di lavoro - Tutti i contatti - Suggerimenti - Io (Nessun nome) - Visualizza contatto - Tutti i contatti con numeri di telefono - Contatti del profilo di lavoro Visualizza aggiornamenti Solo dispositivo, non sincronizzato Nome @@ -113,10 +101,6 @@ Chatta su ICQ Chatta su Jabber Chat - Tutti i contatti - Contatti in %s - Contatti in visualizzazione personalizzata - Contatto singolo Ordina per Nome Cognome @@ -128,8 +112,6 @@ Cancella ricerca Account Usa sempre questa per chiamare - Scegli la SIM per questa chiamata - Memorizza questa scelta Chiama e invia una nota Digita 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 - Kita Katalogas Darbo katalogas - Visi kontaktai - Pasiūlymai - (Nėra pavadinimo) - Žr. išsamią kontaktinę informaciją - Visi kontaktai su telefonų numeriais - Darbo profilio kontaktai Peržiūrėti naujinius Tik įrenginys, nesinchronizuojama Pavadinimas @@ -113,10 +101,6 @@ Kalbėti naudojant ICQ Kalbėti naudojant „Jabber“ Pokalbis - Visi kontaktai - %s kontaktai - Kontaktai tinkintame rodinyje - Vienas kontaktas Rūšiuoti pagal Vardas Pavardė @@ -128,8 +112,6 @@ Išvalyti paiešką Paskyra Visada 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 - Cits Katalogs Darba katalogs - Visas kontaktpersonas - Ieteikumi - Es (Nav vārda) - Skatīt kontaktpersonu - Visas kontaktpersonas ar tālruņa numuriem - Kontaktpersonas darba profilā Skatīt atjauninājumus Tikai ierīcē, netiek sinhronizēta Vārds un uzvārds @@ -113,10 +101,6 @@ Tērzēt, izmantojot ICQ Tērzēt, izmantojot Jabber Tērzēt - Visas kontaktpersonas - Kontaktpersonas sarakstā %s - Lietotāju filtrs - Viena kontaktpersona Kārtot pēc Vārds Uzvārds @@ -128,8 +112,6 @@ Notīrīt meklēšanas lauku Konts Vienmēr izmantot zvaniem - SIM kartes izvēle šim zvanam - Atcerēties šo izvēli Zvanīt ar piezīmi Ierakstiet 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-lain Direktori Direktori kerja - Semua kenalan - Cadangan - Saya (Tiada nama) - Lihat kenalan - Semua kenalan dengan nombor telefon - Kenalan profil kerja Lihat kemas kini Peranti sahaja, tidak disegerakkan Nama @@ -113,10 +101,6 @@ Sembang menggunakan ICQ Sembang menggunakan Jabber Sembang - Semua kenalan - Kenalan dalam %s - Kenalan dalam paparan tersuai - Kenalan tunggal Isih mengikut Nama pertama Nama keluarga @@ -128,8 +112,6 @@ Kosongkan carian Akaun Sentiasa gunakan ini untuk panggilan - Pilih SIM untuk panggilan ini - Ingat pilihan ini Panggilan dengan nota Taip 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 - Annen Katalog Jobbkatalog - Alle kontakter - Forslag - Meg (Uten navn) - Se kontakten - Alle kontakter med telefonnumre - Jobbprofilkontakter Se oppdateringer Bare på enheten din, uten synkronisering Navn @@ -113,10 +101,6 @@ Nettprat med ICQ Nettprat med Jabber Nettprat - Alle kontakter - Kontakter i %s - Kontakter i tilpasset visning - Enkeltkontakt Sortér etter Fornavn Etternavn @@ -128,8 +112,6 @@ Slett søk Konto Bruk alltid dette for samtaler - Velg SIM-kort for dette anropet - Husk dette valget Ring med et notat Skriv 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 - Overig Directory Zakelijke contactenlijst - Alle contacten - Suggesties - Ik (Geen naam) - Contact weergeven - Alle contacten met telefoonnummers - Contacten uit werkprofiel Updates bekijken Alleen op apparaat, niet gesynchroniseerd Naam @@ -113,10 +101,6 @@ Chatten via ICQ Chatten via Jabber Chat - Alle contacten - Contacten in %s - Contacten in aangepaste weergave - Eén contact Sorteren op Voornaam Achternaam @@ -128,8 +112,6 @@ Zoekopdracht wissen Account Altijd gebruiken voor oproepen - Simkaart voor deze oproep kiezen - Deze keuze onthouden Oproep met een notitie Typ 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 - Annen Katalog Jobbkatalog - Alle kontakter - Forslag - Meg (Uten navn) - Se kontakten - Alle kontakter med telefonnumre - Jobbprofilkontakter Se oppdateringer Bare på enheten din, uten synkronisering Navn @@ -113,10 +101,6 @@ Nettprat med ICQ Nettprat med Jabber Nettprat - Alle kontakter - Kontakter i %s - Kontakter i tilpasset visning - Enkeltkontakt Sortér etter Fornavn Etternavn @@ -128,8 +112,6 @@ Slett søk Konto Bruk alltid dette for samtaler - Velg SIM-kort for dette anropet - Husk dette valget Ring med et notat Skriv 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 - Inny Katalog Katalog służbowy - Wszystkie kontakty - Sugestie - Ja (Bez nazwy) - Pokaż kontakt - Wszystkie kontakty z numerami telefonów - Kontakty w profilu służbowym Pokaż aktualizacje Tylko na urządzeniu – bez synchronizacji Imię i nazwisko @@ -113,10 +101,6 @@ Czat w ICQ Czat w Jabberze Czat - Wszystkie kontakty - Kontakty na koncie %s - Kontakty spełniające kryteria - Jeden kontakt Sortuj według Imię Nazwisko @@ -128,8 +112,6 @@ Wyczyść wyszukiwanie Konto Zawsze używaj do połączeń - Wybierz kartę SIM, aby zadzwonić - Zapamiętaj ten wybór Połą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 - Outros Diretório Diretó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 trabalho Ver atualizações Somente no dispositivo, não sincronizado Nome @@ -113,10 +101,6 @@ Bater papo usando o ICQ Bater papo usando o Jabber Bate-papo - Todos os contatos - Contatos em %s - Cont. na vis. pers. - Contato único Classificar por Nome Sobrenome @@ -128,8 +112,6 @@ Limpar pesquisa Conta Sempre usar esta opção para chamadas - Escolher o SIM para esta chamada - Lembrar desta escolha Chamada com uma nota Escreva 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 - Outro Diretório Diretó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 trabalho Ver atualizações Apenas no dispositivo, não sincronizado Nome @@ -113,10 +101,6 @@ Chat através do ICQ Chat através do Jabber Chat - Todos os contactos - Contactos em %s - Contactos na vista personalizada - Contacto único Ordenar por Nome próprio Apelido @@ -128,8 +112,6 @@ Limpar pesquisa Conta Utilizar sempre este para chamadas - Escolher o SIM para esta chamada - Lembrar esta escolha Ligar com uma nota Escrever 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 - Outros Diretório Diretó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 trabalho Ver atualizações Somente no dispositivo, não sincronizado Nome @@ -113,10 +101,6 @@ Bater papo usando o ICQ Bater papo usando o Jabber Bate-papo - Todos os contatos - Contatos em %s - Cont. na vis. pers. - Contato único Classificar por Nome Sobrenome @@ -128,8 +112,6 @@ Limpar pesquisa Conta Sempre usar esta opção para chamadas - Escolher o SIM para esta chamada - Lembrar desta escolha Chamada com uma nota Escreva 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 - Altul Director Directorul 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 serviciu Afișați actualizări Numai pe dispozitiv, nesincronizat Nume @@ -113,10 +101,6 @@ Conversați prin ICQ Conversați prin Jabber Conversați prin chat - Toată agenda - Agenda din %s - Agenda în afișarea personalizată - O singură persoană de contact Sortați după Prenume Nume @@ -128,8 +112,6 @@ Ștergeți căutarea Cont Utilizați mereu pentru apeluri - Alegeți cardul SIM pentru acest apel - Rețineți această alegere Apelaț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ár Pracovný adresár - Všetky kontakty - Návrhy - Ja (Bez mena) - Zobraziť kontakt - Všetky kontakty s telefónnymi číslami - Kontakty v pracovnom profile Zobraziť aktualizácie Len v zariadení, bez synchronizácie Meno @@ -113,10 +101,6 @@ Zhovárať sa pomocou služby ICQ Zhovárať sa pomocou služby Jabber Četovať - Všetky kontakty - Kontakty v účte %s - Kontakty vo vlastnom zobrazení - Jednotlivý kontakt Zoradiť podľa Krstné meno Priezvisko @@ -128,8 +112,6 @@ Vymazať vyhľadávanie Účet Vždy používať pre hovory - Vyberte SIM kartu na tento hovor - Zapamätať si túto voľbu Hovor s poznámkou Napíš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 - Drugo Imenik Delovni imenik - Vsi stiki - Predlogi - Jaz (Ni imena) - Ogled stika - Vsi stiki s telefonskimi številkami - Stiki za delovni profil Prikaži posodobitve Samo v napravi; se ne sinhronizira Ime @@ -113,10 +101,6 @@ Klepet s storitvijo ICQ Klepet s storitvijo Jabber Klepet - Vsi stiki - Stiki v %s - Stiki v pogledu po meri - Posamezen stik Razvrsti glede na Ime Priimek @@ -128,8 +112,6 @@ Počisti iskalno polje Račun Vedno uporabi to možnost za klice - Izbira kartice SIM za ta klic - Zapomni si to izbiro Klic z zapiskom Vnesite 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ër Direktoria Direktoria e punës - Të gjitha kontaktet - Sugjerimet - Unë (Pa emër) - Shiko kontaktin - Të gjitha kontaktet me numra telefoni - Kontaktet e profilit të punës Shiko përditësimet Vetëm pajisja, e pasinkronizuar Emri @@ -113,10 +101,6 @@ Bisedo me ICQ Bisedo me Jabber Bisedo - Të gjitha kontaktet - Kontaktet në %s - Pamja e personalizuar - Një kontakt i vetëm Rendit sipas Emri Mbiemri @@ -128,8 +112,6 @@ Pastro kërkimin Llogaria Përdor gjithmonë këtë për telefonatat - Zgjidh kartën SIM për këtë telefonatë - Kujtoje këtë zgjedhje Telefono me shënim Shkruaj 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 - Övrigt Katalog Jobbkatalog - Alla kontakter - Förslag - Jag (Inget namn) - Visa kontakten - Alla kontakter med telefonnummer - Kontakter i jobbprofilen Visa uppdateringar Endast enhet, osynkroniserad Namn @@ -113,10 +101,6 @@ Chatta med ICQ Chatta med Jabber Chatt - Alla kontakter - Kontakter i %s - Kontakter i anpassad vy - En kontakt Sortera efter Förnamn Efternamn @@ -128,8 +112,6 @@ Rensa sökning Konto Använd alltid för samtal - Välj SIM-kort till det här samtalet - Kom ihåg det här valet Ring med anteckning Gö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 - Nyingineyo Saraka Anwani za kazi - Anwani zote - Mapendekezo - Mimi (Hakuna jina) - Angalia maelezo ya mawasiliano - Anwani zote zilizo na nambari ya simu - Anwani za watu wa kazini Ona sasisho Kwenye kifaa tu, haijasawazishwa Jina @@ -113,10 +101,6 @@ Piga gumzo kutumia ICQ Piga gumzo kutumia Jabber Gumzo - Anwani zote - Anwani kwenye %s - Anwani katika mwoneko maalum - Anwani moja Panga kulingana na Jina la kwanza Jina la mwisho @@ -128,8 +112,6 @@ Futa utafutaji Akaunti Tumia hii kwa simu wakati wote - Chagua SIM kwa ajili ya simu hii - Kumbuka chaguo hili Piga simu inayoambatana na dokezo Andika 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 kinontak Iki-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 pa Direktoryo Directory 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 trabaho Tingnan ang mga update Device lang, inalis sa pagkaka-sync Pangalan @@ -113,10 +101,6 @@ Makipag-chat gamit ang ICQ Makipag-chat gamit ang Jabber Chat - Lahat ng contact - Mga contact sa %s - Mga contact sa custom na view - Iisang contact Uriin ayon sa Pangalan Apelyido @@ -128,8 +112,6 @@ I-clear ang paghahanap Account Gamitin ito palagi sa mga tawag - Pumili ng SIM para sa tawag na ito - Tandaan ang pagpipiliang ito Tumawag nang may kasamang tala Mag-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ğer Dizin İş dizini - Tüm kişiler - Öneriler - Ben (Adsız) - Kişiyi görüntüle - Telefon numarası olan tüm kişiler - İş profili kişileri Güncellemeleri görüntüle Yalnızca cihaz, senkronize edilmemiş Adı @@ -113,10 +101,6 @@ ICQ kullanarak sohbet et Jabber kullanarak sohbet et Sohbet - Tüm kişiler - %s hesabındaki kişiler - Özel görünümdeki kişiler - Tek kişi Sıralama ölçütü Ad Soyadı @@ -128,8 +112,6 @@ Aramayı temizle Hesap Çağrılar için her zaman bunu kullan - Bu görüşme için kullanılacak SIM\'i seçin - Bu tercihi hatırla Notla 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 - Boshqa Direktoriya Ishchi katalogi - Barcha kontaktlar - Takliflar - Men (Ismi yo‘q) - Kontaktni ko‘rish - Telefon raqamli kontaktlar - Ishchi profili kontaktlari Yangilanishlarni ko‘rish Faqat qurilmalarda, sinxronlanmaydi Ism @@ -113,10 +101,6 @@ ICQ’da suhbatlashish Jabber’da suhbatlashish Suhbatlashish - Barcha kontaktlar - %sdagi kontaktlar - Filtrlangan kontaktlar - Bitta kontakt Saralash Ismi asosida Familiyasi asosida @@ -128,8 +112,6 @@ Izlashni tozalash Hisob Har doim qo‘ng‘iroqlar u-n foyd-sin - Chaqiruv uchun SIM kartani tanlang - Shu tanlov eslab qolinsin Qo‘ng‘iroq va izoh Qo‘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ác Thư mục Thư 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ệc Xem thông tin cập nhật Chỉ trên thiết bị, chưa đồng bộ hóa Tên @@ -113,10 +101,6 @@ Trò chuyện sử dụng ICQ Trò chuyện sử dụng Jabber Trò 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 theo Tên Họ @@ -128,8 +112,6 @@ Xóa tìm kiếm Tài khoản Luô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ày Gọ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 - Okunye Uhla lwemibhalo Uhla lwemibhalo lomsebenzi - Bonke othintana nabo - Iziphakamiso - Mina (Alikho igama) - Buka oxhumana naye - Bonke othintana nabo kanye nezinombolo zabo zefoni - Oxhumana nabo bephrofayela yomsebenzi Buka okubuyekeziwe Idivayisi kuphela, akuvunyelanisiwe Igama @@ -113,10 +101,6 @@ Xoxa usebenzisa i-ICQ Xoxa usebenzisa i-Jabber Xoxa - Bonke oxhumana nabo - Oxhumana nabo ku-%s - Oxhumana nabo ekubukweni okwenziwe ngendlela oyifisayo - Oyedwa oxhumana naye Hlunga nge- Igama lokuqala Isibongo @@ -128,8 +112,6 @@ Sula usesho I-Akhawunti Njalo sebenzisa lokhu kumakholi - Khetha i-SIM yale kholi - Khumbula lokhu okukhethiwe Shaya ngenothi Thayipha 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 duplicates = new LongSparseArray<>(cursor.getCount()); - - // Track the length of {@link #mContactEntries} and compare to {@link #TILES_SOFT_LIMIT}. - int counter = 0; - - // Data for logging - int starredContactsCount = 0; - int pinnedContactsCount = 0; - int multipleNumbersContactsCount = 0; - int contactsWithPhotoCount = 0; - int contactsWithNameCount = 0; - int lightbringerReachableContactsCount = 0; - - // The cursor should not be closed since this is invoked from a CursorLoader. - if (cursor.moveToFirst()) { - int starredColumn = cursor.getColumnIndexOrThrow(Contacts.STARRED); - int contactIdColumn = cursor.getColumnIndexOrThrow(Phone.CONTACT_ID); - int photoUriColumn = cursor.getColumnIndexOrThrow(Contacts.PHOTO_URI); - int lookupKeyColumn = cursor.getColumnIndexOrThrow(Contacts.LOOKUP_KEY); - int pinnedColumn = cursor.getColumnIndexOrThrow(Contacts.PINNED); - int nameColumn = cursor.getColumnIndexOrThrow(Contacts.DISPLAY_NAME_PRIMARY); - int nameAlternativeColumn = cursor.getColumnIndexOrThrow(Contacts.DISPLAY_NAME_ALTERNATIVE); - int isDefaultNumberColumn = cursor.getColumnIndexOrThrow(Phone.IS_SUPER_PRIMARY); - int phoneTypeColumn = cursor.getColumnIndexOrThrow(Phone.TYPE); - int phoneLabelColumn = cursor.getColumnIndexOrThrow(Phone.LABEL); - int phoneNumberColumn = cursor.getColumnIndexOrThrow(Phone.NUMBER); - do { - final int starred = cursor.getInt(starredColumn); - final long id; - - // We display a maximum of TILES_SOFT_LIMIT contacts, or the total number of starred - // whichever is greater. - if (starred < 1 && counter >= TILES_SOFT_LIMIT) { - break; - } else { - id = cursor.getLong(contactIdColumn); - } - - final ContactEntry existing = (ContactEntry) duplicates.get(id); - if (existing != null) { - // Check if the existing number is a default number. If not, clear the phone number - // and label fields so that the disambiguation dialog will show up. - if (!existing.isDefaultNumber) { - existing.phoneLabel = null; - existing.phoneNumber = null; - } - continue; - } - - final String photoUri = cursor.getString(photoUriColumn); - final String lookupKey = cursor.getString(lookupKeyColumn); - final int pinned = cursor.getInt(pinnedColumn); - final String name = cursor.getString(nameColumn); - final String nameAlternative = cursor.getString(nameAlternativeColumn); - final boolean isStarred = cursor.getInt(starredColumn) > 0; - final boolean isDefaultNumber = cursor.getInt(isDefaultNumberColumn) > 0; - - final ContactEntry contact = new ContactEntry(); - - contact.id = id; - contact.namePrimary = - (!TextUtils.isEmpty(name)) ? name : resources.getString(R.string.missing_name); - contact.nameAlternative = - (!TextUtils.isEmpty(nameAlternative)) - ? nameAlternative - : resources.getString(R.string.missing_name); - contact.photoUri = (photoUri != null ? Uri.parse(photoUri) : null); - contact.lookupKey = lookupKey; - contact.lookupUri = - ContentUris.withAppendedId( - Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey), id); - contact.isFavorite = isStarred; - contact.isDefaultNumber = isDefaultNumber; - - // Set phone number and label - final int phoneNumberType = cursor.getInt(phoneTypeColumn); - final String phoneNumberCustomLabel = cursor.getString(phoneLabelColumn); - contact.phoneLabel = - (String) Phone.getTypeLabel(resources, phoneNumberType, phoneNumberCustomLabel); - contact.phoneNumber = cursor.getString(phoneNumberColumn); - - contact.pinned = pinned; - contactEntries.add(contact); - - // Set counts for logging - if (isStarred) { - // mNumStarred might be larger than the number of visible starred contact, - // since it includes invisible ones (starred contact with no phone number). - starredContactsCount++; - } - if (pinned != PinnedPositions.UNPINNED) { - pinnedContactsCount++; - } - if (!TextUtils.isEmpty(name)) { - contactsWithNameCount++; - } - if (photoUri != null) { - contactsWithPhotoCount++; - } - - duplicates.put(id, contact); - - counter++; - } while (cursor.moveToNext()); - } - - awaitingRemove = false; - - arrangeContactsByPinnedPosition(contactEntries); - - ShortcutRefresher.refresh(context, contactEntries); - notifyDataSetChanged(); - - Duo duo = DuoComponent.get(context).getDuo(); - for (ContactEntry contact : contactEntries) { - if (contact.phoneNumber == null) { - multipleNumbersContactsCount++; - } else if (duo.isReachable(context, contact.phoneNumber)) { - lightbringerReachableContactsCount++; - } - } - - Logger.get(context) - .logSpeedDialContactComposition( - counter, - starredContactsCount, - pinnedContactsCount, - multipleNumbersContactsCount, - contactsWithPhotoCount, - contactsWithNameCount, - lightbringerReachableContactsCount); - // Logs for manual testing - LogUtil.v("PhoneFavoritesTileAdapter.saveCursorToCache", "counter: %d", counter); - LogUtil.v( - "PhoneFavoritesTileAdapter.saveCursorToCache", - "starredContactsCount: %d", - starredContactsCount); - LogUtil.v( - "PhoneFavoritesTileAdapter.saveCursorToCache", - "pinnedContactsCount: %d", - pinnedContactsCount); - LogUtil.v( - "PhoneFavoritesTileAdapter.saveCursorToCache", - "multipleNumbersContactsCount: %d", - multipleNumbersContactsCount); - LogUtil.v( - "PhoneFavoritesTileAdapter.saveCursorToCache", - "contactsWithPhotoCount: %d", - contactsWithPhotoCount); - LogUtil.v( - "PhoneFavoritesTileAdapter.saveCursorToCache", - "contactsWithNameCount: %d", - contactsWithNameCount); - } - - /** Iterates over the {@link Cursor} Returns position of the first NON Starred Contact */ - private int getNumStarredContacts(Cursor cursor) { - if (cursor == null) { - return 0; - } - - if (cursor.moveToFirst()) { - int starredColumn = cursor.getColumnIndex(Contacts.STARRED); - do { - if (cursor.getInt(starredColumn) == 0) { - return cursor.getPosition(); - } - } while (cursor.moveToNext()); - } - // There are not NON Starred contacts in cursor - // Set divider position to end - return cursor.getCount(); - } - - /** Returns the number of frequents that will be displayed in the list. */ - int getNumFrequents() { - return numFrequents; - } - - @Override - public int getCount() { - if (contactEntries == null) { - return 0; - } - - return contactEntries.size(); - } - - /** - * Returns an ArrayList of the {@link ContactEntry}s that are to appear on the row for the given - * position. - */ - @Override - public ContactEntry getItem(int position) { - return contactEntries.get(position); - } - - /** - * For the top row of tiled contacts, the item id is the position of the row of contacts. For - * frequent contacts, the item id is the maximum number of rows of tiled contacts + the actual - * contact id. Since contact ids are always greater than 0, this guarantees that all items within - * this adapter will always have unique ids. - */ - @Override - public long getItemId(int position) { - return getItem(position).id; - } - - @Override - public boolean hasStableIds() { - return true; - } - - @Override - public boolean areAllItemsEnabled() { - return true; - } - - @Override - public boolean isEnabled(int position) { - return getCount() > 0; - } - - @Override - public void notifyDataSetChanged() { - if (DEBUG) { - LogUtil.v(TAG, "notifyDataSetChanged"); - } - super.notifyDataSetChanged(); - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - if (DEBUG) { - LogUtil.v(TAG, "get view for " + position); - } - - PhoneFavoriteTileView tileView = null; - - if (convertView instanceof PhoneFavoriteTileView) { - tileView = (PhoneFavoriteTileView) convertView; - } - - if (tileView == null) { - tileView = - (PhoneFavoriteTileView) View.inflate(context, R.layout.phone_favorite_tile_view, null); - } - tileView.setPhotoManager(photoManager); - tileView.setListener(listener); - tileView.loadFromContact(getItem(position)); - tileView.setPosition(position); - return tileView; - } - - @Override - public int getViewTypeCount() { - return ViewTypes.COUNT; - } - - @Override - public int getItemViewType(int position) { - return ViewTypes.TILE; - } - - /** - * Temporarily removes a contact from the list for UI refresh. Stores data for this contact in the - * back-up variable. - * - * @param index Position of the contact to be removed. - */ - private void popContactEntry(int index) { - if (isIndexInBound(index)) { - draggedEntry = contactEntries.get(index); - draggedEntryIndex = index; - dragEnteredEntryIndex = index; - markDropArea(dragEnteredEntryIndex); - } - } - - /** - * @param itemIndex Position of the contact in {@link #contactEntries}. - * @return True if the given index is valid for {@link #contactEntries}. - */ - boolean isIndexInBound(int itemIndex) { - return itemIndex >= 0 && itemIndex < contactEntries.size(); - } - - /** - * Mark the tile as drop area by given the item index in {@link #contactEntries}. - * - * @param itemIndex Position of the contact in {@link #contactEntries}. - */ - private void markDropArea(int itemIndex) { - if (draggedEntry != null - && isIndexInBound(dragEnteredEntryIndex) - && isIndexInBound(itemIndex)) { - dataSetChangedListener.cacheOffsetsForDatasetChange(); - // Remove the old placeholder item and place the new placeholder item. - contactEntries.remove(dragEnteredEntryIndex); - dragEnteredEntryIndex = itemIndex; - contactEntries.add(dragEnteredEntryIndex, ContactEntry.BLANK_ENTRY); - ContactEntry.BLANK_ENTRY.id = draggedEntry.id; - dataSetChangedListener.onDataSetChangedForAnimation(); - notifyDataSetChanged(); - } - } - - /** Drops the temporarily removed contact to the desired location in the list. */ - private void handleDrop() { - boolean changed = false; - if (draggedEntry != null) { - if (isIndexInBound(dragEnteredEntryIndex) && dragEnteredEntryIndex != draggedEntryIndex) { - // Don't add the ContactEntry here (to prevent a double animation from occuring). - // When we receive a new cursor the list of contact entries will automatically be - // populated with the dragged ContactEntry at the correct spot. - dropEntryIndex = dragEnteredEntryIndex; - contactEntries.set(dropEntryIndex, draggedEntry); - dataSetChangedListener.cacheOffsetsForDatasetChange(); - changed = true; - } else if (isIndexInBound(draggedEntryIndex)) { - // If {@link #mDragEnteredEntryIndex} is invalid, - // falls back to the original position of the contact. - contactEntries.remove(dragEnteredEntryIndex); - contactEntries.add(draggedEntryIndex, draggedEntry); - dropEntryIndex = draggedEntryIndex; - notifyDataSetChanged(); - } - - if (changed && dropEntryIndex < PIN_LIMIT) { - ArrayList operations = - getReflowedPinningOperations(contactEntries, draggedEntryIndex, dropEntryIndex); - StrictModeUtils.bypass(() -> updateDatabaseWithPinnedPositions(operations)); - } - draggedEntry = null; - } - } - - private void updateDatabaseWithPinnedPositions(ArrayList operations) { - if (operations.isEmpty()) { - // Nothing to update - return; - } - try { - context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operations); - Logger.get(context).logInteraction(InteractionEvent.Type.SPEED_DIAL_PIN_CONTACT); - } catch (RemoteException | OperationApplicationException e) { - LogUtil.e(TAG, "Exception thrown when pinning contacts", e); - } - } - - /** - * Used when a contact is removed from speeddial. This will both unstar and set pinned position of - * the contact to PinnedPosition.DEMOTED so that it doesn't show up anymore in the favorites list. - */ - private void unstarAndUnpinContact(Uri contactUri) { - final ContentValues values = new ContentValues(2); - values.put(Contacts.STARRED, false); - values.put(Contacts.PINNED, PinnedPositions.DEMOTED); - StrictModeUtils.bypass( - () -> context.getContentResolver().update(contactUri, values, null, null)); - } - - /** - * Given a list of contacts that each have pinned positions, rearrange the list (destructive) such - * that all pinned contacts are in their defined pinned positions, and unpinned contacts take the - * spaces between those pinned contacts. Demoted contacts should not appear in the resulting list. - * - *

This method also updates the pinned positions of pinned contacts so that they are all unique - * positive integers within range from 0 to toArrange.size() - 1. This is because when the contact - * entries are read from the database, it is possible for them to have overlapping pin positions - * due to sync or modifications by third party apps. - */ - @VisibleForTesting - private void arrangeContactsByPinnedPosition(ArrayList toArrange) { - final PriorityQueue pinnedQueue = - new PriorityQueue<>(PIN_LIMIT, contactEntryComparator); - - final List unpinnedContacts = new LinkedList<>(); - - final int length = toArrange.size(); - for (int i = 0; i < length; i++) { - final ContactEntry contact = toArrange.get(i); - // Decide whether the contact is hidden(demoted), pinned, or unpinned - if (contact.pinned > PIN_LIMIT || contact.pinned == PinnedPositions.UNPINNED) { - unpinnedContacts.add(contact); - } else if (contact.pinned > PinnedPositions.DEMOTED) { - // Demoted or contacts with negative pinned positions are ignored. - // Pinned contacts go into a priority queue where they are ranked by pinned - // position. This is required because the contacts provider does not return - // contacts ordered by pinned position. - pinnedQueue.add(contact); - } - } - - final int maxToPin = Math.min(PIN_LIMIT, pinnedQueue.size() + unpinnedContacts.size()); - - toArrange.clear(); - for (int i = 1; i < maxToPin + 1; i++) { - if (!pinnedQueue.isEmpty() && pinnedQueue.peek().pinned <= i) { - final ContactEntry toPin = pinnedQueue.poll(); - toPin.pinned = i; - toArrange.add(toPin); - } else if (!unpinnedContacts.isEmpty()) { - toArrange.add(unpinnedContacts.remove(0)); - } - } - - // If there are still contacts in pinnedContacts at this point, it means that the pinned - // positions of these pinned contacts exceed the actual number of contacts in the list. - // For example, the user had 10 frequents, starred and pinned one of them at the last spot, - // and then cleared frequents. Contacts in this situation should become unpinned. - while (!pinnedQueue.isEmpty()) { - final ContactEntry entry = pinnedQueue.poll(); - entry.pinned = PinnedPositions.UNPINNED; - toArrange.add(entry); - } - - // Any remaining unpinned contacts that weren't in the gaps between the pinned contacts - // now just get appended to the end of the list. - toArrange.addAll(unpinnedContacts); - } - - /** - * Given an existing list of contact entries and a single entry that is to be pinned at a - * particular position, return a list of {@link ContentProviderOperation}s that contains new - * pinned positions for all contacts that are forced to be pinned at new positions, trying as much - * as possible to keep pinned contacts at their original location. - * - *

At this point in time the pinned position of each contact in the list has already been - * updated by {@link #arrangeContactsByPinnedPosition}, so we can assume that all pinned - * positions(within {@link #PIN_LIMIT} are unique positive integers. - */ - @VisibleForTesting - private ArrayList getReflowedPinningOperations( - ArrayList list, int oldPos, int newPinPos) { - final ArrayList positions = new ArrayList<>(); - final int lowerBound = Math.min(oldPos, newPinPos); - final int upperBound = Math.max(oldPos, newPinPos); - for (int i = lowerBound; i <= upperBound; i++) { - final ContactEntry entry = list.get(i); - - // Pinned positions in the database start from 1 instead of being zero-indexed like - // arrays, so offset by 1. - final int databasePinnedPosition = i + 1; - if (entry.pinned == databasePinnedPosition) { - continue; - } - - final Uri uri = Uri.withAppendedPath(Contacts.CONTENT_URI, String.valueOf(entry.id)); - final ContentValues values = new ContentValues(); - values.put(Contacts.PINNED, databasePinnedPosition); - positions.add(ContentProviderOperation.newUpdate(uri).withValues(values).build()); - } - return positions; - } - - @Override - public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) { - setInDragging(true); - final int itemIndex = contactEntries.indexOf(view.getContactEntry()); - popContactEntry(itemIndex); - } - - @Override - public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view) { - if (view == null) { - // The user is hovering over a view that is not a contact tile, no need to do - // anything here. - return; - } - final int itemIndex = contactEntries.indexOf(view.getContactEntry()); - if (inDragging - && dragEnteredEntryIndex != itemIndex - && isIndexInBound(itemIndex) - && itemIndex < PIN_LIMIT - && itemIndex >= 0) { - markDropArea(itemIndex); - } - } - - @Override - public void onDragFinished(int x, int y) { - setInDragging(false); - // A contact has been dragged to the RemoveView in order to be unstarred, so simply wait - // for the new contact cursor which will cause the UI to be refreshed without the unstarred - // contact. - if (!awaitingRemove) { - handleDrop(); - } - } - - @Override - public void onDroppedOnRemove() { - if (draggedEntry != null) { - unstarAndUnpinContact(draggedEntry.lookupUri); - awaitingRemove = true; - Logger.get(context).logInteraction(InteractionEvent.Type.SPEED_DIAL_REMOVE_CONTACT); - } - } - - interface OnDataSetChangedForAnimationListener { - - void onDataSetChangedForAnimation(long... idsInPlace); - - void cacheOffsetsForDatasetChange(); - } - - private static class ViewTypes { - - static final int TILE = 0; - static final int COUNT = 1; - } -} diff --git a/java/com/android/dialer/app/list/RemoveView.java b/java/com/android/dialer/app/list/RemoveView.java index 575c5a8908821bd2562a0e592d7467047993b373..bb547351108d991194e95b1e032b12c1f02f0038 100644 --- a/java/com/android/dialer/app/list/RemoveView.java +++ b/java/com/android/dialer/app/list/RemoveView.java @@ -29,7 +29,6 @@ import com.android.dialer.app.R; public class RemoveView extends FrameLayout { - DragDropController dragDropController; TextView removeText; ImageView removeIcon; int unhighlightedColor; @@ -55,11 +54,8 @@ public class RemoveView extends FrameLayout { final Resources r = getResources(); unhighlightedColor = r.getColor(android.R.color.white); highlightedColor = r.getColor(R.color.remove_highlighted_text_color); - removeDrawable = r.getDrawable(R.drawable.ic_remove); - } - - public void setDragDropController(DragDropController controller) { - dragDropController = controller; + removeDrawable = r.getDrawable(R.drawable.quantum_ic_clear_vd_theme_24, + getContext().getTheme()); } @Override @@ -76,15 +72,9 @@ public class RemoveView extends FrameLayout { setAppearanceNormal(); break; case DragEvent.ACTION_DRAG_LOCATION: - if (dragDropController != null) { - dragDropController.handleDragHovered(this, (int) event.getX(), (int) event.getY()); - } break; case DragEvent.ACTION_DROP: sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT); - if (dragDropController != null) { - dragDropController.handleDragFinished((int) event.getX(), (int) event.getY(), true); - } setAppearanceNormal(); break; } diff --git a/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml b/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml deleted file mode 100644 index 77968772740c1bde2e0b0c6e4aa0cb5b4648a83d..0000000000000000000000000000000000000000 --- a/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/java/com/android/dialer/app/res/color/tab_text.xml b/java/com/android/dialer/app/res/color/tab_text.xml new file mode 100644 index 0000000000000000000000000000000000000000..ed4c5cbcbc6816112cb1f4cb1ca55595f9c63f46 --- /dev/null +++ b/java/com/android/dialer/app/res/color/tab_text.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/java/com/android/dialer/app/res/drawable-hdpi/empty_call_log.png b/java/com/android/dialer/app/res/drawable-hdpi/empty_call_log.png deleted file mode 100644 index b51b7b8d97612bdb8da9102c76b27aac9761178d..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/empty_call_log.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_48dp.png deleted file mode 100644 index eeed895f127726b31257e136652f11781313bd78..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_48dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_menu_history_lt.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_menu_history_lt.png deleted file mode 100644 index 1c0c654582b4e81214314ac0fd70327311dbe0ad..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/ic_menu_history_lt.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_mic_grey600.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_mic_grey600.png deleted file mode 100644 index a392ff66b324beaa6495e30273e1bc3f849bf2cd..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/ic_mic_grey600.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_not_interested_googblue_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_not_interested_googblue_24dp.png deleted file mode 100644 index 393a0c882add55703800f650b08248f159af8cd6..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/ic_not_interested_googblue_24dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_not_spam.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_not_spam.png deleted file mode 100644 index 37caf38f4278ae3bcc22a32fab42adbdb85cc0e7..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/ic_not_spam.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_phone_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_phone_24dp.png deleted file mode 100644 index 9d41482484478d45588dc56f2c48b7deb2d2aff7..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/ic_phone_24dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_remove.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_remove.png deleted file mode 100644 index 0af1e39fd730400702d666f74a835459e3d89d05..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/ic_remove.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_star.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_star.png deleted file mode 100644 index 91c08cfe434b532a07ebe6e9d6ec738fe40d4227..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/ic_star.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_unblock.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_unblock.png deleted file mode 100644 index 177761068b4807de8db1a948b2dca2c552d8e1fe..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/ic_unblock.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-hdpi/old_ic_handle.png b/java/com/android/dialer/app/res/drawable-hdpi/old_ic_handle.png deleted file mode 100644 index a1c248ce48b5fe18c6abf9663cf92e0b6089d9a5..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/old_ic_handle.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-hdpi/search_shadow.9.png b/java/com/android/dialer/app/res/drawable-hdpi/search_shadow.9.png deleted file mode 100644 index 7e7c7c137ae0d3391426105c55188e2f4b050837..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/search_shadow.9.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-hdpi/shadow_contact_photo.png b/java/com/android/dialer/app/res/drawable-hdpi/shadow_contact_photo.png deleted file mode 100644 index 1fa6c4aebb064f2f71c19ce846ebbb8bfca2ed81..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-hdpi/shadow_contact_photo.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/empty_call_log.png b/java/com/android/dialer/app/res/drawable-mdpi/empty_call_log.png deleted file mode 100644 index a8d5a0c3c211d1ffbc9c6ca324069ce8d0990066..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/empty_call_log.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_check_mark_48dp.png deleted file mode 100644 index f3b76be4c66d82cd7e67453af74fbc2ad8a2e1da..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/ic_check_mark_48dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_menu_history_lt.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_menu_history_lt.png deleted file mode 100644 index 4a87c9410253b01d04fd17cb4869ce38dda95e81..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/ic_menu_history_lt.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_mic_grey600.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_mic_grey600.png deleted file mode 100644 index f058bff88c2c1e75c81a75678fe02c3981a7c651..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/ic_mic_grey600.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_not_interested_googblue_24dp.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_not_interested_googblue_24dp.png deleted file mode 100644 index d7d5c588f841767a009c74f15ac4127d1d30b106..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/ic_not_interested_googblue_24dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_not_spam.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_not_spam.png deleted file mode 100644 index 211baa90adfb54562b0d2d112e5caffa8a841367..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/ic_not_spam.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_phone_24dp.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_phone_24dp.png deleted file mode 100644 index 6539c3437717f752a4e07ce5b56d5ac38e217c96..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/ic_phone_24dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_remove.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_remove.png deleted file mode 100644 index 241a6a678ff6dab035ce36eb84d774d58a362962..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/ic_remove.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_star.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_star.png deleted file mode 100644 index 1f636630240e4d973155d9073bdfbba1d67f4dad..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/ic_star.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_unblock.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_unblock.png deleted file mode 100644 index 9f303d9a036b6e3c718f1312dd1fa01cba024235..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/ic_unblock.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/old_ic_handle.png b/java/com/android/dialer/app/res/drawable-mdpi/old_ic_handle.png deleted file mode 100644 index 3671e9394749a4e77921099acb610dca38d1ce2c..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/old_ic_handle.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/search_shadow.9.png b/java/com/android/dialer/app/res/drawable-mdpi/search_shadow.9.png deleted file mode 100644 index 758ce827915e5698df80adfdbfdfedc107147e19..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/search_shadow.9.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-mdpi/shadow_contact_photo.png b/java/com/android/dialer/app/res/drawable-mdpi/shadow_contact_photo.png deleted file mode 100644 index 5c802f946fb8882badd6f3c7cf8ffbc98a14a76d..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-mdpi/shadow_contact_photo.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/empty_call_log.png b/java/com/android/dialer/app/res/drawable-xhdpi/empty_call_log.png deleted file mode 100644 index eabc838192a6c3db1c7b2c49f84ce7d328a590a0..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/empty_call_log.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_check_mark_48dp.png deleted file mode 100644 index 01a3bbe0650de57a645891af93d9cadb5e51ee58..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/ic_check_mark_48dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_menu_history_lt.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_menu_history_lt.png deleted file mode 100644 index 27dbebff3e227d4c835efbcc36d597fb74712408..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/ic_menu_history_lt.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_mic_grey600.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_mic_grey600.png deleted file mode 100644 index e1d6a5c1746b4292a6ec1cd53e3202f4022d1f4a..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/ic_mic_grey600.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_not_interested_googblue_24dp.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_not_interested_googblue_24dp.png deleted file mode 100644 index 3e6ec071b675490ede1e515dbf628a2251931f92..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/ic_not_interested_googblue_24dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_not_spam.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_not_spam.png deleted file mode 100644 index 8fdd43fdf0f1f47bd866b05633f0de9069d04b76..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/ic_not_spam.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_phone_24dp.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_phone_24dp.png deleted file mode 100644 index 8d250c8adc68417d82194d2d2767c9d135808e52..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/ic_phone_24dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_remove.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_remove.png deleted file mode 100644 index ac81f84f04c0e985ea5707235754ff3802e45d36..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/ic_remove.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_star.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_star.png deleted file mode 100644 index 19518848a84539027df4091857ba6b988abc5e72..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/ic_star.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_unblock.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_unblock.png deleted file mode 100644 index c6e6595ce52283d78c000dba879c0f1055dce8f4..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/ic_unblock.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/old_ic_handle.png b/java/com/android/dialer/app/res/drawable-xhdpi/old_ic_handle.png deleted file mode 100644 index 36f3466a67505f979f92e4660a3a8d8bfde67214..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/old_ic_handle.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/search_shadow.9.png b/java/com/android/dialer/app/res/drawable-xhdpi/search_shadow.9.png deleted file mode 100644 index ad4528698db1bc3655029bb1da1812b605d2a481..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/search_shadow.9.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/shadow_contact_photo.png b/java/com/android/dialer/app/res/drawable-xhdpi/shadow_contact_photo.png deleted file mode 100644 index 4e09fd712370eba19715d12e895a33913b8b58e5..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xhdpi/shadow_contact_photo.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/empty_call_log.png b/java/com/android/dialer/app/res/drawable-xxhdpi/empty_call_log.png deleted file mode 100644 index ddb88237a0c89518ce61bcb4a375138b71773256..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/empty_call_log.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_check_mark_48dp.png deleted file mode 100644 index 2043279509387c25dc28203d61fad067c0103ef5..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_check_mark_48dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_menu_history_lt.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_menu_history_lt.png deleted file mode 100644 index 75a633ce509bd0233cb572660d01e9c38a1578b3..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_menu_history_lt.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_mic_grey600.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_mic_grey600.png deleted file mode 100644 index 726fc11ba6353d08121139ce739f89c62b381e70..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_mic_grey600.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_not_interested_googblue_24dp.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_not_interested_googblue_24dp.png deleted file mode 100644 index 7c256b5d75288cb6191bfec964b87ecaf770e97c..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_not_interested_googblue_24dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_not_spam.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_not_spam.png deleted file mode 100644 index 941ce8dea6e082cbbfabe873f90f4869edc9e7d3..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_not_spam.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_phone_24dp.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_phone_24dp.png deleted file mode 100644 index 9b366f702f9be9e4dc2413f47e84d3a1081c1baf..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_phone_24dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_remove.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_remove.png deleted file mode 100644 index 9281ab914d1663ac193fb49a15a4b56d77bbbbe3..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_remove.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_star.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_star.png deleted file mode 100644 index 94fd394f7087c5647122896491e0464c4162c154..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_star.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_unblock.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_unblock.png deleted file mode 100644 index 52fce33fc7b0021f5c3db4f3eb9fd49fcf46065a..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_unblock.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/old_ic_handle.png b/java/com/android/dialer/app/res/drawable-xxhdpi/old_ic_handle.png deleted file mode 100644 index 269cb38102c95ef2c9d578ad578971309ba465fd..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/old_ic_handle.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/search_shadow.9.png b/java/com/android/dialer/app/res/drawable-xxhdpi/search_shadow.9.png deleted file mode 100644 index fc6f3bf5d72c121d554ca3350b24ad59170de376..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/search_shadow.9.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/shadow_contact_photo.png b/java/com/android/dialer/app/res/drawable-xxhdpi/shadow_contact_photo.png deleted file mode 100644 index f7b8d2d9a3f10f0aef63c337b9f0d7c4d6badd3c..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxhdpi/shadow_contact_photo.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/empty_call_log.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/empty_call_log.png deleted file mode 100644 index 5704d753f3eaa6b9cbaaf35b96e8bf03d904b1d3..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxxhdpi/empty_call_log.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_check_mark_48dp.png deleted file mode 100644 index bfbe69e35a354742c4e814bee0309cff439029c4..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_check_mark_48dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_mic_grey600.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_mic_grey600.png deleted file mode 100644 index d80da4bb454f3767baea0f03197b21e581b02767..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_mic_grey600.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_not_interested_googblue_24dp.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_not_interested_googblue_24dp.png deleted file mode 100644 index 6591ed4858b72a7c21336f02a34269f3424bdcf3..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_not_interested_googblue_24dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_not_spam.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_not_spam.png deleted file mode 100644 index d1634c13b3eac49064573e3919797c91217afd02..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_not_spam.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_phone_24dp.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_phone_24dp.png deleted file mode 100644 index 71c48f111c557c4ff0897050d4ce4385380d117f..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_phone_24dp.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_unblock.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_unblock.png deleted file mode 100644 index 01551e2fce9eea004838c6f1cee5ebaf96732a31..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_unblock.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/old_ic_handle.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/old_ic_handle.png deleted file mode 100644 index 0a659982b6f7b23b00c417339832174ab4de90eb..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxxhdpi/old_ic_handle.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/search_shadow.9.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/search_shadow.9.png deleted file mode 100644 index fc6f3bf5d72c121d554ca3350b24ad59170de376..0000000000000000000000000000000000000000 Binary files a/java/com/android/dialer/app/res/drawable-xxxhdpi/search_shadow.9.png and /dev/null differ diff --git a/java/com/android/dialer/app/res/drawable/empty_call_log.xml b/java/com/android/dialer/app/res/drawable/empty_call_log.xml new file mode 100644 index 0000000000000000000000000000000000000000..a726ce659d555aeb0871dd6a004b41ae6562e980 --- /dev/null +++ b/java/com/android/dialer/app/res/drawable/empty_call_log.xml @@ -0,0 +1,13 @@ + + + + diff --git a/java/com/android/dialer/app/res/drawable/ic_check_mark_48dp.xml b/java/com/android/dialer/app/res/drawable/ic_check_mark_48dp.xml new file mode 100644 index 0000000000000000000000000000000000000000..0502de6d770a5f3879286bc54ea9156269d6ec41 --- /dev/null +++ b/java/com/android/dialer/app/res/drawable/ic_check_mark_48dp.xml @@ -0,0 +1,14 @@ + + + + diff --git a/java/com/android/dialer/app/res/drawable/ic_pause.xml b/java/com/android/dialer/app/res/drawable/ic_pause.xml deleted file mode 100644 index 7696eb0e2a05ebf2d3e31d9fd418ec13fb106c09..0000000000000000000000000000000000000000 --- a/java/com/android/dialer/app/res/drawable/ic_pause.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - diff --git a/java/com/android/dialer/app/res/drawable/ic_play_arrow.xml b/java/com/android/dialer/app/res/drawable/ic_play_arrow.xml deleted file mode 100644 index 97f736c1fd7597d27b9eb11539bdde454ff25dea..0000000000000000000000000000000000000000 --- a/java/com/android/dialer/app/res/drawable/ic_play_arrow.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - diff --git a/java/com/android/dialer/app/res/drawable/ic_voicemail_seek_handle.xml b/java/com/android/dialer/app/res/drawable/ic_voicemail_seek_handle.xml index 00b23b84de516ce0e207641bbfb0bd4827346e5f..8ac78812c65e81fcbf9a1ff01af9c9f89fb1b188 100644 --- a/java/com/android/dialer/app/res/drawable/ic_voicemail_seek_handle.xml +++ b/java/com/android/dialer/app/res/drawable/ic_voicemail_seek_handle.xml @@ -1,20 +1,11 @@ - - \ No newline at end of file + SPDX-FileCopyrightText: The LineageOS Project + SPDX-License-Identifier: Apache-2.0 +--> + diff --git a/java/com/android/dialer/app/res/drawable/old_ic_voicemail_seek_handle_disabled.xml b/java/com/android/dialer/app/res/drawable/old_ic_voicemail_seek_handle_disabled.xml index cfce81812e5b77d2b3485e44ab092d9f8096d961..9de2b1dd70d80d9b0b8102ddf6fc16da015bbd8e 100644 --- a/java/com/android/dialer/app/res/drawable/old_ic_voicemail_seek_handle_disabled.xml +++ b/java/com/android/dialer/app/res/drawable/old_ic_voicemail_seek_handle_disabled.xml @@ -1,20 +1,11 @@ - - \ No newline at end of file + SPDX-FileCopyrightText: The LineageOS Project + SPDX-License-Identifier: Apache-2.0 +--> + diff --git a/java/com/android/dialer/app/res/drawable/pill.xml b/java/com/android/dialer/app/res/drawable/pill.xml new file mode 100644 index 0000000000000000000000000000000000000000..da68a197533108e734414d0773f8bb5c69f0d977 --- /dev/null +++ b/java/com/android/dialer/app/res/drawable/pill.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/java/com/android/dialer/app/res/drawable/seekbar_drawable.xml b/java/com/android/dialer/app/res/drawable/seekbar_drawable.xml index 2288cf24a5264bb520ad3f37b34ccf15b4a41c11..075e99931599494afcc5ffd36fb54110c35da9a0 100644 --- a/java/com/android/dialer/app/res/drawable/seekbar_drawable.xml +++ b/java/com/android/dialer/app/res/drawable/seekbar_drawable.xml @@ -15,7 +15,7 @@ --> - + - + + - + + - \ No newline at end of file + diff --git a/java/com/android/dialer/app/res/layout/action_mode_close_button.xml b/java/com/android/dialer/app/res/layout/action_mode_close_button.xml deleted file mode 100644 index 4cb85d458cffdc0b795a24f791b7d9d94328c5f0..0000000000000000000000000000000000000000 --- a/java/com/android/dialer/app/res/layout/action_mode_close_button.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/java/com/android/dialer/app/res/layout/blocked_number_footer.xml b/java/com/android/dialer/app/res/layout/blocked_number_footer.xml deleted file mode 100644 index 2d368605c996de4c542c38642a29714bcc8e624a..0000000000000000000000000000000000000000 --- a/java/com/android/dialer/app/res/layout/blocked_number_footer.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - diff --git a/java/com/android/dialer/app/res/layout/blocked_number_fragment.xml b/java/com/android/dialer/app/res/layout/blocked_number_fragment.xml deleted file mode 100644 index 22dcfefa5cd81def452ba0c9f9f3041b6de434a5..0000000000000000000000000000000000000000 --- a/java/com/android/dialer/app/res/layout/blocked_number_fragment.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - diff --git a/java/com/android/dialer/app/res/layout/blocked_number_header.xml b/java/com/android/dialer/app/res/layout/blocked_number_header.xml deleted file mode 100644 index 27b624ccd5156f7361766189ef0073d8623b837b..0000000000000000000000000000000000000000 --- a/java/com/android/dialer/app/res/layout/blocked_number_header.xml +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -