* #31230: link to contact app
diff --git a/src/org/sflphone/adapters/ContactPictureTask.java b/src/org/sflphone/adapters/ContactPictureTask.java
index 70c33e9..42b7cd5 100644
--- a/src/org/sflphone/adapters/ContactPictureTask.java
+++ b/src/org/sflphone/adapters/ContactPictureTask.java
@@ -50,6 +50,9 @@
import android.graphics.Shader;
import android.net.Uri;
import android.provider.ContactsContract;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnTouchListener;
import android.widget.ImageView;
public class ContactPictureTask implements Runnable {
@@ -82,7 +85,7 @@
} catch (IllegalArgumentException e) {
photo_bmp = null;
}
-
+
if (photo_bmp == null) {
photo_bmp = decodeSampledBitmapFromResource(view.getResources(), R.drawable.ic_contact_picture, view.getWidth(), view.getHeight());
}
@@ -95,10 +98,10 @@
}
final Bitmap externalBMP = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
-
+
BitmapShader shader;
shader = new BitmapShader(photo_bmp, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
-
+
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(shader);
@@ -113,9 +116,8 @@
}
});
}
-
- public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
- int reqWidth, int reqHeight) {
+
+ public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight) {
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
diff --git a/src/org/sflphone/adapters/ContactsAdapter.java b/src/org/sflphone/adapters/ContactsAdapter.java
index 4491f69..7a68361 100644
--- a/src/org/sflphone/adapters/ContactsAdapter.java
+++ b/src/org/sflphone/adapters/ContactsAdapter.java
@@ -25,6 +25,7 @@
import android.widget.ImageView;
import android.widget.SectionIndexer;
import android.widget.TextView;
+import android.widget.Toast;
public class ContactsAdapter extends BaseAdapter implements SectionIndexer {
@@ -95,6 +96,34 @@
}
});
+
+ convertView.findViewById(R.id.quick_starred).setOnClickListener(new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ Toast.makeText(mContext, "Coming soon", Toast.LENGTH_SHORT).show();
+ }
+ });
+
+ convertView.findViewById(R.id.quick_edit).setOnClickListener(new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ parent.get().mCallbacks.onEditContact(item);
+
+ }
+ });
+
+ convertView.findViewById(R.id.quick_discard).setOnClickListener(new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ Toast.makeText(mContext, "Coming soon", Toast.LENGTH_SHORT).show();
+
+ }
+ });
+
+
convertView.findViewById(R.id.quick_message).setOnClickListener(new OnClickListener() {
diff --git a/src/org/sflphone/client/SFLPhoneHomeActivity.java b/src/org/sflphone/client/SFLPhoneHomeActivity.java
index 9e5c754..17bddf5 100644
--- a/src/org/sflphone/client/SFLPhoneHomeActivity.java
+++ b/src/org/sflphone/client/SFLPhoneHomeActivity.java
@@ -63,9 +63,11 @@
import android.content.ServiceConnection;
import android.content.res.Configuration;
import android.database.Cursor;
+import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
+import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.SipAddress;
import android.support.v4.app.ActionBarDrawerToggle;
@@ -340,6 +342,7 @@
}
public void launchCallActivity(SipCall infos) {
+
Log.i(TAG, "Launch Call Activity");
Bundle bundle = new Bundle();
Conference tmp = new Conference("-1");
@@ -465,10 +468,19 @@
public void onTextContact(final CallContact c) {
// TODO
}
+
+ @Override
+ public void onEditContact(final CallContact c) {
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, String.valueOf(c.getId()));
+ intent.setData(uri);
+ startActivity(intent);
+ }
@Override
public void onCallContact(final CallContact c) {
+ getActionBar().show(); // in case the contact drawer is open
if (fMenu.getSelectedAccount() == null) {
// Toast.makeText(this, "No Account Selected", Toast.LENGTH_SHORT).show();
createAccountDialog().show();
diff --git a/src/org/sflphone/fragments/ContactListFragment.java b/src/org/sflphone/fragments/ContactListFragment.java
index 0bdfede..1e9216c 100644
--- a/src/org/sflphone/fragments/ContactListFragment.java
+++ b/src/org/sflphone/fragments/ContactListFragment.java
@@ -39,7 +39,6 @@
import org.sflphone.loaders.ContactsLoader;
import org.sflphone.loaders.LoaderConstants;
import org.sflphone.model.CallContact;
-import org.sflphone.model.Conference;
import org.sflphone.service.ISipService;
import org.sflphone.views.SwipeListViewTouchListener;
import org.sflphone.views.TACGridView;
@@ -48,10 +47,11 @@
import android.app.Activity;
import android.app.Fragment;
import android.app.LoaderManager;
+import android.content.Intent;
import android.content.Loader;
import android.net.Uri;
import android.os.Bundle;
-import android.os.RemoteException;
+import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.util.Log;
import android.view.DragEvent;
@@ -71,7 +71,6 @@
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SearchView;
-import android.widget.Toast;
import android.widget.SearchView.OnQueryTextListener;
public class ContactListFragment extends Fragment implements OnQueryTextListener, LoaderManager.LoaderCallbacks<Bundle> {
@@ -100,6 +99,10 @@
@Override
public void onTextContact(CallContact c) {
}
+
+ @Override
+ public void onEditContact(CallContact c) {
+ }
@Override
public ISipService getService() {
@@ -127,6 +130,8 @@
void openDrawer();
+ void onEditContact(CallContact item);
+
}
@Override
@@ -182,12 +187,10 @@
}
@Override
- public void onSwipeRight(ListView listView, int[] reverseSortedPositions) {
+ public void onSwipeRight(ListView listView, final int[] reverseSortedPositions) {
// Log.i(ProfileMenuActivity.class.getClass().getName(), "swipe right : pos="+reverseSortedPositions[0]);
// TODO : YOUR CODE HERE FOR RIGHT ACTION
-
- CallContact tmp = mListAdapter.getItem(reverseSortedPositions[0]);
-
+
}
}, true, false));
list.setOnItemLongClickListener(mItemLongClickListener);
diff --git a/src/org/sflphone/views/SwipeListViewTouchListener.java b/src/org/sflphone/views/SwipeListViewTouchListener.java
index 4895430..38125b9 100644
--- a/src/org/sflphone/views/SwipeListViewTouchListener.java
+++ b/src/org/sflphone/views/SwipeListViewTouchListener.java
@@ -10,6 +10,7 @@
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.graphics.Rect;
+import android.util.Log;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
@@ -24,6 +25,8 @@
private int mMinFlingVelocity;
private int mMaxFlingVelocity;
private long mAnimationTime;
+
+ private static final String TAG = SwipeListViewTouchListener.class.getSimpleName();
// Fixed properties
private ListView mListView;
@@ -130,10 +133,12 @@
}
@Override
- public boolean onTouch(View view, MotionEvent motionEvent) {
+ public boolean onTouch(View item, MotionEvent motionEvent) {
if (mViewWidth < 2) {
mViewWidth = mListView.getWidth();
}
+
+ Log.i(TAG,"->onTouch");
switch (motionEvent.getActionMasked()) {
case MotionEvent.ACTION_DOWN: {
@@ -169,7 +174,7 @@
mVelocityTracker.addMovement(motionEvent);
mVelocityTracker.recycle();
}
- view.onTouchEvent(motionEvent);
+ item.onTouchEvent(motionEvent);
return true;
}
@@ -206,7 +211,8 @@
@Override
public void onAnimationEnd(Animator animation) {
mListView.requestDisallowInterceptTouchEvent(false);
- // performSwipeAction(downView, downPosition, toTheRight,dismissRight);
+// mCallback.onSwipeRight(mListView, swipePositions);
+// performSwipeAction(downView, downPosition, toTheRight,dismissRight);
}
});
} else {
@@ -234,7 +240,7 @@
float deltaX = motionEvent.getRawX() - mDownX;
float deltaY = motionEvent.getRawY() - mDownY;
- if ((deltaX > 0 && deltaY - deltaX > mSlop) || (deltaX < 0 && deltaY - deltaX > mSlop)) {
+ if ((deltaX > 0 && deltaY - deltaX > mSlop) || (deltaX < 0 && deltaY - deltaX > mSlop)) {
mListView.requestDisallowInterceptTouchEvent(false);
return false;
}
@@ -249,8 +255,7 @@
mListView.onTouchEvent(cancelEvent);
cancelEvent.recycle();
}
-
- if (deltaX < 0 || view.getX() > view.getWidth() / 2)
+ if (deltaX < 0)
return true;
if (mSwiping) {