diff --git a/app/src/main/java/com/nutomic/syncthingandroid/model/FolderStatus.java b/app/src/main/java/com/nutomic/syncthingandroid/model/FolderStatus.java index 8d587da8..2f5f4d62 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/model/FolderStatus.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/model/FolderStatus.java @@ -25,5 +25,6 @@ public class FolderStatus { public String state; public String stateChanged; public long version; + public String error; public String watchError; } diff --git a/app/src/main/java/com/nutomic/syncthingandroid/views/FoldersAdapter.java b/app/src/main/java/com/nutomic/syncthingandroid/views/FoldersAdapter.java index 0c262023..d85f88a9 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/views/FoldersAdapter.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/views/FoldersAdapter.java @@ -97,9 +97,6 @@ public class FoldersAdapter extends ArrayAdapter { return; } - int percentage = (folderStatus.globalBytes != 0) - ? Math.round(100 * folderStatus.inSyncBytes / folderStatus.globalBytes) - : 100; long neededItems = folderStatus.needFiles + folderStatus.needDirectories + folderStatus.needSymlinks + folderStatus.needDeletes; boolean outOfSync = folderStatus.state.equals("idle") && neededItems > 0; boolean overrideButtonVisible = (folder.type == Constants.FOLDER_TYPE_SEND_ONLY) && outOfSync; @@ -112,7 +109,7 @@ public class FoldersAdapter extends ArrayAdapter { binding.state.setText(mContext.getString(R.string.state_paused)); binding.state.setTextColor(ContextCompat.getColor(mContext, R.color.text_black)); } else { - binding.state.setText(getLocalizedState(mContext, folderStatus.state, percentage)); + binding.state.setText(getLocalizedState(mContext, folderStatus)); switch(folderStatus.state) { case "idle": binding.state.setTextColor(ContextCompat.getColor(mContext, R.color.text_green)); @@ -121,6 +118,7 @@ public class FoldersAdapter extends ArrayAdapter { case "syncing": binding.state.setTextColor(ContextCompat.getColor(mContext, R.color.text_blue)); break; + case "error": default: binding.state.setTextColor(ContextCompat.getColor(mContext, R.color.text_red)); } @@ -139,14 +137,26 @@ public class FoldersAdapter extends ArrayAdapter { /** * Returns the folder's state as a localized string. */ - private static String getLocalizedState(Context c, String state, int percentage) { - switch (state) { - case "idle": return c.getString(R.string.state_idle); - case "scanning": return c.getString(R.string.state_scanning); - case "syncing": return c.getString(R.string.state_syncing, percentage); - case "error": return c.getString(R.string.state_error); - case "unknown": return c.getString(R.string.state_unknown); - default: return state; + private static String getLocalizedState(Context c, FolderStatus folderStatus) { + switch (folderStatus.state) { + case "idle": + return c.getString(R.string.state_idle); + case "scanning": + return c.getString(R.string.state_scanning); + case "syncing": + int percentage = (folderStatus.globalBytes != 0) + ? Math.round(100 * folderStatus.inSyncBytes / folderStatus.globalBytes) + : 100; + return c.getString(R.string.state_syncing, percentage); + case "error": + if (TextUtils.isEmpty(folderStatus.error)) { + return c.getString(R.string.state_error); + } + return c.getString(R.string.state_error) + " (" + folderStatus.error + ")"; + case "unknown": + return c.getString(R.string.state_unknown); + default: + return folderStatus.state; } }