Merge branch 'fix_protocol_send_mail' into fix_logs_change_orientation
authorjabarros <jabarros@solidgear.es>
Wed, 10 Dec 2014 13:13:32 +0000 (14:13 +0100)
committerjabarros <jabarros@solidgear.es>
Wed, 10 Dec 2014 13:13:32 +0000 (14:13 +0100)
1  2 
res/values/strings.xml
src/com/owncloud/android/ui/activity/LogHistoryActivity.java

diff --combined res/values/strings.xml
@@@ -39,9 -39,7 +39,9 @@@
      <string name="prefs_recommend">Recommend to a friend</string>
      <string name="prefs_feedback">Feedback</string>
      <string name="prefs_imprint">Imprint</string>
 -    
 +    <string name="prefs_remember_last_share_location">Remember share location</string>
 +    <string name="prefs_remember_last_upload_location_summary">Remember last share upload location</string>
 +
        <string name="recommend_subject">"Try %1$s on your smartphone!"</string>
        <string name="recommend_text">"I want to invite you to use %1$s on your smartphone!\nDownload here: %2$s"</string>
  
      <string name="uploader_wrn_no_content_text">No content was received. Nothing to upload.</string>
      <string name="uploader_error_forbidden_content">%1$s is not allowed to access the shared content</string>
      <string name="uploader_info_uploading">Uploading</string>
 +    <string name="file_list_seconds_ago">seconds ago</string>
      <string name="file_list_empty">Nothing in here. Upload something!</string>
      <string name="file_list_loading">Loading...</string>
      <string name="local_file_list_empty">There are no files in this folder.</string>
 +    <string name="file_list_folder">folder</string>
 +    <string name="file_list_folders">folders</string>
 +    <string name="file_list_file">file</string>
 +    <string name="file_list_files">files</string>
      <string name="filedetails_select_file">Tap on a file to display additional information.</string>
      <string name="filedetails_size">Size:</string>
      <string name="filedetails_type">Type:</string>
        <string name="network_error_socket_timeout_exception">An error occurred while waiting for the server, the operation couldn\'t have been done</string>
        <string name="network_error_connect_timeout_exception">An error occurred while waiting for the server, the operation couldn\'t have been done</string>
        <string name="network_host_not_available">The operation couldn\'t be completed, server is unavailable</string>
 +
        <string name="empty"></string>
        
        <string name="forbidden_permissions">You do not have permission %s</string>
  
        <string name="actionbar_logger">Logs</string>
        <string name="log_send_history_button">Send History</string>
-       <string name="log_mail_subject">ownCloud Android app logs</string>
-       <string name="log_progress_dialog_text">Loading data...</string>
+       <string name="log_send_no_mail_app">No app for sending logs found. Install mail app!</string>
+       <string name="log_send_mail_subject">%1$s Android app logs</string>
+       <string name="log_progress_dialog_text">Loading data&#8230;</string>
  
        <string name="saml_authentication_required_text">Authentication required</string>
        <string name="saml_authentication_wrong_pass">Wrong password</string>
        <string name="actionbar_move">Move</string>
        <string name="file_list_empty_moving">Nothing in here. You can add a folder!</string>
 -      <string name="move_choose_button_text">Choose</string>
 +      <string name="folder_picker_choose_button_text">Choose</string>
  
        <string name="move_file_not_found">Unable to move. Please check whether the file exists</string>
        <string name="move_file_invalid_into_descendent">It is not possible to move a folder into a descendant</string>
        <string name="prefs_category_instant_uploading">Instant Uploads</string>
        <string name="prefs_category_security">Security</string>
  
 +      <string name="prefs_instant_video_upload_path_title">Upload Video Path</string>
 +
  </resources>
@@@ -25,6 -25,7 +25,7 @@@ import java.lang.ref.WeakReference
  import java.lang.reflect.Field;
  import java.util.ArrayList;
  
+ import android.content.ActivityNotFoundException;
  import android.content.Intent;
  import android.net.Uri;
  import android.os.AsyncTask;
@@@ -36,6 -37,7 +37,7 @@@ import android.view.View
  import android.view.View.OnClickListener;
  import android.widget.Button;
  import android.widget.TextView;
+ import android.widget.Toast;
  
  import com.actionbarsherlock.app.ActionBar;
  import com.actionbarsherlock.app.SherlockFragmentActivity;
@@@ -51,15 -53,12 +53,15 @@@ public class LogHistoryActivity extend
  
      private static final String MAIL_ATTACHMENT_TYPE = "text/plain";
  
 +    private static final String KEY_LOG_TEXT = "LOG_TEXT";
 +
      private static final String TAG = LogHistoryActivity.class.getSimpleName();
  
      private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT";
  
      private String mLogPath = FileStorageUtils.getLogPath();
      private File logDIR = null;
 +    private String mLogText;
  
  
      @Override
@@@ -73,7 -72,6 +75,7 @@@
          actionBar.setDisplayHomeAsUpEnabled(true);
          Button deleteHistoryButton = (Button) findViewById(R.id.deleteLogHistoryButton);
          Button sendHistoryButton = (Button) findViewById(R.id.sendLogHistoryButton);
 +        TextView logTV = (TextView) findViewById(R.id.logTV);
  
          deleteHistoryButton.setOnClickListener(new OnClickListener() {
              
              }
          });
  
 -        if (mLogPath != null) {
 -            logDIR = new File(mLogPath);
 -        }
 -
 -        if (logDIR != null && logDIR.isDirectory()) {
 -            // Show a dialog while log data is being loaded
 -            showLoadingDialog();
 -
 -            TextView logTV = (TextView) findViewById(R.id.logTV);
 +        if (savedInstanceState == null) {
 +            if (mLogPath != null) {
 +                logDIR = new File(mLogPath);
 +            }
  
 -            // Start a new thread that will load all the log data
 -            LoadingLogTask task = new LoadingLogTask(logTV);
 -            task.execute();
 +            if (logDIR != null && logDIR.isDirectory()) {
 +                // Show a dialog while log data is being loaded
 +                showLoadingDialog();
  
 +                // Start a new thread that will load all the log data
 +                LoadingLogTask task = new LoadingLogTask(logTV);
 +                task.execute();
 +            }
 +        } else {
 +            mLogText = savedInstanceState.getString(KEY_LOG_TEXT);
 +            logTV.setText(mLogText);
          }
      }
  
       */
      private void sendMail() {
  
+         // For the moment we need to consider the possibility that setup.xml
+         // does not include the "mail_logger" entry. This block prevents that
+         // compilation fails in this case.
          String emailAddress;
          try {
              Class<?> stringClass = R.string.class;
              Field mailLoggerField = stringClass.getField("mail_logger");
-             int emailAddressId = (Integer)mailLoggerField.get(null);
+             int emailAddressId = (Integer) mailLoggerField.get(null);
              emailAddress = getString(emailAddressId);
-             
          } catch (Exception e) {
              emailAddress = "";
          }
+         
          ArrayList<Uri> uris = new ArrayList<Uri>();
  
          // Convert from paths to Android friendly Parcelable Uri's
          for (String file : Log_OC.getLogFileNames())
          {
-             if (new File(mLogPath + File.separator, file).exists()) {
-                 Uri u = Uri.parse("file://" + mLogPath + File.separator + file);
-                 uris.add(u);
+             File logFile = new File(mLogPath, file);
+             if (logFile.exists()) {
+                 uris.add(Uri.fromFile(logFile));
              }
          }
  
          Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
  
-         // Explicitly only use Gmail to send
-         intent.setClassName("com.google.android.gm","com.google.android.gm.ComposeActivityGmail");
-         intent.putExtra(Intent.EXTRA_EMAIL, new String[]{ emailAddress });
-         intent.putExtra(Intent.EXTRA_SUBJECT, getText(R.string.log_mail_subject));
+         intent.putExtra(Intent.EXTRA_EMAIL, emailAddress);
+         String subject = String.format(getString(R.string.log_send_mail_subject), getString(R.string.app_name));
+         intent.putExtra(Intent.EXTRA_SUBJECT, subject);
          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          intent.setType(MAIL_ATTACHMENT_TYPE);
          intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
-         if (intent.resolveActivity(getPackageManager()) != null) {
+         try {
              startActivity(intent);
+         } catch (ActivityNotFoundException e) {
+             Toast.makeText(this, getString(R.string.log_send_no_mail_app), Toast.LENGTH_LONG).show();
+             Log_OC.i(TAG, "Could not find app for sending log history.");
          }
      }
  
      /**
              if (textViewReference != null && result != null) {
                  final TextView logTV = textViewReference.get();
                  if (logTV != null) {
 -                    logTV.setText(result);
 +                    mLogText = result;
 +                    logTV.setText(mLogText);
                      dismissLoadingDialog();
                  }
              }
              loading.dismiss();
          }
      }
 +
 +    @Override
 +    protected void onSaveInstanceState(Bundle outState) {
 +        super.onSaveInstanceState(outState);
 +
 +        /// global state
 +        outState.putString(KEY_LOG_TEXT, mLogText);
 +    }
  }