Fixed hardcoded string in UploaderActivity layout; and German translations
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / activity / FileDisplayActivity.java
index cfee79d..7df1ecb 100644 (file)
@@ -1,9 +1,10 @@
 /* ownCloud Android client application\r
  *   Copyright (C) 2011  Bartek Przybylski\r
 /* ownCloud Android client application\r
  *   Copyright (C) 2011  Bartek Przybylski\r
+ *   Copyright (C) 2012-2013 ownCloud Inc.\r
  *\r
  *   This program is free software: you can redistribute it and/or modify\r
  *   it under the terms of the GNU General Public License as published by\r
  *\r
  *   This program is free software: you can redistribute it and/or modify\r
  *   it under the terms of the GNU General Public License as published by\r
- *   the Free Software Foundation, either version 3 of the License, or\r
+ *   the Free Software Foundation, either version 2 of the License, or\r
  *   (at your option) any later version.\r
  *\r
  *   This program is distributed in the hope that it will be useful,\r
  *   (at your option) any later version.\r
  *\r
  *   This program is distributed in the hope that it will be useful,\r
@@ -35,6 +36,7 @@ import android.content.Intent;
 import android.content.IntentFilter;\r
 import android.content.ServiceConnection;\r
 import android.content.SharedPreferences;\r
 import android.content.IntentFilter;\r
 import android.content.ServiceConnection;\r
 import android.content.SharedPreferences;\r
+import android.content.SharedPreferences.Editor;\r
 import android.content.pm.PackageInfo;\r
 import android.content.pm.PackageManager.NameNotFoundException;\r
 import android.content.res.Resources.NotFoundException;\r
 import android.content.pm.PackageInfo;\r
 import android.content.pm.PackageManager.NameNotFoundException;\r
 import android.content.res.Resources.NotFoundException;\r
@@ -82,7 +84,10 @@ import com.owncloud.android.operations.RenameFileOperation;
 import com.owncloud.android.operations.SynchronizeFileOperation;\r
 import com.owncloud.android.operations.RemoteOperationResult.ResultCode;\r
 import com.owncloud.android.syncadapter.FileSyncService;\r
 import com.owncloud.android.operations.SynchronizeFileOperation;\r
 import com.owncloud.android.operations.RemoteOperationResult.ResultCode;\r
 import com.owncloud.android.syncadapter.FileSyncService;\r
+import com.owncloud.android.ui.dialog.ChangelogDialog;\r
+import com.owncloud.android.ui.dialog.EditNameDialog;\r
 import com.owncloud.android.ui.dialog.SslValidatorDialog;\r
 import com.owncloud.android.ui.dialog.SslValidatorDialog;\r
+import com.owncloud.android.ui.dialog.EditNameDialog.EditNameDialogListener;\r
 import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener;\r
 import com.owncloud.android.ui.fragment.FileDetailFragment;\r
 import com.owncloud.android.ui.fragment.OCFileListFragment;\r
 import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener;\r
 import com.owncloud.android.ui.fragment.FileDetailFragment;\r
 import com.owncloud.android.ui.fragment.OCFileListFragment;\r
@@ -98,7 +103,7 @@ import eu.alefzero.webdav.WebdavClient;
  */\r
 \r
 public class FileDisplayActivity extends SherlockFragmentActivity implements\r
  */\r
 \r
 public class FileDisplayActivity extends SherlockFragmentActivity implements\r
-    OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNavigationListener, OnSslValidatorListener, OnRemoteOperationListener {\r
+    OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNavigationListener, OnSslValidatorListener, OnRemoteOperationListener, EditNameDialogListener {\r
     \r
     private ArrayAdapter<String> mDirectories;\r
     private OCFile mCurrentDir = null;\r
     \r
     private ArrayAdapter<String> mDirectories;\r
     private OCFile mCurrentDir = null;\r
@@ -124,6 +129,7 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
     private static final int DIALOG_CHOOSE_UPLOAD_SOURCE = 4;\r
     private static final int DIALOG_SSL_VALIDATOR = 5;\r
     private static final int DIALOG_CERT_NOT_SAVED = 6;\r
     private static final int DIALOG_CHOOSE_UPLOAD_SOURCE = 4;\r
     private static final int DIALOG_SSL_VALIDATOR = 5;\r
     private static final int DIALOG_CERT_NOT_SAVED = 6;\r
+    private static final String DIALOG_CHANGELOG_TAG = "DIALOG_CHANGELOG";\r
 \r
     \r
     private static final int ACTION_SELECT_CONTENT_FROM_APPS = 1;\r
 \r
     \r
     private static final int ACTION_SELECT_CONTENT_FROM_APPS = 1;\r
@@ -139,10 +145,10 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         super.onCreate(savedInstanceState);\r
 \r
         /// Load of parameters from received intent\r
         super.onCreate(savedInstanceState);\r
 \r
         /// Load of parameters from received intent\r
-        mCurrentDir = getIntent().getParcelableExtra(FileDetailFragment.EXTRA_FILE); // no check necessary, mCurrenDir == null if the parameter is not in the intent\r
         Account account = getIntent().getParcelableExtra(FileDetailFragment.EXTRA_ACCOUNT);\r
         Account account = getIntent().getParcelableExtra(FileDetailFragment.EXTRA_ACCOUNT);\r
-        if (account != null)\r
-            AccountUtils.setCurrentOwnCloudAccount(this, account.name);\r
+        if (account != null && AccountUtils.setCurrentOwnCloudAccount(this, account.name)) {\r
+            mCurrentDir = getIntent().getParcelableExtra(FileDetailFragment.EXTRA_FILE); \r
+        }\r
         \r
         /// Load of saved instance state: keep this always before initDataFromCurrentAccount()\r
         if(savedInstanceState != null) {\r
         \r
         /// Load of saved instance state: keep this always before initDataFromCurrentAccount()\r
         if(savedInstanceState != null) {\r
@@ -183,7 +189,7 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         // Drop-down navigation \r
         mDirectories = new CustomArrayAdapter<String>(this, R.layout.sherlock_spinner_dropdown_item);\r
         OCFile currFile = mCurrentDir;\r
         // Drop-down navigation \r
         mDirectories = new CustomArrayAdapter<String>(this, R.layout.sherlock_spinner_dropdown_item);\r
         OCFile currFile = mCurrentDir;\r
-        while(currFile != null && currFile.getFileName() != OCFile.PATH_SEPARATOR) {\r
+        while(mStorageManager != null && currFile != null && currFile.getFileName() != OCFile.PATH_SEPARATOR) {\r
             mDirectories.add(currFile.getFileName());\r
             currFile = mStorageManager.getFileById(currFile.getParentId());\r
         }\r
             mDirectories.add(currFile.getFileName());\r
             currFile = mStorageManager.getFileById(currFile.getParentId());\r
         }\r
@@ -206,11 +212,41 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         actionBar.setListNavigationCallbacks(mDirectories, this);\r
         setSupportProgressBarIndeterminateVisibility(false);        // always AFTER setContentView(...) ; to workaround bug in its implementation\r
         \r
         actionBar.setListNavigationCallbacks(mDirectories, this);\r
         setSupportProgressBarIndeterminateVisibility(false);        // always AFTER setContentView(...) ; to workaround bug in its implementation\r
         \r
+        \r
+        // show changelog, if needed\r
+        //showChangeLog();\r
+        \r
         Log.d(getClass().toString(), "onCreate() end");\r
     }\r
 \r
     \r
     /**\r
         Log.d(getClass().toString(), "onCreate() end");\r
     }\r
 \r
     \r
     /**\r
+     * Shows a dialog with the change log of the current version after each app update\r
+     * \r
+     *  TODO make it permanent; by now, only to advice the workaround app for 4.1.x\r
+     */\r
+    private void showChangeLog() {\r
+        if (android.os.Build.VERSION.SDK_INT == android.os.Build.VERSION_CODES.JELLY_BEAN) {\r
+            final String KEY_VERSION = "version";\r
+            SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());\r
+            int currentVersionNumber = 0;\r
+            int savedVersionNumber = sharedPref.getInt(KEY_VERSION, 0);\r
+            try {\r
+                PackageInfo pi          = getPackageManager().getPackageInfo(getPackageName(), 0);\r
+                currentVersionNumber    = pi.versionCode;\r
+            } catch (Exception e) {}\r
+     \r
+            if (currentVersionNumber > savedVersionNumber) {\r
+                ChangelogDialog.newInstance(true).show(getSupportFragmentManager(), DIALOG_CHANGELOG_TAG);\r
+                Editor editor   = sharedPref.edit();\r
+                editor.putInt(KEY_VERSION, currentVersionNumber);\r
+                editor.commit();\r
+            }\r
+        }\r
+    }\r
+    \r
+\r
+    /**\r
      * Launches the account creation activity. To use when no ownCloud account is available\r
      */\r
     private void createFirstAccount() {\r
      * Launches the account creation activity. To use when no ownCloud account is available\r
      */\r
     private void createFirstAccount() {\r
@@ -311,8 +347,9 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         boolean retval = true;\r
         switch (item.getItemId()) {\r
             case R.id.createDirectoryItem: {\r
         boolean retval = true;\r
         switch (item.getItemId()) {\r
             case R.id.createDirectoryItem: {\r
-                showDialog(DIALOG_CREATE_DIR);\r
-                break;\r
+                //showDialog(DIALOG_CREATE_DIR);\r
+                EditNameDialog dialog = EditNameDialog.newInstance(getString(R.string.uploader_info_dirname), "", this);\r
+                dialog.show(getSupportFragmentManager(), "createdirdialog");\r
             }\r
             case R.id.startSync: {\r
                 startSynchronization();\r
             }\r
             case R.id.startSync: {\r
                 startSynchronization();\r
@@ -1248,7 +1285,32 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
     }\r
 \r
 \r
     }\r
 \r
 \r
-    \r
-\r
+    @Override\r
+    public void onDismiss(EditNameDialog dialog) {\r
+        //dialog.dismiss();\r
+        if (dialog.getResult()) {\r
+            String newDirectoryName = dialog.getNewFilename().trim();\r
+            Log.d(TAG, "'create directory' dialog dismissed with new name " + newDirectoryName);\r
+            if (newDirectoryName.length() > 0) {\r
+                String path;\r
+                if (mCurrentDir == null) {\r
+                    // this is just a patch; we should ensure that mCurrentDir never is null\r
+                    if (!mStorageManager.fileExists(OCFile.PATH_SEPARATOR)) {\r
+                        OCFile file = new OCFile(OCFile.PATH_SEPARATOR);\r
+                        mStorageManager.saveFile(file);\r
+                    }\r
+                    mCurrentDir = mStorageManager.getFileByPath(OCFile.PATH_SEPARATOR);\r
+                }\r
+                path = FileDisplayActivity.this.mCurrentDir.getRemotePath();\r
+                \r
+                // Create directory\r
+                path += newDirectoryName + OCFile.PATH_SEPARATOR;\r
+                Thread thread = new Thread(new DirectoryCreator(path,  AccountUtils.getCurrentOwnCloudAccount(FileDisplayActivity.this), new Handler()));\r
+                thread.start();\r
+                \r
+                showDialog(DIALOG_SHORT_WAIT);\r
+            }\r
+        }\r
+    }\r
 \r
 }\r
 \r
 }\r