-/* ownCloud Android client application
- * Copyright (C) 2012-2013 ownCloud Inc.
+/**
+ * ownCloud Android client application
+ *
+ * @author David A. Velasco
+ * Copyright (C) 2015 ownCloud Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
- * This program is distributed in the hope that it will be useful,
+ * This program is distributed in the hd that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
package com.owncloud.android.ui.preview;
+import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
-import android.media.MediaScannerConnection;
-import android.media.MediaScannerConnection.OnScanCompletedListener;
-import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
+import android.os.Handler;
import android.os.IBinder;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
+import android.os.Message;
+import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
-import android.view.MotionEvent;
+import android.support.v4.widget.DrawerLayout;
+import android.support.v7.app.ActionBar;
+import android.view.MenuItem;
import android.view.View;
-import android.view.View.OnTouchListener;
+import android.view.Window;
-import com.actionbarsherlock.app.ActionBar;
-import com.actionbarsherlock.view.MenuItem;
-import com.actionbarsherlock.view.Window;
-import com.owncloud.android.Log_OC;
+import com.ortiz.touch.ExtendedViewPager;
import com.owncloud.android.R;
import com.owncloud.android.authentication.AccountUtils;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.files.services.FileDownloader;
-import com.owncloud.android.files.services.FileUploader;
import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
+import com.owncloud.android.files.services.FileUploader;
import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
+import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;
+import com.owncloud.android.lib.common.operations.RemoteOperation;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
+import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.operations.CreateShareOperation;
+import com.owncloud.android.operations.RemoveFileOperation;
+import com.owncloud.android.operations.UnshareLinkOperation;
import com.owncloud.android.ui.activity.FileActivity;
import com.owncloud.android.ui.activity.FileDisplayActivity;
-import com.owncloud.android.ui.dialog.LoadingDialog;
import com.owncloud.android.ui.fragment.FileFragment;
+import com.owncloud.android.utils.DisplayUtils;
/**
* Holds a swiping galley where image files contained in an ownCloud directory are shown
- *
- * @author David A. Velasco
*/
-public class PreviewImageActivity extends FileActivity implements FileFragment.ContainerActivity, ViewPager.OnPageChangeListener, OnTouchListener {
+public class PreviewImageActivity extends FileActivity implements
+ FileFragment.ContainerActivity,
+ ViewPager.OnPageChangeListener, OnRemoteOperationListener {
public static final int DIALOG_SHORT_WAIT = 0;
public static final String KEY_WAITING_TO_PREVIEW = "WAITING_TO_PREVIEW";
private static final String KEY_WAITING_FOR_BINDER = "WAITING_FOR_BINDER";
-
- private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT";
-
- private FileDataStorageManager mStorageManager;
-
- private ViewPager mViewPager;
- private PreviewImagePagerAdapter mPreviewImagePagerAdapter;
-
- private FileDownloaderBinder mDownloaderBinder = null;
- private ServiceConnection mDownloadConnection, mUploadConnection = null;
- private FileUploaderBinder mUploaderBinder = null;
+ private static final int INITIAL_HIDE_DELAY = 0; // immediate hide
+
+ private ExtendedViewPager mViewPager;
+ private PreviewImagePagerAdapter mPreviewImagePagerAdapter;
+ private int mSavedPosition = 0;
+ private boolean mHasSavedPosition = false;
+
private boolean mRequestWaitingForBinder;
private DownloadFinishReceiver mDownloadFinishReceiver;
-
- private boolean mFullScreen;
+ private View mFullScreenAnchorView;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
+ requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
+
super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
setContentView(R.layout.preview_image_activity);
-
+
+ // Navigation Drawer
+ initDrawer();
+
+ // ActionBar
ActionBar actionBar = getSupportActionBar();
- actionBar.setDisplayHomeAsUpEnabled(true);
+ actionBar.setIcon(DisplayUtils.getSeasonalIconId());
+ updateActionBarTitleAndHomeButton(null);
actionBar.hide();
+
+
+ // Make sure we're running on Honeycomb or higher to use FullScreen and
+ // Immersive Mode
+ if (isHoneycombOrHigher()) {
- mFullScreen = true;
+ 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();
+ mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
+ } else {
+ actionBar.hide();
+ mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
+ }
+ }
+ });
+
+ }
+
if (savedInstanceState != null) {
mRequestWaitingForBinder = savedInstanceState.getBoolean(KEY_WAITING_FOR_BINDER);
} else {
private void initViewPager() {
// get parent from path
- String parentPath = getFile().getRemotePath().substring(0, getFile().getRemotePath().lastIndexOf(getFile().getFileName()));
- OCFile parentFolder = mStorageManager.getFileByPath(parentPath);
- //OCFile parentFolder = mStorageManager.getFileById(getFile().getParentId());
+ String parentPath = getFile().getRemotePath().substring(0,
+ getFile().getRemotePath().lastIndexOf(getFile().getFileName()));
+ OCFile parentFolder = getStorageManager().getFileByPath(parentPath);
if (parentFolder == null) {
// should not be necessary
- parentFolder = mStorageManager.getFileByPath(OCFile.ROOT_PATH);
+ parentFolder = getStorageManager().getFileByPath(OCFile.ROOT_PATH);
}
- mPreviewImagePagerAdapter = new PreviewImagePagerAdapter(getSupportFragmentManager(), parentFolder, getAccount(), mStorageManager);
- mViewPager = (ViewPager) findViewById(R.id.fragmentPager);
- int position = mPreviewImagePagerAdapter.getFilePosition(getFile());
+
+ // TODO Enable when "On Device" is recovered ?
+ mPreviewImagePagerAdapter = new PreviewImagePagerAdapter(getSupportFragmentManager(),
+ parentFolder, getAccount(), getStorageManager()/*, MainApp.getOnlyOnDevice()*/);
+
+ mViewPager = (ExtendedViewPager) findViewById(R.id.fragmentPager);
+ int position = mHasSavedPosition ? mSavedPosition :
+ mPreviewImagePagerAdapter.getFilePosition(getFile());
position = (position >= 0) ? position : 0;
mViewPager.setAdapter(mPreviewImagePagerAdapter);
mViewPager.setOnPageChangeListener(this);
mViewPager.setCurrentItem(position);
if (position == 0 && !getFile().isDown()) {
- // this is necessary because mViewPager.setCurrentItem(0) just after setting the adapter does not result in a call to #onPageSelected(0)
+ // this is necessary because mViewPager.setCurrentItem(0) just after setting the
+ // adapter does not result in a call to #onPageSelected(0)
mRequestWaitingForBinder = true;
}
}
+ protected void onPostCreate(Bundle savedInstanceState) {
+ super.onPostCreate(savedInstanceState);
+
+ // Trigger the initial hide() shortly after the activity has been
+ // created, to briefly hint to the user that UI controls
+ // are available
+ delayedHide(INITIAL_HIDE_DELAY);
+
+ }
+
+ Handler mHideSystemUiHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ if (isHoneycombOrHigher()) {
+ hideSystemUI(mFullScreenAnchorView);
+ }
+ getSupportActionBar().hide();
+ }
+ };
+
+ private void delayedHide(int delayMillis) {
+ mHideSystemUiHandler.removeMessages(0);
+ mHideSystemUiHandler.sendEmptyMessageDelayed(0, delayMillis);
+ }
+
+
+ /// handle Window Focus changes
+ @Override
+ public void onWindowFocusChanged(boolean hasFocus) {
+ super.onWindowFocusChanged(hasFocus);
+
+ // When the window loses focus (e.g. the action overflow is shown),
+ // cancel any pending hide action.
+ if (!hasFocus) {
+ mHideSystemUiHandler.removeMessages(0);
+ }
+ }
+
+
+
@Override
public void onStart() {
super.onStart();
- mDownloadConnection = new PreviewImageServiceConnection();
- bindService(new Intent(this, FileDownloader.class), mDownloadConnection, Context.BIND_AUTO_CREATE);
- mUploadConnection = new PreviewImageServiceConnection();
- bindService(new Intent(this, FileUploader.class), mUploadConnection, Context.BIND_AUTO_CREATE);
}
@Override
outState.putBoolean(KEY_WAITING_FOR_BINDER, mRequestWaitingForBinder);
}
+ @Override
+ public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationResult result) {
+ super.onRemoteOperationFinish(operation, result);
+
+ if (operation instanceof CreateShareOperation) {
+ onCreateShareOperationFinish((CreateShareOperation) operation, result);
+
+ } else if (operation instanceof UnshareLinkOperation) {
+ onUnshareLinkOperationFinish((UnshareLinkOperation) operation, result);
+
+ } else if (operation instanceof RemoveFileOperation) {
+ finish();
+ }
+ }
+
+
+ private void onUnshareLinkOperationFinish(UnshareLinkOperation operation,
+ RemoteOperationResult result) {
+ if (result.isSuccess()) {
+ OCFile file = getStorageManager().getFileByPath(getFile().getRemotePath());
+ if (file != null) {
+ setFile(file);
+ }
+ invalidateOptionsMenu();
+ } else if (result.getCode() == ResultCode.SHARE_NOT_FOUND) {
+ backToDisplayActivity();
+ }
+
+ }
+
+ private void onCreateShareOperationFinish(CreateShareOperation operation,
+ RemoteOperationResult result) {
+ if (result.isSuccess()) {
+ OCFile file = getStorageManager().getFileByPath(getFile().getRemotePath());
+ if (file != null) {
+ setFile(file);
+ }
+ invalidateOptionsMenu();
+ }
+ }
+
+ @Override
+ protected ServiceConnection newTransferenceServiceConnection() {
+ return new PreviewImageServiceConnection();
+ }
/** Defines callbacks for service binding, passed to bindService() */
private class PreviewImageServiceConnection implements ServiceConnection {
@Override
public void onServiceConnected(ComponentName component, IBinder service) {
- if (component.equals(new ComponentName(PreviewImageActivity.this, FileDownloader.class))) {
+ if (component.equals(new ComponentName(PreviewImageActivity.this,
+ FileDownloader.class))) {
mDownloaderBinder = (FileDownloaderBinder) service;
if (mRequestWaitingForBinder) {
mRequestWaitingForBinder = false;
- Log_OC.d(TAG, "Simulating reselection of current page after connection of download binder");
+ Log_OC.d(TAG, "Simulating reselection of current page after connection " +
+ "of download binder");
onPageSelected(mViewPager.getCurrentItem());
}
- } else if (component.equals(new ComponentName(PreviewImageActivity.this, FileUploader.class))) {
+ } else if (component.equals(new ComponentName(PreviewImageActivity.this,
+ FileUploader.class))) {
Log_OC.d(TAG, "Upload service connected");
mUploaderBinder = (FileUploaderBinder) service;
} else {
@Override
public void onServiceDisconnected(ComponentName component) {
- if (component.equals(new ComponentName(PreviewImageActivity.this, FileDownloader.class))) {
+ if (component.equals(new ComponentName(PreviewImageActivity.this,
+ FileDownloader.class))) {
Log_OC.d(TAG, "Download service suddenly disconnected");
mDownloaderBinder = null;
- } else if (component.equals(new ComponentName(PreviewImageActivity.this, FileUploader.class))) {
+ } else if (component.equals(new ComponentName(PreviewImageActivity.this,
+ FileUploader.class))) {
Log_OC.d(TAG, "Upload service suddenly disconnected");
mUploaderBinder = null;
}
@Override
public void onStop() {
super.onStop();
- if (mDownloadConnection != null) {
- unbindService(mDownloadConnection);
- mDownloadConnection = null;
- }
- if (mUploadConnection != null) {
- unbindService(mUploadConnection);
- mUploadConnection = null;
- }
}
super.onDestroy();
}
-
@Override
public boolean onOptionsItemSelected(MenuItem item) {
boolean returnValue = false;
switch(item.getItemId()){
case android.R.id.home:
- backToDisplayActivity();
+ if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
+ mDrawerLayout.closeDrawer(GravityCompat.START);
+ } else {
+ backToDisplayActivity();
+ }
returnValue = true;
break;
default:
@Override
protected void onResume() {
super.onResume();
- //Log.e(TAG, "ACTIVITY, ONRESUME");
+
mDownloadFinishReceiver = new DownloadFinishReceiver();
IntentFilter filter = new IntentFilter(FileDownloader.getDownloadFinishMessage());
@Override
protected void onPostResume() {
- //Log.e(TAG, "ACTIVITY, ONPOSTRESUME");
super.onPostResume();
}
@Override
public void onPause() {
+ if (mDownloadFinishReceiver != null){
+ unregisterReceiver(mDownloadFinishReceiver);
+ mDownloadFinishReceiver = null;
+ }
+
super.onPause();
- unregisterReceiver(mDownloadFinishReceiver);
- mDownloadFinishReceiver = null;
}
finish();
}
- /**
- * Show loading dialog
- */
- public void showLoadingDialog() {
- // Construct dialog
- LoadingDialog loading = new LoadingDialog(getResources().getString(R.string.wait_a_moment));
- FragmentManager fm = getSupportFragmentManager();
- FragmentTransaction ft = fm.beginTransaction();
- loading.show(ft, DIALOG_WAIT_TAG);
-
- }
-
- /**
- * Dismiss loading dialog
- */
- public void dismissLoadingDialog(){
- Fragment frag = getSupportFragmentManager().findFragmentByTag(DIALOG_WAIT_TAG);
- if (frag != null) {
- LoadingDialog loading = (LoadingDialog) frag;
- loading.dismiss();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void onFileStateChanged() {
- // nothing to do here!
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public FileDownloaderBinder getFileDownloaderBinder() {
- return mDownloaderBinder;
- }
-
-
- @Override
- public FileUploaderBinder getFileUploaderBinder() {
- return mUploaderBinder;
- }
-
-
@Override
public void showDetails(OCFile file) {
Intent showDetailsIntent = new Intent(this, FileDisplayActivity.class);
showDetailsIntent.setAction(FileDisplayActivity.ACTION_DETAILS);
showDetailsIntent.putExtra(FileActivity.EXTRA_FILE, file);
- showDetailsIntent.putExtra(FileActivity.EXTRA_ACCOUNT, AccountUtils.getCurrentOwnCloudAccount(this));
+ showDetailsIntent.putExtra(FileActivity.EXTRA_ACCOUNT,
+ AccountUtils.getCurrentOwnCloudAccount(this));
startActivity(showDetailsIntent);
int pos = mPreviewImagePagerAdapter.getFilePosition(file);
file = mPreviewImagePagerAdapter.getFileAt(pos);
}
/**
- * This method will be invoked when a new page becomes selected. Animation is not necessarily complete.
+ * This method will be invoked when a new page becomes selected. Animation is not necessarily
+ * complete.
*
- * @param Position Position index of the new selected page
+ * @param position Position index of the new selected page
*/
@Override
public void onPageSelected(int position) {
+ mSavedPosition = position;
+ mHasSavedPosition = true;
if (mDownloaderBinder == null) {
mRequestWaitingForBinder = true;
} else {
OCFile currentFile = mPreviewImagePagerAdapter.getFileAt(position);
getSupportActionBar().setTitle(currentFile.getFileName());
+ mDrawerToggle.setDrawerIndicatorEnabled(false);
if (!currentFile.isDown()) {
if (!mPreviewImagePagerAdapter.pendingErrorAt(position)) {
requestForDownload(currentFile);
}
}
+
+ // Call to reset image zoom to initial state
+ ((PreviewImagePagerAdapter) mViewPager.getAdapter()).resetZoom();
}
+
}
/**
* Called when the scroll state changes. Useful for discovering when the user begins dragging,
* when the pager is automatically settling to the current page. when it is fully stopped/idle.
*
- * @param State The new scroll state (SCROLL_STATE_IDLE, _DRAGGING, _SETTLING
+ * @param state The new scroll state (SCROLL_STATE_IDLE, _DRAGGING, _SETTLING
*/
@Override
public void onPageScrollStateChanged(int state) {
}
/**
- * This method will be invoked when the current page is scrolled, either as part of a programmatically
- * initiated smooth scroll or a user initiated touch scroll.
+ * This method will be invoked when the current page is scrolled, either as part of a
+ * programmatically initiated smooth scroll or a user initiated touch scroll.
*
* @param position Position index of the first page currently being displayed.
- * Page position+1 will be visible if positionOffset is nonzero.
+ * Page position+1 will be visible if positionOffset is
+ * nonzero.
*
- * @param positionOffset Value from [0, 1) indicating the offset from the page at position.
+ * @param positionOffset Value from [0, 1) indicating the offset from the page
+ * at position.
* @param positionOffsetPixels Value in pixels indicating the offset from position.
*/
@Override
/**
- * Class waiting for broadcast events from the {@link FielDownloader} service.
+ * Class waiting for broadcast events from the {@link FileDownloader} service.
*
* Updates the UI when a download is started or finished, provided that it is relevant for the
* folder displayed in the gallery.
public void onReceive(Context context, Intent intent) {
String accountName = intent.getStringExtra(FileDownloader.ACCOUNT_NAME);
String downloadedRemotePath = intent.getStringExtra(FileDownloader.EXTRA_REMOTE_PATH);
-
-
-
if (getAccount().name.equals(accountName) &&
downloadedRemotePath != null) {
- final OCFile file = mStorageManager.getFileByPath(downloadedRemotePath);
+ OCFile file = getStorageManager().getFileByPath(downloadedRemotePath);
int position = mPreviewImagePagerAdapter.getFilePosition(file);
- boolean downloadWasFine = intent.getBooleanExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, false);
- //boolean isOffscreen = Math.abs((mViewPager.getCurrentItem() - position)) <= mViewPager.getOffscreenPageLimit();
+ boolean downloadWasFine = intent.getBooleanExtra(
+ FileDownloader.EXTRA_DOWNLOAD_RESULT, false);
+ //boolean isOffscreen = Math.abs((mViewPager.getCurrentItem() - position))
+ // <= mViewPager.getOffscreenPageLimit();
- if (downloadWasFine){
- // Trigger Mediascan
- MediaScannerConnection.scanFile(
- context,
- new String[]{file.getStoragePath()},
- null,null);
- }
-
- if (position >= 0 && intent.getAction().equals(FileDownloader.getDownloadFinishMessage())) {
+ if (position >= 0 &&
+ intent.getAction().equals(FileDownloader.getDownloadFinishMessage())) {
if (downloadWasFine) {
mPreviewImagePagerAdapter.updateFile(position, file);
} else {
mPreviewImagePagerAdapter.updateWithDownloadError(position);
}
- mPreviewImagePagerAdapter.notifyDataSetChanged(); // will trigger the creation of new fragments
+ mPreviewImagePagerAdapter.notifyDataSetChanged(); // will trigger the creation
+ // of new fragments
} else {
Log_OC.d(TAG, "Download finished, but the fragment is offscreen");
}
+ @SuppressLint("InlinedApi")
+ public void toggleFullScreen() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if (event.getAction() == MotionEvent.ACTION_UP) {
- toggleFullScreen();
- }
- return true;
- }
+ if (isHoneycombOrHigher()) {
+
+ boolean visible = (mFullScreenAnchorView.getSystemUiVisibility()
+ & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0;
+
+ if (visible) {
+ hideSystemUI(mFullScreenAnchorView);
+ // actionBar.hide(); // propagated through
+ // OnSystemUiVisibilityChangeListener()
+ } else {
+ showSystemUI(mFullScreenAnchorView);
+ // actionBar.show(); // propagated through
+ // OnSystemUiVisibilityChangeListener()
+ }
-
- private void toggleFullScreen() {
- ActionBar actionBar = getSupportActionBar();
- if (mFullScreen) {
- actionBar.show();
-
} else {
- actionBar.hide();
-
+
+ ActionBar actionBar = getSupportActionBar();
+ if (!actionBar.isShowing()) {
+ actionBar.show();
+ mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
+
+ } else {
+ actionBar.hide();
+ mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
+
+ }
+
}
- mFullScreen = !mFullScreen;
}
@Override
protected void onAccountSet(boolean stateWasRecovered) {
+ super.onAccountSet(stateWasRecovered);
if (getAccount() != null) {
OCFile file = getFile();
/// Validate handled file (first image to preview)
if (!file.isImage()) {
throw new IllegalArgumentException("Non-image file passed as argument");
}
- mStorageManager = new FileDataStorageManager(getAccount(), getContentResolver());
// Update file according to DB file, if it is possible
if (file.getFileId() > FileDataStorageManager.ROOT_PARENT_ID)
- file = mStorageManager.getFileById(file.getFileId());
+ file = getStorageManager().getFileById(file.getFileId());
if (file != null) {
/// Refresh the activity according to the Account and OCFile set
- setFile(file); // reset after getting it fresh from mStorageManager
+ setFile(file); // reset after getting it fresh from storageManager
getSupportActionBar().setTitle(getFile().getFileName());
//if (!stateWasRecovered) {
initViewPager();
// handled file not in the current Account
finish();
}
-
- } else {
- Log_OC.wtf(TAG, "onAccountChanged was called with NULL account associated!");
}
}
+
+ @Override
+ public void onBrowsedDownTo(OCFile folder) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onTransferStateChanged(OCFile file, boolean downloading, boolean uploading) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @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
+ );
+ }
+
+ /**
+ * Checks if OS version is Honeycomb one or higher
+ *
+ * @return boolean
+ */
+ private boolean isHoneycombOrHigher() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void allFilesOption(){
+ backToDisplayActivity();
+ super.allFilesOption();
+ }
}