|
|
@ -22,7 +22,6 @@ package eu.faircode.email;
|
|
|
|
import android.app.Dialog;
|
|
|
|
import android.app.Dialog;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.SharedPreferences;
|
|
|
|
import android.content.SharedPreferences;
|
|
|
|
import android.graphics.Paint;
|
|
|
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.text.Editable;
|
|
|
|
import android.text.Editable;
|
|
|
|
import android.text.TextWatcher;
|
|
|
|
import android.text.TextWatcher;
|
|
|
@ -47,7 +46,9 @@ import org.json.JSONArray;
|
|
|
|
import org.json.JSONException;
|
|
|
|
import org.json.JSONException;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
|
|
|
|
|
|
|
|
import static android.app.Activity.RESULT_OK;
|
|
|
|
import static android.app.Activity.RESULT_OK;
|
|
|
|
|
|
|
|
|
|
|
@ -56,6 +57,9 @@ public class FragmentDialogFolder extends FragmentDialogBase {
|
|
|
|
|
|
|
|
|
|
|
|
private static final int MAX_SELECTED_FOLDERS = 5;
|
|
|
|
private static final int MAX_SELECTED_FOLDERS = 5;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final ExecutorService executor =
|
|
|
|
|
|
|
|
Helper.getBackgroundExecutor(1, "folder");
|
|
|
|
|
|
|
|
|
|
|
|
@NonNull
|
|
|
|
@NonNull
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
|
|
|
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
|
|
@ -84,6 +88,7 @@ public class FragmentDialogFolder extends FragmentDialogBase {
|
|
|
|
final TextView tvFavorite1 = dview.findViewById(R.id.tvFavorite1);
|
|
|
|
final TextView tvFavorite1 = dview.findViewById(R.id.tvFavorite1);
|
|
|
|
final TextView tvFavorite2 = dview.findViewById(R.id.tvFavorite2);
|
|
|
|
final TextView tvFavorite2 = dview.findViewById(R.id.tvFavorite2);
|
|
|
|
final TextView tvFavorite3 = dview.findViewById(R.id.tvFavorite3);
|
|
|
|
final TextView tvFavorite3 = dview.findViewById(R.id.tvFavorite3);
|
|
|
|
|
|
|
|
final ImageButton ibResetFavorites = dview.findViewById(R.id.ibResetFavorites);
|
|
|
|
final RecyclerView rvFolder = dview.findViewById(R.id.rvFolder);
|
|
|
|
final RecyclerView rvFolder = dview.findViewById(R.id.rvFolder);
|
|
|
|
final ContentLoadingProgressBar pbWait = dview.findViewById(R.id.pbWait);
|
|
|
|
final ContentLoadingProgressBar pbWait = dview.findViewById(R.id.pbWait);
|
|
|
|
final Group grpReady = dview.findViewById(R.id.grpReady);
|
|
|
|
final Group grpReady = dview.findViewById(R.id.grpReady);
|
|
|
@ -136,6 +141,8 @@ public class FragmentDialogFolder extends FragmentDialogBase {
|
|
|
|
JSONArray jarray = new JSONArray(selected_folders);
|
|
|
|
JSONArray jarray = new JSONArray(selected_folders);
|
|
|
|
prefs.edit().putString("selected_folders", jarray.toString()).apply();
|
|
|
|
prefs.edit().putString("selected_folders", jarray.toString()).apply();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
increaseSelectedCount(folder.id, context);
|
|
|
|
|
|
|
|
|
|
|
|
Bundle args = getArguments();
|
|
|
|
Bundle args = getArguments();
|
|
|
|
args.putLong("folder", folder.id);
|
|
|
|
args.putLong("folder", folder.id);
|
|
|
|
|
|
|
|
|
|
|
@ -147,10 +154,7 @@ public class FragmentDialogFolder extends FragmentDialogBase {
|
|
|
|
tvFavorite1.setVisibility(View.GONE);
|
|
|
|
tvFavorite1.setVisibility(View.GONE);
|
|
|
|
tvFavorite2.setVisibility(View.GONE);
|
|
|
|
tvFavorite2.setVisibility(View.GONE);
|
|
|
|
tvFavorite3.setVisibility(View.GONE);
|
|
|
|
tvFavorite3.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
ibResetFavorites.setVisibility(View.GONE);
|
|
|
|
tvFavorite1.setPaintFlags(tvFavorite1.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
|
|
|
|
|
|
|
|
tvFavorite2.setPaintFlags(tvFavorite2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
|
|
|
|
|
|
|
|
tvFavorite3.setPaintFlags(tvFavorite3.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
View.OnClickListener listener = new View.OnClickListener() {
|
|
|
|
View.OnClickListener listener = new View.OnClickListener() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
@ -159,6 +163,8 @@ public class FragmentDialogFolder extends FragmentDialogBase {
|
|
|
|
if (id == null)
|
|
|
|
if (id == null)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
increaseSelectedCount(id, context);
|
|
|
|
|
|
|
|
|
|
|
|
Bundle args = getArguments();
|
|
|
|
Bundle args = getArguments();
|
|
|
|
args.putLong("folder", id);
|
|
|
|
args.putLong("folder", id);
|
|
|
|
|
|
|
|
|
|
|
@ -170,6 +176,29 @@ public class FragmentDialogFolder extends FragmentDialogBase {
|
|
|
|
tvFavorite2.setOnClickListener(listener);
|
|
|
|
tvFavorite2.setOnClickListener(listener);
|
|
|
|
tvFavorite3.setOnClickListener(listener);
|
|
|
|
tvFavorite3.setOnClickListener(listener);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ibResetFavorites.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
|
|
|
tvFavorite1.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
tvFavorite2.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
tvFavorite3.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
ibResetFavorites.setVisibility(View.GONE);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final DB db = DB.getInstance(context);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
executor.submit(new Runnable() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void run() {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
db.folder().resetSelectedCount(account);
|
|
|
|
|
|
|
|
} catch (Throwable ex) {
|
|
|
|
|
|
|
|
Log.e(ex);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
rvFolder.setAdapter(adapter);
|
|
|
|
rvFolder.setAdapter(adapter);
|
|
|
|
|
|
|
|
|
|
|
|
etSearch.addTextChangedListener(new TextWatcher() {
|
|
|
|
etSearch.addTextChangedListener(new TextWatcher() {
|
|
|
@ -264,9 +293,7 @@ public class FragmentDialogFolder extends FragmentDialogBase {
|
|
|
|
if (data.folders == null || data.folders.size() == 0)
|
|
|
|
if (data.folders == null || data.folders.size() == 0)
|
|
|
|
tvNoFolder.setVisibility(View.VISIBLE);
|
|
|
|
tvNoFolder.setVisibility(View.VISIBLE);
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
adapter.setDisabled(Helper.fromLongArray(disabled));
|
|
|
|
if (data.favorites != null && data.favorites.size() > 0) {
|
|
|
|
adapter.set(data.folders);
|
|
|
|
|
|
|
|
if (data.favorites != null) {
|
|
|
|
|
|
|
|
TextView[] tv = new TextView[]{tvFavorite1, tvFavorite2, tvFavorite3};
|
|
|
|
TextView[] tv = new TextView[]{tvFavorite1, tvFavorite2, tvFavorite3};
|
|
|
|
for (int i = 0; i < data.favorites.size(); i++) {
|
|
|
|
for (int i = 0; i < data.favorites.size(); i++) {
|
|
|
|
EntityFolder favorite = data.favorites.get(i);
|
|
|
|
EntityFolder favorite = data.favorites.get(i);
|
|
|
@ -274,7 +301,13 @@ public class FragmentDialogFolder extends FragmentDialogBase {
|
|
|
|
tv[i].setText(favorite.getDisplayName(context));
|
|
|
|
tv[i].setText(favorite.getDisplayName(context));
|
|
|
|
tv[i].setVisibility(View.VISIBLE);
|
|
|
|
tv[i].setVisibility(View.VISIBLE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ibResetFavorites.setVisibility(View.VISIBLE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adapter.setDisabled(Helper.fromLongArray(disabled));
|
|
|
|
|
|
|
|
adapter.set(data.folders);
|
|
|
|
|
|
|
|
|
|
|
|
grpReady.setVisibility(View.VISIBLE);
|
|
|
|
grpReady.setVisibility(View.VISIBLE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -293,6 +326,23 @@ public class FragmentDialogFolder extends FragmentDialogBase {
|
|
|
|
.create();
|
|
|
|
.create();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static void increaseSelectedCount(Long id, Context context) {
|
|
|
|
|
|
|
|
final DB db = DB.getInstance(context);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
executor.submit(new Runnable() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void run() {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
EntityFolder folder = db.folder().getFolder(id);
|
|
|
|
|
|
|
|
if (folder != null && EntityFolder.USER.equals(folder.type))
|
|
|
|
|
|
|
|
db.folder().increaseSelectedCount(folder.id, new Date().getTime());
|
|
|
|
|
|
|
|
} catch (Throwable ex) {
|
|
|
|
|
|
|
|
Log.e(ex);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static class Data {
|
|
|
|
private static class Data {
|
|
|
|
private List<TupleFolderEx> folders;
|
|
|
|
private List<TupleFolderEx> folders;
|
|
|
|
private List<EntityFolder> favorites;
|
|
|
|
private List<EntityFolder> favorites;
|
|
|
|