Replaced SlidingDrawer by SlidingUpPanel
diff --git a/src/org/sflphone/client/HomeActivity.java b/src/org/sflphone/client/HomeActivity.java
index 854420f..1bd4267 100644
--- a/src/org/sflphone/client/HomeActivity.java
+++ b/src/org/sflphone/client/HomeActivity.java
@@ -64,7 +64,6 @@
import android.content.ServiceConnection;
import android.content.res.Configuration;
import android.database.Cursor;
-import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
@@ -153,7 +152,6 @@
mContactDrawer.setAnchorPoint(0.3f);
mContactDrawer.setDragView(findViewById(R.id.contacts_frame));
mContactDrawer.setEnableDragViewTouchEvents(true);
-// mContactDrawer.setCoveredFadeColor(0xff000000);
mContactDrawer.setPanelSlideListener(new PanelSlideListener() {
@Override
@@ -185,8 +183,6 @@
}
});
- // TODO
- // mContactsFragment.setHandleView((RelativeLayout) findViewById(R.id.slider_button));
mShadow = (ImageView) findViewById(R.id.overall_shadow);
// Set up the ViewPager with the sections adapter.
@@ -221,7 +217,6 @@
}
};
- // mTabHost = (TabHost) findViewById(android.R.id.tabhost);
mNavigationDrawer.setDrawerListener(mDrawerToggle);
}
@@ -576,8 +571,11 @@
}
@Override
- public void openDrawer() {
- mContactDrawer.expandPane();
+ public void toggleDrawer() {
+ if (mContactDrawer.isExpanded())
+ mContactDrawer.collapsePane();
+ else
+ mContactDrawer.expandPane();
}
@Override
@@ -615,19 +613,20 @@
public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
private static final float MIN_ALPHA = .6f;
- // private final float scalingStart;
-
public ZoomOutPageTransformer(float scalingStart) {
super();
- // this.scalingStart = 1 - scalingStart;
}
@Override
public void transformPage(View page, float position) {
- // page.setRotationY(position * -30);
final float normalizedposition = Math.abs(Math.abs(position) - 1);
page.setAlpha(MIN_ALPHA + (1.f - MIN_ALPHA) * normalizedposition);
}
}
+ @Override
+ public void setDragView(RelativeLayout relativeLayout) {
+ mContactDrawer.setDragView(relativeLayout);
+ }
+
}
diff --git a/src/org/sflphone/fragments/ContactListFragment.java b/src/org/sflphone/fragments/ContactListFragment.java
index 28c0407..f6f57a4 100644
--- a/src/org/sflphone/fragments/ContactListFragment.java
+++ b/src/org/sflphone/fragments/ContactListFragment.java
@@ -43,7 +43,6 @@
import org.sflphone.views.SwipeListViewTouchListener;
import org.sflphone.views.stickylistheaders.StickyListHeadersListView;
-import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Fragment;
import android.app.LoaderManager;
@@ -54,14 +53,14 @@
import android.util.Log;
import android.view.DragEvent;
import android.view.LayoutInflater;
+import android.view.MotionEvent;
import android.view.View;
import android.view.View.DragShadowBuilder;
import android.view.View.MeasureSpec;
import android.view.View.OnClickListener;
import android.view.View.OnDragListener;
+import android.view.View.OnTouchListener;
import android.view.ViewGroup;
-import android.widget.AbsListView;
-import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
@@ -82,16 +81,8 @@
String mCurFilter;
StickyListHeadersListView mContactList;
private GridView mStarredGrid;
-
- private int mCachedVerticalScrollRange;
- private int mQuickReturnHeight;
-
- private static final int STATE_ONSCREEN = 0;
- private static final int STATE_OFFSCREEN = 1;
- private static final int STATE_RETURNING = 2;
- private int mState = STATE_ONSCREEN;
- private int mScrollY;
- private int mMinRawY = 0;
+ private SwipeListViewTouchListener mSwipeLvTouchListener;
+ private LinearLayout mHeader;
@Override
public void onCreate(Bundle savedInBundle) {
@@ -129,7 +120,12 @@
}
@Override
- public void openDrawer() {
+ public void toggleDrawer() {
+ }
+
+ @Override
+ public void setDragView(RelativeLayout relativeLayout) {
+
}
};
@@ -142,10 +138,12 @@
void onContactDragged();
- void openDrawer();
+ void toggleDrawer();
void onEditContact(CallContact item);
+ void setDragView(RelativeLayout relativeLayout);
+
}
@Override
@@ -156,6 +154,7 @@
}
mCallbacks = (Callbacks) activity;
+
}
@Override
@@ -169,7 +168,15 @@
View inflatedView = inflater.inflate(R.layout.frag_contact_list, container, false);
mHeader = (LinearLayout) inflater.inflate(R.layout.frag_contact_list_header, null);
mContactList = (StickyListHeadersListView) inflatedView.findViewById(R.id.contacts_list);
-
+
+ ((LinearLayout) inflatedView.findViewById(R.id.drag_view)).setOnTouchListener(new OnTouchListener() {
+
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ return true;
+ }
+ });
+
((ImageButton) inflatedView.findViewById(R.id.contact_search_button)).setOnClickListener(new OnClickListener() {
@Override
@@ -178,10 +185,20 @@
mQuickReturnSearchView.setOnQueryTextListener(ContactListFragment.this);
mQuickReturnSearchView.setIconified(false);
mQuickReturnSearchView.setFocusable(true);
- mCallbacks.openDrawer();
+ mCallbacks.toggleDrawer();
+ }
+ });
+
+ ((RelativeLayout) inflatedView.findViewById(R.id.slider_button)).setOnClickListener(new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ mCallbacks.toggleDrawer();
}
});
+ mCallbacks.setDragView(((RelativeLayout) inflatedView.findViewById(R.id.slider_button)));
+
mQuickReturnSearchView = (SearchView) mHeader.findViewById(R.id.contact_search);
mStarredGrid = (GridView) mHeader.findViewById(R.id.favorites_grid);
llMain = (LinearLayout) mHeader.findViewById(R.id.llMain);
@@ -222,9 +239,6 @@
}
};
- private SwipeListViewTouchListener mSwipeLvTouchListener;
- private View mPlaceHolder;
- private LinearLayout mHeader;
private void setGridViewListeners() {
mStarredGrid.setOnDragListener(dragListener);
@@ -264,18 +278,6 @@
mSwipeLvTouchListener.openItem(view, pos, id);
}
});
-
- // mContactList.getWrappedList().getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
- // @Override
- // public void onGlobalLayout() {
- // if (!mContactList.scrollYIsComputed()) {
- // mQuickReturnHeight = mQuickReturnSearchView.getHeight();
- // mContactList.computeScrollY();
- // mCachedVerticalScrollRange = mContactList.getListHeight();
- // }
- // }
- // });
- // mContactList.setOnScrollListener(mScrollListener);
}
OnDragListener dragListener = new OnDragListener() {
@@ -306,19 +308,6 @@
@Override
public boolean onQueryTextChange(String newText) {
-
- // Called when the action bar search text has changed. Update
- // the search filter, and restart the loader to do a new query
- // with this filter.
- // String newFilter = !TextUtils.isEmpty(newText) ? newText : null;
- // Don't do anything if the filter hasn't actually changed.
- // Prefents restarting the loader when restoring state.
- // if (mCurFilter == null && newFilter == null) {
- // return true;
- // }
- // if (mCurFilter != null && mCurFilter.equals(newText)) {
- // return true;
- // }
if (newText.isEmpty()) {
getLoaderManager().restartLoader(LoaderConstants.CONTACT_LOADER, null, this);
return true;
@@ -401,89 +390,11 @@
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) llMain.getLayoutParams();
params.height = (int) (totalHeight + (getResources().getDimension(R.dimen.contact_vertical_spacing) * (rows - 1)));
- ;
llMain.setLayoutParams(params);
mHeader.requestLayout();
}
- private OnScrollListener mScrollListener = new OnScrollListener() {
- @SuppressLint("NewApi")
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
-
- mScrollY = 0;
- int translationY = 0;
-
- if (mContactList.scrollYIsComputed()) {
- mScrollY = mContactList.getComputedScrollY();
- }
-
- int rawY = mPlaceHolder.getTop() - Math.min(mCachedVerticalScrollRange - mContactList.getHeight(), mScrollY);
-
- switch (mState) {
- case STATE_OFFSCREEN:
- if (rawY <= mMinRawY) {
- mMinRawY = rawY;
- } else {
- mState = STATE_RETURNING;
- }
- translationY = rawY;
- break;
-
- case STATE_ONSCREEN:
- if (rawY < -mQuickReturnHeight) {
- mState = STATE_OFFSCREEN;
- mMinRawY = rawY;
- }
- translationY = rawY;
- break;
-
- case STATE_RETURNING:
- translationY = (rawY - mMinRawY) - mQuickReturnHeight;
- if (translationY > 0) {
- translationY = 0;
- mMinRawY = rawY - mQuickReturnHeight;
- }
-
- if (rawY > 0) {
- mState = STATE_ONSCREEN;
- translationY = rawY;
- }
-
- if (translationY < -mQuickReturnHeight) {
- mState = STATE_OFFSCREEN;
- mMinRawY = rawY;
- }
- break;
- }
-
- mQuickReturnSearchView.setTranslationY(translationY);
-
- }
-
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- }
- };
-
@Override
public void onLoaderReset(Loader<Bundle> loader) {
}
-
- public void setHandleView(RelativeLayout handle) {
-
- ((ImageButton) handle.findViewById(R.id.contact_search_button)).setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- mContactList.smoothScrollToPosition(0);
- mQuickReturnSearchView.setOnQueryTextListener(ContactListFragment.this);
- mQuickReturnSearchView.setIconified(false);
- mQuickReturnSearchView.setFocusable(true);
- mCallbacks.openDrawer();
- }
- });
-
- }
-
}
diff --git a/src/org/sflphone/views/SlidingUpPanelLayout.java b/src/org/sflphone/views/SlidingUpPanelLayout.java
index e53ab79..2ebf02f 100644
--- a/src/org/sflphone/views/SlidingUpPanelLayout.java
+++ b/src/org/sflphone/views/SlidingUpPanelLayout.java
@@ -555,11 +555,13 @@
final int action = MotionEventCompat.getActionMasked(ev);
if (!mCanSlide || !mIsSlidingEnabled || (mIsUnableToDrag && action != MotionEvent.ACTION_DOWN)) {
+ Log.i(TAG, "onInterceptTouchEvent - !mCanSlide || !mIsSlidingEnabled || (mIsUnableToDrag && action != MotionEvent.ACTION_DOWN");
mDragHelper.cancel();
return super.onInterceptTouchEvent(ev);
}
if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) {
+ Log.i(TAG, "onInterceptTouchEvent - action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP");
mDragHelper.cancel();
return false;
}
@@ -576,6 +578,7 @@
mDragViewHit = isDragViewHit((int) x, (int) y);
if (mDragViewHit && !mIsUsingDragViewTouchEvents) {
+ Log.i(TAG, "interceptTap = true;");
interceptTap = true;
}
break;
@@ -601,6 +604,7 @@
if (ady > dragSlop && adx > ady) {
mDragHelper.cancel();
mIsUnableToDrag = true;
+ Log.i(TAG, "mIsUnableToDrag = true;");
return false;
}
break;
@@ -773,7 +777,12 @@
if (mCanSlide && !lp.slideable && mSlideableView != null) {
// Clip against the slider; no sense drawing what will immediately be covered.
canvas.getClipBounds(mTmpRect);
- mTmpRect.bottom = (int) Math.min(mTmpRect.bottom, mSlideableView.getTop() + getResources().getDisplayMetrics().density * 68); // + 60 cause of the rounded shape handle
+ mTmpRect.bottom = (int) Math.min(mTmpRect.bottom, mSlideableView.getTop() + getResources().getDisplayMetrics().density * 68); // + 60
+ // cause of
+ // the
+ // rounded
+ // shape
+ // handle
canvas.clipRect(mTmpRect);
if (mSlideOffset < 1) {
drawScrim = true;