diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
index b4b9ea2..1514238 100644
--- a/.idea/assetWizardSettings.xml
+++ b/.idea/assetWizardSettings.xml
@@ -67,7 +67,7 @@
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 6c075a5..8f779fc 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/app/build.gradle b/app/build.gradle
index 44eb524..37a43fb 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -6,8 +6,8 @@ android {
applicationId "ca.pkay.rcloneexplorer"
minSdkVersion 21
targetSdkVersion 27
- versionCode 3
- versionName "0.3.0-alpha"
+ versionCode 4
+ versionName "1.0.0-beta"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -36,6 +36,7 @@ dependencies {
implementation "com.mikepenz:iconics-core:3.0.3@aar"
implementation 'com.mikepenz:community-material-typeface:2.0.46.1@aar'
implementation 'com.mikepenz:fontawesome-typeface:5.0.6.0@aar'
+ implementation 'com.mikepenz:octicons-typeface:3.2.0.4@aar'
implementation "com.mikepenz:aboutlibraries:6.0.8"
implementation 'us.feras.mdv:markdownview:1.1.0'
testImplementation 'junit:junit:4.12'
diff --git a/app/src/main/assets/changelog.md b/app/src/main/assets/changelog.md
index dfdc2b8..506cd7d 100644
--- a/app/src/main/assets/changelog.md
+++ b/app/src/main/assets/changelog.md
@@ -1,4 +1,13 @@
-### Version 0.3.0-alpha
+### 1.0.0-beta
+***
+First beta release!
+
+* Code refactoring
+
+***
+
+
+### 0.3.0-alpha
***
* **New:** Changelog added under About screen
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/AboutActivity.java b/app/src/main/java/ca/pkay/rcloneexplorer/AboutActivity.java
index 2a8d61b..592fb6d 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/AboutActivity.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/AboutActivity.java
@@ -80,7 +80,7 @@ private void showChangelog() {
private void showOpenSourceLibraries() {
new LibsBuilder()
.withActivityStyle(Libs.ActivityStyle.LIGHT_DARK_TOOLBAR)
- .withActivityTitle("Credits/Libraries")
+ .withActivityTitle(getString(R.string.credits_libraries))
.withAutoDetect(false)
.withLibraries()
.withExcludedLibraries()
@@ -88,17 +88,17 @@ private void showOpenSourceLibraries() {
}
private void openAppGitHubLink() {
- Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/kaczmarkiewiczp/rcloneExplorer"));
+ Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.github_app_url)));
startActivity(browserIntent);
}
private void reportBug() {
- Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/kaczmarkiewiczp/rcloneExplorer/issues/new"));
+ Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.github_issue_url)));
startActivity(browserIntent);
}
private void openAuthorGitHubLink() {
- Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/kaczmarkiewiczp"));
+ Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.github_author_url)));
startActivity(browserIntent);
}
}
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/BroadcastReceivers/ServeCancelAction.java b/app/src/main/java/ca/pkay/rcloneexplorer/BroadcastReceivers/ServeCancelAction.java
index 5fd758e..6c973c8 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/BroadcastReceivers/ServeCancelAction.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/BroadcastReceivers/ServeCancelAction.java
@@ -5,7 +5,6 @@
import android.content.Intent;
import ca.pkay.rcloneexplorer.Services.StreamingService;
-import ca.pkay.rcloneexplorer.Services.UploadService;
public class ServeCancelAction extends BroadcastReceiver {
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/BroadcastReceivers/UploadCancelAction.java b/app/src/main/java/ca/pkay/rcloneexplorer/BroadcastReceivers/UploadCancelAction.java
index d0db8d4..a04b3fd 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/BroadcastReceivers/UploadCancelAction.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/BroadcastReceivers/UploadCancelAction.java
@@ -4,7 +4,6 @@
import android.content.Context;
import android.content.Intent;
-import ca.pkay.rcloneexplorer.Services.DownloadService;
import ca.pkay.rcloneexplorer.Services.UploadService;
public class UploadCancelAction extends BroadcastReceiver {
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/FileComparators.java b/app/src/main/java/ca/pkay/rcloneexplorer/FileComparators.java
index 8d19362..5b353d2 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/FileComparators.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/FileComparators.java
@@ -48,13 +48,7 @@ public int compare(FileItem fileItem, FileItem t1) {
return fileItem.getName().compareTo(t1.getName());
}
- if (fileItem.getSize() == t1.getSize()) {
- return 0;
- } else if (fileItem.getSize() > t1.getSize()) {
- return -1;
- } else {
- return 1;
- }
+ return Long.compare(t1.getSize(), fileItem.getSize());
}
}
@@ -72,13 +66,7 @@ public int compare(FileItem fileItem, FileItem t1) {
return fileItem.getName().compareTo(t1.getName());
}
- if (fileItem.getSize() == t1.getSize()) {
- return 0;
- } else if (fileItem.getSize() > t1.getSize()) {
- return 1;
- } else {
- return -1;
- }
+ return Long.compare(fileItem.getSize(), t1.getSize());
}
}
@@ -92,13 +80,7 @@ public int compare(FileItem fileItem, FileItem t1) {
return 1;
}
- if (fileItem.getModTime() == t1.getModTime()) {
- return 0;
- } else if (fileItem.getModTime() > t1.getModTime()) {
- return -1;
- } else {
- return 1;
- }
+ return Long.compare(t1.getModTime(), fileItem.getModTime());
}
}
@@ -112,13 +94,7 @@ public int compare(FileItem fileItem, FileItem t1) {
return 1;
}
- if (fileItem.getModTime() == t1.getModTime()) {
- return 0;
- } else if (fileItem.getModTime() > t1.getModTime()) {
- return 1;
- } else {
- return -1;
- }
+ return Long.compare(fileItem.getModTime(), t1.getModTime());
}
}
}
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/Fragments/FileExplorerFragment.java b/app/src/main/java/ca/pkay/rcloneexplorer/Fragments/FileExplorerFragment.java
index 7061ef3..6223c36 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/Fragments/FileExplorerFragment.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/Fragments/FileExplorerFragment.java
@@ -157,7 +157,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
swipeRefreshLayout = view.findViewById(R.id.file_explorer_srl);
swipeRefreshLayout.setOnRefreshListener(this);
- if (null != directoryContent && null != fetchDirectoryTask) {
+ if (directoryContent != null && fetchDirectoryTask != null) {
swipeRefreshLayout.setRefreshing(false);
} else {
swipeRefreshLayout.setRefreshing(true);
@@ -180,10 +180,10 @@ public void onClick(View v) {
}
});
fab.addFabOptionItem(new SpeedDialActionItem.Builder(R.id.fab_upload, R.drawable.ic_file_upload)
- .setLabel("Upload Files")
+ .setLabel(getString(R.string.fab_upload_files))
.create());
fab.addFabOptionItem(new SpeedDialActionItem.Builder(R.id.fab_add_folder, R.drawable.ic_create_new_folder)
- .setLabel("New Folder")
+ .setLabel(getString(R.string.fab_new_folder))
.create());
setFabClickListeners();
@@ -266,7 +266,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
*/
@Override
public void onRefresh() {
- if (null != fetchDirectoryTask) {
+ if (fetchDirectoryTask != null) {
fetchDirectoryTask.cancel(true);
}
fetchDirectoryTask = new FetchDirectoryContent().execute();
@@ -293,63 +293,42 @@ private void setBottomBarClickListeners(final View view) {
view.findViewById(R.id.file_download).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- onDownloadClicked();
+ downloadClicked();
}
});
view.findViewById(R.id.file_move).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- onMoveClicked();
+ moveClicked();
}
});
view.findViewById(R.id.file_rename).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- onRenameClicked();
+ renameClicked();
}
});
view.findViewById(R.id.file_delete).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- onDeleteClicked();
+ deleteClicked();
}
});
view.findViewById(R.id.cancel_move).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- ((FragmentActivity) context).setTitle(remoteType);
- recyclerViewAdapter.setMoveMode(false);
- isInMoveMode = false;
- hideMoveBar();
- fab.show();
- fab.setVisibility(View.VISIBLE);
- ((FragmentActivity) context).findViewById(R.id.action_select_all).setVisibility(View.VISIBLE);
- recyclerViewAdapter.refreshData();
+ cancelMoveClicked();
}
});
view.findViewById(R.id.select_move).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- ((FragmentActivity) context).setTitle(remoteType);
- hideMoveBar();
- fab.show();
- fab.setVisibility(View.VISIBLE);
- ((FragmentActivity) context).findViewById(R.id.action_select_all).setVisibility(View.VISIBLE);
- recyclerViewAdapter.setMoveMode(false);
- isInMoveMode = false;
- String oldPath = moveList.get(0).getPath();
- int index = oldPath.lastIndexOf(moveList.get(0).getName());
- if (index > 0) {
- directoryCache.remove(moveList.get(0).getPath().substring(0, index - 1));
- } else {
- directoryCache.remove("//" + remote);
- }
- new MoveTask().execute();
+ moveLocationSelected();
}
});
@@ -361,6 +340,35 @@ public void onClick(View v) {
});
}
+ private void cancelMoveClicked() {
+ ((FragmentActivity) context).setTitle(remoteType);
+ recyclerViewAdapter.setMoveMode(false);
+ isInMoveMode = false;
+ hideMoveBar();
+ fab.show();
+ fab.setVisibility(View.VISIBLE);
+ ((FragmentActivity) context).findViewById(R.id.action_select_all).setVisibility(View.VISIBLE);
+ recyclerViewAdapter.refreshData();
+ }
+
+ private void moveLocationSelected() {
+ ((FragmentActivity) context).setTitle(remoteType);
+ hideMoveBar();
+ fab.show();
+ fab.setVisibility(View.VISIBLE);
+ ((FragmentActivity) context).findViewById(R.id.action_select_all).setVisibility(View.VISIBLE);
+ recyclerViewAdapter.setMoveMode(false);
+ isInMoveMode = false;
+ String oldPath = moveList.get(0).getPath();
+ int index = oldPath.lastIndexOf(moveList.get(0).getName());
+ if (index > 0) {
+ directoryCache.remove(moveList.get(0).getPath().substring(0, index - 1));
+ } else {
+ directoryCache.remove("//" + remote);
+ }
+ new MoveTask().execute();
+ }
+
private void showSortMenu() {
DroppyMenuPopup droppyMenu;
DroppyMenuPopup.Builder droppyBuilder = new DroppyMenuPopup.Builder(getContext(), ((FragmentActivity) context).findViewById(R.id.action_sort));
@@ -495,8 +503,8 @@ public void onFileClicked(FileItem fileItem) {
new DownloadAndOpen().execute(fileItem);
} else {
new MaterialDialog.Builder(context)
- .title("Max file size for streaming exceeded")
- .neutralText("Okay")
+ .title(R.string.max_streaming_size_exceeded)
+ .neutralText(R.string.okay_confirmation)
.show();
}
}
@@ -508,7 +516,7 @@ public void onDirectoryClicked(FileItem fileItem) {
pathStack.push(path);
directoryCache.put(path, new ArrayList<>(directoryContent));
- if (null != fetchDirectoryTask) {
+ if (fetchDirectoryTask != null) {
fetchDirectoryTask.cancel(true);
}
if (directoryCache.containsKey(fileItem.getPath())) {
@@ -530,7 +538,7 @@ public void onFilesSelected(boolean longClick) {
int numOfSelected = recyclerViewAdapter.getNumberOfSelectedItems();
if (numOfSelected > 0) { // something is selected
- ((FragmentActivity) context).setTitle(numOfSelected + " selected");
+ ((FragmentActivity) context).setTitle(numOfSelected + " " + getString(R.string.selected));
showBottomBar();
fab.hide();
fab.setVisibility(View.INVISIBLE);
@@ -601,7 +609,7 @@ private void hideMoveBar() {
moveBar.setVisibility(View.GONE);
}
- private void onDeleteClicked() {
+ private void deleteClicked() {
if (!recyclerViewAdapter.isInSelectMode()) {
return;
}
@@ -613,9 +621,9 @@ private void onDeleteClicked() {
new MaterialDialog.Builder(context)
.title(title)
.content(content)
- .icon(context.getDrawable(R.drawable.ic_warning))
- .negativeText("Cancel")
- .positiveText("Delete")
+ .icon(getResources().getDrawable(R.drawable.ic_warning))
+ .negativeText(getResources().getString(R.string.cancel))
+ .positiveText(getResources().getString(R.string.delete))
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
@@ -626,7 +634,7 @@ public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which)
.show();
}
- private void onRenameClicked() {
+ private void renameClicked() {
if (!recyclerViewAdapter.isInSelectMode() || recyclerViewAdapter.getNumberOfSelectedItems() > 1) {
return;
}
@@ -635,8 +643,8 @@ private void onRenameClicked() {
final FileItem renameItem = list.get(0);
new MaterialDialog.Builder(context)
- .title("Rename a file")
- .content("Please type new file name")
+ .title(R.string.rename_file)
+ .content(R.string.type_new_file_name)
.input(null, renameItem.getName(), new MaterialDialog.InputCallback() {
@Override
public void onInput(@NonNull MaterialDialog dialog, CharSequence input) {
@@ -653,11 +661,11 @@ public void onInput(@NonNull MaterialDialog dialog, CharSequence input) {
new RenameFileTask().execute(renameItem.getPath(), newFilePath);
}
})
- .negativeText("Cancel")
+ .negativeText(getResources().getString(R.string.cancel))
.show();
}
- private void onDownloadClicked() {
+ private void downloadClicked() {
if (!recyclerViewAdapter.isInSelectMode()) {
return;
}
@@ -668,7 +676,7 @@ private void onDownloadClicked() {
exFilePicker.start(this, EX_FILE_PICKER_DOWNLOAD_RESULT);
}
- private void onMoveClicked() {
+ private void moveClicked() {
if (recyclerViewAdapter.getNumberOfSelectedItems() < 1) {
return;
}
@@ -676,7 +684,7 @@ private void onMoveClicked() {
recyclerViewAdapter.cancelSelection();
recyclerViewAdapter.setMoveMode(true);
isInMoveMode = true;
- ((FragmentActivity) context).setTitle("Select destination");
+ ((FragmentActivity) context).setTitle(getString(R.string.select_destination));
((FragmentActivity) context).findViewById(R.id.move_bar).setVisibility(View.VISIBLE);
((FragmentActivity) context).findViewById(R.id.action_select_all).setVisibility(View.GONE);
fab.hide();
@@ -685,9 +693,9 @@ private void onMoveClicked() {
private void onCreateNewDirectory() {
new MaterialDialog.Builder(context)
- .title("Create new folder")
- .content("Please type new folder name")
- .negativeText("Cancel")
+ .title(R.string.create_new_folder)
+ .content(R.string.type_new_folder_name)
+ .negativeText(getResources().getString(R.string.cancel))
.input(null, null, new MaterialDialog.InputCallback() {
@Override
public void onInput(@NonNull MaterialDialog dialog, CharSequence input) {
@@ -899,11 +907,11 @@ private void cancelProcess() {
protected void onPreExecute() {
super.onPreExecute();
materialDialog = new MaterialDialog.Builder(context)
- .title("Loading file")
- .content("Please wait")
+ .title(R.string.loading_file)
+ .content(R.string.please_wait)
.cancelable(false)
.progress(true, 0)
- .negativeText("Cancel")
+ .negativeText(getResources().getString(R.string.cancel))
.onNegative(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/Fragments/RemotesFragment.java b/app/src/main/java/ca/pkay/rcloneexplorer/Fragments/RemotesFragment.java
index fd339cd..2d2dca7 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/Fragments/RemotesFragment.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/Fragments/RemotesFragment.java
@@ -2,8 +2,10 @@
import android.content.Context;
import android.os.Bundle;
+import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
@@ -24,6 +26,7 @@ public class RemotesFragment extends Fragment {
private Rclone rclone;
private List remotes;
private OnRemoteClickListener clickListener;
+ private Context context;
/**
* Mandatory empty constructor for the fragment manager to instantiate the
@@ -41,22 +44,23 @@ public static RemotesFragment newInstance() {
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- getActivity().setTitle("Remotes");
+ ((FragmentActivity) context).setTitle(getString(R.string.remotes_toolbar_title));
rclone = new Rclone(getContext());
remotes = rclone.getRemotes();
}
@Nullable
@Override
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view;
if (!rclone.isConfigFileCreated()) {
- view = inflater.inflate(R.layout.empty_state_config_file2, container, false);
+ view = inflater.inflate(R.layout.empty_state_config_file, container, false);
view.findViewById(R.id.empty_state_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- ((MainActivity)getActivity()).importConfigFile();
+ if (getActivity() != null) {
+ ((MainActivity) getActivity()).importConfigFile();
+ }
}
});
return view;
@@ -76,6 +80,7 @@ public void onClick(View view) {
@Override
public void onAttach(Context context) {
super.onAttach(context);
+ this.context = context;
if (context instanceof OnRemoteClickListener) {
clickListener = (OnRemoteClickListener) context;
} else {
@@ -86,6 +91,7 @@ public void onAttach(Context context) {
@Override
public void onDetach() {
super.onDetach();
+ context = null;
clickListener = null;
}
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/Items/FileItem.java b/app/src/main/java/ca/pkay/rcloneexplorer/Items/FileItem.java
index 71985cd..125e9b7 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/Items/FileItem.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/Items/FileItem.java
@@ -2,10 +2,8 @@
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
import android.text.format.DateUtils;
-import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/MainActivity.java b/app/src/main/java/ca/pkay/rcloneexplorer/MainActivity.java
index 0419ef9..17d9470 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/MainActivity.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/MainActivity.java
@@ -10,23 +10,18 @@
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
-import android.support.design.widget.FloatingActionButton;
-import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
-import android.util.Log;
-import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
-import android.view.Menu;
import android.view.MenuItem;
import java.io.File;
@@ -35,7 +30,6 @@
import ca.pkay.rcloneexplorer.BroadcastReceivers.NetworkStateReceiver;
import ca.pkay.rcloneexplorer.Fragments.FileExplorerFragment;
import ca.pkay.rcloneexplorer.Fragments.RemotesFragment;
-import ca.pkay.rcloneexplorer.Items.FileItem;
import ca.pkay.rcloneexplorer.Items.RemoteItem;
public class MainActivity extends AppCompatActivity
@@ -69,6 +63,7 @@ protected void onCreate(Bundle savedInstanceState) {
rclone = new Rclone(this);
+
networkStateReceiver = new NetworkStateReceiver();
final IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
@@ -114,7 +109,7 @@ public void onBackPressed() {
DrawerLayout drawer = findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
- } else if (null != fragment && fragment instanceof FileExplorerFragment) {
+ } else if (fragment != null && fragment instanceof FileExplorerFragment) {
if (((FileExplorerFragment) fragment).onBackButtonPressed())
return;
}
@@ -167,16 +162,16 @@ private void startRemotesFragment() {
private void warnUserAboutOverwritingConfiguration() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("Replace current configuration file?");
- builder.setMessage("Your current configuration will be lost");
- builder.setPositiveButton("Continue", new DialogInterface.OnClickListener() {
+ builder.setTitle(R.string.replace_config_file_question);
+ builder.setMessage(R.string.config_file_lost_statement);
+ builder.setPositiveButton(R.string.continue_statement, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
importConfigFile();
}
});
- builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+ builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/RecyclerViewAdapters/FileExplorerRecyclerViewAdapter.java b/app/src/main/java/ca/pkay/rcloneexplorer/RecyclerViewAdapters/FileExplorerRecyclerViewAdapter.java
index e99bad0..fdf3f46 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/RecyclerViewAdapters/FileExplorerRecyclerViewAdapter.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/RecyclerViewAdapters/FileExplorerRecyclerViewAdapter.java
@@ -1,5 +1,6 @@
package ca.pkay.rcloneexplorer.RecyclerViewAdapters;
+import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
@@ -37,32 +38,31 @@ public FileExplorerRecyclerViewAdapter(List files, View emptyView, OnC
isInMoveMode = false;
}
+ @NonNull
@Override
- public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_file_explorer_item, parent, false);
return new ViewHolder(view);
}
@Override
- public void onBindViewHolder(final ViewHolder holder, int position) {
+ public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
final FileItem item = files.get(position);
holder.fileItem = item;
if (item.isDir()) {
holder.fileIcon.setImageResource(R.drawable.ic_folder);
+ holder.fileSize.setVisibility(View.GONE);
+ holder.interpunct.setVisibility(View.GONE);
} else {
holder.fileIcon.setImageResource(R.drawable.ic_file);
- }
- holder.fileName.setText(item.getName());
- holder.fileModTime.setText(item.getHumanReadableModTime());
- if (!item.isDir()) {
holder.fileSize.setText(item.getHumanReadableSize());
holder.fileSize.setVisibility(View.VISIBLE);
holder.interpunct.setVisibility(View.VISIBLE);
- } else {
- holder.fileSize.setVisibility(View.GONE);
- holder.interpunct.setVisibility(View.GONE);
}
+ holder.fileName.setText(item.getName());
+ holder.fileModTime.setText(item.getHumanReadableModTime());
+
if (isInSelectMode) {
if (selectedItems.contains(item)) {
holder.view.setBackgroundColor(holder.view.getResources().getColor(R.color.colorPrimaryLight));
@@ -230,7 +230,7 @@ public class ViewHolder extends RecyclerView.ViewHolder {
public final TextView interpunct;
public FileItem fileItem;
- public ViewHolder(View itemView) {
+ ViewHolder(View itemView) {
super(itemView);
this.view = itemView;
this.fileIcon = view.findViewById(R.id.file_icon);
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/RecyclerViewAdapters/RemotesRecyclerViewAdapter.java b/app/src/main/java/ca/pkay/rcloneexplorer/RecyclerViewAdapters/RemotesRecyclerViewAdapter.java
index ab57884..a209c7c 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/RecyclerViewAdapters/RemotesRecyclerViewAdapter.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/RecyclerViewAdapters/RemotesRecyclerViewAdapter.java
@@ -2,6 +2,7 @@
import android.graphics.Color;
+import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
@@ -12,10 +13,9 @@
import com.mikepenz.community_material_typeface_library.CommunityMaterial;
import com.mikepenz.fontawesome_typeface_library.FontAwesome;
import com.mikepenz.iconics.IconicsDrawable;
+import com.mikepenz.octicons_typeface_library.Octicons;
-import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import ca.pkay.rcloneexplorer.Fragments.RemotesFragment;
@@ -34,14 +34,15 @@ public RemotesRecyclerViewAdapter(List remotes, RemotesFragment.OnRe
this.clickListener = clickListener;
}
+ @NonNull
@Override
- public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_remotes_item, parent, false);
return new ViewHolder(view);
}
@Override
- public void onBindViewHolder(final ViewHolder holder, final int position) {
+ public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
String remoteName = remotes.get(position).getName();
String remoteType = remotes.get(position).getType();
holder.remoteName = remoteName;
@@ -79,7 +80,7 @@ public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.ivIcon.setImageDrawable(new IconicsDrawable(view.getContext()).icon(CommunityMaterial.Icon.cmd_box).color(Color.BLACK).sizeDp(24));
break;
case "sftp":
- holder.ivIcon.setImageDrawable(new IconicsDrawable(view.getContext()).icon(FontAwesome.Icon.faw_terminal).color(Color.BLACK).sizeDp(24));
+ holder.ivIcon.setImageDrawable(new IconicsDrawable(view.getContext()).icon(Octicons.Icon.oct_terminal).color(Color.BLACK).sizeDp(24));
break;
default:
holder.ivIcon.setImageDrawable(new IconicsDrawable(view.getContext()).icon(CommunityMaterial.Icon.cmd_cloud).color(Color.BLACK).sizeDp(24));
@@ -108,7 +109,7 @@ public class ViewHolder extends RecyclerView.ViewHolder {
public final TextView tvName;
public String remoteName;
- public ViewHolder(View itemView) {
+ ViewHolder(View itemView) {
super(itemView);
this.view = itemView;
this.ivIcon = view.findViewById(R.id.remoteIcon);
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/Services/DownloadService.java b/app/src/main/java/ca/pkay/rcloneexplorer/Services/DownloadService.java
index d8f510b..a37f17f 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/Services/DownloadService.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/Services/DownloadService.java
@@ -9,7 +9,6 @@
import android.os.Build;
import android.support.annotation.Nullable;
import android.support.v4.app.NotificationCompat;
-import android.util.Log;
import java.util.List;
@@ -53,13 +52,17 @@ protected void onHandleIntent(@Nullable Intent intent) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(android.R.drawable.stat_sys_download)
- .setContentTitle("Download")
+ .setContentTitle(getString(R.string.download_service_notification_title))
.setPriority(NotificationCompat.PRIORITY_LOW)
.setContentIntent(pendingIntent)
- .addAction(R.drawable.ic_cancel_download, "Cancel", cancelPendingIntent);
+ .addAction(R.drawable.ic_cancel_download, getString(R.string.cancel), cancelPendingIntent);
startForeground(1, builder.build());
+ if (intent == null) {
+ return;
+ }
+
final List downloadList = intent.getParcelableArrayListExtra(DOWNLOAD_LIST_ARG);
final String downloadPath = intent.getStringExtra(DOWNLOAD_PATH_ARG);
final String remote = intent.getStringExtra(REMOTE_ARG);
@@ -78,11 +81,13 @@ protected void onHandleIntent(@Nullable Intent intent) {
NotificationCompat.Builder builder1 = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(android.R.drawable.stat_sys_download_done)
- .setContentTitle("Download complete")
+ .setContentTitle(getString(R.string.download_complete))
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.notify(2, builder1.build());
+ if (notificationManager != null) {
+ notificationManager.notify(2, builder1.build());
+ }
}
@Override
@@ -98,7 +103,7 @@ private void setNotificationChannel() {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_LOW);
- channel.setDescription("File downloads");
+ channel.setDescription(getString(R.string.download_service_notification_description));
// Register the channel with the system
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(channel);
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/Services/StreamingService.java b/app/src/main/java/ca/pkay/rcloneexplorer/Services/StreamingService.java
index 88ff068..0abfa75 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/Services/StreamingService.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/Services/StreamingService.java
@@ -43,6 +43,9 @@ public void onCreate() {
@Override
protected void onHandleIntent(@Nullable Intent intent) {
+ if (intent == null) {
+ return;
+ }
final String servePath = intent.getStringExtra(SERVE_PATH_ARG);
final String remote = intent.getStringExtra(REMOTE_ARG);
final Boolean showNotificationText = intent.getBooleanExtra(SHOW_NOTIFICATION_TEXT, false);
@@ -55,10 +58,10 @@ protected void onHandleIntent(@Nullable Intent intent) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_http)
- .setContentTitle("Streaming Service")
+ .setContentTitle(getString(R.string.streaming_service_notification_title))
.setPriority(NotificationCompat.PRIORITY_LOW)
.setContentIntent(pendingIntent)
- .addAction(R.drawable.ic_cancel_download, "Cancel", cancelPendingIntent);
+ .addAction(R.drawable.ic_cancel_download, getString(R.string.cancel), cancelPendingIntent);
if (showNotificationText) {
Uri uri = Uri.parse("http://127.0.0.1:8080");
@@ -66,7 +69,7 @@ protected void onHandleIntent(@Nullable Intent intent) {
webPageIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent webPagePendingIntent = PendingIntent.getActivity(this, 0, webPageIntent, 0);
builder.setContentIntent(webPagePendingIntent);
- builder.setContentText("Serving on http://127.0.0.1:8080");
+ builder.setContentText(getString(R.string.streaming_service_notification_content));
}
startForeground(1, builder.build());
@@ -92,10 +95,12 @@ private void setNotificationChannel() {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_LOW);
- channel.setDescription("Streaming service");
+ channel.setDescription(getString(R.string.streaming_service_notification_channel_description));
// Register the channel with the system
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.createNotificationChannel(channel);
+ if (notificationManager != null) {
+ notificationManager.createNotificationChannel(channel);
+ }
}
}
}
diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/Services/UploadService.java b/app/src/main/java/ca/pkay/rcloneexplorer/Services/UploadService.java
index a4ea329..99cd56c 100644
--- a/app/src/main/java/ca/pkay/rcloneexplorer/Services/UploadService.java
+++ b/app/src/main/java/ca/pkay/rcloneexplorer/Services/UploadService.java
@@ -53,13 +53,16 @@ protected void onHandleIntent(@Nullable Intent intent) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(android.R.drawable.stat_sys_upload)
- .setContentTitle("Upload")
+ .setContentTitle(getString(R.string.upload_service_notification_title))
.setPriority(NotificationCompat.PRIORITY_LOW)
.setContentIntent(pendingIntent)
- .addAction(R.drawable.ic_cancel_download, "Cancel", cancelPendingIntent);
+ .addAction(R.drawable.ic_cancel_download, getString(R.string.cancel), cancelPendingIntent);
startForeground(10, builder.build());
+ if (intent == null) {
+ return;
+ }
final String uploadPath = intent.getStringExtra(UPLOAD_PATH_ARG);
final ArrayList uploadList = intent.getStringArrayListExtra(LOCAL_PATH_ARG);
final String remote = intent.getStringExtra(REMOTE_ARG);
@@ -79,11 +82,13 @@ protected void onHandleIntent(@Nullable Intent intent) {
NotificationCompat.Builder builder1 = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(android.R.drawable.stat_sys_upload_done)
- .setContentTitle("Upload complete")
+ .setContentTitle(getString(R.string.upload_complete))
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.notify(20, builder1.build());
+ if (notificationManager != null) {
+ notificationManager.notify(20, builder1.build());
+ }
}
@Override
@@ -99,10 +104,12 @@ private void setNotificationChannel() {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_LOW);
- channel.setDescription("File uploads");
+ channel.setDescription(getString(R.string.upload_service_notification_channel_description));
// Register the channel with the system
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.createNotificationChannel(channel);
+ if (notificationManager != null) {
+ notificationManager.createNotificationChannel(channel);
+ }
}
}
}
diff --git a/app/src/main/res/drawable-hdpi/empty_desert.png b/app/src/main/res/drawable-hdpi/empty_desert.png
deleted file mode 100644
index b8de603..0000000
Binary files a/app/src/main/res/drawable-hdpi/empty_desert.png and /dev/null differ
diff --git a/app/src/main/res/drawable-land-hdpi/empty_desert.png b/app/src/main/res/drawable-land-hdpi/empty_desert.png
deleted file mode 100644
index ea6f365..0000000
Binary files a/app/src/main/res/drawable-land-hdpi/empty_desert.png and /dev/null differ
diff --git a/app/src/main/res/drawable-land-mdpi/empty_desert.png b/app/src/main/res/drawable-land-mdpi/empty_desert.png
deleted file mode 100644
index 206f295..0000000
Binary files a/app/src/main/res/drawable-land-mdpi/empty_desert.png and /dev/null differ
diff --git a/app/src/main/res/drawable-land-xhdpi/empty_desert.png b/app/src/main/res/drawable-land-xhdpi/empty_desert.png
deleted file mode 100644
index f5d460a..0000000
Binary files a/app/src/main/res/drawable-land-xhdpi/empty_desert.png and /dev/null differ
diff --git a/app/src/main/res/drawable-land-xxhdpi/empty_desert.png b/app/src/main/res/drawable-land-xxhdpi/empty_desert.png
deleted file mode 100644
index a03ccd0..0000000
Binary files a/app/src/main/res/drawable-land-xxhdpi/empty_desert.png and /dev/null differ
diff --git a/app/src/main/res/drawable-land-xxxhdpi/empty_desert.png b/app/src/main/res/drawable-land-xxxhdpi/empty_desert.png
deleted file mode 100644
index 586595c..0000000
Binary files a/app/src/main/res/drawable-land-xxxhdpi/empty_desert.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/empty_desert.png b/app/src/main/res/drawable-mdpi/empty_desert.png
deleted file mode 100644
index d8eb66c..0000000
Binary files a/app/src/main/res/drawable-mdpi/empty_desert.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/empty_desert.png b/app/src/main/res/drawable-xhdpi/empty_desert.png
deleted file mode 100644
index 7b8c519..0000000
Binary files a/app/src/main/res/drawable-xhdpi/empty_desert.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/empty_desert.png b/app/src/main/res/drawable-xxhdpi/empty_desert.png
deleted file mode 100644
index 74d7f08..0000000
Binary files a/app/src/main/res/drawable-xxhdpi/empty_desert.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/empty_desert.png b/app/src/main/res/drawable-xxxhdpi/empty_desert.png
deleted file mode 100644
index 56d160d..0000000
Binary files a/app/src/main/res/drawable-xxxhdpi/empty_desert.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_add_white_24dp.xml b/app/src/main/res/drawable/ic_add_white_24dp.xml
deleted file mode 100644
index b5b5ba4..0000000
--- a/app/src/main/res/drawable/ic_add_white_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_file_download_notification.xml b/app/src/main/res/drawable/ic_file_download_notification.xml
deleted file mode 100644
index 492b41d..0000000
--- a/app/src/main/res/drawable/ic_file_download_notification.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_libraries.xml b/app/src/main/res/drawable/ic_libraries.xml
index a51097e..811d5ac 100644
--- a/app/src/main/res/drawable/ic_libraries.xml
+++ b/app/src/main/res/drawable/ic_libraries.xml
@@ -5,5 +5,5 @@
android:viewportHeight="24.0">
+ android:pathData="M18,2H6c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4c0,-1.1 -0.9,-2 -2,-2zM6,4h5v8l-2.5,-1.5L6,12V4z"/>
diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml
index d77d931..41a9ec1 100644
--- a/app/src/main/res/layout/activity_about.xml
+++ b/app/src/main/res/layout/activity_about.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="#DDDDDD"
+ android:background="@color/grey"
tools:context=".AboutActivity">
-
-
diff --git a/app/src/main/res/layout/bottom_bar.xml b/app/src/main/res/layout/bottom_bar.xml
index e392157..a85917a 100644
--- a/app/src/main/res/layout/bottom_bar.xml
+++ b/app/src/main/res/layout/bottom_bar.xml
@@ -11,7 +11,8 @@
android:visibility="gone"
android:clickable="true"
tools:showIn="@layout/fragment_file_explorer_list"
- tools:visibility="visible">
+ tools:visibility="visible"
+ android:focusable="true">
+ android:src="@drawable/ic_file_download"
+ android:contentDescription="@string/download" />
@@ -65,7 +67,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="6dp"
- android:src="@drawable/ic_folder_move"/>
+ android:src="@drawable/ic_folder_move"
+ android:contentDescription="@string/move" />
+ android:text="@string/move"/>
+ android:src="@drawable/ic_edit"
+ android:contentDescription="@string/rename" />
+ android:text="@string/rename"/>
+ android:src="@drawable/ic_delete"
+ android:contentDescription="@string/delete" />
+ android:text="@string/delete"/>
+ android:layout_gravity="center_vertical"
+ android:contentDescription="@string/app_version" />
+ android:paddingStart="32dp"
+ android:paddingEnd="0dp">
+ android:gravity="center_vertical"
+ android:contentDescription="@string/rclone_version" />
+ android:paddingStart="32dp"
+ android:paddingEnd="0dp">
+ android:src="@drawable/ic_changelog"
+ android:contentDescription="@string/changelog" />
@@ -137,13 +143,15 @@
+ android:src="@drawable/ic_libraries"
+ android:contentDescription="@string/credits_libraries" />
@@ -161,13 +169,16 @@
+ android:src="@drawable/ic_mark_github"
+ android:contentDescription="@string/star_on_github" />
+
+ android:paddingStart="32dp"
+ android:paddingEnd="0dp"/>
+ android:src="@drawable/ic_bug_report"
+ android:contentDescription="@string/report_a_bug" />
@@ -214,7 +227,7 @@
+ android:src="@drawable/ic_person_outline"
+ android:contentDescription="@string/author_name" />
+ android:paddingStart="32dp"
+ android:paddingEnd="0dp"/>
+ android:src="@drawable/ic_mark_github"
+ android:contentDescription="@string/follow_on_github" />
+ android:paddingStart="32dp"
+ android:paddingEnd="0dp"/>
diff --git a/app/src/main/res/layout/empty_directory_state.xml b/app/src/main/res/layout/empty_directory_state.xml
index c998699..9387692 100644
--- a/app/src/main/res/layout/empty_directory_state.xml
+++ b/app/src/main/res/layout/empty_directory_state.xml
@@ -24,13 +24,14 @@
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/ic_folder_open"
- android:layout_gravity="center"/>
+ android:layout_gravity="center"
+ android:contentDescription="@string/empty_folder" />
diff --git a/app/src/main/res/layout/empty_state_config_file.xml b/app/src/main/res/layout/empty_state_config_file.xml
index e418894..8d27fbf 100644
--- a/app/src/main/res/layout/empty_state_config_file.xml
+++ b/app/src/main/res/layout/empty_state_config_file.xml
@@ -15,7 +15,7 @@
android:src="@drawable/ic_empty_box"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
- android:contentDescription="Empty state icon" />
+ android:contentDescription="@string/empty_state_icon" />
@@ -34,7 +34,7 @@
android:layout_height="wrap_content"
android:layout_below="@+id/empty_state_title"
android:layout_centerHorizontal="true"
- android:text="No configuration file found"
+ android:text="@string/no_config_file"
android:layout_marginTop="8dp" />
+ android:text="@string/import_configuration"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/empty_state_config_file2.xml b/app/src/main/res/layout/empty_state_config_file2.xml
deleted file mode 100644
index d163f67..0000000
--- a/app/src/main/res/layout/empty_state_config_file2.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_file_explorer_item.xml b/app/src/main/res/layout/fragment_file_explorer_item.xml
index 9423933..891a351 100644
--- a/app/src/main/res/layout/fragment_file_explorer_item.xml
+++ b/app/src/main/res/layout/fragment_file_explorer_item.xml
@@ -20,7 +20,8 @@
android:layout_height="wrap_content"
android:padding="16dp"
tools:src="@drawable/ic_file"
- android:layout_gravity="center_vertical"/>
+ android:layout_gravity="center_vertical"
+ android:contentDescription="@string/file_icon" />
+ android:text="@string/interpunct"/>
+ tools:visibility="visible"
+ android:focusable="true">
+ android:src="@drawable/ic_create_new_folder"
+ android:contentDescription="@string/new_folder" />
+ app:srcCompat="@mipmap/ic_launcher_round"
+ android:contentDescription="@string/app_icon" />
diff --git a/app/src/main/res/layout/no_internet_state.xml b/app/src/main/res/layout/no_internet_state.xml
index 6d14065..4660a94 100644
--- a/app/src/main/res/layout/no_internet_state.xml
+++ b/app/src/main/res/layout/no_internet_state.xml
@@ -23,13 +23,14 @@
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/ic_signal_wifi_off"
- android:layout_gravity="center"/>
+ android:layout_gravity="center"
+ android:contentDescription="@string/no_internet_connection" />
diff --git a/app/src/main/res/menu/activity_main_drawer.xml b/app/src/main/res/menu/activity_main_drawer.xml
index 8e81fbf..e2ddb65 100644
--- a/app/src/main/res/menu/activity_main_drawer.xml
+++ b/app/src/main/res/menu/activity_main_drawer.xml
@@ -9,23 +9,23 @@
+ android:title="@string/settings">
+ android:title="@string/import_rclone_config" />
diff --git a/app/src/main/res/menu/file_explorer.xml b/app/src/main/res/menu/file_explorer.xml
index d3b1d1b..3425b67 100644
--- a/app/src/main/res/menu/file_explorer.xml
+++ b/app/src/main/res/menu/file_explorer.xml
@@ -4,20 +4,20 @@
\ No newline at end of file
diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml
deleted file mode 100644
index a2411e3..0000000
--- a/app/src/main/res/menu/main.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
diff --git a/app/src/main/res/menu/sort_menu.xml b/app/src/main/res/menu/sort_menu.xml
index 2991c01..29e0083 100644
--- a/app/src/main/res/menu/sort_menu.xml
+++ b/app/src/main/res/menu/sort_menu.xml
@@ -1,20 +1,19 @@
-