some refactoring, no functionality change

This commit is contained in:
tibbi 2016-06-18 23:10:50 +02:00
parent fd9980ba41
commit 9ebdffdda0
15 changed files with 425 additions and 404 deletions

View file

@ -5,6 +5,7 @@ import android.util.AttributeSet;
import android.widget.ImageView; import android.widget.ImageView;
public class MyImageView extends ImageView { public class MyImageView extends ImageView {
public MyImageView(Context context) { public MyImageView(Context context) {
super(context); super(context);
} }

View file

@ -21,14 +21,15 @@ public class AboutActivity extends AppCompatActivity {
@BindView(R.id.about_copyright) TextView copyright; @BindView(R.id.about_copyright) TextView copyright;
@BindView(R.id.about_version) TextView version; @BindView(R.id.about_version) TextView version;
@BindView(R.id.about_email) TextView emailTV; @BindView(R.id.about_email) TextView emailTV;
private Resources res;
private static Resources mRes;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about); setContentView(R.layout.activity_about);
ButterKnife.bind(this); ButterKnife.bind(this);
res = getResources(); mRes = getResources();
setupEmail(); setupEmail();
setupVersion(); setupVersion();
@ -36,8 +37,8 @@ public class AboutActivity extends AppCompatActivity {
} }
private void setupEmail() { private void setupEmail() {
final String email = res.getString(R.string.email); final String email = mRes.getString(R.string.email);
final String appName = res.getString(R.string.app_name); final String appName = mRes.getString(R.string.app_name);
final String href = "<a href=\"mailto:" + email + "?subject=" + appName + "\">" + email + "</a>"; final String href = "<a href=\"mailto:" + email + "?subject=" + appName + "\">" + email + "</a>";
emailTV.setText(Html.fromHtml(href)); emailTV.setText(Html.fromHtml(href));
emailTV.setMovementMethod(LinkMovementMethod.getInstance()); emailTV.setMovementMethod(LinkMovementMethod.getInstance());
@ -45,13 +46,13 @@ public class AboutActivity extends AppCompatActivity {
private void setupVersion() { private void setupVersion() {
final String versionName = BuildConfig.VERSION_NAME; final String versionName = BuildConfig.VERSION_NAME;
final String versionText = String.format(res.getString(R.string.version), versionName); final String versionText = String.format(mRes.getString(R.string.version), versionName);
version.setText(versionText); version.setText(versionText);
} }
private void setupCopyright() { private void setupCopyright() {
final int year = Calendar.getInstance().get(Calendar.YEAR); final int year = Calendar.getInstance().get(Calendar.YEAR);
final String copyrightText = String.format(res.getString(R.string.copyright), year); final String copyrightText = String.format(mRes.getString(R.string.copyright), year);
copyright.setText(copyrightText); copyright.setText(copyrightText);
} }

View file

@ -11,6 +11,7 @@ import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
public class LicenseActivity extends AppCompatActivity { public class LicenseActivity extends AppCompatActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);

View file

@ -45,33 +45,34 @@ import butterknife.ButterKnife;
public class MainActivity extends AppCompatActivity public class MainActivity extends AppCompatActivity
implements AdapterView.OnItemClickListener, GridView.MultiChoiceModeListener, GridView.OnTouchListener { implements AdapterView.OnItemClickListener, GridView.MultiChoiceModeListener, GridView.OnTouchListener {
@BindView(R.id.directories_grid) GridView gridView; @BindView(R.id.directories_grid) GridView mGridView;
private static final int STORAGE_PERMISSION = 1; private static final int STORAGE_PERMISSION = 1;
private static final int PICK_MEDIA = 2; private static final int PICK_MEDIA = 2;
private List<Directory> dirs;
private int selectedItemsCnt; private static List<Directory> mDirs;
private Snackbar snackbar; private static Snackbar mSnackbar;
private boolean isSnackbarShown; private static List<String> mToBeDeleted;
private List<String> toBeDeleted; private static ActionMode mActionMode;
private ActionMode actionMode; private static Parcelable mState;
private Parcelable state;
private boolean isPickImageIntent; private static boolean mIsSnackbarShown;
private boolean isPickVideoIntent; private static boolean mIsPickImageIntent;
private static boolean mIsPickVideoIntent;
private static int mSelectedItemsCnt;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
ButterKnife.bind(this); ButterKnife.bind(this);
isPickImageIntent = isPickImageIntent(getIntent()); mIsPickImageIntent = isPickImageIntent(getIntent());
isPickVideoIntent = isPickVideoIntent(getIntent()); mIsPickVideoIntent = isPickVideoIntent(getIntent());
} }
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater(); getMenuInflater().inflate(R.menu.menu, menu);
inflater.inflate(R.menu.menu, menu);
return true; return true;
} }
@ -91,16 +92,16 @@ public class MainActivity extends AppCompatActivity
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
tryloadGallery(); tryloadGallery();
if (state != null && gridView != null) if (mState != null && mGridView != null)
gridView.onRestoreInstanceState(state); mGridView.onRestoreInstanceState(mState);
} }
@Override @Override
protected void onPause() { protected void onPause() {
super.onPause(); super.onPause();
deleteDirs(); deleteDirs();
if (gridView != null) if (mGridView != null)
state = gridView.onSaveInstanceState(); mState = mGridView.onSaveInstanceState();
} }
private void tryloadGallery() { private void tryloadGallery() {
@ -126,26 +127,26 @@ public class MainActivity extends AppCompatActivity
} }
private void initializeGallery() { private void initializeGallery() {
toBeDeleted = new ArrayList<>(); mToBeDeleted = new ArrayList<>();
dirs = getDirectories(); mDirs = getDirectories();
final DirectoryAdapter adapter = new DirectoryAdapter(this, dirs);
gridView.setAdapter(adapter); final DirectoryAdapter adapter = new DirectoryAdapter(this, mDirs);
gridView.setOnItemClickListener(this); mGridView.setAdapter(adapter);
gridView.setMultiChoiceModeListener(this); mGridView.setOnItemClickListener(this);
gridView.setOnTouchListener(this); mGridView.setMultiChoiceModeListener(this);
mGridView.setOnTouchListener(this);
} }
private List<Directory> getDirectories() { private List<Directory> getDirectories() {
final Map<String, Directory> directories = new LinkedHashMap<>(); final Map<String, Directory> directories = new LinkedHashMap<>();
final List<String> invalidFiles = new ArrayList<>(); final List<String> invalidFiles = new ArrayList<>();
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
if (isPickVideoIntent && i == 0) if (mIsPickVideoIntent && i == 0)
continue; continue;
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
if (i == 1) { if (i == 1) {
if (isPickImageIntent) if (mIsPickImageIntent)
continue; continue;
uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
@ -172,7 +173,7 @@ public class MainActivity extends AppCompatActivity
final Directory directory = directories.get(fileDir); final Directory directory = directories.get(fileDir);
final int newImageCnt = directory.getMediaCnt() + 1; final int newImageCnt = directory.getMediaCnt() + 1;
directory.setMediaCnt(newImageCnt); directory.setMediaCnt(newImageCnt);
} else if (!toBeDeleted.contains(fileDir)) { } else if (!mToBeDeleted.contains(fileDir)) {
final String dirName = Utils.getFilename(fileDir); final String dirName = Utils.getFilename(fileDir);
directories.put(fileDir, new Directory(fileDir, path, dirName, 1, timestamp)); directories.put(fileDir, new Directory(fileDir, path, dirName, 1, timestamp));
} }
@ -192,14 +193,14 @@ public class MainActivity extends AppCompatActivity
private void prepareForDeleting() { private void prepareForDeleting() {
Utils.showToast(this, R.string.deleting); Utils.showToast(this, R.string.deleting);
final SparseBooleanArray items = gridView.getCheckedItemPositions(); final SparseBooleanArray items = mGridView.getCheckedItemPositions();
int cnt = items.size(); final int cnt = items.size();
int deletedCnt = 0; int deletedCnt = 0;
for (int i = 0; i < cnt; i++) { for (int i = 0; i < cnt; i++) {
if (items.valueAt(i)) { if (items.valueAt(i)) {
final int id = items.keyAt(i); final int id = items.keyAt(i);
final String path = dirs.get(id).getPath(); final String path = mDirs.get(id).getPath();
toBeDeleted.add(path); mToBeDeleted.add(path);
deletedCnt++; deletedCnt++;
} }
} }
@ -208,31 +209,31 @@ public class MainActivity extends AppCompatActivity
} }
private void notifyDeletion(int cnt) { private void notifyDeletion(int cnt) {
dirs = getDirectories(); mDirs = getDirectories();
final CoordinatorLayout coordinator = (CoordinatorLayout) findViewById(R.id.coordinator_layout); final CoordinatorLayout coordinator = (CoordinatorLayout) findViewById(R.id.coordinator_layout);
final Resources res = getResources(); final Resources res = getResources();
final String msg = res.getQuantityString(R.plurals.folders_deleted, cnt, cnt); final String msg = res.getQuantityString(R.plurals.folders_deleted, cnt, cnt);
snackbar = Snackbar.make(coordinator, msg, Snackbar.LENGTH_INDEFINITE); mSnackbar = Snackbar.make(coordinator, msg, Snackbar.LENGTH_INDEFINITE);
snackbar.setAction(res.getString(R.string.undo), undoDeletion); mSnackbar.setAction(res.getString(R.string.undo), undoDeletion);
snackbar.setActionTextColor(Color.WHITE); mSnackbar.setActionTextColor(Color.WHITE);
snackbar.show(); mSnackbar.show();
isSnackbarShown = true; mIsSnackbarShown = true;
updateGridView(); updateGridView();
} }
private void deleteDirs() { private void deleteDirs() {
if (toBeDeleted == null || toBeDeleted.isEmpty()) if (mToBeDeleted == null || mToBeDeleted.isEmpty())
return; return;
if (snackbar != null) { if (mSnackbar != null) {
snackbar.dismiss(); mSnackbar.dismiss();
} }
isSnackbarShown = false; mIsSnackbarShown = false;
final List<String> updatedFiles = new ArrayList<>(); final List<String> updatedFiles = new ArrayList<>();
for (String delPath : toBeDeleted) { for (String delPath : mToBeDeleted) {
final File dir = new File(delPath); final File dir = new File(delPath);
if (dir.exists()) { if (dir.exists()) {
final File[] files = dir.listFiles(); final File[] files = dir.listFiles();
@ -247,32 +248,32 @@ public class MainActivity extends AppCompatActivity
final String[] deletedPaths = updatedFiles.toArray(new String[updatedFiles.size()]); final String[] deletedPaths = updatedFiles.toArray(new String[updatedFiles.size()]);
MediaScannerConnection.scanFile(this, deletedPaths, null, null); MediaScannerConnection.scanFile(this, deletedPaths, null, null);
toBeDeleted.clear(); mToBeDeleted.clear();
} }
private View.OnClickListener undoDeletion = new View.OnClickListener() { private View.OnClickListener undoDeletion = new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
snackbar.dismiss(); mSnackbar.dismiss();
isSnackbarShown = false; mIsSnackbarShown = false;
toBeDeleted.clear(); mToBeDeleted.clear();
dirs = getDirectories(); mDirs = getDirectories();
updateGridView(); updateGridView();
} }
}; };
private void updateGridView() { private void updateGridView() {
final DirectoryAdapter adapter = (DirectoryAdapter) gridView.getAdapter(); final DirectoryAdapter adapter = (DirectoryAdapter) mGridView.getAdapter();
adapter.updateItems(dirs); adapter.updateItems(mDirs);
} }
private void editDirectory() { private void editDirectory() {
final SparseBooleanArray items = gridView.getCheckedItemPositions(); final SparseBooleanArray items = mGridView.getCheckedItemPositions();
final int cnt = items.size(); final 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)) {
final int id = items.keyAt(i); final int id = items.keyAt(i);
final String path = dirs.get(id).getPath(); final String path = mDirs.get(id).getPath();
renameDir(path); renameDir(path);
break; break;
} }
@ -312,7 +313,7 @@ public class MainActivity extends AppCompatActivity
if (dir.renameTo(newDir)) { if (dir.renameTo(newDir)) {
Utils.showToast(getApplicationContext(), R.string.renaming_folder); Utils.showToast(getApplicationContext(), R.string.renaming_folder);
alertDialog.dismiss(); alertDialog.dismiss();
actionMode.finish(); mActionMode.finish();
final File[] files = newDir.listFiles(); final File[] files = newDir.listFiles();
for (File f : files) { for (File f : files) {
@ -361,22 +362,22 @@ public class MainActivity extends AppCompatActivity
@Override @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final Intent intent = new Intent(this, MediaActivity.class); final Intent intent = new Intent(this, MediaActivity.class);
intent.putExtra(Constants.DIRECTORY, dirs.get(position).getPath()); intent.putExtra(Constants.DIRECTORY, mDirs.get(position).getPath());
intent.putExtra(Constants.PICK_IMAGE_INTENT, isPickImageIntent); intent.putExtra(Constants.PICK_IMAGE_INTENT, mIsPickImageIntent);
intent.putExtra(Constants.PICK_VIDEO_INTENT, isPickVideoIntent); intent.putExtra(Constants.PICK_VIDEO_INTENT, mIsPickVideoIntent);
startActivityForResult(intent, PICK_MEDIA); startActivityForResult(intent, PICK_MEDIA);
} }
@Override @Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
if (checked) { if (checked) {
selectedItemsCnt++; mSelectedItemsCnt++;
} else { } else {
selectedItemsCnt--; mSelectedItemsCnt--;
} }
if (selectedItemsCnt > 0) { if (mSelectedItemsCnt > 0) {
mode.setTitle(String.valueOf(selectedItemsCnt)); mode.setTitle(String.valueOf(mSelectedItemsCnt));
} }
mode.invalidate(); mode.invalidate();
@ -386,14 +387,14 @@ public class MainActivity extends AppCompatActivity
public boolean onCreateActionMode(ActionMode mode, Menu menu) { public boolean onCreateActionMode(ActionMode mode, Menu menu) {
final MenuInflater inflater = mode.getMenuInflater(); final MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.directories_menu, menu); inflater.inflate(R.menu.directories_menu, menu);
actionMode = mode; mActionMode = mode;
return true; return true;
} }
@Override @Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) { public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
final MenuItem menuItem = menu.findItem(R.id.cab_edit); final MenuItem menuItem = menu.findItem(R.id.cab_edit);
menuItem.setVisible(selectedItemsCnt == 1); menuItem.setVisible(mSelectedItemsCnt == 1);
return true; return true;
} }
@ -414,12 +415,12 @@ public class MainActivity extends AppCompatActivity
@Override @Override
public void onDestroyActionMode(ActionMode mode) { public void onDestroyActionMode(ActionMode mode) {
selectedItemsCnt = 0; mSelectedItemsCnt = 0;
} }
@Override @Override
public boolean onTouch(View v, MotionEvent event) { public boolean onTouch(View v, MotionEvent event) {
if (isSnackbarShown) { if (mIsSnackbarShown) {
deleteDirs(); deleteDirs();
} }
@ -429,13 +430,13 @@ public class MainActivity extends AppCompatActivity
private void scanCompleted(final String path) { private void scanCompleted(final String path) {
final File dir = new File(path); final File dir = new File(path);
if (dir.isDirectory()) { if (dir.isDirectory()) {
dirs = getDirectories(); mDirs = getDirectories();
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
updateGridView(); updateGridView();
gridView.requestLayout(); mGridView.requestLayout();
Utils.showToast(getApplicationContext(), R.string.rename_folder_ok); Utils.showToast(getApplicationContext(), R.string.rename_folder_ok);
} }
}); });

View file

@ -39,41 +39,42 @@ import butterknife.ButterKnife;
public class MediaActivity extends AppCompatActivity public class MediaActivity extends AppCompatActivity
implements AdapterView.OnItemClickListener, GridView.MultiChoiceModeListener, GridView.OnTouchListener { implements AdapterView.OnItemClickListener, GridView.MultiChoiceModeListener, GridView.OnTouchListener {
@BindView(R.id.media_grid) GridView gridView; @BindView(R.id.media_grid) GridView mGridView;
private List<Medium> media; private static List<Medium> mMedia;
private int selectedItemsCnt; private static String mPath;
private String path; private static Snackbar mSnackbar;
private Snackbar snackbar; private static List<String> mToBeDeleted;
private boolean isSnackbarShown; private static Parcelable mState;
private List<String> toBeDeleted;
private Parcelable state; private static boolean mIsSnackbarShown;
private boolean isPickImageIntent; private static boolean mIsPickImageIntent;
private boolean isPickVideoIntent; private static boolean mIsPickVideoIntent;
private static int mSelectedItemsCnt;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_media); setContentView(R.layout.activity_media);
ButterKnife.bind(this); ButterKnife.bind(this);
isPickImageIntent = getIntent().getBooleanExtra(Constants.PICK_IMAGE_INTENT, false); mIsPickImageIntent = getIntent().getBooleanExtra(Constants.PICK_IMAGE_INTENT, false);
isPickVideoIntent = getIntent().getBooleanExtra(Constants.PICK_VIDEO_INTENT, false); mIsPickVideoIntent = getIntent().getBooleanExtra(Constants.PICK_VIDEO_INTENT, false);
} }
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
tryloadGallery(); tryloadGallery();
if (state != null && gridView != null) if (mState != null && mGridView != null)
gridView.onRestoreInstanceState(state); mGridView.onRestoreInstanceState(mState);
} }
@Override @Override
protected void onPause() { protected void onPause() {
super.onPause(); super.onPause();
deleteFiles(); deleteFiles();
if (gridView != null) if (mGridView != null)
state = gridView.onSaveInstanceState(); mState = mGridView.onSaveInstanceState();
} }
private void tryloadGallery() { private void tryloadGallery() {
@ -85,60 +86,60 @@ public class MediaActivity extends AppCompatActivity
} }
private void initializeGallery() { private void initializeGallery() {
toBeDeleted = new ArrayList<>(); mToBeDeleted = new ArrayList<>();
path = getIntent().getStringExtra(Constants.DIRECTORY); mPath = getIntent().getStringExtra(Constants.DIRECTORY);
media = getMedia(); mMedia = getMedia();
if (isDirEmpty()) if (isDirEmpty())
return; return;
final MediaAdapter adapter = new MediaAdapter(this, media); final MediaAdapter adapter = new MediaAdapter(this, mMedia);
gridView.setAdapter(adapter); mGridView.setAdapter(adapter);
gridView.setOnItemClickListener(this); mGridView.setOnItemClickListener(this);
gridView.setMultiChoiceModeListener(this); mGridView.setMultiChoiceModeListener(this);
gridView.setOnTouchListener(this); mGridView.setOnTouchListener(this);
isSnackbarShown = false; mIsSnackbarShown = false;
final String dirName = Utils.getFilename(path); final String dirName = Utils.getFilename(mPath);
setTitle(dirName); setTitle(dirName);
} }
private void deleteDirectoryIfEmpty() { private void deleteDirectoryIfEmpty() {
final File file = new File(path); final File file = new File(mPath);
if (file.isDirectory() && file.listFiles().length == 0) { if (file.isDirectory() && file.listFiles().length == 0) {
file.delete(); file.delete();
} }
} }
private List<Medium> getMedia() { private List<Medium> getMedia() {
final List<Medium> myMedia = new ArrayList<>(); final List<Medium> media = new ArrayList<>();
final List<String> invalidFiles = new ArrayList<>(); final List<String> invalidFiles = new ArrayList<>();
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
if (isPickVideoIntent && i == 0) if (mIsPickVideoIntent && i == 0)
continue; continue;
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
if (i == 1) { if (i == 1) {
if (isPickImageIntent) if (mIsPickImageIntent)
continue; continue;
uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
} }
final String where = MediaStore.Images.Media.DATA + " like ? "; final String where = MediaStore.Images.Media.DATA + " like ? ";
final String[] args = new String[]{path + "%"}; final String[] args = new String[]{mPath + "%"};
final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_TAKEN}; final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_TAKEN};
final Cursor cursor = getContentResolver().query(uri, columns, where, args, null); final Cursor cursor = getContentResolver().query(uri, columns, where, args, null);
final String pattern = Pattern.quote(path) + "/[^/]*"; final String pattern = Pattern.quote(mPath) + "/[^/]*";
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {
final int pathIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA); final int pathIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
do { do {
final String curPath = cursor.getString(pathIndex); final String curPath = cursor.getString(pathIndex);
if (curPath.matches(pattern) && !toBeDeleted.contains(curPath)) { if (curPath.matches(pattern) && !mToBeDeleted.contains(curPath)) {
final File file = new File(curPath); final File file = new File(curPath);
if (file.exists()) { if (file.exists()) {
final int dateIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN); final int dateIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN);
final long timestamp = cursor.getLong(dateIndex); final long timestamp = cursor.getLong(dateIndex);
myMedia.add(new Medium(curPath, (i == 1), timestamp)); media.add(new Medium(curPath, (i == 1), timestamp));
} else { } else {
invalidFiles.add(file.getAbsolutePath()); invalidFiles.add(file.getAbsolutePath());
} }
@ -148,16 +149,16 @@ public class MediaActivity extends AppCompatActivity
} }
} }
Collections.sort(myMedia); Collections.sort(media);
final String[] invalids = invalidFiles.toArray(new String[invalidFiles.size()]); final String[] invalids = invalidFiles.toArray(new String[invalidFiles.size()]);
MediaScannerConnection.scanFile(getApplicationContext(), invalids, null, null); MediaScannerConnection.scanFile(getApplicationContext(), invalids, null, null);
return myMedia; return media;
} }
private boolean isDirEmpty() { private boolean isDirEmpty() {
if (media.size() <= 0) { if (mMedia.size() <= 0) {
deleteDirectoryIfEmpty(); deleteDirectoryIfEmpty();
finish(); finish();
return true; return true;
@ -167,14 +168,14 @@ public class MediaActivity extends AppCompatActivity
private void prepareForDeleting() { private void prepareForDeleting() {
Utils.showToast(this, R.string.deleting); Utils.showToast(this, R.string.deleting);
final SparseBooleanArray items = gridView.getCheckedItemPositions(); final SparseBooleanArray items = mGridView.getCheckedItemPositions();
int cnt = items.size(); final int cnt = items.size();
int deletedCnt = 0; int deletedCnt = 0;
for (int i = 0; i < cnt; i++) { for (int i = 0; i < cnt; i++) {
if (items.valueAt(i)) { if (items.valueAt(i)) {
final int id = items.keyAt(i); final int id = items.keyAt(i);
final String path = media.get(id).getPath(); final String path = mMedia.get(id).getPath();
toBeDeleted.add(path); mToBeDeleted.add(path);
deletedCnt++; deletedCnt++;
} }
} }
@ -183,79 +184,79 @@ public class MediaActivity extends AppCompatActivity
} }
private void notifyDeletion(int cnt) { private void notifyDeletion(int cnt) {
media = getMedia(); mMedia = getMedia();
if (media.isEmpty()) { if (mMedia.isEmpty()) {
deleteFiles(); deleteFiles();
} else { } else {
final CoordinatorLayout coordinator = (CoordinatorLayout) findViewById(R.id.coordinator_layout); final CoordinatorLayout coordinator = (CoordinatorLayout) findViewById(R.id.coordinator_layout);
final Resources res = getResources(); final Resources res = getResources();
final String msg = res.getQuantityString(R.plurals.files_deleted, cnt, cnt); final String msg = res.getQuantityString(R.plurals.files_deleted, cnt, cnt);
snackbar = Snackbar.make(coordinator, msg, Snackbar.LENGTH_INDEFINITE); mSnackbar = Snackbar.make(coordinator, msg, Snackbar.LENGTH_INDEFINITE);
snackbar.setAction(res.getString(R.string.undo), undoDeletion); mSnackbar.setAction(res.getString(R.string.undo), undoDeletion);
snackbar.setActionTextColor(Color.WHITE); mSnackbar.setActionTextColor(Color.WHITE);
snackbar.show(); mSnackbar.show();
isSnackbarShown = true; mIsSnackbarShown = true;
updateGridView(); updateGridView();
} }
} }
private void deleteFiles() { private void deleteFiles() {
if (toBeDeleted == null || toBeDeleted.isEmpty()) if (mToBeDeleted == null || mToBeDeleted.isEmpty())
return; return;
if (snackbar != null) { if (mSnackbar != null) {
snackbar.dismiss(); mSnackbar.dismiss();
} }
isSnackbarShown = false; mIsSnackbarShown = false;
for (String delPath : toBeDeleted) { for (String delPath : mToBeDeleted) {
final File file = new File(delPath); final File file = new File(delPath);
if (file.exists()) if (file.exists())
file.delete(); file.delete();
} }
final String[] deletedPaths = toBeDeleted.toArray(new String[toBeDeleted.size()]); final String[] deletedPaths = mToBeDeleted.toArray(new String[mToBeDeleted.size()]);
MediaScannerConnection.scanFile(this, deletedPaths, null, new MediaScannerConnection.OnScanCompletedListener() { MediaScannerConnection.scanFile(this, deletedPaths, null, new MediaScannerConnection.OnScanCompletedListener() {
@Override @Override
public void onScanCompleted(String path, Uri uri) { public void onScanCompleted(String path, Uri uri) {
if (media != null && media.isEmpty()) { if (mMedia != null && mMedia.isEmpty()) {
finish(); finish();
} }
} }
}); });
toBeDeleted.clear(); mToBeDeleted.clear();
} }
private View.OnClickListener undoDeletion = new View.OnClickListener() { private View.OnClickListener undoDeletion = new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
snackbar.dismiss(); mSnackbar.dismiss();
isSnackbarShown = false; mIsSnackbarShown = false;
toBeDeleted.clear(); mToBeDeleted.clear();
media = getMedia(); mMedia = getMedia();
updateGridView(); updateGridView();
} }
}; };
private void updateGridView() { private void updateGridView() {
if (!isDirEmpty()) { if (!isDirEmpty()) {
final MediaAdapter adapter = (MediaAdapter) gridView.getAdapter(); final MediaAdapter adapter = (MediaAdapter) mGridView.getAdapter();
adapter.updateItems(media); adapter.updateItems(mMedia);
} }
} }
@Override @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (isPickImageIntent || isPickVideoIntent) { if (mIsPickImageIntent || mIsPickVideoIntent) {
final Intent result = new Intent(); final Intent result = new Intent();
result.setData(Uri.parse(media.get(position).getPath())); result.setData(Uri.parse(mMedia.get(position).getPath()));
setResult(RESULT_OK, result); setResult(RESULT_OK, result);
finish(); finish();
} else { } else {
final Intent intent = new Intent(this, ViewPagerActivity.class); final Intent intent = new Intent(this, ViewPagerActivity.class);
intent.putExtra(Constants.MEDIUM, media.get(position).getPath()); intent.putExtra(Constants.MEDIUM, mMedia.get(position).getPath());
startActivity(intent); startActivity(intent);
} }
} }
@ -263,13 +264,13 @@ public class MediaActivity extends AppCompatActivity
@Override @Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
if (checked) { if (checked) {
selectedItemsCnt++; mSelectedItemsCnt++;
} else { } else {
selectedItemsCnt--; mSelectedItemsCnt--;
} }
if (selectedItemsCnt > 0) if (mSelectedItemsCnt > 0)
mode.setTitle(String.valueOf(selectedItemsCnt)); mode.setTitle(String.valueOf(mSelectedItemsCnt));
mode.invalidate(); mode.invalidate();
} }
@ -300,12 +301,12 @@ public class MediaActivity extends AppCompatActivity
@Override @Override
public void onDestroyActionMode(ActionMode mode) { public void onDestroyActionMode(ActionMode mode) {
selectedItemsCnt = 0; mSelectedItemsCnt = 0;
} }
@Override @Override
public boolean onTouch(View v, MotionEvent event) { public boolean onTouch(View v, MotionEvent event) {
if (isSnackbarShown) { if (mIsSnackbarShown) {
deleteFiles(); deleteFiles();
} }

View file

@ -16,32 +16,33 @@ import com.simplemobiletools.gallery.fragments.ViewPagerFragment;
import com.simplemobiletools.gallery.models.Medium; import com.simplemobiletools.gallery.models.Medium;
public class PhotoActivity extends AppCompatActivity implements ViewPagerFragment.FragmentClickListener { public class PhotoActivity extends AppCompatActivity implements ViewPagerFragment.FragmentClickListener {
private ActionBar actionbar; private static ActionBar mActionbar;
private boolean isFullScreen; private static Uri mUri;
private Uri uri;
private static boolean mIsFullScreen;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_holder); setContentView(R.layout.fragment_holder);
uri = getIntent().getData(); mUri = getIntent().getData();
if (uri == null) if (mUri == null)
return; return;
actionbar = getSupportActionBar(); mActionbar = getSupportActionBar();
isFullScreen = true; mIsFullScreen = true;
hideSystemUI(); hideSystemUI();
final Bundle bundle = new Bundle(); final Bundle bundle = new Bundle();
final Medium medium = new Medium(uri.toString(), false, 0); final Medium medium = new Medium(mUri.toString(), false, 0);
bundle.putSerializable(Constants.MEDIUM, medium); bundle.putSerializable(Constants.MEDIUM, medium);
final ViewPagerFragment fragment = new PhotoFragment(); final ViewPagerFragment fragment = new PhotoFragment();
fragment.setListener(this); fragment.setListener(this);
fragment.setArguments(bundle); fragment.setArguments(bundle);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_holder, fragment).commit(); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_holder, fragment).commit();
hideSystemUI(); hideSystemUI();
setTitle(Utils.getFilename(uri.toString())); setTitle(Utils.getFilename(mUri.toString()));
} }
@Override @Override
@ -65,15 +66,15 @@ public class PhotoActivity extends AppCompatActivity implements ViewPagerFragmen
final String shareTitle = getResources().getString(R.string.share_via); final String shareTitle = getResources().getString(R.string.share_via);
final Intent sendIntent = new Intent(); final Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND); sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, uri); sendIntent.putExtra(Intent.EXTRA_STREAM, mUri);
sendIntent.setType("image/*"); sendIntent.setType("image/*");
startActivity(Intent.createChooser(sendIntent, shareTitle)); startActivity(Intent.createChooser(sendIntent, shareTitle));
} }
@Override @Override
public void fragmentClicked() { public void fragmentClicked() {
isFullScreen = !isFullScreen; mIsFullScreen = !mIsFullScreen;
if (isFullScreen) { if (mIsFullScreen) {
hideSystemUI(); hideSystemUI();
} else { } else {
showSystemUI(); showSystemUI();
@ -81,10 +82,10 @@ public class PhotoActivity extends AppCompatActivity implements ViewPagerFragmen
} }
private void hideSystemUI() { private void hideSystemUI() {
Utils.hideSystemUI(actionbar, getWindow()); Utils.hideSystemUI(mActionbar, getWindow());
} }
private void showSystemUI() { private void showSystemUI() {
Utils.showSystemUI(actionbar, getWindow()); Utils.showSystemUI(mActionbar, getWindow());
} }
} }

View file

@ -16,32 +16,33 @@ import com.simplemobiletools.gallery.fragments.ViewPagerFragment;
import com.simplemobiletools.gallery.models.Medium; import com.simplemobiletools.gallery.models.Medium;
public class VideoActivity extends AppCompatActivity implements ViewPagerFragment.FragmentClickListener { public class VideoActivity extends AppCompatActivity implements ViewPagerFragment.FragmentClickListener {
private ActionBar actionbar; private static ActionBar mActionbar;
private boolean isFullScreen; private static Uri mUri;
private Uri uri;
private static boolean mIsFullScreen;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_holder); setContentView(R.layout.fragment_holder);
uri = getIntent().getData(); mUri = getIntent().getData();
if (uri == null) if (mUri == null)
return; return;
actionbar = getSupportActionBar(); mActionbar = getSupportActionBar();
isFullScreen = true; mIsFullScreen = true;
hideSystemUI(); hideSystemUI();
final Bundle bundle = new Bundle(); final Bundle bundle = new Bundle();
final Medium medium = new Medium(uri.toString(), true, 0); final Medium medium = new Medium(mUri.toString(), true, 0);
bundle.putSerializable(Constants.MEDIUM, medium); bundle.putSerializable(Constants.MEDIUM, medium);
final ViewPagerFragment fragment = new VideoFragment(); final ViewPagerFragment fragment = new VideoFragment();
fragment.setListener(this); fragment.setListener(this);
fragment.setArguments(bundle); fragment.setArguments(bundle);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_holder, fragment).commit(); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_holder, fragment).commit();
hideSystemUI(); hideSystemUI();
setTitle(Utils.getFilename(uri.toString())); setTitle(Utils.getFilename(mUri.toString()));
} }
@Override @Override
@ -65,15 +66,15 @@ public class VideoActivity extends AppCompatActivity implements ViewPagerFragmen
final String shareTitle = getResources().getString(R.string.share_via); final String shareTitle = getResources().getString(R.string.share_via);
final Intent sendIntent = new Intent(); final Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND); sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, uri); sendIntent.putExtra(Intent.EXTRA_STREAM, mUri);
sendIntent.setType("video/*"); sendIntent.setType("video/*");
startActivity(Intent.createChooser(sendIntent, shareTitle)); startActivity(Intent.createChooser(sendIntent, shareTitle));
} }
@Override @Override
public void fragmentClicked() { public void fragmentClicked() {
isFullScreen = !isFullScreen; mIsFullScreen = !mIsFullScreen;
if (isFullScreen) { if (mIsFullScreen) {
hideSystemUI(); hideSystemUI();
} else { } else {
showSystemUI(); showSystemUI();
@ -81,10 +82,10 @@ public class VideoActivity extends AppCompatActivity implements ViewPagerFragmen
} }
private void hideSystemUI() { private void hideSystemUI() {
Utils.hideSystemUI(actionbar, getWindow()); Utils.hideSystemUI(mActionbar, getWindow());
} }
private void showSystemUI() { private void showSystemUI() {
Utils.showSystemUI(actionbar, getWindow()); Utils.showSystemUI(mActionbar, getWindow());
} }
} }

View file

@ -40,18 +40,19 @@ import butterknife.OnClick;
public class ViewPagerActivity extends AppCompatActivity public class ViewPagerActivity extends AppCompatActivity
implements ViewPager.OnPageChangeListener, View.OnSystemUiVisibilityChangeListener, ViewPager.OnTouchListener, implements ViewPager.OnPageChangeListener, View.OnSystemUiVisibilityChangeListener, ViewPager.OnTouchListener,
ViewPagerFragment.FragmentClickListener { ViewPagerFragment.FragmentClickListener {
@BindView(R.id.undo_delete) View undoBtn; @BindView(R.id.undo_delete) View mUndoBtn;
@BindView(R.id.view_pager) MyViewPager pager; @BindView(R.id.view_pager) MyViewPager mPager;
private int pos; private static ActionBar mActionbar;
private boolean isFullScreen; private static List<Medium> mMedia;
private boolean isUndoShown; private static String mPath;
private ActionBar actionbar; private static String mDirectory;
private List<Medium> media; private static String mToBeDeleted;
private String path; private static String mBeingDeleted;
private String directory;
private String toBeDeleted; private static boolean mIsFullScreen;
private String beingDeleted; private static boolean mIsUndoShown;
private static int mPos;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -64,26 +65,26 @@ public class ViewPagerActivity extends AppCompatActivity
return; return;
} }
pos = 0; mPos = 0;
isFullScreen = true; mIsFullScreen = true;
actionbar = getSupportActionBar(); mActionbar = getSupportActionBar();
toBeDeleted = ""; mToBeDeleted = "";
beingDeleted = ""; mBeingDeleted = "";
hideSystemUI(); hideSystemUI();
path = getIntent().getStringExtra(Constants.MEDIUM); mPath = getIntent().getStringExtra(Constants.MEDIUM);
MediaScannerConnection.scanFile(this, new String[]{path}, null, null); MediaScannerConnection.scanFile(this, new String[]{mPath}, null, null);
addUndoMargin(); addUndoMargin();
directory = new File(path).getParent(); mDirectory = new File(mPath).getParent();
media = getMedia(); mMedia = getMedia();
if (isDirEmpty()) if (isDirEmpty())
return; return;
final MyPagerAdapter adapter = new MyPagerAdapter(this, getSupportFragmentManager(), media); final MyPagerAdapter adapter = new MyPagerAdapter(this, getSupportFragmentManager(), mMedia);
pager.setAdapter(adapter); mPager.setAdapter(adapter);
pager.setCurrentItem(pos); mPager.setCurrentItem(mPos);
pager.addOnPageChangeListener(this); mPager.addOnPageChangeListener(this);
pager.setOnTouchListener(this); mPager.setOnTouchListener(this);
getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(this); getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(this);
updateActionbarTitle(); updateActionbarTitle();
@ -99,10 +100,10 @@ public class ViewPagerActivity extends AppCompatActivity
@OnClick(R.id.undo_delete) @OnClick(R.id.undo_delete)
public void undoDeletion() { public void undoDeletion() {
isUndoShown = false; mIsUndoShown = false;
toBeDeleted = ""; mToBeDeleted = "";
beingDeleted = ""; mBeingDeleted = "";
undoBtn.setVisibility(View.GONE); mUndoBtn.setVisibility(View.GONE);
reloadViewPager(); reloadViewPager();
} }
@ -138,37 +139,38 @@ public class ViewPagerActivity extends AppCompatActivity
final Uri uri = Uri.fromFile(file); final Uri uri = Uri.fromFile(file);
sendIntent.setAction(Intent.ACTION_SEND); sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, uri); sendIntent.putExtra(Intent.EXTRA_STREAM, uri);
if (medium.getIsVideo()) if (medium.getIsVideo()) {
sendIntent.setType("video/*"); sendIntent.setType("video/*");
else } else {
sendIntent.setType("image/*"); sendIntent.setType("image/*");
}
startActivity(Intent.createChooser(sendIntent, shareTitle)); startActivity(Intent.createChooser(sendIntent, shareTitle));
} }
private void notifyDeletion() { private void notifyDeletion() {
toBeDeleted = getCurrentFile().getAbsolutePath(); mToBeDeleted = getCurrentFile().getAbsolutePath();
if (media.size() <= 1) { if (mMedia.size() <= 1) {
deleteFile(); deleteFile();
} else { } else {
Utils.showToast(this, R.string.file_deleted); Utils.showToast(this, R.string.file_deleted);
undoBtn.setVisibility(View.VISIBLE); mUndoBtn.setVisibility(View.VISIBLE);
isUndoShown = true; mIsUndoShown = true;
reloadViewPager(); reloadViewPager();
} }
} }
private void deleteFile() { private void deleteFile() {
if (toBeDeleted.isEmpty()) if (mToBeDeleted.isEmpty())
return; return;
isUndoShown = false; mIsUndoShown = false;
beingDeleted = ""; mBeingDeleted = "";
final File file = new File(toBeDeleted); final File file = new File(mToBeDeleted);
if (file.delete()) { if (file.delete()) {
beingDeleted = toBeDeleted; mBeingDeleted = mToBeDeleted;
final String[] deletedPath = new String[]{toBeDeleted}; final String[] deletedPath = new String[]{mToBeDeleted};
MediaScannerConnection.scanFile(this, deletedPath, null, new MediaScannerConnection.OnScanCompletedListener() { MediaScannerConnection.scanFile(this, deletedPath, null, new MediaScannerConnection.OnScanCompletedListener() {
@Override @Override
public void onScanCompleted(String path, Uri uri) { public void onScanCompleted(String path, Uri uri) {
@ -176,12 +178,12 @@ public class ViewPagerActivity extends AppCompatActivity
} }
}); });
} }
toBeDeleted = ""; mToBeDeleted = "";
undoBtn.setVisibility(View.GONE); mUndoBtn.setVisibility(View.GONE);
} }
private boolean isDirEmpty() { private boolean isDirEmpty() {
if (media.size() <= 0) { if (mMedia.size() <= 0) {
deleteDirectoryIfEmpty(); deleteDirectoryIfEmpty();
finish(); finish();
return true; return true;
@ -229,8 +231,8 @@ public class ViewPagerActivity extends AppCompatActivity
final File newFile = new File(file.getParent(), fileName + "." + extension); final File newFile = new File(file.getParent(), fileName + "." + extension);
if (file.renameTo(newFile)) { if (file.renameTo(newFile)) {
final int currItem = pager.getCurrentItem(); final int currItem = mPager.getCurrentItem();
media.set(currItem, new Medium(newFile.getAbsolutePath(), media.get(currItem).getIsVideo(), 0)); mMedia.set(currItem, new Medium(newFile.getAbsolutePath(), mMedia.get(currItem).getIsVideo(), 0));
final String[] changedFiles = {file.getAbsolutePath(), newFile.getAbsolutePath()}; final String[] changedFiles = {file.getAbsolutePath(), newFile.getAbsolutePath()};
MediaScannerConnection.scanFile(getApplicationContext(), changedFiles, null, null); MediaScannerConnection.scanFile(getApplicationContext(), changedFiles, null, null);
@ -244,75 +246,75 @@ public class ViewPagerActivity extends AppCompatActivity
} }
private void reloadViewPager() { private void reloadViewPager() {
final MyPagerAdapter adapter = (MyPagerAdapter) pager.getAdapter(); final MyPagerAdapter adapter = (MyPagerAdapter) mPager.getAdapter();
final int curPos = pager.getCurrentItem(); final int curPos = mPager.getCurrentItem();
media = getMedia(); mMedia = getMedia();
if (isDirEmpty()) if (isDirEmpty())
return; return;
pager.setAdapter(null); mPager.setAdapter(null);
adapter.updateItems(media); adapter.updateItems(mMedia);
pager.setAdapter(adapter); mPager.setAdapter(adapter);
final int newPos = Math.min(curPos, adapter.getCount()); final int newPos = Math.min(curPos, adapter.getCount());
pager.setCurrentItem(newPos); mPager.setCurrentItem(newPos);
updateActionbarTitle(); updateActionbarTitle();
} }
private void deleteDirectoryIfEmpty() { private void deleteDirectoryIfEmpty() {
final File file = new File(directory); final File file = new File(mDirectory);
if (file.isDirectory() && file.listFiles().length == 0) { if (file.isDirectory() && file.listFiles().length == 0) {
file.delete(); file.delete();
} }
final String[] toBeDeleted = new String[]{directory}; final String[] toBeDeleted = new String[]{mDirectory};
MediaScannerConnection.scanFile(getApplicationContext(), toBeDeleted, null, null); MediaScannerConnection.scanFile(getApplicationContext(), toBeDeleted, null, null);
} }
private List<Medium> getMedia() { private List<Medium> getMedia() {
final List<Medium> myMedia = new ArrayList<>(); final List<Medium> media = new ArrayList<>();
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
if (i == 1) { if (i == 1) {
uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
} }
final String where = MediaStore.Images.Media.DATA + " like ? "; final String where = MediaStore.Images.Media.DATA + " like ? ";
final String[] args = new String[]{directory + "%"}; final String[] args = new String[]{mDirectory + "%"};
final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_TAKEN}; final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_TAKEN};
final Cursor cursor = getContentResolver().query(uri, columns, where, args, null); final Cursor cursor = getContentResolver().query(uri, columns, where, args, null);
final String pattern = Pattern.quote(directory) + "/[^/]*"; final String pattern = Pattern.quote(mDirectory) + "/[^/]*";
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {
final int pathIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA); final int pathIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
do { do {
final String curPath = cursor.getString(pathIndex); final String curPath = cursor.getString(pathIndex);
if (curPath.matches(pattern) && !curPath.equals(toBeDeleted) && !curPath.equals(beingDeleted)) { if (curPath.matches(pattern) && !curPath.equals(mToBeDeleted) && !curPath.equals(mBeingDeleted)) {
final int dateIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN); final int dateIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN);
final long timestamp = cursor.getLong(dateIndex); final long timestamp = cursor.getLong(dateIndex);
myMedia.add(new Medium(curPath, i == 1, timestamp)); media.add(new Medium(curPath, i == 1, timestamp));
} }
} while (cursor.moveToNext()); } while (cursor.moveToNext());
cursor.close(); cursor.close();
} }
} }
Collections.sort(myMedia); Collections.sort(media);
int j = 0; int j = 0;
for (Medium medium : myMedia) { for (Medium medium : media) {
if (medium.getPath().equals(path)) { if (medium.getPath().equals(mPath)) {
pos = j; mPos = j;
break; break;
} }
j++; j++;
} }
return myMedia; return media;
} }
@Override @Override
public void fragmentClicked() { public void fragmentClicked() {
deleteFile(); deleteFile();
isFullScreen = !isFullScreen; mIsFullScreen = !mIsFullScreen;
if (isFullScreen) { if (mIsFullScreen) {
hideSystemUI(); hideSystemUI();
} else { } else {
showSystemUI(); showSystemUI();
@ -320,21 +322,21 @@ public class ViewPagerActivity extends AppCompatActivity
} }
private void hideSystemUI() { private void hideSystemUI() {
Utils.hideSystemUI(actionbar, getWindow()); Utils.hideSystemUI(mActionbar, getWindow());
} }
private void showSystemUI() { private void showSystemUI() {
Utils.showSystemUI(actionbar, getWindow()); Utils.showSystemUI(mActionbar, getWindow());
} }
private void updateActionbarTitle() { private void updateActionbarTitle() {
setTitle(Utils.getFilename(media.get(pager.getCurrentItem()).getPath())); setTitle(Utils.getFilename(mMedia.get(mPager.getCurrentItem()).getPath()));
} }
private Medium getCurrentMedium() { private Medium getCurrentMedium() {
if (pos >= media.size()) if (mPos >= mMedia.size())
pos = media.size() - 1; mPos = mMedia.size() - 1;
return media.get(pos); return mMedia.get(mPos);
} }
private File getCurrentFile() { private File getCurrentFile() {
@ -343,7 +345,7 @@ public class ViewPagerActivity extends AppCompatActivity
private void addUndoMargin() { private void addUndoMargin() {
final Resources res = getResources(); final Resources res = getResources();
final RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) undoBtn.getLayoutParams(); final RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mUndoBtn.getLayoutParams();
final int topMargin = Utils.getStatusBarHeight(res) + Utils.getActionBarHeight(getApplicationContext(), res); final int topMargin = Utils.getStatusBarHeight(res) + Utils.getActionBarHeight(getApplicationContext(), res);
int rightMargin = params.rightMargin; int rightMargin = params.rightMargin;
@ -362,33 +364,33 @@ public class ViewPagerActivity extends AppCompatActivity
@Override @Override
public void onPageSelected(int position) { public void onPageSelected(int position) {
updateActionbarTitle(); updateActionbarTitle();
pos = position; mPos = position;
} }
@Override @Override
public void onPageScrollStateChanged(int state) { public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_DRAGGING) { if (state == ViewPager.SCROLL_STATE_DRAGGING) {
final MyPagerAdapter adapter = (MyPagerAdapter) pager.getAdapter(); final MyPagerAdapter adapter = (MyPagerAdapter) mPager.getAdapter();
adapter.itemDragged(pos); adapter.itemDragged(mPos);
} }
} }
@Override @Override
public void onSystemUiVisibilityChange(int visibility) { public void onSystemUiVisibilityChange(int visibility) {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
isFullScreen = false; mIsFullScreen = false;
} }
final MyPagerAdapter adapter = (MyPagerAdapter) pager.getAdapter(); final MyPagerAdapter adapter = (MyPagerAdapter) mPager.getAdapter();
adapter.updateUiVisibility(isFullScreen, pos); adapter.updateUiVisibility(mIsFullScreen, mPos);
} }
private void scanCompleted() { private void scanCompleted() {
beingDeleted = ""; mBeingDeleted = "";
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
if (media != null && media.size() <= 1) { if (mMedia != null && mMedia.size() <= 1) {
reloadViewPager(); reloadViewPager();
} }
} }
@ -397,7 +399,7 @@ public class ViewPagerActivity extends AppCompatActivity
@Override @Override
public boolean onTouch(View v, MotionEvent event) { public boolean onTouch(View v, MotionEvent event) {
if (isUndoShown) { if (mIsUndoShown) {
deleteFile(); deleteFile();
} }

View file

@ -9,8 +9,8 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.simplemobiletools.gallery.models.Directory;
import com.simplemobiletools.gallery.R; import com.simplemobiletools.gallery.R;
import com.simplemobiletools.gallery.models.Directory;
import java.util.List; import java.util.List;
@ -18,43 +18,44 @@ import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
public class DirectoryAdapter extends BaseAdapter { public class DirectoryAdapter extends BaseAdapter {
private final Context context; private final Context mContext;
private final List<Directory> dirs; private final List<Directory> mDirs;
private final LayoutInflater inflater; private final LayoutInflater mInflater;
public DirectoryAdapter(Context context, List<Directory> dirs) { public DirectoryAdapter(Context context, List<Directory> dirs) {
this.context = context; this.mContext = context;
this.dirs = dirs; this.mDirs = dirs;
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} }
@Override @Override
public View getView(int position, View view, ViewGroup parent) { public View getView(int position, View view, ViewGroup parent) {
ViewHolder holder; ViewHolder holder;
if (view == null) { if (view == null) {
view = inflater.inflate(R.layout.directory_item, parent, false); view = mInflater.inflate(R.layout.directory_item, parent, false);
holder = new ViewHolder(view); holder = new ViewHolder(view);
view.setTag(holder); view.setTag(holder);
} else { } else {
holder = (ViewHolder) view.getTag(); holder = (ViewHolder) view.getTag();
} }
final Directory dir = dirs.get(position); final Directory dir = mDirs.get(position);
holder.dirName.setText(dir.getName()); holder.dirName.setText(dir.getName());
holder.photoCnt.setText(String.valueOf(dir.getMediaCnt())); holder.photoCnt.setText(String.valueOf(dir.getMediaCnt()));
Glide.with(context).load(dir.getThumbnail()).placeholder(R.color.tmb_background).centerCrop().crossFade().into(holder.dirThumbnail); Glide.with(mContext).load(dir.getThumbnail()).placeholder(R.color.tmb_background).centerCrop().crossFade()
.into(holder.dirThumbnail);
return view; return view;
} }
@Override @Override
public int getCount() { public int getCount() {
return dirs.size(); return mDirs.size();
} }
@Override @Override
public Object getItem(int position) { public Object getItem(int position) {
return dirs.get(position); return mDirs.get(position);
} }
@Override @Override
@ -63,8 +64,8 @@ public class DirectoryAdapter extends BaseAdapter {
} }
public void updateItems(List<Directory> newDirs) { public void updateItems(List<Directory> newDirs) {
dirs.clear(); mDirs.clear();
dirs.addAll(newDirs); mDirs.addAll(newDirs);
notifyDataSetChanged(); notifyDataSetChanged();
} }

View file

@ -17,22 +17,22 @@ import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
public class MediaAdapter extends BaseAdapter { public class MediaAdapter extends BaseAdapter {
private final Context context; private final Context mContext;
private final List<Medium> media; private final List<Medium> mMedia;
private final LayoutInflater inflater; private final LayoutInflater mInflater;
public MediaAdapter(Context context, List<Medium> media) { public MediaAdapter(Context context, List<Medium> media) {
this.context = context; this.mContext = context;
this.media = media; this.mMedia = media;
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} }
@Override @Override
public View getView(int position, View view, ViewGroup parent) { public View getView(int position, View view, ViewGroup parent) {
final Medium medium = media.get(position); final Medium medium = mMedia.get(position);
ViewHolder holder; ViewHolder holder;
if (view == null) { if (view == null) {
view = inflater.inflate(R.layout.video_item, parent, false); view = mInflater.inflate(R.layout.video_item, parent, false);
holder = new ViewHolder(view); holder = new ViewHolder(view);
view.setTag(holder); view.setTag(holder);
} else { } else {
@ -46,19 +46,19 @@ public class MediaAdapter extends BaseAdapter {
} }
final String path = medium.getPath(); final String path = medium.getPath();
Glide.with(context).load(path).placeholder(R.color.tmb_background).centerCrop().crossFade().into(holder.photoThumbnail); Glide.with(mContext).load(path).placeholder(R.color.tmb_background).centerCrop().crossFade().into(holder.photoThumbnail);
return view; return view;
} }
@Override @Override
public int getCount() { public int getCount() {
return media.size(); return mMedia.size();
} }
@Override @Override
public Object getItem(int position) { public Object getItem(int position) {
return media.get(position); return mMedia.get(position);
} }
@Override @Override
@ -67,14 +67,14 @@ public class MediaAdapter extends BaseAdapter {
} }
public void updateItems(List<Medium> newPhotos) { public void updateItems(List<Medium> newPhotos) {
media.clear(); mMedia.clear();
media.addAll(newPhotos); mMedia.addAll(newPhotos);
notifyDataSetChanged(); notifyDataSetChanged();
} }
static class ViewHolder { static class ViewHolder {
@BindView(R.id.medium_thumbnail) ImageView photoThumbnail; @BindView(R.id.medium_thumbnail) ImageView photoThumbnail;
@BindView(R.id.play_outline) ImageView playOutline; @BindView(R.id.play_outline) View playOutline;
public ViewHolder(View view) { public ViewHolder(View view) {
ButterKnife.bind(this, view); ButterKnife.bind(this, view);

View file

@ -17,25 +17,25 @@ import java.util.List;
import java.util.Map; import java.util.Map;
public class MyPagerAdapter extends FragmentStatePagerAdapter { public class MyPagerAdapter extends FragmentStatePagerAdapter {
private List<Medium> media; private final List<Medium> mMedia;
private Map<Integer, ViewPagerFragment> fragments; private final Map<Integer, ViewPagerFragment> mFragments;
private ViewPagerActivity activity; private final ViewPagerActivity mActivity;
public MyPagerAdapter(ViewPagerActivity act, FragmentManager fm, List<Medium> media) { public MyPagerAdapter(ViewPagerActivity act, FragmentManager fm, List<Medium> media) {
super(fm); super(fm);
this.activity = act; this.mActivity = act;
this.media = media; this.mMedia = media;
fragments = new HashMap<>(); mFragments = new HashMap<>();
} }
@Override @Override
public int getCount() { public int getCount() {
return media.size(); return mMedia.size();
} }
@Override @Override
public Fragment getItem(int position) { public Fragment getItem(int position) {
final Medium medium = media.get(position); final Medium medium = mMedia.get(position);
final Bundle bundle = new Bundle(); final Bundle bundle = new Bundle();
bundle.putSerializable(Constants.MEDIUM, medium); bundle.putSerializable(Constants.MEDIUM, medium);
ViewPagerFragment fragment; ViewPagerFragment fragment;
@ -46,21 +46,21 @@ public class MyPagerAdapter extends FragmentStatePagerAdapter {
fragment = new PhotoFragment(); fragment = new PhotoFragment();
} }
fragments.put(position, fragment); mFragments.put(position, fragment);
fragment.setArguments(bundle); fragment.setArguments(bundle);
fragment.setListener(activity); fragment.setListener(mActivity);
return fragment; return fragment;
} }
public void itemDragged(int pos) { public void itemDragged(int pos) {
if (fragments.get(pos) != null) { if (mFragments.get(pos) != null) {
fragments.get(pos).itemDragged(); mFragments.get(pos).itemDragged();
} }
} }
public void updateUiVisibility(boolean isFullscreen, int pos) { public void updateUiVisibility(boolean isFullscreen, int pos) {
for (int i = -1; i <= 1; i++) { for (int i = -1; i <= 1; i++) {
ViewPagerFragment fragment = fragments.get(pos + i); final ViewPagerFragment fragment = mFragments.get(pos + i);
if (fragment != null) { if (fragment != null) {
fragment.systemUiVisibilityChanged(isFullscreen); fragment.systemUiVisibilityChanged(isFullscreen);
} }
@ -68,8 +68,8 @@ public class MyPagerAdapter extends FragmentStatePagerAdapter {
} }
public void updateItems(List<Medium> newPaths) { public void updateItems(List<Medium> newPaths) {
media.clear(); mMedia.clear();
media.addAll(newPaths); mMedia.addAll(newPaths);
notifyDataSetChanged(); notifyDataSetChanged();
} }
} }

View file

@ -37,10 +37,10 @@ public class PhotoFragment extends ViewPagerFragment implements View.OnClickList
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (listener == null) if (mListener == null)
listener = (FragmentClickListener) getActivity(); mListener = (FragmentClickListener) getActivity();
listener.fragmentClicked(); mListener.fragmentClicked();
} }
@Override @Override

View file

@ -35,33 +35,34 @@ public class VideoFragment extends ViewPagerFragment
SeekBar.OnSeekBarChangeListener, OnPreparedListener { SeekBar.OnSeekBarChangeListener, OnPreparedListener {
private static final String TAG = VideoFragment.class.getSimpleName(); private static final String TAG = VideoFragment.class.getSimpleName();
private static final String PROGRESS = "progress"; private static final String PROGRESS = "progress";
private MediaPlayer mediaPlayer;
private SurfaceView surfaceView;
private SurfaceHolder surfaceHolder;
private ImageView playOutline; private MediaPlayer mMediaPlayer;
private TextView currTimeView; private SurfaceView mSurfaceView;
private TextView durationView; private SurfaceHolder mSurfaceHolder;
private Handler timerHandler; private ImageView mPlayOutline;
private SeekBar seekBar; private TextView mCurrTimeView;
private Medium medium; private TextView mDurationView;
private View timeHolder; private Handler mTimerHandler;
private boolean isPlaying; private SeekBar mSeekBar;
private boolean isDragged; private Medium mMedium;
private boolean isFullscreen; private View mTimeHolder;
private int currTime;
private int duration; private boolean mIsPlaying;
private boolean mIsDragged;
private boolean mIsFullscreen;
private int mCurrTime;
private int mDuration;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.pager_video_item, container, false); final View view = inflater.inflate(R.layout.pager_video_item, container, false);
medium = (Medium) getArguments().getSerializable(Constants.MEDIUM); mMedium = (Medium) getArguments().getSerializable(Constants.MEDIUM);
if (savedInstanceState != null) { if (savedInstanceState != null) {
currTime = savedInstanceState.getInt(PROGRESS); mCurrTime = savedInstanceState.getInt(PROGRESS);
} }
isFullscreen = (getActivity().getWindow().getDecorView().getSystemUiVisibility() & View.SYSTEM_UI_FLAG_FULLSCREEN) == mIsFullscreen = (getActivity().getWindow().getDecorView().getSystemUiVisibility() & View.SYSTEM_UI_FLAG_FULLSCREEN) ==
View.SYSTEM_UI_FLAG_FULLSCREEN; View.SYSTEM_UI_FLAG_FULLSCREEN;
setupPlayer(view); setupPlayer(view);
view.setOnClickListener(this); view.setOnClickListener(this);
@ -73,13 +74,13 @@ public class VideoFragment extends ViewPagerFragment
if (getActivity() == null) if (getActivity() == null)
return; return;
playOutline = (ImageView) view.findViewById(R.id.video_play_outline); mPlayOutline = (ImageView) view.findViewById(R.id.video_play_outline);
playOutline.setOnClickListener(this); mPlayOutline.setOnClickListener(this);
surfaceView = (SurfaceView) view.findViewById(R.id.video_surface); mSurfaceView = (SurfaceView) view.findViewById(R.id.video_surface);
surfaceView.setOnClickListener(this); mSurfaceView.setOnClickListener(this);
surfaceHolder = surfaceView.getHolder(); mSurfaceHolder = mSurfaceView.getHolder();
surfaceHolder.addCallback(this); mSurfaceHolder.addCallback(this);
initTimeHolder(view); initTimeHolder(view);
} }
@ -90,42 +91,42 @@ public class VideoFragment extends ViewPagerFragment
@Override @Override
public void systemUiVisibilityChanged(boolean toFullscreen) { public void systemUiVisibilityChanged(boolean toFullscreen) {
if (isFullscreen != toFullscreen) { if (mIsFullscreen != toFullscreen) {
isFullscreen = toFullscreen; mIsFullscreen = toFullscreen;
checkFullscreen(); checkFullscreen();
} }
} }
private void initTimeHolder(View view) { private void initTimeHolder(View view) {
timeHolder = view.findViewById(R.id.video_time_holder); mTimeHolder = view.findViewById(R.id.video_time_holder);
final Resources res = getResources(); final Resources res = getResources();
final int height = Utils.getNavBarHeight(res); final int height = Utils.getNavBarHeight(res);
final int left = timeHolder.getPaddingLeft(); final int left = mTimeHolder.getPaddingLeft();
final int top = timeHolder.getPaddingTop(); final int top = mTimeHolder.getPaddingTop();
final int right = timeHolder.getPaddingRight(); final int right = mTimeHolder.getPaddingRight();
final int bottom = timeHolder.getPaddingBottom(); final int bottom = mTimeHolder.getPaddingBottom();
if (Utils.hasNavBar(res)) { if (Utils.hasNavBar(res)) {
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
timeHolder.setPadding(left, top, right, bottom + height); mTimeHolder.setPadding(left, top, right, bottom + height);
} else { } else {
timeHolder.setPadding(left, top, right + height, bottom); mTimeHolder.setPadding(left, top, right + height, bottom);
} }
} }
currTimeView = (TextView) view.findViewById(R.id.video_curr_time); mCurrTimeView = (TextView) view.findViewById(R.id.video_curr_time);
durationView = (TextView) view.findViewById(R.id.video_duration); mDurationView = (TextView) view.findViewById(R.id.video_duration);
seekBar = (SeekBar) view.findViewById(R.id.video_seekbar); mSeekBar = (SeekBar) view.findViewById(R.id.video_seekbar);
seekBar.setOnSeekBarChangeListener(this); mSeekBar.setOnSeekBarChangeListener(this);
if (isFullscreen) if (mIsFullscreen)
timeHolder.setVisibility(View.INVISIBLE); mTimeHolder.setVisibility(View.INVISIBLE);
} }
private void setupTimeHolder() { private void setupTimeHolder() {
seekBar.setMax(duration); mSeekBar.setMax(mDuration);
durationView.setText(getTimeString(duration)); mDurationView.setText(getTimeString(mDuration));
timerHandler = new Handler(); mTimerHandler = new Handler();
setupTimer(); setupTimer();
} }
@ -133,13 +134,13 @@ public class VideoFragment extends ViewPagerFragment
getActivity().runOnUiThread(new Runnable() { getActivity().runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
if (mediaPlayer != null && !isDragged && isPlaying) { if (mMediaPlayer != null && !mIsDragged && mIsPlaying) {
currTime = mediaPlayer.getCurrentPosition() / 1000; mCurrTime = mMediaPlayer.getCurrentPosition() / 1000;
seekBar.setProgress(currTime); mSeekBar.setProgress(mCurrTime);
currTimeView.setText(getTimeString(currTime)); mCurrTimeView.setText(getTimeString(mCurrTime));
} }
timerHandler.postDelayed(this, 1000); mTimerHandler.postDelayed(this, 1000);
} }
}); });
} }
@ -147,7 +148,7 @@ public class VideoFragment extends ViewPagerFragment
@Override @Override
public void onSaveInstanceState(Bundle outState) { public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
outState.putInt(PROGRESS, currTime); outState.putInt(PROGRESS, mCurrTime);
} }
@Override @Override
@ -157,31 +158,31 @@ public class VideoFragment extends ViewPagerFragment
togglePlayPause(); togglePlayPause();
break; break;
default: default:
isFullscreen = !isFullscreen; mIsFullscreen = !mIsFullscreen;
checkFullscreen(); checkFullscreen();
if (listener == null) if (mListener == null)
listener = (FragmentClickListener) getActivity(); mListener = (FragmentClickListener) getActivity();
listener.fragmentClicked(); mListener.fragmentClicked();
break; break;
} }
} }
private void checkFullscreen() { private void checkFullscreen() {
int anim = R.anim.fade_in; int anim = R.anim.fade_in;
if (isFullscreen) { if (mIsFullscreen) {
anim = R.anim.fade_out; anim = R.anim.fade_out;
seekBar.setOnSeekBarChangeListener(null); mSeekBar.setOnSeekBarChangeListener(null);
} else { } else {
seekBar.setOnSeekBarChangeListener(this); mSeekBar.setOnSeekBarChangeListener(this);
} }
final Animation animation = AnimationUtils.loadAnimation(getContext(), anim); final Animation animation = AnimationUtils.loadAnimation(getContext(), anim);
timeHolder.startAnimation(animation); mTimeHolder.startAnimation(animation);
} }
private void pauseVideo() { private void pauseVideo() {
if (isPlaying) { if (mIsPlaying) {
togglePlayPause(); togglePlayPause();
} }
} }
@ -190,19 +191,19 @@ public class VideoFragment extends ViewPagerFragment
if (getActivity() == null) if (getActivity() == null)
return; return;
isPlaying = !isPlaying; mIsPlaying = !mIsPlaying;
if (isPlaying) { if (mIsPlaying) {
if (mediaPlayer != null) { if (mMediaPlayer != null) {
mediaPlayer.start(); mMediaPlayer.start();
} }
playOutline.setImageDrawable(null); mPlayOutline.setImageDrawable(null);
} else { } else {
if (mediaPlayer != null) { if (mMediaPlayer != null) {
mediaPlayer.pause(); mMediaPlayer.pause();
} }
playOutline.setImageDrawable(getResources().getDrawable(R.mipmap.play_outline_big)); mPlayOutline.setImageDrawable(getResources().getDrawable(R.mipmap.play_outline_big));
} }
} }
@ -212,32 +213,32 @@ public class VideoFragment extends ViewPagerFragment
} }
private void initMediaPlayer() { private void initMediaPlayer() {
if (mediaPlayer != null) if (mMediaPlayer != null)
return; return;
try { try {
mediaPlayer = new MediaPlayer(); mMediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(getContext(), Uri.parse(medium.getPath())); mMediaPlayer.setDataSource(getContext(), Uri.parse(mMedium.getPath()));
mediaPlayer.setDisplay(surfaceHolder); mMediaPlayer.setDisplay(mSurfaceHolder);
mediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnCompletionListener(this);
mediaPlayer.setOnVideoSizeChangedListener(this); mMediaPlayer.setOnVideoSizeChangedListener(this);
mediaPlayer.setOnPreparedListener(this); mMediaPlayer.setOnPreparedListener(this);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.prepareAsync(); mMediaPlayer.prepareAsync();
} catch (IOException e) { } catch (IOException e) {
Log.e(TAG, "init media player " + e.getMessage()); Log.e(TAG, "init media player " + e.getMessage());
} }
} }
private void setProgress(int seconds) { private void setProgress(int seconds) {
mediaPlayer.seekTo(seconds * 1000); mMediaPlayer.seekTo(seconds * 1000);
seekBar.setProgress(seconds); mSeekBar.setProgress(seconds);
currTimeView.setText(getTimeString(seconds)); mCurrTimeView.setText(getTimeString(seconds));
} }
private void addPreviewImage() { private void addPreviewImage() {
mediaPlayer.start(); mMediaPlayer.start();
mediaPlayer.pause(); mMediaPlayer.pause();
} }
@Override @Override
@ -257,19 +258,19 @@ public class VideoFragment extends ViewPagerFragment
private void cleanup() { private void cleanup() {
pauseVideo(); pauseVideo();
if (currTimeView != null) if (mCurrTimeView != null)
currTimeView.setText(getTimeString(0)); mCurrTimeView.setText(getTimeString(0));
if (mediaPlayer != null) { if (mMediaPlayer != null) {
mediaPlayer.release(); mMediaPlayer.release();
mediaPlayer = null; mMediaPlayer = null;
} }
if (seekBar != null) if (mSeekBar != null)
seekBar.setProgress(0); mSeekBar.setProgress(0);
if (timerHandler != null) if (mTimerHandler != null)
timerHandler.removeCallbacksAndMessages(null); mTimerHandler.removeCallbacksAndMessages(null);
} }
@Override @Override
@ -284,8 +285,8 @@ public class VideoFragment extends ViewPagerFragment
@Override @Override
public void onCompletion(MediaPlayer mp) { public void onCompletion(MediaPlayer mp) {
seekBar.setProgress(seekBar.getMax()); mSeekBar.setProgress(mSeekBar.getMax());
currTimeView.setText(getTimeString(duration)); mCurrTimeView.setText(getTimeString(mDuration));
pauseVideo(); pauseVideo();
} }
@ -315,7 +316,7 @@ public class VideoFragment extends ViewPagerFragment
final float screenProportion = (float) screenWidth / (float) screenHeight; final float screenProportion = (float) screenWidth / (float) screenHeight;
final android.view.ViewGroup.LayoutParams lp = surfaceView.getLayoutParams(); final android.view.ViewGroup.LayoutParams lp = mSurfaceView.getLayoutParams();
if (videoProportion > screenProportion) { if (videoProportion > screenProportion) {
lp.width = screenWidth; lp.width = screenWidth;
lp.height = (int) ((float) screenWidth / videoProportion); lp.height = (int) ((float) screenWidth / videoProportion);
@ -323,7 +324,7 @@ public class VideoFragment extends ViewPagerFragment
lp.width = (int) (videoProportion * (float) screenHeight); lp.width = (int) (videoProportion * (float) screenHeight);
lp.height = screenHeight; lp.height = screenHeight;
} }
surfaceView.setLayoutParams(lp); mSurfaceView.setLayoutParams(lp);
} }
private String getTimeString(int duration) { private String getTimeString(int duration) {
@ -344,36 +345,36 @@ public class VideoFragment extends ViewPagerFragment
@Override @Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (mediaPlayer != null && fromUser) { if (mMediaPlayer != null && fromUser) {
setProgress(progress); setProgress(progress);
} }
} }
@Override @Override
public void onStartTrackingTouch(SeekBar seekBar) { public void onStartTrackingTouch(SeekBar seekBar) {
if (mediaPlayer == null) if (mMediaPlayer == null)
initMediaPlayer(); initMediaPlayer();
mediaPlayer.pause(); mMediaPlayer.pause();
isDragged = true; mIsDragged = true;
} }
@Override @Override
public void onStopTrackingTouch(SeekBar seekBar) { public void onStopTrackingTouch(SeekBar seekBar) {
if (!isPlaying) { if (!mIsPlaying) {
togglePlayPause(); togglePlayPause();
} else { } else {
mediaPlayer.start(); mMediaPlayer.start();
} }
isDragged = false; mIsDragged = false;
} }
@Override @Override
public void onPrepared(MediaPlayer mp) { public void onPrepared(MediaPlayer mp) {
duration = mp.getDuration() / 1000; mDuration = mp.getDuration() / 1000;
addPreviewImage(); addPreviewImage();
setupTimeHolder(); setupTimeHolder();
setProgress(currTime); setProgress(mCurrTime);
} }
} }

View file

@ -3,10 +3,10 @@ package com.simplemobiletools.gallery.fragments;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
public abstract class ViewPagerFragment extends Fragment { public abstract class ViewPagerFragment extends Fragment {
protected FragmentClickListener listener; protected FragmentClickListener mListener;
public void setListener(FragmentClickListener ln) { public void setListener(FragmentClickListener listener) {
listener = ln; mListener = listener;
} }
public abstract void itemDragged(); public abstract void itemDragged();

View file

@ -49,4 +49,14 @@ public class Directory implements Comparable {
} }
return 0; return 0;
} }
@Override
public String toString() {
return "Directory {" +
"path=" + getPath() +
", thumbnail=" + getThumbnail() +
", name=" + getName() +
", timestamp=" + getTimestamp() +
", mediaCnt=" + getMediaCnt() + "}";
}
} }