diff --git a/app/src/main/java/com/simplemobiletools/gallery/Helpers.java b/app/src/main/java/com/simplemobiletools/gallery/Utils.java similarity index 94% rename from app/src/main/java/com/simplemobiletools/gallery/Helpers.java rename to app/src/main/java/com/simplemobiletools/gallery/Utils.java index 8fbaab5c6..edc1037ab 100644 --- a/app/src/main/java/com/simplemobiletools/gallery/Helpers.java +++ b/app/src/main/java/com/simplemobiletools/gallery/Utils.java @@ -3,7 +3,7 @@ package com.simplemobiletools.gallery; import android.content.Context; import android.widget.Toast; -public class Helpers { +public class Utils { public static String getFilename(final String path) { return path.substring(path.lastIndexOf("/") + 1); } diff --git a/app/src/main/java/com/simplemobiletools/gallery/activities/MainActivity.java b/app/src/main/java/com/simplemobiletools/gallery/activities/MainActivity.java index e6a47e8d9..ab0762322 100644 --- a/app/src/main/java/com/simplemobiletools/gallery/activities/MainActivity.java +++ b/app/src/main/java/com/simplemobiletools/gallery/activities/MainActivity.java @@ -14,6 +14,7 @@ import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; +import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.util.SparseBooleanArray; import android.view.ActionMode; @@ -23,13 +24,14 @@ import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.widget.AdapterView; +import android.widget.EditText; import android.widget.GridView; import android.widget.Toast; import com.simplemobiletools.gallery.Constants; import com.simplemobiletools.gallery.Directory; -import com.simplemobiletools.gallery.Helpers; import com.simplemobiletools.gallery.R; +import com.simplemobiletools.gallery.Utils; import com.simplemobiletools.gallery.adapters.DirectoryAdapter; import java.io.File; @@ -39,7 +41,8 @@ import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity - implements AdapterView.OnItemClickListener, GridView.MultiChoiceModeListener, GridView.OnTouchListener { + implements AdapterView.OnItemClickListener, GridView.MultiChoiceModeListener, GridView.OnTouchListener, + MediaScannerConnection.OnScanCompletedListener { private final int STORAGE_PERMISSION = 1; private List dirs; private GridView gridView; @@ -47,6 +50,7 @@ public class MainActivity extends AppCompatActivity private Snackbar snackbar; private boolean isSnackbarShown; private List toBeDeleted; + private ActionMode actionMode; @Override protected void onCreate(Bundle savedInstanceState) { @@ -118,7 +122,7 @@ public class MainActivity extends AppCompatActivity final int newImageCnt = directory.getPhotoCnt() + 1; directory.setPhotoCnt(newImageCnt); } else if (!toBeDeleted.contains(fileDir)) { - final String dirName = Helpers.getFilename(fileDir); + final String dirName = Utils.getFilename(fileDir); directories.put(fileDir, new Directory(fileDir, path, dirName, 1)); } } while (cursor.moveToNext()); @@ -129,7 +133,7 @@ public class MainActivity extends AppCompatActivity } private void prepareForDeleting() { - Helpers.showToast(this, R.string.deleting); + Utils.showToast(this, R.string.deleting); final SparseBooleanArray items = gridView.getCheckedItemPositions(); int cnt = items.size(); int deletedCnt = 0; @@ -204,6 +208,56 @@ public class MainActivity extends AppCompatActivity adapter.updateItems(dirs); } + private void renameDirectory() { + final SparseBooleanArray items = gridView.getCheckedItemPositions(); + final int cnt = items.size(); + for (int i = 0; i < cnt; i++) { + if (items.valueAt(i)) { + final int id = items.keyAt(i); + final String path = dirs.get(id).getPath(); + final File dir = new File(path); + + final View renameFileView = getLayoutInflater().inflate(R.layout.rename_directory, null); + final EditText dirNameET = (EditText) renameFileView.findViewById(R.id.directory_name); + dirNameET.setText(dir.getName()); + + final AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(getResources().getString(R.string.rename_folder)); + builder.setView(renameFileView); + + 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) { + final String newDirName = dirNameET.getText().toString().trim(); + + if (!newDirName.isEmpty()) { + final File newDir = new File(dir.getParent(), newDirName); + + if (dir.renameTo(newDir)) { + Utils.showToast(getApplicationContext(), R.string.rename_folder_ok); + alertDialog.dismiss(); + actionMode.finish(); + final String[] newDirPath = new String[]{newDir.getAbsolutePath()}; + MediaScannerConnection.scanFile(getApplicationContext(), newDirPath, null, MainActivity.this); + } else { + Utils.showToast(getApplicationContext(), R.string.rename_folder_error); + } + } else { + Utils.showToast(getApplicationContext(), R.string.rename_folder_error); + } + } + }); + + break; + } + } + } + @Override public void onItemClick(AdapterView parent, View view, int position, long id) { final Intent intent = new Intent(this, PhotosActivity.class); @@ -228,17 +282,23 @@ public class MainActivity extends AppCompatActivity public boolean onCreateActionMode(ActionMode mode, Menu menu) { final MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.directories_menu, menu); + actionMode = mode; return true; } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { - return false; + final MenuItem menuItem = menu.findItem(R.id.cab_edit); + menuItem.setVisible(selectedItemsCnt == 1); + return true; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { + case R.id.cab_edit: + renameDirectory(); + return true; case R.id.cab_remove: prepareForDeleting(); mode.finish(); @@ -261,4 +321,16 @@ public class MainActivity extends AppCompatActivity return false; } + + @Override + public void onScanCompleted(String path, Uri uri) { + runOnUiThread(new Runnable() { + @Override + public void run() { + dirs = new ArrayList<>(getDirectories().values()); + updateGridView(); + gridView.requestLayout(); + } + }); + } } diff --git a/app/src/main/java/com/simplemobiletools/gallery/activities/PhotosActivity.java b/app/src/main/java/com/simplemobiletools/gallery/activities/PhotosActivity.java index 9e814d691..ef69a823a 100644 --- a/app/src/main/java/com/simplemobiletools/gallery/activities/PhotosActivity.java +++ b/app/src/main/java/com/simplemobiletools/gallery/activities/PhotosActivity.java @@ -27,8 +27,8 @@ import android.widget.GridView; import android.widget.Toast; import com.simplemobiletools.gallery.Constants; -import com.simplemobiletools.gallery.Helpers; import com.simplemobiletools.gallery.R; +import com.simplemobiletools.gallery.Utils; import com.simplemobiletools.gallery.adapters.PhotosAdapter; import java.io.File; @@ -102,7 +102,7 @@ public class PhotosActivity extends AppCompatActivity gridView.setOnTouchListener(this); isSnackbarShown = false; - final String dirName = Helpers.getFilename(path); + final String dirName = Utils.getFilename(path); setTitle(dirName); } @@ -146,7 +146,7 @@ public class PhotosActivity extends AppCompatActivity } private void prepareForDeleting() { - Helpers.showToast(this, R.string.deleting); + Utils.showToast(this, R.string.deleting); final SparseBooleanArray items = gridView.getCheckedItemPositions(); int cnt = items.size(); int deletedCnt = 0; diff --git a/app/src/main/java/com/simplemobiletools/gallery/activities/ViewPagerActivity.java b/app/src/main/java/com/simplemobiletools/gallery/activities/ViewPagerActivity.java index 8b9dd307d..d5cbdb5cc 100644 --- a/app/src/main/java/com/simplemobiletools/gallery/activities/ViewPagerActivity.java +++ b/app/src/main/java/com/simplemobiletools/gallery/activities/ViewPagerActivity.java @@ -23,7 +23,7 @@ import android.widget.EditText; import android.widget.Toast; import com.simplemobiletools.gallery.Constants; -import com.simplemobiletools.gallery.Helpers; +import com.simplemobiletools.gallery.Utils; import com.simplemobiletools.gallery.MyViewPager; import com.simplemobiletools.gallery.R; import com.simplemobiletools.gallery.adapters.MyPagerAdapter; @@ -200,7 +200,7 @@ public class ViewPagerActivity extends AppCompatActivity MediaScannerConnection.scanFile(getApplicationContext(), changedFiles, null, null); updateActionbarTitle(); } else { - Toast.makeText(getApplicationContext(), getResources().getString(R.string.rename_error), Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), getResources().getString(R.string.rename_file_error), Toast.LENGTH_SHORT).show(); } } }); @@ -297,7 +297,7 @@ public class ViewPagerActivity extends AppCompatActivity } private void updateActionbarTitle() { - setTitle(Helpers.getFilename(photos.get(pager.getCurrentItem()))); + setTitle(Utils.getFilename(photos.get(pager.getCurrentItem()))); } private File getCurrentFile() { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 8ce1ae914..9f4d42496 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -3,13 +3,13 @@ android:id="@+id/coordinator_layout" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:background="@android:color/black"> + android:layout_height="match_parent" + android:background="@android:color/black"> + + + + + + + diff --git a/app/src/main/res/menu/directories_menu.xml b/app/src/main/res/menu/directories_menu.xml index 3122e5205..c976961b9 100644 --- a/app/src/main/res/menu/directories_menu.xml +++ b/app/src/main/res/menu/directories_menu.xml @@ -1,9 +1,14 @@ + + app:showAsAction="ifRoom"/> diff --git a/app/src/main/res/menu/photos_menu.xml b/app/src/main/res/menu/photos_menu.xml index 3122e5205..ccf1ce9bf 100644 --- a/app/src/main/res/menu/photos_menu.xml +++ b/app/src/main/res/menu/photos_menu.xml @@ -5,5 +5,5 @@ android:id="@+id/cab_remove" android:icon="@android:drawable/ic_menu_delete" android:title="@string/remove" - app:showAsAction="always"/> + app:showAsAction="ifRoom"/> diff --git a/app/src/main/res/menu/viewpager_menu.xml b/app/src/main/res/menu/viewpager_menu.xml index 2ee3bac0c..de5242bad 100644 --- a/app/src/main/res/menu/viewpager_menu.xml +++ b/app/src/main/res/menu/viewpager_menu.xml @@ -15,5 +15,5 @@ android:id="@+id/menu_share" android:icon="@android:drawable/ic_menu_share" android:title="Share" - app:showAsAction="always"/> + app:showAsAction="ifRoom"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6caf8ae99..e68e12c65 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,8 +7,12 @@ Edit Undo Rename file - Could not rename the file + Rename folder + Could not rename the file + Could not rename the folder + Folder renamed successfully File name + Folder name Extension deleted