Merge branch 'develop' into imageGrid
authorDavid A. Velasco <dvelasco@solidgear.es>
Mon, 2 Feb 2015 12:48:30 +0000 (13:48 +0100)
committerDavid A. Velasco <dvelasco@solidgear.es>
Mon, 2 Feb 2015 12:48:30 +0000 (13:48 +0100)
1  2 
src/com/owncloud/android/ui/adapter/FileListListAdapter.java
src/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@@ -1,6 -1,6 +1,6 @@@
  /* ownCloud Android client application\r
   *   Copyright (C) 2011  Bartek Przybylski\r
-- *   Copyright (C) 2012-2014 ownCloud Inc.\r
++ *   Copyright (C) 2012-2015 ownCloud Inc.\r
   *\r
   *   This program is free software: you can redistribute it and/or modify\r
   *   it under the terms of the GNU General Public License version 2,\r
@@@ -19,28 -19,21 +19,21 @@@ package com.owncloud.android.ui.adapter
  \r
  \r
  import java.io.File;\r
- import java.util.Collections;\r
- import java.util.Comparator;\r
  import java.util.Vector;\r
  \r
- import third_parties.daveKoeller.AlphanumComparator;\r
  import android.accounts.Account;\r
  import android.content.Context;\r
  import android.content.SharedPreferences;\r
  import android.graphics.Bitmap;\r
- import android.graphics.BitmapFactory;\r
- import android.media.ThumbnailUtils;\r
  import android.preference.PreferenceManager;\r
  import android.text.format.DateUtils;\r
  import android.view.LayoutInflater;\r
  import android.view.View;\r
  import android.view.ViewGroup;\r
  import android.widget.BaseAdapter;\r
- import android.widget.Filter;\r
- import android.widget.Filterable;\r
 +import android.widget.GridView;\r
  import android.widget.ImageView;\r
  import android.widget.ListAdapter;\r
 -import android.widget.ListView;\r
  import android.widget.TextView;\r
  \r
  import com.owncloud.android.R;\r
@@@ -50,6 -43,7 +43,7 @@@ import com.owncloud.android.datamodel.O
  import com.owncloud.android.datamodel.ThumbnailsCacheManager;\r
  import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;\r
  import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;\r
+ import com.owncloud.android.services.OperationsService.OperationsServiceBinder;\r
  import com.owncloud.android.ui.activity.ComponentsGetter;\r
  import com.owncloud.android.utils.DisplayUtils;\r
  import com.owncloud.android.utils.FileStorageUtils;\r
   */\r
  public class FileListListAdapter extends BaseAdapter implements ListAdapter {\r
      private final static String PERMISSION_SHARED_WITH_ME = "S";\r
 -    \r
 +\r
      private Context mContext;\r
      private OCFile mFile = null;\r
      private Vector<OCFile> mFiles = null;\r
 +    private Vector<OCFile> mFilesOrig = new Vector<OCFile>();\r
      private boolean mJustFolders;\r
  \r
      private FileDataStorageManager mStorageManager;\r
      private Account mAccount;\r
      private ComponentsGetter mTransferServiceGetter;\r
-     private Integer mSortOrder;\r
-     public static final Integer SORT_NAME = 0;\r
-     public static final Integer SORT_DATE = 1;\r
-     public static final Integer SORT_SIZE = 2;\r
-     private Boolean mSortAscending;\r
\r
 +    private enum ViewType {LIST_ITEM, GRID_IMAGE, GRID_ITEM };\r
++\r
      private SharedPreferences mAppPreferences;\r
      \r
      public FileListListAdapter(\r
              boolean justFolders, \r
-             Context context, \r
+             Context context,\r
              ComponentsGetter transferServiceGetter\r
              ) {\r
 -\r
 +        \r
          mJustFolders = justFolders;\r
          mContext = context;\r
          mAccount = AccountUtils.getCurrentOwnCloudAccount(mContext);\r
 -\r
          mTransferServiceGetter = transferServiceGetter;\r
-         \r
\r
          mAppPreferences = PreferenceManager\r
                  .getDefaultSharedPreferences(mContext);\r
          \r
          \r
          // initialise thumbnails cache on background thread\r
          new ThumbnailsCacheManager.InitDiskCacheTask().execute();\r
 -\r
      }\r
      \r
      @Override\r
  \r
      @Override\r
      public View getView(int position, View convertView, ViewGroup parent) {\r
 +\r
 +        boolean fileView = DisplayUtils.decideViewLayout(mFiles);\r
 +\r
          View view = convertView;\r
 -        if (view == null) {\r
 -            LayoutInflater inflator = (LayoutInflater) mContext\r
 -                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);\r
 -            view = inflator.inflate(R.layout.list_item, null);\r
 -        }\r
 -         \r
 +        OCFile file = null;\r
 +        LayoutInflater inflator = (LayoutInflater) mContext\r
 +                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);\r
 +\r
          if (mFiles != null && mFiles.size() > position) {\r
 -            OCFile file = mFiles.get(position);\r
 -            TextView fileName = (TextView) view.findViewById(R.id.Filename);           \r
 -            String name = file.getFileName();\r
 +            file = mFiles.get(position);\r
 +        }\r
 +\r
 +        // Find out which layout should be displayed\r
 +        ViewType viewType;\r
 +        if (!fileView){\r
 +            viewType = ViewType.LIST_ITEM;\r
 +        } else if (file.isImage()){\r
 +            viewType = ViewType.GRID_IMAGE;\r
 +        } else {\r
 +            viewType = ViewType.GRID_ITEM;\r
 +        }\r
 +\r
 +        // Create View\r
 +        switch (viewType){\r
 +            case GRID_IMAGE:\r
 +                view = inflator.inflate(R.layout.grid_image, null);\r
 +                break;\r
 +            case GRID_ITEM:\r
 +                view = inflator.inflate(R.layout.grid_item, null);\r
 +                break;\r
 +            case LIST_ITEM:\r
 +                view = inflator.inflate(R.layout.list_item, null);\r
 +                break;\r
 +        }\r
  \r
 -            fileName.setText(name);\r
 -            ImageView fileIcon = (ImageView) view.findViewById(R.id.imageView1);\r
 +        view.invalidate();\r
 +\r
 +        if (file != null){\r
 +\r
 +            ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail);\r
+             fileIcon.setTag(file.getFileId());\r
 -            ImageView sharedIconV = (ImageView) view.findViewById(R.id.sharedIcon);\r
 -            ImageView sharedWithMeIconV = (ImageView) view.findViewById(R.id.sharedWithMeIcon);\r
 -            sharedWithMeIconV.setVisibility(View.GONE);\r
 -\r
 -            ImageView localStateView = (ImageView) view.findViewById(R.id.imageView2);\r
 -            localStateView.bringToFront();\r
 -            FileDownloaderBinder downloaderBinder = mTransferServiceGetter.getFileDownloaderBinder();\r
 -            FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder();\r
 -            boolean downloading = (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, file));\r
 -            OperationsServiceBinder opsBinder = mTransferServiceGetter.getOperationsServiceBinder();\r
 -            downloading |= (opsBinder != null && opsBinder.isSynchronizing(mAccount, file.getRemotePath()));\r
 -            if (downloading) {\r
 -                localStateView.setImageResource(R.drawable.downloading_file_indicator);\r
 -                localStateView.setVisibility(View.VISIBLE);\r
 -            } else if (uploaderBinder != null && uploaderBinder.isUploading(mAccount, file)) {\r
 -                localStateView.setImageResource(R.drawable.uploading_file_indicator);\r
 -                localStateView.setVisibility(View.VISIBLE);\r
 -            } else if (file.isDown()) {\r
 -                localStateView.setImageResource(R.drawable.local_file_indicator);\r
 -                localStateView.setVisibility(View.VISIBLE);\r
 -            } else {\r
 -                localStateView.setVisibility(View.INVISIBLE);\r
 +            TextView fileName;\r
 +            String name;\r
 +\r
 +            switch (viewType){\r
 +                case LIST_ITEM:\r
 +                    TextView fileSizeV = (TextView) view.findViewById(R.id.file_size);\r
 +                    TextView lastModV = (TextView) view.findViewById(R.id.last_mod);\r
 +                    ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);\r
 +\r
 +                    lastModV.setVisibility(View.VISIBLE);\r
 +                    lastModV.setText(showRelativeTimestamp(file));\r
 +\r
 +                    checkBoxV.setVisibility(View.GONE);\r
 +\r
 +                    fileSizeV.setVisibility(View.VISIBLE);\r
 +                    fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));\r
 +\r
 +                    if (!file.isFolder()) {\r
 +                        GridView parentList = (GridView)parent;\r
 +                        if (parentList.getChoiceMode() == GridView.CHOICE_MODE_NONE) {\r
 +                            checkBoxV.setVisibility(View.GONE);\r
 +                        } else {\r
 +                            if (parentList.isItemChecked(position)) {\r
 +                                checkBoxV.setImageResource(android.R.drawable.checkbox_on_background);\r
 +                            } else {\r
 +                                checkBoxV.setImageResource(android.R.drawable.checkbox_off_background);\r
 +                            }\r
 +                            checkBoxV.setVisibility(View.VISIBLE);\r
 +                        }\r
 +\r
 +                    } else { //Folder\r
 +                        fileSizeV.setVisibility(View.INVISIBLE);\r
 +                    }\r
 +\r
 +                case GRID_ITEM:\r
 +                    // filename\r
 +                    fileName = (TextView) view.findViewById(R.id.Filename);\r
 +                    name = file.getFileName();\r
 +                    fileName.setText(name);\r
 +\r
 +                case GRID_IMAGE:\r
 +                    // sharedIcon\r
 +                    ImageView sharedIconV = (ImageView) view.findViewById(R.id.sharedIcon);\r
 +                    if (file.isShareByLink()) {\r
 +                        sharedIconV.setVisibility(View.VISIBLE);\r
 +                        sharedIconV.bringToFront();\r
 +                    } else {\r
 +                        sharedIconV.setVisibility(View.GONE);\r
 +                    }\r
 +\r
 +                    // local state\r
 +                    ImageView localStateView = (ImageView) view.findViewById(R.id.localFileIndicator);\r
 +                    localStateView.bringToFront();\r
 +                    FileDownloaderBinder downloaderBinder = mTransferServiceGetter.getFileDownloaderBinder();\r
 +                    FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder();\r
-                     if (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, file)) {\r
++                    boolean downloading = (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, file));\r
++                    OperationsServiceBinder opsBinder = mTransferServiceGetter.getOperationsServiceBinder();\r
++                    downloading |= (opsBinder != null && opsBinder.isSynchronizing(mAccount, file.getRemotePath()));\r
++                    if (downloading) {\r
 +                        localStateView.setImageResource(R.drawable.downloading_file_indicator);\r
 +                        localStateView.setVisibility(View.VISIBLE);\r
 +                    } else if (uploaderBinder != null && uploaderBinder.isUploading(mAccount, file)) {\r
 +                        localStateView.setImageResource(R.drawable.uploading_file_indicator);\r
 +                        localStateView.setVisibility(View.VISIBLE);\r
 +                    } else if (file.isDown()) {\r
 +                        localStateView.setImageResource(R.drawable.local_file_indicator);\r
 +                        localStateView.setVisibility(View.VISIBLE);\r
 +                    } else {\r
 +                        localStateView.setVisibility(View.INVISIBLE);\r
 +                    }\r
 +\r
 +                    // share with me icon\r
 +                    if (!file.isFolder()) {\r
 +                        ImageView sharedWithMeIconV = (ImageView) view.findViewById(R.id.sharedWithMeIcon);\r
 +                        sharedWithMeIconV.bringToFront();\r
 +                        if (checkIfFileIsSharedWithMe(file)) {\r
 +                            sharedWithMeIconV.setVisibility(View.VISIBLE);\r
 +                        } else {\r
 +                            sharedWithMeIconV.setVisibility(View.GONE);\r
 +                        }\r
 +                    }\r
 +\r
 +                    break;\r
              }\r
              \r
 -            TextView fileSizeV = (TextView) view.findViewById(R.id.file_size);\r
 -            TextView lastModV = (TextView) view.findViewById(R.id.last_mod);\r
 -            ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);\r
 +            // For all Views\r
              \r
 +            // this if-else is needed even though favorite icon is visible by default\r
 +            // because android reuses views in listview\r
 +            if (!file.keepInSync()) {\r
 +                view.findViewById(R.id.favoriteIcon).setVisibility(View.GONE);\r
 +            } else {\r
 +                view.findViewById(R.id.favoriteIcon).setVisibility(View.VISIBLE);\r
 +            }\r
 +            \r
 +            // No Folder\r
              if (!file.isFolder()) {\r
 -                fileSizeV.setVisibility(View.VISIBLE);\r
 -                fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));\r
 -                lastModV.setVisibility(View.VISIBLE);\r
 -                lastModV.setText(showRelativeTimestamp(file));\r
 -                // this if-else is needed even thoe fav icon is visible by default\r
 -                // because android reuses views in listview\r
 -                if (!file.keepInSync()) {\r
 -                    view.findViewById(R.id.imageView3).setVisibility(View.GONE);\r
 -                } else {\r
 -                    view.findViewById(R.id.imageView3).setVisibility(View.VISIBLE);\r
 -                }\r
 -                \r
 -                ListView parentList = (ListView)parent;\r
 -                if (parentList.getChoiceMode() == ListView.CHOICE_MODE_NONE) { \r
 -                    checkBoxV.setVisibility(View.GONE);\r
 -                } else {\r
 -                    if (parentList.isItemChecked(position)) {\r
 -                        checkBoxV.setImageResource(android.R.drawable.checkbox_on_background);\r
 -                    } else {\r
 -                        checkBoxV.setImageResource(android.R.drawable.checkbox_off_background);\r
 -                    }\r
 -                    checkBoxV.setVisibility(View.VISIBLE);\r
 -                }               \r
 -                \r
 -                // get Thumbnail if file is image\r
                  if (file.isImage() && file.getRemoteId() != null){\r
 -                     // Thumbnail in Cache?\r
 +                    // Thumbnail in Cache?\r
                      Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(\r
                              String.valueOf(file.getRemoteId())\r
 -                    );\r
 +                            );\r
                      if (thumbnail != null && !file.needsUpdateThumbnail()){\r
                          fileIcon.setImageBitmap(thumbnail);\r
                      } else {\r
 -\r
                          // generate new Thumbnail\r
                          if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) {\r
                              final ThumbnailsCacheManager.ThumbnailGenerationTask task =\r
                                      new ThumbnailsCacheManager.ThumbnailGenerationTask(\r
                                              fileIcon, mStorageManager, mAccount\r
 -                                    );\r
 +                                            );\r
                              if (thumbnail == null) {\r
                                  thumbnail = ThumbnailsCacheManager.mDefaultImg;\r
                              }\r
                                      mContext.getResources(), \r
                                      thumbnail, \r
                                      task\r
 -                            );\r
 +                                    );\r
                              fileIcon.setImageDrawable(asyncDrawable);\r
                              task.execute(file);\r
                          }\r
                  } else {\r
                      fileIcon.setImageResource(DisplayUtils.getFileTypeIconId(file.getMimetype(), file.getFileName()));\r
                  }\r
 -\r
 -                if (checkIfFileIsSharedWithMe(file)) {\r
 -                    sharedWithMeIconV.setVisibility(View.VISIBLE);\r
 -                }\r
 -            } \r
 -            else {\r
 -                  // TODO Re-enable when server supports folder-size calculation\r
 -//                if (FileStorageUtils.getDefaultSavePathFor(mAccount.name, file) != null){\r
 -//                    fileSizeV.setVisibility(View.VISIBLE);\r
 -//                    fileSizeV.setText(getFolderSizeHuman(FileStorageUtils.getDefaultSavePathFor(mAccount.name, file)));\r
 -//                } else {\r
 -                    fileSizeV.setVisibility(View.INVISIBLE);\r
 -//                }\r
 -\r
 -                lastModV.setVisibility(View.VISIBLE);\r
 -                lastModV.setText(showRelativeTimestamp(file));\r
 -                checkBoxV.setVisibility(View.GONE);\r
 -                view.findViewById(R.id.imageView3).setVisibility(View.GONE);\r
 -\r
 +            } else {\r
 +                // Folder\r
                  if (checkIfFileIsSharedWithMe(file)) {\r
                      fileIcon.setImageResource(R.drawable.shared_with_me_folder);\r
 -                    sharedWithMeIconV.setVisibility(View.VISIBLE);\r
 +                } else if (file.isShareByLink()) {\r
 +                    // If folder is sharedByLink, icon folder must be changed to\r
 +                    // folder-public one\r
 +                    fileIcon.setImageResource(R.drawable.folder_public);\r
                  } else {\r
                      fileIcon.setImageResource(\r
                              DisplayUtils.getFileTypeIconId(file.getMimetype(), file.getFileName())\r
                      );\r
                  }\r
 -\r
 -                // If folder is sharedByLink, icon folder must be changed to\r
 -                // folder-public one\r
 -                if (file.isShareByLink()) {\r
 -                    fileIcon.setImageResource(R.drawable.folder_public);\r
 -                }\r
 -            }\r
 -\r
 -            if (file.isShareByLink()) {\r
 -                sharedIconV.setVisibility(View.VISIBLE);\r
 -            } else {\r
 -                sharedIconV.setVisibility(View.GONE);\r
              }\r
          }\r
  \r
          }\r
          if (mStorageManager != null) {\r
              mFiles = mStorageManager.getFolderContent(mFile);\r
 +            mFilesOrig.clear();\r
 +            mFilesOrig.addAll(mFiles);\r
 +            \r
              if (mJustFolders) {\r
                  mFiles = getFolders(mFiles);\r
              }\r
                  && file.getPermissions().contains(PERMISSION_SHARED_WITH_ME));\r
      }\r
  \r
-     /**\r
-      * Sorts list by Date\r
-      * @param sortAscending true: ascending, false: descending\r
-      */\r
-     private void sortByDate(boolean sortAscending){\r
-         final Integer val;\r
-         if (sortAscending){\r
-             val = 1;\r
-         } else {\r
-             val = -1;\r
-         }\r
-         \r
-         Collections.sort(mFiles, new Comparator<OCFile>() {\r
-             public int compare(OCFile o1, OCFile o2) {\r
-                 if (o1.isFolder() && o2.isFolder()) {\r
-                     Long obj1 = o1.getModificationTimestamp();\r
-                     return val * obj1.compareTo(o2.getModificationTimestamp());\r
-                 }\r
-                 else if (o1.isFolder()) {\r
-                     return -1;\r
-                 } else if (o2.isFolder()) {\r
-                     return 1;\r
-                 } else if (o1.getModificationTimestamp() == 0 || o2.getModificationTimestamp() == 0){\r
-                     return 0;\r
-                 } else {\r
-                     Long obj1 = o1.getModificationTimestamp();\r
-                     return val * obj1.compareTo(o2.getModificationTimestamp());\r
-                 }\r
-             }\r
-         });\r
-     }\r
\r
-     /**\r
-      * Sorts list by Size\r
-      * @param sortAscending true: ascending, false: descending\r
-      */\r
-     private void sortBySize(boolean sortAscending){\r
-         final Integer val;\r
-         if (sortAscending){\r
-             val = 1;\r
-         } else {\r
-             val = -1;\r
-         }\r
-         \r
-         Collections.sort(mFiles, new Comparator<OCFile>() {\r
-             public int compare(OCFile o1, OCFile o2) {\r
-                 if (o1.isFolder() && o2.isFolder()) {\r
-                     Long obj1 = getFolderSize(new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, o1)));\r
-                     return val * obj1.compareTo(getFolderSize(new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, o2))));\r
-                 }\r
-                 else if (o1.isFolder()) {\r
-                     return -1;\r
-                 } else if (o2.isFolder()) {\r
-                     return 1;\r
-                 } else if (o1.getFileLength() == 0 || o2.getFileLength() == 0){\r
-                     return 0;\r
-                 } else {\r
-                     Long obj1 = o1.getFileLength();\r
-                     return val * obj1.compareTo(o2.getFileLength());\r
-                 }\r
-             }\r
-         });\r
-     }\r
\r
-     /**\r
-      * Sorts list by Name\r
-      * @param sortAscending true: ascending, false: descending\r
-      */\r
-     private void sortByName(boolean sortAscending){\r
-         final Integer val;\r
-         if (sortAscending){\r
-             val = 1;\r
-         } else {\r
-             val = -1;\r
-         }\r
\r
-         Collections.sort(mFiles, new Comparator<OCFile>() {\r
-             public int compare(OCFile o1, OCFile o2) {\r
-                 if (o1.isFolder() && o2.isFolder()) {\r
-                     return val * o1.getRemotePath().toLowerCase().compareTo(o2.getRemotePath().toLowerCase());\r
-                 } else if (o1.isFolder()) {\r
-                     return -1;\r
-                 } else if (o2.isFolder()) {\r
-                     return 1;\r
-                 }\r
-                 return val * new AlphanumComparator().compare(o1, o2);\r
-             }\r
-         });\r
-     }\r
\r
      public void setSortOrder(Integer order, boolean ascending) {\r
          SharedPreferences.Editor editor = mAppPreferences.edit();\r
          editor.putInt("sortOrder", order);\r
          mFiles = FileStorageUtils.sortFolder(mFiles);\r
          notifyDataSetChanged();\r
  \r
 -    }    \r
 +    }\r
      \r
      private CharSequence showRelativeTimestamp(OCFile file){\r
          return DisplayUtils.getRelativeDateTimeString(mContext, file.getModificationTimestamp(),\r
@@@ -29,7 -29,6 +29,7 @@@ import android.view.ContextMenu
  import android.view.MenuInflater;
  import android.view.MenuItem;
  import android.view.View;
 +import android.view.ViewGroup;
  import android.widget.AdapterView;
  import android.widget.AdapterView.AdapterContextMenuInfo;
  import android.widget.TextView;
@@@ -49,7 -48,6 +49,7 @@@ import com.owncloud.android.ui.dialog.R
  import com.owncloud.android.ui.dialog.RenameFileDialogFragment;
  import com.owncloud.android.ui.preview.PreviewImageFragment;
  import com.owncloud.android.ui.preview.PreviewMediaFragment;
 +import com.owncloud.android.utils.DisplayUtils;
  import com.owncloud.android.utils.FileStorageUtils;
  
  /**
@@@ -133,15 -131,15 +133,15 @@@ public class OCFileListFragment extend
          boolean justFolders = (args == null) ? false : args.getBoolean(ARG_JUST_FOLDERS, false); 
          mAdapter = new FileListListAdapter(
                  justFolders,
-                 getSherlockActivity(), 
+                 getSherlockActivity(),
                  mContainerActivity
                  );
          setListAdapter(mAdapter);
 -
 -        registerForContextMenu(getListView());
 -        getListView().setOnCreateContextMenuListener(this);
 -    }
 -
 +        
 +        registerForContextMenu(getGridView());
 +        getGridView().setOnCreateContextMenuListener(this);
 +  }
 +    
      /**
       * Saves the current listed folder.
       */
  
              mAdapter.swapDirectory(directory, storageManager);
              if (mFile == null || !mFile.equals(directory)) {
 -                mList.setSelectionFromTop(0, 0);
 +                imageView.setSelection(0);
              }
              mFile = directory;
 -            
 +
 +            Vector<OCFile> files = storageManager.getFolderContent(directory);
              // Update Footer
              TextView footerText = (TextView) mFooterView.findViewById(R.id.footerText);
 -            Log_OC.d("footer", String.valueOf(System.currentTimeMillis()));
              footerText.setText(generateFooterText(directory));
 -            Log_OC.d("footer", String.valueOf(System.currentTimeMillis()));
 +            if (DisplayUtils.decideViewLayout(files)){
 +                switchImageView();
 +            } else {
 +                switchFileView();
 +            }
          }
      }
      
          } else if (folders > 1) {
              output = output + folders.toString() + " " + getResources().getString(R.string.file_list_folders);
          }
 +
 +        // Fix for showing or not to show the footerView
 +        if (folders == 0 && files == 0) {   // If no files or folders, remove footerView for allowing
 +                                            // to show the emptyList message
 +            removeFooterView(mFooterView);
 +        } else { // set a new footerView if there is not one for showing the number or files/folders
 +            if (getFooterViewCount()== 0) {
 +                ((ViewGroup)mFooterView.getParent()).removeView(mFooterView);
 +                setFooterView(mFooterView);
 +            }
 +        }
          
          return output;
      }