mirror of https://github.com/M66B/FairEmail.git
Added menu item to create sub folders
This commit is contained in:
parent
384d1180cf
commit
bd12f769c9
|
@ -391,6 +391,8 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
|||
popupMenu.getMenu().add(Menu.NONE, R.string.title_delete_channel, 14, R.string.title_delete_channel);
|
||||
}
|
||||
}
|
||||
|
||||
popupMenu.getMenu().add(Menu.NONE, R.string.title_create_sub_folder, 15, R.string.title_create_sub_folder);
|
||||
}
|
||||
|
||||
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
|
||||
|
@ -447,6 +449,10 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
|||
onActionDeleteChannel();
|
||||
return true;
|
||||
|
||||
case R.string.title_create_sub_folder:
|
||||
onActionCreateFolder();
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -708,6 +714,14 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
|||
private void onActionDeleteChannel() {
|
||||
folder.deleteNotificationChannel(context);
|
||||
}
|
||||
|
||||
private void onActionCreateFolder() {
|
||||
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context);
|
||||
lbm.sendBroadcast(
|
||||
new Intent(ActivityView.ACTION_EDIT_FOLDER)
|
||||
.putExtra("account", folder.account)
|
||||
.putExtra("parent", folder.name));
|
||||
}
|
||||
});
|
||||
|
||||
popupMenu.show();
|
||||
|
|
|
@ -37,9 +37,11 @@ import android.widget.CheckBox;
|
|||
import android.widget.CompoundButton;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.Group;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
@ -50,6 +52,7 @@ public class FragmentFolder extends FragmentBase {
|
|||
private ViewGroup view;
|
||||
private ScrollView scroll;
|
||||
|
||||
private TextView tvParent;
|
||||
private EditText etName;
|
||||
private EditText etDisplay;
|
||||
private CheckBox cbHide;
|
||||
|
@ -66,9 +69,11 @@ public class FragmentFolder extends FragmentBase {
|
|||
private Button btnSave;
|
||||
private ContentLoadingProgressBar pbSave;
|
||||
private ContentLoadingProgressBar pbWait;
|
||||
private Group grpParent;
|
||||
|
||||
private long id = -1;
|
||||
private long account = -1;
|
||||
private String parent = null;
|
||||
private Boolean subscribed = null;
|
||||
private boolean saving = false;
|
||||
private boolean deletable = false;
|
||||
|
@ -81,6 +86,7 @@ public class FragmentFolder extends FragmentBase {
|
|||
Bundle args = getArguments();
|
||||
id = args.getLong("id", -1);
|
||||
account = args.getLong("account", -1);
|
||||
parent = args.getString("parent");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -94,6 +100,7 @@ public class FragmentFolder extends FragmentBase {
|
|||
|
||||
// Get controls
|
||||
etName = view.findViewById(R.id.etName);
|
||||
tvParent = view.findViewById(R.id.tvParent);
|
||||
etDisplay = view.findViewById(R.id.etDisplay);
|
||||
cbHide = view.findViewById(R.id.cbHide);
|
||||
cbUnified = view.findViewById(R.id.cbUnified);
|
||||
|
@ -109,6 +116,7 @@ public class FragmentFolder extends FragmentBase {
|
|||
btnSave = view.findViewById(R.id.btnSave);
|
||||
pbSave = view.findViewById(R.id.pbSave);
|
||||
pbWait = view.findViewById(R.id.pbWait);
|
||||
grpParent = view.findViewById(R.id.grpParent);
|
||||
|
||||
cbUnified.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
|
@ -153,6 +161,8 @@ public class FragmentFolder extends FragmentBase {
|
|||
});
|
||||
|
||||
// Initialize
|
||||
tvParent.setText(parent);
|
||||
grpParent.setVisibility(parent == null ? View.GONE : View.VISIBLE);
|
||||
Helper.setViewsEnabled(view, false);
|
||||
cbAutoDelete.setVisibility(View.GONE);
|
||||
btnSave.setEnabled(false);
|
||||
|
@ -166,6 +176,7 @@ public class FragmentFolder extends FragmentBase {
|
|||
Bundle args = new Bundle();
|
||||
args.putLong("id", id);
|
||||
args.putLong("account", account);
|
||||
args.putString("parent", parent);
|
||||
args.putString("name", etName.getText().toString());
|
||||
args.putString("display", etDisplay.getText().toString());
|
||||
args.putBoolean("hide", cbHide.isChecked());
|
||||
|
@ -204,6 +215,7 @@ public class FragmentFolder extends FragmentBase {
|
|||
protected Boolean onExecute(Context context, Bundle args) {
|
||||
long id = args.getLong("id");
|
||||
long aid = args.getLong("account");
|
||||
String parent = args.getString("parent");
|
||||
String name = args.getString("name");
|
||||
String display = args.getString("display");
|
||||
boolean hide = args.getBoolean("hide");
|
||||
|
@ -265,7 +277,15 @@ public class FragmentFolder extends FragmentBase {
|
|||
|
||||
if (folder == null) {
|
||||
reload = true;
|
||||
Log.i("Creating folder=" + name);
|
||||
Log.i("Creating folder=" + name + " parent=" + parent);
|
||||
|
||||
if (parent != null) {
|
||||
EntityAccount account = db.account().getAccount(aid);
|
||||
if (account == null)
|
||||
return false;
|
||||
|
||||
name = parent + account.separator + name;
|
||||
}
|
||||
|
||||
if (TextUtils.isEmpty(name))
|
||||
throw new IllegalArgumentException(context.getString(R.string.title_folder_name_missing));
|
||||
|
|
|
@ -19,6 +19,26 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:padding="12dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvParentTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:text="@string/title_create_sub_folder"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvParent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:text="parent"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvParentTitle" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvName"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -27,7 +47,7 @@
|
|||
android:text="@string/title_folder_name"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toBottomOf="@id/tvParent" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/etName"
|
||||
|
@ -222,6 +242,13 @@
|
|||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.Group
|
||||
android:id="@+id/grpParent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:constraint_referenced_ids="
|
||||
tvParentTitle,tvParent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</ScrollView>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -351,6 +351,7 @@
|
|||
<string name="title_create_channel">Create notification channel</string>
|
||||
<string name="title_edit_channel">Edit notification channel</string>
|
||||
<string name="title_delete_channel">Delete notification channel</string>
|
||||
<string name="title_create_sub_folder">Create sub folder</string>
|
||||
|
||||
<string name="title_empty_trash_ask">Delete all trashed messages permanently?</string>
|
||||
<string name="title_delete_operation">Delete operations with an error message?</string>
|
||||
|
|
Loading…
Reference in New Issue