Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 743e7af9 authored by Richard MacGregor's avatar Richard MacGregor
Browse files

Copy/Move: via details pane (actiondialog)

Dialog will allow the user to navigate directory structure to find their
target.

Change-Id: I6ac10ad9f7fa70d5c3e837ff6032b796c311b52a
parent 2b053e52
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@
      android:layout_alignParentStart="true"
      android:layout_alignParentTop="true"
      android:layout_marginStart="@dimen/default_margin"
      android:layout_marginTop="@dimen/default_margin"
      android:layout_marginTop="@dimen/extra_margin"
      android:ellipsize="middle"
      android:singleLine="true"
      android:textAppearance="@style/primary_text_appearance" />
@@ -53,7 +53,7 @@
      android:layout_height="wrap_content"
      android:layout_alignParentBottom="true"
      android:layout_alignParentStart="true"
      android:layout_marginBottom="@dimen/default_margin"
      android:layout_marginBottom="@dimen/extra_margin"
      android:layout_marginStart="@dimen/default_margin"
      android:singleLine="true"
      android:textAppearance="@style/secondary_text_appearance" />
+8 −26
Original line number Diff line number Diff line
@@ -31,36 +31,18 @@
    android:contentDescription="@null"
    android:src="@null" />

  <RelativeLayout
  <TextView
    android:id="@+id/navigation_view_item_name"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:layout_marginEnd="@dimen/extra_margin">

    <TextView
      android:id="@+id/navigation_view_item_name"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_alignParentStart="true"
      android:layout_alignParentTop="true"
    android:layout_marginStart="@dimen/default_margin"
    android:layout_marginTop="@dimen/extra_margin"
      android:ellipsize="middle"
    android:gravity="start|center_vertical"
    android:singleLine="true"
    android:ellipsize="middle"
    android:textAppearance="@style/primary_text_appearance" />

    <TextView
      android:id="@+id/navigation_view_item_summary"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentBottom="true"
      android:layout_alignParentStart="true"
      android:layout_marginBottom="@dimen/extra_margin"
      android:layout_marginStart="@dimen/default_margin"
      android:singleLine="true"
      android:textAppearance="@style/secondary_text_appearance" />
  </RelativeLayout>

  <com.cyanogenmod.filemanager.ui.widgets.TransparentNonFocusableButtonItem
    android:id="@+id/navigation_view_item_info"
    android:layout_width="@dimen/item_menu_row_button_width"
+6 −2
Original line number Diff line number Diff line
@@ -47,6 +47,8 @@
    <string name="all">All</string>
    <string name="overwrite">Overwrite</string>
    <string name="select">Select</string>
    <string name="copy">Copy</string>
    <string name="move">Move</string>

    <!-- The root directory name -->
    <string name="root_directory_name"><![CDATA[<Root folder>]]></string>
@@ -338,6 +340,8 @@
    <!-- Picker Activity - Dialog title -->
    <string name="picker_title">Pick a file</string>
    <string name="directory_picker_title">Pick a directory</string>
    <string name="picker_copy_title">Copy to</string>
    <string name="picker_move_title">Move to</string>

    <!-- Editor - Editor activity title -->
    <string name="editor">Editor</string>
@@ -454,9 +458,9 @@
    <!-- Actions Dialog - Menu - Deselect -->
    <string name="actions_menu_deselect">Deselect</string>
    <!-- Actions Dialog - Menu - Copy/Paste selection -->
    <string name="actions_menu_paste_selection">Copy selection here</string>
    <string name="actions_menu_paste_selection">Copy to</string>
    <!-- Actions Dialog - Menu - Move selection -->
    <string name="actions_menu_move_selection">Move selection here</string>
    <string name="actions_menu_move_selection">Move to</string>
    <!-- Actions Dialog - Menu - Delete selection -->
    <string name="actions_menu_delete_selection">Delete selection</string>
    <!-- Actions Dialog - Menu - Compress selection -->
+48 −0
Original line number Diff line number Diff line
@@ -102,6 +102,7 @@ import com.cyanogenmod.filemanager.ui.dialogs.ActionsDialog;
import com.cyanogenmod.filemanager.ui.dialogs.FilesystemInfoDialog;
import com.cyanogenmod.filemanager.ui.dialogs.InitialDirectoryDialog;
import com.cyanogenmod.filemanager.ui.dialogs.FilesystemInfoDialog.OnMountListener;
import com.cyanogenmod.filemanager.ui.policy.CopyMoveActionPolicy;
import com.cyanogenmod.filemanager.ui.widgets.Breadcrumb;
import com.cyanogenmod.filemanager.ui.widgets.ButtonItem;
import com.cyanogenmod.filemanager.ui.widgets.NavigationCustomTitleView;
@@ -129,6 +130,7 @@ import java.util.Locale;
import java.util.Map;

import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.*;
import static com.cyanogenmod.filemanager.activities.PickerActivity.EXTRA_FOLDER_PATH;

/**
 * The main navigation activity. This activity is the center of the application.
@@ -166,6 +168,16 @@ public class NavigationActivity extends Activity
     */
    public static final int INTENT_REQUEST_SETTINGS = 20001;

    /**
     * Intent code for request a copy.
     */
    public static final int INTENT_REQUEST_COPY = 30001;

    /**
     * Intent code for request a move.
     */
    public static final int INTENT_REQUEST_MOVE = 30002;

    /**
     * Constant for extra information about selected search entry.
     */
@@ -1947,6 +1959,42 @@ public class NavigationActivity extends Activity
                    initBookmarks();
                    break;

                // Paste selection
                case INTENT_REQUEST_COPY:
                    if (resultCode == Activity.RESULT_OK) {
                        Bundle extras = data.getExtras();
                        String destination = extras.getString(EXTRA_FOLDER_PATH);
                        List<FileSystemObject> selection =
                                getCurrentNavigationView().onRequestSelectedFiles();
                        if (!TextUtils.isEmpty(destination)) {
                            CopyMoveActionPolicy.copyFileSystemObjects(
                                    this,
                                    selection,
                                    destination,
                                    getCurrentNavigationView(),
                                    this);
                        }
                    }
                    break;

                // Move selection
                case INTENT_REQUEST_MOVE:
                    if (resultCode == Activity.RESULT_OK) {
                        Bundle extras = data.getExtras();
                        String destination = extras.getString(EXTRA_FOLDER_PATH);
                        List<FileSystemObject> selection =
                                getCurrentNavigationView().onRequestSelectedFiles();
                        if (!TextUtils.isEmpty(destination)) {
                            CopyMoveActionPolicy.moveFileSystemObjects(
                                    this,
                                    selection,
                                    destination,
                                    getCurrentNavigationView(),
                                    this);
                        }
                    }
                    break;

                default:
                    break;
            }
+52 −6
Original line number Diff line number Diff line
@@ -111,9 +111,34 @@ public class PickerActivity extends Activity
    private static final String EXTRA_CROP = "crop"; //$NON-NLS-1$

    // Intent for folder picker
    private static final String INTENT_FOLDER_SELECT = "com.android.fileexplorer.action.DIR_SEL";
    public static final String INTENT_FOLDER_SELECT = "com.android.fileexplorer.action.DIR_SEL";
    // String extra for folder selection
    private static final String EXTRA_FOLDER_PATH = "def_file_manager_result_dir";
    public static final String EXTRA_FOLDER_PATH = "def_file_manager_result_dir";

    /**
     * Constant for extra information for picker activity mode
     */
    public static final String EXTRA_ACTION = "extra_picker_activity_mode";

    /**
     * The Picker action mode
     * @hide
     */
    public enum ACTION_MODE {
        /**
         * The picker activity is configured for select action.
         * This is default behavior if not specified.
         */
        SELECT,
        /**
         * The picker activity is configured for copy action.
         */
        COPY,
        /**
         * The picker activity is configured for move action.
         */
        MOVE,
    }

    FileSystemObject mFso;  // The picked item
    FileSystemObject mCurrentDirectory;
@@ -279,11 +304,32 @@ public class PickerActivity extends Activity
        // Apply the current theme
        applyTheme();

        // Get dialog title and positive button, default to picker_title and select respectively
        ACTION_MODE pickerMode = ACTION_MODE.SELECT;
        if (extras != null) {
            if (extras.containsKey(EXTRA_ACTION)) {
                int mode = extras.getInt(EXTRA_ACTION);
                pickerMode = ACTION_MODE.values()[mode];
            }
        }
        int titleId = (pickingDirectory) ? R.string.directory_picker_title : R.string.picker_title;
        int buttonId = R.string.select;
        switch (pickerMode) {
            case COPY:
                titleId = R.string.picker_copy_title;
                buttonId = R.string.copy;
                break;
            case MOVE:
                titleId = R.string.picker_move_title;
                buttonId = R.string.move;
                break;
            default:
                break;
        }

        // Create the dialog
        this.mDialog = DialogHelper.createDialog(
            this, R.mipmap.ic_launcher_filemanager,
            pickingDirectory ? R.string.directory_picker_title : R.string.picker_title,
            this.mRootView);
                this, R.mipmap.ic_launcher_filemanager, titleId, this.mRootView);

        this.mDialog.setButton(
                DialogInterface.BUTTON_NEGATIVE,
@@ -297,7 +343,7 @@ public class PickerActivity extends Activity
        if (pickingDirectory) {
            this.mDialog.setButton(
                    DialogInterface.BUTTON_POSITIVE,
                    getString(R.string.select),
                    getString(buttonId),
                    new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dlg, int which) {
Loading