OSDN Git Service

auto import from //branches/cupcake_rel/...@140373
authorThe Android Open Source Project <initial-contribution@android.com>
Thu, 19 Mar 2009 00:39:48 +0000 (17:39 -0700)
committerThe Android Open Source Project <initial-contribution@android.com>
Thu, 19 Mar 2009 00:39:48 +0000 (17:39 -0700)
26 files changed:
res/drawable/avatar_unknown.png
res/drawable/dialog_im_switch_chats_strip.9.png [new file with mode: 0644]
res/layout/chat_switcher_dialog.xml
res/layout/chat_switcher_item.xml
res/values-cs/strings.xml
res/values-de/strings.xml
res/values-es/strings.xml
res/values-fr/strings.xml
res/values-it/strings.xml
res/values-ja/strings.xml
res/values-ko/strings.xml
res/values-nb/strings.xml
res/values-nl/strings.xml
res/values-pl/strings.xml
res/values-ru/strings.xml
res/values-zh-rCN/strings.xml
res/values-zh-rTW/strings.xml
res/values/strings.xml
res/values/styles.xml [new file with mode: 0644]
src/com/android/im/app/ChatSwitcher.java
src/com/android/im/app/ChatView.java
src/com/android/im/app/ContactListActivity.java
src/com/android/im/app/ContactListView.java
src/com/android/im/app/FrontDoorPlugin.java
src/com/android/im/imps/ImpsContactListManager.java
src/com/android/im/service/RemoteImService.java

index be55f41..3a338e8 100644 (file)
Binary files a/res/drawable/avatar_unknown.png and b/res/drawable/avatar_unknown.png differ
diff --git a/res/drawable/dialog_im_switch_chats_strip.9.png b/res/drawable/dialog_im_switch_chats_strip.9.png
new file mode 100644 (file)
index 0000000..1fe2c11
Binary files /dev/null and b/res/drawable/dialog_im_switch_chats_strip.9.png differ
index 7282cfe..cbfa002 100644 (file)
 
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
-    android:layout_height="138dip" >
+    android:layout_height="112dip" >
 
     <HorizontalScrollView
-        android:layout_marginLeft="10dip"
-        android:layout_marginTop="10dip"
-        android:layout_marginRight="10dip"
-        android:layout_marginBottom="10dip"
         android:scrollbars="none"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent">
index 3f00f6a..fd3788f 100644 (file)
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:background="@drawable/dashboard_highlight"
     android:layout_gravity="center_horizontal"
-    android:layout_width="87dip"
+    android:layout_width="92dip"
     android:layout_height="fill_parent">
 
     <!-- avatar -->
     <ImageView android:id="@+id/avatar"
         android:background="@drawable/im_avatar_picture_border_normal"
         android:scaleType="centerCrop"
-        android:padding="5dip"
         android:layout_marginLeft="4dip"
-        android:layout_marginTop="10dip"
+        android:layout_marginTop="5dip"
         android:layout_width="58dip"
         android:layout_height="58dip"
         android:layout_alignParentLeft="true"
         android:layout_alignParentTop="true" />
+        
+    <ImageView android:id="@+id/presence"
+        android:scaleType="centerCrop"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignBottom="@id/avatar"
+        android:layout_toRightOf="@id/avatar" />
 
     <TextView android:id="@+id/name"
         android:layout_marginTop="3dip"
index 93b52df..67d7460 100644 (file)
     <string name="presence_idle">"Nečinný"</string>
     <string name="presence_offline">"Offline"</string>
     <string name="presence_invisible">"Zobrazit jako offline"</string>
-    <string name="preference_title">"<xliff:g id="PROVIDER">%1$s</xliff:g> settings (dev only)"</string>
-    <string name="data_channel_label">"Datový kanál"</string>
-    <string name="data_encoding_label">"Kódování dat"</string>
-    <string name="cir_channel_label">"Kanál CIR"</string>
-    <string name="host_label">"Hostitel"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"Uložit"</string>
     <string name="chat_with">"Chat s uživatelem <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Já"</string>
     <string name="compose_hint">"Sem zadejte zprávu"</string>
     <item>"Smějící se"</item>
     <item>"Zmatený"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"=-O"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index d47f646..95db836 100644 (file)
     <string name="presence_idle">"Leerlauf"</string>
     <string name="presence_offline">"Offline"</string>
     <string name="presence_invisible">"Als offline anzeigen"</string>
-    <string name="preference_title">"Einstellungen für <xliff:g id="PROVIDER">%1$s</xliff:g> (nur für Entwickler)"</string>
-    <string name="data_channel_label">"Datenkanal"</string>
-    <string name="data_encoding_label">"Datenkodierung"</string>
-    <string name="cir_channel_label">"CIR-Kanal"</string>
-    <string name="host_label">"Host"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"Speichern"</string>
     <string name="chat_with">"Mit <xliff:g id="USER">%1$s</xliff:g> chatten"</string>
     <string name="me">"Eigene"</string>
     <string name="compose_hint">"Zum Erstellen eintippen"</string>
     <item>"Lachen"</item>
     <item>"Verwirrt"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"=-O"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index 3d4b63d..b21e241 100644 (file)
     <string name="presence_idle">"Inactivo"</string>
     <string name="presence_offline">"Desconectado"</string>
     <string name="presence_invisible">"Aparecer desconectado"</string>
-    <string name="preference_title">"<xliff:g id="PROVIDER">%1$s</xliff:g> settings (dev only)"</string>
-    <string name="data_channel_label">"Canal de datos"</string>
-    <string name="data_encoding_label">"Codificación de datos"</string>
-    <string name="cir_channel_label">"Canal CIR"</string>
-    <string name="host_label">"Host"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"Guardar"</string>
     <string name="chat_with">"Chat con <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Yo"</string>
     <string name="compose_hint">"Escribe el texto aquí"</string>
     <item>"Riendo"</item>
     <item>"Confuso"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"=-O"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index 8fbf37b..8fea128 100644 (file)
     <string name="presence_idle">"Absent"</string>
     <string name="presence_offline">"Hors ligne"</string>
     <string name="presence_invisible">"Apparaître hors ligne"</string>
-    <string name="preference_title">"<xliff:g id="PROVIDER">%1$s</xliff:g> settings (dev only)"</string>
-    <string name="data_channel_label">"Canal de données"</string>
-    <string name="data_encoding_label">"Codage des données"</string>
-    <string name="cir_channel_label">"Canal CIR"</string>
-    <string name="host_label">"Hôte"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"Enregistrer"</string>
     <string name="chat_with">"Chatter avec <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Moi"</string>
     <string name="compose_hint">"Cliquer pour composer"</string>
     <item>"Rigole"</item>
     <item>"Confus"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"=-O"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index ec1e57d..324b0e8 100644 (file)
     <string name="presence_idle">"Inattivo"</string>
     <string name="presence_offline">"Offline"</string>
     <string name="presence_invisible">"Invisibile"</string>
-    <string name="preference_title">"<xliff:g id="PROVIDER">%1$s</xliff:g> settings (dev only)"</string>
-    <string name="data_channel_label">"Canale dati"</string>
-    <string name="data_encoding_label">"Codifica dati"</string>
-    <string name="cir_channel_label">"Canale CIR"</string>
-    <string name="host_label">"Host"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"Salva"</string>
     <string name="chat_with">"Conversazione con <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Io"</string>
     <string name="compose_hint">"Digita per comporre"</string>
     <item>"Risata"</item>
     <item>"Confuso"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"=-O"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index 0abb727..e1a5b5d 100644 (file)
     <skip />
     <!-- no translation found for bg_data_prompt_cancel (7206105589826174638) -->
     <skip />
-    <string name="ongoing_conversation">"継続中のチャット (<xliff:g id="NUMBER">%1$d</xliff:g>件)"</string>
+    <string name="ongoing_conversation">"チャット中(<xliff:g id="NUMBER">%1$d</xliff:g>)"</string>
     <string name="online_count">"オンライン<xliff:g id="NUMBER">%1$d</xliff:g>人"</string>
     <string name="subscriptions">"友だちの招待"</string>
     <string name="unknown_contact">"("<i>"不明"</i>")"</string>
     <string name="empty_contact_group">"未登録"</string>
-    <string name="empty_conversation_group">"ã\83\81ã\83£ã\83\83ã\83\88ã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93"</string>
+    <string name="empty_conversation_group">"ã\83\81ã\83£ã\83\83ã\83\88ã\81ªã\81\97"</string>
     <string name="contacts_picker_title">"招待する連絡先を選択してください"</string>
     <string name="contact_filter_hint">"検索する連絡先を入力"</string>
     <string name="empty_contact_list">"連絡先がありません。"</string>
     <string name="presence_idle">"アイドル状態"</string>
     <string name="presence_offline">"オフライン"</string>
     <string name="presence_invisible">"オフラインとして表示"</string>
-    <string name="preference_title">"<xliff:g id="PROVIDER">%1$s</xliff:g> settings (dev only)"</string>
-    <string name="data_channel_label">"データチャネル"</string>
-    <string name="data_encoding_label">"データのエンコード"</string>
-    <string name="cir_channel_label">"CIRチャネル"</string>
-    <string name="host_label">"ホスト"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"保存"</string>
     <string name="chat_with">"<xliff:g id="USER">%1$s</xliff:g>とチャット"</string>
     <string name="me">"自分"</string>
     <string name="compose_hint">"メッセージを入力"</string>
     <item>"笑顔"</item>
     <item>"混乱"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"=-O"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index d61b065..7c7b153 100644 (file)
     <string name="presence_idle">"한가함"</string>
     <string name="presence_offline">"오프라인"</string>
     <string name="presence_invisible">"오프라인"</string>
-    <string name="preference_title">"<xliff:g id="PROVIDER">%1$s</xliff:g> settings (dev only)"</string>
-    <string name="data_channel_label">"데이터 채널"</string>
-    <string name="data_encoding_label">"데이터 인코딩"</string>
-    <string name="cir_channel_label">"CIR 채널"</string>
-    <string name="host_label">"호스트"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"저장"</string>
     <string name="chat_with">"<xliff:g id="USER">%1$s</xliff:g>님과 채팅"</string>
     <string name="me">"나"</string>
     <string name="compose_hint">"메시지 내용을 입력하세요."</string>
     <item>"웃음"</item>
     <item>"어리둥절"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"=-O"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index dffe5ef..1c9d12b 100644 (file)
     <string name="presence_idle">"Inaktiv"</string>
     <string name="presence_offline">"Avlogget"</string>
     <string name="presence_invisible">"Usynlig"</string>
-    <string name="preference_title">"<xliff:g id="PROVIDER">%1$s</xliff:g> settings (dev only)"</string>
-    <string name="data_channel_label">"Data channel"</string>
-    <string name="data_encoding_label">"Data encoding"</string>
-    <string name="cir_channel_label">"CIR channel"</string>
-    <string name="host_label">"Host"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"Save"</string>
     <string name="chat_with">"Samtale med <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Meg"</string>
     <!-- no translation found for compose_hint (1735533889811320962) -->
     <item>"Ler"</item>
     <item>"Forvirret"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"=-O"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\\\\\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index 01c1ee4..d9083bd 100644 (file)
     <string name="presence_idle">"Inactief"</string>
     <string name="presence_offline">"Offline"</string>
     <string name="presence_invisible">"Offline weergeven"</string>
-    <string name="preference_title">"<xliff:g id="PROVIDER">%1$s</xliff:g> settings (dev only)"</string>
-    <string name="data_channel_label">"Gegevenskanaal"</string>
-    <string name="data_encoding_label">"Gegevenscodering"</string>
-    <string name="cir_channel_label">"CIR-kanaal"</string>
-    <string name="host_label">"Host"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"Opslaan"</string>
     <string name="chat_with">"Chatten met <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Ik"</string>
     <string name="compose_hint">"Typ om een bericht te schrijven"</string>
     <item>"Lachend"</item>
     <item>"Verward"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"Err:502"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index 837d030..fe3bf0d 100644 (file)
     <string name="presence_idle">"Bezczynność"</string>
     <string name="presence_offline">"Offline"</string>
     <string name="presence_invisible">"Pokazuj jako offline"</string>
-    <string name="preference_title">"<xliff:g id="PROVIDER">%1$s</xliff:g> settings (dev only)"</string>
-    <string name="data_channel_label">"Kanał danych"</string>
-    <string name="data_encoding_label">"Szyfrowanie danych"</string>
-    <string name="cir_channel_label">"Kanał CIR"</string>
-    <string name="host_label">"Host"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"Zapisz"</string>
     <string name="chat_with">"Czatuj z użytkownikiem <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Ja"</string>
     <string name="compose_hint">"Wpisz, aby utworzyć"</string>
     <item>"Śmiech"</item>
     <item>"Zakłopotanie"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"=-O"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index dbd374c..c2b042d 100644 (file)
     <string name="presence_idle">"Не активен"</string>
     <string name="presence_offline">"Не в сети"</string>
     <string name="presence_invisible">"Невидимость"</string>
-    <string name="preference_title">"<xliff:g id="PROVIDER">%1$s</xliff:g> settings (dev only)"</string>
-    <string name="data_channel_label">"Канал данных"</string>
-    <string name="data_encoding_label">"Кодировка данных"</string>
-    <string name="cir_channel_label">"Канал CIR"</string>
-    <string name="host_label">"Хост"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"Сохранить"</string>
     <string name="chat_with">"Чат: <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Я"</string>
     <string name="compose_hint">"Введите текст"</string>
     <item>"Смешно"</item>
     <item>"В замешательстве"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"=-O"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index 5241944..abd9ad9 100644 (file)
     <string name="presence_idle">"空闲"</string>
     <string name="presence_offline">"脱机"</string>
     <string name="presence_invisible">"显示为脱机"</string>
-    <string name="preference_title">"<xliff:g id="PROVIDER">%1$s</xliff:g>设置(仅限开发人员)"</string>
-    <string name="data_channel_label">"数据通道"</string>
-    <string name="data_encoding_label">"数据编码"</string>
-    <string name="cir_channel_label">"承诺信息速率通道"</string>
-    <string name="host_label">"主机"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"保存"</string>
     <string name="chat_with">"与<xliff:g id="USER">%1$s</xliff:g>聊天"</string>
     <string name="me">"我"</string>
     <string name="compose_hint">"键入内容"</string>
     <item>"大笑"</item>
     <item>"困惑"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"=-O"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index 36d72df..2400027 100644 (file)
     <string name="presence_idle">"閒置"</string>
     <string name="presence_offline">"離線"</string>
     <string name="presence_invisible">"顯示離線"</string>
-    <string name="preference_title">"<xliff:g id="PROVIDER">%1$s</xliff:g> settings (dev only)"</string>
-    <string name="data_channel_label">"資料頻道"</string>
-    <string name="data_encoding_label">"紀錄日期"</string>
-    <string name="cir_channel_label">"多重路徑頻道"</string>
-    <string name="host_label">"主機"</string>
-    <string name="msisdn_label">"MSISDN"</string>
-    <string name="http">"HTTP"</string>
-    <string name="sms">"SMS"</string>
-    <string name="tcp">"TCP"</string>
-    <string name="xml">"XML"</string>
-    <string name="wbxml">"WBXML"</string>
-    <string name="save">"儲存"</string>
     <string name="chat_with">"與 <xliff:g id="USER">%1$s</xliff:g> 交談"</string>
     <string name="me">"我"</string>
     <string name="compose_hint">"輸入文字開始撰寫"</string>
     <item>"開懷大笑"</item>
     <item>"疑惑"</item>
   </string-array>
-  <string-array name="default_smiley_texts">
-    <item>":-)"</item>
-    <item>":-("</item>
-    <item>";-)"</item>
-    <item>":-P"</item>
-    <item>"=-O"</item>
-    <item>":-*"</item>
-    <item>":O"</item>
-    <item>"B-)"</item>
-    <item>":-$"</item>
-    <item>":-!"</item>
-    <item>":-["</item>
-    <item>"O:-)"</item>
-    <item>":-\\"</item>
-    <item>":\'("</item>
-    <item>":-X"</item>
-    <item>":-D"</item>
-    <item>"o_O"</item>
-  </string-array>
 </resources>
index edf37cc..fb366b8 100644 (file)
     <string name="presence_invisible">Appear offline</string>
 
     <!-- These strings are displayed on the connection setting activity. They are used for development only. Do not localize! -->
-    <string name="preference_title"><xliff:g id="provider">%1$s</xliff:g> settings (dev only)</string>
-    <string name="data_channel_label">Data channel</string>
-    <string name="data_encoding_label">Data encoding</string>
-    <string name="cir_channel_label">CIR channel</string>
-    <string name="host_label">Host</string>
-    <string name="msisdn_label">MSISDN</string>
-    <string name="http">HTTP</string>
-    <string name="sms">SMS</string>
-    <string name="tcp">TCP</string>
-    <string name="xml">XML</string>
-    <string name="wbxml">WBXML</string>
-    <string name="save">Save</string>
+    <string name="preference_title" translatable="false"><xliff:g id="provider">%1$s</xliff:g> settings (dev only)</string>
+    <string name="data_channel_label" translatable="false">Data channel</string>
+    <string name="data_encoding_label" translatable="false">Data encoding</string>
+    <string name="cir_channel_label" translatable="false">CIR channel</string>
+    <string name="host_label" translatable="false">Host</string>
+    <string name="msisdn_label" translatable="false">MSISDN</string>
+    <string name="http" translatable="false">HTTP</string>
+    <string name="sms" translatable="false">SMS</string>
+    <string name="tcp" translatable="false">TCP</string>
+    <string name="xml" translatable="false">XML</string>
+    <string name="wbxml" translatable="false">WBXML</string>
+    <string name="save" translatable="false">Save</string>
 
     <!-- These strings are displayed on the chat screen -->
     <!-- Chat screen title (i.e. Chat with Anne Clarkson) -->
         <item>Confused</item>
     </string-array>
     <!-- Do not localize! Smiley text representations. May be overrided by the plugin. -->
-    <string-array name="default_smiley_texts">
+    <string-array name="default_smiley_texts" translatable="false">
         <item>:-)</item>
         <item>:-(</item>
         <item>;-)</item>
diff --git a/res/values/styles.xml b/res/values/styles.xml
new file mode 100644 (file)
index 0000000..b973c70
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    /*
+    * Copyright 2008, Google Inc.
+    *
+    * Licensed under the Apache License, Version 2.0 (the "License");
+    * you may not use this file except in compliance with the License.
+    * You may obtain a copy of the License at
+    *
+    *     http://www.apache.org/licenses/LICENSE-2.0
+    *
+    * Unless required by applicable law or agreed to in writing, software
+    * distributed under the License is distributed on an "AS IS" BASIS,
+    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    * See the License for the specific language governing permissions and
+    * limitations under the License.
+    */
+-->
+
+<resources>
+    <style name="Theme.ChatSwitcher" parent="android:style/Theme.Dialog">
+        <item name="android:windowBackground">@drawable/dialog_im_switch_chats_strip</item>
+        <item name="android:windowNoTitle">true</item>
+    </style>
+</resources>
\ No newline at end of file
index f848369..04d35e6 100644 (file)
@@ -146,7 +146,7 @@ public class ChatSwitcher {
         private View mEmptyView;
 
         public ChatSwitcherDialog(Context context, ChatSwitcher switcher) {
-            super(context);
+            super(context, R.style.Theme_ChatSwitcher);
             mSwitcher = switcher;
         }
 
@@ -175,6 +175,28 @@ public class ChatSwitcher {
             }
         }
 
+        private void updateViewListeners(View v, final Cursor c, final int position) {
+            v.setOnClickListener(new View.OnClickListener() {
+                public void onClick(View view) {
+                    select(c, position);
+                }});
+
+            v.setOnKeyListener(new View.OnKeyListener() {
+                public boolean onKey(View v, int keyCode, KeyEvent event) {
+                    if (event.getAction() != KeyEvent.ACTION_DOWN) {
+                        return false;
+                    }
+                    switch (keyCode) {
+                    case KeyEvent.KEYCODE_ENTER:
+                    case KeyEvent.KEYCODE_DPAD_CENTER:
+                        select(c, position);
+                        return true;
+                    }
+                    return false;
+                }
+            });
+        }
+
         public void update() {
             int focusPos = 0;
             int sz = mViews.size();
@@ -208,29 +230,13 @@ public class ChatSwitcher {
                         mInflater.inflate(R.layout.chat_switcher_item, mContainer, true);
                         v = mContainer.getChildAt(mContainer.getChildCount() - 1);
                         mViews.add(v);
-                        final int position = pos;
-                        v.setOnClickListener(new View.OnClickListener() {
-                            public void onClick(View view) {
-                                select(c, position);
-                            }});
-                        v.setOnKeyListener(new View.OnKeyListener() {
-                            public boolean onKey(View v, int keyCode, KeyEvent event) {
-                                if (event.getAction() != KeyEvent.ACTION_DOWN) {
-                                    return false;
-                                }
-                                switch (keyCode) {
-                                case KeyEvent.KEYCODE_ENTER:
-                                case KeyEvent.KEYCODE_DPAD_CENTER:
-                                    select(c, position);
-                                    return true;
-                                }
-                                return false;
-                            }
-                        });
                         v.setFocusable(true);
                     } else {
                         v = mViews.get(pos);
                     }
+                    
+                    updateViewListeners(v, c, pos);
+
                     v.setVisibility(View.VISIBLE);
                     mSwitcherAdapter.bindView(v, mActivity, c);
                     v.setTag(c.getLong(mProviderIdColumn));
@@ -318,7 +324,7 @@ public class ChatSwitcher {
         private String mMenuPlus;
 
         private int mLayout;
-        private android.database.ContentObserver mContentObserver =
+        private android.database.ContentObserver mContentObserver = 
             new android.database.ContentObserver(null) {
                 @Override
                 public void onChange(boolean selfChange) {
@@ -327,25 +333,11 @@ public class ChatSwitcher {
                 }
         };
 
-        private android.database.DataSetObserver mDataSetObserver =
-            new android.database.DataSetObserver() {
-                @Override
-                public void onChanged() {
-                    if (isOpen())
-                        startQuery();
-                }
-
-                @Override
-                public void onInvalidated() {
-                }
-        };
-
-
         public SwitcherAdapter(Cursor c, Activity a) {
             // use false as the third parameter to the CursorAdapter constructor
-            // to indicate that we should not auto-requery the cursor
+            // to indicate that we should not auto-requery the cursor 
             super(a, c, false);
-            mLayout = R.layout.chat_switcher_item;
+            mLayout = R.layout.chat_switcher_item; 
             mActivity = a;
             mMenuPlus = a.getString(R.string.menu_plus);
 
@@ -355,7 +347,6 @@ public class ChatSwitcher {
         private void setupObservers(Cursor oldCursor) {
             if (oldCursor != null) {
                 oldCursor.unregisterContentObserver(mContentObserver);
-                oldCursor.unregisterDataSetObserver(mDataSetObserver);
             }
 
             Cursor c = getCursor();
@@ -363,7 +354,6 @@ public class ChatSwitcher {
                 return;
 
             c.registerContentObserver(mContentObserver);
-            c.registerDataSetObserver(mDataSetObserver);
         }
 
         @Override
@@ -406,18 +396,16 @@ public class ChatSwitcher {
                 presence = brandingRes.getDrawable(
                         PresenceUtils.getStatusIconId(presenceMode));
             }
-            presence.setBounds(0, 0, presence.getIntrinsicWidth(),
-                    presence.getIntrinsicHeight());
-            t.setCompoundDrawables(null, null, presence, null);
-            t.setCompoundDrawablePadding(3);
+            ImageView presenceView = (ImageView) view.findViewById(R.id.presence);
+            presenceView.setImageDrawable(presence);
 
             //  If there is a shortcut assigned to this chat, then show it, otherwise
             //  hide the shortcut text view.
-            String shortcut = c.getString(mShortcutColumn);
+            long shortcut = c.getLong(mShortcutColumn);
             TextView shortcutView = (TextView) view.findViewById(R.id.shortcut);
 
             shortcutView.setVisibility(mPreferMenuShortcut ? View.VISIBLE : View.GONE);
-            if (!TextUtils.isEmpty(shortcut)) {
+            if (shortcut >= 0 && shortcut < 10) {
                 shortcutView.setText(mMenuPlus + shortcut);
             } else {
                 shortcutView.setText("");
@@ -436,7 +424,7 @@ public class ChatSwitcher {
             tv.setText(android.text.format.DateUtils.getRelativeTimeSpanString(
                         c.getLong(mLastChatColumn),
                         System.currentTimeMillis(),
-                        android.text.format.DateUtils.MINUTE_IN_MILLIS,
+                        android.text.format.DateUtils.MINUTE_IN_MILLIS, 
                         android.text.format.DateUtils.FORMAT_ABBREV_RELATIVE));
             tv.setVisibility(mPreferMenuShortcut ? View.GONE : View.VISIBLE);
         }
@@ -650,8 +638,8 @@ public class ChatSwitcher {
 
         c.moveToPosition(-1);
         while (c.moveToNext()) {
-            String shortcut = c.getString(mShortcutColumn);
-            if (shortcut != null && shortcut.length() > 0 && shortcut.charAt(0) == key) {
+            long shortcut = c.getLong(mShortcutColumn);
+            if (shortcut >= 0 && shortcut < 10 && key == (shortcut + '0')) {
                 select(c, c.getPosition());
                 break;
             }
@@ -713,8 +701,7 @@ public class ChatSwitcher {
     /*
      * +1 to go forward, -1 to go backward
      */
-    public void rotateChat(final int direction, final String contact,
-            final long accountId, final long providerId) {
+    public void rotateChat(final int direction, final String contact, final long accountId, final long providerId) {
         if (direction != 1 && direction != -1) {
             return;
         }
index 5c336a8..665c7a5 100644 (file)
@@ -772,8 +772,8 @@ public class ChatView extends LinearLayout {
         new AlertDialog.Builder(mContext)
             .setTitle(R.string.confirm)
             .setMessage(r.getString(R.string.confirm_block_contact, mNickName))
-            .setPositiveButton(R.string.no, null) // default button
-            .setNegativeButton(R.string.yes, confirmListener)
+            .setPositiveButton(R.string.yes, confirmListener) // default button
+            .setNegativeButton(R.string.no, null)
             .setCancelable(false)
             .show();
     }
index cfb799d..544d254 100644 (file)
@@ -306,6 +306,7 @@ public class ContactListActivity extends Activity implements View.OnCreateContex
     protected void onResume() {
         super.onResume();
         mApp.registerForConnEvents(mHandler);
+        mContactListView.setAutoRefreshContacts(true);
     }
 
     @Override
index 7e62d7f..5c31683 100644 (file)
@@ -37,6 +37,7 @@ import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.res.Resources;
 import android.database.Cursor;
+import android.graphics.Canvas;
 import android.net.Uri;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -61,6 +62,7 @@ public class ContactListView extends LinearLayout {
     private ContactListTreeAdapter mAdapter;
     private boolean mHideOfflineContacts;
     private SavedState mSavedState;
+    private boolean mAutoRefresh = true;
 
     public ContactListView(Context screen, AttributeSet attrs) {
         super(screen, attrs);
@@ -187,6 +189,7 @@ public class ContactListView extends LinearLayout {
                 Intent i = new Intent(Intent.ACTION_VIEW, data);
                 i.addCategory(ImApp.IMPS_CATEGORY);
                 mScreen.startActivity(i);
+                setAutoRefreshContacts(false);
             } catch (RemoteException e) {
                 mHandler.showServiceErrorAlert();
             }
@@ -492,4 +495,15 @@ public class ContactListView extends LinearLayout {
 
         mSavedState = ss;
     }
+
+    protected void setAutoRefreshContacts(boolean isRefresh) {
+        mAutoRefresh = isRefresh;
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int l, int t, int r, int b) {
+        if (mAutoRefresh) {
+            super.onLayout(changed, l, t, r, b);
+        }
+    }
 }
index 343efec..fedd45e 100644 (file)
@@ -87,12 +87,23 @@ public class FrontDoorPlugin extends Service {
         PackageManager pm = getPackageManager();
         List<ResolveInfo> plugins = pm.queryIntentServices(
                 new Intent(ImPluginConstants.PLUGIN_ACTION_NAME), PackageManager.GET_META_DATA);
+        int numPlugins = plugins.size();
+
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            log("loadThirdPartyPlugins: # plugins found: " + numPlugins);
+        }
+
+        if (numPlugins == 0) {
+            Log.e(TAG, "[IM.FrontDoorPlugin] no plugins found! bail...");
+            return;
+        }
+
         for (ResolveInfo info : plugins) {
-            if (LOCAL_DEBUG) log("loadThirdPartyPlugins: found plugin " + info);
+            if (Log.isLoggable(TAG, Log.DEBUG)) log("loadThirdPartyPlugins: found plugin " + info);
 
             ServiceInfo serviceInfo = info.serviceInfo;
             if (serviceInfo == null) {
-                Log.e(TAG, "loadThirdPartyPlugins: ignore bad plugin: " + info);
+                Log.e(TAG, "[FrontDoorPlugin] loadThirdPartyPlugins: ignore bad plugin: " + info);
                 continue;
             }
 
@@ -107,7 +118,8 @@ public class FrontDoorPlugin extends Service {
                 signUpUrl = metaData.getString(ImPluginConstants.METADATA_SIGN_UP_URL);
             }
             if (TextUtils.isEmpty(providerName) || TextUtils.isEmpty(providerFullName)) {
-                Log.e(TAG, "Ignore bad IM plugin: " + info + ". Lack of required meta data");
+                Log.e(TAG, "[FrontDoorPlugin] Ignore bad IM plugin: " + info +
+                        ". Lack of required meta data");
                 continue;
             }
 
@@ -118,14 +130,14 @@ public class FrontDoorPlugin extends Service {
             String srcPath = serviceInfo.applicationInfo.sourceDir;
             Class pluginClass = loadClass(className, srcPath);
             if (pluginClass == null) {
-                Log.e(TAG, "Can not load package for plugin " + providerName);
+                Log.e(TAG, "[FrontDoorPlugin] Can not load package for plugin " + providerName);
                 continue;
             }
             classes.put(providerName, pluginClass);
 
             Map<String, String> config = loadProviderConfigFromPlugin(pluginClass);
             if (config == null) {
-                Log.e(TAG, "Can not load config for plugin " + providerName);
+                Log.e(TAG, "[FrontDoorPlugin] Can not load config for plugin " + providerName);
                 continue;
             }
             config.put(ImConfigNames.PLUGIN_PATH, srcPath);
index cc6e369..480671d 100644 (file)
@@ -692,7 +692,12 @@ public class ImpsContactListManager extends ContactListManager
             return;
         }
         for (PrimitiveElement entity : entityList.getChildren()) {
-            if (entity.getTagName().equals(ImpsTags.UserID)) {
+            if (ImpsTags.UserID.equals(entity.getTagName())) {
+                String userId = entity.getContents();
+                if (userId == null || userId.length() == 0) {
+                    ImpsLog.logError("Empty UserID in BlockList");
+                    continue;
+                }
                 ImpsAddress userAddress = new ImpsUserAddress(entity.getContents());
                 notifyBlockContact(new Contact(userAddress, userAddress.getScreenName()),
                         true);
index 1745e70..cb350bd 100644 (file)
@@ -264,7 +264,7 @@ public class RemoteImService extends Service {
         // Insert a fake msisdn on emulator. We don't need this on device
         // because the mobile network will take care of it.
         if ("1".equals(SystemProperties.get("ro.kernel.qemu"))) {
-            settings.put(ImpsConfigNames.MSISDN, "1231231234");
+            settings.put(ImpsConfigNames.MSISDN, "15555218135");
         } else if (networkInfo != null
                 && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
             if (!TextUtils.isEmpty(settings.get(ImpsConfigNames.SMS_ADDR))) {
@@ -278,9 +278,12 @@ public class RemoteImService extends Service {
                 // the sign in would fail and an error message should be shown to warn
                 // the user to contact their operator.
                 String msisdn = TelephonyManager.getDefault().getLine1Number();
-                if (!TextUtils.isEmpty(msisdn)) {
-                    settings.put(ImpsConfigNames.MSISDN, msisdn);
+                if (TextUtils.isEmpty(msisdn)) {
+                    Log.w(TAG, "Can not read MSISDN from SIM, use a fake one."
+                         + " SMS related feature won't work.");
+                    msisdn = "15555218135";
                 }
+                settings.put(ImpsConfigNames.MSISDN, msisdn);
             }
         }
         return settings;