start working on Copy/move functionality

This commit is contained in:
tibbi 2016-07-14 23:36:36 +02:00
parent 3d4dfa6cf5
commit 1bbef62f23
10 changed files with 160 additions and 10 deletions

View File

@ -25,6 +25,7 @@ import android.widget.AdapterView;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ListView; import android.widget.ListView;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import android.widget.TextView;
import com.simplemobiletools.filemanager.Config; import com.simplemobiletools.filemanager.Config;
import com.simplemobiletools.filemanager.Constants; import com.simplemobiletools.filemanager.Constants;
@ -304,6 +305,10 @@ public class ItemsFragment extends android.support.v4.app.Fragment
displayRenameDialog(); displayRenameDialog();
mode.finish(); mode.finish();
return true; return true;
case R.id.cab_copy:
displayCopyDialog();
mode.finish();
return true;
case R.id.cab_delete: case R.id.cab_delete:
prepareForDeleting(); prepareForDeleting();
mode.finish(); mode.finish();
@ -314,20 +319,18 @@ public class ItemsFragment extends android.support.v4.app.Fragment
} }
private void displayRenameDialog() { private void displayRenameDialog() {
final int itemIndex = getSelectedItemIndex(); final List<Integer> itemIndexes = getSelectedItemIndexes();
if (itemIndex == -1) if (itemIndexes.isEmpty())
return; return;
final int itemIndex = itemIndexes.get(0);
final FileDirItem item = mItems.get(itemIndex); final FileDirItem item = mItems.get(itemIndex);
final View renameView = getActivity().getLayoutInflater().inflate(R.layout.rename_item, null); final View renameView = getActivity().getLayoutInflater().inflate(R.layout.rename_item, null);
final EditText itemName = (EditText) renameView.findViewById(R.id.item_name); final EditText itemName = (EditText) renameView.findViewById(R.id.item_name);
itemName.setText(item.getName()); itemName.setText(item.getName());
final int renameString = (item.getIsDirectory()) ? R.string.rename_directory : R.string.rename_file;
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
int renameString = R.string.rename_file;
if (item.getIsDirectory())
renameString = R.string.rename_directory;
builder.setTitle(getResources().getString(renameString)); builder.setTitle(getResources().getString(renameString));
builder.setView(renameView); builder.setView(renameView);
builder.setPositiveButton("OK", null); builder.setPositiveButton("OK", null);
@ -362,15 +365,46 @@ public class ItemsFragment extends android.support.v4.app.Fragment
}); });
} }
private int getSelectedItemIndex() { private void displayCopyDialog() {
final List<Integer> itemIndexes = getSelectedItemIndexes();
if (itemIndexes.isEmpty())
return;
final View copyView = getActivity().getLayoutInflater().inflate(R.layout.copy_item, null);
final TextView source = (TextView) copyView.findViewById(R.id.source);
source.setText(mPath);
final TextView destination = (TextView) copyView.findViewById(R.id.destination);
destination.setOnClickListener(destinationPicker);
final int copyString = (itemIndexes.size() == 1) ? R.string.copy_item : R.string.copy_items;
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(getResources().getString(copyString));
builder.setView(copyView);
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
final AlertDialog alertDialog = builder.create();
alertDialog.show();
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
private List<Integer> getSelectedItemIndexes() {
final List<Integer> selectedItems = new ArrayList<>();
final SparseBooleanArray items = mListView.getCheckedItemPositions(); final SparseBooleanArray items = mListView.getCheckedItemPositions();
int cnt = items.size(); int cnt = items.size();
for (int i = 0; i < cnt; i++) { for (int i = 0; i < cnt; i++) {
if (items.valueAt(i)) { if (items.valueAt(i)) {
return items.keyAt(i); selectedItems.add(items.keyAt(i));
} }
} }
return -1; return selectedItems;
} }
private void prepareForDeleting() { private void prepareForDeleting() {
@ -400,6 +434,40 @@ public class ItemsFragment extends android.support.v4.app.Fragment
fillItems(); fillItems();
} }
private View.OnClickListener destinationPicker = new View.OnClickListener() {
@Override
public void onClick(View v) {
final View pickerView = getActivity().getLayoutInflater().inflate(R.layout.directory_picker, null);
final ListView pickerList = (ListView) pickerView.findViewById(R.id.directory_picker_list);
final ItemsAdapter adapter = new ItemsAdapter(getContext(), mItems);
pickerList.setAdapter(adapter);
pickerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final FileDirItem item = mItems.get(position);
if (item.getIsDirectory()) {
}
}
});
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(getResources().getString(R.string.select_destination));
builder.setView(pickerView);
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
final AlertDialog alertDialog = builder.create();
alertDialog.show();
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
};
@Override @Override
public boolean onTouch(View v, MotionEvent event) { public boolean onTouch(View v, MotionEvent event) {
if (mSnackbar != null && mSnackbar.isShown()) { if (mSnackbar != null && mSnackbar.isShown()) {
@ -417,7 +485,6 @@ public class ItemsFragment extends android.support.v4.app.Fragment
mSnackbar.dismiss(); mSnackbar.dismiss();
} }
final List<String> updatedFiles = new ArrayList<>();
for (String delPath : mToBeDeleted) { for (String delPath : mToBeDeleted) {
final File file = new File(delPath); final File file = new File(delPath);
if (file.exists()) { if (file.exists()) {

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/dialog_holder"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="@dimen/activity_margin"
android:paddingRight="@dimen/activity_margin"
android:paddingTop="@dimen/activity_margin">
<TextView
android:id="@+id/source_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/source"
android:textSize="@dimen/details_text_size"/>
<TextView
android:id="@+id/source"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/activity_margin"
android:layout_marginLeft="@dimen/activity_margin"
android:paddingRight="@dimen/small_margin"
android:paddingTop="@dimen/small_margin"
android:text="source"/>
<TextView
android:id="@+id/destination_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/destination"
android:textSize="@dimen/details_text_size"/>
<TextView
android:id="@+id/destination"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/activity_margin"
android:layout_marginLeft="@dimen/activity_margin"
android:paddingBottom="@dimen/small_margin"
android:paddingRight="@dimen/small_margin"
android:paddingTop="@dimen/small_margin"
android:text="@string/select_destination"/>
<RadioGroup
android:id="@+id/dialog_radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checkedButton="@+id/dialog_radio_copy">
<RadioButton
android:id="@+id/dialog_radio_copy"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/medium_margin"
android:text="@string/copy"/>
<RadioButton
android:id="@+id/dialog_radio_move"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/move"/>
</RadioGroup>
</LinearLayout>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ListView
android:id="@+id/directory_picker_list"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

View File

@ -6,6 +6,11 @@
android:icon="@mipmap/edit" android:icon="@mipmap/edit"
android:title="@string/rename" android:title="@string/rename"
app:showAsAction="ifRoom"/> app:showAsAction="ifRoom"/>
<item
android:id="@+id/cab_copy"
android:icon="@mipmap/copy"
android:title="@string/copy"
app:showAsAction="ifRoom"/>
<item <item
android:id="@+id/cab_delete" android:id="@+id/cab_delete"
android:icon="@mipmap/delete" android:icon="@mipmap/delete"

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

View File

@ -13,6 +13,13 @@
<string name="delete">Delete</string> <string name="delete">Delete</string>
<string name="undo">Undo</string> <string name="undo">Undo</string>
<string name="rename">Rename</string> <string name="rename">Rename</string>
<string name="copy">Copy</string>
<string name="copy_item">Copy item</string>
<string name="copy_items">Copy items</string>
<string name="move">Move</string>
<string name="source">Source</string>
<string name="destination">Destination</string>
<string name="select_destination">Select destination</string>
<plurals name="items_deleted"> <plurals name="items_deleted">
<item quantity="one">1 item deleted</item> <item quantity="one">1 item deleted</item>