diff --git a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/ContactListActivity.java b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/ContactListActivity.java index 4b697b7..b0eecc7 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/ContactListActivity.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/ContactListActivity.java @@ -2,23 +2,35 @@ package fr.unix_experience.owncloud_sms.activities.remote_account; import java.lang.reflect.Array; import java.util.ArrayList; +import java.util.Vector; import android.accounts.Account; import android.accounts.AccountManager; import android.app.Activity; import android.app.ListActivity; +import android.content.ContentResolver; +import android.database.Cursor; +import android.net.Uri; import android.os.Bundle; import android.os.Handler; +import android.provider.ContactsContract; import android.support.v4.widget.SwipeRefreshLayout; +import android.util.Log; import android.view.View; +import android.widget.AdapterView; +import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.SeekBar; import android.widget.Spinner; +import android.widget.TextView; + +import org.w3c.dom.Text; import fr.nrz.androidlib.adapters.AndroidAccountAdapter; import fr.unix_experience.owncloud_sms.R; import fr.unix_experience.owncloud_sms.adapters.ContactListAdapter; import fr.unix_experience.owncloud_sms.engine.ASyncContactLoad; +import fr.unix_experience.owncloud_sms.engine.OCSMSOwnCloudClient; public class ContactListActivity extends Activity implements ASyncContactLoad { @@ -60,10 +72,71 @@ public class ContactListActivity extends Activity implements ASyncContactLoad { R.id.contactname, this); final Spinner sp = (Spinner) findViewById(R.id.contact_spinner); - sp.setVisibility(View.INVISIBLE); - sp.setAdapter(adapter); - + final LinearLayout contactInfos = (LinearLayout) findViewById(R.id.contactinfos_layout); final ProgressBar contactProgressBar = (ProgressBar) findViewById(R.id.contactlist_pgbar); + final TextView contactPhoneList = (TextView) findViewById(R.id.contact_phonelist); + + sp.setVisibility(View.INVISIBLE); + contactInfos.setVisibility(View.INVISIBLE); + + sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + contactInfos.setVisibility(View.INVISIBLE); + + String contactName = sp.getSelectedItem().toString(); + Vector phoneList = fetchContact(contactName); + Integer smsCount = 0; + // @TODO asynctask to load more datas + + if (phoneList.size() > 0) { + String res = new String(""); + for (String pn: phoneList) { + res += "- " + pn + "\n"; + } + contactPhoneList.setText(res); + } else { + contactPhoneList.setText(contactName); + } + + contactInfos.setVisibility(View.VISIBLE); + } + + @Override + public void onNothingSelected(AdapterView parent) { + // Nothing to do there + } + + private Vector fetchContact(String name) { + Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, + null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " = ?", + new String[]{name}, null); + people.moveToFirst(); + + Vector r = new Vector<>(); + if (people.getCount() == 0) { + return r; + } + + String contactId = people.getString(people.getColumnIndex(ContactsContract.Contacts._ID)); + + if (people.getString(people.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)) + .equalsIgnoreCase("1")) { + Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, + null, + ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", + new String[]{contactId}, null); + while (phones.moveToNext()) { + String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)) + .replaceAll(" ", ""); + r.add(phoneNumber); + } + phones.close(); + } + return r; + } + }); + sp.setAdapter(adapter); for (final Account element : myAccountList) { if (element.name.equals(accountName)) { diff --git a/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncContactLoad.java b/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncContactLoad.java index 11b3a0d..70c3b52 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncContactLoad.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncContactLoad.java @@ -98,8 +98,8 @@ public interface ASyncContactLoad { ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null); while (pCur.moveToNext()) { - String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); - phoneNo = phoneNo.replaceAll(" ", ""); + String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)) + .replaceAll(" ", ""); if (serverPhoneList.contains(phoneNo)) { if (!_objects.contains(name)) { _objects.add(name); diff --git a/src/main/res/layout/restore_activity_contactlist.xml b/src/main/res/layout/restore_activity_contactlist.xml index 8c020eb..861ff29 100644 --- a/src/main/res/layout/restore_activity_contactlist.xml +++ b/src/main/res/layout/restore_activity_contactlist.xml @@ -51,6 +51,39 @@ android:indeterminate="true" android:layout_height="wrap_content"/> + + + + + + + + \ No newline at end of file diff --git a/src/main/res/values-en/strings.xml b/src/main/res/values-en/strings.xml index 7c4206f..0e1253c 100644 --- a/src/main/res/values-en/strings.xml +++ b/src/main/res/values-en/strings.xml @@ -160,5 +160,8 @@ Contributors and issue\'s reporters Error #18: OcSMS app is not installed or ownCloud awaiting for an upgrade Invalid phonelist received from server. Server doesn\'t support this feature. Ensure server version is at least 1.6. - + Contact informations + Choose account + > Contact phones + diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index 2654b16..ecfa21f 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -91,4 +91,6 @@ Proceso de sincronización Sincronización en progreso... Error Fatal ! + Choisissez un compte + Informations sur le contact diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index b178a25..f425d5e 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -120,4 +120,16 @@ Les contributeurs et rapporteurs de bugs Error #18: L\'application OcSMS n\'est pas installée ou ownCloud attend d\'être mis à niveau. La liste de numéros reçue depuis le serveur est invalide. Le serveur ne supporte pas cette fonctionnalité. Assurez vous que le serveur est au moins en version 1.6. + Informations sur le contact + Erreur #6: Liste SMS Nulle + Erreur #6: Echec de la création de la requête PUSH + Erreur #11: Impossible de se connecter à l\'instance ownCloud + Erreur #8: Echec de l\'authentification + Erreur #3: Echec du push de la requête + Erreur #9: Le serveur a renvoyé un code de retour HTTP non géré + Erreur #14: Impossible d\'interpréter la réponse du serveur + Erreur #15: Impossible d\'interpréter la réponse du serveur + Erreur #12: Impossible de se connecter à l\'instance ownCloud + Erreur #13: Impossible de se connecter à l\'instance ownCloud + > Numéros de téléphone associés diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index a25fb07..9ee4055 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -170,4 +170,6 @@ Contributors and issue\'s reporters Error #18: OcSMS app is not installed or ownCloud awaiting for an upgrade Invalid phonelist received from server. Server doesn\'t support this feature. Ensure server version is at least 1.6. + Contact informations + > Contact phones