diff --git a/res/layout/activity_sflphone_home.xml b/res/layout/activity_sflphone_home.xml index f13a251df117f0087fa5ac18f15dcc6ae0c87150..3c4e06237f902cbadf7bcb7eb936221317424316 100644 --- a/res/layout/activity_sflphone_home.xml +++ b/res/layout/activity_sflphone_home.xml @@ -83,7 +83,10 @@ as that of the covered work. <FrameLayout android:id="@+id/contacts_frame" android:layout_width="match_parent" - android:layout_height="match_parent" /> + android:layout_height="match_parent" + android:focusableInTouchMode="true" + android:focusable="true" + android:clickable="true" /> </org.sflphone.views.SlidingUpPanelLayout> <FrameLayout diff --git a/res/layout/frag_contact_list.xml b/res/layout/frag_contact_list.xml index a668315684b187c7946e52b10f9672e10f864515..3ffebaa7030c8c31e4407b43a8631e3e16cf7e24 100644 --- a/res/layout/frag_contact_list.xml +++ b/res/layout/frag_contact_list.xml @@ -32,6 +32,7 @@ as that of the covered work. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/drag_view" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > diff --git a/src/org/sflphone/client/HomeActivity.java b/src/org/sflphone/client/HomeActivity.java index 854420f8ff560f7bb6e4560383e2336b511b9fed..1bd426756f10cfb49a2557a3cac768217cc15ad5 100644 --- a/src/org/sflphone/client/HomeActivity.java +++ b/src/org/sflphone/client/HomeActivity.java @@ -64,7 +64,6 @@ import android.content.IntentFilter; 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 @@ public class HomeActivity extends Activity implements DialingFragment.Callbacks, 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 @@ public class HomeActivity extends Activity implements DialingFragment.Callbacks, } }); - // 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 @@ public class HomeActivity extends Activity implements DialingFragment.Callbacks, } }; - // mTabHost = (TabHost) findViewById(android.R.id.tabhost); mNavigationDrawer.setDrawerListener(mDrawerToggle); } @@ -576,8 +571,11 @@ public class HomeActivity extends Activity implements DialingFragment.Callbacks, } @Override - public void openDrawer() { - mContactDrawer.expandPane(); + public void toggleDrawer() { + if (mContactDrawer.isExpanded()) + mContactDrawer.collapsePane(); + else + mContactDrawer.expandPane(); } @Override @@ -615,19 +613,20 @@ public class HomeActivity extends Activity implements DialingFragment.Callbacks, 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 28c0407606ba0ee43b771ffae9c2c0f16e565fc8..f6f57a4a3867f03ea34304933a1e844c4e3811a2 100644 --- a/src/org/sflphone/fragments/ContactListFragment.java +++ b/src/org/sflphone/fragments/ContactListFragment.java @@ -43,7 +43,6 @@ import org.sflphone.service.ISipService; 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.provider.ContactsContract.Contacts; 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 @@ public class ContactListFragment extends Fragment implements OnQueryTextListener 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 @@ public class ContactListFragment extends Fragment implements OnQueryTextListener } @Override - public void openDrawer() { + public void toggleDrawer() { + } + + @Override + public void setDragView(RelativeLayout relativeLayout) { + } }; @@ -142,10 +138,12 @@ public class ContactListFragment extends Fragment implements OnQueryTextListener void onContactDragged(); - void openDrawer(); + void toggleDrawer(); void onEditContact(CallContact item); + void setDragView(RelativeLayout relativeLayout); + } @Override @@ -156,6 +154,7 @@ public class ContactListFragment extends Fragment implements OnQueryTextListener } mCallbacks = (Callbacks) activity; + } @Override @@ -169,7 +168,15 @@ public class ContactListFragment extends Fragment implements OnQueryTextListener 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 @@ public class ContactListFragment extends Fragment implements OnQueryTextListener 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 @@ public class ContactListFragment extends Fragment implements OnQueryTextListener } }; - private SwipeListViewTouchListener mSwipeLvTouchListener; - private View mPlaceHolder; - private LinearLayout mHeader; private void setGridViewListeners() { mStarredGrid.setOnDragListener(dragListener); @@ -264,18 +278,6 @@ public class ContactListFragment extends Fragment implements OnQueryTextListener 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 @@ public class ContactListFragment extends Fragment implements OnQueryTextListener @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 @@ public class ContactListFragment extends Fragment implements OnQueryTextListener 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 e53ab793555f92227966effdd0975cbf5684c703..2ebf02f7224f2a841abad366f3c2bc1f3b0674ad 100644 --- a/src/org/sflphone/views/SlidingUpPanelLayout.java +++ b/src/org/sflphone/views/SlidingUpPanelLayout.java @@ -555,11 +555,13 @@ public class SlidingUpPanelLayout extends ViewGroup { 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 @@ public class SlidingUpPanelLayout extends ViewGroup { mDragViewHit = isDragViewHit((int) x, (int) y); if (mDragViewHit && !mIsUsingDragViewTouchEvents) { + Log.i(TAG, "interceptTap = true;"); interceptTap = true; } break; @@ -601,6 +604,7 @@ public class SlidingUpPanelLayout extends ViewGroup { if (ady > dragSlop && adx > ady) { mDragHelper.cancel(); mIsUnableToDrag = true; + Log.i(TAG, "mIsUnableToDrag = true;"); return false; } break; @@ -773,7 +777,12 @@ public class SlidingUpPanelLayout extends ViewGroup { 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;