Merge branch 'remove_ActionBarSherlock' into navigationDrawer_update
authormasensio <masensio@solidgear.es>
Wed, 27 May 2015 12:19:30 +0000 (14:19 +0200)
committermasensio <masensio@solidgear.es>
Wed, 27 May 2015 12:19:30 +0000 (14:19 +0200)
Conflicts:
res/menu/main_menu.xml
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
src/com/owncloud/android/ui/activity/FolderPickerActivity.java
src/com/owncloud/android/ui/activity/Preferences.java
src/com/owncloud/android/ui/preview/PreviewImageActivity.java

1  2 
res/layout/files.xml
res/menu/main_menu.xml
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
src/com/owncloud/android/ui/activity/FolderPickerActivity.java
src/com/owncloud/android/ui/activity/Preferences.java
src/com/owncloud/android/ui/activity/Uploader.java
src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java
src/com/owncloud/android/ui/fragment/OCFileListFragment.java
src/com/owncloud/android/ui/preview/PreviewImageActivity.java

diff --combined res/layout/files.xml
@@@ -1,5 -1,5 +1,5 @@@
  <?xml version="1.0" encoding="utf-8"?>\r
 -<!-- \r
 +<!--\r
    ownCloud Android client application\r
  \r
    Copyright (C) 2012  Bartek Przybylski\r
  \r
    You should have received a copy of the GNU General Public License\r
    along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
 - -->\r
 -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
 +  -->\r
 +<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
 +    android:id="@+id/drawer_layout"\r
      android:layout_width="match_parent"\r
      android:layout_height="match_parent"\r
 -    android:background="@color/background_color"\r
 -    android:orientation="horizontal"\r
 -    android:baselineAligned="false"\r
 -    >\r
 -\r
 -      <FrameLayout \r
 -              android:layout_width="0dp"\r
 -              android:layout_height="match_parent"\r
 -              android:layout_weight="1"\r
 -              android:id="@+id/left_fragment_container"\r
 -          />\r
 -      \r
 -      <FrameLayout \r
 -              android:layout_width="0dp"\r
 -              android:layout_height="match_parent"\r
 -              android:layout_weight="2"\r
 -              android:id="@+id/right_fragment_container"\r
 -          />\r
 -      \r
 - </LinearLayout>
 +    android:clickable="true" >\r
 +\r
 +    <!-- The main content view -->\r
 +    <LinearLayout\r
 +        xmlns:android="http://schemas.android.com/apk/res/android"\r
 +        android:layout_width="match_parent"\r
 +        android:layout_height="match_parent"\r
 +        android:background="@color/background_color"\r
 +        android:baselineAligned="false"\r
 +        android:orientation="horizontal" >\r
 +\r
 +\r
 +        <FrameLayout\r
 +            android:id="@+id/left_fragment_container"\r
 +            android:layout_width="0dp"\r
 +            android:layout_height="match_parent"\r
 +            android:layout_weight="1" />\r
 +\r
 +        <FrameLayout\r
 +            android:id="@+id/right_fragment_container"\r
 +            android:layout_width="0dp"\r
 +            android:layout_height="match_parent"\r
 +            android:layout_weight="2" />\r
 +    </LinearLayout>\r
 +\r
 +\r
 +    <LinearLayout\r
 +        xmlns:android="http://schemas.android.com/apk/res/android"\r
 +        android:id="@+id/left_drawer"\r
 +        android:layout_width="240dp"\r
 +        android:layout_height="match_parent"\r
 +        android:layout_gravity="start"\r
 +        android:background="@color/background_color"\r
 +        android:baselineAligned="false"\r
 +        android:clickable="true"\r
 +        android:orientation="vertical">\r
 +\r
 +        <LinearLayout\r
 +            android:layout_width="match_parent"\r
 +            android:layout_height="wrap_content"\r
 +            android:layout_margin="5dp">\r
 +\r
 +            <ImageView\r
 +                android:id="@+id/drawer_userIcon"\r
 +                android:layout_width="40dp"\r
 +                android:layout_height="40dp"\r
-                 android:src="@drawable/abs__ab_solid_dark_holo" />\r
++                android:src="@drawable/abc_ab_bottom_solid_dark_holo" />\r
 +\r
 +            <TextView\r
 +                android:id="@+id/drawer_username"\r
 +                android:layout_width="wrap_content"\r
 +                android:layout_height="wrap_content"\r
 +                android:layout_gravity="center_vertical"\r
 +                android:layout_marginLeft="5dp"\r
 +                android:layout_marginStart="5dp"\r
 +                android:textAppearance="?android:attr/textAppearanceLarge" />\r
 +\r
 +        </LinearLayout>\r
 +\r
 +        <TextView\r
 +            android:layout_width="fill_parent"\r
 +            android:layout_height="2dip"\r
 +            android:background="@color/list_item_lastmod_and_filesize_text" />\r
 +\r
 +        <ListView\r
 +            android:id="@+id/drawer_list"\r
 +            android:layout_width="fill_parent"\r
 +            android:layout_height="match_parent"\r
 +            android:background="@color/background_color"\r
 +            android:choiceMode="singleChoice"\r
 +            />\r
 +    </LinearLayout>\r
 +</android.support.v4.widget.DrawerLayout>
diff --combined res/menu/main_menu.xml
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  -->
- <menu xmlns:android="http://schemas.android.com/apk/res/android" >
+ <menu xmlns:android="http://schemas.android.com/apk/res/android"
+     xmlns:app="http://schemas.android.com/apk/res-auto">
  
      <item
          android:id="@+id/action_upload"
          android:icon="@drawable/ic_action_upload"
          android:orderInCategory="2"
-         android:showAsAction="always"
+         app:showAsAction="always"
          android:title="@string/actionbar_upload"
          android:contentDescription="@string/actionbar_upload"/>
      <item
          android:id="@+id/action_create_dir"
          android:icon="@drawable/ic_action_create_dir"
          android:orderInCategory="2"
-         android:showAsAction="always"
+         app:showAsAction="always"
          android:title="@string/actionbar_mkdir"
          android:contentDescription="@string/actionbar_mkdir"/>
      <item
+         android:id="@+id/action_sync_account"
+         android:icon="@drawable/ic_action_refresh"
+         android:orderInCategory="2"
+         app:showAsAction="never"
+         android:title="@string/actionbar_sync"
+         android:contentDescription="@string/actionbar_sync"/>
+     <item
+         android:id="@+id/action_settings"
+         android:icon="@drawable/ic_action_settings"
+         android:orderInCategory="2"
+         app:showAsAction="never"
+         android:title="@string/actionbar_settings"
+         android:contentDescription="@string/actionbar_settings"/>
+     <item
+         android:id="@+id/action_logger"
+         android:icon="@drawable/ic_action_settings"
+         android:orderInCategory="2"
+         app:showAsAction="never"
+         android:title="@string/actionbar_logger"
+         android:contentDescription="@string/actionbar_logger"/>
+       <item
          android:id="@+id/action_sort"
 -        android:icon="@android:drawable/ic_menu_sort_alphabetically"
 +        android:icon="@android:drawable/ic_menu_sort_by_size"
          android:orderInCategory="2"
-         android:showAsAction="always"
 -        app:showAsAction="never"
++        app:showAsAction="always"
          android:title="@string/actionbar_sort"
-         android:contentDescription="@string/actionbar_sort"/>/>
+         android:contentDescription="@string/actionbar_sort"/>
  
-     <!-- <item android:id="@+id/search" android:title="@string/actionbar_search" android:icon="@drawable/ic_action_search"></item> -->
+     <!-- <item android:id="@+id/search"
+     android:title="@string/actionbar_search"
+     android:icon="@drawable/ic_action_search"></item> -->
  
  </menu>
@@@ -23,7 -23,6 +23,7 @@@
  package com.owncloud.android.ui.activity;
  
  import java.io.File;
 +import java.util.ArrayList;
  
  import android.accounts.Account;
  import android.accounts.AccountManager;
@@@ -40,7 -39,6 +40,7 @@@ import android.content.IntentFilter
  import android.content.ServiceConnection;
  import android.content.SharedPreferences;
  import android.content.SyncRequest;
 +import android.content.res.Configuration;
  import android.content.res.Resources.NotFoundException;
  import android.database.Cursor;
  import android.net.Uri;
@@@ -49,33 -47,23 +49,33 @@@ import android.os.Bundle
  import android.os.IBinder;
  import android.preference.PreferenceManager;
  import android.provider.OpenableColumns;
 +import android.support.v4.app.ActionBarDrawerToggle;
  import android.support.v4.app.Fragment;
  import android.support.v4.app.FragmentManager;
  import android.support.v4.app.FragmentTransaction;
++
 +import android.support.v4.view.GravityCompat;
 +import android.support.v4.widget.DrawerLayout;
+ import android.support.v7.app.ActionBar;
+ import android.view.Menu;
+ import android.view.MenuInflater;
+ import android.view.MenuItem;
  import android.view.View;
  import android.view.ViewGroup;
- import android.widget.AdapterView.OnItemClickListener;
+ import android.view.Window;
++
 +import android.widget.AdapterView;
  import android.widget.ArrayAdapter;
 +import android.widget.ImageView;
 +import android.widget.LinearLayout;
 +import android.widget.ListView;
  import android.widget.TextView;
  import android.widget.Toast;
  
- import com.actionbarsherlock.app.ActionBar;
- import com.actionbarsherlock.app.ActionBar.OnNavigationListener;
- import com.actionbarsherlock.view.Menu;
- import com.actionbarsherlock.view.MenuInflater;
- import com.actionbarsherlock.view.MenuItem;
- import com.actionbarsherlock.view.Window;
  import com.owncloud.android.BuildConfig;
  import com.owncloud.android.MainApp;
  import com.owncloud.android.R;
 +import com.owncloud.android.authentication.AccountUtils;
  import com.owncloud.android.datamodel.OCFile;
  import com.owncloud.android.files.services.FileDownloader;
  import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
@@@ -101,8 -89,6 +101,8 @@@ import com.owncloud.android.operations.
  import com.owncloud.android.operations.UnshareLinkOperation;
  import com.owncloud.android.services.observer.FileObserverService;
  import com.owncloud.android.syncadapter.FileSyncAdapter;
 +import com.owncloud.android.ui.NavigationDrawerItem;
 +import com.owncloud.android.ui.adapter.NavigationDrawerListAdapter;
  import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
  import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
  import com.owncloud.android.ui.dialog.SslUntrustedCertDialog;
@@@ -126,8 -112,8 +126,8 @@@ import com.owncloud.android.utils.UriUt
   */
  
  public class FileDisplayActivity extends HookActivity implements
- FileFragment.ContainerActivity, OnNavigationListener, 
- OnSslUntrustedCertListener, OnEnforceableRefreshListener {
+         FileFragment.ContainerActivity, ActionBar.OnNavigationListener,
        OnSslUntrustedCertListener, OnEnforceableRefreshListener {
      
      private ArrayAdapter<String> mDirectories;
  
      private static String DIALOG_UPLOAD_SOURCE = "DIALOG_UPLOAD_SOURCE";
      private static String DIALOG_CERT_NOT_SAVED = "DIALOG_CERT_NOT_SAVED";
  
 -
      private OCFile mWaitingToSend;
 +
 +    // Navigation Drawer
 +    private DrawerLayout mDrawerLayout;
 +    private ActionBarDrawerToggle mDrawerToggle;
 +    private ListView mDrawerList;
 +
 +    // Slide menu items
 +    private String[] mDrawerTitles;
 +    private String[] mDrawerContentDescriptions;
 +
 +    private ArrayList<NavigationDrawerItem> mDrawerItems;
 +
 +    private NavigationDrawerListAdapter mNavigationDrawerAdapter = null;
 +
 +    private boolean mShowAccounts = false;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          Log_OC.v(TAG, "onCreate() start");
          requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
-         
-         super.onCreate(savedInstanceState); // this calls onAccountChanged() when ownCloud Account is valid
+         super.onCreate(savedInstanceState); // this calls onAccountChanged() when ownCloud Account
+                                             // is valid
  
          /// grant that FileObserverService is watching favorite files
          if (savedInstanceState == null) {
          
          /// Load of saved instance state
          if(savedInstanceState != null) {
-             mWaitingToPreview = (OCFile) savedInstanceState.getParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW);
+             mWaitingToPreview = (OCFile) savedInstanceState.getParcelable(
+                     FileDisplayActivity.KEY_WAITING_TO_PREVIEW);
              mSyncInProgress = savedInstanceState.getBoolean(KEY_SYNC_IN_PROGRESS);
-             mWaitingToSend = (OCFile) savedInstanceState.getParcelable(FileDisplayActivity.KEY_WAITING_TO_SEND);
+             mWaitingToSend = (OCFile) savedInstanceState.getParcelable(
+                     FileDisplayActivity.KEY_WAITING_TO_SEND);
             
          } else {
              mWaitingToPreview = null;
          /// USER INTERFACE
  
          // Inflate and set the layout view
 -        setContentView(R.layout.files);    
 +        setContentView(R.layout.files);
 +        
 +        // Navigation Drawer
 +        initDrawer();
 +
          mDualPane = getResources().getBoolean(R.bool.large_land_layout);
          mLeftFragmentContainer = findViewById(R.id.left_fragment_container);
          mRightFragmentContainer = findViewById(R.id.right_fragment_container);
          }
  
          // Action bar setup
-         mDirectories = new CustomArrayAdapter<String>(this, R.layout.sherlock_spinner_dropdown_item);
-         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-         getSupportActionBar().setHomeButtonEnabled(true);       // mandatory since Android ICS, according to the official documentation
-         getSupportActionBar().setDisplayShowCustomEnabled(true); // CRUCIAL - for displaying your custom actionbar
-         getSupportActionBar().setDisplayShowTitleEnabled(true);
-         setSupportProgressBarIndeterminateVisibility(mSyncInProgress /*|| mRefreshSharesInProgress*/);    // always AFTER setContentView(...) ; to work around bug in its implementation
+         mDirectories = new CustomArrayAdapter<String>(this,
+                 R.layout.support_simple_spinner_dropdown_item);
+         getSupportActionBar().setHomeButtonEnabled(true);       // mandatory since Android ICS,
+                                                                 // according to the official
+                                                                 // documentation
+         setSupportProgressBarIndeterminateVisibility(mSyncInProgress
+         /*|| mRefreshSharesInProgress*/);
+         // always AFTER setContentView(...) ; to work around bug in its implementation
 +
 +        // TODO Remove??, it is done in onPostCreate
 +        mDrawerToggle.syncState();
          
          setBackgroundText();
  
          Log_OC.v(TAG, "onCreate() end");
      }
 -    
 +
 +    private void initDrawer(){
 +        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
 +        // Notification Drawer
 +        LinearLayout navigationDrawerLayout = (LinearLayout) findViewById(R.id.left_drawer);
 +        mDrawerList = (ListView) navigationDrawerLayout.findViewById(R.id.drawer_list);
 +
 +        // load Account in the Drawer Title
 +        // User-Icon
 +        ImageView userIcon = (ImageView) navigationDrawerLayout.findViewById(R.id.drawer_userIcon);
 +        userIcon.setImageResource(DisplayUtils.getSeasonalIconId());
 +
 +        // Username
 +        TextView username = (TextView) navigationDrawerLayout.findViewById(R.id.drawer_username);
 +        Account account = AccountUtils.getCurrentOwnCloudAccount(getApplicationContext());
 +
 +        if (account != null) {
 +            int lastAtPos = account.name.lastIndexOf("@");
 +            username.setText(account.name.substring(0, lastAtPos));
 +        }
 +
 +        // load slide menu items
 +        mDrawerTitles = getResources().getStringArray(R.array.drawer_items);
 +
 +        // nav drawer content description from resources
 +        mDrawerContentDescriptions = getResources().
 +                getStringArray(R.array.drawer_content_descriptions);
 +
 +        // nav drawer items
 +        mDrawerItems = new ArrayList<NavigationDrawerItem>();
 +        // adding nav drawer items to array
 +        // Accounts
 +        mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0], mDrawerContentDescriptions[0]));
 +        // All Files
 +        mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[1], mDrawerContentDescriptions[1]));
 +
 +        // TODO Enable when "On Device" is recovered
 +        // On Device
 +        //mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[2],
 +        //        mDrawerContentDescriptions[2]));
 +
 +        // Settings
 +        mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[2], mDrawerContentDescriptions[2]));
 +        // Logs
 +        if (BuildConfig.DEBUG) {
 +            mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[3],
 +                    mDrawerContentDescriptions[3]));
 +        }
 +
 +        // setting the nav drawer list adapter
 +        mNavigationDrawerAdapter = new NavigationDrawerListAdapter(getApplicationContext(), this,
 +                mDrawerItems);
 +        mDrawerList.setAdapter(mNavigationDrawerAdapter);
 +
 +        mDrawerToggle = new ActionBarDrawerToggle(
 +                this,
 +                mDrawerLayout,
 +                R.drawable.ic_drawer,
 +                R.string.drawer_open,
 +                R.string.empty) {
 +
 +            /** Called when a drawer has settled in a completely closed state. */
 +            public void onDrawerClosed(View view) {
 +                super.onDrawerClosed(view);
 +                getSupportActionBar().setDisplayShowTitleEnabled(true);
 +                getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
 +                initFragmentsWithFile();
 +                invalidateOptionsMenu();
 +            }
 +
 +            /** Called when a drawer has settled in a completely open state. */
 +            public void onDrawerOpened(View drawerView) {
 +                super.onDrawerOpened(drawerView);
 +                getSupportActionBar().setTitle(R.string.drawer_open);
 +                getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
 +                invalidateOptionsMenu();
 +            }
 +        };
 +
 +        mDrawerToggle.setDrawerIndicatorEnabled(true);
 +        // Set the list's click listener
 +        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
 +
 +        // Set the drawer toggle as the DrawerListener
 +        mDrawerLayout.setDrawerListener(mDrawerToggle);
 +    }
 +
      @Override
      protected void onStart() {
          Log_OC.v(TAG, "onStart() start");
          getSupportActionBar().setIcon(DisplayUtils.getSeasonalIconId());
          Log_OC.v(TAG, "onStart() end");
      }
 +    
 +    @Override
 +    protected void onPostCreate(Bundle savedInstanceState) {
 +        super.onPostCreate(savedInstanceState);
 +        // Sync the toggle state after onRestoreInstanceState has occurred.
 +        mDrawerToggle.syncState();
 +    }
 +    
 +    @Override
 +    public void onConfigurationChanged(Configuration newConfig) {
 +        super.onConfigurationChanged(newConfig);
 +        mDrawerToggle.onConfigurationChanged(newConfig);
 +    }
  
      @Override
      protected void onDestroy() {
      protected void onAccountSet(boolean stateWasRecovered) {
          super.onAccountSet(stateWasRecovered);
          if (getAccount() != null) {
-             /// Check whether the 'main' OCFile handled by the Activity is contained in the current Account
+             /// Check whether the 'main' OCFile handled by the Activity is contained in the
+             // current Account
              OCFile file = getFile();
              // get parent from path
              String parentPath = "";
              if (file != null) {
                  if (file.isDown() && file.getLastSyncDateForProperties() == 0) {
-                     // upload in progress - right now, files are not inserted in the local cache until the upload is successful
-                     // get parent from path
-                     parentPath = file.getRemotePath().substring(0, file.getRemotePath().lastIndexOf(file.getFileName()));
+                     // upload in progress - right now, files are not inserted in the local
+                     // cache until the upload is successful get parent from path
+                     parentPath = file.getRemotePath().substring(0,
+                             file.getRemotePath().lastIndexOf(file.getFileName()));
                      if (getStorageManager().getFileByPath(parentPath) ==  null)
                          file = null; // not able to know the directory where the file is uploading
                  } else {
-                     file = getStorageManager().getFileByPath(file.getRemotePath());   // currentDir = null if not in the current Account
+                     file = getStorageManager().getFileByPath(file.getRemotePath());
+                     // currentDir = null if not in the current Account
                  }
              }
              if (file == null) {
                  mDirectories.add(fileIt.getFileName());
              }
              // get parent from path
-             parentPath = fileIt.getRemotePath().substring(0, fileIt.getRemotePath().lastIndexOf(fileIt.getFileName()));
+             parentPath = fileIt.getRemotePath().substring(0,
+                     fileIt.getRemotePath().lastIndexOf(fileIt.getFileName()));
              fileIt = getStorageManager().getFileByPath(parentPath);
          }
          mDirectories.add(OCFile.PATH_SEPARATOR);
              /// First fragment
              OCFileListFragment listOfFiles = getListOfFilesFragment(); 
              if (listOfFiles != null) {
 -                listOfFiles.listDirectory(getCurrentDir());   
 +                listOfFiles.listDirectory(getCurrentDir());
 +                // TODO Enable when "On Device" is recovered
 +                // listOfFiles.listDirectory(getCurrentDir(), MainApp.getOnlyOnDevice());
              } else {
                  Log_OC.e(TAG, "Still have a chance to lose the initializacion of list fragment >(");
              }
              if (file.isDown() && PreviewMediaFragment.canBePreviewed(file) 
                      && file.getLastSyncDateForProperties() > 0  // temporal fix
                      ) {
-                 int startPlaybackPosition = getIntent().getIntExtra(PreviewVideoActivity.EXTRA_START_POSITION, 0);
-                 boolean autoplay = getIntent().getBooleanExtra(PreviewVideoActivity.EXTRA_AUTOPLAY, true);
-                 secondFragment = new PreviewMediaFragment(file, getAccount(), startPlaybackPosition, autoplay);
+                 int startPlaybackPosition =
+                         getIntent().getIntExtra(PreviewVideoActivity.EXTRA_START_POSITION, 0);
+                 boolean autoplay =
+                         getIntent().getBooleanExtra(PreviewVideoActivity.EXTRA_AUTOPLAY, true);
+                 secondFragment = new PreviewMediaFragment(file, getAccount(),
+                         startPlaybackPosition, autoplay);
  
              } else {
                  secondFragment = new FileDetailFragment(file, getAccount());
  
  
      private OCFileListFragment getListOfFilesFragment() {
-         Fragment listOfFiles = getSupportFragmentManager().findFragmentByTag(FileDisplayActivity.TAG_LIST_OF_FILES);
+         Fragment listOfFiles = getSupportFragmentManager().findFragmentByTag(
+                 FileDisplayActivity.TAG_LIST_OF_FILES);
          if (listOfFiles != null) {
              return (OCFileListFragment)listOfFiles;
          }
      }
  
      public FileFragment getSecondFragment() {
-         Fragment second = getSupportFragmentManager().findFragmentByTag(FileDisplayActivity.TAG_SECOND_FRAGMENT);
+         Fragment second = getSupportFragmentManager().findFragmentByTag(
+                 FileDisplayActivity.TAG_SECOND_FRAGMENT);
          if (second != null) {
              return (FileFragment)second;
          }
  
      protected void refreshListOfFilesFragment() {
          OCFileListFragment fileListFragment = getListOfFilesFragment();
 -        if (fileListFragment != null) { 
 +        if (fileListFragment != null) {
              fileListFragment.listDirectory();
 +            // TODO Enable when "On Device" is recovered ?
 +            // fileListFragment.listDirectory(MainApp.getOnlyOnDevice());
          }
      }
  
-     protected void refreshSecondFragment(String downloadEvent, String downloadedRemotePath, boolean success) {
+     protected void refreshSecondFragment(String downloadEvent, String downloadedRemotePath,
+                                          boolean success) {
          FileFragment secondFragment = getSecondFragment();
-         boolean waitedPreview = (mWaitingToPreview != null && mWaitingToPreview.getRemotePath().equals(downloadedRemotePath));
+         boolean waitedPreview = (mWaitingToPreview != null &&
+                 mWaitingToPreview.getRemotePath().equals(downloadedRemotePath));
          if (secondFragment != null && secondFragment instanceof FileDetailFragment) {
              FileDetailFragment detailsFragment = (FileDetailFragment) secondFragment;
              OCFile fileInFragment = detailsFragment.getFile();
-             if (fileInFragment != null && !downloadedRemotePath.equals(fileInFragment.getRemotePath())) {
+             if (fileInFragment != null &&
+                     !downloadedRemotePath.equals(fileInFragment.getRemotePath())) {
                  // the user browsed to other file ; forget the automatic preview 
                  mWaitingToPreview = null;
  
                  boolean detailsFragmentChanged = false;
                  if (waitedPreview) {
                      if (success) {
-                         mWaitingToPreview = getStorageManager().getFileById(mWaitingToPreview.getFileId());   // update the file from database, for the local storage path
+                         mWaitingToPreview = getStorageManager().getFileById(
+                                 mWaitingToPreview.getFileId());   // update the file from database,
+                                                                   // for the local storage path
                          if (PreviewMediaFragment.canBePreviewed(mWaitingToPreview)) {
                              startMediaPreview(mWaitingToPreview, 0, true);
                              detailsFragmentChanged = true;
  
      @Override
      public boolean onPrepareOptionsMenu(Menu menu) {
 -        if (BuildConfig.DEBUG) {
 -            menu.findItem(R.id.action_logger).setVisible(true);
 -        } else {
 -            menu.findItem(R.id.action_logger).setVisible(false);
 -        }
 +        boolean drawerOpen = mDrawerLayout.isDrawerOpen(GravityCompat.START);
 +        menu.findItem(R.id.action_upload).setVisible(!drawerOpen);
 +        menu.findItem(R.id.action_create_dir).setVisible(!drawerOpen);
 +        menu.findItem(R.id.action_sort).setVisible(!drawerOpen);
 +        
          return super.onPrepareOptionsMenu(menu);
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
-         MenuInflater inflater = getSherlock().getMenuInflater();
+         MenuInflater inflater = getMenuInflater();
          inflater.inflate(R.menu.main_menu, menu);
          return true;
      }
 +    
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
              dialog.show(getSupportFragmentManager(), DIALOG_CREATE_FOLDER);
              break;
          }
 -        case R.id.action_sync_account: {
 -            startSynchronization();
 -            break;
 -        }
          case R.id.action_upload: {
              UploadSourceDialogFragment dialog = UploadSourceDialogFragment.newInstance(getAccount());
              dialog.show(getSupportFragmentManager(), DIALOG_UPLOAD_SOURCE);
  
              break;
          }
 -        case R.id.action_settings: {
 -            Intent settingsIntent = new Intent(this, Preferences.class);
 -            startActivity(settingsIntent);
 -            break;
 -        }
 -        case R.id.action_logger: {
 -            Intent loggerIntent = new Intent(getApplicationContext(),LogHistoryActivity.class);
 -            startActivity(loggerIntent);
 -            break;
 -        }
          case android.R.id.home: {
 -            FileFragment second = getSecondFragment();
 -            OCFile currentDir = getCurrentDir();
 -            if((currentDir != null && currentDir.getParentId() != 0) || 
 -                    (second != null && second.getFile() != null)) {                
 -                onBackPressed(); 
 -                
 +            if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
 +                mDrawerLayout.closeDrawer(GravityCompat.START);
 +            } else {
 +                mDrawerLayout.openDrawer(GravityCompat.START);
              }
 +            // TODO add hamburger to left of android.R.id.home
              break;
          }
          case R.id.action_sort: {
              builder.setTitle(R.string.actionbar_sort_title)
              .setSingleChoiceItems(R.array.actionbar_sortby, sortOrder , new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int which) {
 -                    
                      switch (which){
 -                    case 0:
 -                        sortByName(true);
 -                        break;
 -                    case 1:
 -                        sortByDate(false);
 -                        break;
 -                        
 +                        case 0:
 +                            sortByName(true);
 +                            break;
 +                        case 1:
 +                            sortByDate(false);
 +                            break;
                      }
 -                    
 +
                      dialog.dismiss();
 -                    
                  }
              });
              builder.create().show();
          Log_OC.d(TAG, "Got to start sync");
          if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) {
              Log_OC.d(TAG, "Canceling all syncs for " + MainApp.getAuthority());
-             ContentResolver.cancelSync(null, MainApp.getAuthority());   // cancel the current synchronizations of any ownCloud account
+             ContentResolver.cancelSync(null, MainApp.getAuthority());
+             // cancel the current synchronizations of any ownCloud account
              Bundle bundle = new Bundle();
              bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
              bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
-             Log_OC.d(TAG, "Requesting sync for " + getAccount().name + " at " + MainApp.getAuthority());
+             Log_OC.d(TAG, "Requesting sync for " + getAccount().name + " at " +
+                     MainApp.getAuthority());
              ContentResolver.requestSync(
                      getAccount(),
                      MainApp.getAuthority(), bundle);
          } else {
-             Log_OC.d(TAG, "Requesting sync for " + getAccount().name + " at " + MainApp.getAuthority() + " with new API");
+             Log_OC.d(TAG, "Requesting sync for " + getAccount().name + " at " +
+                     MainApp.getAuthority() + " with new API");
              SyncRequest.Builder builder = new SyncRequest.Builder();
              builder.setSyncAdapter(getAccount(), MainApp.getAuthority());
              builder.setExpedited(true);
              // the next operation triggers a new call to this method, but it's necessary to 
              // ensure that the name exposed in the action bar is the current directory when the 
              // user selected it in the navigation list
-             if (getSupportActionBar().getNavigationMode() == ActionBar.NAVIGATION_MODE_LIST  && itemPosition != 0) 
+             if (getSupportActionBar().getNavigationMode() == ActionBar.NAVIGATION_MODE_LIST  &&
+                     itemPosition != 0)
                  getSupportActionBar().setSelectedNavigationItem(0);
          }
          return true;
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  
-         if (requestCode == ACTION_SELECT_CONTENT_FROM_APPS && (resultCode == RESULT_OK || resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) {
+         if (requestCode == ACTION_SELECT_CONTENT_FROM_APPS && (resultCode == RESULT_OK ||
+                 resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) {
              //getClipData is only supported on api level 16+, Jelly Bean
              if (data.getData() == null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
                  for( int i = 0; i < data.getClipData().getItemCount(); i++){
              }else {
                  requestSimpleUpload(data, resultCode);
              }
-         } else if (requestCode == ACTION_SELECT_MULTIPLE_FILES && (resultCode == RESULT_OK || resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) {
+         } else if (requestCode == ACTION_SELECT_MULTIPLE_FILES && (resultCode == RESULT_OK ||
+                 resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) {
              requestMultipleUpload(data, resultCode);
  
          } else if (requestCode == ACTION_MOVE_FILES && resultCode == RESULT_OK){
  
          } else {
              Log_OC.d(TAG, "User clicked on 'Update' with no selection");
--            Toast t = Toast.makeText(this, getString(R.string.filedisplay_no_file_selected), Toast.LENGTH_LONG);
++            Toast t = Toast.makeText(this, getString(R.string.filedisplay_no_file_selected),
++                    Toast.LENGTH_LONG);
              t.show();
              return;
          }
                  filePath = fileManagerString;
  
          } catch (Exception e) {
-             Log_OC.e(TAG, "Unexpected exception when trying to read the result of Intent.ACTION_GET_CONTENT", e);
+             Log_OC.e(TAG, "Unexpected exception when trying to read the result of " +
+                     "Intent.ACTION_GET_CONTENT", e);
  
          } finally {
              if (filePath == null) {
                  Log_OC.e(TAG, "Couldn't resolve path to file");
                  Toast t = Toast.makeText(
-                         this, getString(R.string.filedisplay_unexpected_bad_get_content), Toast.LENGTH_LONG
+                         this, getString(R.string.filedisplay_unexpected_bad_get_content),
+                         Toast.LENGTH_LONG
                  );
                  t.show();
                  return;
              Cursor cursor = getContentResolver().query(Uri.parse(filePath), null, null, null, null);
              try {
                  if (cursor != null && cursor.moveToFirst()) {
-                     String displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+                     String displayName = cursor.getString(cursor.getColumnIndex(
+                             OpenableColumns.DISPLAY_NAME));
                      Log_OC.v(TAG, "Display Name: " + displayName );
  
                      displayName.replace(File.separatorChar, '_');
  
      @Override
      protected void onSaveInstanceState(Bundle outState) {
-         // responsibility of restore is preferred in onCreate() before than in onRestoreInstanceState when there are Fragments involved
+         // responsibility of restore is preferred in onCreate() before than in
+         // onRestoreInstanceState when there are Fragments involved
          Log_OC.v(TAG, "onSaveInstanceState() start");
          super.onSaveInstanceState(outState);
          outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW, mWaitingToPreview);
          outState.putBoolean(FileDisplayActivity.KEY_SYNC_IN_PROGRESS, mSyncInProgress);
-         //outState.putBoolean(FileDisplayActivity.KEY_REFRESH_SHARES_IN_PROGRESS, mRefreshSharesInProgress);
+         //outState.putBoolean(FileDisplayActivity.KEY_REFRESH_SHARES_IN_PROGRESS,
+         // mRefreshSharesInProgress);
          outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_SEND, mWaitingToSend);
  
          Log_OC.v(TAG, "onSaveInstanceState() end");
          Log_OC.v(TAG, "onResume() start");
          super.onResume();
  
 +        // refresh Navigation Drawer account list
 +        mNavigationDrawerAdapter.updateAccountList();
 +
          // refresh list of files
          refreshListOfFilesFragment();
  
          syncIntentFilter.addAction(RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED);
          mSyncBroadcastReceiver = new SyncBroadcastReceiver();
          registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
-         //LocalBroadcastManager.getInstance(this).registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
+         //LocalBroadcastManager.getInstance(this).registerReceiver(mSyncBroadcastReceiver,
+         // syncIntentFilter);
  
          // Listen for upload messages
          IntentFilter uploadIntentFilter = new IntentFilter(FileUploader.getUploadFinishMessage());
                  String event = intent.getAction();
                  Log_OC.d(TAG, "Received broadcast " + event);
                  String accountName = intent.getStringExtra(FileSyncAdapter.EXTRA_ACCOUNT_NAME);
-                 String synchFolderRemotePath = intent.getStringExtra(FileSyncAdapter.EXTRA_FOLDER_PATH); 
-                 RemoteOperationResult synchResult = (RemoteOperationResult)intent.getSerializableExtra(FileSyncAdapter.EXTRA_RESULT);
-                 boolean sameAccount = (getAccount() != null && accountName.equals(getAccount().name) && getStorageManager() != null); 
+                 String synchFolderRemotePath =
+                         intent.getStringExtra(FileSyncAdapter.EXTRA_FOLDER_PATH);
+                 RemoteOperationResult synchResult =
+                         (RemoteOperationResult)intent.getSerializableExtra(
+                                 FileSyncAdapter.EXTRA_RESULT);
+                 boolean sameAccount = (getAccount() != null &&
+                         accountName.equals(getAccount().name) && getStorageManager() != null);
      
                  if (sameAccount) {
                      
                          mSyncInProgress = true;
                          
                      } else {
-                         OCFile currentFile = (getFile() == null) ? null : getStorageManager().getFileByPath(getFile().getRemotePath());
-                         OCFile currentDir = (getCurrentDir() == null) ? null : getStorageManager().getFileByPath(getCurrentDir().getRemotePath());
+                         OCFile currentFile = (getFile() == null) ? null :
+                                 getStorageManager().getFileByPath(getFile().getRemotePath());
+                         OCFile currentDir = (getCurrentDir() == null) ? null :
+                                 getStorageManager().getFileByPath(getCurrentDir().getRemotePath());
      
                          if (currentDir == null) {
                              // current folder was removed from the server 
                              Toast.makeText( FileDisplayActivity.this, 
-                                             String.format(getString(R.string.sync_current_folder_was_removed), mDirectories.getItem(0)), 
 -                                            String.format(getString(R.string.sync_current_folder_was_removed),
++                                            String.format(
++                                                    getString(R.string.sync_current_folder_was_removed),
+                                                     mDirectories.getItem(0)),
                                              Toast.LENGTH_LONG)
                                  .show();
                              browseToRoot();
                              
                          } else {
                              if (currentFile == null && !getFile().isFolder()) {
--                                // currently selected file was removed in the server, and now we know it
++                                // currently selected file was removed in the server, and now we
++                                // know it
                                  cleanSecondFragment();
                                  currentFile = currentDir;
                              }
  
-                             if (synchFolderRemotePath != null && currentDir.getRemotePath().equals(synchFolderRemotePath)) {
+                             if (synchFolderRemotePath != null &&
+                                     currentDir.getRemotePath().equals(synchFolderRemotePath)) {
                                  OCFileListFragment fileListFragment = getListOfFilesFragment();
                                  if (fileListFragment != null) {
 -                                    fileListFragment.listDirectory(currentDir);
 +                                    fileListFragment.listDirectory();
 +                                    // TODO Enable when "On Device" is recovered ?
-                                     // fileListFragment.listDirectory(currentDir, MainApp.getOnlyOnDevice());
++                                    // fileListFragment.listDirectory(currentDir,
++                                    // MainApp.getOnlyOnDevice());
                                  }
                              }
                              setFile(currentFile);
                          }
                          
-                         mSyncInProgress = (!FileSyncAdapter.EVENT_FULL_SYNC_END.equals(event) && !RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED.equals(event));
+                         mSyncInProgress = (!FileSyncAdapter.EVENT_FULL_SYNC_END.equals(event) &&
 -                                !RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED.equals(event));
++                                !RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED
++                                        .equals(event));
                                  
                          if (RefreshFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED.
                                      equals(event) &&
                      }
                      removeStickyBroadcast(intent);
                      Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress);
-                     setSupportProgressBarIndeterminateVisibility(mSyncInProgress /*|| mRefreshSharesInProgress*/);
+                     setSupportProgressBarIndeterminateVisibility(mSyncInProgress
+                     /*|| mRefreshSharesInProgress*/);
  
                      setBackgroundText();
                          
                  }
                  
                  if (synchResult != null) {
-                     if (synchResult.getCode().equals(RemoteOperationResult.ResultCode.SSL_RECOVERABLE_PEER_UNVERIFIED)) {
+                     if (synchResult.getCode().equals(
+                             RemoteOperationResult.ResultCode.SSL_RECOVERABLE_PEER_UNVERIFIED)) {
                          mLastSslUntrustedServerResult = synchResult;
                      }
                  }
                      refreshListOfFilesFragment();
                  }
                  
-                 boolean uploadWasFine = intent.getBooleanExtra(FileUploader.EXTRA_UPLOAD_RESULT, false);
+                 boolean uploadWasFine = intent.getBooleanExtra(FileUploader.EXTRA_UPLOAD_RESULT,
+                         false);
                  boolean renamedInUpload = getFile().getRemotePath().
                          equals(intent.getStringExtra(FileUploader.EXTRA_OLD_REMOTE_PATH));
                  boolean sameFile = getFile().getRemotePath().equals(uploadedRemotePath) || 
          public void onReceive(Context context, Intent intent) {
              try {
                  boolean sameAccount = isSameAccount(context, intent);
-                 String downloadedRemotePath = intent.getStringExtra(FileDownloader.EXTRA_REMOTE_PATH);
+                 String downloadedRemotePath =
+                         intent.getStringExtra(FileDownloader.EXTRA_REMOTE_PATH);
                  boolean isDescendant = isDescendant(downloadedRemotePath);
  
                  if (sameAccount && isDescendant) {
-                     String linkedToRemotePath = intent.getStringExtra(FileDownloader.EXTRA_LINKED_TO_PATH);
+                     String linkedToRemotePath =
+                             intent.getStringExtra(FileDownloader.EXTRA_LINKED_TO_PATH);
                      if (linkedToRemotePath == null || isAscendant(linkedToRemotePath)) {
                          //Log_OC.v(TAG, "refresh #" + ++refreshCounter);
                          refreshListOfFilesFragment();
                  }
      
                  if (mWaitingToSend != null) {
-                     mWaitingToSend = getStorageManager().getFileByPath(mWaitingToSend.getRemotePath());
+                     mWaitingToSend =
+                             getStorageManager().getFileByPath(mWaitingToSend.getRemotePath());
                      if (mWaitingToSend.isDown()) { 
                          sendDownloadedFile();
                      }
  
          private boolean isSameAccount(Context context, Intent intent) {
              String accountName = intent.getStringExtra(FileDownloader.ACCOUNT_NAME);
-             return (accountName != null && getAccount() != null && accountName.equals(getAccount().name));
+             return (accountName != null && getAccount() != null &&
+                     accountName.equals(getAccount().name));
          }
      }
      
              }
              OCFile root = getStorageManager().getFileByPath(OCFile.ROOT_PATH);
              listOfFiles.listDirectory(root);
 +            // TODO Enable when "On Device" is recovered ?
 +            // listOfFiles.listDirectory(root, MainApp.getOnlyOnDevice());
              setFile(listOfFiles.getCurrentFile());
              startSyncFolderOperation(root, false);
          }
          if (listOfFiles != null) {
              setNavigationListWithFolder(folder);
              listOfFiles.listDirectory(folder);
 +            // TODO Enable when "On Device" is recovered ?
 +            // listOfFiles.listDirectory(folder, MainApp.getOnlyOnDevice());
              setFile(listOfFiles.getCurrentFile());
              startSyncFolderOperation(folder, false);
          } else {
              // only list of files - set for browsing through folders
              OCFile currentDir = getCurrentDir();
              boolean noRoot = (currentDir != null && currentDir.getParentId() != 0);
 -            actionBar.setDisplayHomeAsUpEnabled(noRoot);
 -            actionBar.setDisplayShowTitleEnabled(!noRoot); 
 +//            actionBar.setDisplayHomeAsUpEnabled(noRoot);
 +//            actionBar.setDisplayShowTitleEnabled(!noRoot); 
 +            actionBar.setDisplayHomeAsUpEnabled(true);
 +            actionBar.setDisplayShowTitleEnabled(true);
              if (!noRoot) {
                  actionBar.setTitle(getString(R.string.default_display_name_for_root_folder));
                  View actionBarTitleView = getWindow().getDecorView().findViewById(actionBarTitleId);
                  if (actionBarTitleView != null) {    // it's null in Android 2.x
--                    actionBarTitleView.setContentDescription(getString(R.string.default_display_name_for_root_folder));
++                    actionBarTitleView.setContentDescription(
++                            getString(R.string.default_display_name_for_root_folder));
                  }
              }
-             actionBar.setNavigationMode(!noRoot ? ActionBar.NAVIGATION_MODE_STANDARD : ActionBar.NAVIGATION_MODE_LIST);
-             actionBar.setListNavigationCallbacks(mDirectories, this);   // assuming mDirectories is updated
+             actionBar.setNavigationMode(!noRoot ? ActionBar.NAVIGATION_MODE_STANDARD :
+                     ActionBar.NAVIGATION_MODE_LIST);
+             actionBar.setListNavigationCallbacks(mDirectories, this);
+             // assuming mDirectories is updated
  
          } else {
              actionBar.setDisplayHomeAsUpEnabled(true);
  
          @Override
          public void onServiceConnected(ComponentName component, IBinder service) {
--            if (component.equals(new ComponentName(FileDisplayActivity.this, FileDownloader.class))) {
++            if (component.equals(new ComponentName(
++                    FileDisplayActivity.this, FileDownloader.class))) {
                  Log_OC.d(TAG, "Download service connected");
                  mDownloaderBinder = (FileDownloaderBinder) service;
                  if (mWaitingToPreview != null)
                      if (getStorageManager() != null) {
-                         mWaitingToPreview = getStorageManager().getFileById(mWaitingToPreview.getFileId()); // update the file
+                          // update the file
+                         mWaitingToPreview =
+                                 getStorageManager().getFileById(mWaitingToPreview.getFileId());
                          if (!mWaitingToPreview.isDown()) {
                              requestForDownload();
                          }
                  }
  
-             } else if (component.equals(new ComponentName(FileDisplayActivity.this, FileUploader.class))) {
+             } else if (component.equals(new ComponentName(FileDisplayActivity.this,
+                     FileUploader.class))) {
                  Log_OC.d(TAG, "Upload service connected");
                  mUploaderBinder = (FileUploaderBinder) service;
              } else {
                  return;
              }
-             // a new chance to get the mDownloadBinder through getFileDownloadBinder() - THIS IS A MESS
+             // a new chance to get the mDownloadBinder through
+             // getFileDownloadBinder() - THIS IS A MESS
              OCFileListFragment listOfFiles = getListOfFilesFragment(); 
              if (listOfFiles != null) {
                  listOfFiles.listDirectory();
 +                // TODO Enable when "On Device" is recovered ?
 +                // listOfFiles.listDirectory(MainApp.getOnlyOnDevice());
              }
              FileFragment secondFragment = getSecondFragment();
              if (secondFragment != null && secondFragment instanceof FileDetailFragment) {
  
          @Override
          public void onServiceDisconnected(ComponentName component) {
-             if (component.equals(new ComponentName(FileDisplayActivity.this, FileDownloader.class))) {
+             if (component.equals(new ComponentName(FileDisplayActivity.this,
+                     FileDownloader.class))) {
                  Log_OC.d(TAG, "Download service disconnected");
                  mDownloaderBinder = null;
-             } else if (component.equals(new ComponentName(FileDisplayActivity.this, FileUploader.class))) {
+             } else if (component.equals(new ComponentName(FileDisplayActivity.this,
+                     FileUploader.class))) {
                  Log_OC.d(TAG, "Upload service disconnected");
                  mUploaderBinder = null;
              }
      }
  
      
-     private void onCreateShareOperationFinish(CreateShareOperation operation, RemoteOperationResult result) {
+     private void onCreateShareOperationFinish(CreateShareOperation operation,
+                                               RemoteOperationResult result) {
          if (result.isSuccess()) {
              refreshShowDetails();
              refreshListOfFilesFragment();
      }
  
      
-     private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, RemoteOperationResult result) {
+     private void onUnshareLinkOperationFinish(UnshareLinkOperation operation,
+                                               RemoteOperationResult result) {
          if (result.isSuccess()) {
              refreshShowDetails();
              refreshListOfFilesFragment();
      }
      
      /**
-      * Updates the view associated to the activity after the finish of an operation trying to remove a 
-      * file. 
+      * Updates the view associated to the activity after the finish of an operation trying to
+      * remove a file.
       * 
       * @param operation     Removal operation performed.
       * @param result        Result of the removal.
       */
-     private void onRemoveFileOperationFinish(RemoveFileOperation operation, RemoteOperationResult result) {
+     private void onRemoveFileOperationFinish(RemoveFileOperation operation,
+                                              RemoteOperationResult result) {
          dismissLoadingDialog();
          
-         Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), 
+         Toast msg = Toast.makeText(this,
+                 ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
                  Toast.LENGTH_LONG); 
          msg.show();
          
       * @param operation     Move operation performed.
       * @param result        Result of the move operation.
       */
-     private void onMoveFileOperationFinish(MoveFileOperation operation, RemoteOperationResult result) {
+     private void onMoveFileOperationFinish(MoveFileOperation operation,
+                                            RemoteOperationResult result) {
          if (result.isSuccess()) {
              dismissLoadingDialog();
              refreshListOfFilesFragment();
  
  
      /**
-      * Updates the view associated to the activity after the finish of an operation trying to rename a 
-      * file. 
+      * Updates the view associated to the activity after the finish of an operation trying to rename
+      * a file.
       * 
       * @param operation     Renaming operation performed.
       * @param result        Result of the renaming.
       */
-     private void onRenameFileOperationFinish(RenameFileOperation operation, RemoteOperationResult result) {
+     private void onRenameFileOperationFinish(RenameFileOperation operation,
+                                              RemoteOperationResult result) {
          dismissLoadingDialog();
          OCFile renamedFile = operation.getFile();
          if (result.isSuccess()) {
              FileFragment details = getSecondFragment();
              if (details != null) {
-                 if (details instanceof FileDetailFragment && renamedFile.equals(details.getFile()) ) {
+                 if (details instanceof FileDetailFragment &&
+                         renamedFile.equals(details.getFile()) ) {
                      ((FileDetailFragment) details).updateFileDetails(renamedFile, getAccount());
                      showDetails(renamedFile);
  
-                 } else if (details instanceof PreviewMediaFragment && renamedFile.equals(details.getFile())) {
+                 } else if (details instanceof PreviewMediaFragment &&
+                         renamedFile.equals(details.getFile())) {
                      ((PreviewMediaFragment) details).updateFile(renamedFile);
                      if (PreviewMediaFragment.canBePreviewed(renamedFile)) {
                          int position = ((PreviewMediaFragment)details).getPosition();
                  }
              }
              
-             if (getStorageManager().getFileById(renamedFile.getParentId()).equals(getCurrentDir())) {
+             if (getStorageManager().getFileById(renamedFile.getParentId()).equals(getCurrentDir())){
                  refreshListOfFilesFragment();
              }
  
          } else {
-             Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), 
+             Toast msg = Toast.makeText(this,
+                     ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
                      Toast.LENGTH_LONG); 
              msg.show();
              
          }
      }
  
-     private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, RemoteOperationResult result) {
+     private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation,
+                                                   RemoteOperationResult result) {
          dismissLoadingDialog();
          OCFile syncedFile = operation.getLocalFile();
          if (!result.isSuccess()) {
                  onTransferStateChanged(syncedFile, true, true);
                  
              } else {
-                 Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), 
-                         Toast.LENGTH_LONG); 
+                 Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result,
+                                 operation, getResources()), Toast.LENGTH_LONG);
                  msg.show();
              }
          }
      }
  
      /**
-      * Updates the view associated to the activity after the finish of an operation trying create a new folder
+      * Updates the view associated to the activity after the finish of an operation trying create a
+      * new folder
       * 
       * @param operation     Creation operation performed.
       * @param result        Result of the creation.
       */
-     private void onCreateFolderOperationFinish(CreateFolderOperation operation, RemoteOperationResult result) {
+     private void onCreateFolderOperationFinish(CreateFolderOperation operation,
+                                                RemoteOperationResult result) {
          if (result.isSuccess()) {
              dismissLoadingDialog();
              refreshListOfFilesFragment();
      public void onTransferStateChanged(OCFile file, boolean downloading, boolean uploading) {
          refreshListOfFilesFragment();
          FileFragment details = getSecondFragment();
-         if (details != null && details instanceof FileDetailFragment && file.equals(details.getFile()) ) {
+         if (details != null && details instanceof FileDetailFragment &&
+                 file.equals(details.getFile()) ) {
              if (downloading || uploading) {
                  ((FileDetailFragment)details).updateFileDetails(file, getAccount());
              } else {
                  
          // perform folder synchronization
          RemoteOperation synchFolderOp = new RefreshFolderOperation( folder,
-                                                                         currentSyncTime, 
-                                                                         false,
-                                                                         getFileOperationsHelper().isSharedSupported(),
-                                                                         ignoreETag,
-                                                                         getStorageManager(), 
-                                                                         getAccount(), 
-                                                                         getApplicationContext()
-                                                                       );
+                 currentSyncTime,
+                 false,
+                 getFileOperationsHelper().isSharedSupported(),
+                 ignoreETag,
+                 getStorageManager(),
+                 getAccount(),
+                 getApplicationContext()
+         );
          synchFolderOp.execute(getAccount(), MainApp.getAppContext(), this, null, null);
          
          setSupportProgressBarIndeterminateVisibility(true);
      public void showUntrustedCertDialog(RemoteOperationResult result) {
          // Show a dialog with the certificate info
          SslUntrustedCertDialog dialog = SslUntrustedCertDialog.newInstanceForFullSslError(
 -                (CertificateCombinedException)result.getException());
 +                (CertificateCombinedException) result.getException());
          FragmentManager fm = getSupportFragmentManager();
          FragmentTransaction ft = fm.beginTransaction();
          dialog.show(ft, DIALOG_UNTRUSTED_CERT);
       * Stars the preview of an already down media {@link OCFile}.
       * 
       * @param file                      Media {@link OCFile} to preview.
-      * @param startPlaybackPosition     Media position where the playback will be started, in milliseconds.
-      * @param autoplay                  When 'true', the playback will start without user interactions.
+      * @param startPlaybackPosition     Media position where the playback will be started,
+      *                                  in milliseconds.
+      * @param autoplay                  When 'true', the playback will start without user
+      *                                  interactions.
       */
      public void startMediaPreview(OCFile file, int startPlaybackPosition, boolean autoplay) {
-         Fragment mediaFragment = new PreviewMediaFragment(file, getAccount(), startPlaybackPosition, autoplay);
+         Fragment mediaFragment = new PreviewMediaFragment(file, getAccount(), startPlaybackPosition,
+                 autoplay);
          setSecondFragment(mediaFragment);
          updateFragmentsVisibility(true);
          updateNavigationElementsInActionBar(file);
      private void sortByName(boolean ascending){
          getListOfFilesFragment().sortByName(ascending);
      }
 +    
 +    public void restart(){
 +        Intent i = new Intent(this, FileDisplayActivity.class);
 +        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 +        startActivity(i);
 +    }
 +
 +    public void closeDrawer() {
 +        mDrawerLayout.closeDrawers();
 +    }
  
 +    private class DrawerItemClickListener implements ListView.OnItemClickListener {
 +        @Override
 +        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 +            if (mShowAccounts && position > 0){
 +                position = position - 1;
 +            }
 +            switch (position){
 +                case 0: // Accounts
 +                    mShowAccounts = !mShowAccounts;
 +                    mNavigationDrawerAdapter.setShowAccounts(mShowAccounts);
 +                    mNavigationDrawerAdapter.notifyDataSetChanged();
 +                    break;
 +
 +                case 1: // All Files
 +                    // TODO Enable when "On Device" is recovered ?
 +                    //MainApp.showOnlyFilesOnDevice(false);
 +                    mDrawerLayout.closeDrawers();
 +                    break;
 +
 +                // TODO Enable when "On Device" is recovered ?
 +//                case 2:
 +//                    MainApp.showOnlyFilesOnDevice(true);
 +//                    mDrawerLayout.closeDrawers();
 +//                    break;
 +
 +                case 2: // Settings
 +                    Intent settingsIntent = new Intent(getApplicationContext(),
 +                            Preferences.class);
 +                    startActivity(settingsIntent);
 +                    break;
 +
 +                case 3: // Logs
 +                    Intent loggerIntent = new Intent(getApplicationContext(),
 +                            LogHistoryActivity.class);
 +                    startActivity(loggerIntent);
 +                    break;
 +            }
 +        }
 +    }
  }
  
  package com.owncloud.android.ui.activity;
  
 -import java.io.IOException;
 -
  import android.accounts.Account;
  import android.accounts.AccountManager;
  import android.accounts.AuthenticatorException;
 -import android.accounts.OperationCanceledException;
  import android.content.BroadcastReceiver;
  import android.content.Context;
  import android.content.Intent;
@@@ -31,17 -34,17 +31,17 @@@ import android.os.Bundle
  import android.os.Parcelable;
  import android.support.v4.app.Fragment;
  import android.support.v4.app.FragmentTransaction;
+ import android.support.v7.app.ActionBar;
  import android.util.Log;
+ import android.view.Menu;
+ import android.view.MenuInflater;
+ import android.view.MenuItem;
  import android.view.View;
  import android.view.View.OnClickListener;
+ import android.view.Window;
  import android.widget.Button;
  import android.widget.Toast;
  
- import com.actionbarsherlock.app.ActionBar;
- import com.actionbarsherlock.view.Menu;
- import com.actionbarsherlock.view.MenuInflater;
- import com.actionbarsherlock.view.MenuItem;
- import com.actionbarsherlock.view.Window;
  import com.owncloud.android.R;
  import com.owncloud.android.datamodel.OCFile;
  import com.owncloud.android.lib.common.OwnCloudAccount;
@@@ -138,7 -141,7 +138,7 @@@ public class FolderPickerActivity exten
              
              if (!stateWasRecovered) {
                  OCFileListFragment listOfFolders = getListOfFilesFragment(); 
 -                listOfFolders.listDirectory(folder);   
 +                listOfFolders.listDirectory(folder/*, false*/);
                  
                  startSyncFolderOperation(folder, false);
              }
      
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
-         MenuInflater inflater = getSherlock().getMenuInflater();
+         MenuInflater inflater = getMenuInflater();
          inflater.inflate(R.menu.main_menu, menu);
          menu.findItem(R.id.action_upload).setVisible(false);
 -        menu.findItem(R.id.action_settings).setVisible(false);
 -        menu.findItem(R.id.action_sync_account).setVisible(false);
 -        menu.findItem(R.id.action_logger).setVisible(false);
          menu.findItem(R.id.action_sort).setVisible(false);
          return true;
      }
      
      protected void refreshListOfFilesFragment() {
          OCFileListFragment fileListFragment = getListOfFilesFragment();
 -        if (fileListFragment != null) { 
 +        if (fileListFragment != null) {
              fileListFragment.listDirectory();
 +            // TODO Enable when "On Device" is recovered ?
 +            // fileListFragment.listDirectory(false);
          }
      }
  
          if (listOfFiles != null) {  // should never be null, indeed
              OCFile root = getStorageManager().getFileByPath(OCFile.ROOT_PATH);
              listOfFiles.listDirectory(root);
 +            // TODO Enable when "On Device" is recovered ?
 +            // listOfFiles.listDirectory(root, false);
              setFile(listOfFiles.getCurrentFile());
              updateNavigationElementsInActionBar();
              startSyncFolderOperation(root, false);
                                  OCFileListFragment fileListFragment = getListOfFilesFragment();
                                  if (fileListFragment != null) {
                                      fileListFragment.listDirectory(currentDir);
 +                                    // TODO Enable when "On Device" is recovered ?
 +                                    // fileListFragment.listDirectory(currentDir, false);
                                  }
                              }
                              setFile(currentFile);
@@@ -40,21 -40,20 +40,21 @@@ import android.preference.CheckBoxPrefe
  import android.preference.Preference;
  import android.preference.Preference.OnPreferenceChangeListener;
  import android.preference.Preference.OnPreferenceClickListener;
+ import android.preference.PreferenceActivity;
  import android.preference.PreferenceCategory;
  import android.preference.PreferenceManager;
+ import android.support.v7.app.ActionBar;
  import android.view.ContextMenu;
  import android.view.ContextMenu.ContextMenuInfo;
+ import android.view.Menu;
+ import android.view.MenuItem;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.AdapterView.OnItemLongClickListener;
  import android.widget.ListAdapter;
  import android.widget.ListView;
  
- import com.actionbarsherlock.app.ActionBar;
- import com.actionbarsherlock.app.SherlockPreferenceActivity;
- import com.actionbarsherlock.view.Menu;
- import com.actionbarsherlock.view.MenuItem;
 +import com.owncloud.android.BuildConfig;
  import com.owncloud.android.MainApp;
  import com.owncloud.android.R;
  import com.owncloud.android.authentication.AccountUtils;
@@@ -74,7 -73,7 +74,7 @@@ import com.owncloud.android.utils.Displ
  /**
   * An Activity that allows the user to change the application's settings.
   */
- public class Preferences extends SherlockPreferenceActivity
+ public class Preferences extends PreferenceActivity
          implements AccountManagerCallback<Boolean>, ComponentsGetter {
      
      private static final String TAG = "OwnCloudPreferences";
          mDbHandler = new DbHandler(getBaseContext());
          addPreferencesFromResource(R.xml.preferences);
  
-         ActionBar actionBar = getSherlock().getActionBar();
-         actionBar.setIcon(DisplayUtils.getSeasonalIconId());
-         actionBar.setDisplayHomeAsUpEnabled(true);
-         actionBar.setTitle(R.string.actionbar_settings);
+         // TODO: Add Toolbar
+ //        ActionBar actionBar = getSherlock().getActionBar();
+ //        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
+ //        actionBar.setDisplayHomeAsUpEnabled(true);
+ //        actionBar.setTitle(R.string.actionbar_settings);
  
          // For adding content description tag to a title field in the action bar
          int actionBarTitleId = getResources().getIdentifier("action_bar_title", "id", "android");
              }
              
          }
 +
 +        if (BuildConfig.DEBUG) {
 +            Preference pLog =  findPreference("log");
 +            if (pLog != null ){
 +                pLog.setOnPreferenceClickListener(new OnPreferenceClickListener() {
 +                    @Override
 +                    public boolean onPreferenceClick(Preference preference) {
 +                        Intent loggerIntent = new Intent(getApplicationContext(),LogHistoryActivity.class);
 +                        startActivity(loggerIntent);
 +                        return true;
 +                    }
 +                });
 +            }
 +        }
          
 -       
         boolean recommendEnabled = getResources().getBoolean(R.bool.recommend_enabled);
         Preference pRecommend =  findPreference("recommend");
          if (pRecommend != null){
                          Account currentAccount = AccountUtils.getCurrentOwnCloudAccount(Preferences.this);
                          String username = currentAccount.name.substring(0, currentAccount.name.lastIndexOf('@'));
                          
 -                        String recommendSubject = String.format(getString(R.string.recommend_subject), appName);
 +                        String recommendSubject = String.format(getString(R.string.recommend_subject),
 +                                appName);
                          String recommendText = String.format(getString(R.string.recommend_text),
                                  appName, downloadUrl, username);
                          
@@@ -56,6 -56,8 +56,8 @@@ import android.provider.MediaStore.Vide
  import android.support.v4.app.Fragment;
  import android.support.v4.app.FragmentManager;
  import android.support.v4.app.FragmentTransaction;
+ import android.support.v7.app.ActionBar;
+ import android.view.MenuItem;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.AdapterView.OnItemClickListener;
@@@ -65,16 -67,14 +67,14 @@@ import android.widget.ListView
  import android.widget.SimpleAdapter;
  import android.widget.Toast;
  
- import com.actionbarsherlock.app.ActionBar;
- import com.actionbarsherlock.view.MenuItem;
  import com.owncloud.android.MainApp;
  import com.owncloud.android.R;
  import com.owncloud.android.authentication.AccountAuthenticator;
  import com.owncloud.android.datamodel.OCFile;
  import com.owncloud.android.files.services.FileUploader;
 +import com.owncloud.android.lib.common.utils.Log_OC;
  import com.owncloud.android.lib.common.operations.RemoteOperation;
  import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 -import com.owncloud.android.lib.common.utils.Log_OC;
  import com.owncloud.android.operations.CreateFolderOperation;
  import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
  import com.owncloud.android.ui.dialog.LoadingDialog;
@@@ -220,7 -220,8 +220,8 @@@ public class Uploader extends FileActiv
              builder.setPositiveButton(R.string.uploader_wrn_no_account_setup_btn_text, new OnClickListener() {
                  @Override
                  public void onClick(DialogInterface dialog, int which) {
-                     if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.ECLAIR_MR1) {
+                     if (android.os.Build.VERSION.SDK_INT >
+                             android.os.Build.VERSION_CODES.ECLAIR_MR1) {
                          // using string value since in API7 this
                          // constatn is not defined
                          // in API7 < this constatant is defined in
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
          // click on folder in the list
          Log_OC.d(TAG, "on item click");
 -        Vector<OCFile> tmpfiles = getStorageManager().getFolderContent(mFile);
 +        // TODO Enable when "On Device" is recovered ?
 +        Vector<OCFile> tmpfiles = getStorageManager().getFolderContent(mFile /*, false*/);
          if (tmpfiles.size() <= 0) return;
          // filter on dirtype
          Vector<OCFile> files = new Vector<OCFile>();
  
          mFile = getStorageManager().getFileByPath(full_path);
          if (mFile != null) {
 -            Vector<OCFile> files = getStorageManager().getFolderContent(mFile);
 +            // TODO Enable when "On Device" is recovered ?
 +            Vector<OCFile> files = getStorageManager().getFolderContent(mFile/*, false*/);
              List<HashMap<String, Object>> data = new LinkedList<HashMap<String,Object>>();
              for (OCFile f : files) {
                  HashMap<String, Object> h = new HashMap<String, Object>();
@@@ -93,7 -93,7 +93,7 @@@ implements ConfirmationDialogFragmentLi
       */
      @Override
      public void onConfirmation(String callerTag) {
-         ComponentsGetter cg = (ComponentsGetter)getSherlockActivity();
+         ComponentsGetter cg = (ComponentsGetter)getActivity();
          FileDataStorageManager storageManager = cg.getStorageManager();
          if (storageManager.getFileById(mTargetFile.getFileId()) != null) {
              cg.getFileOperationsHelper().removeFile(mTargetFile, false);
       */
      @Override
      public void onNeutral(String callerTag) {
-         ComponentsGetter cg = (ComponentsGetter)getSherlockActivity();
+         ComponentsGetter cg = (ComponentsGetter)getActivity();
          cg.getFileOperationsHelper().removeFile(mTargetFile, true);
          
          FileDataStorageManager storageManager = cg.getStorageManager();
          
          boolean containsKeepInSync = false;
          if (mTargetFile.isFolder()) {
 -            Vector<OCFile> files = storageManager.getFolderContent(mTargetFile);
 +            // TODO Enable when "On Device" is recovered ?
 +            Vector<OCFile> files = storageManager.getFolderContent(mTargetFile/*, false*/);
              for(OCFile file: files) {
                  containsKeepInSync = file.keepInSync() || containsKeepInSync;
  
@@@ -77,8 -77,7 +77,8 @@@ public class OCFileListFragment extend
      private boolean mJustFolders;
      
      private OCFile mTargetFile;
 -
 +    
 +   
      
      /**
       * {@inheritDoc}
          mJustFolders = (args == null) ? false : args.getBoolean(ARG_JUST_FOLDERS, false);
          mAdapter = new FileListListAdapter(
                  mJustFolders,
-                 getSherlockActivity(),
+                 getActivity(),
                  mContainerActivity
                  );
          setListAdapter(mAdapter);
                  moveCount++;
              }   // exit is granted because storageManager.getFileByPath("/") never returns null
              mFile = parentDir;
 -            
 -            listDirectory(mFile);
 +
 +            // TODO Enable when "On Device" is recovered ?
 +            listDirectory(mFile /*, MainApp.getOnlyOnDevice()*/);
  
              onRefresh(false);
              
          if (file != null) {
              if (file.isFolder()) { 
                  // update state and view of this fragment
 -                listDirectory(file);
 +                // TODO Enable when "On Device" is recovered ?
 +                listDirectory(file/*, MainApp.getOnlyOnDevice()*/);
                  // then, notify parent activity to let it update its state and view
                  mContainerActivity.onBrowsedDownTo(file);
                  // save index and top position
          boolean allowContextualActions = 
                  (args == null) ? true : args.getBoolean(ARG_ALLOW_CONTEXTUAL_ACTIONS, true); 
          if (allowContextualActions) {
-             MenuInflater inflater = getSherlockActivity().getMenuInflater();
+             MenuInflater inflater = getActivity().getMenuInflater();
              inflater.inflate(R.menu.file_actions_menu, menu);
              AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
              OCFile targetFile = (OCFile) mAdapter.getItem(info.position);
                      targetFile,
                      mContainerActivity.getStorageManager().getAccount(),
                      mContainerActivity,
-                     getSherlockActivity()
+                     getActivity()
                  );
                  mf.filter(menu);
              }
                   
              /// TODO break this direct dependency on FileDisplayActivity... if possible
              MenuItem item = menu.findItem(R.id.action_open_file_with);
-             FileFragment frag = ((FileDisplayActivity)getSherlockActivity()).getSecondFragment();
+             FileFragment frag = ((FileDisplayActivity)getActivity()).getSecondFragment();
              if (frag != null && frag instanceof FileDetailFragment && 
                      frag.getFile().getFileId() == targetFile.getFileId()) {
                  item = menu.findItem(R.id.action_see_details);
      /**
       * Calls {@link OCFileListFragment#listDirectory(OCFile)} with a null parameter
       */
 -    public void listDirectory(){
 +    public void listDirectory(/*boolean onlyOnDevice*/){
          listDirectory(null);
 +        // TODO Enable when "On Device" is recovered ?
 +        // listDirectory(null, onlyOnDevice);
 +    }
 +    
 +    public void refreshDirectory(){
 +        // TODO Enable when "On Device" is recovered ?
 +        listDirectory(getCurrentFile()/*, MainApp.getOnlyOnDevice()*/);
      }
      
      /**
       * 
       * @param directory File to be listed
       */
 -    public void listDirectory(OCFile directory) {
 +    public void listDirectory(OCFile directory/*, boolean onlyOnDevice*/) {
          FileDataStorageManager storageManager = mContainerActivity.getStorageManager();
          if (storageManager != null) {
  
                  directory = storageManager.getFileById(directory.getParentId());
              }
  
 -            mAdapter.swapDirectory(directory, storageManager);
 +            // TODO Enable when "On Device" is recovered ?
 +            mAdapter.swapDirectory(directory, storageManager/*, onlyOnDevice*/);
              if (mFile == null || !mFile.equals(directory)) {
                  mCurrentListView.setSelection(0);
              }
      public void sortBySize(boolean descending) {
          mAdapter.setSortOrder(FileStorageUtils.SORT_SIZE, descending);
      }  
 -
 +    
 +   
 +    
  }
@@@ -32,11 -32,11 +32,11 @@@ import android.os.Handler
  import android.os.IBinder;
  import android.os.Message;
  import android.support.v4.view.ViewPager;
+ import android.support.v7.app.ActionBar;
+ import android.view.MenuItem;
  import android.view.View;
+ import android.view.Window;
  
- import com.actionbarsherlock.app.ActionBar;
- import com.actionbarsherlock.view.MenuItem;
- import com.actionbarsherlock.view.Window;
  import com.ortiz.touch.ExtendedViewPager;
  import com.owncloud.android.R;
  import com.owncloud.android.authentication.AccountUtils;
@@@ -63,9 -63,9 +63,9 @@@ import com.owncloud.android.utils.Displ
  /**
   *  Holds a swiping galley where image files contained in an ownCloud directory are shown
   */
- public class PreviewImageActivity extends FileActivity implements 
-  FileFragment.ContainerActivity,
- ViewPager.OnPageChangeListener, OnRemoteOperationListener {
+ public class PreviewImageActivity extends FileActivity implements
+         FileFragment.ContainerActivity,
        ViewPager.OnPageChangeListener, OnRemoteOperationListener {
      
      public static final int DIALOG_SHORT_WAIT = 0;
  
  
      private void initViewPager() {
          // get parent from path
-         String parentPath = getFile().getRemotePath().substring(0, getFile().getRemotePath().lastIndexOf(getFile().getFileName()));
+         String parentPath = getFile().getRemotePath().substring(0,
+                 getFile().getRemotePath().lastIndexOf(getFile().getFileName()));
          OCFile parentFolder = getStorageManager().getFileByPath(parentPath);
          if (parentFolder == null) {
              // should not be necessary
              parentFolder = getStorageManager().getFileByPath(OCFile.ROOT_PATH);
          }
++
 +        // TODO Enable when "On Device" is recovered ?
          mPreviewImagePagerAdapter = new PreviewImagePagerAdapter(getSupportFragmentManager(),
 -                parentFolder, getAccount(), getStorageManager());
 +                parentFolder, getAccount(), getStorageManager()/*, MainApp.getOnlyOnDevice()*/);
++
          mViewPager = (ExtendedViewPager) findViewById(R.id.fragmentPager);
-         int position = mHasSavedPosition ? mSavedPosition : mPreviewImagePagerAdapter.getFilePosition(getFile());
+         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;
          }
      }
      }
      
      
-     private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, RemoteOperationResult result) {
+     private void onUnshareLinkOperationFinish(UnshareLinkOperation operation,
+                                               RemoteOperationResult result) {
          if (result.isSuccess()) {
              OCFile file = getStorageManager().getFileByPath(getFile().getRemotePath());
              if (file != null) {
              
      }
      
-     private void onCreateShareOperationFinish(CreateShareOperation operation, RemoteOperationResult result) {
+     private void onCreateShareOperationFinish(CreateShareOperation operation,
+                                               RemoteOperationResult result) {
          if (result.isSuccess()) {
              OCFile file = getStorageManager().getFileByPath(getFile().getRemotePath());
              if (file != null) {
          @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;
              }
          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) {
       * 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
  
                  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 (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");