Added title to rename dialog; and some cleaning
authorDavid A. Velasco <dvelasco@solidgear.es>
Thu, 22 Nov 2012 09:24:26 +0000 (10:24 +0100)
committerDavid A. Velasco <dvelasco@solidgear.es>
Thu, 22 Nov 2012 09:24:26 +0000 (10:24 +0100)
res/layout/edit_box_dialog.xml
res/values/strings.xml
src/com/owncloud/android/ui/dialog/EditNameDialog.java
src/com/owncloud/android/ui/fragment/FileDetailFragment.java
src/com/owncloud/android/ui/fragment/OCFileListFragment.java

index c2168ab..f1d541c 100644 (file)
         android:id="@+id/user_input"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:id="@+id/user_input"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:ems="10" >
+        android:ems="10" 
+               android:inputType="textNoSuggestions"
+               >
 
 
-        <requestFocus />
     </EditText>
 
     </EditText>
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:gravity="center_horizontal" >
-
-        <Button
-            android:id="@+id/cancel"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/common_cancel" />
-
-        <Button
-            android:id="@+id/ok"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/common_ok" />
-
-    </LinearLayout>
-
 </LinearLayout>
 </LinearLayout>
index dbb6224..bf9ab00 100644 (file)
     <string name="remove_success_msg">"Successful removal"</string>
     <string name="remove_fail_msg">"Removal could not be completed"</string>
     
     <string name="remove_success_msg">"Successful removal"</string>
     <string name="remove_fail_msg">"Removal could not be completed"</string>
     
+    <string name="rename_dialog_title">Enter a new name</string>
     <string name="rename_local_fail_msg">"Local copy could not be renamed; try a differente new name"</string>
     <string name="rename_server_fail_msg">"Rename could not be completed"</string>
         
     <string name="rename_local_fail_msg">"Local copy could not be renamed; try a differente new name"</string>
     <string name="rename_server_fail_msg">"Rename could not be completed"</string>
         
index 1755fa5..41d65d4 100644 (file)
 
 package com.owncloud.android.ui.dialog;
 
 
 package com.owncloud.android.ui.dialog;
 
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.view.ViewGroup;
-import android.view.View.OnClickListener;
 import android.view.WindowManager.LayoutParams;
 import android.view.WindowManager.LayoutParams;
-import android.widget.Button;
 import android.widget.TextView;
 
 import com.actionbarsherlock.app.SherlockDialogFragment;
 import android.widget.TextView;
 
 import com.actionbarsherlock.app.SherlockDialogFragment;
@@ -33,52 +33,93 @@ import com.owncloud.android.R;
 
 
 /**
 
 
 /**
- * Dialog to request the user about a certificate that could not be validated with the certificates store in the system.
+ * Dialog to request the user to input a name, optionally initialized with a former name.
  * 
  * @author Bartek Przybylski
  * 
  * @author Bartek Przybylski
+ * @author David A. Velasco
  */
  */
-public class EditNameDialog extends SherlockDialogFragment implements OnClickListener {
+public class EditNameDialog extends SherlockDialogFragment implements DialogInterface.OnClickListener {
 
     public static final String TAG = EditNameDialog.class.getSimpleName();
     
 
     public static final String TAG = EditNameDialog.class.getSimpleName();
     
+    protected static final String ARG_TITLE = "title";
+    protected static final String ARG_NAME = "name";
+    
     private String mNewFilename;
     private boolean mResult;
     private EditNameDialogListener mListener;
     
     private String mNewFilename;
     private boolean mResult;
     private EditNameDialogListener mListener;
     
-    static public EditNameDialog newInstance(String filename) {
+    /**
+     * Public factory method to get dialog instances.
+     * 
+     * @param title         Text to show as title in the dialog.
+     * @param name          Optional text to include in the text input field when the dialog is shown.
+     * @param listener      Instance to notify when the dialog is dismissed.
+     * @return              New dialog instance, ready to show.
+     */
+    static public EditNameDialog newInstance(String title, String name, EditNameDialogListener listener) {
         EditNameDialog f = new EditNameDialog();
         Bundle args = new Bundle();
         EditNameDialog f = new EditNameDialog();
         Bundle args = new Bundle();
-        args.putString("filename", filename);
+        args.putString(ARG_TITLE, title);
+        args.putString(ARG_NAME, name);
         f.setArguments(args);
         f.setArguments(args);
+        f.setOnDismissListener(listener);
         return f;
     }
     
         return f;
     }
     
+    
+    /**
+     * {@inheritDoc}
+     */
     @Override
     @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        View v = inflater.inflate(R.layout.edit_box_dialog, container, false);
-
-        String currentName = getArguments().getString("filename");
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        String currentName = getArguments().getString(ARG_NAME);
         if (currentName == null)
             currentName = "";
         if (currentName == null)
             currentName = "";
+        String title = getArguments().getString(ARG_TITLE);
+        
+        // Inflate the layout for the dialog
+        LayoutInflater inflater = getSherlockActivity().getLayoutInflater();
+        View v = inflater.inflate(R.layout.edit_box_dialog, null);  // null parent view because it will go in the dialog layout
+        TextView inputText = ((TextView)v.findViewById(R.id.user_input));
+        inputText.setText(currentName);
         
         
-        ((Button)v.findViewById(R.id.cancel)).setOnClickListener(this);
-        ((Button)v.findViewById(R.id.ok)).setOnClickListener(this);
-        ((TextView)v.findViewById(R.id.user_input)).setText(currentName);
-        ((TextView)v.findViewById(R.id.user_input)).requestFocus();
-        getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
+        // Set it to the dialog 
+        AlertDialog.Builder builder = new AlertDialog.Builder(getSherlockActivity());
+        builder.setView(v)
+               .setPositiveButton(R.string.common_ok, this)
+               .setNegativeButton(R.string.common_cancel, this);
 
 
+        if (title != null) {
+            builder.setTitle(title);
+        }
+        
         mResult = false;
         mResult = false;
-        return v;
-    }
+        
+        Dialog d = builder.create();
+
+        inputText.requestFocus();
+        d.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
+        return d;
+    }    
+
     
     
+    /**
+     * Performs the corresponding action when a dialog button is clicked.
+     * 
+     * Saves the text in the input field to be accessed through {@link #getNewFilename()} when the positive
+     * button is clicked.
+     * 
+     * Notify the current listener in any case.
+     */
     @Override
     @Override
-    public void onClick(View view) {
-        switch (view.getId()) {
-            case R.id.ok: {
-                mNewFilename = ((TextView)getView().findViewById(R.id.user_input)).getText().toString();
+    public void onClick(DialogInterface dialog, int which) {
+        switch (which) {
+            case AlertDialog.BUTTON_POSITIVE: {
+                mNewFilename = ((TextView)(getDialog().findViewById(R.id.user_input))).getText().toString();
                 mResult = true;
             }
                 mResult = true;
             }
-            case R.id.cancel: { // fallthought
+            case AlertDialog.BUTTON_NEGATIVE: { // fall through
                 dismiss();
                 if (mListener != null)
                     mListener.onDismiss(this);
                 dismiss();
                 if (mListener != null)
                     mListener.onDismiss(this);
@@ -86,23 +127,35 @@ public class EditNameDialog extends SherlockDialogFragment implements OnClickLis
         }
     }
     
         }
     }
     
-    public void setOnDismissListener(EditNameDialogListener listener) {
+    protected void setOnDismissListener(EditNameDialogListener listener) {
         mListener = listener;
     }
     
         mListener = listener;
     }
     
+    /**
+     * Returns the text in the input field after the user clicked the positive button.
+     * 
+     * @return      Text in the input field.
+     */
     public String getNewFilename() {
         return mNewFilename;
     }
     
     public String getNewFilename() {
         return mNewFilename;
     }
     
-    // true if user clicked ok
+    /**
+     * 
+     * @return      True when the user clicked the positive button.
+     */
     public boolean getResult() {
         return mResult;
     }
 
     
     public boolean getResult() {
         return mResult;
     }
 
     
+    /**
+     * Interface to receive a notification when any button in the dialog is clicked.
+     */
     public interface EditNameDialogListener {
         public void onDismiss(EditNameDialog dialog);
     }
     public interface EditNameDialogListener {
         public void onDismiss(EditNameDialog dialog);
     }
-    
+
+
 }
 
 }
 
index cd89807..d0c0a94 100644 (file)
@@ -328,8 +328,7 @@ public class FileDetailFragment extends SherlockFragment implements
                 break;\r
             }\r
             case R.id.fdRenameBtn: {\r
                 break;\r
             }\r
             case R.id.fdRenameBtn: {\r
-                EditNameDialog dialog = EditNameDialog.newInstance(mFile.getFileName());\r
-                dialog.setOnDismissListener(this);\r
+                EditNameDialog dialog = EditNameDialog.newInstance(getString(R.string.rename_dialog_title), mFile.getFileName(), this);\r
                 dialog.show(getFragmentManager(), "nameeditdialog");\r
                 break;\r
             }   \r
                 dialog.show(getFragmentManager(), "nameeditdialog");\r
                 break;\r
             }   \r
index 45bf110..72d530c 100644 (file)
@@ -203,8 +203,7 @@ public class OCFileListFragment extends FragmentListView implements EditNameDial
         mTargetFile = (OCFile) mAdapter.getItem(info.position);
         switch (item.getItemId()) {
             case R.id.rename_file_item: {
         mTargetFile = (OCFile) mAdapter.getItem(info.position);
         switch (item.getItemId()) {
             case R.id.rename_file_item: {
-                EditNameDialog dialog = EditNameDialog.newInstance(mTargetFile.getFileName());
-                dialog.setOnDismissListener(this);
+                EditNameDialog dialog = EditNameDialog.newInstance(getString(R.string.rename_dialog_title), mTargetFile.getFileName(), this);
                 dialog.show(getFragmentManager(), EditNameDialog.TAG);
                 return true;
             }
                 dialog.show(getFragmentManager(), EditNameDialog.TAG);
                 return true;
             }