tobiasKaminsky 9 years ago
parent
commit
37089597b0
1 changed files with 59 additions and 0 deletions
  1. 59 0
      src/com/owncloud/android/ui/fragment/ExtendedListFragment.java

+ 59 - 0
src/com/owncloud/android/ui/fragment/ExtendedListFragment.java

@@ -26,8 +26,11 @@ import android.support.annotation.StringRes;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.Fragment;
 import android.support.v4.view.MenuItemCompat;
 import android.support.v4.view.MenuItemCompat;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v4.widget.SwipeRefreshLayout;
+import android.view.GestureDetector;
 import android.support.v7.widget.SearchView;
 import android.support.v7.widget.SearchView;
 import android.view.LayoutInflater;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.ScaleGestureDetector;
 import android.view.Menu;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.MenuItem;
@@ -44,6 +47,7 @@ import android.widget.TextView;
 
 
 import com.getbase.floatingactionbutton.FloatingActionButton;
 import com.getbase.floatingactionbutton.FloatingActionButton;
 import com.getbase.floatingactionbutton.FloatingActionsMenu;
 import com.getbase.floatingactionbutton.FloatingActionsMenu;
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.R;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.ExtendedListView;
 import com.owncloud.android.ui.ExtendedListView;
@@ -68,6 +72,8 @@ public class ExtendedListFragment extends Fragment
     private static final String KEY_EMPTY_LIST_MESSAGE = "EMPTY_LIST_MESSAGE";
     private static final String KEY_EMPTY_LIST_MESSAGE = "EMPTY_LIST_MESSAGE";
     private static final String KEY_IS_GRID_VISIBLE = "IS_GRID_VISIBLE";
     private static final String KEY_IS_GRID_VISIBLE = "IS_GRID_VISIBLE";
 
 
+    private ScaleGestureDetector SGD = null;
+
     protected SwipeRefreshLayout mRefreshListLayout;
     protected SwipeRefreshLayout mRefreshListLayout;
     private SwipeRefreshLayout mRefreshGridLayout;
     private SwipeRefreshLayout mRefreshGridLayout;
     protected SwipeRefreshLayout mRefreshEmptyLayout;
     protected SwipeRefreshLayout mRefreshEmptyLayout;
@@ -98,6 +104,9 @@ public class ExtendedListFragment extends Fragment
 
 
     private FilterableListAdapter mAdapter;
     private FilterableListAdapter mAdapter;
 
 
+p   private float scale = -1f;
+    private GestureDetector gestureDetector;
+
     protected void setListAdapter(FilterableListAdapter listAdapter) {
     protected void setListAdapter(FilterableListAdapter listAdapter) {
         mAdapter = listAdapter;
         mAdapter = listAdapter;
         mCurrentListView.setAdapter(listAdapter);
         mCurrentListView.setAdapter(listAdapter);
@@ -184,6 +193,33 @@ public class ExtendedListFragment extends Fragment
 
 
         mGridFooterView = inflater.inflate(R.layout.list_footer, null, false);
         mGridFooterView = inflater.inflate(R.layout.list_footer, null, false);
 
 
+        SGD = new ScaleGestureDetector(MainApp.getAppContext(),new ScaleListener());
+//        gestureDetector = new GestureDetector(MainApp.getAppContext(), new SingleTapConfirm());
+
+        mGridView.setOnTouchListener(new View.OnTouchListener() {
+            @Override
+            public boolean onTouch(View view, MotionEvent motionEvent) {
+//                if (SGD.onTouchEvent(motionEvent)) {
+//                    return false;
+//                }
+//                return false;
+
+                SGD.onTouchEvent(motionEvent);
+                return false;
+            }
+        });
+
+        if (savedInstanceState != null) {
+            int referencePosition = savedInstanceState.getInt(KEY_SAVED_LIST_POSITION);
+            if (mCurrentListView == mListView) {
+                Log_OC.v(TAG, "Setting and centering around list position " + referencePosition);
+                mListView.setAndCenterSelection(referencePosition);
+            } else {
+                Log_OC.v(TAG, "Setting grid position " + referencePosition);
+                mGridView.setSelection(referencePosition);
+            }
+        }
+
         // Pull-down to refresh layout
         // Pull-down to refresh layout
         mRefreshListLayout = (SwipeRefreshLayout) v.findViewById(R.id.swipe_containing_list);
         mRefreshListLayout = (SwipeRefreshLayout) v.findViewById(R.id.swipe_containing_list);
         mRefreshGridLayout = (SwipeRefreshLayout) v.findViewById(R.id.swipe_containing_grid);
         mRefreshGridLayout = (SwipeRefreshLayout) v.findViewById(R.id.swipe_containing_grid);
@@ -219,6 +255,29 @@ public class ExtendedListFragment extends Fragment
         return v;
         return v;
     }
     }
 
 
+    private class SingleTapConfirm extends GestureDetector.SimpleOnGestureListener {
+        @Override
+        public boolean onSingleTapUp(MotionEvent e) {
+            return true;
+        }
+    }
+
+    private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
+        @Override
+        public boolean onScale(ScaleGestureDetector detector) {
+            if (scale == -1f){
+                mGridView.setNumColumns(GridView.AUTO_FIT);
+                scale = mGridView.getNumColumns();
+            }
+            scale *= 1-(detector.getScaleFactor()- 1);
+            scale = Math.max(2.0f, Math.min(scale, 10.0f));
+            Integer scaleInt = Math.round(scale);
+            mGridView.setNumColumns(scaleInt);
+
+            return true;
+        }
+    }
+
     protected void setupEmptyList(View view) {
     protected void setupEmptyList(View view) {
         mEmptyListContainer = (LinearLayout) view.findViewById(R.id.empty_list_view);
         mEmptyListContainer = (LinearLayout) view.findViewById(R.id.empty_list_view);
         mEmptyListMessage = (TextView) view.findViewById(R.id.empty_list_view_text);
         mEmptyListMessage = (TextView) view.findViewById(R.id.empty_list_view_text);