Skip to content

Commit

Permalink
add flashcard to class
Browse files Browse the repository at this point in the history
  • Loading branch information
nqmgaming committed Dec 6, 2023
1 parent 0332732 commit c868f3e
Show file tree
Hide file tree
Showing 10 changed files with 308 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,5 +66,10 @@ class AddFlashCardActivity : AppCompatActivity() {
return super.onOptionsItemSelected(item)
}

override fun onResume() {
super.onResume()
setupRecyclerView()
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.daominh.quickmem.adapter.group

import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.Toast
import androidx.appcompat.content.res.AppCompatResources
import androidx.recyclerview.widget.RecyclerView
import com.daominh.quickmem.adapter.folder.FolderSelectAdapter
import com.daominh.quickmem.data.dao.FolderDAO
import com.daominh.quickmem.data.dao.GroupDAO
import com.daominh.quickmem.data.model.Folder
import com.daominh.quickmem.data.model.Group
import com.daominh.quickmem.databinding.ItemSelectClassBinding

class ClassSelectAdapter(
private val classList: ArrayList<Group>,
private val flashCardId: String
) : RecyclerView.Adapter<ClassSelectAdapter.ClassSelectViewHolder>() {
class ClassSelectViewHolder(
val binding: ItemSelectClassBinding
) : RecyclerView.ViewHolder(binding.root) {

}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ClassSelectViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
val binding = ItemSelectClassBinding.inflate(layoutInflater, parent, false)
return ClassSelectViewHolder(binding)
}

override fun onBindViewHolder(holder: ClassSelectViewHolder, position: Int) {
val group = classList[position]
val groupDAO = GroupDAO(holder.itemView.context)
holder.binding.classNameTv.text = group.name
updateBackground(holder, group, groupDAO)

holder.binding.cardView.setOnClickListener {
if (groupDAO.isFlashCardInClass(group.id, flashCardId)) {
groupDAO.removeFlashCardFromClass(group.id, flashCardId)
} else {
groupDAO.addFlashCardToClass(group.id, flashCardId)
}
updateBackground(holder, group, groupDAO)
}


}

override fun getItemCount(): Int {
return classList.size
}

private fun updateBackground(holder: ClassSelectViewHolder, group: Group, groupDAO: GroupDAO) {
if (groupDAO.isFlashCardInClass(group.id, flashCardId)) {
holder.binding.cardView.background =
AppCompatResources.getDrawable(
holder.itemView.context,
com.daominh.quickmem.R.drawable.background_select
)
} else {
holder.binding.cardView.background =
AppCompatResources.getDrawable(
holder.itemView.context,
com.daominh.quickmem.R.drawable.background_unselect
)
}
}
}
43 changes: 42 additions & 1 deletion app/src/main/java/com/daominh/quickmem/data/dao/GroupDAO.java
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,9 @@ public int getNumberFlashCardInClass(String id) {
public ArrayList<Group> getAllClasses() {
ArrayList<Group> classes = new ArrayList<>();
sqLiteDatabase = qmDatabaseHelper.getWritableDatabase();
Cursor cursor = sqLiteDatabase.query(QMDatabaseHelper.TABLE_CLASSES, null, null, null, null, null, null);
Cursor cursor = sqLiteDatabase.query(
QMDatabaseHelper.TABLE_CLASSES, null, null, null, null, null, null
);
if (cursor.moveToFirst()) {
do {
Group group = new Group();
Expand Down Expand Up @@ -171,6 +173,45 @@ public long addFlashCardToClass(String class_id, String flashcard_id) {
return result;
}

//remove flashcard from class
public long removeFlashCardFromClass(String class_id, String flashcard_id) {
sqLiteDatabase = qmDatabaseHelper.getWritableDatabase();

long result = 0;

//delete
try {
result = sqLiteDatabase.delete(
QMDatabaseHelper.TABLE_CLASSES_FLASHCARDS,
"class_id = ? AND flashcard_id = ?",
new String[]{class_id, flashcard_id}
);
} finally {
sqLiteDatabase.close();
}
return result;
}

//check if flashcard is in class
public boolean isFlashCardInClass(String class_id, String flashcard_id) {
sqLiteDatabase = qmDatabaseHelper.getWritableDatabase();

boolean result = false;

String query = "SELECT * FROM "
+ QMDatabaseHelper.TABLE_CLASSES_FLASHCARDS +
" WHERE " + QMDatabaseHelper.TABLE_CLASSES_FLASHCARDS + ".class_id = ? AND "
+ QMDatabaseHelper.TABLE_CLASSES_FLASHCARDS + ".flashcard_id = ?";
Cursor cursor = sqLiteDatabase.rawQuery(query, new String[]{class_id, flashcard_id});
if (cursor.moveToFirst()) {
result = true;
}
cursor.close();
sqLiteDatabase.close();
return result;
}


//get classes by id
public Group getClassById(String id) {
Group group = new Group();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,81 @@
package com.daominh.quickmem.ui.activities.group

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import com.daominh.quickmem.R
import com.daominh.quickmem.adapter.group.ClassSelectAdapter
import com.daominh.quickmem.data.dao.GroupDAO
import com.daominh.quickmem.databinding.ActivityAddToClassBinding
import com.daominh.quickmem.preferen.UserSharePreferences
import com.daominh.quickmem.ui.activities.create.CreateClassActivity

class AddToClassActivity : AppCompatActivity() {
private val binding by lazy {
ActivityAddToClassBinding.inflate(layoutInflater)
}
private val classDAO by lazy {
GroupDAO(this)
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_add_to_class)
setContentView(binding.root)

setupToolbar()
setupNewClassIntent()
setupRecyclerView()
}

private fun setupToolbar() {
setSupportActionBar(binding.toolbar)
binding.toolbar.setNavigationOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
}

private fun setupNewClassIntent() {
binding.createNewClassTv.setOnClickListener{
Intent(this, CreateClassActivity::class.java).also {
startActivity(it)
}
}
}

private fun setupRecyclerView() {
val userSharePreferences = UserSharePreferences(this)
val classList = classDAO.getClassesOwnedByUser(userSharePreferences.id)
val adapter = ClassSelectAdapter(classList, intent.getStringExtra("flashcard_id")!!)
val linearLayoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
binding.classRv.layoutManager = linearLayoutManager
binding.classRv.adapter = adapter
adapter.notifyDataSetChanged()
}

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu_tick, menu)
return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.done -> {
onBackPressedDispatcher.onBackPressed()
Toast.makeText(this, "Done", Toast.LENGTH_SHORT).show()
true
}

else -> super.onOptionsItemSelected(item)
}
}

override fun onResume() {
super.onResume()
setupRecyclerView()
}

}
1 change: 1 addition & 0 deletions app/src/main/res/layout/fragment_home.xml
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:visibility="gone"
android:background="@drawable/background_cardnew"
android:paddingVertical="@dimen/_15ssp"
android:paddingStart="18dp"
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/layout/item_class.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white_gray"
android:paddingBottom="@dimen/_5dp">
android:padding="@dimen/_10dp">


<TextView
Expand Down
13 changes: 7 additions & 6 deletions app/src/main/res/layout/item_class_copy.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
android:layout_gravity="center|top"
android:elevation="@dimen/_8ssp"
app:cardCornerRadius="@dimen/_10dp"
android:layout_marginBottom="@dimen/_10dp"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true">

Expand All @@ -27,7 +28,7 @@
android:textSize="@dimen/_20ssp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"/>

<ImageView
android:id="@+id/group_iv"
Expand All @@ -36,7 +37,7 @@
android:layout_margin="@dimen/_5dp"
android:src="@drawable/ic_group"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"/>

<ImageView
android:id="@+id/set_iv"
Expand All @@ -45,7 +46,7 @@
android:layout_marginTop="@dimen/_16dp"
android:src="@drawable/ic_set"
app:layout_constraintStart_toStartOf="@id/class_name_tv"
app:layout_constraintTop_toBottomOf="@id/class_name_tv" />
app:layout_constraintTop_toBottomOf="@id/class_name_tv"/>

<TextView
android:id="@+id/number_set_tv"
Expand All @@ -57,7 +58,7 @@
android:textSize="@dimen/_16dp"
app:layout_constraintBottom_toBottomOf="@id/set_iv"
app:layout_constraintStart_toEndOf="@id/set_iv"
app:layout_constraintTop_toTopOf="@id/set_iv" />
app:layout_constraintTop_toTopOf="@id/set_iv"/>

<ImageView
android:id="@+id/user_iv"
Expand All @@ -67,7 +68,7 @@
android:layout_marginBottom="@dimen/_16dp"
android:src="@drawable/ic_user"
app:layout_constraintStart_toStartOf="@id/set_iv"
app:layout_constraintTop_toBottomOf="@id/set_iv" />
app:layout_constraintTop_toBottomOf="@id/set_iv"/>

<TextView
android:id="@+id/number_user_tv"
Expand All @@ -79,7 +80,7 @@
android:textSize="@dimen/_16dp"
app:layout_constraintBottom_toBottomOf="@id/user_iv"
app:layout_constraintStart_toEndOf="@id/user_iv"
app:layout_constraintTop_toTopOf="@id/user_iv" />
app:layout_constraintTop_toTopOf="@id/user_iv"/>


</androidx.constraintlayout.widget.ConstraintLayout>
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/layout/item_folder_copy.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true"
android:layout_gravity="center|top"
android:layout_marginBottom="@dimen/_10dp"
android:background="@color/white_gray"
android:elevation="@dimen/_8ssp"
app:cardCornerRadius="@dimen/_10dp">
Expand Down
45 changes: 45 additions & 0 deletions app/src/main/res/layout/item_select_class.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white_gray"
android:layout_gravity="center|top"
android:id="@+id/card_view"
android:elevation="@dimen/_8ssp"
app:cardCornerRadius="@dimen/_10dp"
android:layout_marginBottom="@dimen/_10dp"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true">

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white_gray"
android:padding="@dimen/_10dp">


<TextView
android:id="@+id/class_name_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/_10dp"
android:text="@string/class_name"
android:textColor="@color/dark_gray"
android:textSize="@dimen/_20ssp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/group_iv"
app:layout_constraintStart_toEndOf="@id/group_iv"
app:layout_constraintTop_toTopOf="@id/group_iv"/>

<ImageView
android:id="@+id/group_iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/_5dp"
android:src="@drawable/ic_group"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
Loading

0 comments on commit c868f3e

Please sign in to comment.