Эх сурвалжийг харах

Revert "Some progress on fixing bugs"

This reverts commit ed363f55b81946e7fcc5b0ccf408de3b96087620.
Mario Danic 8 жил өмнө
parent
commit
faf75674a6

+ 1 - 1
AndroidManifest.xml

@@ -99,7 +99,7 @@
         </activity>
         <activity
             android:name=".ui.preview.PreviewImageActivity"
-            android:theme="@style/Theme.ownCloud.Overlay" />
+            android:theme="@style/Theme.ownCloud" />
         <activity
             android:name=".ui.preview.PreviewVideoActivity"
             android:label="@string/app_name"

+ 1 - 3
res/layout/preview_image_fragment.xml

@@ -47,9 +47,7 @@
     <RelativeLayout
         android:id="@+id/multi_view"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_centerInParent="true"
-        android:layout_margin="@dimen/zero">
+        android:layout_height="match_parent">
 
         <ScrollView
             android:layout_width="match_parent"

+ 2 - 0
res/values/styles.xml

@@ -120,6 +120,7 @@
 	<!-- separat translucent action bar style -->
 	<style name="Theme.ownCloud.Overlay" parent="style/Theme.ownCloud">
 		<item name="android:actionBarStyle">@style/Theme.ownCloud.Overlay.ActionBar</item>
+		<item name="windowActionBarOverlay">true</item>
 		<!-- Support library compatibility -->
 		<item name="actionBarStyle">@style/Theme.ownCloud.Overlay.ActionBar</item>
 	</style>
@@ -127,6 +128,7 @@
 	<!-- ACTION BAR STYLES -->
 	<style name="Theme.ownCloud.Overlay.ActionBar" parent="@style/Widget.AppCompat.ActionBar">
 		<item name="android:background">@color/owncloud_blue_transparent</item>
+		<item name="android:windowActionBarOverlay">true</item>
 
 		<!-- Support library compatibility -->
 		<item name="background">@color/owncloud_blue_transparent</item>

+ 8 - 8
src/com/owncloud/android/operations/DownloadFileOperation.java

@@ -21,12 +21,15 @@
 
 package com.owncloud.android.operations;
 
-import android.accounts.Account;
-import android.webkit.MimeTypeMap;
+import java.io.File;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
+import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.operations.OperationCancelledException;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
@@ -34,11 +37,8 @@ import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.files.DownloadRemoteFileOperation;
 import com.owncloud.android.utils.FileStorageUtils;
 
-import java.io.File;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
+import android.accounts.Account;
+import android.webkit.MimeTypeMap;
 
 /**
  * Remote mDownloadOperation performing the download of a file to an ownCloud server

+ 69 - 27
src/com/owncloud/android/ui/preview/PreviewImageActivity.java

@@ -26,14 +26,14 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
-import android.os.Build;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.support.v4.view.ViewPager;
 import android.support.v4.widget.DrawerLayout;
+import android.support.v7.app.ActionBar;
 import android.view.MenuItem;
 import android.view.View;
-import android.view.WindowManager;
+import android.view.Window;
 
 import com.ortiz.touch.ExtendedViewPager;
 import com.owncloud.android.MainApp;
@@ -66,6 +66,8 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 public class PreviewImageActivity extends FileActivity implements
         FileFragment.ContainerActivity,
         ViewPager.OnPageChangeListener, OnRemoteOperationListener {
+    
+    public static final int DIALOG_SHORT_WAIT = 0;
 
     public static final String TAG = PreviewImageActivity.class.getSimpleName();
     
@@ -73,6 +75,8 @@ public class PreviewImageActivity extends FileActivity implements
     private static final String KEY_WAITING_FOR_BINDER = "WAITING_FOR_BINDER";
     private static final String KEY_SYSTEM_VISIBLE = "TRUE";
 
+    private static final int INITIAL_HIDE_DELAY = 0; // immediate hide
+
     private ExtendedViewPager mViewPager;
     private PreviewImagePagerAdapter mPreviewImagePagerAdapter;
     private int mSavedPosition = 0;
@@ -81,38 +85,54 @@ public class PreviewImageActivity extends FileActivity implements
     private boolean mRequestWaitingForBinder;
     
     private DownloadFinishReceiver mDownloadFinishReceiver;
+    
+    private View mFullScreenAnchorView;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        if (Build.VERSION.SDK_INT < 16) {
-            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
-        } else {
-            View decorView = getWindow().getDecorView();
-            // Hide the status bar.
-            int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
+        requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
 
-            decorView.setSystemUiVisibility(uiOptions);
-        }
-
-        if (savedInstanceState != null && !savedInstanceState.getBoolean(KEY_SYSTEM_VISIBLE, true)) {
-            toggleFullScreen();
-        }
+        super.onCreate(savedInstanceState);
 
         setContentView(R.layout.preview_image_activity);
 
         // Navigation Drawer
         setupDrawer();
 
+        // ActionBar
+        ActionBar actionBar = getSupportActionBar();
+        updateActionBarTitleAndHomeButton(null);
+
+        mFullScreenAnchorView = getWindow().getDecorView();
+        // to keep our UI controls visibility in line with system bars visibility
+        mFullScreenAnchorView.setOnSystemUiVisibilityChangeListener
+                (new View.OnSystemUiVisibilityChangeListener() {
+                    @SuppressLint("InlinedApi")
+                    @Override
+                    public void onSystemUiVisibilityChange(int flags) {
+                        boolean visible = (flags & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0;
+                        ActionBar actionBar = getSupportActionBar();
+                        if (visible) {
+                            actionBar.show();
+                            setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
+                        } else {
+                            actionBar.hide();
+                            setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
+                        }
+                    }
+                });
+         
         if (savedInstanceState != null) {
             mRequestWaitingForBinder = savedInstanceState.getBoolean(KEY_WAITING_FOR_BINDER);
+            if (!savedInstanceState.getBoolean(KEY_SYSTEM_VISIBLE, true)) {
+                hideSystemUI(mFullScreenAnchorView);
+            }
         } else {
             mRequestWaitingForBinder = false;
         }
         
     }
-    
+
     private void initViewPager() {
         // get parent from path
         String parentPath = getFile().getRemotePath().substring(0,
@@ -404,22 +424,23 @@ public class PreviewImageActivity extends FileActivity implements
     }
 
     public boolean getSystemUIVisible() {
-        if (getSupportActionBar() != null && getSupportActionBar().isShowing()) {
-            return true;
-        } else {
-            return false;
-        }
+        return (mFullScreenAnchorView.getSystemUiVisibility() & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0;
     }
 
     @SuppressLint("InlinedApi")
     public void toggleFullScreen() {
 
-        if (getSupportActionBar() != null && getSupportActionBar().isShowing()) {
-            getSupportActionBar().hide();
-            setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
+        boolean visible = (mFullScreenAnchorView.getSystemUiVisibility()
+                & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0;
+
+        if (visible) {
+            hideSystemUI(mFullScreenAnchorView);
+            // actionBar.hide(); // propagated through
+            // OnSystemUiVisibilityChangeListener()
         } else {
-            getSupportActionBar().show();
-            setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
+            showSystemUI(mFullScreenAnchorView);
+            // actionBar.show(); // propagated through
+            // OnSystemUiVisibilityChangeListener()
         }
     }
 
@@ -468,4 +489,25 @@ public class PreviewImageActivity extends FileActivity implements
         
     }
     
+    
+    @SuppressLint("InlinedApi")
+	private void hideSystemUI(View anchorView) {
+        anchorView.setSystemUiVisibility(
+                View.SYSTEM_UI_FLAG_HIDE_NAVIGATION         // hides NAVIGATION BAR; Android >= 4.0
+            |   View.SYSTEM_UI_FLAG_FULLSCREEN              // hides STATUS BAR;     Android >= 4.1
+            |   View.SYSTEM_UI_FLAG_IMMERSIVE               // stays interactive;    Android >= 4.4
+            |   View.SYSTEM_UI_FLAG_LAYOUT_STABLE           // draw full window;     Android >= 4.1
+            |   View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN       // draw full window;     Android >= 4.1
+            |   View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION  // draw full window;     Android >= 4.1
+        );
+    }
+    
+    @SuppressLint("InlinedApi")
+    private void showSystemUI(View anchorView) {
+        anchorView.setSystemUiVisibility(
+                View.SYSTEM_UI_FLAG_LAYOUT_STABLE           // draw full window;     Android >= 4.1
+            |   View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN       // draw full window;     Android >= 4.1
+            |   View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION  // draw full window;     Android >= 4.1
+        );
+    }
 }

+ 6 - 10
src/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@ -98,8 +98,6 @@ public class PreviewImageFragment extends FileFragment {
 
     private LoadBitmapTask mLoadBitmapTask = null;
 
-    private View primaryView;
-
     /**
      * Public factory method to create a new fragment that previews an image.
      *
@@ -161,11 +159,11 @@ public class PreviewImageFragment extends FileFragment {
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                              Bundle savedInstanceState) {
         super.onCreateView(inflater, container, savedInstanceState);
-        primaryView = inflater.inflate(R.layout.preview_image_fragment, container, false);
-        mImageView = (TouchImageViewCustom) primaryView.findViewById(R.id.image);
+        View view = inflater.inflate(R.layout.preview_image_fragment, container, false);
+        mImageView = (TouchImageViewCustom) view.findViewById(R.id.image);
         mImageView.setVisibility(View.GONE);
 
-        primaryView.setOnClickListener(new OnClickListener() {
+        view.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {
                 ((PreviewImageActivity) getActivity()).toggleFullScreen();
@@ -181,12 +179,12 @@ public class PreviewImageFragment extends FileFragment {
             }
         });
         
-        mMultiView = (RelativeLayout) primaryView.findViewById(R.id.multi_view);
+        mMultiView = (RelativeLayout) view.findViewById(R.id.multi_view);
 
-        setupMultiView(primaryView);
+        setupMultiView(view);
         setMultiListLoadingMessage();
 
-        return primaryView;
+        return view;
     }
 
     protected void setupMultiView(View view) {
@@ -560,8 +558,6 @@ public class PreviewImageFragment extends FileFragment {
         private void showErrorMessage() {
             mImageView.setBackgroundColor(Color.TRANSPARENT);
             setMessageForMultiList(mErrorMessageId, R.string.preview_sorry, R.drawable.file_image);
-            primaryView.setOnClickListener(null);
-            mImageView.setOnClickListener(null);
         }
     }