Added menu item to create sub folders

This commit is contained in:
M66B 2019-06-26 08:55:27 +02:00
parent 384d1180cf
commit bd12f769c9
4 changed files with 64 additions and 2 deletions

View File

@ -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();

View File

@ -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));

View File

@ -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>

View File

@ -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>