diff options
31 files changed, 10 insertions, 1597 deletions
@@ -6,9 +6,6 @@ LOCAL_MODULE_TAGS := user LOCAL_SRC_FILES := $(call all-java-files-under,src) LOCAL_JAVA_LIBRARIES := ext \ - com.android.im.plugin # TODO: remove this and load this on demand. - # (HACK: include this so we can load the - # classes defined in this plugin package) LOCAL_PACKAGE_NAME := ImProvider LOCAL_CERTIFICATE := shared diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 8609528..f9cd664 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -18,11 +18,9 @@ <uses-permission android:name="com.android.providers.im.permission.WRITE_ONLY" /> <application android:process="android.process.acore" - android:label="@string/im_label" + android:label="@string/app_label" android:icon="@drawable/ic_launcher_im" android:taskAffinity="android.task.im"> - <!-- TODO: remove this library include. It's a hack so we can load its classes --> - <uses-library android:name="com.android.im.plugin" /> <provider android:name="ImProvider" android:authorities="im" android:multiprocess="false" @@ -30,19 +28,5 @@ android:writePermission="com.android.providers.im.permission.WRITE_ONLY" android:grantUriPermissions="true" /> - <activity android:name=".LandingPage" - android:enabled="@bool/enableLandingPageActivity"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <action android:name="android.intent.action.VIEW" /> - <category android:name="android.intent.category.DEFAULT" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - <intent-filter> - <action android:name="android.intent.action.VIEW" /> - <category android:name="android.intent.category.DEFAULT" /> - <data android:mimeType="vnd.android.cursor.dir/im-providers" /> - </intent-filter> - </activity> </application> </manifest> diff --git a/res/color/landing_page_text.xml b/res/color/landing_page_text.xml deleted file mode 100644 index 6e967d9..0000000 --- a/res/color/landing_page_text.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2007 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. ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_focused="true" android:color="#ff000000"/> - <item android:state_selected="true" android:color="#ff000000"/> - <item android:state_pressed="true" android:color="#ff000000"/> - <item android:color="#ffffffff"/> -</selector> diff --git a/res/color/landing_page_text_secondary.xml b/res/color/landing_page_text_secondary.xml deleted file mode 100644 index 78cc390..0000000 --- a/res/color/landing_page_text_secondary.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2007 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. ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_focused="true" android:color="#ff000000"/> - <item android:state_selected="true" android:color="#ff000000"/> - <item android:state_pressed="true" android:color="#ff000000"/> - <item android:color="#ffbebebe"/> -</selector> diff --git a/res/layout/account_view.xml b/res/layout/account_view.xml deleted file mode 100644 index 46bdecf..0000000 --- a/res/layout/account_view.xml +++ /dev/null @@ -1,92 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* - * Copyright (C) 2008 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. - */ ---> - -<com.android.providers.im.ProviderListItem - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="horizontal" - android:layout_width="fill_parent" - android:layout_height="?android:attr/listPreferredItemHeight"> - - <ImageView - android:id="@+id/providerIcon" - android:layout_gravity="center_vertical" - android:scaleType="fitXY" - android:paddingLeft="5dip" - android:paddingRight="2dip" - android:layout_width="39dip" - android:layout_height="32dip"/> - - <LinearLayout - android:id="@+id/underBubble" - android:orientation="horizontal" - android:layout_weight="1" - android:layout_width="0dip" - android:layout_height="fill_parent"> - - <LinearLayout - android:orientation="vertical" - android:layout_weight="1" - android:layout_width="0dip" - android:layout_height="wrap_content" - android:layout_gravity="center_vertical"> - - <LinearLayout - android:orientation="horizontal" - android:layout_width="fill_parent" - android:layout_height="wrap_content"> - - <TextView android:id="@+id/providerName" - android:textColor="@color/landing_page_text" - android:textAppearance="?android:attr/textAppearanceLarge" - android:textStyle="bold" - android:maxLines="1" - android:layout_weight="0" - android:ellipsize="marquee" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> - <TextView android:id="@+id/conversations" - android:textAppearance="?android:attr/textAppearanceMedium" - android:textColor="@color/landing_page_text_secondary" - android:maxLines="1" - android:layout_weight="1" - android:paddingRight="3dip" - android:paddingLeft="5dip" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> - </LinearLayout> - - <TextView android:id="@+id/loginName" - android:textAppearance="?android:attr/textAppearanceSmall" - android:textColor="@color/landing_page_text" - android:ellipsize="marquee" - android:maxLines="1" - android:layout_width="fill_parent" - android:layout_height="wrap_content"/> - </LinearLayout> - <ImageView - android:id="@+id/statusIcon" - android:scaleType="fitXY" - android:paddingRight="6dip" - android:paddingLeft="6dip" - android:layout_weight="0" - android:layout_gravity="center_vertical" - android:layout_width="30dip" - android:layout_height="18dip"/> - </LinearLayout> -</com.android.providers.im.ProviderListItem> diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index bb35717..2b9bc99 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -19,19 +19,4 @@ <string name="ro_perm_desc">"Povoluje aplikacím číst data z poskytovatele obsahu chatu."</string> <string name="wo_perm_label">"chatovat"</string> <string name="wo_perm_desc">"Povoluje aplikacím zapisovat data do poskytovatele obsahu chatových zpráv."</string> - <string name="im_label">"Chat"</string> - <string name="landing_page_title">"Chat – vyberte účet"</string> - <string name="menu_add_account">"Přidat účet"</string> - <string name="menu_edit_account">"Upravit účet"</string> - <string name="menu_remove_account">"Odstranit účet"</string> - <string name="sign_in">"Přihlásit se"</string> - <string name="menu_sign_out">"Odhlásit se"</string> - <string name="menu_settings">"Nastavení"</string> - <string name="menu_sign_out_all">"Odhlásit se ze všech služeb"</string> - <string name="choose_account_title">"Chat – vyberte účet"</string> - <!-- no translation found for conversations (6809253595345281731) --> - <skip /> - <string name="add_account">"Přidat účet <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string> - <string name="menu_view_contact_list">"Seznam kontaktů"</string> - <string name="signing_in_wait">"Přihlašování..."</string> </resources> diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 2e19b5f..c002120 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -19,18 +19,4 @@ <string name="ro_perm_desc">"Tillader programmer at læse data fra IM-indholdsleverandøren."</string> <string name="wo_perm_label">"skriv chatbeskeder"</string> <string name="wo_perm_desc">"Tillader programmer at skrive data til IM-indholdsleverandøren."</string> - <string name="im_label">"IM"</string> - <string name="landing_page_title">"Chat – Vælg en konto"</string> - <string name="menu_add_account">"Tilføj konto"</string> - <string name="menu_edit_account">"Rediger konto"</string> - <string name="menu_remove_account">"Fjern konto"</string> - <string name="sign_in">"Log ind"</string> - <string name="menu_sign_out">"Log ud"</string> - <string name="menu_settings">"Indstillinger"</string> - <string name="menu_sign_out_all">"Log alle ud"</string> - <string name="choose_account_title">"Chat – Vælg en konto"</string> - <string name="conversations">"(%1$d)"</string> - <string name="add_account">"Tilføj <xliff:g id="ACCOUNT">%1$s</xliff:g>-konto"</string> - <string name="menu_view_contact_list">"Liste over kontaktpersoner"</string> - <string name="signing_in_wait">"Logger ind ..."</string> </resources> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 79f89d7..b3d2dd9 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -19,19 +19,4 @@ <string name="ro_perm_desc">"Ermöglicht Anwendungen das Lesen von Daten des IM-Content-Providers."</string> <string name="wo_perm_label">"Chat-Nachrichten verfassen"</string> <string name="wo_perm_desc">"Ermöglicht Anwendungen das Schreiben von Daten an den IM-Content-Provider."</string> - <string name="im_label">"IM"</string> - <string name="landing_page_title">"Chat - Konto auswählen"</string> - <string name="menu_add_account">"Konto hinzufügen"</string> - <string name="menu_edit_account">"Konto bearbeiten"</string> - <string name="menu_remove_account">"Konto entfernen"</string> - <string name="sign_in">"Anmelden"</string> - <string name="menu_sign_out">"Abmelden"</string> - <string name="menu_settings">"Einstellungen"</string> - <string name="menu_sign_out_all">"Alle abmelden"</string> - <string name="choose_account_title">"Chat - Konto auswählen"</string> - <!-- no translation found for conversations (6809253595345281731) --> - <skip /> - <string name="add_account">"<xliff:g id="ACCOUNT">%1$s</xliff:g>-Konto hinzufügen"</string> - <string name="menu_view_contact_list">"Kontaktliste"</string> - <string name="signing_in_wait">"Anmeldung..."</string> </resources> diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 95c7d0e..fc96a39 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -19,18 +19,4 @@ <string name="ro_perm_desc">"Επιτρέπει στις εφαρμογές την ανάγνωση δεδομένων από τον πάροχο περιεχομένου ανταλλαγής άμεσων μηνυμάτων (IM)."</string> <string name="wo_perm_label">"εγγραφή άμεσων μηνυμάτων"</string> <string name="wo_perm_desc">"Επιτρέπει στις εφαρμογές την εγγραφή δεδομένων από τον πάροχο περιεχομένου ανταλλαγής άμεσων μηνυμάτων (IM)."</string> - <string name="im_label">"Ανταλλαγή άμεσων μηνυμάτων (IM)"</string> - <string name="landing_page_title">"Συζήτηση - Επιλογή λογαριασμού"</string> - <string name="menu_add_account">"Προσθήκη λογαριασμού"</string> - <string name="menu_edit_account">"Επεξεργασία λογαριασμού"</string> - <string name="menu_remove_account">"Κατάργηση λογαριασμού"</string> - <string name="sign_in">"Σύνδεση"</string> - <string name="menu_sign_out">"Αποσύνδεση"</string> - <string name="menu_settings">"Ρυθμίσεις"</string> - <string name="menu_sign_out_all">"Αποσύνδεση όλων"</string> - <string name="choose_account_title">"Συζήτηση - Επιλογή λογαριασμού"</string> - <string name="conversations">"(%1$d)"</string> - <string name="add_account">"Προσθήκη λογαριασμού <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string> - <string name="menu_view_contact_list">"Λίστα επαφών"</string> - <string name="signing_in_wait">"Σύνδεση..."</string> </resources> diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index fa272a6..b1faf75 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -19,18 +19,4 @@ <string name="ro_perm_desc">"Permite a una aplicación leer datos del proveedor de contenido de mensajería instantánea"</string> <string name="wo_perm_label">"escribir mensajes instantáneos"</string> <string name="wo_perm_desc">"Permite a una aplicación introducir datos en el proveedor de contenido de mensajería instantánea"</string> - <string name="im_label">"Mensajería instantánea"</string> - <string name="landing_page_title">"Chat - Seleccionar una cuenta"</string> - <string name="menu_add_account">"Agregar cuenta"</string> - <string name="menu_edit_account">"Editar cuenta"</string> - <string name="menu_remove_account">"Suprimir cuenta"</string> - <string name="sign_in">"Inicia sesión"</string> - <string name="menu_sign_out">"Cerrar sesión"</string> - <string name="menu_settings">"Configuración"</string> - <string name="menu_sign_out_all">"Cerrar sesión de todo"</string> - <string name="choose_account_title">"Chat - Seleccionar una cuenta"</string> - <string name="conversations">"(%1$d)"</string> - <string name="add_account">"Agregar cuenta <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string> - <string name="menu_view_contact_list">"Lista de contactos"</string> - <string name="signing_in_wait">"Iniciando sesión..."</string> </resources> diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 128c806..4849e71 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -19,19 +19,4 @@ <string name="ro_perm_desc">"Permite que las aplicaciones lean datos del proveedor de contenido de MI."</string> <string name="wo_perm_label">"escribir mensajes instantáneos"</string> <string name="wo_perm_desc">"Permite que las aplicaciones escriban datos en el proveedor de contenido de MI."</string> - <string name="im_label">"MI"</string> - <string name="landing_page_title">"Chat: seleccionar una cuenta"</string> - <string name="menu_add_account">"Añadir cuenta"</string> - <string name="menu_edit_account">"Editar cuenta"</string> - <string name="menu_remove_account">"Eliminar cuenta"</string> - <string name="sign_in">"Acceder"</string> - <string name="menu_sign_out">"Salir"</string> - <string name="menu_settings">"Configuración"</string> - <string name="menu_sign_out_all">"Salir de todo"</string> - <string name="choose_account_title">"Chat: seleccionar una cuenta"</string> - <!-- no translation found for conversations (6809253595345281731) --> - <skip /> - <string name="add_account">"Añadir cuenta <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string> - <string name="menu_view_contact_list">"Lista de contactos"</string> - <string name="signing_in_wait">"Accediendo..."</string> </resources> diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 3da7c82..761111a 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -19,19 +19,4 @@ <string name="ro_perm_desc">"Permet aux applications de lire les données du prestataire de contenu de messagerie instantanée."</string> <string name="wo_perm_label">"écrire des messages instantanées"</string> <string name="wo_perm_desc">"Permet aux applications d\'écrire les données pour le prestataire de contenu de messagerie instantanée."</string> - <string name="im_label">"Chat"</string> - <string name="landing_page_title">"Chat : sélectionner un compte"</string> - <string name="menu_add_account">"Ajouter un compte"</string> - <string name="menu_edit_account">"Modifier un compte"</string> - <string name="menu_remove_account">"Supprimer un compte"</string> - <string name="sign_in">"Connexion"</string> - <string name="menu_sign_out">"Déconnexion"</string> - <string name="menu_settings">"Paramètres"</string> - <string name="menu_sign_out_all">"Se déconnecter de tout"</string> - <string name="choose_account_title">"Chat : sélectionner un compte"</string> - <!-- no translation found for conversations (6809253595345281731) --> - <skip /> - <string name="add_account">"Ajouter le compte <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string> - <string name="menu_view_contact_list">"Liste de contacts"</string> - <string name="signing_in_wait">"Connexion..."</string> </resources> diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 70065fb..cb7430e 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -19,19 +19,4 @@ <string name="ro_perm_desc">"Consente alle applicazioni di leggere dati del provider di contenuti IM."</string> <string name="wo_perm_label">"scrivere messaggi immediati"</string> <string name="wo_perm_desc">"Consente alle applicazioni di scrivere dati per il provider di contenuti IM."</string> - <string name="im_label">"Chat"</string> - <string name="landing_page_title">"Chat - Seleziona un account"</string> - <string name="menu_add_account">"Aggiungi account"</string> - <string name="menu_edit_account">"Modifica account"</string> - <string name="menu_remove_account">"Rimuovi account"</string> - <string name="sign_in">"Accedi"</string> - <string name="menu_sign_out">"Esci"</string> - <string name="menu_settings">"Impostazioni"</string> - <string name="menu_sign_out_all">"Esci da tutto"</string> - <string name="choose_account_title">"Chat - Seleziona un account"</string> - <!-- no translation found for conversations (6809253595345281731) --> - <skip /> - <string name="add_account">"Aggiungi account <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string> - <string name="menu_view_contact_list">"Elenco contatti"</string> - <string name="signing_in_wait">"Accesso..."</string> </resources> diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 6f9a4ae..0e2c6fb 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -19,18 +19,4 @@ <string name="ro_perm_desc">"IMコンテンツプロバイダーからのデータ読み取りをアプリケーションに許可します。"</string> <string name="wo_perm_label">"インスタントメッセージを作成"</string> <string name="wo_perm_desc">"IMコンテンツプロバイダーからのデータ書き込みをアプリケーションに許可します。"</string> - <string name="im_label">"チャット"</string> - <string name="landing_page_title">"チャット: アカウントを選択"</string> - <string name="menu_add_account">"アカウントを追加"</string> - <string name="menu_edit_account">"アカウントを編集"</string> - <string name="menu_remove_account">"アカウントを削除"</string> - <string name="sign_in">"ログイン"</string> - <string name="menu_sign_out">"ログアウト"</string> - <string name="menu_settings">"設定"</string> - <string name="menu_sign_out_all">"すべてログアウト"</string> - <string name="choose_account_title">"チャット: アカウントを選択"</string> - <string name="conversations">"(%1$d)"</string> - <string name="add_account">"<xliff:g id="ACCOUNT">%1$s</xliff:g>アカウントを追加"</string> - <string name="menu_view_contact_list">"連絡先リスト"</string> - <string name="signing_in_wait">"ログイン中..."</string> </resources> diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 94479e7..994ddea 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -19,19 +19,4 @@ <string name="ro_perm_desc">"응용프로그램이 메신저 콘텐츠 제공업체에서 제공한 데이터를 읽을 수 있도록 합니다."</string> <string name="wo_perm_label">"인스턴트 메시지 쓰기"</string> <string name="wo_perm_desc">"응용프로그램이 메신저 콘텐츠 제공업체에 데이터를 쓸 수 있도록 합니다."</string> - <string name="im_label">"메신저"</string> - <string name="landing_page_title">"채팅 - 계정 선택"</string> - <string name="menu_add_account">"계정 추가"</string> - <string name="menu_edit_account">"계정 수정"</string> - <string name="menu_remove_account">"계정 삭제"</string> - <string name="sign_in">"로그인"</string> - <string name="menu_sign_out">"로그아웃"</string> - <string name="menu_settings">"설정"</string> - <string name="menu_sign_out_all">"모두 로그아웃"</string> - <string name="choose_account_title">"채팅 - 계정 선택"</string> - <!-- no translation found for conversations (6809253595345281731) --> - <skip /> - <string name="add_account">"<xliff:g id="ACCOUNT">%1$s</xliff:g> 계정 추가"</string> - <string name="menu_view_contact_list">"연락처 목록"</string> - <string name="signing_in_wait">"로그인하는 중..."</string> </resources> diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 1f22b81..3d11c47 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -23,25 +23,4 @@ <skip /> <!-- no translation found for wo_perm_desc (470416777693330370) --> <skip /> - <string name="im_label">"Nettprat"</string> - <!-- no translation found for landing_page_title (2177721703095999384) --> - <skip /> - <!-- no translation found for menu_add_account (4184762314855405486) --> - <skip /> - <!-- no translation found for menu_edit_account (6585077522972888350) --> - <skip /> - <!-- no translation found for menu_remove_account (8013513817623405880) --> - <skip /> - <string name="sign_in">"Logg inn"</string> - <string name="menu_sign_out">"Logg ut"</string> - <string name="menu_settings">"Innstillinger"</string> - <!-- no translation found for menu_sign_out_all (945106187701517280) --> - <skip /> - <!-- no translation found for choose_account_title (3179220583433723296) --> - <skip /> - <!-- no translation found for conversations (6809253595345281731) --> - <skip /> - <string name="add_account">"Legg til <xliff:g id="ACCOUNT">%1$s</xliff:g>-konto"</string> - <string name="menu_view_contact_list">"Kontaktliste"</string> - <string name="signing_in_wait">"Logger inn…"</string> </resources> diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index dbaebbb..d06fc37 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -19,19 +19,4 @@ <string name="ro_perm_desc">"Toepassingen toestaan gegevens te lezen van de provider van chatinhoud."</string> <string name="wo_perm_label">"chatberichten schrijven"</string> <string name="wo_perm_desc">"Toepassingen toestaan gegevens te schrijven naar de provider van chatinhoud."</string> - <string name="im_label">"Chat"</string> - <string name="landing_page_title">"Chatten - Een account selecteren"</string> - <string name="menu_add_account">"Account toevoegen"</string> - <string name="menu_edit_account">"Account bewerken"</string> - <string name="menu_remove_account">"Account verwijderen"</string> - <string name="sign_in">"Aanmelden"</string> - <string name="menu_sign_out">"Afmelden"</string> - <string name="menu_settings">"Instellingen"</string> - <string name="menu_sign_out_all">"Overal afmelden"</string> - <string name="choose_account_title">"Chatten - Een account selecteren"</string> - <!-- no translation found for conversations (6809253595345281731) --> - <skip /> - <string name="add_account">"<xliff:g id="ACCOUNT">%1$s</xliff:g>-account toevoegen"</string> - <string name="menu_view_contact_list">"Lijst met contactpersonen"</string> - <string name="signing_in_wait">"Aanmelden..."</string> </resources> diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index aaa8d55..86fc99d 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -19,19 +19,4 @@ <string name="ro_perm_desc">"Zezwala aplikacjom na odczytywanie danych od dostawcy zawartości czatu."</string> <string name="wo_perm_label">"zapisz wiadomości czatu"</string> <string name="wo_perm_desc">"Zezwala aplikacjom na zapisywanie danych do dostawcy zawartości czatu."</string> - <string name="im_label">"Czat"</string> - <string name="landing_page_title">"Czat: Wybierz konto"</string> - <string name="menu_add_account">"Dodaj konto"</string> - <string name="menu_edit_account">"Edytuj konto"</string> - <string name="menu_remove_account">"Usuń konto"</string> - <string name="sign_in">"Zaloguj się"</string> - <string name="menu_sign_out">"Wyloguj się"</string> - <string name="menu_settings">"Ustawienia"</string> - <string name="menu_sign_out_all">"Wyloguj wszystkie"</string> - <string name="choose_account_title">"Czat: Wybierz konto"</string> - <!-- no translation found for conversations (6809253595345281731) --> - <skip /> - <string name="add_account">"Dodaj konto <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string> - <string name="menu_view_contact_list">"Lista kontaktów"</string> - <string name="signing_in_wait">"Trwa logowanie..."</string> </resources> diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 1d233ca..63c6c61 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -19,18 +19,4 @@ <string name="ro_perm_desc">"Permite que as aplicações leiam dados a partir do fornecedor de conteúdo de MI."</string> <string name="wo_perm_label">"escrever mensagens instantâneas"</string> <string name="wo_perm_desc">"Permite que as aplicações escrevam dados para o fornecedor de conteúdo de MI."</string> - <string name="im_label">"MI"</string> - <string name="landing_page_title">"Chat - Seleccione uma conta"</string> - <string name="menu_add_account">"Adicionar conta"</string> - <string name="menu_edit_account">"Editar conta"</string> - <string name="menu_remove_account">"Remover conta"</string> - <string name="sign_in">"Iniciar sessão"</string> - <string name="menu_sign_out">"Terminar sessão"</string> - <string name="menu_settings">"Definições"</string> - <string name="menu_sign_out_all">"Terminar sessão em todos"</string> - <string name="choose_account_title">"Chat - Seleccionar uma conta"</string> - <string name="conversations">"(%1$d)"</string> - <string name="add_account">"Adicionar a conta <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string> - <string name="menu_view_contact_list">"Lista de contactos"</string> - <string name="signing_in_wait">"A iniciar sessão..."</string> </resources> diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 050cb09..2997226 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -19,18 +19,4 @@ <string name="ro_perm_desc">"Permite que os aplicativos leiam os dados do provedor de conteúdo de mensagem instantânea."</string> <string name="wo_perm_label">"gravar mensagens instantâneas"</string> <string name="wo_perm_desc">"Permite que os aplicativos gravem os dados no provedor de conteúdo de mensagem instantânea."</string> - <string name="im_label">"Mensagem instantânea"</string> - <string name="landing_page_title">"Bate-papo - Selecione uma conta"</string> - <string name="menu_add_account">"Adicionar conta"</string> - <string name="menu_edit_account">"Editar conta"</string> - <string name="menu_remove_account">"Remover conta"</string> - <string name="sign_in">"Fazer login"</string> - <string name="menu_sign_out">"Sair"</string> - <string name="menu_settings">"Configurações"</string> - <string name="menu_sign_out_all">"Sair de todos"</string> - <string name="choose_account_title">"Bate-papo - Selecione uma conta"</string> - <string name="conversations">"(%1$d)"</string> - <string name="add_account">"Adicionar conta <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string> - <string name="menu_view_contact_list">"Lista de contatos"</string> - <string name="signing_in_wait">"Fazendo login..."</string> </resources> diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 86d0dae..6987e48 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -19,19 +19,4 @@ <string name="ro_perm_desc">"Позволяет приложениям считывать данные через поставщика чата."</string> <string name="wo_perm_label">"писать мгновенные сообщения"</string> <string name="wo_perm_desc">"Позволяет приложениям записывать данные через поставщика чата."</string> - <string name="im_label">"Чат"</string> - <string name="landing_page_title">"Чат – выберите аккаунт"</string> - <string name="menu_add_account">"Добавить аккаунт"</string> - <string name="menu_edit_account">"Изменить аккаунт"</string> - <string name="menu_remove_account">"Удалить аккаунт"</string> - <string name="sign_in">"Вход"</string> - <string name="menu_sign_out">"Выход"</string> - <string name="menu_settings">"Настройки"</string> - <string name="menu_sign_out_all">"Выйти отовсюду"</string> - <string name="choose_account_title">"Чат – выберите аккаунт"</string> - <!-- no translation found for conversations (6809253595345281731) --> - <skip /> - <string name="add_account">"Добавить аккаунт <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string> - <string name="menu_view_contact_list">"Список контактов"</string> - <string name="signing_in_wait">"Выполняется вход..."</string> </resources> diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index c816dc4..4386c2a 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -19,18 +19,4 @@ <string name="ro_perm_desc">"Tillåter att ett program läser data från chattens innehållsleverantör."</string> <string name="wo_perm_label">"skriva chattmeddelanden"</string> <string name="wo_perm_desc">"Tillåter att ett program skriver data till innehållsleverantören för chatten."</string> - <string name="im_label">"Chatt"</string> - <string name="landing_page_title">"Chatt – välj ett konto"</string> - <string name="menu_add_account">"Lägg till konto"</string> - <string name="menu_edit_account">"Redigera konto"</string> - <string name="menu_remove_account">"Ta bort konto"</string> - <string name="sign_in">"Logga in"</string> - <string name="menu_sign_out">"Logga ut"</string> - <string name="menu_settings">"Inställningar"</string> - <string name="menu_sign_out_all">"Logga ut från alla"</string> - <string name="choose_account_title">"Chatt – Välj ett konto"</string> - <string name="conversations">"(%1$d)"</string> - <string name="add_account">"Lägg till kontot <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string> - <string name="menu_view_contact_list">"Kontaktlista"</string> - <string name="signing_in_wait">"Loggar in…"</string> </resources> diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 4f51898..a90e096 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -19,18 +19,4 @@ <string name="ro_perm_desc">"Uygulamalara, IM içerik sağlayıcısından gelen verileri okuma izni verir."</string> <string name="wo_perm_label">"anlık iletiler yazın"</string> <string name="wo_perm_desc">"Uygulamaların IM içerik sağlayıcısına veri yazmasına izin verir."</string> - <string name="im_label">"IM"</string> - <string name="landing_page_title">"Sohbet - Bir hesap seçin"</string> - <string name="menu_add_account">"Hesap ekle"</string> - <string name="menu_edit_account">"Hesabı düzenle"</string> - <string name="menu_remove_account">"Hesabı kaldır"</string> - <string name="sign_in">"Oturum aç"</string> - <string name="menu_sign_out">"Çıkış"</string> - <string name="menu_settings">"Ayarlar"</string> - <string name="menu_sign_out_all">"Tüm hizmetlerden çık"</string> - <string name="choose_account_title">"Sohbet - Bir hesap seçin"</string> - <string name="conversations">"(%1$d)"</string> - <string name="add_account">"<xliff:g id="ACCOUNT">%1$s</xliff:g> hesabını ekle"</string> - <string name="menu_view_contact_list">"Kişi listesi"</string> - <string name="signing_in_wait">"Oturum açılıyor..."</string> </resources> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 828ebbc..5599a70 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -19,19 +19,4 @@ <string name="ro_perm_desc">"允许应用程序从即时消息内容提供者处读取数据。"</string> <string name="wo_perm_label">"编写即时消息"</string> <string name="wo_perm_desc">"允许应用程序向即时消息内容提供者写入数据。"</string> - <string name="im_label">"即时消息"</string> - <string name="landing_page_title">"聊天 - 选择一个帐户"</string> - <string name="menu_add_account">"添加帐户"</string> - <string name="menu_edit_account">"编辑帐户"</string> - <string name="menu_remove_account">"删除帐户"</string> - <string name="sign_in">"登录"</string> - <string name="menu_sign_out">"退出"</string> - <string name="menu_settings">"设置"</string> - <string name="menu_sign_out_all">"全部退出"</string> - <string name="choose_account_title">"聊天 - 选择一个帐户"</string> - <!-- no translation found for conversations (6809253595345281731) --> - <skip /> - <string name="add_account">"添加 <xliff:g id="ACCOUNT">%1$s</xliff:g> 帐户"</string> - <string name="menu_view_contact_list">"联系人列表"</string> - <string name="signing_in_wait">"正在登录..."</string> </resources> diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 3d7b51f..d625e80 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -19,19 +19,4 @@ <string name="ro_perm_desc">"允許應用程式讀取來自即時訊息內容提供者的資料。"</string> <string name="wo_perm_label">"撰寫即時訊息"</string> <string name="wo_perm_desc">"允許應用程式將資料寫入即時訊息內容提供者。"</string> - <string name="im_label">"即時訊息"</string> - <string name="landing_page_title">"即時通訊 - 選取帳戶"</string> - <string name="menu_add_account">"新增帳戶"</string> - <string name="menu_edit_account">"編輯帳戶"</string> - <string name="menu_remove_account">"移除帳戶"</string> - <string name="sign_in">"登入"</string> - <string name="menu_sign_out">"登出"</string> - <string name="menu_settings">"設定"</string> - <string name="menu_sign_out_all">"全部登出"</string> - <string name="choose_account_title">"即時通訊 - 選取帳戶"</string> - <!-- no translation found for conversations (6809253595345281731) --> - <skip /> - <string name="add_account">"新增 <xliff:g id="ACCOUNT">%1$s</xliff:g> 帳戶"</string> - <string name="menu_view_contact_list">"聯絡人"</string> - <string name="signing_in_wait">"登入中…"</string> </resources> diff --git a/res/values/config.xml b/res/values/config.xml deleted file mode 100644 index 8060c3d..0000000 --- a/res/values/config.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** Copyright 2009, 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. -*/ ---> - -<!-- These resources are around just to allow their values to be customized - for different hardware and product builds. --> -<resources> - <!-- Flag indicating whether IM app should be shown in the application tray --> - <bool name="enableLandingPageActivity">false</bool> -</resources> diff --git a/res/values/strings.xml b/res/values/strings.xml index 2519476..6b06a45 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -28,40 +28,6 @@ </string> <!-- The application label --> - <string name="im_label">IM</string> - - <!-- These strings displayed on the landing page. --> - <!-- The title of the landing page.--> - <string name="landing_page_title">Chat - Select an account</string> - - <!-- Landing page screen menu and context menu items. --> - <!-- Conext menu item: add a new account.--> - <string name="menu_add_account">Add account</string> - <!-- Conext menu item: edit an account.--> - <string name="menu_edit_account">Edit account</string> - <!-- Conext menu item: remove an account.--> - <string name="menu_remove_account">Remove account</string> - <!-- Context menu item: sign into service. --> - <string name="sign_in">Sign in</string> - <!-- Context menu item: sign out the service.--> - <string name="menu_sign_out">Sign out</string> - <!-- Context menu item: go to the setting page.--> - <string name="menu_settings">Settings</string> - <!-- Screen menu item: sign out all service.--> - <string name="menu_sign_out_all">Sign out all</string> - - <!-- These strings displayed on the landing page. --> - <!-- The title of the landing page.--> - <string name="choose_account_title">Chat - Select an account</string> - <!-- Displays the number of ongoing chats on the landing page.--> - <string name="conversations">(%1$d)</string> - <!-- The add account label on the landing page if there isn't any account.--> - <string name="add_account">Add <xliff:g id="account">%1$s</xliff:g> account</string> - - <!-- Screen menu item: go the contact list screen. May be overrided by the plugin.--> - <string name="menu_view_contact_list">Contact list</string> - - <!-- Connection status --> - <string name="signing_in_wait">Signing in\u2026</string> + <string name="app_label">IM Storage</string> </resources> diff --git a/src/com/android/providers/im/BrandingResources.java b/src/com/android/providers/im/BrandingResources.java deleted file mode 100644 index e232a96..0000000 --- a/src/com/android/providers/im/BrandingResources.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (C) 2008 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.providers.im; - -import android.content.Context; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.content.res.Resources; -import android.graphics.drawable.Drawable; -import android.os.RemoteException; -import android.util.Log; - -import java.util.Map; - -/** - * The provider specific branding resources. - */ -public class BrandingResources { - private static final String TAG = "IM"; - private static final boolean LOCAL_DEBUG = false; - - private Map<Integer, Integer> mResMapping; - private Resources mPackageRes; - - private BrandingResources mDefaultRes; - - /** - * Creates a new BrandingResource of a specific plug-in. The resources will - * be retrieved from the plug-in package. - * - * @param context The current application context. - * @param pluginInfo The info about the plug-in. - * @param provider the name of the IM service provider. - * @param defaultRes The default branding resources. If the resource is not - * found in the plug-in, the default resource will be returned. - */ - public BrandingResources(Context context, LandingPage.PluginInfo pluginInfo, String provider, - BrandingResources defaultRes) { - String packageName = null; - mDefaultRes = defaultRes; - - try { - mResMapping = pluginInfo.mPlugin.getResourceMapForProvider(provider); - packageName = pluginInfo.mPlugin.getResourcePackageNameForProvider(provider); - } catch (RemoteException e) { - Log.e(TAG, "Failed load the plugin resource map", e); - } - - if (packageName == null) { - packageName = pluginInfo.mPackageName; - } - - PackageManager pm = context.getPackageManager(); - try { - if (LOCAL_DEBUG) log("load resources from " + packageName); - mPackageRes = pm.getResourcesForApplication(packageName); - } catch (NameNotFoundException e) { - Log.e(TAG, "Can not load resources from " + packageName); - } - } - - /** - * Creates a BrandingResource with application context and the resource ID map. - * The resource will be retrieved from the context directly instead from the plug-in package. - * - * @param context - * @param resMapping - */ - public BrandingResources(Context context, Map<Integer, Integer> resMapping, - BrandingResources defaultRes) { - mPackageRes = context.getResources(); - mResMapping = resMapping; - mDefaultRes = defaultRes; - } - - /** - * Gets a drawable object associated with a particular resource ID defined - * in {@link com.android.im.plugin.BrandingResourceIDs} - * - * @param id The ID defined in - * {@link com.android.im.plugin.BrandingResourceIDs} - * @return Drawable An object that can be used to draw this resource. - */ - public Drawable getDrawable(int id) { - int resId = getPackageResourceId(id); - if (resId != 0) { - return mPackageRes.getDrawable(resId); - } else if (mDefaultRes != null){ - return mDefaultRes.getDrawable(id); - } else { - return null; - } - } - - /** - * Gets the string value associated with a particular resource ID defined in - * {@link com.android.im.plugin.BrandingResourceIDs} - * - * @param id The ID of the string resource defined in - * {@link com.android.im.plugin.BrandingResourceIDs} - * @param formatArgs The format arguments that will be used for - * substitution. - * @return The string data associated with the resource - */ - public String getString(int id, Object... formatArgs) { - int resId = getPackageResourceId(id); - if (resId != 0) { - return mPackageRes.getString(resId, formatArgs); - } else if (mDefaultRes != null){ - return mDefaultRes.getString(id, formatArgs); - } else { - return null; - } - } - - /** - * Gets the string array associated with a particular resource ID defined in - * {@link com.android.im.plugin.BrandingResourceIDs} - * - * @param id The ID of the string resource defined in - * {@link com.android.im.plugin.BrandingResourceIDs} - * @return The string array associated with the resource. - */ - public String[] getStringArray(int id) { - int resId = getPackageResourceId(id); - if (resId != 0) { - return mPackageRes.getStringArray(resId); - } else if (mDefaultRes != null){ - return mDefaultRes.getStringArray(id); - } else { - return null; - } - } - - private int getPackageResourceId(int id) { - if (mResMapping == null || mPackageRes == null) { - return 0; - } - Integer resId = mResMapping.get(id); - return resId == null ? 0 : resId; - } - - private void log(String msg) { - Log.d(TAG, "[BrandingRes] " + msg); - } -} diff --git a/src/com/android/providers/im/ImProvider.java b/src/com/android/providers/im/ImProvider.java index dcb0309..744df23 100644 --- a/src/com/android/providers/im/ImProvider.java +++ b/src/com/android/providers/im/ImProvider.java @@ -756,6 +756,8 @@ public class ImProvider extends ContentProvider { "accounts.pw AS account_pw"); sProviderAccountsProjectionMap.put(Im.Provider.ACTIVE_ACCOUNT_LOCKED, "accounts.locked AS account_locked"); + sProviderAccountsProjectionMap.put(Im.Provider.ACTIVE_ACCOUNT_KEEP_SIGNED_IN, + "accounts.keep_signed_in AS account_keepSignedIn"); sProviderAccountsProjectionMap.put(Im.Provider.ACCOUNT_PRESENCE_STATUS, "accountStatus.presenceStatus AS account_presenceStatus"); sProviderAccountsProjectionMap.put(Im.Provider.ACCOUNT_CONNECTION_STATUS, @@ -2851,6 +2853,12 @@ public class ImProvider extends ContentProvider { idColumnName = Im.SessionCookies.ACCOUNT; break; + case MATCH_PROVIDER_SETTINGS_BY_ID: + tableToChange = TABLE_PROVIDER_SETTINGS; + changedItemId = url.getPathSegments().get(1); + idColumnName = Im.ProviderSettings.PROVIDER; + break; + case MATCH_PROVIDER_SETTINGS_BY_ID_AND_NAME: tableToChange = TABLE_PROVIDER_SETTINGS; diff --git a/src/com/android/providers/im/LandingPage.java b/src/com/android/providers/im/LandingPage.java deleted file mode 100644 index 2c09b02..0000000 --- a/src/com/android/providers/im/LandingPage.java +++ /dev/null @@ -1,710 +0,0 @@ -/* - * Copyright (C) 2008 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.providers.im; - -import android.app.ListActivity; -import android.app.ActivityManagerNative; -import android.app.ActivityThread; -import android.app.Application; -import android.content.ContentUris; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.content.pm.ServiceInfo; -import android.database.Cursor; -import android.im.IImPlugin; -import android.im.ImPluginConsts; -import android.im.BrandingResourceIDs; -import android.net.Uri; -import android.os.Bundle; -import android.os.RemoteException; -import android.os.IBinder; -import android.provider.Im; -import android.util.Log; -import android.util.AttributeSet; -import android.view.ContextMenu; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.view.LayoutInflater; -import android.view.ContextMenu.ContextMenuInfo; -import android.widget.AdapterView; -import android.widget.ListView; -import android.widget.CursorAdapter; - -import java.util.List; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.lang.reflect.Method; -import java.lang.reflect.InvocationTargetException; - -import com.android.providers.im.R; - -import dalvik.system.PathClassLoader; - -public class LandingPage extends ListActivity implements View.OnCreateContextMenuListener { - private static final String TAG = "IM"; - private final static boolean LOCAL_DEBUG = false; - - private static final int ID_SIGN_IN = Menu.FIRST + 1; - private static final int ID_SIGN_OUT = Menu.FIRST + 2; - private static final int ID_EDIT_ACCOUNT = Menu.FIRST + 3; - private static final int ID_REMOVE_ACCOUNT = Menu.FIRST + 4; - private static final int ID_SIGN_OUT_ALL = Menu.FIRST + 5; - private static final int ID_ADD_ACCOUNT = Menu.FIRST + 6; - private static final int ID_VIEW_CONTACT_LIST = Menu.FIRST + 7; - private static final int ID_SETTINGS = Menu.FIRST + 8; - - private ProviderAdapter mAdapter; - private Cursor mProviderCursor; - - private static final String[] PROVIDER_PROJECTION = { - Im.Provider._ID, - Im.Provider.NAME, - Im.Provider.FULLNAME, - Im.Provider.CATEGORY, - Im.Provider.ACTIVE_ACCOUNT_ID, - Im.Provider.ACTIVE_ACCOUNT_USERNAME, - Im.Provider.ACTIVE_ACCOUNT_PW, - Im.Provider.ACTIVE_ACCOUNT_LOCKED, - Im.Provider.ACCOUNT_PRESENCE_STATUS, - Im.Provider.ACCOUNT_CONNECTION_STATUS, - }; - - private static final int PROVIDER_ID_COLUMN = 0; - private static final int PROVIDER_NAME_COLUMN = 1; - private static final int PROVIDER_FULLNAME_COLUMN = 2; - private static final int PROVIDER_CATEGORY_COLUMN = 3; - private static final int ACTIVE_ACCOUNT_ID_COLUMN = 4; - private static final int ACTIVE_ACCOUNT_USERNAME_COLUMN = 5; - private static final int ACTIVE_ACCOUNT_PW_COLUMN = 6; - private static final int ACTIVE_ACCOUNT_LOCKED = 7; - private static final int ACCOUNT_PRESENCE_STATUS = 8; - private static final int ACCOUNT_CONNECTION_STATUS = 9; - - private static final String PROVIDER_SELECTION = "providers.name!=?"; - - private HashMap<String, PluginInfo> mProviderToPluginMap; - private HashMap<Long, PluginInfo> mAccountToPluginMap; - private HashMap<Long, BrandingResources> mBrandingResources; - private BrandingResources mDefaultBrandingResources; - - private String[] mProviderSelectionArgs = new String[1]; - - public class PluginInfo { - public IImPlugin mPlugin; - /** - * The name of the package that the plugin is in. - */ - public String mPackageName; - - /** - * The name of the class that implements {@link @ImFrontDoorPlugin} in this plugin. - */ - public String mClassName; - - /** - * The full path to the location of the package that the plugin is in. - */ - public String mSrcPath; - - public PluginInfo(IImPlugin plugin, String packageName, String className, - String srcPath) { - mPackageName = packageName; - mClassName = className; - mSrcPath = srcPath; - mPlugin = plugin; - } - }; - - @Override - protected void onCreate(Bundle icicle) { - super.onCreate(icicle); - - setTitle(R.string.landing_page_title); - - if (!loadPlugins()) { - Log.e(TAG, "[onCreate] load plugin failed, no plugin found!"); - finish(); - return; - } - - startPlugins(); - - // get everything except for Google Talk. - mProviderSelectionArgs[0] = Im.ProviderNames.GTALK; - mProviderCursor = managedQuery(Im.Provider.CONTENT_URI_WITH_ACCOUNT, - PROVIDER_PROJECTION, - PROVIDER_SELECTION /* selection */, - mProviderSelectionArgs /* selection args */, - Im.Provider.DEFAULT_SORT_ORDER); - mAdapter = new ProviderAdapter(this, mProviderCursor); - setListAdapter(mAdapter); - - rebuildAccountToPluginMap(); - - mBrandingResources = new HashMap<Long, BrandingResources>(); - loadDefaultBrandingRes(); - loadBrandingResources(); - - registerForContextMenu(getListView()); - } - - @Override - protected void onRestart() { - super.onRestart(); - - // refresh the accountToPlugin map after mProviderCursor is requeried - if (!rebuildAccountToPluginMap()) { - Log.w(TAG, "[onRestart] rebuiltAccountToPluginMap failed, reload plugins..."); - - if (!loadPlugins()) { - Log.e(TAG, "[onRestart] load plugin failed, no plugin found!"); - finish(); - return; - } - rebuildAccountToPluginMap(); - } - - startPlugins(); - } - - @Override - protected void onStop() { - super.onStop(); - stopPlugins(); - } - - private boolean loadPlugins() { - mProviderToPluginMap = new HashMap<String, PluginInfo>(); - - PackageManager pm = getPackageManager(); - List<ResolveInfo> plugins = pm.queryIntentServices( - new Intent(ImPluginConsts.PLUGIN_ACTION_NAME), - PackageManager.GET_META_DATA); - for (ResolveInfo info : plugins) { - if (Log.isLoggable(TAG, Log.DEBUG)) log("loadPlugins: found plugin " + info); - - ServiceInfo serviceInfo = info.serviceInfo; - if (serviceInfo == null) { - Log.e(TAG, "Ignore bad IM frontdoor plugin: " + info); - continue; - } - - IImPlugin plugin = null; - - // Load the plug-in directly from the apk instead of binding the service - // and calling through the IPC binder API. It's more effective in this way - // and we can avoid the async behaviors of binding service. - PathClassLoader classLoader = new PathClassLoader(serviceInfo.applicationInfo.sourceDir, - getClassLoader()); - try { - if (Log.isLoggable(TAG, Log.DEBUG)) { - log("loadPlugin: load class " + serviceInfo.name); - } - Class cls = classLoader.loadClass(serviceInfo.name); - Object newInstance = cls.newInstance(); - Method m; - - // call "attach" method, so the plugin will get initialized with the proper context - m = cls.getMethod("attach", Context.class, ActivityThread.class, String.class, - IBinder.class, Application.class, Object.class); - m.invoke(newInstance, - new Object[] {this, null, serviceInfo.name, null, getApplication(), - ActivityManagerNative.getDefault()}); - - // call "bind" to get the plugin object - m = cls.getMethod("onBind", Intent.class); - plugin = (IImPlugin)m.invoke(newInstance, new Object[]{null}); - } catch (ClassNotFoundException e) { - Log.e(TAG, "Failed load the plugin", e); - } catch (IllegalAccessException e) { - Log.e(TAG, "Failed load the plugin", e); - } catch (InstantiationException e) { - Log.e(TAG, "Failed load the plugin", e); - } catch (SecurityException e) { - Log.e(TAG, "Failed load the plugin", e); - } catch (NoSuchMethodException e) { - Log.e(TAG, "Failed load the plugin", e); - } catch (IllegalArgumentException e) { - Log.e(TAG, "Failed load the plugin", e); - } catch (InvocationTargetException e) { - Log.e(TAG, "Failed load the plugin", e); - } - - if (plugin != null) { - if (Log.isLoggable(TAG, Log.DEBUG)) log("loadPlugin: plugin " + plugin + " loaded"); - ArrayList<String> providers = getSupportedProviders(plugin); - - if (providers == null || providers.size() == 0) { - Log.e(TAG, "Ignore bad IM frontdoor plugin: " + info + ". No providers found"); - continue; - } - - PluginInfo pluginInfo = new PluginInfo(plugin, - serviceInfo.packageName, - serviceInfo.name, - serviceInfo.applicationInfo.sourceDir); - - for (String providerName : providers) { - mProviderToPluginMap.put(providerName, pluginInfo); - } - } - } - - return mProviderToPluginMap.size() > 0; - } - - private void startPlugins() { - Iterator<PluginInfo> itor = mProviderToPluginMap.values().iterator(); - - while (itor.hasNext()) { - PluginInfo pluginInfo = itor.next(); - try { - pluginInfo.mPlugin.onStart(); - } catch (RemoteException e) { - Log.e(TAG, "Could not start plugin " + pluginInfo.mPackageName, e); - } - } - } - - private void stopPlugins() { - Iterator<PluginInfo> itor = mProviderToPluginMap.values().iterator(); - - while (itor.hasNext()) { - PluginInfo pluginInfo = itor.next(); - try { - pluginInfo.mPlugin.onStop(); - } catch (RemoteException e) { - Log.e(TAG, "Could not stop plugin " + pluginInfo.mPackageName, e); - } - } - } - - private ArrayList<String> getSupportedProviders(IImPlugin plugin) { - ArrayList<String> providers = null; - - try { - providers = (ArrayList<String>) plugin.getSupportedProviders(); - } catch (RemoteException ex) { - Log.e(TAG, "getSupportedProviders caught ", ex); - } - - return providers; - } - - private void loadDefaultBrandingRes() { - HashMap<Integer, Integer> resMapping = new HashMap<Integer, Integer>(); - - resMapping.put(BrandingResourceIDs.DRAWABLE_LOGO, R.drawable.imlogo_s); - resMapping.put(BrandingResourceIDs.DRAWABLE_PRESENCE_ONLINE, - android.R.drawable.presence_online); - resMapping.put(BrandingResourceIDs.DRAWABLE_PRESENCE_AWAY, - android.R.drawable.presence_away); - resMapping.put(BrandingResourceIDs.DRAWABLE_PRESENCE_BUSY, - android.R.drawable.presence_busy); - resMapping.put(BrandingResourceIDs.DRAWABLE_PRESENCE_INVISIBLE, - android.R.drawable.presence_invisible); - resMapping.put(BrandingResourceIDs.DRAWABLE_PRESENCE_OFFLINE, - android.R.drawable.presence_offline); - resMapping.put(BrandingResourceIDs.STRING_MENU_CONTACT_LIST, - R.string.menu_view_contact_list); - - mDefaultBrandingResources = new BrandingResources(this, resMapping, null /* default res */); - } - - private void loadBrandingResources() { - mProviderCursor.moveToFirst(); - do { - long providerId = mProviderCursor.getLong(PROVIDER_ID_COLUMN); - String providerName = mProviderCursor.getString(PROVIDER_NAME_COLUMN); - PluginInfo pluginInfo = mProviderToPluginMap.get(providerName); - - if (pluginInfo == null) { - Log.w(TAG, "[LandingPage] loadBrandingResources: no plugin found for " + providerName); - continue; - } - - if (!mBrandingResources.containsKey(providerId)) { - BrandingResources res = new BrandingResources(this, pluginInfo, providerName, - mDefaultBrandingResources); - mBrandingResources.put(providerId, res); - } - } while (mProviderCursor.moveToNext()) ; - } - - public BrandingResources getBrandingResource(long providerId) { - BrandingResources res = mBrandingResources.get(providerId); - return res == null ? mDefaultBrandingResources : res; - } - - private boolean rebuildAccountToPluginMap() { - if (Log.isLoggable(TAG, Log.DEBUG)) { - log("rebuildAccountToPluginMap"); - } - - if (mAccountToPluginMap != null) { - mAccountToPluginMap.clear(); - } - - mAccountToPluginMap = new HashMap<Long, PluginInfo>(); - - mProviderCursor.moveToFirst(); - - boolean retVal = true; - - do { - long accountId = mProviderCursor.getLong(ACTIVE_ACCOUNT_ID_COLUMN); - - if (accountId == 0) { - continue; - } - - String name = mProviderCursor.getString(PROVIDER_NAME_COLUMN); - PluginInfo pluginInfo = mProviderToPluginMap.get(name); - if (pluginInfo != null) { - if (Log.isLoggable(TAG, Log.DEBUG)) { - log("rebuildAccountToPluginMap: add plugin for acct=" + accountId + ", provider=" + name); - } - mAccountToPluginMap.put(accountId, pluginInfo); - } else { - Log.w(TAG, "[LandingPage] no plugin found for " + name); - retVal = false; - } - } while (mProviderCursor.moveToNext()) ; - - return retVal; - } - - private void signIn(long accountId) { - if (accountId == 0) { - Log.w(TAG, "signIn: account id is 0, bail"); - return; - } - - boolean isAccountEditible = mProviderCursor.getInt(ACTIVE_ACCOUNT_LOCKED) == 0; - if (isAccountEditible && mProviderCursor.isNull(ACTIVE_ACCOUNT_PW_COLUMN)) { - // no password, edit the account - if (Log.isLoggable(TAG, Log.DEBUG)) log("no pw for account " + accountId); - Intent intent = getEditAccountIntent(); - startActivity(intent); - return; - } - - - PluginInfo pluginInfo = mAccountToPluginMap.get(accountId); - if (pluginInfo == null) { - Log.e(TAG, "signIn: cannot find plugin for account " + accountId); - return; - } - - try { - if (Log.isLoggable(TAG, Log.DEBUG)) log("sign in for account " + accountId); - pluginInfo.mPlugin.signIn(accountId); - } catch (RemoteException ex) { - Log.e(TAG, "signIn failed", ex); - } - } - - boolean isSigningIn(Cursor cursor) { - int connectionStatus = cursor.getInt(ACCOUNT_CONNECTION_STATUS); - return connectionStatus == Im.ConnectionStatus.CONNECTING; - } - - boolean isSignedIn(Cursor cursor) { - int connectionStatus = cursor.getInt(ACCOUNT_CONNECTION_STATUS); - return connectionStatus == Im.ConnectionStatus.ONLINE; - } - - private boolean allAccountsSignedOut() { - mProviderCursor.moveToFirst(); - do { - if (isSignedIn(mProviderCursor)) { - return false; - } - } while (mProviderCursor.moveToNext()) ; - - return true; - } - - private void signoutAll() { - do { - long accountId = mProviderCursor.getLong(ACTIVE_ACCOUNT_ID_COLUMN); - signOut(accountId); - } while (mProviderCursor.moveToNext()) ; - } - - private void signOut(long accountId) { - if (accountId == 0) { - Log.w(TAG, "signOut: account id is 0, bail"); - return; - } - - PluginInfo pluginInfo = mAccountToPluginMap.get(accountId); - if (pluginInfo == null) { - Log.e(TAG, "signOut: cannot find plugin for account " + accountId); - return; - } - - try { - if (Log.isLoggable(TAG, Log.DEBUG)) log("sign out for account " + accountId); - pluginInfo.mPlugin.signOut(accountId); - } catch (RemoteException ex) { - Log.e(TAG, "signOut failed", ex); - } - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - super.onPrepareOptionsMenu(menu); - menu.findItem(ID_SIGN_OUT_ALL).setVisible(!allAccountsSignedOut()); - return true; - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - menu.add(0, ID_SIGN_OUT_ALL, 0, R.string.menu_sign_out_all) - .setIcon(android.R.drawable.ic_menu_close_clear_cancel); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case ID_SIGN_OUT_ALL: - signoutAll(); - return true; - } - return super.onOptionsItemSelected(item); - } - - @Override - public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { - AdapterView.AdapterContextMenuInfo info; - try { - info = (AdapterView.AdapterContextMenuInfo) menuInfo; - } catch (ClassCastException e) { - Log.e(TAG, "bad menuInfo", e); - return; - } - - Cursor providerCursor = (Cursor) getListAdapter().getItem(info.position); - menu.setHeaderTitle(providerCursor.getString(PROVIDER_FULLNAME_COLUMN)); - - if (providerCursor.isNull(ACTIVE_ACCOUNT_ID_COLUMN)) { - menu.add(0, ID_ADD_ACCOUNT, 0, R.string.menu_add_account); - return; - } - - long providerId = providerCursor.getLong(PROVIDER_ID_COLUMN); - boolean isLoggingIn = isSigningIn(providerCursor); - boolean isLoggedIn = isSignedIn(providerCursor); - - if (!isLoggedIn) { - menu.add(0, ID_SIGN_IN, 0, R.string.sign_in).setIcon(com.android.internal.R.drawable.ic_menu_login); - } else { - BrandingResources brandingRes = getBrandingResource(providerId); - menu.add(0, ID_VIEW_CONTACT_LIST, 0, - brandingRes.getString(BrandingResourceIDs.STRING_MENU_CONTACT_LIST)); - menu.add(0, ID_SIGN_OUT, 0, R.string.menu_sign_out) - .setIcon(android.R.drawable.ic_menu_close_clear_cancel); - } - - boolean isAccountEditible = providerCursor.getInt(ACTIVE_ACCOUNT_LOCKED) == 0; - if (isAccountEditible && !isLoggingIn && !isLoggedIn) { - menu.add(0, ID_EDIT_ACCOUNT, 0, R.string.menu_edit_account) - .setIcon(android.R.drawable.ic_menu_edit); - menu.add(0, ID_REMOVE_ACCOUNT, 0, R.string.menu_remove_account) - .setIcon(android.R.drawable.ic_menu_delete); - } - - // always add a settings menu item - menu.add(0, ID_SETTINGS, 0, R.string.menu_settings); - } - - @Override - public boolean onContextItemSelected(MenuItem item) { - AdapterView.AdapterContextMenuInfo info; - try { - info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); - } catch (ClassCastException e) { - Log.e(TAG, "bad menuInfo", e); - return false; - } - long providerId = info.id; - Cursor providerCursor = (Cursor) getListAdapter().getItem(info.position); - long accountId = providerCursor.getLong(ACTIVE_ACCOUNT_ID_COLUMN); - - switch (item.getItemId()) { - case ID_EDIT_ACCOUNT: - { - startActivity(getEditAccountIntent()); - return true; - } - - case ID_REMOVE_ACCOUNT: - { - Uri accountUri = ContentUris.withAppendedId(Im.Account.CONTENT_URI, accountId); - getContentResolver().delete(accountUri, null, null); - // Requery the cursor to force refreshing screen - providerCursor.requery(); - return true; - } - - case ID_VIEW_CONTACT_LIST: - { - Intent intent = getViewContactsIntent(); - startActivity(intent); - return true; - } - case ID_ADD_ACCOUNT: - { - startActivity(getCreateAccountIntent()); - return true; - } - - case ID_SIGN_IN: - { - signIn(accountId); - return true; - } - - case ID_SIGN_OUT: - { - // TODO: progress bar - signOut(accountId); - return true; - } - - case ID_SETTINGS: - { - Intent intent = new Intent(Intent.ACTION_VIEW, Im.ProviderSettings.CONTENT_URI); - intent.addCategory(getProviderCategory(providerCursor)); - intent.putExtra("providerId", providerId); - startActivity(intent); - return true; - } - - } - - return false; - } - - @Override - protected void onListItemClick(ListView l, View v, int position, long id) { - Intent intent = null; - mProviderCursor.moveToPosition(position); - - if (mProviderCursor.isNull(ACTIVE_ACCOUNT_ID_COLUMN)) { - // add account - intent = getCreateAccountIntent(); - } else { - int state = mProviderCursor.getInt(ACCOUNT_CONNECTION_STATUS); - - if (state == Im.ConnectionStatus.OFFLINE || state == Im.ConnectionStatus.CONNECTING) { - boolean isAccountEditible = mProviderCursor.getInt(ACTIVE_ACCOUNT_LOCKED) == 0; - if (isAccountEditible && mProviderCursor.isNull(ACTIVE_ACCOUNT_PW_COLUMN)) { - // no password, edit the account - intent = getEditAccountIntent(); - } else { - long accountId = mProviderCursor.getLong(ACTIVE_ACCOUNT_ID_COLUMN); - signIn(accountId); - } - } else { - intent = getViewContactsIntent(); - } - } - - if (intent != null) { - startActivity(intent); - } - } - - Intent getCreateAccountIntent() { - Intent intent = new Intent(); - intent.setAction(Intent.ACTION_INSERT); - - long providerId = mProviderCursor.getLong(PROVIDER_ID_COLUMN); - intent.setData(ContentUris.withAppendedId(Im.Provider.CONTENT_URI, providerId)); - intent.addCategory(getProviderCategory(mProviderCursor)); - return intent; - } - - Intent getEditAccountIntent() { - Intent intent = new Intent(Intent.ACTION_EDIT, - ContentUris.withAppendedId(Im.Account.CONTENT_URI, - mProviderCursor.getLong(ACTIVE_ACCOUNT_ID_COLUMN))); - intent.addCategory(getProviderCategory(mProviderCursor)); - return intent; - } - - Intent getViewContactsIntent() { - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setData(Im.Contacts.CONTENT_URI); - intent.addCategory(getProviderCategory(mProviderCursor)); - intent.putExtra("accountId", mProviderCursor.getLong(ACTIVE_ACCOUNT_ID_COLUMN)); - return intent; - } - - private String getProviderCategory(Cursor cursor) { - return cursor.getString(PROVIDER_CATEGORY_COLUMN); - } - - - static void log(String msg) { - Log.d(TAG, "[LandingPage]" + msg); - } - - private class ProviderListItemFactory implements LayoutInflater.Factory { - public View onCreateView(String name, Context context, AttributeSet attrs) { - if (name != null && name.equals(ProviderListItem.class.getName())) { - return new ProviderListItem(context, LandingPage.this); - } - return null; - } - } - - private final class ProviderAdapter extends CursorAdapter { - private LayoutInflater mInflater; - - public ProviderAdapter(Context context, Cursor c) { - super(context, c); - mInflater = LayoutInflater.from(context).cloneInContext(context); - mInflater.setFactory(new ProviderListItemFactory()); - } - - @Override - public View newView(Context context, Cursor cursor, ViewGroup parent) { - // create a custom view, so we can manage it ourselves. Mainly, we want to - // initialize the widget views (by calling getViewById()) in newView() instead of in - // bindView(), which can be called more often. - ProviderListItem view = (ProviderListItem) mInflater.inflate( - R.layout.account_view, parent, false); - view.init(cursor); - return view; - } - - @Override - public void bindView(View view, Context context, Cursor cursor) { - ((ProviderListItem) view).bindView(cursor); - } - } - -} diff --git a/src/com/android/providers/im/ProviderListItem.java b/src/com/android/providers/im/ProviderListItem.java deleted file mode 100644 index 9032e94..0000000 --- a/src/com/android/providers/im/ProviderListItem.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright (C) 2008 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.providers.im; - -import android.graphics.drawable.Drawable; -import android.widget.LinearLayout; -import android.widget.ImageView; -import android.widget.TextView; -import android.content.Context; -import android.content.ContentResolver; -import android.content.res.Resources; -import android.database.Cursor; -import android.im.BrandingResourceIDs; -import android.provider.Im; -import android.content.res.ColorStateList; -import android.view.View; -import android.util.Log; -import com.android.providers.im.R; - -public class ProviderListItem extends LinearLayout { - private static final String TAG = "IM"; - private static final boolean LOCAL_DEBUG = false; - - private LandingPage mActivity; - private ImageView mProviderIcon; - private ImageView mStatusIcon; - private TextView mProviderName; - private TextView mLoginName; - private TextView mChatView; - private View mUnderBubble; - private Drawable mBubbleDrawable, mDefaultBackground; - - private int mProviderIdColumn; - private int mProviderFullnameColumn; - private int mActiveAccountIdColumn; - private int mActiveAccountUserNameColumn; - private int mAccountPresenceStatusColumn; - private int mAccountConnectionStatusColumn; - - private ColorStateList mProviderNameColors; - private ColorStateList mLoginNameColors; - private ColorStateList mChatViewColors; - - public ProviderListItem(Context context, LandingPage activity) { - super(context); - mActivity = activity; - } - - public void init(Cursor c) { - mProviderIcon = (ImageView) findViewById(R.id.providerIcon); - mStatusIcon = (ImageView) findViewById(R.id.statusIcon); - mProviderName = (TextView) findViewById(R.id.providerName); - mLoginName = (TextView) findViewById(R.id.loginName); - mChatView = (TextView) findViewById(R.id.conversations); - mUnderBubble = (View) findViewById(R.id.underBubble); - mBubbleDrawable = getResources().getDrawable(R.drawable.bubble); - mDefaultBackground = getResources().getDrawable(R.drawable.default_background); - - mProviderIdColumn = c.getColumnIndexOrThrow(Im.Provider._ID); - mProviderFullnameColumn = c.getColumnIndexOrThrow(Im.Provider.FULLNAME); - mActiveAccountIdColumn = c.getColumnIndexOrThrow( - Im.Provider.ACTIVE_ACCOUNT_ID); - mActiveAccountUserNameColumn = c.getColumnIndexOrThrow( - Im.Provider.ACTIVE_ACCOUNT_USERNAME); - mAccountPresenceStatusColumn = c.getColumnIndexOrThrow( - Im.Provider.ACCOUNT_PRESENCE_STATUS); - mAccountConnectionStatusColumn = c.getColumnIndexOrThrow( - Im.Provider.ACCOUNT_CONNECTION_STATUS); - - mProviderNameColors = mProviderName.getTextColors(); - mLoginNameColors = mLoginName.getTextColors(); - mChatViewColors = mChatView.getTextColors(); - } - - public void bindView(Cursor cursor) { - Resources r = getResources(); - ImageView providerIcon = mProviderIcon; - ImageView statusIcon = mStatusIcon; - TextView providerName = mProviderName; - TextView loginName = mLoginName; - TextView chatView = mChatView; - - int providerId = cursor.getInt(mProviderIdColumn); - String providerDisplayName = cursor.getString(mProviderFullnameColumn); - - BrandingResources brandingRes = mActivity.getBrandingResource(providerId); - providerIcon.setImageDrawable( - brandingRes.getDrawable(BrandingResourceIDs.DRAWABLE_LOGO)); - - mUnderBubble.setBackgroundDrawable(mDefaultBackground); - statusIcon.setVisibility(View.GONE); - - providerName.setTextColor(mProviderNameColors); - loginName.setTextColor(mLoginNameColors); - chatView.setTextColor(mChatViewColors); - - if (!cursor.isNull(mActiveAccountIdColumn)) { - mLoginName.setVisibility(View.VISIBLE); - providerName.setVisibility(View.VISIBLE); - providerName.setText(providerDisplayName); - - long accountId = cursor.getLong(mActiveAccountIdColumn); - int connectionStatus = cursor.getInt(mAccountConnectionStatusColumn); - - String secondRowText; - - chatView.setVisibility(View.GONE); - - switch (connectionStatus) { - case Im.ConnectionStatus.CONNECTING: - secondRowText = r.getString(R.string.signing_in_wait); - break; - - case Im.ConnectionStatus.ONLINE: - int presenceIconId = getPresenceIconId(cursor); - statusIcon.setImageDrawable( - brandingRes.getDrawable(presenceIconId)); - statusIcon.setVisibility(View.VISIBLE); - ContentResolver cr = mActivity.getContentResolver(); - - int count = getConversationCount(cr, accountId); - if (count > 0) { - mUnderBubble.setBackgroundDrawable(mBubbleDrawable); - chatView.setVisibility(View.VISIBLE); - chatView.setText(r.getString(R.string.conversations, count)); - - providerName.setTextColor(0xff000000); - loginName.setTextColor(0xff000000); - chatView.setTextColor(0xff000000); - } else { - chatView.setVisibility(View.GONE); - } - - secondRowText = cursor.getString(mActiveAccountUserNameColumn); - break; - - default: - secondRowText = cursor.getString(mActiveAccountUserNameColumn); - break; - } - - loginName.setText(secondRowText); - - } else { - // No active account, show add account - mLoginName.setVisibility(View.GONE); - - mProviderName.setText(providerDisplayName); - } - } - - private int getConversationCount(ContentResolver cr, long accountId) { - // TODO: this is code used to get Google Talk's chat count. Not sure if this will work - // for IMPS chat count. - StringBuilder where = new StringBuilder(); - where.append(Im.Chats.CONTACT_ID); - where.append(" in (select _id from contacts where "); - where.append(Im.Contacts.ACCOUNT); - where.append("="); - where.append(accountId); - where.append(")"); - - Cursor cursor = cr.query(Im.Chats.CONTENT_URI, null, where.toString(), null, null); - - try { - return cursor.getCount(); - } finally { - cursor.close(); - } - } - - private int getPresenceIconId(Cursor cursor) { - int presenceStatus = cursor.getInt(mAccountPresenceStatusColumn); - - if (LOCAL_DEBUG) log("getPresenceIconId: presenceStatus=" + presenceStatus); - - switch (presenceStatus) { - case Im.Presence.AVAILABLE: - return BrandingResourceIDs.DRAWABLE_PRESENCE_ONLINE; - - case Im.Presence.IDLE: - case Im.Presence.AWAY: - return BrandingResourceIDs.DRAWABLE_PRESENCE_AWAY; - - case Im.Presence.DO_NOT_DISTURB: - return BrandingResourceIDs.DRAWABLE_PRESENCE_BUSY; - - case Im.Presence.INVISIBLE: - return BrandingResourceIDs.DRAWABLE_PRESENCE_INVISIBLE; - - default: - return BrandingResourceIDs.DRAWABLE_PRESENCE_OFFLINE; - } - } - - private void log(String msg) { - Log.d(TAG, msg); - } -} |