Skip to content

Commit f6ebe1f

Browse files
committed
Feature Update(Change Folder Name)
-Added ability to change Folder name
1 parent 7890330 commit f6ebe1f

4 files changed

Lines changed: 54 additions & 16 deletions

File tree

app/src/main/java/com/btn/pronotes/Adapters/FolderListAdapter.java

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// FolderListAdapter.java
12
package com.btn.pronotes.Adapters;
23

34
import android.content.Context;
@@ -6,20 +7,20 @@
67
import android.view.ViewGroup;
78

89
import androidx.annotation.NonNull;
10+
import androidx.appcompat.app.AlertDialog;
911
import androidx.core.content.ContextCompat;
1012
import androidx.recyclerview.widget.RecyclerView;
1113

1214
import com.btn.pronotes.Database.RoomDB;
1315
import com.btn.pronotes.Models.Folder;
1416
import com.btn.pronotes.R;
17+
import com.btn.pronotes.databinding.CustomDialogAddFolderBinding;
1518
import com.btn.pronotes.databinding.RvItemFolderBinding;
1619
import com.btn.pronotes.interfaces.FolderClickListener;
17-
import com.btn.pronotes.interfaces.MainFolderClickListener;
1820

1921
import java.util.List;
2022

21-
//Notes List Adapter Class
22-
public class FolderListAdapter extends RecyclerView.Adapter<FolderViewHolder> {
23+
public class FolderListAdapter extends RecyclerView.Adapter<FolderListAdapter.FolderViewHolder> {
2324
Context context;
2425
List<Folder> list;
2526
FolderClickListener listener;
@@ -33,15 +34,14 @@ public FolderListAdapter(Context context, List<Folder> list, FolderClickListener
3334
@NonNull
3435
@Override
3536
public FolderViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
36-
return new FolderViewHolder(RvItemFolderBinding
37-
.inflate(LayoutInflater.from(parent.getContext()), parent, false));
37+
return new FolderViewHolder(RvItemFolderBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
3838
}
3939

4040
@Override
4141
public void onBindViewHolder(@NonNull FolderViewHolder holder, int position) {
4242
Folder folder = list.get(position);
4343

44-
holder.binding.tvName.setText(folder.getName()); // Change here
44+
holder.binding.tvName.setText(folder.getName());
4545
int count = folder.getId() != 1 ?
4646
RoomDB.getInstance(context).mainDAO().getNotesCount(folder.getId()) :
4747
RoomDB.getInstance(context).mainDAO().getNotesCount();
@@ -61,12 +61,33 @@ public void onBindViewHolder(@NonNull FolderViewHolder holder, int position) {
6161

6262
holder.binding.card.setOnClickListener(v -> listener.onClick(folder));
6363

64-
// Handle delete button click
6564
holder.binding.deletebutton.setOnClickListener(v -> {
6665
RoomDB.getInstance(context).mainDAO().deleteFolder(folder);
6766
list.remove(position);
6867
notifyItemRemoved(position);
6968
});
69+
70+
holder.binding.editbutton.setOnClickListener(v -> showEditFolderDialog(folder));
71+
}
72+
73+
private void showEditFolderDialog(Folder folder) {
74+
CustomDialogAddFolderBinding dialogBinding = CustomDialogAddFolderBinding.inflate(LayoutInflater.from(context));
75+
AlertDialog alertDialog = new AlertDialog.Builder(context)
76+
.setView(dialogBinding.getRoot())
77+
.setCancelable(false)
78+
.create();
79+
alertDialog.show();
80+
81+
dialogBinding.etFolderName.setText(folder.getName());
82+
dialogBinding.btnCancel.setOnClickListener(v -> alertDialog.dismiss());
83+
dialogBinding.btnDone.setOnClickListener(v -> {
84+
String folderName = dialogBinding.etFolderName.getText().toString();
85+
folder.setName(folderName.isEmpty() ? "Untitled Name" : folderName);
86+
RoomDB.getInstance(context).mainDAO().updateFolder(folder);
87+
88+
setList(RoomDB.getInstance(context).mainDAO().getAllFolder());
89+
alertDialog.dismiss();
90+
});
7091
}
7192

7293
public void setList(List<Folder> list) {
@@ -75,20 +96,17 @@ public void setList(List<Folder> list) {
7596
notifyDataSetChanged();
7697
}
7798

78-
7999
@Override
80100
public int getItemCount() {
81101
return list.size();
82102
}
83103

84-
}
85-
86-
class FolderViewHolder extends RecyclerView.ViewHolder {
104+
class FolderViewHolder extends RecyclerView.ViewHolder {
105+
RvItemFolderBinding binding;
87106

88-
RvItemFolderBinding binding;
89-
90-
public FolderViewHolder(@NonNull RvItemFolderBinding binding) { // Change here
91-
super(binding.getRoot());
92-
this.binding = binding;
107+
public FolderViewHolder(@NonNull RvItemFolderBinding binding) {
108+
super(binding.getRoot());
109+
this.binding = binding;
110+
}
93111
}
94112
}

app/src/main/java/com/btn/pronotes/Database/MainDAO.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import androidx.room.Delete;
77
import androidx.room.Insert;
88
import androidx.room.Query;
9+
import androidx.room.Update;
910

1011
import com.btn.pronotes.Models.Folder;
1112
import com.btn.pronotes.Models.Media;
@@ -87,6 +88,9 @@ public interface MainDAO {
8788
@Delete
8889
void deleteFolder(Folder folder);
8990

91+
@Update
92+
void updateFolder(Folder folder);
93+
9094
// media
9195
@Insert(onConflict = REPLACE)
9296
void insertMedia(List<Media> mediaList);
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
2+
3+
<path android:fillColor="@android:color/white" android:pathData="M22,24H2v-4h20V24zM13.06,5.19l3.75,3.75L7.75,18H4v-3.75L13.06,5.19zM17.88,7.87l-3.75,-3.75l1.83,-1.83c0.39,-0.39 1.02,-0.39 1.41,0l2.34,2.34c0.39,0.39 0.39,1.02 0,1.41L17.88,7.87z"/>
4+
5+
</vector>

app/src/main/res/layout/rv_item_folder.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
app:layout_constraintStart_toEndOf="@id/iv_current_icon"
4242
app:layout_constraintTop_toTopOf="parent" />
4343

44+
4445
<ImageButton
4546
android:id="@+id/deletebutton"
4647
android:layout_width="45dp"
@@ -51,6 +52,16 @@
5152
app:layout_constraintEnd_toEndOf="@id/tv_name"
5253
app:layout_constraintTop_toTopOf="parent" />
5354

55+
<ImageButton
56+
android:id="@+id/editbutton"
57+
android:layout_width="45dp"
58+
android:layout_height="45dp"
59+
android:background="@color/trans"
60+
android:src="@drawable/ic_edit"
61+
app:layout_constraintBottom_toBottomOf="parent"
62+
app:layout_constraintEnd_toStartOf="@id/deletebutton"
63+
app:layout_constraintTop_toTopOf="parent" />
64+
5465
<TextView
5566
android:id="@+id/tv_count"
5667
android:layout_width="wrap_content"

0 commit comments

Comments
 (0)