diff --git a/res/drawable-xhdpi/contact_delete_default.9.png b/res/drawable-xhdpi/contact_delete_default.9.png
new file mode 100644
index 000000000..993639f69
Binary files /dev/null and b/res/drawable-xhdpi/contact_delete_default.9.png differ
diff --git a/res/drawable-xhdpi/contact_delete_over.9.png b/res/drawable-xhdpi/contact_delete_over.9.png
new file mode 100644
index 000000000..bf0fdcd75
Binary files /dev/null and b/res/drawable-xhdpi/contact_delete_over.9.png differ
diff --git a/res/drawable/contact_delete.xml b/res/drawable/contact_delete.xml
new file mode 100644
index 000000000..32694f1e5
--- /dev/null
+++ b/res/drawable/contact_delete.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/res/layout-sw533dp-land/contact.xml b/res/layout-sw533dp-land/contact.xml
index afabe60c3..8fa764c63 100644
--- a/res/layout-sw533dp-land/contact.xml
+++ b/res/layout-sw533dp-land/contact.xml
@@ -11,6 +11,20 @@
android:layout_height="wrap_content"
android:orientation="horizontal">
+
+
-
-
+
+
diff --git a/res/layout/contact_delete_button.xml b/res/layout/contact_delete_button.xml
deleted file mode 100644
index b8736ee91..000000000
--- a/res/layout/contact_delete_button.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/org/linphone/ContactFragment.java b/src/org/linphone/ContactFragment.java
index dce98d9e6..231b8f891 100644
--- a/src/org/linphone/ContactFragment.java
+++ b/src/org/linphone/ContactFragment.java
@@ -18,13 +18,16 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
import java.io.InputStream;
-
+import java.util.ArrayList;
import org.linphone.compatibility.Compatibility;
import org.linphone.core.LinphoneProxyConfig;
+import org.linphone.mediastream.Log;
import org.linphone.ui.AvatarWithShadow;
-
+import android.annotation.SuppressLint;
+import android.content.ContentProviderOperation;
import android.graphics.BitmapFactory;
import android.os.Bundle;
+import android.provider.ContactsContract;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
@@ -39,7 +42,7 @@ import android.widget.TextView;
*/
public class ContactFragment extends Fragment implements OnClickListener {
private Contact contact;
- private TextView editContact;
+ private TextView editContact, deleteContact;
private LayoutInflater inflater;
private View view;
private boolean displayChatAddressOnly = false;
@@ -74,6 +77,9 @@ public class ContactFragment extends Fragment implements OnClickListener {
editContact = (TextView) view.findViewById(R.id.editContact);
editContact.setOnClickListener(this);
+ deleteContact = (TextView) view.findViewById(R.id.deleteContact);
+ deleteContact.setOnClickListener(this);
+
return view;
}
@@ -83,6 +89,7 @@ public class ContactFragment extends Fragment implements OnClickListener {
displayContact(inflater, view);
}
+ @SuppressLint("InflateParams")
private void displayContact(LayoutInflater inflater, View view) {
AvatarWithShadow contactPicture = (AvatarWithShadow) view.findViewById(R.id.contactPicture);
if (contact.getPhotoUri() != null) {
@@ -195,6 +202,27 @@ public class ContactFragment extends Fragment implements OnClickListener {
if (id == R.id.editContact) {
LinphoneActivity.instance().editContact(contact);
+ } else if (id == R.id.deleteContact) {
+ deleteExistingContact();
+ LinphoneActivity.instance().removeContactFromLists(contact);
+ LinphoneActivity.instance().displayContacts(false);
}
}
+
+ private void deleteExistingContact() {
+ String select = ContactsContract.Data.CONTACT_ID + " = ?";
+ String[] args = new String[] { contact.getID() };
+
+ ArrayList ops = new ArrayList();
+ ops.add(ContentProviderOperation.newDelete(ContactsContract.Data.CONTENT_URI)
+ .withSelection(select, args)
+ .build()
+ );
+
+ try {
+ getActivity().getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
+ } catch (Exception e) {
+ Log.w(e.getMessage() + ":" + e.getStackTrace());
+ }
+ }
}
diff --git a/src/org/linphone/EditContactFragment.java b/src/org/linphone/EditContactFragment.java
index 70a457e50..1eb37daa9 100644
--- a/src/org/linphone/EditContactFragment.java
+++ b/src/org/linphone/EditContactFragment.java
@@ -3,11 +3,10 @@ package org.linphone;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
-
import org.linphone.compatibility.Compatibility;
import org.linphone.mediastream.Version;
import org.linphone.ui.AvatarWithShadow;
-
+import android.annotation.SuppressLint;
import android.content.ContentProviderOperation;
import android.content.Context;
import android.database.Cursor;
@@ -34,7 +33,6 @@ public class EditContactFragment extends Fragment {
private TextView ok;
private EditText firstName, lastName;
private LayoutInflater inflater;
- private View deleteContact;
private boolean isNewContact = true;
private Contact contact;
@@ -214,19 +212,6 @@ public class EditContactFragment extends Fragment {
if (view != null)
controls.addView(view);
}
-
- if (!isNewContact) {
- deleteContact = inflater.inflate(R.layout.contact_delete_button, null);
- deleteContact.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- deleteExistingContact();
- LinphoneActivity.instance().removeContactFromLists(contact);
- LinphoneActivity.instance().displayContacts(false);
- }
- });
- controls.addView(deleteContact, controls.getChildCount());
- }
// Add one for phone numbers, one for SIP address
if (!getResources().getBoolean(R.bool.hide_phone_numbers_in_editor)) {
@@ -243,6 +228,7 @@ public class EditContactFragment extends Fragment {
return displayNumberOrAddress(controls, numberOrAddress, false);
}
+ @SuppressLint("InflateParams")
private View displayNumberOrAddress(final TableLayout controls, String numberOrAddress, boolean forceAddNumber) {
boolean isSip = LinphoneUtils.isStrictSipAddress(numberOrAddress) || !LinphoneUtils.isNumberAddress(numberOrAddress);
@@ -307,6 +293,7 @@ public class EditContactFragment extends Fragment {
return view;
}
+ @SuppressLint("InflateParams")
private void addEmptyRowToAllowNewNumberOrAddress(final TableLayout controls, final boolean isSip) {
final View view = inflater.inflate(R.layout.contact_add_row, null);
@@ -365,11 +352,6 @@ public class EditContactFragment extends Fragment {
controls.addView(view);
}
}
- if (deleteContact != null) {
- // Move to the bottom the remove contact button
- controls.removeView(deleteContact);
- controls.addView(deleteContact, controls.getChildCount());
- }
}
private void createNewContact() {
@@ -405,22 +387,6 @@ public class EditContactFragment extends Fragment {
}
}
- private void deleteExistingContact() {
- String select = ContactsContract.Data.CONTACT_ID + "=?";
- String[] args = new String[] { String.valueOf(contactID) };
-
- ops.add(ContentProviderOperation.newDelete(ContactsContract.Data.CONTENT_URI)
- .withSelection(select, args)
- .build()
- );
-
- try {
- getActivity().getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
private String getDisplayName() {
String displayName = null;
if (firstName.getText().length() > 0 && lastName.getText().length() > 0)
diff --git a/src/org/linphone/SettingsFragment.java b/src/org/linphone/SettingsFragment.java
index e3e4ec3c8..a38a6042f 100644
--- a/src/org/linphone/SettingsFragment.java
+++ b/src/org/linphone/SettingsFragment.java
@@ -32,7 +32,6 @@ import org.linphone.core.LinphoneCoreException;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.core.LinphoneProxyConfig;
import org.linphone.core.PayloadType;
-import org.linphone.core.TunnelConfig;
import org.linphone.mediastream.Log;
import org.linphone.mediastream.Version;
import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration;
@@ -59,7 +58,6 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
private static final int WIZARD_INTENT = 1;
private LinphonePreferences mPrefs;
private Handler mHandler = new Handler();
- private TunnelConfig tunnelConfig;
public SettingsFragment() {
super(R.xml.preferences);
@@ -503,7 +501,6 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
findPreference(getString(R.string.pref_adaptive_rate_algorithm_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
- ListPreference listPreference = (ListPreference) preference;
mPrefs.setAdaptiveRateAlgorithm(AdaptiveRateAlgorithm.fromString((String)newValue));
preference.setSummary(String.valueOf(mPrefs.getAdaptiveRateAlgorithm()));
return true;