From: masensio Date: Wed, 27 May 2015 12:19:30 +0000 (+0200) Subject: Merge branch 'remove_ActionBarSherlock' into navigationDrawer_update X-Git-Tag: oc-android-1.7.2~1^2~23^2~37^2~3 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/c20041d157baebede8e47a5f6837ba7dd51204f7?ds=inline;hp=-c Merge branch 'remove_ActionBarSherlock' into navigationDrawer_update 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 --- c20041d157baebede8e47a5f6837ba7dd51204f7 diff --combined res/layout/files.xml index b1050ff0,5d62c131..5f11f068 --- a/res/layout/files.xml +++ b/res/layout/files.xml @@@ -1,5 -1,5 +1,5 @@@ - - + - - - - - - + android:clickable="true" > + + + + + + + + + + + + + + + + ++ android:src="@drawable/abc_ab_bottom_solid_dark_holo" /> + + + + + + + + + + diff --combined res/menu/main_menu.xml index ab41e4ba,053d84a6..117afdd8 --- a/res/menu/main_menu.xml +++ b/res/menu/main_menu.xml @@@ -17,30 -17,54 +17,54 @@@ You should have received a copy of the GNU General Public License along with this program. If not, see . --> - + + + + /> + android:contentDescription="@string/actionbar_sort"/> - + diff --combined src/com/owncloud/android/ui/activity/FileDisplayActivity.java index c37d9271,67173d7e..0844dc26 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@@ -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.view.Window; ++ +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; - 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 mDirectories; @@@ -164,29 -150,16 +164,30 @@@ 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 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) { @@@ -196,9 -169,11 +197,11 @@@ /// 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; @@@ -209,11 -184,7 +212,11 @@@ /// 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); @@@ -222,107 -193,20 +225,109 @@@ } // 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 + mDirectories = new CustomArrayAdapter(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(); + // 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"); @@@ -330,19 -214,6 +335,19 @@@ 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() { @@@ -358,19 -229,22 +363,22 @@@ 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) { @@@ -404,7 -278,8 +412,8 @@@ 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); @@@ -423,9 -298,7 +432,9 @@@ /// 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 >("); } @@@ -459,9 -332,12 +468,12 @@@ 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()); @@@ -515,7 -391,8 +527,8 @@@ 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; } @@@ -524,7 -401,8 +537,8 @@@ } 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; } @@@ -544,20 -422,21 +558,23 @@@ 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; @@@ -571,7 -450,9 +588,9 @@@ 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; @@@ -590,21 -471,20 +609,21 @@@ @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) { @@@ -615,19 -495,34 +634,19 @@@ 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: { @@@ -642,16 -537,19 +661,16 @@@ 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(); @@@ -667,16 -565,19 +686,19 @@@ 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); @@@ -709,7 -610,8 +731,8 @@@ // 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; @@@ -723,7 -625,8 +746,8 @@@ @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++){ @@@ -734,7 -637,8 +758,8 @@@ }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){ @@@ -783,7 -687,7 +808,8 @@@ } 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; } @@@ -808,13 -712,15 +834,15 @@@ 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; @@@ -830,7 -736,8 +858,8 @@@ 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, '_'); @@@ -892,12 -799,14 +921,14 @@@ @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"); @@@ -910,9 -819,6 +941,9 @@@ Log_OC.v(TAG, "onResume() start"); super.onResume(); + // refresh Navigation Drawer account list + mNavigationDrawerAdapter.updateAccountList(); + // refresh list of files refreshListOfFilesFragment(); @@@ -924,7 -830,8 +955,8 @@@ 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()); @@@ -1031,9 -938,13 +1063,13 @@@ 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) { @@@ -1041,36 -952,39 +1077,45 @@@ 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) && @@@ -1113,14 -1027,16 +1158,16 @@@ } 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; } } @@@ -1173,7 -1089,8 +1220,8 @@@ 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) || @@@ -1232,11 -1149,13 +1280,13 @@@ 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(); @@@ -1249,7 -1168,8 +1299,8 @@@ } if (mWaitingToSend != null) { - mWaitingToSend = getStorageManager().getFileByPath(mWaitingToSend.getRemotePath()); + mWaitingToSend = + getStorageManager().getFileByPath(mWaitingToSend.getRemotePath()); if (mWaitingToSend.isDown()) { sendDownloadedFile(); } @@@ -1281,7 -1201,8 +1332,8 @@@ 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)); } } @@@ -1294,8 -1215,6 +1346,8 @@@ } 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); } @@@ -1311,8 -1230,6 +1363,8 @@@ 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 { @@@ -1366,19 -1283,19 +1418,22 @@@ // 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); @@@ -1404,29 -1321,31 +1459,34 @@@ @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) { @@@ -1438,10 -1357,12 +1498,12 @@@ @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; } @@@ -1503,7 -1424,8 +1565,8 @@@ } - private void onCreateShareOperationFinish(CreateShareOperation operation, RemoteOperationResult result) { + private void onCreateShareOperationFinish(CreateShareOperation operation, + RemoteOperationResult result) { if (result.isSuccess()) { refreshShowDetails(); refreshListOfFilesFragment(); @@@ -1511,7 -1433,8 +1574,8 @@@ } - private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, RemoteOperationResult result) { + private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, + RemoteOperationResult result) { if (result.isSuccess()) { refreshShowDetails(); refreshListOfFilesFragment(); @@@ -1540,16 -1463,18 +1604,18 @@@ } /** - * 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(); @@@ -1583,7 -1508,8 +1649,8 @@@ * @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(); @@@ -1603,23 -1529,26 +1670,26 @@@ /** - * 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(); @@@ -1630,12 -1559,13 +1700,13 @@@ } } - 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(); @@@ -1646,7 -1576,8 +1717,8 @@@ } } - private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, RemoteOperationResult result) { + private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, + RemoteOperationResult result) { dismissLoadingDialog(); OCFile syncedFile = operation.getLocalFile(); if (!result.isSuccess()) { @@@ -1663,20 -1594,22 +1735,22 @@@ 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(); @@@ -1702,7 -1635,8 +1776,8 @@@ 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 { @@@ -1750,14 -1684,14 +1825,14 @@@ // 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); @@@ -1771,7 -1705,7 +1846,7 @@@ 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); @@@ -1824,11 -1758,14 +1899,14 @@@ * 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); @@@ -1899,54 -1836,5 +1977,54 @@@ 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; + } + } + } } diff --combined src/com/owncloud/android/ui/activity/FolderPickerActivity.java index f135dcea,5fd2bdf5..a358f79e --- a/src/com/owncloud/android/ui/activity/FolderPickerActivity.java +++ b/src/com/owncloud/android/ui/activity/FolderPickerActivity.java @@@ -19,9 -19,12 +19,9 @@@ 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); } @@@ -258,9 -261,12 +258,9 @@@ @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; } @@@ -306,10 -312,8 +306,10 @@@ protected void refreshListOfFilesFragment() { OCFileListFragment fileListFragment = getListOfFilesFragment(); - if (fileListFragment != null) { + if (fileListFragment != null) { fileListFragment.listDirectory(); + // TODO Enable when "On Device" is recovered ? + // fileListFragment.listDirectory(false); } } @@@ -318,8 -322,6 +318,8 @@@ 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); @@@ -472,8 -474,6 +472,8 @@@ OCFileListFragment fileListFragment = getListOfFilesFragment(); if (fileListFragment != null) { fileListFragment.listDirectory(currentDir); + // TODO Enable when "On Device" is recovered ? + // fileListFragment.listDirectory(currentDir, false); } } setFile(currentFile); diff --combined src/com/owncloud/android/ui/activity/Preferences.java index 39fc314c,23ab550a..ef8c2226 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@@ -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, ComponentsGetter { private static final String TAG = "OwnCloudPreferences"; @@@ -111,10 -110,11 +111,11 @@@ 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"); @@@ -203,21 -203,8 +204,21 @@@ } } + + 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){ @@@ -236,8 -223,7 +237,8 @@@ 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); diff --combined src/com/owncloud/android/ui/activity/Uploader.java index bee92333,f4bd273b..533bb991 --- a/src/com/owncloud/android/ui/activity/Uploader.java +++ b/src/com/owncloud/android/ui/activity/Uploader.java @@@ -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 @@@ -325,8 -326,7 +326,8 @@@ 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 = getStorageManager().getFolderContent(mFile); + // TODO Enable when "On Device" is recovered ? + Vector tmpfiles = getStorageManager().getFolderContent(mFile /*, false*/); if (tmpfiles.size() <= 0) return; // filter on dirtype Vector files = new Vector(); @@@ -411,8 -411,7 +412,8 @@@ mFile = getStorageManager().getFileByPath(full_path); if (mFile != null) { - Vector files = getStorageManager().getFolderContent(mFile); + // TODO Enable when "On Device" is recovered ? + Vector files = getStorageManager().getFolderContent(mFile/*, false*/); List> data = new LinkedList>(); for (OCFile f : files) { HashMap h = new HashMap(); diff --combined src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java index f00b19f1,782ed04d..3045b278 --- a/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java @@@ -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); @@@ -105,15 -105,14 +105,15 @@@ */ @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 files = storageManager.getFolderContent(mTargetFile); + // TODO Enable when "On Device" is recovered ? + Vector files = storageManager.getFolderContent(mTargetFile/*, false*/); for(OCFile file: files) { containsKeepInSync = file.keepInSync() || containsKeepInSync; diff --combined src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 4bf68ad0,ed97de0b..dd8ed029 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@@ -77,8 -77,7 +77,8 @@@ public class OCFileListFragment extend private boolean mJustFolders; private OCFile mTargetFile; - + + /** * {@inheritDoc} @@@ -133,7 -132,7 +133,7 @@@ mJustFolders = (args == null) ? false : args.getBoolean(ARG_JUST_FOLDERS, false); mAdapter = new FileListListAdapter( mJustFolders, - getSherlockActivity(), + getActivity(), mContainerActivity ); setListAdapter(mAdapter); @@@ -183,9 -182,8 +183,9 @@@ 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); @@@ -203,8 -201,7 +203,8 @@@ 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 @@@ -247,7 -244,7 +247,7 @@@ 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); @@@ -257,14 -254,14 +257,14 @@@ 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); @@@ -358,15 -355,8 +358,15 @@@ /** * 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()*/); } /** @@@ -376,7 -366,7 +376,7 @@@ * * @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) { @@@ -397,8 -387,7 +397,8 @@@ 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); } @@@ -470,7 -459,5 +470,7 @@@ public void sortBySize(boolean descending) { mAdapter.setSortOrder(FileStorageUtils.SORT_SIZE, descending); } - + + + } diff --combined src/com/owncloud/android/ui/preview/PreviewImageActivity.java index 6ff3cb8f,6dc87cbb..a67788a2 --- a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java @@@ -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; @@@ -133,23 -133,25 +133,28 @@@ 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; } } @@@ -222,7 -224,8 +227,8 @@@ } - 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) { @@@ -235,7 -238,8 +241,8 @@@ } - 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) { @@@ -256,15 -260,18 +263,18 @@@ @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 { @@@ -275,10 -282,12 +285,12 @@@ @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; } @@@ -350,7 -359,8 +362,8 @@@ 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); @@@ -371,9 -381,10 +384,10 @@@ } /** - * 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) { @@@ -401,20 -412,22 +415,22 @@@ * 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 @@@ -438,17 -451,21 +454,21 @@@ 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");