diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a92acc4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +*.apk +*.ap_ + +# Files for the Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..3a5eb83 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Contacts \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..96cc43e --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..c8bda26 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,23 @@ + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..ecd817f --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..3b31283 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/.idea/libraries/appcompat_v7_23_1_0.xml b/.idea/libraries/appcompat_v7_23_1_0.xml new file mode 100644 index 0000000..b00fe97 --- /dev/null +++ b/.idea/libraries/appcompat_v7_23_1_0.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/cardview_v7_23_1_0.xml b/.idea/libraries/cardview_v7_23_1_0.xml new file mode 100644 index 0000000..2e1804e --- /dev/null +++ b/.idea/libraries/cardview_v7_23_1_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/geocoder_2_31.xml b/.idea/libraries/geocoder_2_31.xml new file mode 100644 index 0000000..7d8e198 --- /dev/null +++ b/.idea/libraries/geocoder_2_31.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/guava_18_0.xml b/.idea/libraries/guava_18_0.xml new file mode 100644 index 0000000..6f98269 --- /dev/null +++ b/.idea/libraries/guava_18_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/jsr305_3_0_1.xml b/.idea/libraries/jsr305_3_0_1.xml new file mode 100644 index 0000000..6d41b6e --- /dev/null +++ b/.idea/libraries/jsr305_3_0_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/libphonenumber_7_2_1.xml b/.idea/libraries/libphonenumber_7_2_1.xml new file mode 100644 index 0000000..29d4a7b --- /dev/null +++ b/.idea/libraries/libphonenumber_7_2_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/palette_v7_23_1_0.xml b/.idea/libraries/palette_v7_23_1_0.xml new file mode 100644 index 0000000..0dc47ee --- /dev/null +++ b/.idea/libraries/palette_v7_23_1_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/prefixmapper_2_31.xml b/.idea/libraries/prefixmapper_2_31.xml new file mode 100644 index 0000000..abc301a --- /dev/null +++ b/.idea/libraries/prefixmapper_2_31.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/recyclerview_v7_23_1_0.xml b/.idea/libraries/recyclerview_v7_23_1_0.xml new file mode 100644 index 0000000..8a343e0 --- /dev/null +++ b/.idea/libraries/recyclerview_v7_23_1_0.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/support_annotations_23_1_0.xml b/.idea/libraries/support_annotations_23_1_0.xml new file mode 100644 index 0000000..1eea589 --- /dev/null +++ b/.idea/libraries/support_annotations_23_1_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/support_v13_23_1_0.xml b/.idea/libraries/support_v13_23_1_0.xml new file mode 100644 index 0000000..a4a18de --- /dev/null +++ b/.idea/libraries/support_v13_23_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/support_v4_23_1_0.xml b/.idea/libraries/support_v4_23_1_0.xml new file mode 100644 index 0000000..0633d49 --- /dev/null +++ b/.idea/libraries/support_v4_23_1_0.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..2f4be38 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + Android Lint + + + Java + + + Performance issuesJava + + + Serialization issuesJava + + + XML + + + + + Android + + + + + + + + + + + + + + + + + + + + + + + + + 1.8 + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..0005440 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..6564d52 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..357271e --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,5211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1447407337458 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Contacts.iml b/Contacts.iml new file mode 100644 index 0000000..a0ce31a --- /dev/null +++ b/Contacts.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ContactsCommon/Android.mk b/ContactsCommon/Android.mk new file mode 100644 index 0000000..52e1873 --- /dev/null +++ b/ContactsCommon/Android.mk @@ -0,0 +1,47 @@ +# Copyright 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. + +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := optional + +phone_common_dir := ../PhoneCommon +src_dirs := src $(phone_common_dir)/src +res_dirs := res $(phone_common_dir)/res + +LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs)) +LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs)) + +LOCAL_AAPT_FLAGS := \ + --auto-add-overlay \ + --extra-packages com.android.phone.common + +LOCAL_STATIC_JAVA_LIBRARIES := \ + com.android.vcard \ + guava \ + android-common \ + android-support-v13 \ + android-support-v4 \ + libphonenumber + +LOCAL_PACKAGE_NAME := com.android.contacts.common + +LOCAL_PROGUARD_ENABLED := disabled +LOCAL_PROGUARD_FLAG_FILES := proguard.flags + +include $(BUILD_PACKAGE) + +# Use the following include to make our test apk. +include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/ContactsCommon/AndroidManifest.xml b/ContactsCommon/AndroidManifest.xml new file mode 100644 index 0000000..e981891 --- /dev/null +++ b/ContactsCommon/AndroidManifest.xml @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/ContactsCommon/CleanSpec.mk b/ContactsCommon/CleanSpec.mk new file mode 100644 index 0000000..744fa92 --- /dev/null +++ b/ContactsCommon/CleanSpec.mk @@ -0,0 +1,49 @@ +# 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. +# + +# If you don't need to do a full clean build but would like to touch +# a file or delete some intermediate files, add a clean step to the end +# of the list. These steps will only be run once, if they haven't been +# run before. +# +# E.g.: +# $(call add-clean-step, touch -c external/sqlite/sqlite3.h) +# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates) +# +# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with +# files that are missing or have been moved. +# +# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory. +# Use $(OUT_DIR) to refer to the "out" directory. +# +# If you need to re-do something that's already mentioned, just copy +# the command and add it to the bottom of the list. E.g., if a change +# that you made last week required touching a file and a change you +# made today requires touching the same file, just copy the old +# touch step and add it to the end of the list. +# +# ************************************************ +# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST +# ************************************************ + +# For example: +#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates) +#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates) +#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f) +#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*) + +# ************************************************ +# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST +# ************************************************ diff --git a/ContactsCommon/ContactsCommon.iml b/ContactsCommon/ContactsCommon.iml new file mode 100644 index 0000000..ea1c5d6 --- /dev/null +++ b/ContactsCommon/ContactsCommon.iml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ContactsCommon/TestCommon/Android.mk b/ContactsCommon/TestCommon/Android.mk new file mode 100644 index 0000000..c24a25b --- /dev/null +++ b/ContactsCommon/TestCommon/Android.mk @@ -0,0 +1,30 @@ +# Copyright 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. + +LOCAL_PATH:= $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +# This has to be LOCAL_JAVA instead of LOCAL_STATIC since this test util is installed in the same +# vm as the packages to be tested. Otherwise you will get error +# "Class ref in pre-verified class resolved to unexpected implementation" +# when running the unit tests. +LOCAL_JAVA_LIBRARIES := guava android.test.runner + +LOCAL_INSTRUMENTATION_FOR := com.android.contacts.common + +LOCAL_MODULE := com.android.contacts.common.test +include $(BUILD_STATIC_JAVA_LIBRARY) diff --git a/ContactsCommon/TestCommon/src/com/android/contacts/common/test/FragmentTestActivity.java b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/FragmentTestActivity.java new file mode 100644 index 0000000..5ae2d95 --- /dev/null +++ b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/FragmentTestActivity.java @@ -0,0 +1,47 @@ +/* + * 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.test; + +import android.app.Activity; +import android.os.Bundle; +import android.view.Window; +import android.view.WindowManager; +import android.widget.FrameLayout; + +/** + * An activity that is used for testing fragments. A unit test starts this + * activity, adds a fragment and then tests the fragment. + */ +public class FragmentTestActivity extends Activity { + + public final static int LAYOUT_ID = 1; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Normally fragment/activity onStart() methods will not be called when screen is locked. + // Use the following flags to ensure that activities can be show for testing. + final Window window = getWindow(); + window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | + WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); + + final FrameLayout layout = new FrameLayout(this); + layout.setId(LAYOUT_ID); + setContentView(layout); + } +} diff --git a/ContactsCommon/TestCommon/src/com/android/contacts/common/test/IntegrationTestUtils.java b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/IntegrationTestUtils.java new file mode 100644 index 0000000..5457128 --- /dev/null +++ b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/IntegrationTestUtils.java @@ -0,0 +1,196 @@ +/* + * 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.test; + +import static android.os.PowerManager.ACQUIRE_CAUSES_WAKEUP; +import static android.os.PowerManager.FULL_WAKE_LOCK; +import static android.os.PowerManager.ON_AFTER_RELEASE; + +import android.app.Activity; +import android.app.Instrumentation; +import android.content.Context; +import android.os.PowerManager; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.google.common.base.Preconditions; + +import junit.framework.Assert; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.FutureTask; + +import javax.annotation.concurrent.GuardedBy; +import javax.annotation.concurrent.ThreadSafe; + +/** Some utility methods for making integration testing smoother. */ +@ThreadSafe +public class IntegrationTestUtils { + private static final String TAG = "IntegrationTestUtils"; + + private final Instrumentation mInstrumentation; + private final Object mLock = new Object(); + @GuardedBy("mLock") private PowerManager.WakeLock mWakeLock; + + public IntegrationTestUtils(Instrumentation instrumentation) { + mInstrumentation = instrumentation; + } + + /** + * Find a view by a given resource id, from the given activity, and click it, iff it is + * enabled according to {@link View#isEnabled()}. + */ + public void clickButton(final Activity activity, final int buttonResourceId) throws Throwable { + runOnUiThreadAndGetTheResult(new Callable() { + @Override + public Void call() throws Exception { + View view = activity.findViewById(buttonResourceId); + Assert.assertNotNull(view); + if (view.isEnabled()) { + view.performClick(); + } + return null; + } + }); + } + + /** Returns the result of running {@link TextView#getText()} on the ui thread. */ + public CharSequence getText(final TextView view) throws Throwable { + return runOnUiThreadAndGetTheResult(new Callable() { + @Override + public CharSequence call() { + return view.getText(); + } + }); + } + + // TODO: Move this class and the appropriate documentation into a test library, having checked + // first to see if exactly this code already exists or not. + /** + * Execute a callable on the ui thread, returning its result synchronously. + *

+ * Waits for an idle sync on the main thread (see {@link Instrumentation#waitForIdle(Runnable)}) + * before executing this callable. + */ + public T runOnUiThreadAndGetTheResult(Callable callable) throws Throwable { + FutureTask future = new FutureTask(callable); + mInstrumentation.waitForIdle(future); + try { + return future.get(); + } catch (ExecutionException e) { + // Unwrap the cause of the exception and re-throw it. + throw e.getCause(); + } + } + + /** + * Wake up the screen, useful in tests that want or need the screen to be on. + *

+ * This is usually called from setUp() for tests that require it. After calling this method, + * {@link #releaseScreenWakeLock()} must be called, this is usually done from tearDown(). + */ + public void acquireScreenWakeLock(Context context) { + synchronized (mLock) { + Preconditions.checkState(mWakeLock == null, "mWakeLock was already held"); + mWakeLock = ((PowerManager) context.getSystemService(Context.POWER_SERVICE)) + .newWakeLock( + PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE | PowerManager.FULL_WAKE_LOCK, TAG); + mWakeLock.acquire(); + } + } + + /** Release the wake lock previously acquired with {@link #acquireScreenWakeLock(Context)}. */ + public void releaseScreenWakeLock() { + synchronized (mLock) { + // We don't use Preconditions to force you to have acquired before release. + // This is because we don't want unnecessary exceptions in tearDown() since they'll + // typically mask the actual exception that happened during the test. + // The other reason is that this method is most likely to be called from tearDown(), + // which is invoked within a finally block, so it's not infrequently the case that + // the setUp() method fails before getting the lock, at which point we don't want + // to fail in tearDown(). + if (mWakeLock != null) { + mWakeLock.release(); + mWakeLock = null; + } + } + } + + /** + * Gets all {@link TextView} objects whose {@link TextView#getText()} contains the given text as + * a substring. + */ + public List getTextViewsWithString(final Activity activity, final String text) + throws Throwable { + return getTextViewsWithString(getRootView(activity), text); + } + + /** + * Gets all {@link TextView} objects whose {@link TextView#getText()} contains the given text as + * a substring for the given root view. + */ + public List getTextViewsWithString(final View rootView, final String text) + throws Throwable { + return runOnUiThreadAndGetTheResult(new Callable>() { + @Override + public List call() throws Exception { + List matchingViews = new ArrayList(); + for (TextView textView : getAllViews(TextView.class, rootView)) { + if (textView.getText().toString().contains(text)) { + matchingViews.add(textView); + } + } + return matchingViews; + } + }); + } + + /** Find the root view for a given activity. */ + public static View getRootView(Activity activity) { + return activity.findViewById(android.R.id.content).getRootView(); + } + + /** + * Gets a list of all views of a given type, rooted at the given parent. + *

+ * This method will recurse down through all {@link ViewGroup} instances looking for + * {@link View} instances of the supplied class type. Specifically it will use the + * {@link Class#isAssignableFrom(Class)} method as the test for which views to add to the list, + * so if you provide {@code View.class} as your type, you will get every view. The parent itself + * will be included also, should it be of the right type. + *

+ * This call manipulates the ui, and as such should only be called from the application's main + * thread. + */ + private static List getAllViews(final Class clazz, final View parent) { + List results = new ArrayList(); + if (parent.getClass().equals(clazz)) { + results.add(clazz.cast(parent)); + } + if (parent instanceof ViewGroup) { + ViewGroup viewGroup = (ViewGroup) parent; + for (int i = 0; i < viewGroup.getChildCount(); ++i) { + results.addAll(getAllViews(clazz, viewGroup.getChildAt(i))); + } + } + return results; + } +} diff --git a/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/ContactsMockContext.java b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/ContactsMockContext.java new file mode 100644 index 0000000..ebce6a0 --- /dev/null +++ b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/ContactsMockContext.java @@ -0,0 +1,96 @@ +/* + * 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.test.mocks; + +import android.content.ContentResolver; +import android.content.Context; +import android.content.ContextWrapper; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ProviderInfo; +import android.provider.ContactsContract; +import android.provider.Settings; +import android.test.mock.MockContentResolver; + +/** + * A mock context for contacts unit tests. Forwards everything to + * a supplied context, except content resolver operations, which are sent + * to mock content providers. + */ +public class ContactsMockContext extends ContextWrapper { + private ContactsMockPackageManager mPackageManager; + private MockContentResolver mContentResolver; + private MockContentProvider mContactsProvider; + private MockContentProvider mSettingsProvider; + private Intent mIntentForStartActivity; + + public ContactsMockContext(Context base) { + super(base); + mPackageManager = new ContactsMockPackageManager(); + mContentResolver = new MockContentResolver(); + mContactsProvider = new MockContentProvider(); + mContentResolver.addProvider(ContactsContract.AUTHORITY, mContactsProvider); + final ProviderInfo providerInfo = new ProviderInfo(); + providerInfo.authority = ContactsContract.AUTHORITY; + mContactsProvider.attachInfo(this, providerInfo); + mSettingsProvider = new MockContentProvider(); + mSettingsProvider.attachInfo(this, providerInfo); + mContentResolver.addProvider(Settings.AUTHORITY, mSettingsProvider); + } + + @Override + public ContentResolver getContentResolver() { + return mContentResolver; + } + + public MockContentProvider getContactsProvider() { + return mContactsProvider; + } + + public MockContentProvider getSettingsProvider() { + return mSettingsProvider; + } + + @Override + public PackageManager getPackageManager() { + return mPackageManager; + } + + @Override + public Context getApplicationContext() { + return this; + } + + /** + * Instead of actually sending Intent, this method just remembers what Intent was supplied last. + * You can check the content via {@link #getIntentForStartActivity()} for verification. + */ + @Override + public void startActivity(Intent intent) { + mIntentForStartActivity = intent; + } + + public Intent getIntentForStartActivity() { + return mIntentForStartActivity; + } + + public void verify() { + mContactsProvider.verify(); + mSettingsProvider.verify(); + } + +} diff --git a/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/ContactsMockPackageManager.java b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/ContactsMockPackageManager.java new file mode 100644 index 0000000..a1557ff --- /dev/null +++ b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/ContactsMockPackageManager.java @@ -0,0 +1,45 @@ +/* + * 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.test.mocks; + +import android.content.ComponentName; +import android.content.pm.ApplicationInfo; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.test.mock.MockPackageManager; + +/** + */ +public class ContactsMockPackageManager extends MockPackageManager { + public ContactsMockPackageManager() { + } + + @Override + public Drawable getActivityLogo(ComponentName activityName) throws NameNotFoundException { + return new ColorDrawable(); + } + + @Override + public Drawable getActivityIcon(ComponentName activityName) { + return new ColorDrawable(); + } + + @Override + public Drawable getDrawable(String packageName, int resid, ApplicationInfo appInfo) { + // TODO: make programmable + return new ColorDrawable(); + } +} diff --git a/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/MockAccountTypeManager.java b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/MockAccountTypeManager.java new file mode 100644 index 0000000..ab2d395 --- /dev/null +++ b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/MockAccountTypeManager.java @@ -0,0 +1,90 @@ +/* + * 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.test.mocks; + +import com.android.contacts.common.model.AccountTypeManager; +import com.android.contacts.common.model.account.AccountType; +import com.android.contacts.common.model.account.AccountTypeWithDataSet; +import com.android.contacts.common.model.account.AccountWithDataSet; +import com.android.contacts.common.model.account.BaseAccountType; +import com.google.common.base.Objects; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * A mock {@link AccountTypeManager} class. + */ +public class MockAccountTypeManager extends AccountTypeManager { + + public AccountType[] mTypes; + public AccountWithDataSet[] mAccounts; + + public MockAccountTypeManager(AccountType[] types, AccountWithDataSet[] accounts) { + this.mTypes = types; + this.mAccounts = accounts; + } + + @Override + public AccountType getAccountType(AccountTypeWithDataSet accountTypeWithDataSet) { + // Add fallback accountType to mimic the behavior of AccountTypeManagerImpl + AccountType mFallbackAccountType = new BaseAccountType() { + @Override + public boolean areContactsWritable() { + return false; + } + }; + mFallbackAccountType.accountType = "fallback"; + for (AccountType type : mTypes) { + if (Objects.equal(accountTypeWithDataSet.accountType, type.accountType) + && Objects.equal(accountTypeWithDataSet.dataSet, type.dataSet)) { + return type; + } + } + return mFallbackAccountType; + } + + @Override + public List getAccounts(boolean writableOnly) { + return Arrays.asList(mAccounts); + } + + @Override + public List getGroupWritableAccounts() { + return Arrays.asList(mAccounts); + } + + @Override + public Map getUsableInvitableAccountTypes() { + return Maps.newHashMap(); // Always returns empty + } + + @Override + public List getAccountTypes(boolean writableOnly) { + final List ret = Lists.newArrayList(); + synchronized (this) { + for (AccountType type : mTypes) { + if (!writableOnly || type.areContactsWritable()) { + ret.add(type); + } + } + } + return ret; + } +} diff --git a/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/MockContactPhotoManager.java b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/MockContactPhotoManager.java new file mode 100644 index 0000000..db8f06f --- /dev/null +++ b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/MockContactPhotoManager.java @@ -0,0 +1,72 @@ +/* + * 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.test.mocks; + +import android.graphics.Bitmap; +import android.net.Uri; +import android.view.View; +import android.widget.ImageView; + +import com.android.contacts.common.ContactPhotoManager; + +/** + * A photo preloader that always uses the "no contact" picture and never executes any real + * db queries + */ +public class MockContactPhotoManager extends ContactPhotoManager { + @Override + public void loadThumbnail(ImageView view, long photoId, boolean darkTheme, boolean isCircular, + DefaultImageRequest defaultImageRequest, DefaultImageProvider defaultProvider) { + defaultProvider.applyDefaultImage(view, -1, darkTheme, null); + } + + @Override + public void loadPhoto(ImageView view, Uri photoUri, int requestedExtent, boolean darkTheme, + boolean isCircular, DefaultImageRequest defaultImageRequest, + DefaultImageProvider defaultProvider) { + defaultProvider.applyDefaultImage(view, requestedExtent, darkTheme, null); + } + + @Override + public void removePhoto(ImageView view) { + view.setImageDrawable(null); + } + + @Override + public void cancelPendingRequests(View fragmentRootView) { + } + + @Override + public void pause() { + } + + @Override + public void resume() { + } + + @Override + public void refreshCache() { + } + + @Override + public void cacheBitmap(Uri photoUri, Bitmap bitmap, byte[] photoBytes) { + } + + @Override + public void preloadPhotosInBackground() { + } +} diff --git a/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/MockContentProvider.java b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/MockContentProvider.java new file mode 100644 index 0000000..686292a --- /dev/null +++ b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/MockContentProvider.java @@ -0,0 +1,341 @@ +/* + * 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.test.mocks; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.database.MatrixCursor; +import android.net.Uri; +import android.text.TextUtils; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; + +import junit.framework.Assert; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; + +/** + * A programmable mock content provider. + */ +public class MockContentProvider extends ContentProvider { + private static final String TAG = "MockContentProvider"; + + public static class Query { + + private final Uri mUri; + private String[] mProjection; + private String[] mDefaultProjection; + private String mSelection; + private String[] mSelectionArgs; + private String mSortOrder; + private ArrayList mRows = new ArrayList(); + private boolean mAnyProjection; + private boolean mAnySelection; + private boolean mAnySortOrder; + private boolean mAnyNumberOfTimes; + + private boolean mExecuted; + + public Query(Uri uri) { + mUri = uri; + } + + @Override + public String toString() { + return queryToString(mUri, mProjection, mSelection, mSelectionArgs, mSortOrder); + } + + public Query withProjection(String... projection) { + mProjection = projection; + return this; + } + + public Query withDefaultProjection(String... projection) { + mDefaultProjection = projection; + return this; + } + + public Query withAnyProjection() { + mAnyProjection = true; + return this; + } + + public Query withSelection(String selection, String... selectionArgs) { + mSelection = selection; + mSelectionArgs = selectionArgs; + return this; + } + + public Query withAnySelection() { + mAnySelection = true; + return this; + } + + public Query withSortOrder(String sortOrder) { + mSortOrder = sortOrder; + return this; + } + + public Query withAnySortOrder() { + mAnySortOrder = true; + return this; + } + + public Query returnRow(ContentValues values) { + mRows.add(values); + return this; + } + + public Query returnRow(Object... row) { + mRows.add(row); + return this; + } + + public Query returnEmptyCursor() { + mRows.clear(); + return this; + } + + public Query anyNumberOfTimes() { + mAnyNumberOfTimes = true; + return this; + } + + public boolean equals(Uri uri, String[] projection, String selection, + String[] selectionArgs, String sortOrder) { + if (!uri.equals(mUri)) { + return false; + } + + if (!mAnyProjection && !equals(projection, mProjection)) { + return false; + } + + if (!mAnySelection && !equals(selection, mSelection)) { + return false; + } + + if (!mAnySelection && !equals(selectionArgs, mSelectionArgs)) { + return false; + } + + if (!mAnySortOrder && !equals(sortOrder, mSortOrder)) { + return false; + } + + return true; + } + + private boolean equals(String string1, String string2) { + if (TextUtils.isEmpty(string1)) { + string1 = null; + } + if (TextUtils.isEmpty(string2)) { + string2 = null; + } + return TextUtils.equals(string1, string2); + } + + private static boolean equals(String[] array1, String[] array2) { + boolean empty1 = array1 == null || array1.length == 0; + boolean empty2 = array2 == null || array2.length == 0; + if (empty1 && empty2) { + return true; + } + if (empty1 != empty2 && (empty1 || empty2)) { + return false; + } + + if (array1.length != array2.length) return false; + + for (int i = 0; i < array1.length; i++) { + if (!array1[i].equals(array2[i])) { + return false; + } + } + return true; + } + + public Cursor getResult(String[] projection) { + String[] columnNames; + if (mAnyProjection) { + columnNames = projection; + } else { + columnNames = mProjection != null ? mProjection : mDefaultProjection; + } + + MatrixCursor cursor = new MatrixCursor(columnNames); + for (Object row : mRows) { + if (row instanceof Object[]) { + cursor.addRow((Object[]) row); + } else { + ContentValues values = (ContentValues) row; + Object[] columns = new Object[projection.length]; + for (int i = 0; i < projection.length; i++) { + columns[i] = values.get(projection[i]); + } + cursor.addRow(columns); + } + } + return cursor; + } + } + + public static class TypeQuery { + private final Uri mUri; + private final String mType; + + public TypeQuery(Uri uri, String type) { + mUri = uri; + mType = type; + } + + public Uri getUri() { + return mUri; + } + + public String getType() { + return mType; + } + + @Override + public String toString() { + return mUri + " --> " + mType; + } + + public boolean equals(Uri uri) { + return getUri().equals(uri); + } + } + + private ArrayList mExpectedQueries = new ArrayList(); + private HashMap mExpectedTypeQueries = Maps.newHashMap(); + + @Override + public boolean onCreate() { + return true; + } + + public Query expectQuery(Uri contentUri) { + Query query = new Query(contentUri); + mExpectedQueries.add(query); + return query; + } + + public void expectTypeQuery(Uri uri, String type) { + mExpectedTypeQueries.put(uri, type); + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, + String sortOrder) { + + for (Iterator iterator = mExpectedQueries.iterator(); iterator.hasNext();) { + Query query = iterator.next(); + if (query.equals(uri, projection, selection, selectionArgs, sortOrder)) { + query.mExecuted = true; + if (!query.mAnyNumberOfTimes) { + iterator.remove(); + } + return query.getResult(projection); + } + } + + if (mExpectedQueries.isEmpty()) { + Assert.fail("Unexpected query: " + + queryToString(uri, projection, selection, selectionArgs, sortOrder)); + } else { + StringBuilder sb = new StringBuilder(); + sb.append(mExpectedQueries.get(0)); + for (int i = 1; i < mExpectedQueries.size(); i++) { + sb.append("\n ").append(mExpectedQueries.get(i)); + } + Assert.fail("Incorrect query.\n Expected: " + sb + "\n Actual: " + + queryToString(uri, projection, selection, selectionArgs, sortOrder)); + } + return null; + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + throw new UnsupportedOperationException(); + } + + @Override + public String getType(Uri uri) { + if (mExpectedTypeQueries.isEmpty()) { + Assert.fail("Unexpected getType query: " + uri); + } + + String mimeType = mExpectedTypeQueries.get(uri); + if (mimeType != null) { + return mimeType; + } + + Assert.fail("Unknown mime type for: " + uri); + return null; + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + throw new UnsupportedOperationException(); + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + throw new UnsupportedOperationException(); + } + + private static String queryToString(Uri uri, String[] projection, String selection, + String[] selectionArgs, String sortOrder) { + StringBuilder sb = new StringBuilder(); + sb.append(uri).append(" "); + if (projection != null) { + sb.append(Arrays.toString(projection)); + } else { + sb.append("[]"); + } + if (selection != null) { + sb.append(" selection: '").append(selection).append("'"); + if (selectionArgs != null) { + sb.append(Arrays.toString(selectionArgs)); + } else { + sb.append("[]"); + } + } + if (sortOrder != null) { + sb.append(" sort: '").append(sortOrder).append("'"); + } + return sb.toString(); + } + + public void verify() { + ArrayList mMissedQueries = Lists.newArrayList(); + for (Query query : mExpectedQueries) { + if (!query.mExecuted) { + mMissedQueries.add(query); + } + } + Assert.assertTrue("Not all expected queries have been called: " + + mMissedQueries, mMissedQueries.isEmpty()); + } +} diff --git a/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/MockSharedPreferences.java b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/MockSharedPreferences.java new file mode 100644 index 0000000..13d035e --- /dev/null +++ b/ContactsCommon/TestCommon/src/com/android/contacts/common/test/mocks/MockSharedPreferences.java @@ -0,0 +1,149 @@ +/* + * 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.test.mocks; + +import android.content.SharedPreferences; + +import com.google.common.collect.Maps; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + + +/** + * A programmable mock content provider. + */ +public class MockSharedPreferences implements SharedPreferences, SharedPreferences.Editor { + + private HashMap mValues = Maps.newHashMap(); + private HashMap mTempValues = Maps.newHashMap(); + + public Editor edit() { + return this; + } + + public boolean contains(String key) { + return mValues.containsKey(key); + } + + public Map getAll() { + return new HashMap(mValues); + } + + public boolean getBoolean(String key, boolean defValue) { + if (mValues.containsKey(key)) { + return ((Boolean)mValues.get(key)).booleanValue(); + } + return defValue; + } + + public float getFloat(String key, float defValue) { + if (mValues.containsKey(key)) { + return ((Float)mValues.get(key)).floatValue(); + } + return defValue; + } + + public int getInt(String key, int defValue) { + if (mValues.containsKey(key)) { + return ((Integer)mValues.get(key)).intValue(); + } + return defValue; + } + + public long getLong(String key, long defValue) { + if (mValues.containsKey(key)) { + return ((Long)mValues.get(key)).longValue(); + } + return defValue; + } + + public String getString(String key, String defValue) { + if (mValues.containsKey(key)) + return (String)mValues.get(key); + return defValue; + } + + @SuppressWarnings("unchecked") + public Set getStringSet(String key, Set defValues) { + if (mValues.containsKey(key)) { + return (Set) mValues.get(key); + } + return defValues; + } + + public void registerOnSharedPreferenceChangeListener( + OnSharedPreferenceChangeListener listener) { + throw new UnsupportedOperationException(); + } + + public void unregisterOnSharedPreferenceChangeListener( + OnSharedPreferenceChangeListener listener) { + throw new UnsupportedOperationException(); + } + + public Editor putBoolean(String key, boolean value) { + mTempValues.put(key, Boolean.valueOf(value)); + return this; + } + + public Editor putFloat(String key, float value) { + mTempValues.put(key, value); + return this; + } + + public Editor putInt(String key, int value) { + mTempValues.put(key, value); + return this; + } + + public Editor putLong(String key, long value) { + mTempValues.put(key, value); + return this; + } + + public Editor putString(String key, String value) { + mTempValues.put(key, value); + return this; + } + + public Editor putStringSet(String key, Set values) { + mTempValues.put(key, values); + return this; + } + + public Editor remove(String key) { + mTempValues.remove(key); + return this; + } + + public Editor clear() { + mTempValues.clear(); + return this; + } + + @SuppressWarnings("unchecked") + public boolean commit() { + mValues = (HashMap)mTempValues.clone(); + return true; + } + + public void apply() { + commit(); + } +} diff --git a/ContactsCommon/build.gradle b/ContactsCommon/build.gradle new file mode 100644 index 0000000..204eb35 --- /dev/null +++ b/ContactsCommon/build.gradle @@ -0,0 +1,33 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.1" + + defaultConfig { + minSdkVersion 11 + targetSdkVersion 19 + } + + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + //HACK around R.java (import com.android.phone.common.R) + //java.srcDirs = ['src', 'TestCommon/src', 'build/generated/source/r/release' ] + java.srcDirs = ['src', 'TestCommon/src' ] + res.srcDirs = ['res'] + } + } +} + +dependencies { + compile 'com.android.support:support-v4:23.1.0' + compile 'com.googlecode.libphonenumber:libphonenumber-parent:7.2.1' + compile 'com.googlecode.libphonenumber:libphonenumber:7.2.1' + compile 'com.googlecode.libphonenumber:geocoder:2.31' + compile 'com.google.code.findbugs:jsr305:3.0.1' + compile 'com.google.guava:guava:18.0' + compile project(':vcard') + compile project(':ex:common') + compile project(':PhoneCommon') +} \ No newline at end of file diff --git a/ContactsCommon/proguard.flags b/ContactsCommon/proguard.flags new file mode 100644 index 0000000..cd9820a --- /dev/null +++ b/ContactsCommon/proguard.flags @@ -0,0 +1,3 @@ +-keep class * + +-verbose diff --git a/ContactsCommon/res/color/popup_menu_color.xml b/ContactsCommon/res/color/popup_menu_color.xml new file mode 100644 index 0000000..b0984e6 --- /dev/null +++ b/ContactsCommon/res/color/popup_menu_color.xml @@ -0,0 +1,20 @@ + + + + + + + diff --git a/ContactsCommon/res/color/tab_text_color.xml b/ContactsCommon/res/color/tab_text_color.xml new file mode 100644 index 0000000..c242019 --- /dev/null +++ b/ContactsCommon/res/color/tab_text_color.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/ContactsCommon/res/drawable-hdpi/ic_ab_search.png b/ContactsCommon/res/drawable-hdpi/ic_ab_search.png new file mode 100644 index 0000000..d86b219 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_ab_search.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_arrow_back_24dp.png b/ContactsCommon/res/drawable-hdpi/ic_arrow_back_24dp.png new file mode 100644 index 0000000..ddbb2c4 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_arrow_back_24dp.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_business_white_120dp.png b/ContactsCommon/res/drawable-hdpi/ic_business_white_120dp.png new file mode 100644 index 0000000..d5942dc Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_business_white_120dp.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_call_24dp.png b/ContactsCommon/res/drawable-hdpi/ic_call_24dp.png new file mode 100644 index 0000000..4dc5065 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_call_24dp.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_call_note_white_24dp.png b/ContactsCommon/res/drawable-hdpi/ic_call_note_white_24dp.png new file mode 100644 index 0000000..503e58e Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_call_note_white_24dp.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_call_voicemail_holo_dark.png b/ContactsCommon/res/drawable-hdpi/ic_call_voicemail_holo_dark.png new file mode 100644 index 0000000..6d64a36 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_call_voicemail_holo_dark.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_close_dk.png b/ContactsCommon/res/drawable-hdpi/ic_close_dk.png new file mode 100644 index 0000000..9695529 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_close_dk.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_group_white_24dp.png b/ContactsCommon/res/drawable-hdpi/ic_group_white_24dp.png new file mode 100644 index 0000000..017e4bb Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_group_white_24dp.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_history_white_drawable_24dp.png b/ContactsCommon/res/drawable-hdpi/ic_history_white_drawable_24dp.png new file mode 100644 index 0000000..703d30b Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_history_white_drawable_24dp.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_info_outline_24dp.png b/ContactsCommon/res/drawable-hdpi/ic_info_outline_24dp.png new file mode 100644 index 0000000..c7b1113 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_info_outline_24dp.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_menu_back.png b/ContactsCommon/res/drawable-hdpi/ic_menu_back.png new file mode 100644 index 0000000..deb3a6d Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_menu_back.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_menu_group_dk.png b/ContactsCommon/res/drawable-hdpi/ic_menu_group_dk.png new file mode 100644 index 0000000..06bd18f Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_menu_group_dk.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_menu_group_lt.png b/ContactsCommon/res/drawable-hdpi/ic_menu_group_lt.png new file mode 100644 index 0000000..d829d11 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_menu_group_lt.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_menu_overflow_lt.png b/ContactsCommon/res/drawable-hdpi/ic_menu_overflow_lt.png new file mode 100644 index 0000000..1ba1295 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_menu_overflow_lt.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_menu_person_dk.png b/ContactsCommon/res/drawable-hdpi/ic_menu_person_dk.png new file mode 100644 index 0000000..5ff3ac5 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_menu_person_dk.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_menu_person_lt.png b/ContactsCommon/res/drawable-hdpi/ic_menu_person_lt.png new file mode 100644 index 0000000..b4ebfc7 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_menu_person_lt.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_menu_remove_field_holo_light.png b/ContactsCommon/res/drawable-hdpi/ic_menu_remove_field_holo_light.png new file mode 100644 index 0000000..03fd2fb Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_menu_remove_field_holo_light.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_menu_settings_holo_light.png b/ContactsCommon/res/drawable-hdpi/ic_menu_settings_holo_light.png new file mode 100644 index 0000000..b7bb5c4 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_menu_settings_holo_light.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_menu_star_dk.png b/ContactsCommon/res/drawable-hdpi/ic_menu_star_dk.png new file mode 100644 index 0000000..e8cb0f5 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_menu_star_dk.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_menu_star_holo_light.png b/ContactsCommon/res/drawable-hdpi/ic_menu_star_holo_light.png new file mode 100644 index 0000000..4513796 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_menu_star_holo_light.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_menu_star_lt.png b/ContactsCommon/res/drawable-hdpi/ic_menu_star_lt.png new file mode 100644 index 0000000..1c9bb81 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_menu_star_lt.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_message_24dp.png b/ContactsCommon/res/drawable-hdpi/ic_message_24dp.png new file mode 100644 index 0000000..57177b7 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_message_24dp.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_overflow_menu.png b/ContactsCommon/res/drawable-hdpi/ic_overflow_menu.png new file mode 100644 index 0000000..262e9df Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_overflow_menu.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_person_24dp.png b/ContactsCommon/res/drawable-hdpi/ic_person_24dp.png new file mode 100644 index 0000000..56708b0 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_person_24dp.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_person_add_24dp.png b/ContactsCommon/res/drawable-hdpi/ic_person_add_24dp.png new file mode 100644 index 0000000..10ae5a7 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_person_add_24dp.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_person_white_120dp.png b/ContactsCommon/res/drawable-hdpi/ic_person_white_120dp.png new file mode 100644 index 0000000..69e6f98 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_person_white_120dp.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_rx_videocam.png b/ContactsCommon/res/drawable-hdpi/ic_rx_videocam.png new file mode 100644 index 0000000..ccdda67 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_rx_videocam.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_scroll_handle.png b/ContactsCommon/res/drawable-hdpi/ic_scroll_handle.png new file mode 100644 index 0000000..3aa29b8 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_scroll_handle.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_tx_videocam.png b/ContactsCommon/res/drawable-hdpi/ic_tx_videocam.png new file mode 100644 index 0000000..603ddc8 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_tx_videocam.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_videocam.png b/ContactsCommon/res/drawable-hdpi/ic_videocam.png new file mode 100644 index 0000000..97905c9 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_videocam.png differ diff --git a/ContactsCommon/res/drawable-hdpi/ic_voicemail_avatar.png b/ContactsCommon/res/drawable-hdpi/ic_voicemail_avatar.png new file mode 100644 index 0000000..2fb7826 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/ic_voicemail_avatar.png differ diff --git a/ContactsCommon/res/drawable-hdpi/list_activated_holo.9.png b/ContactsCommon/res/drawable-hdpi/list_activated_holo.9.png new file mode 100644 index 0000000..4ea7afa Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/list_activated_holo.9.png differ diff --git a/ContactsCommon/res/drawable-hdpi/list_background_holo.9.png b/ContactsCommon/res/drawable-hdpi/list_background_holo.9.png new file mode 100644 index 0000000..cddf9be Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/list_background_holo.9.png differ diff --git a/ContactsCommon/res/drawable-hdpi/list_focused_holo.9.png b/ContactsCommon/res/drawable-hdpi/list_focused_holo.9.png new file mode 100644 index 0000000..86578be Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/list_focused_holo.9.png differ diff --git a/ContactsCommon/res/drawable-hdpi/list_longpressed_holo_light.9.png b/ContactsCommon/res/drawable-hdpi/list_longpressed_holo_light.9.png new file mode 100644 index 0000000..e9afcc9 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/list_longpressed_holo_light.9.png differ diff --git a/ContactsCommon/res/drawable-hdpi/list_pressed_holo_light.9.png b/ContactsCommon/res/drawable-hdpi/list_pressed_holo_light.9.png new file mode 100644 index 0000000..2054530 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/list_pressed_holo_light.9.png differ diff --git a/ContactsCommon/res/drawable-hdpi/list_section_divider_holo_custom.9.png b/ContactsCommon/res/drawable-hdpi/list_section_divider_holo_custom.9.png new file mode 100644 index 0000000..a0f1756 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/list_section_divider_holo_custom.9.png differ diff --git a/ContactsCommon/res/drawable-hdpi/list_title_holo.9.png b/ContactsCommon/res/drawable-hdpi/list_title_holo.9.png new file mode 100644 index 0000000..ae93717 Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/list_title_holo.9.png differ diff --git a/ContactsCommon/res/drawable-hdpi/unknown_source.png b/ContactsCommon/res/drawable-hdpi/unknown_source.png new file mode 100644 index 0000000..0a8f37d Binary files /dev/null and b/ContactsCommon/res/drawable-hdpi/unknown_source.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-hdpi/ic_menu_settings_holo_light.png b/ContactsCommon/res/drawable-ldrtl-hdpi/ic_menu_settings_holo_light.png new file mode 100644 index 0000000..c3d86ca Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-hdpi/ic_menu_settings_holo_light.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-hdpi/list_background_holo.9.png b/ContactsCommon/res/drawable-ldrtl-hdpi/list_background_holo.9.png new file mode 100644 index 0000000..0d80482 Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-hdpi/list_background_holo.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-hdpi/list_focused_holo.9.png b/ContactsCommon/res/drawable-ldrtl-hdpi/list_focused_holo.9.png new file mode 100644 index 0000000..4139942 Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-hdpi/list_focused_holo.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.png b/ContactsCommon/res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.png new file mode 100644 index 0000000..569d28f Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-hdpi/list_title_holo.9.png b/ContactsCommon/res/drawable-ldrtl-hdpi/list_title_holo.9.png new file mode 100644 index 0000000..5ec4c96 Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-hdpi/list_title_holo.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-mdpi/ic_menu_settings_holo_light.png b/ContactsCommon/res/drawable-ldrtl-mdpi/ic_menu_settings_holo_light.png new file mode 100644 index 0000000..ac172b2 Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-mdpi/ic_menu_settings_holo_light.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-mdpi/list_background_holo.9.png b/ContactsCommon/res/drawable-ldrtl-mdpi/list_background_holo.9.png new file mode 100644 index 0000000..d86d611 Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-mdpi/list_background_holo.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-mdpi/list_focused_holo.9.png b/ContactsCommon/res/drawable-ldrtl-mdpi/list_focused_holo.9.png new file mode 100644 index 0000000..4139942 Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-mdpi/list_focused_holo.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.png b/ContactsCommon/res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.png new file mode 100644 index 0000000..065ff62 Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-mdpi/list_title_holo.9.png b/ContactsCommon/res/drawable-ldrtl-mdpi/list_title_holo.9.png new file mode 100644 index 0000000..013d5e7 Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-mdpi/list_title_holo.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-sw600dp-hdpi/list_activated_holo.9.png b/ContactsCommon/res/drawable-ldrtl-sw600dp-hdpi/list_activated_holo.9.png new file mode 100644 index 0000000..947f03c Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-sw600dp-hdpi/list_activated_holo.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-sw600dp-mdpi/list_activated_holo.9.png b/ContactsCommon/res/drawable-ldrtl-sw600dp-mdpi/list_activated_holo.9.png new file mode 100644 index 0000000..6d09d72 Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-sw600dp-mdpi/list_activated_holo.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-sw600dp-xhdpi/list_activated_holo.9.png b/ContactsCommon/res/drawable-ldrtl-sw600dp-xhdpi/list_activated_holo.9.png new file mode 100644 index 0000000..63c7456 Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-sw600dp-xhdpi/list_activated_holo.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-xhdpi/ic_menu_settings_holo_light.png b/ContactsCommon/res/drawable-ldrtl-xhdpi/ic_menu_settings_holo_light.png new file mode 100644 index 0000000..d3a334a Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-xhdpi/ic_menu_settings_holo_light.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-xhdpi/list_background_holo.9.png b/ContactsCommon/res/drawable-ldrtl-xhdpi/list_background_holo.9.png new file mode 100644 index 0000000..f709f2c Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-xhdpi/list_background_holo.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-xhdpi/list_focused_holo.9.png b/ContactsCommon/res/drawable-ldrtl-xhdpi/list_focused_holo.9.png new file mode 100644 index 0000000..4139942 Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-xhdpi/list_focused_holo.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.png b/ContactsCommon/res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.png new file mode 100644 index 0000000..af58554 Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.png differ diff --git a/ContactsCommon/res/drawable-ldrtl-xhdpi/list_title_holo.9.png b/ContactsCommon/res/drawable-ldrtl-xhdpi/list_title_holo.9.png new file mode 100644 index 0000000..cb801ac Binary files /dev/null and b/ContactsCommon/res/drawable-ldrtl-xhdpi/list_title_holo.9.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_ab_search.png b/ContactsCommon/res/drawable-mdpi/ic_ab_search.png new file mode 100644 index 0000000..2b23b1e Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_ab_search.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_arrow_back_24dp.png b/ContactsCommon/res/drawable-mdpi/ic_arrow_back_24dp.png new file mode 100644 index 0000000..1a21fb4 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_arrow_back_24dp.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_business_white_120dp.png b/ContactsCommon/res/drawable-mdpi/ic_business_white_120dp.png new file mode 100644 index 0000000..3dddca5 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_business_white_120dp.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_call_24dp.png b/ContactsCommon/res/drawable-mdpi/ic_call_24dp.png new file mode 100644 index 0000000..77f9de5 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_call_24dp.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_call_note_white_24dp.png b/ContactsCommon/res/drawable-mdpi/ic_call_note_white_24dp.png new file mode 100644 index 0000000..9d359db Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_call_note_white_24dp.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_call_voicemail_holo_dark.png b/ContactsCommon/res/drawable-mdpi/ic_call_voicemail_holo_dark.png new file mode 100644 index 0000000..bf6d006 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_call_voicemail_holo_dark.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_close_dk.png b/ContactsCommon/res/drawable-mdpi/ic_close_dk.png new file mode 100644 index 0000000..590a728 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_close_dk.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_group_white_24dp.png b/ContactsCommon/res/drawable-mdpi/ic_group_white_24dp.png new file mode 100644 index 0000000..ad268bf Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_group_white_24dp.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_history_white_drawable_24dp.png b/ContactsCommon/res/drawable-mdpi/ic_history_white_drawable_24dp.png new file mode 100644 index 0000000..b3000d3 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_history_white_drawable_24dp.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_info_outline_24dp.png b/ContactsCommon/res/drawable-mdpi/ic_info_outline_24dp.png new file mode 100644 index 0000000..353e064 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_info_outline_24dp.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_menu_back.png b/ContactsCommon/res/drawable-mdpi/ic_menu_back.png new file mode 100644 index 0000000..201ad40 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_menu_back.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_menu_group_dk.png b/ContactsCommon/res/drawable-mdpi/ic_menu_group_dk.png new file mode 100644 index 0000000..9aac6d7 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_menu_group_dk.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_menu_group_lt.png b/ContactsCommon/res/drawable-mdpi/ic_menu_group_lt.png new file mode 100644 index 0000000..39c16ed Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_menu_group_lt.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_menu_overflow_lt.png b/ContactsCommon/res/drawable-mdpi/ic_menu_overflow_lt.png new file mode 100644 index 0000000..8415096 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_menu_overflow_lt.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_menu_person_dk.png b/ContactsCommon/res/drawable-mdpi/ic_menu_person_dk.png new file mode 100644 index 0000000..b8fc39a Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_menu_person_dk.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_menu_person_lt.png b/ContactsCommon/res/drawable-mdpi/ic_menu_person_lt.png new file mode 100644 index 0000000..736dfd6 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_menu_person_lt.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_menu_remove_field_holo_light.png b/ContactsCommon/res/drawable-mdpi/ic_menu_remove_field_holo_light.png new file mode 100644 index 0000000..8c44e70 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_menu_remove_field_holo_light.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_menu_settings_holo_light.png b/ContactsCommon/res/drawable-mdpi/ic_menu_settings_holo_light.png new file mode 100644 index 0000000..1ebc112 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_menu_settings_holo_light.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_menu_star_dk.png b/ContactsCommon/res/drawable-mdpi/ic_menu_star_dk.png new file mode 100644 index 0000000..c16c6c5 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_menu_star_dk.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_menu_star_holo_light.png b/ContactsCommon/res/drawable-mdpi/ic_menu_star_holo_light.png new file mode 100644 index 0000000..8263b27 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_menu_star_holo_light.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_menu_star_lt.png b/ContactsCommon/res/drawable-mdpi/ic_menu_star_lt.png new file mode 100644 index 0000000..c67170e Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_menu_star_lt.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_message_24dp.png b/ContactsCommon/res/drawable-mdpi/ic_message_24dp.png new file mode 100644 index 0000000..3072b75 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_message_24dp.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_overflow_menu.png b/ContactsCommon/res/drawable-mdpi/ic_overflow_menu.png new file mode 100644 index 0000000..0e720dd Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_overflow_menu.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_person_24dp.png b/ContactsCommon/res/drawable-mdpi/ic_person_24dp.png new file mode 100644 index 0000000..f0b1c72 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_person_24dp.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_person_add_24dp.png b/ContactsCommon/res/drawable-mdpi/ic_person_add_24dp.png new file mode 100644 index 0000000..38e0a28 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_person_add_24dp.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_person_white_120dp.png b/ContactsCommon/res/drawable-mdpi/ic_person_white_120dp.png new file mode 100644 index 0000000..397d933 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_person_white_120dp.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_rx_videocam.png b/ContactsCommon/res/drawable-mdpi/ic_rx_videocam.png new file mode 100755 index 0000000..1b43a07 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_rx_videocam.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_scroll_handle.png b/ContactsCommon/res/drawable-mdpi/ic_scroll_handle.png new file mode 100644 index 0000000..af75db4 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_scroll_handle.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_tx_videocam.png b/ContactsCommon/res/drawable-mdpi/ic_tx_videocam.png new file mode 100755 index 0000000..64995d1 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_tx_videocam.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_videocam.png b/ContactsCommon/res/drawable-mdpi/ic_videocam.png new file mode 100644 index 0000000..dc9655b Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_videocam.png differ diff --git a/ContactsCommon/res/drawable-mdpi/ic_voicemail_avatar.png b/ContactsCommon/res/drawable-mdpi/ic_voicemail_avatar.png new file mode 100644 index 0000000..4005f24 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/ic_voicemail_avatar.png differ diff --git a/ContactsCommon/res/drawable-mdpi/list_activated_holo.9.png b/ContactsCommon/res/drawable-mdpi/list_activated_holo.9.png new file mode 100644 index 0000000..3bf8e03 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/list_activated_holo.9.png differ diff --git a/ContactsCommon/res/drawable-mdpi/list_background_holo.9.png b/ContactsCommon/res/drawable-mdpi/list_background_holo.9.png new file mode 100644 index 0000000..7d5d66d Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/list_background_holo.9.png differ diff --git a/ContactsCommon/res/drawable-mdpi/list_focused_holo.9.png b/ContactsCommon/res/drawable-mdpi/list_focused_holo.9.png new file mode 100644 index 0000000..86578be Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/list_focused_holo.9.png differ diff --git a/ContactsCommon/res/drawable-mdpi/list_longpressed_holo_light.9.png b/ContactsCommon/res/drawable-mdpi/list_longpressed_holo_light.9.png new file mode 100644 index 0000000..3226ab7 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/list_longpressed_holo_light.9.png differ diff --git a/ContactsCommon/res/drawable-mdpi/list_pressed_holo_light.9.png b/ContactsCommon/res/drawable-mdpi/list_pressed_holo_light.9.png new file mode 100644 index 0000000..061904c Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/list_pressed_holo_light.9.png differ diff --git a/ContactsCommon/res/drawable-mdpi/list_section_divider_holo_custom.9.png b/ContactsCommon/res/drawable-mdpi/list_section_divider_holo_custom.9.png new file mode 100644 index 0000000..1d9371d Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/list_section_divider_holo_custom.9.png differ diff --git a/ContactsCommon/res/drawable-mdpi/list_title_holo.9.png b/ContactsCommon/res/drawable-mdpi/list_title_holo.9.png new file mode 100644 index 0000000..64bd691 Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/list_title_holo.9.png differ diff --git a/ContactsCommon/res/drawable-mdpi/unknown_source.png b/ContactsCommon/res/drawable-mdpi/unknown_source.png new file mode 100644 index 0000000..356748f Binary files /dev/null and b/ContactsCommon/res/drawable-mdpi/unknown_source.png differ diff --git a/ContactsCommon/res/drawable-sw600dp-hdpi/list_activated_holo.9.png b/ContactsCommon/res/drawable-sw600dp-hdpi/list_activated_holo.9.png new file mode 100644 index 0000000..046b24a Binary files /dev/null and b/ContactsCommon/res/drawable-sw600dp-hdpi/list_activated_holo.9.png differ diff --git a/ContactsCommon/res/drawable-sw600dp-mdpi/list_activated_holo.9.png b/ContactsCommon/res/drawable-sw600dp-mdpi/list_activated_holo.9.png new file mode 100644 index 0000000..1ff3373 Binary files /dev/null and b/ContactsCommon/res/drawable-sw600dp-mdpi/list_activated_holo.9.png differ diff --git a/ContactsCommon/res/drawable-sw600dp-xhdpi/list_activated_holo.9.png b/ContactsCommon/res/drawable-sw600dp-xhdpi/list_activated_holo.9.png new file mode 100644 index 0000000..2eb7c7e Binary files /dev/null and b/ContactsCommon/res/drawable-sw600dp-xhdpi/list_activated_holo.9.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_ab_search.png b/ContactsCommon/res/drawable-xhdpi/ic_ab_search.png new file mode 100644 index 0000000..71f7827 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_ab_search.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_arrow_back_24dp.png b/ContactsCommon/res/drawable-xhdpi/ic_arrow_back_24dp.png new file mode 100644 index 0000000..bb73272 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_arrow_back_24dp.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_business_white_120dp.png b/ContactsCommon/res/drawable-xhdpi/ic_business_white_120dp.png new file mode 100644 index 0000000..6256300 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_business_white_120dp.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_call_24dp.png b/ContactsCommon/res/drawable-xhdpi/ic_call_24dp.png new file mode 100644 index 0000000..ef45e93 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_call_24dp.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_call_note_white_24dp.png b/ContactsCommon/res/drawable-xhdpi/ic_call_note_white_24dp.png new file mode 100644 index 0000000..40eed1d Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_call_note_white_24dp.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_call_voicemail_holo_dark.png b/ContactsCommon/res/drawable-xhdpi/ic_call_voicemail_holo_dark.png new file mode 100644 index 0000000..d9684d1 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_call_voicemail_holo_dark.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_close_dk.png b/ContactsCommon/res/drawable-xhdpi/ic_close_dk.png new file mode 100644 index 0000000..5769f11 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_close_dk.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_group_white_24dp.png b/ContactsCommon/res/drawable-xhdpi/ic_group_white_24dp.png new file mode 100644 index 0000000..09c0e3e Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_group_white_24dp.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_history_white_drawable_24dp.png b/ContactsCommon/res/drawable-xhdpi/ic_history_white_drawable_24dp.png new file mode 100644 index 0000000..e188d4a Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_history_white_drawable_24dp.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_info_outline_24dp.png b/ContactsCommon/res/drawable-xhdpi/ic_info_outline_24dp.png new file mode 100644 index 0000000..c571b2e Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_info_outline_24dp.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_menu_back.png b/ContactsCommon/res/drawable-xhdpi/ic_menu_back.png new file mode 100644 index 0000000..d2f7099 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_menu_back.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_menu_group_dk.png b/ContactsCommon/res/drawable-xhdpi/ic_menu_group_dk.png new file mode 100644 index 0000000..ce5f704 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_menu_group_dk.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_menu_group_lt.png b/ContactsCommon/res/drawable-xhdpi/ic_menu_group_lt.png new file mode 100644 index 0000000..3d0580f Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_menu_group_lt.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_menu_overflow_lt.png b/ContactsCommon/res/drawable-xhdpi/ic_menu_overflow_lt.png new file mode 100644 index 0000000..f91b718 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_menu_overflow_lt.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_menu_person_dk.png b/ContactsCommon/res/drawable-xhdpi/ic_menu_person_dk.png new file mode 100644 index 0000000..2fbd458 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_menu_person_dk.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_menu_person_lt.png b/ContactsCommon/res/drawable-xhdpi/ic_menu_person_lt.png new file mode 100644 index 0000000..2cdb2d7 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_menu_person_lt.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_menu_remove_field_holo_light.png b/ContactsCommon/res/drawable-xhdpi/ic_menu_remove_field_holo_light.png new file mode 100644 index 0000000..65a6b7b Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_menu_remove_field_holo_light.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_menu_settings_holo_light.png b/ContactsCommon/res/drawable-xhdpi/ic_menu_settings_holo_light.png new file mode 100644 index 0000000..68ba92b Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_menu_settings_holo_light.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_menu_star_dk.png b/ContactsCommon/res/drawable-xhdpi/ic_menu_star_dk.png new file mode 100644 index 0000000..48483a0 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_menu_star_dk.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_menu_star_holo_light.png b/ContactsCommon/res/drawable-xhdpi/ic_menu_star_holo_light.png new file mode 100644 index 0000000..9067911 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_menu_star_holo_light.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_menu_star_lt.png b/ContactsCommon/res/drawable-xhdpi/ic_menu_star_lt.png new file mode 100644 index 0000000..e053c75 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_menu_star_lt.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_message_24dp.png b/ContactsCommon/res/drawable-xhdpi/ic_message_24dp.png new file mode 100644 index 0000000..763767b Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_message_24dp.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_overflow_menu.png b/ContactsCommon/res/drawable-xhdpi/ic_overflow_menu.png new file mode 100644 index 0000000..9156076 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_overflow_menu.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_person_24dp.png b/ContactsCommon/res/drawable-xhdpi/ic_person_24dp.png new file mode 100644 index 0000000..aea15f0 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_person_24dp.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_person_add_24dp.png b/ContactsCommon/res/drawable-xhdpi/ic_person_add_24dp.png new file mode 100644 index 0000000..7e7c289 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_person_add_24dp.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_person_white_120dp.png b/ContactsCommon/res/drawable-xhdpi/ic_person_white_120dp.png new file mode 100644 index 0000000..8d80a05 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_person_white_120dp.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_rx_videocam.png b/ContactsCommon/res/drawable-xhdpi/ic_rx_videocam.png new file mode 100755 index 0000000..43319dc Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_rx_videocam.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_scroll_handle.png b/ContactsCommon/res/drawable-xhdpi/ic_scroll_handle.png new file mode 100644 index 0000000..2d43c4d Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_scroll_handle.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_tx_videocam.png b/ContactsCommon/res/drawable-xhdpi/ic_tx_videocam.png new file mode 100755 index 0000000..d2671ed Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_tx_videocam.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_videocam.png b/ContactsCommon/res/drawable-xhdpi/ic_videocam.png new file mode 100644 index 0000000..c1783de Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_videocam.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/ic_voicemail_avatar.png b/ContactsCommon/res/drawable-xhdpi/ic_voicemail_avatar.png new file mode 100644 index 0000000..f24505d Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/ic_voicemail_avatar.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/list_activated_holo.9.png b/ContactsCommon/res/drawable-xhdpi/list_activated_holo.9.png new file mode 100644 index 0000000..eda10e6 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/list_activated_holo.9.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/list_background_holo.9.png b/ContactsCommon/res/drawable-xhdpi/list_background_holo.9.png new file mode 100644 index 0000000..b652725 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/list_background_holo.9.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/list_focused_holo.9.png b/ContactsCommon/res/drawable-xhdpi/list_focused_holo.9.png new file mode 100644 index 0000000..86578be Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/list_focused_holo.9.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/list_longpressed_holo_light.9.png b/ContactsCommon/res/drawable-xhdpi/list_longpressed_holo_light.9.png new file mode 100644 index 0000000..5532e88 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/list_longpressed_holo_light.9.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/list_pressed_holo_light.9.png b/ContactsCommon/res/drawable-xhdpi/list_pressed_holo_light.9.png new file mode 100644 index 0000000..f4af926 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/list_pressed_holo_light.9.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/list_section_divider_holo_custom.9.png b/ContactsCommon/res/drawable-xhdpi/list_section_divider_holo_custom.9.png new file mode 100644 index 0000000..8fb0636 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/list_section_divider_holo_custom.9.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/list_title_holo.9.png b/ContactsCommon/res/drawable-xhdpi/list_title_holo.9.png new file mode 100644 index 0000000..f4f00ca Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/list_title_holo.9.png differ diff --git a/ContactsCommon/res/drawable-xhdpi/unknown_source.png b/ContactsCommon/res/drawable-xhdpi/unknown_source.png new file mode 100644 index 0000000..35e8fb4 Binary files /dev/null and b/ContactsCommon/res/drawable-xhdpi/unknown_source.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_ab_search.png b/ContactsCommon/res/drawable-xxhdpi/ic_ab_search.png new file mode 100644 index 0000000..142c545 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_ab_search.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_arrow_back_24dp.png b/ContactsCommon/res/drawable-xxhdpi/ic_arrow_back_24dp.png new file mode 100644 index 0000000..72c51b0 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_arrow_back_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_business_white_120dp.png b/ContactsCommon/res/drawable-xxhdpi/ic_business_white_120dp.png new file mode 100644 index 0000000..8d67e44 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_business_white_120dp.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_call_24dp.png b/ContactsCommon/res/drawable-xxhdpi/ic_call_24dp.png new file mode 100644 index 0000000..90ead2e Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_call_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_call_note_white_24dp.png b/ContactsCommon/res/drawable-xxhdpi/ic_call_note_white_24dp.png new file mode 100644 index 0000000..2656cad Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_call_note_white_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_call_voicemail_holo_dark.png b/ContactsCommon/res/drawable-xxhdpi/ic_call_voicemail_holo_dark.png new file mode 100644 index 0000000..ac5b83b Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_call_voicemail_holo_dark.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_close_dk.png b/ContactsCommon/res/drawable-xxhdpi/ic_close_dk.png new file mode 100644 index 0000000..670bf79 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_close_dk.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_group_white_24dp.png b/ContactsCommon/res/drawable-xxhdpi/ic_group_white_24dp.png new file mode 100644 index 0000000..03cad4c Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_group_white_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_history_white_drawable_24dp.png b/ContactsCommon/res/drawable-xxhdpi/ic_history_white_drawable_24dp.png new file mode 100644 index 0000000..f44df1a Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_history_white_drawable_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_info_outline_24dp.png b/ContactsCommon/res/drawable-xxhdpi/ic_info_outline_24dp.png new file mode 100644 index 0000000..c41a5fc Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_info_outline_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_menu_back.png b/ContactsCommon/res/drawable-xxhdpi/ic_menu_back.png new file mode 100644 index 0000000..436a82d Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_menu_back.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_menu_group_dk.png b/ContactsCommon/res/drawable-xxhdpi/ic_menu_group_dk.png new file mode 100644 index 0000000..a70c60c Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_menu_group_dk.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_menu_group_lt.png b/ContactsCommon/res/drawable-xxhdpi/ic_menu_group_lt.png new file mode 100644 index 0000000..c64b9de Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_menu_group_lt.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_menu_overflow_lt.png b/ContactsCommon/res/drawable-xxhdpi/ic_menu_overflow_lt.png new file mode 100644 index 0000000..ff1759b Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_menu_overflow_lt.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_menu_person_dk.png b/ContactsCommon/res/drawable-xxhdpi/ic_menu_person_dk.png new file mode 100644 index 0000000..878e694 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_menu_person_dk.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_menu_person_lt.png b/ContactsCommon/res/drawable-xxhdpi/ic_menu_person_lt.png new file mode 100644 index 0000000..ed4138f Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_menu_person_lt.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_menu_remove_field_holo_light.png b/ContactsCommon/res/drawable-xxhdpi/ic_menu_remove_field_holo_light.png new file mode 100644 index 0000000..0fec2f2 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_menu_remove_field_holo_light.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_menu_settings_holo_light.png b/ContactsCommon/res/drawable-xxhdpi/ic_menu_settings_holo_light.png new file mode 100644 index 0000000..5b672a3 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_menu_settings_holo_light.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_menu_star_dk.png b/ContactsCommon/res/drawable-xxhdpi/ic_menu_star_dk.png new file mode 100644 index 0000000..fa682b1 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_menu_star_dk.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_menu_star_holo_light.png b/ContactsCommon/res/drawable-xxhdpi/ic_menu_star_holo_light.png new file mode 100644 index 0000000..6c45bc8 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_menu_star_holo_light.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_menu_star_lt.png b/ContactsCommon/res/drawable-xxhdpi/ic_menu_star_lt.png new file mode 100644 index 0000000..955f738 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_menu_star_lt.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_message_24dp.png b/ContactsCommon/res/drawable-xxhdpi/ic_message_24dp.png new file mode 100644 index 0000000..0a79824 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_message_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_overflow_menu.png b/ContactsCommon/res/drawable-xxhdpi/ic_overflow_menu.png new file mode 100644 index 0000000..92526f5 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_overflow_menu.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_person_24dp.png b/ContactsCommon/res/drawable-xxhdpi/ic_person_24dp.png new file mode 100644 index 0000000..184f741 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_person_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_person_add_24dp.png b/ContactsCommon/res/drawable-xxhdpi/ic_person_add_24dp.png new file mode 100644 index 0000000..8f744f0 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_person_add_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_person_white_120dp.png b/ContactsCommon/res/drawable-xxhdpi/ic_person_white_120dp.png new file mode 100644 index 0000000..b29df2f Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_person_white_120dp.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_rx_videocam.png b/ContactsCommon/res/drawable-xxhdpi/ic_rx_videocam.png new file mode 100755 index 0000000..89d29b7 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_rx_videocam.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_scroll_handle.png b/ContactsCommon/res/drawable-xxhdpi/ic_scroll_handle.png new file mode 100644 index 0000000..55f1d13 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_scroll_handle.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_tx_videocam.png b/ContactsCommon/res/drawable-xxhdpi/ic_tx_videocam.png new file mode 100755 index 0000000..8d897ba Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_tx_videocam.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_videocam.png b/ContactsCommon/res/drawable-xxhdpi/ic_videocam.png new file mode 100644 index 0000000..4ab5ad0 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_videocam.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/ic_voicemail_avatar.png b/ContactsCommon/res/drawable-xxhdpi/ic_voicemail_avatar.png new file mode 100644 index 0000000..182def8 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/ic_voicemail_avatar.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/list_activated_holo.9.png b/ContactsCommon/res/drawable-xxhdpi/list_activated_holo.9.png new file mode 100644 index 0000000..52c00dd Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/list_activated_holo.9.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/list_focused_holo.9.png b/ContactsCommon/res/drawable-xxhdpi/list_focused_holo.9.png new file mode 100644 index 0000000..3e4ca68 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/list_focused_holo.9.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/list_longpressed_holo_light.9.png b/ContactsCommon/res/drawable-xxhdpi/list_longpressed_holo_light.9.png new file mode 100644 index 0000000..230d649 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/list_longpressed_holo_light.9.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/list_pressed_holo_light.9.png b/ContactsCommon/res/drawable-xxhdpi/list_pressed_holo_light.9.png new file mode 100644 index 0000000..1352a17 Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/list_pressed_holo_light.9.png differ diff --git a/ContactsCommon/res/drawable-xxhdpi/list_title_holo.9.png b/ContactsCommon/res/drawable-xxhdpi/list_title_holo.9.png new file mode 100644 index 0000000..7ddf14a Binary files /dev/null and b/ContactsCommon/res/drawable-xxhdpi/list_title_holo.9.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_ab_search.png b/ContactsCommon/res/drawable-xxxhdpi/ic_ab_search.png new file mode 100644 index 0000000..2ffb2ec Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_ab_search.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_arrow_back_24dp.png b/ContactsCommon/res/drawable-xxxhdpi/ic_arrow_back_24dp.png new file mode 100644 index 0000000..ae01a04 Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_arrow_back_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_business_white_120dp.png b/ContactsCommon/res/drawable-xxxhdpi/ic_business_white_120dp.png new file mode 100644 index 0000000..1741675 Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_business_white_120dp.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_call_24dp.png b/ContactsCommon/res/drawable-xxxhdpi/ic_call_24dp.png new file mode 100644 index 0000000..b0e0205 Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_call_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_call_note_white_24dp.png b/ContactsCommon/res/drawable-xxxhdpi/ic_call_note_white_24dp.png new file mode 100644 index 0000000..903c162 Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_call_note_white_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_close_dk.png b/ContactsCommon/res/drawable-xxxhdpi/ic_close_dk.png new file mode 100644 index 0000000..3a5540f Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_close_dk.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_history_white_drawable_24dp.png b/ContactsCommon/res/drawable-xxxhdpi/ic_history_white_drawable_24dp.png new file mode 100644 index 0000000..5b96af5 Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_history_white_drawable_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_info_outline_24dp.png b/ContactsCommon/res/drawable-xxxhdpi/ic_info_outline_24dp.png new file mode 100644 index 0000000..3a82cab Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_info_outline_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_message_24dp.png b/ContactsCommon/res/drawable-xxxhdpi/ic_message_24dp.png new file mode 100644 index 0000000..fa7c17a Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_message_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_overflow_menu.png b/ContactsCommon/res/drawable-xxxhdpi/ic_overflow_menu.png new file mode 100644 index 0000000..9028bd4 Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_overflow_menu.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_person_24dp.png b/ContactsCommon/res/drawable-xxxhdpi/ic_person_24dp.png new file mode 100644 index 0000000..33d40d8 Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_person_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_person_add_24dp.png b/ContactsCommon/res/drawable-xxxhdpi/ic_person_add_24dp.png new file mode 100644 index 0000000..2fa2cca Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_person_add_24dp.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_person_white_120dp.png b/ContactsCommon/res/drawable-xxxhdpi/ic_person_white_120dp.png new file mode 100644 index 0000000..b53cc11 Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_person_white_120dp.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_rx_videocam.png b/ContactsCommon/res/drawable-xxxhdpi/ic_rx_videocam.png new file mode 100755 index 0000000..095e090 Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_rx_videocam.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_scroll_handle.png b/ContactsCommon/res/drawable-xxxhdpi/ic_scroll_handle.png new file mode 100644 index 0000000..d90782a Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_scroll_handle.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_tx_videocam.png b/ContactsCommon/res/drawable-xxxhdpi/ic_tx_videocam.png new file mode 100755 index 0000000..79ea67b Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_tx_videocam.png differ diff --git a/ContactsCommon/res/drawable-xxxhdpi/ic_videocam.png b/ContactsCommon/res/drawable-xxxhdpi/ic_videocam.png new file mode 100644 index 0000000..0643ea5 Binary files /dev/null and b/ContactsCommon/res/drawable-xxxhdpi/ic_videocam.png differ diff --git a/ContactsCommon/res/drawable/dialog_background_material.xml b/ContactsCommon/res/drawable/dialog_background_material.xml new file mode 100644 index 0000000..fb586a0 --- /dev/null +++ b/ContactsCommon/res/drawable/dialog_background_material.xml @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/ContactsCommon/res/drawable/fastscroll_thumb.xml b/ContactsCommon/res/drawable/fastscroll_thumb.xml new file mode 100644 index 0000000..a68f89e --- /dev/null +++ b/ContactsCommon/res/drawable/fastscroll_thumb.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/ContactsCommon/res/drawable/ic_back_arrow.xml b/ContactsCommon/res/drawable/ic_back_arrow.xml new file mode 100644 index 0000000..42e5e49 --- /dev/null +++ b/ContactsCommon/res/drawable/ic_back_arrow.xml @@ -0,0 +1,20 @@ + + + diff --git a/ContactsCommon/res/drawable/ic_call.xml b/ContactsCommon/res/drawable/ic_call.xml new file mode 100644 index 0000000..e06317b --- /dev/null +++ b/ContactsCommon/res/drawable/ic_call.xml @@ -0,0 +1,19 @@ + + + diff --git a/ContactsCommon/res/drawable/ic_message_24dp.xml b/ContactsCommon/res/drawable/ic_message_24dp.xml new file mode 100644 index 0000000..b1bd743 --- /dev/null +++ b/ContactsCommon/res/drawable/ic_message_24dp.xml @@ -0,0 +1,19 @@ + + + diff --git a/ContactsCommon/res/drawable/ic_person_add_tinted_24dp.xml b/ContactsCommon/res/drawable/ic_person_add_tinted_24dp.xml new file mode 100644 index 0000000..3bbf4bd --- /dev/null +++ b/ContactsCommon/res/drawable/ic_person_add_tinted_24dp.xml @@ -0,0 +1,20 @@ + + + diff --git a/ContactsCommon/res/drawable/ic_scroll_handle_default.xml b/ContactsCommon/res/drawable/ic_scroll_handle_default.xml new file mode 100644 index 0000000..8f490af --- /dev/null +++ b/ContactsCommon/res/drawable/ic_scroll_handle_default.xml @@ -0,0 +1,20 @@ + + + + diff --git a/ContactsCommon/res/drawable/ic_scroll_handle_pressed.xml b/ContactsCommon/res/drawable/ic_scroll_handle_pressed.xml new file mode 100644 index 0000000..bd62ceb --- /dev/null +++ b/ContactsCommon/res/drawable/ic_scroll_handle_pressed.xml @@ -0,0 +1,20 @@ + + + + diff --git a/ContactsCommon/res/drawable/ic_search_add_contact.xml b/ContactsCommon/res/drawable/ic_search_add_contact.xml new file mode 100644 index 0000000..9a313cd --- /dev/null +++ b/ContactsCommon/res/drawable/ic_search_add_contact.xml @@ -0,0 +1,20 @@ + + + + diff --git a/ContactsCommon/res/drawable/ic_tab_all.xml b/ContactsCommon/res/drawable/ic_tab_all.xml new file mode 100644 index 0000000..37d35f4 --- /dev/null +++ b/ContactsCommon/res/drawable/ic_tab_all.xml @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/ContactsCommon/res/drawable/ic_tab_groups.xml b/ContactsCommon/res/drawable/ic_tab_groups.xml new file mode 100644 index 0000000..c792bb8 --- /dev/null +++ b/ContactsCommon/res/drawable/ic_tab_groups.xml @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/ContactsCommon/res/drawable/ic_tab_starred.xml b/ContactsCommon/res/drawable/ic_tab_starred.xml new file mode 100644 index 0000000..66d468b --- /dev/null +++ b/ContactsCommon/res/drawable/ic_tab_starred.xml @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/ContactsCommon/res/drawable/item_background_material_borderless_dark.xml b/ContactsCommon/res/drawable/item_background_material_borderless_dark.xml new file mode 100644 index 0000000..2a47e63 --- /dev/null +++ b/ContactsCommon/res/drawable/item_background_material_borderless_dark.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/ContactsCommon/res/drawable/item_background_material_dark.xml b/ContactsCommon/res/drawable/item_background_material_dark.xml new file mode 100644 index 0000000..200fcf7 --- /dev/null +++ b/ContactsCommon/res/drawable/item_background_material_dark.xml @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/ContactsCommon/res/drawable/list_item_activated_background.xml b/ContactsCommon/res/drawable/list_item_activated_background.xml new file mode 100644 index 0000000..a58577e --- /dev/null +++ b/ContactsCommon/res/drawable/list_item_activated_background.xml @@ -0,0 +1,20 @@ + + + + + + + diff --git a/ContactsCommon/res/drawable/list_selector_background_transition_holo_light.xml b/ContactsCommon/res/drawable/list_selector_background_transition_holo_light.xml new file mode 100644 index 0000000..2541a2b --- /dev/null +++ b/ContactsCommon/res/drawable/list_selector_background_transition_holo_light.xml @@ -0,0 +1,20 @@ + + + + + + + diff --git a/ContactsCommon/res/drawable/searchedittext_custom_cursor.xml b/ContactsCommon/res/drawable/searchedittext_custom_cursor.xml new file mode 100644 index 0000000..0dc0ce4 --- /dev/null +++ b/ContactsCommon/res/drawable/searchedittext_custom_cursor.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ContactsCommon/res/drawable/view_pager_tab_background.xml b/ContactsCommon/res/drawable/view_pager_tab_background.xml new file mode 100644 index 0000000..f9da59d --- /dev/null +++ b/ContactsCommon/res/drawable/view_pager_tab_background.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/ContactsCommon/res/layout/account_filter_header.xml b/ContactsCommon/res/layout/account_filter_header.xml new file mode 100644 index 0000000..2b6e110 --- /dev/null +++ b/ContactsCommon/res/layout/account_filter_header.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + diff --git a/ContactsCommon/res/layout/account_selector_list_item.xml b/ContactsCommon/res/layout/account_selector_list_item.xml new file mode 100644 index 0000000..076cc88 --- /dev/null +++ b/ContactsCommon/res/layout/account_selector_list_item.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + diff --git a/ContactsCommon/res/layout/call_subject_history.xml b/ContactsCommon/res/layout/call_subject_history.xml new file mode 100644 index 0000000..be369e0 --- /dev/null +++ b/ContactsCommon/res/layout/call_subject_history.xml @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/ContactsCommon/res/layout/call_subject_history_list_item.xml b/ContactsCommon/res/layout/call_subject_history_list_item.xml new file mode 100644 index 0000000..b8cce47 --- /dev/null +++ b/ContactsCommon/res/layout/call_subject_history_list_item.xml @@ -0,0 +1,29 @@ + + + + diff --git a/ContactsCommon/res/layout/contact_detail_list_padding.xml b/ContactsCommon/res/layout/contact_detail_list_padding.xml new file mode 100644 index 0000000..c5dbd06 --- /dev/null +++ b/ContactsCommon/res/layout/contact_detail_list_padding.xml @@ -0,0 +1,27 @@ + + + + + + + diff --git a/ContactsCommon/res/layout/contact_list_card.xml b/ContactsCommon/res/layout/contact_list_card.xml new file mode 100644 index 0000000..93786aa --- /dev/null +++ b/ContactsCommon/res/layout/contact_list_card.xml @@ -0,0 +1,39 @@ + + + + + + + diff --git a/ContactsCommon/res/layout/contact_list_content.xml b/ContactsCommon/res/layout/contact_list_content.xml new file mode 100644 index 0000000..c29bb3d --- /dev/null +++ b/ContactsCommon/res/layout/contact_list_content.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + diff --git a/ContactsCommon/res/layout/contact_list_filter.xml b/ContactsCommon/res/layout/contact_list_filter.xml new file mode 100644 index 0000000..d419c7e --- /dev/null +++ b/ContactsCommon/res/layout/contact_list_filter.xml @@ -0,0 +1,43 @@ + + + + + + + + + diff --git a/ContactsCommon/res/layout/contact_list_filter_custom.xml b/ContactsCommon/res/layout/contact_list_filter_custom.xml new file mode 100644 index 0000000..b6d9229 --- /dev/null +++ b/ContactsCommon/res/layout/contact_list_filter_custom.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + +