From c132837aaca6d352c0a13c49eb3b785830cf2d9b Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Mon, 23 Nov 2015 23:28:17 +0100 Subject: [PATCH] Improve restore activity a little, not perfect but better --- .../remote_account/ContactListActivity.java | 22 ++++---- .../adapters/ContactListAdapter.java | 19 +++---- .../RecoveryPhoneNumberListViewAdapter.java | 55 +++++++++++++++++++ src/main/res/layout/account_list_item.xml | 3 +- src/main/res/layout/contact_list_item.xml | 4 +- .../res/layout/recovery_phone_list_item.xml | 11 ++++ .../layout/restore_activity_accountlist.xml | 2 +- .../layout/restore_activity_contactlist.xml | 31 +++++++---- .../res/menu/menu_contact_restore_actions.xml | 8 +++ src/main/res/values-cs/strings.xml | 2 +- src/main/res/values-en/strings.xml | 2 +- src/main/res/values-fr/strings.xml | 2 +- src/main/res/values/strings.xml | 2 +- 13 files changed, 120 insertions(+), 43 deletions(-) create mode 100644 src/main/java/fr/unix_experience/owncloud_sms/adapters/RecoveryPhoneNumberListViewAdapter.java create mode 100644 src/main/res/layout/recovery_phone_list_item.xml create mode 100644 src/main/res/menu/menu_contact_restore_actions.xml 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 d1086c3..3054269 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 @@ -11,15 +11,16 @@ import android.support.v4.widget.SwipeRefreshLayout; import android.view.View; import android.widget.AdapterView; import android.widget.LinearLayout; +import android.widget.ListView; import android.widget.ProgressBar; import android.widget.Spinner; -import android.widget.TextView; import java.util.ArrayList; import java.util.Vector; import fr.unix_experience.owncloud_sms.R; import fr.unix_experience.owncloud_sms.adapters.ContactListAdapter; +import fr.unix_experience.owncloud_sms.adapters.RecoveryPhoneNumberListViewAdapter; import fr.unix_experience.owncloud_sms.engine.ASyncContactLoad; public class ContactListActivity extends Activity implements ASyncContactLoad { @@ -55,16 +56,15 @@ public class ContactListActivity extends Activity implements ASyncContactLoad { android.R.color.holo_orange_light, android.R.color.holo_red_light); - adapter = new ContactListAdapter(getBaseContext(), - android.R.layout.simple_spinner_item, - objects, - R.layout.contact_list_item, - R.id.contactname, this); + adapter = new ContactListAdapter(getBaseContext(), objects); final Spinner sp = (Spinner) findViewById(R.id.contact_spinner); 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); + final ListView contactPhoneListView = (ListView) findViewById(R.id.contact_phonelistView); + final RecoveryPhoneNumberListViewAdapter contactPhoneListAdapter = + new RecoveryPhoneNumberListViewAdapter(getBaseContext()); + contactPhoneListView.setAdapter(contactPhoneListAdapter); contactInfos.setVisibility(View.INVISIBLE); @@ -72,6 +72,7 @@ public class ContactListActivity extends Activity implements ASyncContactLoad { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { contactInfos.setVisibility(View.INVISIBLE); + contactPhoneListAdapter.clear(); String contactName = sp.getSelectedItem().toString(); Vector phoneList = fetchContact(contactName); @@ -79,16 +80,15 @@ public class ContactListActivity extends Activity implements ASyncContactLoad { // @TODO asynctask to load more datas if (!phoneList.isEmpty()) { - String res = ""; for (String pn: phoneList) { - res += "- " + pn + "\n"; + contactPhoneListAdapter.add(pn); } - contactPhoneList.setText(res); } else { - contactPhoneList.setText(contactName); + contactPhoneListAdapter.add(contactName); } contactInfos.setVisibility(View.VISIBLE); + contactPhoneListAdapter.notifyDataSetChanged(); } @Override diff --git a/src/main/java/fr/unix_experience/owncloud_sms/adapters/ContactListAdapter.java b/src/main/java/fr/unix_experience/owncloud_sms/adapters/ContactListAdapter.java index 5db2e9d..7e32b18 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/adapters/ContactListAdapter.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/adapters/ContactListAdapter.java @@ -1,6 +1,5 @@ package fr.unix_experience.owncloud_sms.adapters; -import android.app.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; @@ -10,20 +9,18 @@ import android.widget.TextView; import java.util.ArrayList; +import fr.unix_experience.owncloud_sms.R; + public class ContactListAdapter extends ArrayAdapter { private final ArrayList _objects; - private static int _itemLayout; - private static int _fieldId; - private final Activity _activity; + + // Design + private final static int _itemLayout = R.layout.contact_list_item; + private final static int _fieldId = R.id.contactname; - public ContactListAdapter(Context context, int resource, - ArrayList objects, int itemLayout, - int fieldId, Activity activity) { - super(context, resource, objects); + public ContactListAdapter(Context context, ArrayList objects) { + super(context, android.R.layout.simple_spinner_item, objects); _objects = objects; - ContactListAdapter._itemLayout = itemLayout; - ContactListAdapter._fieldId = fieldId; - _activity = activity; } @Override diff --git a/src/main/java/fr/unix_experience/owncloud_sms/adapters/RecoveryPhoneNumberListViewAdapter.java b/src/main/java/fr/unix_experience/owncloud_sms/adapters/RecoveryPhoneNumberListViewAdapter.java new file mode 100644 index 0000000..37b53ea --- /dev/null +++ b/src/main/java/fr/unix_experience/owncloud_sms/adapters/RecoveryPhoneNumberListViewAdapter.java @@ -0,0 +1,55 @@ +package fr.unix_experience.owncloud_sms.adapters; + +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.TextView; + +import java.util.ArrayList; + +import fr.unix_experience.owncloud_sms.R; + +public class RecoveryPhoneNumberListViewAdapter extends ArrayAdapter { + private static final String TAG = "RecPhoneNumberListVAdp"; + private static int _fieldId = R.id.recovery_phone; + private static int _itemLayout = R.layout.recovery_phone_list_item; + private static int resource = android.R.layout.simple_list_item_2; + + public RecoveryPhoneNumberListViewAdapter(Context context) { + super(context, resource, new ArrayList()); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View v = convertView; + if (v == null) { + LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + v = inflater.inflate(RecoveryPhoneNumberListViewAdapter._itemLayout, null); + } + + TextView label = (TextView) v.findViewById(RecoveryPhoneNumberListViewAdapter._fieldId); + if (label != null) { + final String l = getItem(position).toString(); + label.setText(getItem(position).toString()); + v.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Log.d(TAG, "Clicked on phone " + l); + } + }); + v.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + Log.d(TAG, "Long clicked on phone " + l); + return false; + } + }); + + } + + return v; + } +} diff --git a/src/main/res/layout/account_list_item.xml b/src/main/res/layout/account_list_item.xml index 7475226..61baded 100644 --- a/src/main/res/layout/account_list_item.xml +++ b/src/main/res/layout/account_list_item.xml @@ -7,7 +7,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="20dp" - android:textSize="18sp" - /> + android:textSize="18sp" /> diff --git a/src/main/res/layout/contact_list_item.xml b/src/main/res/layout/contact_list_item.xml index 096905b..1c59b78 100644 --- a/src/main/res/layout/contact_list_item.xml +++ b/src/main/res/layout/contact_list_item.xml @@ -7,7 +7,5 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="20dp" - android:textSize="18sp" - /> - + android:textSize="18sp" /> diff --git a/src/main/res/layout/recovery_phone_list_item.xml b/src/main/res/layout/recovery_phone_list_item.xml new file mode 100644 index 0000000..f1de1b2 --- /dev/null +++ b/src/main/res/layout/recovery_phone_list_item.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/src/main/res/layout/restore_activity_accountlist.xml b/src/main/res/layout/restore_activity_accountlist.xml index 5253732..8dad873 100644 --- a/src/main/res/layout/restore_activity_accountlist.xml +++ b/src/main/res/layout/restore_activity_accountlist.xml @@ -34,6 +34,6 @@ android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" - android:drawSelectorOnTop="false" /> + android:drawSelectorOnTop="true" /> \ No newline at end of file diff --git a/src/main/res/layout/restore_activity_contactlist.xml b/src/main/res/layout/restore_activity_contactlist.xml index 974f5e0..30b24c7 100644 --- a/src/main/res/layout/restore_activity_contactlist.xml +++ b/src/main/res/layout/restore_activity_contactlist.xml @@ -27,9 +27,11 @@ + android:layout_height="match_parent" + tools:context=".activities.remote_account.ContactListActivity"> - - + + + + + + + + diff --git a/src/main/res/values-cs/strings.xml b/src/main/res/values-cs/strings.xml index 760855c..5bd05c1 100644 --- a/src/main/res/values-cs/strings.xml +++ b/src/main/res/values-cs/strings.xml @@ -158,5 +158,5 @@ Přijat neplatný seznam telefoních čísel ze serveru. Server nepodporuje tuto funkci. Zajistěte verzi na serveru alespoň 1.6. Informace kontaktu - > Telefony kontaktu + - Telefony kontaktu \ 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 7c9c8ed..6f6fd43 100644 --- a/src/main/res/values-en/strings.xml +++ b/src/main/res/values-en/strings.xml @@ -162,7 +162,7 @@ Contributors and issue\'s reporters Server doesn\'t support this feature. Ensure server version is at least 1.6. Contact informations Choose account - > Contact phones + - Contact phones Max messages to send per sync Contact list diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index 6271907..80b4be0 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -140,7 +140,7 @@ Les contributeurs et rapporteurs de bugs 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 + - Numéros de téléphone associés Choisissez un compte Compte distant Chosissez un compte diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index e02363b..074ff88 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -191,7 +191,7 @@ Contributors and issue\'s reporters Invalid phonelist received from server. Server doesn\'t support this feature. Ensure server version is at least 1.6. Contact informations - > Contact phones + - Contact phones Max messages to send per sync Contact list