import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
+import android.support.v4.content.ContextCompat;
import android.support.v4.view.GravityCompat;
-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.Window;
+import android.widget.ProgressBar;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
import android.widget.Toast;
import com.owncloud.android.MainApp;
import com.owncloud.android.R;
+import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.files.services.FileDownloader;
import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
private boolean mDualPane;
private View mLeftFragmentContainer;
private View mRightFragmentContainer;
+ private ProgressBar mProgressBar;
private static final String KEY_WAITING_TO_PREVIEW = "WAITING_TO_PREVIEW";
private static final String KEY_SYNC_IN_PROGRESS = "SYNC_IN_PROGRESS";
@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
// Navigation Drawer
initDrawer();
+ mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
+ mProgressBar.setIndeterminateDrawable(
+ ContextCompat.getDrawable(this,
+ R.drawable.actionbar_progress_indeterminate_horizontal));
+
mDualPane = getResources().getBoolean(R.bool.large_land_layout);
mLeftFragmentContainer = findViewById(R.id.left_fragment_container);
mRightFragmentContainer = findViewById(R.id.right_fragment_container);
// according to the official
// documentation
- setSupportProgressBarIndeterminateVisibility(mSyncInProgress
- /*|| mRefreshSharesInProgress*/);
+ // enable ActionBar app icon to behave as action to toggle nav drawer
+ //getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ getSupportActionBar().setHomeButtonEnabled(true);
+
+ mProgressBar.setIndeterminate(mSyncInProgress);
// always AFTER setContentView(...) ; to work around bug in its implementation
setBackgroundText();
protected void onStart() {
Log_OC.v(TAG, "onStart() start");
super.onStart();
- getSupportActionBar().setIcon(DisplayUtils.getSeasonalIconId());
Log_OC.v(TAG, "onStart() end");
}
file = getStorageManager().getFileByPath(OCFile.ROOT_PATH); // never returns null
}
setFile(file);
-
+
+ if (mAccountWasSet) {
+ RelativeLayout navigationDrawerLayout = (RelativeLayout) findViewById(R.id.left_drawer);
+ if (navigationDrawerLayout != null && getAccount() != null) {
+ TextView username = (TextView) navigationDrawerLayout.findViewById(R.id.drawer_username);
+ int lastAtPos = getAccount().name.lastIndexOf("@");
+ username.setText(getAccount().name.substring(0, lastAtPos));
+ }
+ }
+
if (!stateWasRecovered) {
Log_OC.d(TAG, "Initializing Fragments in onAccountChanged..");
initFragmentsWithFile();
startPlaybackPosition, autoplay);
} else {
- secondFragment = new FileDetailFragment(file, getAccount());
+ secondFragment = FileDetailFragment.newInstance(file, getAccount());
}
}
return secondFragment;
String[] filePaths = data.getStringArrayExtra(UploadFilesActivity.EXTRA_CHOSEN_FILES);
if (filePaths != null) {
String[] remotePaths = new String[filePaths.length];
- String remotePathBase = "";
-
- if (!remotePathBase.endsWith(OCFile.PATH_SEPARATOR))
- remotePathBase += OCFile.PATH_SEPARATOR;
+ String remotePathBase = getCurrentDir().getRemotePath();
for (int j = 0; j< remotePaths.length; j++) {
remotePaths[j] = remotePathBase + (new File(filePaths[j])).getName();
}
@Override
public void onBackPressed() {
- OCFileListFragment listOfFiles = getListOfFilesFragment();
- if (mDualPane || getSecondFragment() == null) {
- if (getFile() != null && getFile().getParentId() == 0) {
- finish();
- return;
+ if (!isDrawerOpen()){
+ OCFileListFragment listOfFiles = getListOfFilesFragment();
+ if (mDualPane || getSecondFragment() == null) {
+ OCFile currentDir = getCurrentDir();
+ if (currentDir == null || currentDir.getParentId() == FileDataStorageManager.ROOT_PARENT_ID) {
+ finish();
+ return;
+ }
+ if (listOfFiles != null) { // should never be null, indeed
+ listOfFiles.onBrowseUp();
+ }
}
if (listOfFiles != null) { // should never be null, indeed
- listOfFiles.onBrowseUp();
+ setFile(listOfFiles.getCurrentFile());
}
+ cleanSecondFragment();
+ } else {
+ super.onBackPressed();
}
- if (listOfFiles != null) { // should never be null, indeed
- setFile(listOfFiles.getCurrentFile());
- }
- cleanSecondFragment();
-
}
@Override
}
removeStickyBroadcast(intent);
Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress);
- setSupportProgressBarIndeterminateVisibility(mSyncInProgress
- /*|| mRefreshSharesInProgress*/);
+ mProgressBar.setIndeterminate(mSyncInProgress);
+ //mProgressBar.setVisibility((mSyncInProgress) ? View.VISIBLE : View.INVISIBLE);
+ //setSupportProgressBarIndeterminateVisibility(mSyncInProgress
+ /*|| mRefreshSharesInProgress*/ //);
setBackgroundText();
startImagePreview(getFile());
} // TODO what about other kind of previews?
}
-
+
+ mProgressBar.setIndeterminate(false);
} finally {
if (intent != null) {
removeStickyBroadcast(intent);
*/
@Override
public void showDetails(OCFile file) {
- Fragment detailFragment = new FileDetailFragment(file, getAccount());
+ Fragment detailFragment = FileDetailFragment.newInstance(file, getAccount());
setSecondFragment(detailFragment);
updateFragmentsVisibility(true);
updateActionBarTitleAndHomeButton(file);
setFile(file);
}
-
- /**
- * TODO
- */
- private void updateActionBarTitleAndHomeButton(OCFile chosenFile) {
- ActionBar actionBar = getSupportActionBar();
-
- // For adding content description tag to a title field in the action bar
- int actionBarTitleId = getResources().getIdentifier("action_bar_title", "id", "android");
-
- if (chosenFile == null || mDualPane) {
- // 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(true);
- actionBar.setDisplayShowTitleEnabled(true);
- mDrawerToggle.setDrawerIndicatorEnabled(!noRoot);
- String title = getString(R.string.default_display_name_for_root_folder);
- if (noRoot) {
- title = currentDir.getFileName();
- }
- actionBar.setTitle(title);
- View actionBarTitleView = getWindow().getDecorView().findViewById(actionBarTitleId);
- if (actionBarTitleView != null) { // it's null in Android 2.x
- actionBarTitleView.setContentDescription(title);
- }
- actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+ @Override
+ protected void updateActionBarTitleAndHomeButton(OCFile chosenFile) {
+ if (mDualPane) {
+ // in dual pane mode, keep the focus of title an action bar in the current folder
+ super.updateActionBarTitleAndHomeButton(getCurrentDir());
} else {
- actionBar.setDisplayHomeAsUpEnabled(true);
- actionBar.setDisplayShowTitleEnabled(true);
- mDrawerToggle.setDrawerIndicatorEnabled(false);
- actionBar.setTitle(chosenFile.getFileName());
- actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
- View actionBarTitleView = getWindow().getDecorView().findViewById(actionBarTitleId);
- if (actionBarTitleView != null) { // it's null in Android 2.x
- getWindow().getDecorView().findViewById(actionBarTitleId).
- setContentDescription(chosenFile.getFileName());
- }
+ super.updateActionBarTitleAndHomeButton(chosenFile);
}
- }
+ }
@Override
protected ServiceConnection newTransferenceServiceConnection() {
super.onRemoteOperationFinish(operation, result);
if (operation instanceof RemoveFileOperation) {
- onRemoveFileOperationFinish((RemoveFileOperation)operation, result);
+ onRemoveFileOperationFinish((RemoveFileOperation) operation, result);
} else if (operation instanceof RenameFileOperation) {
onRenameFileOperationFinish((RenameFileOperation)operation, result);
private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation,
RemoteOperationResult result) {
- dismissLoadingDialog();
- OCFile syncedFile = operation.getLocalFile();
- if (!result.isSuccess()) {
- if (result.getCode() == ResultCode.SYNC_CONFLICT) {
- Intent i = new Intent(this, ConflictsResolveActivity.class);
- i.putExtra(ConflictsResolveActivity.EXTRA_FILE, syncedFile);
- i.putExtra(ConflictsResolveActivity.EXTRA_ACCOUNT, getAccount());
- startActivity(i);
-
- }
-
- } else {
+ if (result.isSuccess()) {
if (operation.transferWasRequested()) {
+ OCFile syncedFile = operation.getLocalFile();
onTransferStateChanged(syncedFile, true, true);
-
- } else {
- Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result,
- operation, getResources()), Toast.LENGTH_LONG);
- msg.show();
+ invalidateOptionsMenu();
}
}
}
getApplicationContext()
);
synchFolderOp.execute(getAccount(), MainApp.getAppContext(), this, null, null);
-
- setSupportProgressBarIndeterminateVisibility(true);
+ mProgressBar.setIndeterminate(true);
setBackgroundText();
}
* @param file {@link OCFile} to download and preview.
*/
public void startDownloadForPreview(OCFile file) {
- Fragment detailFragment = new FileDetailFragment(file, getAccount());
+ Fragment detailFragment = FileDetailFragment.newInstance(file, getAccount());
setSecondFragment(detailFragment);
mWaitingToPreview = file;
requestForDownload();