From: tobiasKaminsky Date: Mon, 5 Jan 2015 18:53:40 +0000 (+0100) Subject: update X-Git-Tag: oc-android-1.7.2~1^2~23^2~45 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/0ae80926acbd6aa999992897e01313e7ce0966dd update --- diff --git a/res/drawable-hdpi/ic_drawer.png b/res/drawable-hdpi/ic_drawer.png new file mode 100644 index 00000000..6614ea4f Binary files /dev/null and b/res/drawable-hdpi/ic_drawer.png differ diff --git a/res/layout-land/account_setup.xml b/res/layout-land/account_setup.xml index 88b1ab3c..c2ef57cb 100644 --- a/res/layout-land/account_setup.xml +++ b/res/layout-land/account_setup.xml @@ -32,7 +32,7 @@ android:orientation="horizontal" > + + \ No newline at end of file diff --git a/res/layout/drawer_list_item.xml b/res/layout/drawer_list_item.xml new file mode 100644 index 00000000..630366e0 --- /dev/null +++ b/res/layout/drawer_list_item.xml @@ -0,0 +1,25 @@ + + + diff --git a/res/layout/drawer_radiobutton.xml b/res/layout/drawer_radiobutton.xml new file mode 100644 index 00000000..917d8944 --- /dev/null +++ b/res/layout/drawer_radiobutton.xml @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/res/layout/files.xml b/res/layout/files.xml index 50bc1059..e8f157b1 100644 --- a/res/layout/files.xml +++ b/res/layout/files.xml @@ -1,5 +1,5 @@ - - + - - - - - - \ No newline at end of file + android:clickable="true" > + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/list_item.xml b/res/layout/list_item.xml index c6c7b92f..bd3511ea 100644 --- a/res/layout/list_item.xml +++ b/res/layout/list_item.xml @@ -39,7 +39,7 @@ android:src="@drawable/local_file_indicator" /> + + + + + + + + \ No newline at end of file diff --git a/res/layout/listrow_group.xml b/res/layout/listrow_group.xml new file mode 100644 index 00000000..735a11e4 --- /dev/null +++ b/res/layout/listrow_group.xml @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/res/layout/uploader_layout.xml b/res/layout/uploader_layout.xml index ff274298..2378291f 100644 --- a/res/layout/uploader_layout.xml +++ b/res/layout/uploader_layout.xml @@ -22,11 +22,11 @@ android:layout_width="wrap_content" android:background="#fefefe" android:gravity="center"> + android:layout_below="@+id/drawer_username" android:layout_above="@+id/linearLayout1"> diff --git a/res/layout/uploader_list_item_layout.xml b/res/layout/uploader_list_item_layout.xml index 1cb93619..00921f4d 100644 --- a/res/layout/uploader_list_item_layout.xml +++ b/res/layout/uploader_list_item_layout.xml @@ -30,12 +30,12 @@ android:layout_gravity="center_vertical|center" android:layout_margin="4dp" android:src="@drawable/ic_menu_archive" - android:id="@+id/imageView1" /> + android:id="@+id/drawer_userIcon" /> - - - diff --git a/res/values/colors.xml b/res/values/colors.xml index 2b1fec91..b4693f99 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -22,5 +22,6 @@ #DDDDDD #00ddff #989898 + #000000 \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 27751d14..b1a2b91c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -20,6 +20,14 @@ + + Accounts + All Files + On device + Settings + + ownCloud + Close General More Accounts @@ -328,5 +336,6 @@ shared with you %1$s %2$s >>%3$s<< %4$s + Username diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 1673e21b..8a003663 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -64,6 +64,7 @@ + diff --git a/src/com/owncloud/android/MainApp.java b/src/com/owncloud/android/MainApp.java index c2a4c68b..0dcf1da0 100644 --- a/src/com/owncloud/android/MainApp.java +++ b/src/com/owncloud/android/MainApp.java @@ -43,6 +43,10 @@ public class MainApp extends Application { private static Context mContext; + // TODO better place + private static boolean mOnlyOnDevice = false; + + public void onCreate(){ super.onCreate(); MainApp.mContext = getApplicationContext(); @@ -115,5 +119,12 @@ public class MainApp extends Application { public static String getLogName() { return getAppContext().getResources().getString(R.string.log_name); } - + + public static void showOnlyFilesOnDevice(boolean state){ + mOnlyOnDevice = state; + } + + public static boolean getOnlyOnDevice(){ + return mOnlyOnDevice; + } } diff --git a/src/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/com/owncloud/android/datamodel/FileDataStorageManager.java index d8030642..fef48024 100644 --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -26,14 +26,6 @@ import java.util.Iterator; import java.util.List; import java.util.Vector; -import com.owncloud.android.MainApp; -import com.owncloud.android.db.ProviderMeta.ProviderTableMeta; -import com.owncloud.android.lib.common.utils.Log_OC; -import com.owncloud.android.lib.resources.shares.OCShare; -import com.owncloud.android.lib.resources.shares.ShareType; -import com.owncloud.android.lib.resources.files.FileUtils; -import com.owncloud.android.utils.FileStorageUtils; - import android.accounts.Account; import android.content.ContentProviderClient; import android.content.ContentProviderOperation; @@ -47,6 +39,14 @@ import android.database.Cursor; import android.net.Uri; import android.os.RemoteException; +import com.owncloud.android.MainApp; +import com.owncloud.android.db.ProviderMeta.ProviderTableMeta; +import com.owncloud.android.lib.common.utils.Log_OC; +import com.owncloud.android.lib.resources.files.FileUtils; +import com.owncloud.android.lib.resources.shares.OCShare; +import com.owncloud.android.lib.resources.shares.ShareType; +import com.owncloud.android.utils.FileStorageUtils; + public class FileDataStorageManager { public static final int ROOT_PARENT_ID = 0; @@ -139,9 +139,9 @@ public class FileDataStorageManager { } - public Vector getFolderContent(OCFile f) { + public Vector getFolderContent(OCFile f, boolean onlyOnDevice) { if (f != null && f.isFolder() && f.getFileId() != -1) { - return getFolderContent(f.getFileId()); + return getFolderContent(f.getFileId(), onlyOnDevice); } else { return new Vector(); @@ -149,11 +149,11 @@ public class FileDataStorageManager { } - public Vector getFolderImages(OCFile folder) { + public Vector getFolderImages(OCFile folder, boolean onlyOnDevice) { Vector ret = new Vector(); if (folder != null) { // TODO better implementation, filtering in the access to database instead of here - Vector tmp = getFolderContent(folder); + Vector tmp = getFolderContent(folder, onlyOnDevice); OCFile current = null; for (int i=0; i files = getFolderContent(folder.getFileId()); + Vector files = getFolderContent(folder.getFileId(), false); if (files != null) { for (OCFile file : files) { if (file.isFolder()) { @@ -727,7 +727,7 @@ public class FileDataStorageManager { } - private Vector getFolderContent(long parentId) { + private Vector getFolderContent(long parentId, boolean onlyOnDevice) { Vector ret = new Vector(); @@ -754,7 +754,9 @@ public class FileDataStorageManager { if (c.moveToFirst()) { do { OCFile child = createFileInstance(c); - ret.add(child); + if (child.isFolder() || !onlyOnDevice || onlyOnDevice && child.isDown()){ + ret.add(child); + } } while (c.moveToNext()); } @@ -1425,14 +1427,13 @@ public class FileDataStorageManager { } private ArrayList prepareRemoveSharesInFolder( - OCFile folder, ArrayList preparedOperations - ) { + OCFile folder, ArrayList preparedOperations) { if (folder != null) { String where = ProviderTableMeta.OCSHARES_PATH + "=?" + " AND " + ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + "=?"; String [] whereArgs = new String[]{ "", mAccount.name }; - Vector files = getFolderContent(folder); + Vector files = getFolderContent(folder, false); for (OCFile file : files) { whereArgs[0] = file.getRemotePath(); diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index d61e6784..90921e65 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -30,6 +30,7 @@ import java.util.Map; import java.util.Vector; import org.apache.http.HttpStatus; + import android.accounts.Account; import android.content.Context; import android.content.Intent; @@ -38,19 +39,17 @@ import android.util.Log; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; - import com.owncloud.android.lib.common.OwnCloudClient; -import com.owncloud.android.lib.resources.shares.OCShare; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.lib.common.utils.Log_OC; -import com.owncloud.android.lib.resources.shares.GetRemoteSharesForFileOperation; import com.owncloud.android.lib.resources.files.FileUtils; import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation; import com.owncloud.android.lib.resources.files.ReadRemoteFolderOperation; import com.owncloud.android.lib.resources.files.RemoteFile; - +import com.owncloud.android.lib.resources.shares.GetRemoteSharesForFileOperation; +import com.owncloud.android.lib.resources.shares.OCShare; import com.owncloud.android.syncadapter.FileSyncAdapter; import com.owncloud.android.utils.FileStorageUtils; @@ -199,7 +198,7 @@ public class SynchronizeFolderOperation extends RemoteOperation { if (mRemoteFolderChanged) { result = fetchAndSyncRemoteFolder(client); } else { - mChildren = mStorageManager.getFolderContent(mLocalFolder); + mChildren = mStorageManager.getFolderContent(mLocalFolder, false); } } @@ -339,7 +338,7 @@ public class SynchronizeFolderOperation extends RemoteOperation { List filesToSyncContents = new Vector(); // get current data about local contents of the folder to synchronize - List localFiles = mStorageManager.getFolderContent(mLocalFolder); + List localFiles = mStorageManager.getFolderContent(mLocalFolder, false); Map localFilesMap = new HashMap(localFiles.size()); for (OCFile file : localFiles) { localFilesMap.put(file.getRemotePath(), file); diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index f5837493..50fbe90f 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -25,7 +25,6 @@ import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AuthenticatorException; import android.accounts.OperationCanceledException; -import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.AlertDialog; import android.app.Dialog; @@ -41,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; @@ -52,13 +52,21 @@ import android.preference.PreferenceManager; import android.provider.DocumentsContract; import android.provider.MediaStore; 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.util.Log; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; @@ -68,9 +76,9 @@ 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; @@ -97,6 +105,7 @@ import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.services.observer.FileObserverService; import com.owncloud.android.syncadapter.FileSyncAdapter; import com.owncloud.android.ui.adapter.FileListListAdapter; +import com.owncloud.android.ui.adapter.NavigationDrawerListAdapter; import com.owncloud.android.ui.dialog.CreateFolderDialogFragment; import com.owncloud.android.ui.dialog.SslUntrustedCertDialog; import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener; @@ -160,12 +169,17 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { private String DIALOG_UNTRUSTED_CERT; private OCFile mWaitingToSend; - + + + private DrawerLayout mDrawerLayout; + private ActionBarDrawerToggle mDrawerToggle; + private boolean showAccounts = false; + @Override protected void onCreate(Bundle savedInstanceState) { Log_OC.d(TAG, "onCreate() start"); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); - + super.onCreate(savedInstanceState); // this calls onAccountChanged() when ownCloud Account is valid // PIN CODE request ; best location is to decide, let's try this first @@ -196,7 +210,89 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { /// USER INTERFACE // Inflate and set the layout view - setContentView(R.layout.files); + setContentView(R.layout.files); + + // TODO move to another place that all activity can use it + mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); + + 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); + + // Notification Drawer + LinearLayout notificatonDrawer = (LinearLayout) findViewById(R.id.left_drawer); + + // ListView + ListView listView = (ListView) notificatonDrawer.findViewById(R.id.drawer_list); + final NavigationDrawerListAdapter adapter = new NavigationDrawerListAdapter(getApplicationContext(), this); + + listView.setAdapter(adapter); + + listView.setOnItemClickListener(new OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (showAccounts && position > 0){ + position = position - 1; + } + switch (position){ + case 0: + showAccounts = !showAccounts; + adapter.setShowAccounts(showAccounts); + adapter.notifyDataSetChanged(); + break; + case 1: + MainApp.showOnlyFilesOnDevice(false); + mDrawerLayout.closeDrawers(); + break; + case 2: + MainApp.showOnlyFilesOnDevice(true); + mDrawerLayout.closeDrawers(); + break; + case 3: + Intent settingsIntent = new Intent(getApplicationContext(), Preferences.class); + startActivity(settingsIntent); + break; + } + } + }); + + // User-Icon + ImageView userIcon = (ImageView) notificatonDrawer.findViewById(R.id.drawer_userIcon); + userIcon.setImageResource(DisplayUtils.getSeasonalIconId()); + + // Username + TextView username = (TextView) notificatonDrawer.findViewById(R.id.drawer_username); + Account account = AccountUtils.getCurrentOwnCloudAccount(getApplicationContext()); + int lastAtPos = account.name.lastIndexOf("@"); + username.setText(account.name.substring(0, lastAtPos)); + + // Set the drawer toggle as the DrawerListener + mDrawerLayout.setDrawerListener(mDrawerToggle); + mDualPane = getResources().getBoolean(R.bool.large_land_layout); mLeftFragmentContainer = findViewById(R.id.left_fragment_container); mRightFragmentContainer = findViewById(R.id.right_fragment_container); @@ -206,9 +302,14 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { // Action bar setup mDirectories = new CustomArrayAdapter(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 + mDrawerToggle.syncState(); + setBackgroundText(); Log_OC.d(TAG, "onCreate() end"); @@ -219,6 +320,19 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { super.onStart(); getSupportActionBar().setIcon(DisplayUtils.getSeasonalIconId()); } + + @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() { @@ -297,7 +411,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { /// First fragment OCFileListFragment listOfFiles = getListOfFilesFragment(); if (listOfFiles != null) { - listOfFiles.listDirectory(getCurrentDir()); + listOfFiles.listDirectory(getCurrentDir(), MainApp.getOnlyOnDevice()); } else { Log_OC.e(TAG, "Still have a chance to lose the initializacion of list fragment >("); } @@ -417,7 +531,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { protected void refreshListOfFilesFragment() { OCFileListFragment fileListFragment = getListOfFilesFragment(); if (fileListFragment != null) { - fileListFragment.listDirectory(); + fileListFragment.listDirectory(MainApp.getOnlyOnDevice()); } } @@ -460,11 +574,11 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { @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); } @@ -474,6 +588,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { inflater.inflate(R.menu.main_menu, menu); return true; } + @Override public boolean onOptionsItemSelected(MenuItem item) { @@ -485,32 +600,17 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { dialog.show(getSupportFragmentManager(), "createdirdialog"); break; } - case R.id.action_sync_account: { - startSynchronization(); - break; - } case R.id.action_upload: { showDialog(DIALOG_CHOOSE_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: { @@ -1092,7 +1192,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { if (synchFolderRemotePath != null && currentDir.getRemotePath().equals(synchFolderRemotePath)) { OCFileListFragment fileListFragment = getListOfFilesFragment(); if (fileListFragment != null) { - fileListFragment.listDirectory(currentDir); + fileListFragment.listDirectory(currentDir, MainApp.getOnlyOnDevice()); } } setFile(currentFile); @@ -1305,7 +1405,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { popDirname(); } OCFile root = getStorageManager().getFileByPath(OCFile.ROOT_PATH); - listOfFiles.listDirectory(root); + listOfFiles.listDirectory(root, MainApp.getOnlyOnDevice()); setFile(listOfFiles.getCurrentFile()); startSyncFolderOperation(root, false); } @@ -1320,7 +1420,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { OCFileListFragment listOfFiles = getListOfFilesFragment(); if (listOfFiles != null) { setNavigationListWithFolder(folder); - listOfFiles.listDirectory(folder); + listOfFiles.listDirectory(folder, MainApp.getOnlyOnDevice()); setFile(listOfFiles.getCurrentFile()); startSyncFolderOperation(folder, false); } else { @@ -1370,8 +1470,10 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { // 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)); } @@ -1417,7 +1519,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { // a new chance to get the mDownloadBinder through getFileDownloadBinder() - THIS IS A MESS OCFileListFragment listOfFiles = getListOfFilesFragment(); if (listOfFiles != null) { - listOfFiles.listDirectory(); + listOfFiles.listDirectory(MainApp.getOnlyOnDevice()); } FileFragment secondFragment = getSecondFragment(); if (secondFragment != null && secondFragment instanceof FileDetailFragment) { @@ -1901,4 +2003,14 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener { 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(); + } } diff --git a/src/com/owncloud/android/ui/activity/FolderPickerActivity.java b/src/com/owncloud/android/ui/activity/FolderPickerActivity.java index 07c92134..cdd31876 100644 --- a/src/com/owncloud/android/ui/activity/FolderPickerActivity.java +++ b/src/com/owncloud/android/ui/activity/FolderPickerActivity.java @@ -139,7 +139,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C if (!stateWasRecovered) { OCFileListFragment listOfFolders = getListOfFilesFragment(); - listOfFolders.listDirectory(folder); + listOfFolders.listDirectory(folder, false); startSyncFolderOperation(folder, false); } @@ -262,9 +262,6 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C MenuInflater inflater = getSherlock().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; } @@ -311,7 +308,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C protected void refreshListOfFilesFragment() { OCFileListFragment fileListFragment = getListOfFilesFragment(); if (fileListFragment != null) { - fileListFragment.listDirectory(); + fileListFragment.listDirectory(false); } } @@ -319,7 +316,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C OCFileListFragment listOfFiles = getListOfFilesFragment(); if (listOfFiles != null) { // should never be null, indeed OCFile root = getStorageManager().getFileByPath(OCFile.ROOT_PATH); - listOfFiles.listDirectory(root); + listOfFiles.listDirectory(root, false); setFile(listOfFiles.getCurrentFile()); updateNavigationElementsInActionBar(); startSyncFolderOperation(root, false); @@ -471,7 +468,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C equals(synchFolderRemotePath)) { OCFileListFragment fileListFragment = getListOfFilesFragment(); if (fileListFragment != null) { - fileListFragment.listDirectory(currentDir); + fileListFragment.listDirectory(currentDir, false); } } setFile(currentFile); diff --git a/src/com/owncloud/android/ui/activity/Preferences.java b/src/com/owncloud/android/ui/activity/Preferences.java index 1d80a703..6980fec7 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -46,6 +46,7 @@ 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; @@ -83,7 +84,6 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa private Preference mPrefInstantVideoUploadPath; private String mUploadVideoPath; - @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { @@ -174,7 +174,20 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa } - + 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){ diff --git a/src/com/owncloud/android/ui/activity/UploadPathActivity.java b/src/com/owncloud/android/ui/activity/UploadPathActivity.java index aa3b8aa2..ed41eb81 100644 --- a/src/com/owncloud/android/ui/activity/UploadPathActivity.java +++ b/src/com/owncloud/android/ui/activity/UploadPathActivity.java @@ -18,7 +18,6 @@ package com.owncloud.android.ui.activity; import android.accounts.Account; - import android.os.Bundle; import android.view.View.OnClickListener; @@ -66,7 +65,7 @@ public class UploadPathActivity extends FolderPickerActivity implements FileFrag if (!stateWasRecovered) { OCFileListFragment listOfFolders = getListOfFilesFragment(); - listOfFolders.listDirectory(folder); + listOfFolders.listDirectory(folder, false); startSyncFolderOperation(folder, false); } diff --git a/src/com/owncloud/android/ui/activity/Uploader.java b/src/com/owncloud/android/ui/activity/Uploader.java index 6c8a1320..f59c875a 100644 --- a/src/com/owncloud/android/ui/activity/Uploader.java +++ b/src/com/owncloud/android/ui/activity/Uploader.java @@ -26,14 +26,6 @@ import java.util.List; import java.util.Stack; import java.util.Vector; -import com.owncloud.android.MainApp; -import com.owncloud.android.R; -import com.owncloud.android.authentication.AccountAuthenticator; -import com.owncloud.android.datamodel.FileDataStorageManager; -import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.files.services.FileUploader; -import com.owncloud.android.lib.common.utils.Log_OC; - import android.accounts.Account; import android.accounts.AccountManager; import android.app.AlertDialog; @@ -65,6 +57,13 @@ import android.widget.Toast; import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.SherlockListActivity; 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.FileDataStorageManager; +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.utils.DisplayUtils; /** @@ -241,7 +240,7 @@ public class Uploader extends SherlockListActivity implements OnItemClickListene 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 tmpfiles = mStorageManager.getFolderContent(mFile); + Vector tmpfiles = mStorageManager.getFolderContent(mFile, false); if (tmpfiles.size() <= 0) return; // filter on dirtype Vector files = new Vector(); @@ -316,7 +315,7 @@ public class Uploader extends SherlockListActivity implements OnItemClickListene mFile = mStorageManager.getFileByPath(full_path); if (mFile != null) { - Vector files = mStorageManager.getFolderContent(mFile); + Vector files = mStorageManager.getFolderContent(mFile, false); List> data = new LinkedList>(); for (OCFile f : files) { HashMap h = new HashMap(); @@ -329,7 +328,7 @@ public class Uploader extends SherlockListActivity implements OnItemClickListene data, R.layout.uploader_list_item_layout, new String[] {"dirname"}, - new int[] {R.id.textView1}); + new int[] {R.id.drawer_username}); setListAdapter(sa); Button btn = (Button) findViewById(R.id.uploader_choose_folder); btn.setOnClickListener(this); diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index 1df1211c..db015de5 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -152,7 +152,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { String name = file.getFileName(); fileName.setText(name); - ImageView fileIcon = (ImageView) view.findViewById(R.id.imageView1); + ImageView fileIcon = (ImageView) view.findViewById(R.id.drawer_userIcon); fileIcon.setTag(file.getFileId()); ImageView sharedIconV = (ImageView) view.findViewById(R.id.sharedIcon); ImageView sharedWithMeIconV = (ImageView) view.findViewById(R.id.sharedWithMeIcon); @@ -344,14 +344,14 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { * @param updatedStorageManager Optional updated storage manager; used to replace * mStorageManager if is different (and not NULL) */ - public void swapDirectory(OCFile directory, FileDataStorageManager updatedStorageManager) { + public void swapDirectory(OCFile directory, FileDataStorageManager updatedStorageManager, boolean onlyOnDevice) { mFile = directory; if (updatedStorageManager != null && updatedStorageManager != mStorageManager) { mStorageManager = updatedStorageManager; mAccount = AccountUtils.getCurrentOwnCloudAccount(mContext); } if (mStorageManager != null) { - mFiles = mStorageManager.getFolderContent(mFile); + mFiles = mStorageManager.getFolderContent(mFile, onlyOnDevice); if (mJustFolders) { mFiles = getFolders(mFiles); } diff --git a/src/com/owncloud/android/ui/adapter/Group.java b/src/com/owncloud/android/ui/adapter/Group.java new file mode 100644 index 00000000..b01d29c6 --- /dev/null +++ b/src/com/owncloud/android/ui/adapter/Group.java @@ -0,0 +1,15 @@ +package com.owncloud.android.ui.adapter; + +import java.util.ArrayList; +import java.util.List; + +public class Group { + + public String string; + public final List children = new ArrayList(); + + public Group(String string) { + this.string = string; + } + +} \ No newline at end of file diff --git a/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java b/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java index 6190ebee..689d32ed 100644 --- a/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java @@ -99,7 +99,7 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter { String name = file.getName(); fileName.setText(name); - ImageView fileIcon = (ImageView) view.findViewById(R.id.imageView1); + ImageView fileIcon = (ImageView) view.findViewById(R.id.drawer_userIcon); if (!file.isDirectory()) { fileIcon.setImageResource(R.drawable.file); } else { diff --git a/src/com/owncloud/android/ui/adapter/MyExpandableListAdapter.java b/src/com/owncloud/android/ui/adapter/MyExpandableListAdapter.java new file mode 100644 index 00000000..20cfdff5 --- /dev/null +++ b/src/com/owncloud/android/ui/adapter/MyExpandableListAdapter.java @@ -0,0 +1,120 @@ +package com.owncloud.android.ui.adapter; + +import android.app.Activity; +import android.util.SparseArray; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.TextView; +import android.widget.Toast; + +import com.owncloud.android.R; + +public class MyExpandableListAdapter extends BaseExpandableListAdapter { + + private final SparseArray groups; + public LayoutInflater inflater; + public Activity activity; + + public MyExpandableListAdapter(Activity act, SparseArray groups) { + activity = act; + this.groups = groups; + inflater = act.getLayoutInflater(); + + } + + + @Override + public Object getChild(int groupPosition, int childPosition) { + return groups.get(groupPosition).children.get(childPosition); + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return 0; + } + + @Override + public View getChildView(int groupPosition, final int childPosition, + boolean isLastChild, View convertView, ViewGroup parent) { + final String children = (String) getChild(groupPosition, childPosition); + TextView text = null; + if (convertView == null) { + convertView = inflater.inflate(R.layout.listrow_details, null); + } + + + text = (TextView) convertView.findViewById(R.id.textView1); + text.setText(children); + convertView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + Toast.makeText(activity, children, Toast.LENGTH_SHORT).show(); + } + }); + return convertView; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, + View convertView, ViewGroup parent) { + if (convertView == null) { + convertView = inflater.inflate(R.layout.listrow_group, null); + } + + final Group group = (Group) getGroup(groupPosition); + if (group.children.size() == 0){ + convertView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + Toast.makeText(activity, group.string, Toast.LENGTH_SHORT).show(); + } + }); + } + ((TextView) convertView).setText(group.string); + + return convertView; + } + + @Override + public int getChildrenCount(int groupPosition) { + return groups.get(groupPosition).children.size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groups.get(groupPosition); + } + + @Override + public int getGroupCount() { + return groups.size(); + } + + @Override + public void onGroupCollapsed(int groupPosition) { + super.onGroupCollapsed(groupPosition); + } + + @Override + public void onGroupExpanded(int groupPosition) { + super.onGroupExpanded(groupPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return 0; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return false; + } +} \ No newline at end of file diff --git a/src/com/owncloud/android/ui/adapter/NavigationDrawerListAdapter.java b/src/com/owncloud/android/ui/adapter/NavigationDrawerListAdapter.java new file mode 100644 index 00000000..2b850332 --- /dev/null +++ b/src/com/owncloud/android/ui/adapter/NavigationDrawerListAdapter.java @@ -0,0 +1,143 @@ +package com.owncloud.android.ui.adapter; + +import java.util.ArrayList; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.RadioGroup.LayoutParams; +import android.widget.TextView; + +import com.owncloud.android.MainApp; +import com.owncloud.android.R; +import com.owncloud.android.authentication.AccountUtils; +import com.owncloud.android.ui.activity.FileDisplayActivity; + +public class NavigationDrawerListAdapter extends BaseAdapter { + + private final static String TAG = "NavigationDrawerListAdapter"; + private Context mContext; + private ArrayList mDrawerItems = new ArrayList(); + ArrayList all = new ArrayList(); + private Account[] mAccounts; + private boolean mShowAccounts; + private Account currentAccount; + private FileDisplayActivity mFileDisplayActivity; + + + public NavigationDrawerListAdapter(Context context, FileDisplayActivity fileDisplayActivity){ + mFileDisplayActivity = fileDisplayActivity; + mContext = context; + + for (String string : mContext.getResources().getStringArray(R.array.drawer_items)) { + mDrawerItems.add(string); + } + + AccountManager am = (AccountManager) mContext.getSystemService(mContext.ACCOUNT_SERVICE); + mAccounts = am.getAccountsByType(MainApp.getAccountType()); + currentAccount = AccountUtils.getCurrentOwnCloudAccount(mContext); + + all.addAll(mDrawerItems); + } + + @Override + public int getCount() { + if (mShowAccounts){ + return mDrawerItems.size() + 1; + } else { + return mDrawerItems.size(); + } + } + + @Override + public Object getItem(int position) { + //return all.get(position); + return null; + } + + @Override + public long getItemId(int position) { + return 0; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + + LayoutInflater inflator = (LayoutInflater) mContext + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + + if (all.size() > position) { + // Normal entry + if (all.get(position) instanceof String){ + View view = inflator.inflate(R.layout.drawer_list_item, null); + view.setMinimumHeight(40); + TextView textView = (TextView) view.findViewById(R.id.drawer_textView); + + String entry = (String) all.get(position); + textView.setText(entry); + + return view; + } + + // Account + if (all.get(position) instanceof Account[]){ + final View view = inflator.inflate(R.layout.drawer_account_group, null); + + final RadioGroup group = (RadioGroup) view.findViewById(R.id.drawer_radio_group); + + for (Account account : mAccounts) { + RadioButton rb = new RadioButton(mContext); + rb.setText(account.name); + rb.setTextColor(mContext.getResources().getColor(R.color.black)); + + RadioGroup.LayoutParams params = new RadioGroup.LayoutParams( + LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); + params.weight=1.0f; + params.setMargins(15, 5, 5, 5); + + // Check the current account that is being used + if (account.name.equals(currentAccount.name)) { + rb.setChecked(true); + } else { + rb.setChecked(false); + } + + group.addView(rb, params); + } + + group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){ + public void onCheckedChanged(RadioGroup group, int checkedId) { + // checkedId is the RadioButton selected + RadioButton rb = (RadioButton) view.findViewById(checkedId); + + AccountUtils.setCurrentOwnCloudAccount(mContext,rb.getText().toString()); + notifyDataSetChanged(); + mFileDisplayActivity.closeDrawer(); + + // restart the main activity + mFileDisplayActivity.restart(); + } + }); + + return view; + } + } + return convertView; + } + + public void setShowAccounts(boolean value){ + all.clear(); + all.addAll(mDrawerItems); + + if (value){ + all.add(1, mAccounts); + } + mShowAccounts = value; + } +} diff --git a/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java b/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java index 24534047..f26bfdc6 100644 --- a/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java @@ -111,7 +111,7 @@ implements ConfirmationDialogFragmentListener { boolean containsKeepInSync = false; if (mTargetFile.isFolder()) { - Vector files = storageManager.getFolderContent(mTargetFile); + Vector files = storageManager.getFolderContent(mTargetFile, false); for(OCFile file: files) { containsKeepInSync = file.keepInSync() || containsKeepInSync; diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 73ae5dc2..5061526d 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -26,14 +26,15 @@ import android.content.Intent; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.view.ContextMenu; +import android.view.LayoutInflater; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.TextView; -import android.view.LayoutInflater; +import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; @@ -77,7 +78,8 @@ public class OCFileListFragment extends ExtendedListFragment { private View mFooterView; private OCFile mTargetFile; - + + /** * {@inheritDoc} @@ -182,7 +184,7 @@ public class OCFileListFragment extends ExtendedListFragment { } // exit is granted because storageManager.getFileByPath("/") never returns null mFile = parentDir; - listDirectory(mFile); + listDirectory(mFile, MainApp.getOnlyOnDevice()); onRefresh(false); @@ -200,7 +202,7 @@ public class OCFileListFragment extends ExtendedListFragment { if (file != null) { if (file.isFolder()) { // update state and view of this fragment - listDirectory(file); + listDirectory(file, MainApp.getOnlyOnDevice()); // then, notify parent activity to let it update its state and view mContainerActivity.onBrowsedDownTo(file); // save index and top position @@ -354,8 +356,12 @@ public class OCFileListFragment extends ExtendedListFragment { /** * Calls {@link OCFileListFragment#listDirectory(OCFile)} with a null parameter */ - public void listDirectory(){ - listDirectory(null); + public void listDirectory(boolean onlyOnDevice){ + listDirectory(null, onlyOnDevice); + } + + public void refreshDirectory(){ + listDirectory(getCurrentFile(), MainApp.getOnlyOnDevice()); } /** @@ -365,7 +371,7 @@ public class OCFileListFragment extends ExtendedListFragment { * * @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) { @@ -386,7 +392,7 @@ public class OCFileListFragment extends ExtendedListFragment { directory = storageManager.getFileById(directory.getParentId()); } - mAdapter.swapDirectory(directory, storageManager); + mAdapter.swapDirectory(directory, storageManager, onlyOnDevice); if (mFile == null || !mFile.equals(directory)) { mList.setSelectionFromTop(0, 0); } @@ -395,17 +401,17 @@ public class OCFileListFragment extends ExtendedListFragment { // Update Footer TextView footerText = (TextView) mFooterView.findViewById(R.id.footerText); Log_OC.d("footer", String.valueOf(System.currentTimeMillis())); - footerText.setText(generateFooterText(directory)); + footerText.setText(generateFooterText(directory, onlyOnDevice)); Log_OC.d("footer", String.valueOf(System.currentTimeMillis())); } } - private String generateFooterText(OCFile directory) { + private String generateFooterText(OCFile directory, boolean onlyOnDevice) { Integer files = 0; Integer folders = 0; FileDataStorageManager storageManager = mContainerActivity.getStorageManager(); - Vector mFiles = storageManager.getFolderContent(mFile); + Vector mFiles = storageManager.getFolderContent(mFile, onlyOnDevice); for (OCFile ocFile : mFiles) { if (ocFile.isFolder()) { @@ -447,5 +453,7 @@ public class OCFileListFragment extends ExtendedListFragment { public void sortBySize(boolean descending) { mAdapter.setSortOrder(FileListListAdapter.SORT_SIZE, descending); } - + + + } diff --git a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java index 1cee30e8..7fd88d36 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java @@ -37,6 +37,7 @@ import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.Window; import com.ortiz.touch.ExtendedViewPager; +import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.datamodel.FileDataStorageManager; @@ -146,7 +147,7 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener { // should not be necessary parentFolder = getStorageManager().getFileByPath(OCFile.ROOT_PATH); } - mPreviewImagePagerAdapter = new PreviewImagePagerAdapter(getSupportFragmentManager(), parentFolder, getAccount(), getStorageManager()); + mPreviewImagePagerAdapter = new PreviewImagePagerAdapter(getSupportFragmentManager(), parentFolder, getAccount(), getStorageManager(), MainApp.getOnlyOnDevice()); mViewPager = (ExtendedViewPager) findViewById(R.id.fragmentPager); int position = mHasSavedPosition ? mSavedPosition : mPreviewImagePagerAdapter.getFilePosition(getFile()); position = (position >= 0) ? position : 0; diff --git a/src/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java b/src/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java index f2a9a9b2..9af52aac 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java +++ b/src/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java @@ -57,7 +57,7 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter { * @param parentFolder Folder where images will be searched for. * @param storageManager Bridge to database. */ - public PreviewImagePagerAdapter(FragmentManager fragmentManager, OCFile parentFolder, Account account, FileDataStorageManager storageManager) { + public PreviewImagePagerAdapter(FragmentManager fragmentManager, OCFile parentFolder, Account account, FileDataStorageManager storageManager, boolean onlyOnDevice) { super(fragmentManager); if (fragmentManager == null) { @@ -72,7 +72,7 @@ public class PreviewImagePagerAdapter extends FragmentStatePagerAdapter { mAccount = account; mStorageManager = storageManager; - mImageFiles = mStorageManager.getFolderImages(parentFolder); + mImageFiles = mStorageManager.getFolderImages(parentFolder, onlyOnDevice); mObsoleteFragments = new HashSet(); mObsoletePositions = new HashSet(); mDownloadErrors = new HashSet();