From 9c1b86dc3fd3ba6471dca4ad3dd919bd629140e3 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 6 Nov 2012 15:26:05 +0100 Subject: [PATCH] InApp contact editor started --- AndroidManifest.xml | 2 + .../contact_cancel_default.9.png | Bin 0 -> 1326 bytes res/drawable-xhdpi/contact_cancel_over.9.png | Bin 0 -> 1277 bytes res/drawable-xhdpi/contact_ok_default.9.png | Bin 0 -> 1285 bytes res/drawable-xhdpi/contact_ok_disabled.9.png | Bin 0 -> 1023 bytes res/drawable-xhdpi/contact_ok_over.9.png | Bin 0 -> 1281 bytes res/drawable/contact_cancel.xml | 8 + res/drawable/contact_ok.xml | 10 + res/drawable/text_button.xml | 10 + res/layout/chatlist.xml | 6 +- res/layout/contact.xml | 4 +- res/layout/contacts_list.xml | 2 +- res/layout/edit_contact.xml | 72 +++++ res/layout/history.xml | 6 +- res/layout/history_simple.xml | 6 +- res/values-FR/strings.xml | 1 + res/values/non_localizable_custom.xml | 4 +- res/values/strings.xml | 1 + src/org/linphone/ContactFragment.java | 11 +- src/org/linphone/ContactHelper.java | 6 - src/org/linphone/ContactsFragment.java | 7 +- src/org/linphone/EditContactFragment.java | 100 +++++++ src/org/linphone/FragmentsAvailable.java | 9 +- src/org/linphone/LinphoneActivity.java | 264 ++++++++---------- 24 files changed, 343 insertions(+), 186 deletions(-) create mode 100644 res/drawable-xhdpi/contact_cancel_default.9.png create mode 100644 res/drawable-xhdpi/contact_cancel_over.9.png create mode 100644 res/drawable-xhdpi/contact_ok_default.9.png create mode 100644 res/drawable-xhdpi/contact_ok_disabled.9.png create mode 100644 res/drawable-xhdpi/contact_ok_over.9.png create mode 100644 res/drawable/contact_cancel.xml create mode 100644 res/drawable/contact_ok.xml create mode 100644 res/drawable/text_button.xml create mode 100644 res/layout/edit_contact.xml create mode 100644 src/org/linphone/EditContactFragment.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 7415658d7..35f81fffe 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -29,6 +29,8 @@ + + diff --git a/res/drawable-xhdpi/contact_cancel_default.9.png b/res/drawable-xhdpi/contact_cancel_default.9.png new file mode 100644 index 0000000000000000000000000000000000000000..16d4169226b51beb75a4caa5a4a89c2a5e69da42 GIT binary patch literal 1326 zcmeAS@N?(olHy`uVBq!ia0y~yU~~eqqd3@r~)z56p?Bvt0X z!++WT(waIax-?(xkTB$$wSpyyB`PoDiH3-V2+LEQFoB&Sg3U>+S6Hf?{nr&udF@|u zcV&>+%aZ9gXD*t#{N&`ETXV}Ny}w=aDewHMRr~KVseFmA*vudD$5KYlrh;LDwXUx2 zVnY)F2afmm_w!G%cH-bjEaZ59cQ-qjy-W4d@$JZR%Qhtx0d)l=& z<>P&`C57b=MQ_hzJ>gXCo*uDbN!ghXz3D-U(_WkBaxybBKl4aynQ+EcvHBK6pXiYn zDw*?Aeuhz!Tk@MFYdbd z>zPkf%Y^@-EJr7tajtlLte0WxtiPG1k%p@y_b8c|zUNo3w=#WoVd8tIx2v`$UV5Ub zy1xHi^1UUF9G+LV>6cICiKul>e)0OX{?2RK>-UEit$k7V%x{&VjFc4DgpmCF`#aQk zYUJ#nYZ-nm%Cvj>^q+U1Xexg_7M7*Kds>P8Dx&ZDsKEnQK>k#$jzlWca6BuUwZZ??{jTyyJW? zP@{(zho@`I0X{jaSy3#?7a#9_j^WoLi;mj(6;>+dz=Jf1cR&{aHB*8m(ul%`T zda&=Lk4^^pa_zD6`#X5=oL=v{+M;RVuCKfsughCh z+_0PA$HC6d&a86r=GCb`u0Jk&do#S~?|lFNQvY`!)A!xT9^%5`d3H~$w{d5J$jy&_ zQ%k?{KJ%|q?D?0fr1JH*e7#*LOZmG@t)0(S#{2b4AADhQIrS9p7GyD?>@`J`|-`}^}dyyH+*XaQx@Ko0%bT`b7i zv|C&so=xAq%Y$UiRsn%Siv-F_OBunrR->gsK&*Ac=FP$i;W0p?^N;cPi4cMN}ZOy&W9OxszAkoS{{0Eto~QYFu^^vo>5o-PR5#m_YJ^ukipZ{ K&t;ucLK6Tu5n4F_ literal 0 HcmV?d00001 diff --git a/res/drawable-xhdpi/contact_cancel_over.9.png b/res/drawable-xhdpi/contact_cancel_over.9.png new file mode 100644 index 0000000000000000000000000000000000000000..6f4b52aba69d93d3d7cc2a39858761e50471c7fb GIT binary patch literal 1277 zcmYk6e^AnA9LK+;r(Z3KN+)S*U(uvYorFJ9F7cbGoEthVU3SL0(o8L}hQz`}_MNs` zYNIH-IWTjzQoM~+N<<|SmM$%l{1whPX_GJ!OZ>gBb=URJbI*M~@8|tI_k2FD&yVr+ zXso@nJpce$T1;dD0AOHrp90#T>)#B9767c3bf>gN93QL0WQyq z^1s@fn6)RN!|zgKOqDqdP2Pv)&snOV1CO=7WMq5)rns zzb;ff?Nud2Q>i?MB!cunv{%Wl5}mlco5DYfn`k~K!Y6RRA$h)wX!psfF<%FXrGxL2 zEJniEW7Unhx~P!vCNp~P9!^x7b*#?dO&~-o4`YiDx6p;#UDMOkuNBv^44U5#JT#QC ze=cNlINPXu)M_=BeJmh*l^cafPGYm!6{%^meKPU%O-DF}bdz45Y1!Izy>+v5YoO`A zUU(4Vn)P4u{+!4=V=_;@8S*E$3!|7vxaK$?q|{T)Xx1{7NxQ9|w;A@@BBjlvs*40) zqvl-X`0GB&y~f8UoNXHcyH<#KRS7IzkyZ*#C z>oyo=Vrg?Vr#&I={0xgnnt1u`>^tM&an$Q+Rcv_qT4hI=CNy4vn@EPg-dF&u3X$=i zJIR5ae zhcq=;Q2`mK*KmG*em2Ad+1b^TLM3+P${^Q8ZPQ8YqNdlm+aB^P^Jr*J^S~1ZGLktj z+w9D7_i=t(wpbGlPb#BNIkYZ!@*}&N$6hpI33&FI%F0T;P=FTi;fp=zz;>zQx;wSC zT{3J*(URWBtLA5?oMwbxXeW?|JR!t0m_$k-7S^2A zDGgV1kkXX)cx&_zPzY9)K2qO|dw^cXk75qgAGxEu#z`}bRaF07XKjJkxN&Zxsn3(vfl1`^D`-In!fB;N< z80uMpB7D_uSaPTf$czRtkOPYF4>+8{9a``1Zu_40cr@IJFtf8)i1H8|4n_ySQfNu} zd`C!VsQpKyrCG254y#lk)i~#%m>zNDrL6g2xO9pch#Xmz1Gg&ca~9&oB(FypXLPIq Mw4L-wG5k%z|7L$sc>n+a literal 0 HcmV?d00001 diff --git a/res/drawable-xhdpi/contact_ok_default.9.png b/res/drawable-xhdpi/contact_ok_default.9.png new file mode 100644 index 0000000000000000000000000000000000000000..3d5c1bd66b267138bb088b98c0052631bd1bf2a6 GIT binary patch literal 1285 zcmeAS@N?(olHy`uVBq!ia0y~yU~~eqqd3@r~)y_=aYQYv%c z<37_~8Lp)f4q6;dLIFV{N2*Mgut>Z37zjBk2=w;%-0A3W-{Iu4^NnM9^+l)5(}C-z zf7rg+OOmN%`R&}@7V~}WJTIsHzYcX>m2Z8%EX-!nrdMAlPQ~*rZ+Gvj&0%`2M8`_DHfWC4YOyw-ZCe+ZE?#l9 zc9UWt%l*3aQoUK*Yi#n?>F4m?U4$ie~dKp6p^^mD}fc^euar+@Tly z4OOP+lAJazBzKzAhRm< z-q%IHyZh%`r2gxPDQm}r)NhQs?YiP`OSvcbM_Y)PB}ko`iqQ$@B5h3 z{4a7UvS#OG@m+`IShi0P)aYj^Hf-|dq&eW&p^#WycsHVRtSJjrX%9Wu`U6ltl8W1{6#je-*?Y&i?7JhTU)<& zZj0WxNln~$b6Sj(gso-bl65gVg~F~~QTvt9@`A(Y*0a;Pw}s->CZF9l%Q)GKL$k}r zO!}E#g>n9kMdh=$=XjT`O*lH|dQtw88Tw8qj30lIPd_w8vRKGfZ@%W!&BfDC&d`1g z3@H(Ix5vNbzlo`~RDY8-@jnI(o|5@>|BkLu+EIF3uQ=tA(~Y}#c^6;1d2{BEO*4+~ zuTE)}G^x@G-lnevlok-5jIn!>0-Ln zwk;`VdN~zadRET8Uo-uM(ahrK`ZL6xPW%tgjs3e}`bin$Yue zt=`k@Kl)9!{mnN+P}q+{Qk=K9cj2?gy9{>Lgy}VOPY-Kvw*Qx6HYJ2(G2b)2Y6cH! zNN(%vVAMY(|4aic(*ktDJ?(NR&590^gpr{tv&B;z`9a4ZDo?H>j$XV0ERHo(l(lo6io zL1qF~J`CWHmX>A&XKj!{AUC!v=450rc+6cWQ1*?VVaX(DK>^aSQ()TP@5~NTQ~xrn YP5x1~`0ZQ;VDZM_>FVdQ&MBb@0B_4i$p8QV literal 0 HcmV?d00001 diff --git a/res/drawable-xhdpi/contact_ok_disabled.9.png b/res/drawable-xhdpi/contact_ok_disabled.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c2b4808812d646563f5b266ae528f6768026498b GIT binary patch literal 1023 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 + + + + + diff --git a/res/drawable/contact_ok.xml b/res/drawable/contact_ok.xml new file mode 100644 index 000000000..5c3b8eebb --- /dev/null +++ b/res/drawable/contact_ok.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/res/drawable/text_button.xml b/res/drawable/text_button.xml new file mode 100644 index 000000000..982f2f896 --- /dev/null +++ b/res/drawable/text_button.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/res/layout/chatlist.xml b/res/layout/chatlist.xml index f5dbbcd7b..608ebdaa2 100644 --- a/res/layout/chatlist.xml +++ b/res/layout/chatlist.xml @@ -17,7 +17,7 @@ android:text="@string/button_new_chat" android:gravity="center" android:paddingTop="25dp" - android:textColor="@color/text_button" + android:textColor="@drawable/text_button" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" @@ -31,7 +31,7 @@ android:text="@string/button_edit" android:gravity="center" android:paddingTop="20dp" - android:textColor="@color/text_button" + android:textColor="@drawable/text_button" android:layout_width="match_parent" android:layout_height="match_parent" android:adjustViewBounds="true" @@ -44,7 +44,7 @@ android:text="@string/button_ok" android:gravity="center" android:paddingTop="20dp" - android:textColor="@color/text_button" + android:textColor="@drawable/text_button" android:visibility="gone" android:layout_width="match_parent" android:layout_height="match_parent" diff --git a/res/layout/contact.xml b/res/layout/contact.xml index 6a5ae1400..627bef0f7 100644 --- a/res/layout/contact.xml +++ b/res/layout/contact.xml @@ -18,7 +18,7 @@ android:text="@string/button_edit" android:gravity="center" android:paddingTop="20dp" - android:textColor="@color/text_button" + android:textColor="@drawable/text_button" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" @@ -32,7 +32,7 @@ android:text="@string/button_add_contact" android:gravity="center" android:paddingTop="20dp" - android:textColor="@color/text_button" + android:textColor="@drawable/text_button" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" diff --git a/res/layout/contacts_list.xml b/res/layout/contacts_list.xml index 003e00c74..9181c5b5e 100644 --- a/res/layout/contacts_list.xml +++ b/res/layout/contacts_list.xml @@ -58,7 +58,7 @@ android:gravity="center" android:paddingTop="20dp" android:textSize="13dp" - android:textColor="@color/text_button" + android:textColor="@drawable/text_button" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" diff --git a/res/layout/edit_contact.xml b/res/layout/edit_contact.xml new file mode 100644 index 000000000..ac8f68cc2 --- /dev/null +++ b/res/layout/edit_contact.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/history.xml b/res/layout/history.xml index 032e097bc..df3f24b62 100644 --- a/res/layout/history.xml +++ b/res/layout/history.xml @@ -18,7 +18,7 @@ android:text="@string/button_delete_all" android:gravity="center" android:paddingTop="20dp" - android:textColor="@color/text_button" + android:textColor="@drawable/text_button" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" @@ -60,7 +60,7 @@ android:text="@string/button_edit" android:gravity="center" android:paddingTop="20dp" - android:textColor="@color/text_button" + android:textColor="@drawable/text_button" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" @@ -74,7 +74,7 @@ android:text="@string/button_ok" android:gravity="center" android:paddingTop="20dp" - android:textColor="@color/text_button" + android:textColor="@drawable/text_button" android:visibility="gone" android:layout_width="match_parent" android:layout_height="match_parent" diff --git a/res/layout/history_simple.xml b/res/layout/history_simple.xml index 73302d992..6d7a969be 100644 --- a/res/layout/history_simple.xml +++ b/res/layout/history_simple.xml @@ -19,7 +19,7 @@ android:gravity="center" android:paddingTop="20dp" android:textSize="13dp" - android:textColor="@color/text_button" + android:textColor="@drawable/text_button" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" @@ -64,7 +64,7 @@ android:gravity="center" android:paddingTop="20dp" android:textSize="13dp" - android:textColor="@color/text_button" + android:textColor="@drawable/text_button" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" @@ -79,7 +79,7 @@ android:gravity="center" android:paddingTop="20dp" android:textSize="13dp" - android:textColor="@color/text_button" + android:textColor="@drawable/text_button" android:visibility="gone" android:layout_width="match_parent" android:layout_height="match_parent" diff --git a/res/values-FR/strings.xml b/res/values-FR/strings.xml index b18769406..332623aae 100644 --- a/res/values-FR/strings.xml +++ b/res/values-FR/strings.xml @@ -297,6 +297,7 @@ + Chat Modifier + Annuler Valider Tous SIP diff --git a/res/values/non_localizable_custom.xml b/res/values/non_localizable_custom.xml index a46f22ef7..605deaddf 100644 --- a/res/values/non_localizable_custom.xml +++ b/res/values/non_localizable_custom.xml @@ -21,7 +21,9 @@ false false false - true + true + + false false true diff --git a/res/values/strings.xml b/res/values/strings.xml index 6a17c7152..4cdbb60a6 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -345,6 +345,7 @@ New conversation Edit + Cancel Okay All SIP diff --git a/src/org/linphone/ContactFragment.java b/src/org/linphone/ContactFragment.java index c91f82e63..a623423b0 100644 --- a/src/org/linphone/ContactFragment.java +++ b/src/org/linphone/ContactFragment.java @@ -23,7 +23,6 @@ import org.linphone.compatibility.Compatibility; import org.linphone.core.LinphoneProxyConfig; import org.linphone.ui.AvatarWithShadow; -import android.content.Intent; import android.graphics.BitmapFactory; import android.os.Bundle; import android.support.v4.app.Fragment; @@ -59,8 +58,7 @@ public class ContactFragment extends Fragment implements OnClickListener { } }; - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { contact = (Contact) getArguments().getSerializable("Contact"); this.inflater = inflater; @@ -183,17 +181,14 @@ public class ContactFragment extends Fragment implements OnClickListener { @Override public void onClick(View v) { int id = v.getId(); - Intent intent; switch (id) { case R.id.editContact: - intent = Compatibility.prepareEditContactIntent(Integer.parseInt(contact.getID())); - startActivity(intent); + LinphoneActivity.instance().editContact(contact); break; case R.id.newContact: - intent = Compatibility.prepareAddContactIntent("", ""); - startActivity(intent); + LinphoneActivity.instance().addContact("", ""); break; } } diff --git a/src/org/linphone/ContactHelper.java b/src/org/linphone/ContactHelper.java index 454650f16..0f43a4aec 100644 --- a/src/org/linphone/ContactHelper.java +++ b/src/org/linphone/ContactHelper.java @@ -18,10 +18,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.linphone; -import org.linphone.compatibility.Compatibility; import org.linphone.core.LinphoneAddress; import org.linphone.mediastream.Version; -import org.linphone.ui.AddressText; import android.content.ContentResolver; import android.content.ContentUris; @@ -68,10 +66,6 @@ public final class ContactHelper { } return succeeded; } - - public static Intent prepareAddContactIntent(AddressText address) { - return Compatibility.prepareAddContactIntent(address.getDisplayedName(), address.getText().toString()); - } public static Intent prepareEditContactIntent(int id) { Intent intent = new Intent(Intent.ACTION_EDIT, Contacts.CONTENT_URI); diff --git a/src/org/linphone/ContactsFragment.java b/src/org/linphone/ContactsFragment.java index 1e9c2cedc..b20d3a6ef 100644 --- a/src/org/linphone/ContactsFragment.java +++ b/src/org/linphone/ContactsFragment.java @@ -23,7 +23,6 @@ import org.linphone.compatibility.Compatibility; import org.linphone.core.LinphoneFriend; import org.linphone.core.OnlineStatus; -import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -109,8 +108,7 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte } else if (id == R.id.newContact) { editConsumed = true; - Intent intent = Compatibility.prepareAddContactIntent(null, sipAddressToAdd); - startActivity(intent); + LinphoneActivity.instance().addContact(null, sipAddressToAdd); } } @@ -159,8 +157,7 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte Contact contact = (Contact) adapter.getItemAtPosition(position); if (editOnClick) { editConsumed = true; - Intent intent = Compatibility.prepareEditContactIntentWithSipAddress(Integer.parseInt(contact.getID()), sipAddressToAdd); - startActivity(intent); + LinphoneActivity.instance().editContact(contact, sipAddressToAdd); } else { lastKnownPosition = contactsList.getFirstVisiblePosition(); LinphoneActivity.instance().displayContact(contact, onlyDisplayChatAddress); diff --git a/src/org/linphone/EditContactFragment.java b/src/org/linphone/EditContactFragment.java new file mode 100644 index 000000000..2e93bd5f4 --- /dev/null +++ b/src/org/linphone/EditContactFragment.java @@ -0,0 +1,100 @@ +package org.linphone; + +import java.util.ArrayList; + +import android.content.ContentProviderOperation; +import android.os.Bundle; +import android.provider.ContactsContract; +import android.provider.ContactsContract.RawContacts; +import android.support.v4.app.Fragment; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.EditText; +import android.widget.TextView; + +public class EditContactFragment extends Fragment { + private View view; + private boolean isNewContact = true; + private TextView ok; + private EditText displayName; + + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + Contact contact = null; + if (getArguments() != null && getArguments().getSerializable("Contact") != null) { + contact = (Contact) getArguments().getSerializable("Contact"); + isNewContact = false; + } + + view = inflater.inflate(R.layout.edit_contact, container, false); + + TextView cancel = (TextView) view.findViewById(R.id.cancel); + cancel.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + getFragmentManager().popBackStackImmediate(); + } + }); + + ok = (TextView) view.findViewById(R.id.ok); + ok.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (isNewContact) { + createNewContact(); + } + } + }); + + displayName = (EditText) view.findViewById(R.id.contactName); + displayName.addTextChangedListener(new TextWatcher() { + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (displayName.getText().length() > 0) { + ok.setEnabled(true); + } else { + ok.setEnabled(false); + } + } + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void afterTextChanged(Editable s) { + } + }); + if (!isNewContact) { + displayName.setText(contact.getName()); + } + + return view; + } + + private void createNewContact() { + ArrayList ops = new ArrayList(); + int contactID = ops.size(); + + ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) + .withValue(RawContacts.ACCOUNT_TYPE, null) + .withValue(RawContacts.ACCOUNT_NAME, null).build()); + + if (displayName.getText().length() > 0) { + ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) + .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, contactID) + .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) + .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, displayName.getText().toString()).build() + ); + } + + try { + getActivity().getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); + } catch (Exception e) { + + } + } +} diff --git a/src/org/linphone/FragmentsAvailable.java b/src/org/linphone/FragmentsAvailable.java index 8ee3c8eca..bb88fd71b 100644 --- a/src/org/linphone/FragmentsAvailable.java +++ b/src/org/linphone/FragmentsAvailable.java @@ -27,6 +27,7 @@ public enum FragmentsAvailable { HISTORY_DETAIL, CONTACTS, CONTACT, + EDIT_CONTACT, ABOUT, ABOUT_INSTEAD_OF_SETTINGS, ABOUT_INSTEAD_OF_CHAT, @@ -57,8 +58,11 @@ public enum FragmentsAvailable { case CONTACT: return CONTACTS.isRightOf(fragment) || fragment == CONTACTS; + case EDIT_CONTACT: + return CONTACT.isRightOf(fragment) || fragment == CONTACT; + case DIALER: - return CONTACTS.isRightOf(fragment) || fragment == CONTACT || fragment == CONTACTS; + return EDIT_CONTACT.isRightOf(fragment) || fragment == EDIT_CONTACT; case ABOUT_INSTEAD_OF_CHAT: case CHATLIST: @@ -88,6 +92,9 @@ public enum FragmentsAvailable { case CONTACT: return fragment == CONTACTS; + case EDIT_CONTACT: + return fragment == CONTACT; + case CHAT: return fragment == CHATLIST; diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index ac5f59311..f9ebd4860 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -100,15 +100,12 @@ public class LinphoneActivity extends FragmentActivity implements private TextView missedCalls, missedChats; private ImageView dialer; private LinearLayout menu, mark; - private RelativeLayout contacts, history, settings, chat, aboutChat, - aboutSettings; + private RelativeLayout contacts, history, settings, chat, aboutChat, aboutSettings; private FragmentsAvailable currentFragment, nextFragment; - private Fragment dialerFragment, messageListenerFragment, - messageListFragment, friendStatusListenerFragment; + private Fragment dialerFragment, messageListenerFragment, messageListFragment, friendStatusListenerFragment; private SavedState dialerSavedState; private ChatStorage chatStorage; - private boolean preferLinphoneContacts = false, - isAnimationDisabled = false, isContactPresenceDisabled = true; + private boolean preferLinphoneContacts = false, isAnimationDisabled = false, isContactPresenceDisabled = true; private Handler mHandler = new Handler(); private List contactList, sipContactList; private Cursor contactCursor, sipContactCursor; @@ -129,8 +126,7 @@ public class LinphoneActivity extends FragmentActivity implements super.onCreate(savedInstanceState); if (!LinphoneManager.isInstanciated()) { - Log.e("No service running: avoid crash by starting the launcher", - this.getClass().getName()); + Log.e("No service running: avoid crash by starting the launcher", this.getClass().getName()); // super.onCreate called earlier finish(); startActivity(getIntent().setClass(this, @@ -138,17 +134,10 @@ public class LinphoneActivity extends FragmentActivity implements return; } - boolean useFirstLoginActivity = getResources().getBoolean( - R.bool.useFirstLoginActivity); - SharedPreferences pref = PreferenceManager - .getDefaultSharedPreferences(this); - if (useFirstLoginActivity - && !pref.getBoolean( - getString(R.string.first_launch_suceeded_once_key), - false)) { - startActivityForResult( - new Intent().setClass(this, SetupActivity.class), - FIRST_LOGIN_ACTIVITY); + boolean useFirstLoginActivity = getResources().getBoolean(R.bool.use_first_login_activity); + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); + if (useFirstLoginActivity && !pref.getBoolean(getString(R.string.first_launch_suceeded_once_key), false)) { + startActivityForResult(new Intent().setClass(this, SetupActivity.class), FIRST_LOGIN_ACTIVITY); } setContentView(R.layout.main); @@ -160,8 +149,7 @@ public class LinphoneActivity extends FragmentActivity implements if (findViewById(R.id.fragmentContainer) != null) { dialerFragment = new DialerFragment(); dialerFragment.setArguments(getIntent().getExtras()); - getSupportFragmentManager().beginTransaction() - .add(R.id.fragmentContainer, dialerFragment).commit(); + getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer, dialerFragment).commit(); selectMenu(FragmentsAvailable.DIALER); } } @@ -169,8 +157,7 @@ public class LinphoneActivity extends FragmentActivity implements int missedCalls = LinphoneManager.getLc().getMissedCallsCount(); displayMissedCalls(missedCalls); - int rotation = Compatibility.getRotation(getWindowManager() - .getDefaultDisplay()); + int rotation = Compatibility.getRotation(getWindowManager().getDefaultDisplay()); // Inverse landscape rotation to initiate linphoneCore correctly if (rotation == 270) rotation = 90; @@ -238,28 +225,23 @@ public class LinphoneActivity extends FragmentActivity implements // dialer from chat statusFragment.getView().setVisibility(View.VISIBLE); } - findViewById(R.id.fragmentContainer).setPadding(0, - LinphoneUtils.pixelsToDpi(getResources(), 40), 0, 0); + findViewById(R.id.fragmentContainer).setPadding(0, LinphoneUtils.pixelsToDpi(getResources(), 40), 0, 0); } - private void changeCurrentFragment(FragmentsAvailable newFragmentType, - Bundle extras) { + private void changeCurrentFragment(FragmentsAvailable newFragmentType, Bundle extras) { changeCurrentFragment(newFragmentType, extras, false); } @SuppressWarnings("incomplete-switch") - private void changeCurrentFragment(FragmentsAvailable newFragmentType, - Bundle extras, boolean withoutAnimation) { - if (newFragmentType == currentFragment - && newFragmentType != FragmentsAvailable.CHAT) { + private void changeCurrentFragment(FragmentsAvailable newFragmentType, Bundle extras, boolean withoutAnimation) { + if (newFragmentType == currentFragment && newFragmentType != FragmentsAvailable.CHAT) { return; } nextFragment = newFragmentType; if (currentFragment == FragmentsAvailable.DIALER) { try { - dialerSavedState = getSupportFragmentManager() - .saveFragmentInstanceState(dialerFragment); + dialerSavedState = getSupportFragmentManager().saveFragmentInstanceState(dialerFragment); } catch (Exception e) { } } @@ -284,6 +266,9 @@ public class LinphoneActivity extends FragmentActivity implements case CONTACT: newFragment = new ContactFragment(); break; + case EDIT_CONTACT: + newFragment = new EditContactFragment(); + break; case DIALER: newFragment = new DialerFragment(); if (extras == null) { @@ -315,8 +300,7 @@ public class LinphoneActivity extends FragmentActivity implements if (newFragment != null) { newFragment.setArguments(extras); if (Version.isXLargeScreen(this)) { - changeFragmentForTablets(newFragment, newFragmentType, - withoutAnimation); + changeFragmentForTablets(newFragment, newFragmentType, withoutAnimation); } else { changeFragment(newFragment, newFragmentType, withoutAnimation); } @@ -324,14 +308,9 @@ public class LinphoneActivity extends FragmentActivity implements } private void updateAnimationsState() { - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(this); - isAnimationDisabled = getResources().getBoolean( - R.bool.disable_animations) - || !prefs.getBoolean( - getString(R.string.pref_animation_enable_key), false); - isContactPresenceDisabled = !getResources().getBoolean( - R.bool.enable_linphone_friends); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + isAnimationDisabled = getResources().getBoolean(R.bool.disable_animations) || !prefs.getBoolean(getString(R.string.pref_animation_enable_key), false); + isContactPresenceDisabled = !getResources().getBoolean(R.bool.enable_linphone_friends); } public boolean isAnimationDisabled() { @@ -354,11 +333,9 @@ public class LinphoneActivity extends FragmentActivity implements statusFragment.closeStatusBar(); } - FragmentTransaction transaction = getSupportFragmentManager() - .beginTransaction(); + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - if (!withoutAnimation && !isAnimationDisabled - && currentFragment.shouldAnimate()) { + if (!withoutAnimation && !isAnimationDisabled && currentFragment.shouldAnimate()) { if (newFragmentType.isRightOf(currentFragment)) { transaction.setCustomAnimations(R.anim.slide_in_right_to_left, R.anim.slide_out_right_to_left, @@ -372,9 +349,7 @@ public class LinphoneActivity extends FragmentActivity implements } } try { - getSupportFragmentManager().popBackStackImmediate( - newFragmentType.toString(), - FragmentManager.POP_BACK_STACK_INCLUSIVE); + getSupportFragmentManager().popBackStackImmediate(newFragmentType.toString(), FragmentManager.POP_BACK_STACK_INCLUSIVE); } catch (java.lang.IllegalStateException e) { } @@ -409,7 +384,9 @@ public class LinphoneActivity extends FragmentActivity implements transaction.replace(R.id.fragmentContainer2, newFragment); } else { if (newFragmentType == FragmentsAvailable.DIALER - || newFragmentType == FragmentsAvailable.ABOUT || newFragmentType == FragmentsAvailable.ABOUT_INSTEAD_OF_CHAT || newFragmentType == FragmentsAvailable.ABOUT_INSTEAD_OF_SETTINGS + || newFragmentType == FragmentsAvailable.ABOUT + || newFragmentType == FragmentsAvailable.ABOUT_INSTEAD_OF_CHAT + || newFragmentType == FragmentsAvailable.ABOUT_INSTEAD_OF_SETTINGS || newFragmentType == FragmentsAvailable.SETTINGS || newFragmentType == FragmentsAvailable.ACCOUNT_SETTINGS) { ll.setVisibility(View.GONE); @@ -441,10 +418,8 @@ public class LinphoneActivity extends FragmentActivity implements } public void displayHistoryDetail(String sipUri, LinphoneCallLog log) { - LinphoneAddress lAddress = LinphoneCoreFactory.instance() - .createLinphoneAddress(sipUri); - Uri uri = LinphoneUtils.findUriPictureOfContactAndSetDisplayName( - lAddress, getContentResolver()); + LinphoneAddress lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri); + Uri uri = LinphoneUtils.findUriPictureOfContactAndSetDisplayName(lAddress, getContentResolver()); String displayName = lAddress.getDisplayName(); String pictureUri = uri == null ? null : uri.toString(); @@ -463,13 +438,10 @@ public class LinphoneActivity extends FragmentActivity implements String callTime = secondsToDisplayableString(log.getCallDuration()); String callDate = log.getStartDate(); - Fragment fragment2 = getSupportFragmentManager().findFragmentById( - R.id.fragmentContainer2); - if (fragment2 != null && fragment2.isVisible() - && currentFragment == FragmentsAvailable.HISTORY_DETAIL) { + Fragment fragment2 = getSupportFragmentManager().findFragmentById(R.id.fragmentContainer2); + if (fragment2 != null && fragment2.isVisible() && currentFragment == FragmentsAvailable.HISTORY_DETAIL) { HistoryDetailFragment historyDetailFragment = (HistoryDetailFragment) fragment2; - historyDetailFragment.changeDisplayedHistory(sipUri, displayName, - pictureUri, status, callTime, callDate); + historyDetailFragment.changeDisplayedHistory(sipUri, displayName, pictureUri, status, callTime, callDate); } else { Bundle extras = new Bundle(); extras.putString("SipUri", sipUri); @@ -493,10 +465,8 @@ public class LinphoneActivity extends FragmentActivity implements } public void displayContact(Contact contact, boolean chatOnly) { - Fragment fragment2 = getSupportFragmentManager().findFragmentById( - R.id.fragmentContainer2); - if (fragment2 != null && fragment2.isVisible() - && currentFragment == FragmentsAvailable.CONTACT) { + Fragment fragment2 = getSupportFragmentManager().findFragmentById(R.id.fragmentContainer2); + if (fragment2 != null && fragment2.isVisible() && currentFragment == FragmentsAvailable.CONTACT) { ContactFragment contactFragment = (ContactFragment) fragment2; contactFragment.changeDisplayedContact(contact); } else { @@ -588,10 +558,8 @@ public class LinphoneActivity extends FragmentActivity implements aboutChat.setSelected(true); } else if (id == R.id.about_settings) { Bundle b = new Bundle(); - b.putSerializable("About", - FragmentsAvailable.ABOUT_INSTEAD_OF_SETTINGS); - changeCurrentFragment(FragmentsAvailable.ABOUT_INSTEAD_OF_SETTINGS, - b); + b.putSerializable("About", FragmentsAvailable.ABOUT_INSTEAD_OF_SETTINGS); + changeCurrentFragment(FragmentsAvailable.ABOUT_INSTEAD_OF_SETTINGS, b); aboutSettings.setSelected(true); } else if (id == R.id.chat) { changeCurrentFragment(FragmentsAvailable.CHATLIST, null); @@ -621,6 +589,7 @@ public class LinphoneActivity extends FragmentActivity implements break; case CONTACTS: case CONTACT: + case EDIT_CONTACT: contacts.setSelected(true); break; case DIALER: @@ -646,17 +615,13 @@ public class LinphoneActivity extends FragmentActivity implements public void updateDialerFragment(DialerFragment fragment) { dialerFragment = fragment; // Hack to maintain soft input flags - getWindow().setSoftInputMode( - WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN - | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); + getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); } public void updateChatFragment(ChatFragment fragment) { messageListenerFragment = fragment; // Hack to maintain soft input flags - getWindow().setSoftInputMode( - WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE - | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); + getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); } public void updateChatListFragment(ChatListFragment fragment) { @@ -672,8 +637,7 @@ public class LinphoneActivity extends FragmentActivity implements statusFragment = fragment; if (LinphoneManager.getLc().getDefaultProxyConfig() != null) { - statusFragment.registrationStateChanged(LinphoneManager.getLc() - .getDefaultProxyConfig().getState()); + statusFragment.registrationStateChanged(LinphoneManager.getLc().getDefaultProxyConfig().getState()); } } @@ -683,8 +647,7 @@ public class LinphoneActivity extends FragmentActivity implements } public void applyConfigChangesIfNeeded() { - if (nextFragment != FragmentsAvailable.SETTINGS - && nextFragment != FragmentsAvailable.ACCOUNT_SETTINGS) { + if (nextFragment != FragmentsAvailable.SETTINGS && nextFragment != FragmentsAvailable.ACCOUNT_SETTINGS) { reloadConfig(); updateAnimationsState(); } @@ -700,17 +663,14 @@ public class LinphoneActivity extends FragmentActivity implements try { LinphoneManager.getInstance().initFromConf(); - lc.setVideoPolicy(LinphoneManager.getInstance() - .isAutoInitiateVideoCalls(), LinphoneManager.getInstance() - .isAutoAcceptCamera()); + lc.setVideoPolicy(LinphoneManager.getInstance().isAutoInitiateVideoCalls(), LinphoneManager.getInstance().isAutoAcceptCamera()); } catch (LinphoneException e) { if (!(e instanceof LinphoneConfigException)) { Log.e(e, "Cannot update config"); return; } - LinphoneActivity.instance().showPreferenceErrorDialog( - e.getMessage()); + LinphoneActivity.instance().showPreferenceErrorDialog(e.getMessage()); } } @@ -757,8 +717,7 @@ public class LinphoneActivity extends FragmentActivity implements String notificationText = null; int id = -1; if (textMessage != null && textMessage.length() > 0) { - id = getChatStorage().saveMessage(from.asStringUriOnly(), "", - textMessage); + id = getChatStorage().saveMessage(from.asStringUriOnly(), "", textMessage); notificationText = textMessage; } else if (url != null && url.length() > 0) { Bitmap bm = ChatFragment.downloadImage(url); @@ -767,9 +726,7 @@ public class LinphoneActivity extends FragmentActivity implements } ChatFragment chatFragment = ((ChatFragment) messageListenerFragment); - if (messageListenerFragment != null - && messageListenerFragment.isVisible() - && chatFragment.getSipUri().equals(from.asStringUriOnly())) { + if (messageListenerFragment != null && messageListenerFragment.isVisible() && chatFragment.getSipUri().equals(from.asStringUriOnly())) { chatFragment.onMessageReceived(id, from, message); getChatStorage().markMessageAsRead(id); } else if (LinphoneService.isReady()) { @@ -778,11 +735,8 @@ public class LinphoneActivity extends FragmentActivity implements ((ChatListFragment) messageListFragment).refresh(); } } - LinphoneUtils.findUriPictureOfContactAndSetDisplayName(from, - getContentResolver()); - LinphoneService.instance() - .displayMessageNotification(from.asStringUriOnly(), - from.getDisplayName(), notificationText); + LinphoneUtils.findUriPictureOfContactAndSetDisplayName(from, getContentResolver()); + LinphoneService.instance().displayMessageNotification(from.asStringUriOnly(), from.getDisplayName(), notificationText); } public void updateMissedChatCount() { @@ -822,9 +776,7 @@ public class LinphoneActivity extends FragmentActivity implements missedCalls.setText(missedCallsCount + ""); missedCalls.setVisibility(View.VISIBLE); if (!isAnimationDisabled) { - missedCalls.startAnimation(AnimationUtils - .loadAnimation(LinphoneActivity.this, - R.anim.bounce)); + missedCalls.startAnimation(AnimationUtils.loadAnimation(LinphoneActivity.this, R.anim.bounce)); } } else { missedCalls.clearAnimation(); @@ -847,9 +799,7 @@ public class LinphoneActivity extends FragmentActivity implements } missedChats.setVisibility(View.VISIBLE); if (!isAnimationDisabled) { - missedChats.startAnimation(AnimationUtils - .loadAnimation(LinphoneActivity.this, - R.anim.bounce)); + missedChats.startAnimation(AnimationUtils.loadAnimation(LinphoneActivity.this, R.anim.bounce)); } } else { missedChats.clearAnimation(); @@ -874,8 +824,7 @@ public class LinphoneActivity extends FragmentActivity implements } else { startIncallActivity(call); } - } else if (state == State.CallEnd || state == State.Error - || state == State.CallReleased) { + } else if (state == State.CallEnd || state == State.Error || state == State.CallReleased) { resetClassicMenuLayoutAndGoBackToCallIfStillRunning(); } @@ -888,11 +837,9 @@ public class LinphoneActivity extends FragmentActivity implements @Override public void run() { LayoutInflater inflater = getLayoutInflater(); - View layout = inflater.inflate(R.layout.toast, - (ViewGroup) findViewById(R.id.toastRoot)); + View layout = inflater.inflate(R.layout.toast, (ViewGroup) findViewById(R.id.toastRoot)); - TextView toastText = (TextView) layout - .findViewById(R.id.toastMessage); + TextView toastText = (TextView) layout.findViewById(R.id.toastMessage); toastText.setText(message); final Toast toast = new Toast(getApplicationContext()); @@ -958,8 +905,7 @@ public class LinphoneActivity extends FragmentActivity implements private int mAlwaysChangingPhoneAngle = -1; private AcceptNewFriendDialog acceptNewFriendDialog; - private class LocalOrientationEventListener extends - OrientationEventListener { + private class LocalOrientationEventListener extends OrientationEventListener { public LocalOrientationEventListener(Context context) { super(context); } @@ -985,13 +931,11 @@ public class LinphoneActivity extends FragmentActivity implements Log.d("Phone orientation changed to ", degrees); int rotation = (360 - degrees) % 360; - LinphoneCore lc = LinphoneManager - .getLcIfManagerNotDestroyedOrNull(); + LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); if (lc != null) { lc.setDeviceRotation(rotation); LinphoneCall currentCall = lc.getCurrentCall(); - if (currentCall != null && currentCall.cameraEnabled() - && currentCall.getCurrentParamsCopy().getVideoEnabled()) { + if (currentCall != null && currentCall.cameraEnabled() && currentCall.getCurrentParamsCopy().getVideoEnabled()) { lc.updateCall(currentCall, null); } } @@ -1028,8 +972,7 @@ public class LinphoneActivity extends FragmentActivity implements private void refreshStatus(OnlineStatus status) { if (LinphoneManager.isInstanciated()) { - LinphoneManager.getLcIfManagerNotDestroyedOrNull().setPresenceInfo( - 0, "", status); + LinphoneManager.getLcIfManagerNotDestroyedOrNull().setPresenceInfo(0, "", status); } } @@ -1040,10 +983,8 @@ public class LinphoneActivity extends FragmentActivity implements } sipUri = sipUri.replace("<", "").replace(">", ""); - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(this); - if (prefs.getBoolean(getString(R.string.pref_auto_accept_friends_key), - false)) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + if (prefs.getBoolean(getString(R.string.pref_auto_accept_friends_key), false)) { Contact contact = findContactWithSipAddress(sipUri); if (contact != null) { friend.enableSubscribes(true); @@ -1058,8 +999,7 @@ public class LinphoneActivity extends FragmentActivity implements Contact contact = findContactWithSipAddress(sipUri); if (contact != null) { FragmentManager fm = getSupportFragmentManager(); - acceptNewFriendDialog = new AcceptNewFriendDialog(contact, - sipUri); + acceptNewFriendDialog = new AcceptNewFriendDialog(contact, sipUri); acceptNewFriendDialog.show(fm, "New Friend Request Dialog"); } } @@ -1081,16 +1021,13 @@ public class LinphoneActivity extends FragmentActivity implements } public void onNotifyPresenceReceived(LinphoneFriend friend) { - if (!isContactPresenceDisabled - && currentFragment == FragmentsAvailable.CONTACTS - && friendStatusListenerFragment != null) { + if (!isContactPresenceDisabled && currentFragment == FragmentsAvailable.CONTACTS && friendStatusListenerFragment != null) { ((ContactsFragment) friendStatusListenerFragment).invalidate(); } } public boolean newFriend(Contact contact, String sipUri) { - LinphoneFriend friend = LinphoneCoreFactory.instance() - .createLinphoneFriend(sipUri); + LinphoneFriend friend = LinphoneCoreFactory.instance().createLinphoneFriend(sipUri); friend.enableSubscribes(true); friend.setIncSubscribePolicy(LinphoneFriend.SubscribePolicy.SPAccept); try { @@ -1103,8 +1040,7 @@ public class LinphoneActivity extends FragmentActivity implements return false; } - private void acceptNewFriend(Contact contact, String sipUri, - boolean accepted) { + private void acceptNewFriend(Contact contact, String sipUri, boolean accepted) { acceptNewFriendDialog.dismissAllowingStateLoss(); if (accepted) { newFriend(contact, sipUri); @@ -1112,8 +1048,7 @@ public class LinphoneActivity extends FragmentActivity implements } public boolean removeFriend(Contact contact, String sipUri) { - LinphoneFriend friend = LinphoneManager.getLc().findFriendByAddress( - sipUri); + LinphoneFriend friend = LinphoneManager.getLc().findFriendByAddress(sipUri); if (friend != null) { friend.enableSubscribes(false); LinphoneManager.getLc().removeFriend(friend); @@ -1130,8 +1065,7 @@ public class LinphoneActivity extends FragmentActivity implements for (String sipUri : contact.getNumerosOrAddresses()) { if (LinphoneUtils.isSipAddress(sipUri)) { - LinphoneFriend friend = LinphoneManager.getLc() - .findFriendByAddress(sipUri); + LinphoneFriend friend = LinphoneManager.getLc().findFriendByAddress(sipUri); if (friend != null) { friend.enableSubscribes(true); friend.setIncSubscribePolicy(LinphoneFriend.SubscribePolicy.SPAccept); @@ -1151,15 +1085,13 @@ public class LinphoneActivity extends FragmentActivity implements } contactCursor = Compatibility.getContactsCursor(getContentResolver()); - sipContactCursor = Compatibility - .getSIPContactsCursor(getContentResolver()); + sipContactCursor = Compatibility.getSIPContactsCursor(getContentResolver()); Thread sipContactsHandler = new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < sipContactCursor.getCount(); i++) { - Contact contact = Compatibility.getContact( - getContentResolver(), sipContactCursor, i); + Contact contact = Compatibility.getContact(getContentResolver(), sipContactCursor, i); contact.refresh(getContentResolver()); if (!isContactPresenceDisabled) { searchFriendAndAddToContact(contact); @@ -1167,8 +1099,7 @@ public class LinphoneActivity extends FragmentActivity implements sipContactList.add(contact); } for (int i = 0; i < contactCursor.getCount(); i++) { - Contact contact = Compatibility.getContact( - getContentResolver(), contactCursor, i); + Contact contact = Compatibility.getContact(getContentResolver(), contactCursor, i); for (Contact c : sipContactList) { if (c.getID().equals(contact.getID())) { contact = c; @@ -1200,8 +1131,7 @@ public class LinphoneActivity extends FragmentActivity implements ((DialerFragment) dialerFragment).resetLayout(false); } - if (LinphoneManager.isInstanciated() - && LinphoneManager.getLc().getCallsNb() > 0) { + if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() > 0) { LinphoneCall call = LinphoneManager.getLc().getCalls()[0]; if (call.getCurrentParamsCopy().getVideoEnabled()) { startVideoActivity(call); @@ -1223,29 +1153,60 @@ public class LinphoneActivity extends FragmentActivity implements } return chatStorage; } + + public void addContact(String displayName, String sipUri) + { + if (getResources().getBoolean(R.bool.use_android_native_contact_edit_interface)) { + Intent intent = Compatibility.prepareAddContactIntent(displayName, sipUri); + startActivity(intent); + } else { + changeCurrentFragment(FragmentsAvailable.EDIT_CONTACT, null); + } + } + + public void editContact(Contact contact) + { + if (getResources().getBoolean(R.bool.use_android_native_contact_edit_interface)) { + Intent intent = Compatibility.prepareEditContactIntent(Integer.parseInt(contact.getID())); + startActivity(intent); + } else { + Bundle extras = new Bundle(); + extras.putSerializable("Contact", contact); + changeCurrentFragment(FragmentsAvailable.EDIT_CONTACT, extras); + } + } + + public void editContact(Contact contact, String sipAddress) + { + if (getResources().getBoolean(R.bool.use_android_native_contact_edit_interface)) { + Intent intent = Compatibility.prepareEditContactIntentWithSipAddress(Integer.parseInt(contact.getID()), sipAddress); + startActivity(intent); + } else { + Bundle extras = new Bundle(); + extras.putSerializable("Contact", contact); + extras.putSerializable("NewSipAdress", sipAddress); + changeCurrentFragment(FragmentsAvailable.EDIT_CONTACT, extras); + } + } public void exit() { refreshStatus(OnlineStatus.Offline); finish(); - stopService(new Intent(ACTION_MAIN).setClass(this, - LinphoneService.class)); + stopService(new Intent(ACTION_MAIN).setClass(this, LinphoneService.class)); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (resultCode == Activity.RESULT_FIRST_USER - && requestCode == SETTINGS_ACTIVITY) { + if (resultCode == Activity.RESULT_FIRST_USER && requestCode == SETTINGS_ACTIVITY) { if (data.getExtras().getBoolean("Exit", false)) { exit(); } else { - FragmentsAvailable newFragment = (FragmentsAvailable) data - .getExtras().getSerializable("FragmentToDisplay"); + FragmentsAvailable newFragment = (FragmentsAvailable) data.getExtras().getSerializable("FragmentToDisplay"); changeCurrentFragment(newFragment, null, true); selectMenu(newFragment); } } else if (requestCode == callActivity) { - boolean callTransfer = data == null ? false : data.getBooleanExtra( - "Transfer", false); + boolean callTransfer = data == null ? false : data.getBooleanExtra("Transfer", false); if (LinphoneManager.getLc().getCallsNb() > 0) { initInCallMenuLayout(callTransfer); } else { @@ -1346,8 +1307,7 @@ public class LinphoneActivity extends FragmentActivity implements } if (LinphoneManager.getLc().getCalls().length > 0) { LinphoneCall call = LinphoneManager.getLc().getCalls()[0]; - if (call != null - && call.getState() != LinphoneCall.State.IncomingReceived) { + if (call != null && call.getState() != LinphoneCall.State.IncomingReceived) { if (call.getCurrentParamsCopy().getVideoEnabled()) { startVideoActivity(call); } else { @@ -1398,10 +1358,8 @@ public class LinphoneActivity extends FragmentActivity implements } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.new_friend_request_dialog, - container); + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.new_friend_request_dialog, container); getDialog().setTitle(R.string.linphone_friend_new_request_title);