diff --git a/.idea/misc.xml b/.idea/misc.xml
index b92cd49..31e0829 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,6 +3,7 @@
diff --git a/app/build.gradle b/app/build.gradle
index feff990..adc51e2 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -65,7 +65,7 @@ dependencies {
androidTestImplementation("androidx.navigation:navigation-testing:2.3.5")
// Jetpack Compose Integration
- implementation("androidx.navigation:navigation-compose:2.4.0-alpha10")
+ implementation("androidx.navigation:navigation-compose:2.4.0-beta02")
implementation("androidx.viewpager2:viewpager2:1.0.0")
implementation("androidx.recyclerview:recyclerview:1.2.1")
@@ -73,14 +73,18 @@ dependencies {
implementation("androidx.cardview:cardview:1.0.0")
//room database
- implementation 'androidx.room:room-runtime:2.3.0'
- kapt 'androidx.room:room-compiler:2.3.0'
- implementation 'androidx.room:room-ktx:2.3.0'
+ implementation 'androidx.room:room-runtime:2.4.0-rc01'
+ kapt 'androidx.room:room-compiler:2.4.0-rc01'
+ implementation "androidx.room:room-ktx:2.4.0-rc01"
implementation 'com.makeramen:roundedimageview:2.3.0'
+
//bottomsheet
implementation 'com.google.android.material:material:1.4.0'
+ //coroutines core
+ implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0'
+
}
diff --git a/app/src/main/java/com/example/jottnotes/BaseFragment.kt b/app/src/main/java/com/example/jottnotes/BaseFragment.kt
new file mode 100644
index 0000000..30bdc53
--- /dev/null
+++ b/app/src/main/java/com/example/jottnotes/BaseFragment.kt
@@ -0,0 +1,25 @@
+package com.example.jottnotes
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlin.coroutines.CoroutineContext
+
+abstract class BaseFragment : Fragment(),CoroutineScope{
+
+ private lateinit var job: Job
+ override val coroutineContext: CoroutineContext
+ get() = job +Dispatchers.Main
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ job = Job()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ job.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/jottnotes/Bottom_sheet.kt b/app/src/main/java/com/example/jottnotes/Bottom_sheet.kt
index 6500a96..b554fdc 100644
--- a/app/src/main/java/com/example/jottnotes/Bottom_sheet.kt
+++ b/app/src/main/java/com/example/jottnotes/Bottom_sheet.kt
@@ -7,8 +7,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
-import androidx.fragment.app.FragmentManager
-import androidx.fragment.app.FragmentTransaction
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import kotlinx.android.synthetic.main.fragment_bottom_sheet.*
@@ -37,7 +35,7 @@ class BottomSheet : BottomSheetDialogFragment(){
Notes_add.setOnClickListener {
- replaceFragment(Notes_page(),true)
+ replaceFragment(NotesPage.newInstance(),true)
Toast.makeText(context,"this is toast message",Toast.LENGTH_SHORT).show()
dismiss()
}
@@ -45,9 +43,8 @@ class BottomSheet : BottomSheetDialogFragment(){
}
- fun replaceFragment(fragment: Fragment, istransition : Boolean)
+ private fun replaceFragment(fragment: Fragment, istransition : Boolean)
{
- val editNotes = fragment
val manager = requireActivity().supportFragmentManager
val transaction = manager.beginTransaction()
@@ -57,7 +54,7 @@ class BottomSheet : BottomSheetDialogFragment(){
}
- transaction.replace(R.id.frame_layout, editNotes).addToBackStack(null).commit()
+ transaction.replace(R.id.frame_layout, fragment).addToBackStack(null).commit()
diff --git a/app/src/main/java/com/example/jottnotes/FolderFragment.kt b/app/src/main/java/com/example/jottnotes/FolderFragment.kt
new file mode 100644
index 0000000..3357d80
--- /dev/null
+++ b/app/src/main/java/com/example/jottnotes/FolderFragment.kt
@@ -0,0 +1,27 @@
+package com.example.jottnotes
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+
+class FolderFragment : Fragment() {
+
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ return inflater.inflate(R.layout.fragment_folder, container, false)
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/jottnotes/MainActivity.kt b/app/src/main/java/com/example/jottnotes/MainActivity.kt
index 2dc82d8..0fc3eba 100644
--- a/app/src/main/java/com/example/jottnotes/MainActivity.kt
+++ b/app/src/main/java/com/example/jottnotes/MainActivity.kt
@@ -3,7 +3,6 @@ package com.example.jottnotes
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.fragment.app.Fragment
-import com.example.jottnotes.Notes_page.Companion.newInstance
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
@@ -12,7 +11,10 @@ class MainActivity : AppCompatActivity() {
- replaceFragment(Mainpage(),true)
+
+
+
+ replaceFragment(Mainpage(), true)
}
//this is to change from mainactivity to main_page fragment.
@@ -21,14 +23,17 @@ class MainActivity : AppCompatActivity() {
//also this same function has the replace(one you are in, the one you want to go)
//the addtobackstack is a stack maker function.
- private fun replaceFragment(fragment:Fragment, istransition:Boolean) {
+ private fun replaceFragment(fragment: Fragment, istransition: Boolean) {
val fragmentTransition = supportFragmentManager.beginTransaction()
- if (istransition)
- {
- fragmentTransition.setCustomAnimations(android.R.anim.slide_out_right,android.R.anim.slide_in_left)
+ if (istransition) {
+ fragmentTransition.setCustomAnimations(
+ android.R.anim.slide_out_right,
+ android.R.anim.slide_in_left
+ )
}
- fragmentTransition.replace(R.id.frame_layout,fragment).addToBackStack(fragment.javaClass.simpleName).commit()
+ fragmentTransition.replace(R.id.frame_layout, fragment)
+ .addToBackStack(fragment.javaClass.simpleName).commit()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/jottnotes/Main_page.kt b/app/src/main/java/com/example/jottnotes/Main_page.kt
index 3b81116..99d5022 100644
--- a/app/src/main/java/com/example/jottnotes/Main_page.kt
+++ b/app/src/main/java/com/example/jottnotes/Main_page.kt
@@ -10,11 +10,16 @@ import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentManager
+import androidx.viewpager2.widget.ViewPager2
+import com.google.android.material.tabs.TabLayout
+import com.google.android.material.tabs.TabLayoutMediator
import kotlinx.android.synthetic.main.fragment_main_page.*
class Mainpage : Fragment() {
+ val fragarray = ArrayList()
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -35,16 +40,36 @@ class Mainpage : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- val manager: FragmentManager = (this.context as AppCompatActivity).supportFragmentManager
-
+ //for bottom sheet transaction
+ val manager: FragmentManager = (this.context as AppCompatActivity).supportFragmentManager
floating_action_button.setOnClickListener {
BottomSheet().show(manager, ContentValues.TAG)
}
+ //for launching Viewpager fragment
+ val tabLayout = activity?.findViewById(R.id.tabs)
+ val viewpager2 = activity?.findViewById(R.id.View_pager)
+
+ fragarray.add(RvFragment())
+
+ val adapter = ViewPagerAdapter(requireActivity().supportFragmentManager,lifecycle)
+ viewpager2?.adapter = adapter
+
+ if (viewpager2 != null) {
+ if (tabLayout != null) {
+ TabLayoutMediator(tabLayout, viewpager2){tab,position ->
+
+ when(position){
+ 0 -> tab.text = "Notes"
+ 1 -> tab.text = "Folders"
+ }
+ }.attach()
+ }
}
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/jottnotes/NotesPageBottomSheet.kt b/app/src/main/java/com/example/jottnotes/NotesPageBottomSheet.kt
new file mode 100644
index 0000000..a806ed4
--- /dev/null
+++ b/app/src/main/java/com/example/jottnotes/NotesPageBottomSheet.kt
@@ -0,0 +1,234 @@
+package com.example.jottnotes
+
+import android.annotation.SuppressLint
+import android.app.Dialog
+import android.content.Intent
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.coordinatorlayout.widget.CoordinatorLayout
+import androidx.localbroadcastmanager.content.LocalBroadcastManager
+import com.google.android.material.bottomsheet.BottomSheetBehavior
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment
+import kotlinx.android.synthetic.main.fragment_notes_page_bottom_sheet.*
+
+
+class NotesPageBottomSheet : BottomSheetDialogFragment() {
+ var selectedColor = "#232323"
+
+ @SuppressLint("RestrictedApi")
+ override fun setupDialog(dialog: Dialog, style: Int) {
+ super.setupDialog(dialog, style)
+
+ val view = LayoutInflater.from(context).inflate(R.layout.fragment_notes_page_bottom_sheet,null)
+ dialog.setContentView(view)
+
+ val param = (view.parent as View).layoutParams as CoordinatorLayout.LayoutParams
+
+ val behavior = param.behavior
+
+ if (behavior is BottomSheetBehavior<*>){
+ behavior.setBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback(){
+ override fun onSlide(bottomSheet: View, slideOffset: Float) {
+ TODO("Not yet implemented")
+ }
+
+ override fun onStateChanged(bottomSheet: View, newState: Int) {
+ var state = ""
+ when (newState) {
+ BottomSheetBehavior.STATE_DRAGGING -> {
+ state = "DRAGGING"
+ }
+ BottomSheetBehavior.STATE_SETTLING -> {
+ state = "SETTLING"
+ }
+ BottomSheetBehavior.STATE_EXPANDED -> {
+ state = "EXPANDED"
+ }
+ BottomSheetBehavior.STATE_COLLAPSED -> {
+ state = "COLLAPSED"
+ }
+
+ BottomSheetBehavior.STATE_HIDDEN -> {
+ state = "HIDDEN"
+ dismiss()
+ behavior.state = BottomSheetBehavior.STATE_COLLAPSED
+ }
+
+ }
+ }
+
+ })
+
+
+ }
+ }
+
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ return inflater.inflate(R.layout.fragment_notes_page_bottom_sheet, container, false)
+ }
+
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ if (noteId != -1){
+ layoutDeleteNote.visibility = View.VISIBLE
+ }else{
+ layoutDeleteNote.visibility = View.GONE
+ }
+ setListener()
+ }
+
+
+ private fun setListener(){
+ fNote1.setOnClickListener {
+
+ imgNote1.setImageResource(R.drawable.ic_tick)
+ imgNote2.setImageResource(0)
+ imgNote4.setImageResource(0)
+ imgNote5.setImageResource(0)
+ imgNote6.setImageResource(0)
+ imgNote7.setImageResource(0)
+ selectedColor = "#4e33ff"
+
+ val intent = Intent("bottom_sheet_action")
+ intent.putExtra("action","Blue")
+ intent.putExtra("selectedColor",selectedColor)
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
+
+ }
+
+ fNote2.setOnClickListener {
+ imgNote1.setImageResource(0)
+ imgNote2.setImageResource(R.drawable.ic_tick)
+ imgNote4.setImageResource(0)
+ imgNote5.setImageResource(0)
+ imgNote6.setImageResource(0)
+ imgNote7.setImageResource(0)
+ selectedColor = "#ffd633"
+
+ val intent = Intent("bottom_sheet_action")
+ intent.putExtra("action","Yellow")
+ intent.putExtra("selectedColor",selectedColor)
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
+
+ }
+
+ fNote4.setOnClickListener {
+ imgNote1.setImageResource(0)
+ imgNote2.setImageResource(0)
+ imgNote4.setImageResource(R.drawable.ic_tick)
+ imgNote5.setImageResource(0)
+ imgNote6.setImageResource(0)
+ imgNote7.setImageResource(0)
+ selectedColor = "#ae3b76"
+
+ val intent = Intent("bottom_sheet_action")
+ intent.putExtra("action","Purple")
+ intent.putExtra("selectedColor",selectedColor)
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
+
+ }
+
+ fNote5.setOnClickListener {
+ imgNote1.setImageResource(0)
+ imgNote2.setImageResource(0)
+ imgNote4.setImageResource(0)
+ imgNote5.setImageResource(R.drawable.ic_tick)
+ imgNote6.setImageResource(0)
+ imgNote7.setImageResource(0)
+ selectedColor = "#0aebaf"
+
+ val intent = Intent("bottom_sheet_action")
+ intent.putExtra("action","Green")
+ intent.putExtra("selectedColor",selectedColor)
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
+ }
+
+ fNote6.setOnClickListener {
+
+ imgNote1.setImageResource(0)
+ imgNote2.setImageResource(0)
+ imgNote4.setImageResource(0)
+ imgNote5.setImageResource(0)
+ imgNote6.setImageResource(R.drawable.ic_tick)
+ imgNote7.setImageResource(0)
+ selectedColor = "#ff7746"
+ val intent = Intent("bottom_sheet_action")
+ intent.putExtra("action","Orange")
+ intent.putExtra("selectedColor",selectedColor)
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
+ }
+
+ fNote7.setOnClickListener {
+ imgNote1.setImageResource(0)
+ imgNote2.setImageResource(0)
+ imgNote4.setImageResource(0)
+ imgNote5.setImageResource(0)
+ imgNote6.setImageResource(0)
+ imgNote7.setImageResource(R.drawable.ic_tick)
+ selectedColor = "#202734"
+
+ val intent = Intent("bottom_sheet_action")
+ intent.putExtra("action","Black")
+ intent.putExtra("selectedColor",selectedColor)
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
+ }
+
+
+ layoutImage.setOnClickListener{
+ val intent = Intent("bottom_sheet_action")
+ intent.putExtra("action","Image")
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
+ dismiss()
+ }
+ layoutWebUrl.setOnClickListener{
+ val intent = Intent("bottom_sheet_action")
+ intent.putExtra("action","WebUrl")
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
+ dismiss()
+ }
+ layoutDeleteNote.setOnClickListener {
+ val intent = Intent("bottom_sheet_action")
+ intent.putExtra("action","DeleteNote")
+ LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
+ dismiss()
+ }
+
+
+ }
+ companion object {
+ var noteId = -1
+ fun newInstance(id:Int): NotesPageBottomSheet{
+ val args = Bundle()
+ val fragment = NotesPageBottomSheet()
+ fragment.arguments = args
+ noteId = id
+ return fragment
+ }
+ }
+// companion object {
+//
+//
+// @JvmStatic
+// fun newInstance(param1: String, param2: String) =
+// NotesPageBottomSheet().apply {
+// arguments = Bundle().apply {
+//
+// }
+// }
+// }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/jottnotes/NotesToRvAdapter.kt b/app/src/main/java/com/example/jottnotes/NotesToRvAdapter.kt
new file mode 100644
index 0000000..9d596b9
--- /dev/null
+++ b/app/src/main/java/com/example/jottnotes/NotesToRvAdapter.kt
@@ -0,0 +1,60 @@
+package com.example.jottnotes
+
+import android.graphics.Color
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.example.jottnotes.entities.Notes
+import kotlinx.android.synthetic.main.rvcard.view.*
+
+ class NotesToRvAdapter():
+ RecyclerView.Adapter() {
+ var listener : OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(noteId : Int)
+
+ }
+
+ var arrList = ArrayList()
+ class NotesViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NotesViewHolder {
+ return NotesViewHolder(
+ LayoutInflater.from(parent.context).inflate(R.layout.rvcard,parent,false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: NotesViewHolder, position: Int) {
+ holder.itemView.title_thumb.text = arrList[position].title
+ holder.itemView.note_desc_thumb.text = arrList[position].noteText
+
+ if (arrList[position].color != null){
+ holder.itemView.rv_card.setCardBackgroundColor(Color.parseColor(arrList[position].color))
+ }else{
+ holder.itemView.rv_card.setCardBackgroundColor(Color.parseColor(R.color.scroll_viewGrey.toString()))
+ }
+
+ holder.itemView.rv_card.setOnClickListener{
+ listener!!.onClicked(arrList[position].id!!)
+ }
+
+ }
+
+ override fun getItemCount(): Int {
+ return arrList.size
+ }
+
+ fun setOnClickListener(listener1: OnItemClickListener){
+ listener = listener1
+ }
+
+ fun setData(arrNotesList:List){
+ arrList = arrNotesList as ArrayList
+ }
+
+
+ }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/jottnotes/Notes_page.kt b/app/src/main/java/com/example/jottnotes/Notes_page.kt
index 8503662..47f9aa0 100644
--- a/app/src/main/java/com/example/jottnotes/Notes_page.kt
+++ b/app/src/main/java/com/example/jottnotes/Notes_page.kt
@@ -1,21 +1,40 @@
package com.example.jottnotes
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import android.graphics.Color
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.EditText
+import android.widget.Toast
+import androidx.localbroadcastmanager.content.LocalBroadcastManager
+
+import com.example.jottnotes.database.NotesDatabase
+import com.example.jottnotes.entities.Notes
import kotlinx.android.synthetic.main.fragment_notes_page.*
+import kotlinx.android.synthetic.main.fragment_notes_page_bottom_sheet.*
+import kotlinx.coroutines.launch
import java.text.SimpleDateFormat
import java.util.*
-class Notes_page : Fragment() {
+class NotesPage : BaseFragment() {
+ var selectedColor = "#232323"
+ var currentDate: String? = null
+ private var noteId = -1
+
+ private var colorView = view?.findViewById(R.id.notes_title)
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- arguments?.let {
+ noteId = requireArguments().getInt("noteId",-1)
- }
}
override fun onCreateView(
@@ -26,47 +45,196 @@ class Notes_page : Fragment() {
return inflater.inflate(R.layout.fragment_notes_page, container, false)
}
- companion object {
-
+ companion object{
@JvmStatic
- fun newInstance(param1: String, param2: String) =
- Notes_page().apply {
- arguments = Bundle().apply {
+ fun newInstance()=
+ NotesPage().apply {
+ arguments= Bundle().apply {
}
}
}
+
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- var sdf = SimpleDateFormat("dd/M/yyyy hh:mm:ss")
- val CurrentDate = sdf.format(Date())
- date.text = CurrentDate
+// if (noteId != 1){
+// launch {
+// context?.let {
+// var notes = NotesDatabase.getDatabase(it).noteDao().getSpecificNote(noteId)
+// notes_title.setText(notes.title)
+// notes_desc.setText(notes.noteText)
+// colorView?.setBackgroundColor(Color.parseColor(notes.color))
+// }
+// }
+// }
+
+ LocalBroadcastManager.getInstance(requireContext()).registerReceiver(
+ BroadcastReceiver,IntentFilter("bottom_sheet_action")
+ )
- note_back_button.setOnClickListener{
+
+
+ val sdf = SimpleDateFormat("dd/M/yyyy hh:mm:ss")
+ currentDate = sdf.format(Date())
+
+ colorView?.setBackgroundColor(Color.parseColor(selectedColor))
+
+ date.text = currentDate
+
+ note_back_button.setOnClickListener {
saveNote()
- replaceFragment(Mainpage(),true)
+ requireActivity().supportFragmentManager.popBackStack()
}
+
+ imgDone.setOnClickListener {
+ if (noteId != -1){
+ //updateNote()
+ }else{
+ saveNote()
+ }
+ }
+
+ imgMore.setOnClickListener{
+
+
+ var noteBottomSheetFragment = NotesPageBottomSheet.newInstance(noteId)
+ noteBottomSheetFragment.show(requireActivity().supportFragmentManager,"Note Bottom Sheet Fragment")
+ }
+
+
}
- private fun saveNote(){
+ private fun saveNote() {
+ if (notes_title.text.isNullOrEmpty()) {
+ Toast.makeText(context, "Title Required", Toast.LENGTH_SHORT).show()
+ }
+ else {
+
+ launch {
+ val notes = Notes()
+ notes.title = notes_title.text.toString()
+ notes.noteText = notes_desc.text.toString()
+ notes.dateTime = currentDate
+ notes.color = selectedColor
+ //notes.imgPath = selectedImagePath
+ //notes.webLink = webLink
+
+ context?.let {
+ NotesDatabase.getDatabase(it).noteDao().insertNotes(notes)
+ notes_desc.setText("")
+ notes_title.setText("")
+ layoutImage.visibility = View.GONE
+ //imgNote.visibility = View.GONE
+ //tvWebLink.visibility = View.GONE
+ requireActivity().supportFragmentManager.popBackStack()
+
+ }
+ }
+ }
}
- fun replaceFragment(fragment: Fragment , istransition : Boolean)
- {
+ private val BroadcastReceiver : BroadcastReceiver = object :BroadcastReceiver(){
+ override fun onReceive(p0: Context?, p1: Intent?) {
+
+ var actionColor = p1!!.getStringExtra("action")
+
+ when(actionColor!!){
+
+ "Blue" -> {
+ selectedColor = p1.getStringExtra("selectedColor")!!
+ colorView?.setBackgroundColor(Color.parseColor(selectedColor))
+
+ }
+
+ "Yellow" -> {
+ selectedColor = p1.getStringExtra("selectedColor")!!
+ colorView?.setBackgroundColor(Color.parseColor(selectedColor))
+
+ }
+
+
+ "Purple" -> {
+ selectedColor = p1.getStringExtra("selectedColor")!!
+ colorView?.setBackgroundColor(Color.parseColor(selectedColor))
+
+ }
+
+
+ "Green" -> {
+ selectedColor = p1.getStringExtra("selectedColor")!!
+ colorView?.setBackgroundColor(Color.parseColor(selectedColor))
+
+ }
+
+
+ "Orange" -> {
+ selectedColor = p1.getStringExtra("selectedColor")!!
+ colorView?.setBackgroundColor(Color.parseColor(selectedColor))
+
+ }
+
+
+ "Black" -> {
+ selectedColor = p1.getStringExtra("selectedColor")!!
+ colorView?.setBackgroundColor(Color.parseColor(selectedColor))
+
+ }
+
+// "Image" ->{
+// readStorageTask()
+// layoutWebUrl.visibility = View.GONE
+// }
+
+// "WebUrl" ->{
+// layoutWebUrl.visibility = View.VISIBLE
+// }
+// "DeleteNote" -> {
+// //delete note
+// deleteNote()
+// }
+
+
+ else -> {
+ layoutImage.visibility = View.GONE
+// imgNote.visibility = View.GONE
+// layoutWebUrl.visibility = View.GONE
+ selectedColor = p1.getStringExtra("selectedColor")!!
+ colorView?.setBackgroundColor(Color.parseColor(selectedColor))
+
+ }
+ }
+ }
+
+ }
+
+
+ fun replaceFragment(fragment: Fragment, istransition: Boolean) {
val manager = requireActivity().supportFragmentManager
val transaction = manager.beginTransaction()
- if (istransition){
- transaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right)
+ if (istransition) {
+ transaction.setCustomAnimations(
+ android.R.anim.slide_in_left,
+ android.R.anim.slide_out_right
+ )
}
- transaction.replace(R.id.notes_page,fragment).commit()
+ transaction.replace(R.id.notes_page, fragment).commit()
+ }
+
+ override fun onDestroy() {
+
+ LocalBroadcastManager.getInstance(requireContext()).unregisterReceiver(BroadcastReceiver)
+ super.onDestroy()
}
-}
\ No newline at end of file
+}
+
+
diff --git a/app/src/main/java/com/example/jottnotes/RvFragment.kt b/app/src/main/java/com/example/jottnotes/RvFragment.kt
index ff1d8f0..01d435f 100644
--- a/app/src/main/java/com/example/jottnotes/RvFragment.kt
+++ b/app/src/main/java/com/example/jottnotes/RvFragment.kt
@@ -5,9 +5,17 @@ import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import kotlinx.coroutines.launch
+import androidx.recyclerview.widget.StaggeredGridLayoutManager
+import com.example.jottnotes.database.NotesDatabase
+import com.example.jottnotes.entities.Notes
+import kotlinx.android.synthetic.main.fragment_rv.*
-class RvFragment : Fragment() {
+class RvFragment : BaseFragment() {
+
+ var arrNotes = ArrayList()
+ var notesAdapter: NotesToRvAdapter = NotesToRvAdapter()
override fun onCreate(savedInstanceState: Bundle?) {
@@ -21,18 +29,85 @@ class RvFragment : Fragment() {
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- // Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_rv, container, false)
}
companion object {
-
@JvmStatic
- fun newInstance(param1: String, param2: String) =
+ fun newInstance() =
RvFragment().apply {
arguments = Bundle().apply {
}
}
}
-}
\ No newline at end of file
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ main_page_rv.setHasFixedSize(true)
+ main_page_rv.layoutManager = StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)
+
+ launch {
+ context?.let {
+ var notes = NotesDatabase.getDatabase(it).noteDao().getAllNotes()
+ notesAdapter.setData(notes)
+ arrNotes = notes as ArrayList
+ main_page_rv.adapter = notesAdapter
+
+
+ }
+ }
+
+ notesAdapter.setOnClickListener(onCLicked)
+
+
+ }
+
+ private val onCLicked = object :NotesToRvAdapter.OnItemClickListener{
+ override fun onClicked(noteId: Int) {
+
+ var fragment : Fragment
+ var bundle = Bundle()
+ bundle.putInt("noteId",noteId)
+ fragment = NotesPage.newInstance()
+ fragment.arguments = bundle
+
+ replaceFragment(fragment,false)
+
+
+ }
+ }
+
+ fun replaceFragment(fragment: Fragment , istransition:Boolean) {
+ val fragmentTransaction = requireActivity().supportFragmentManager
+ val transaction = fragmentTransaction.beginTransaction()
+
+ if (istransition) {
+ transaction.setCustomAnimations(android.R.anim.slide_in_left,android.R.anim.slide_out_right)
+
+ }
+ transaction.replace(R.id.frame_layout,fragment).addToBackStack(fragment.javaClass.simpleName).commit()
+ }
+
+}
+
+//fun replaceFragment(fragment: Fragment, istransition : Boolean)
+//{
+// val editNotes = fragment
+// val manager = requireActivity().supportFragmentManager
+// val transaction = manager.beginTransaction()
+//
+// if (istransition){
+// transaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right)
+//
+// }
+//
+//
+// transaction.replace(R.id.frame_layout, editNotes).addToBackStack(null).commit()
+//
+//
+//
+//
+//
+//}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/jottnotes/ViewPagerAdapter.kt b/app/src/main/java/com/example/jottnotes/ViewPagerAdapter.kt
new file mode 100644
index 0000000..c269a85
--- /dev/null
+++ b/app/src/main/java/com/example/jottnotes/ViewPagerAdapter.kt
@@ -0,0 +1,30 @@
+package com.example.jottnotes
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.compose.ui.layout.Layout
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentManager
+import androidx.lifecycle.Lifecycle
+import androidx.recyclerview.widget.RecyclerView
+import androidx.viewpager2.adapter.FragmentStateAdapter
+
+class ViewPagerAdapter(fragmentManager: FragmentManager,lifecycle: Lifecycle):
+ FragmentStateAdapter(fragmentManager,lifecycle){
+
+ override fun getItemCount(): Int {
+ return 2
+ }
+
+ override fun createFragment(position: Int): Fragment {
+ when (position){
+ 0 -> return RvFragment()
+ 1 -> return FolderFragment()
+ }
+ return RvFragment()
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/jottnotes/dao/NoteDao.kt b/app/src/main/java/com/example/jottnotes/dao/NoteDao.kt
index 53d39b7..86a5ef2 100644
--- a/app/src/main/java/com/example/jottnotes/dao/NoteDao.kt
+++ b/app/src/main/java/com/example/jottnotes/dao/NoteDao.kt
@@ -1,7 +1,7 @@
-package com.codingwithme.notesapp.dao
+package com.example.jottnotes.dao
import androidx.room.*
-import com.codingwithme.notesapp.entities.Notes
+import com.example.jottnotes.entities.Notes
@Dao
interface NoteDao {
@@ -13,14 +13,14 @@ interface NoteDao {
suspend fun getSpecificNote(id:Int) : Notes
@Insert(onConflict = OnConflictStrategy.REPLACE)
- suspend fun insertNotes(note:Notes)
+ suspend fun insertNotes(note: Notes)
@Delete
- suspend fun deleteNote(note:Notes)
+ suspend fun deleteNote(note: Notes)
@Query("DELETE FROM notes WHERE id =:id")
suspend fun deleteSpecificNote(id:Int)
@Update
- suspend fun updateNote(note:Notes)
+ suspend fun updateNote(note: Notes)
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/jottnotes/database/NotesDatabase.kt b/app/src/main/java/com/example/jottnotes/database/NotesDatabase.kt
index 10cc586..fca4888 100644
--- a/app/src/main/java/com/example/jottnotes/database/NotesDatabase.kt
+++ b/app/src/main/java/com/example/jottnotes/database/NotesDatabase.kt
@@ -1,11 +1,11 @@
-package com.codingwithme.notesapp.database
+package com.example.jottnotes.database
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
-import com.codingwithme.notesapp.dao.NoteDao
-import com.codingwithme.notesapp.entities.Notes
+import com.example.jottnotes.dao.NoteDao
+import com.example.jottnotes.entities.Notes
@Database(entities = [Notes::class], version = 1, exportSchema = false)
abstract class NotesDatabase : RoomDatabase() {
@@ -26,5 +26,5 @@ abstract class NotesDatabase : RoomDatabase() {
}
}
- abstract fun noteDao():NoteDao
+ abstract fun noteDao(): NoteDao
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/jottnotes/entities/Notes.kt b/app/src/main/java/com/example/jottnotes/entities/Notes.kt
index 176ffdc..1a3c1d7 100644
--- a/app/src/main/java/com/example/jottnotes/entities/Notes.kt
+++ b/app/src/main/java/com/example/jottnotes/entities/Notes.kt
@@ -1,5 +1,5 @@
-package com.codingwithme.notesapp.entities
+package com.example.jottnotes.entities
import androidx.room.ColumnInfo
import androidx.room.Entity
diff --git a/app/src/main/res/drawable-v24/img_bar_dots.png b/app/src/main/res/drawable-v24/img_bar_dots.png
new file mode 100644
index 0000000..8725979
Binary files /dev/null and b/app/src/main/res/drawable-v24/img_bar_dots.png differ
diff --git a/app/src/main/res/drawable-v24/note_color_2.xml b/app/src/main/res/drawable-v24/note_color_2.xml
new file mode 100644
index 0000000..eb35958
--- /dev/null
+++ b/app/src/main/res/drawable-v24/note_color_2.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v24/note_color_4.xml b/app/src/main/res/drawable-v24/note_color_4.xml
new file mode 100644
index 0000000..4613595
--- /dev/null
+++ b/app/src/main/res/drawable-v24/note_color_4.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v24/note_color_5.xml b/app/src/main/res/drawable-v24/note_color_5.xml
new file mode 100644
index 0000000..40fc8aa
--- /dev/null
+++ b/app/src/main/res/drawable-v24/note_color_5.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v24/note_color_6.xml b/app/src/main/res/drawable-v24/note_color_6.xml
new file mode 100644
index 0000000..eaa89b4
--- /dev/null
+++ b/app/src/main/res/drawable-v24/note_color_6.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v24/note_color_7.xml b/app/src/main/res/drawable-v24/note_color_7.xml
new file mode 100644
index 0000000..9822721
--- /dev/null
+++ b/app/src/main/res/drawable-v24/note_color_7.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_baseline_image_24.xml b/app/src/main/res/drawable/ic_baseline_image_24.xml
deleted file mode 100644
index d789b6b..0000000
--- a/app/src/main/res/drawable/ic_baseline_image_24.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_delete.xml b/app/src/main/res/drawable/ic_delete.xml
new file mode 100644
index 0000000..bc63a67
--- /dev/null
+++ b/app/src/main/res/drawable/ic_delete.xml
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_folder.xml b/app/src/main/res/drawable/ic_folder.xml
new file mode 100644
index 0000000..2eb53a2
--- /dev/null
+++ b/app/src/main/res/drawable/ic_folder.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_image.xml b/app/src/main/res/drawable/ic_image.xml
new file mode 100644
index 0000000..83b37ec
--- /dev/null
+++ b/app/src/main/res/drawable/ic_image.xml
@@ -0,0 +1,12 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_link.xml b/app/src/main/res/drawable/ic_link.xml
new file mode 100644
index 0000000..7ea1907
--- /dev/null
+++ b/app/src/main/res/drawable/ic_link.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_tick.xml b/app/src/main/res/drawable/ic_tick.xml
new file mode 100644
index 0000000..6349e97
--- /dev/null
+++ b/app/src/main/res/drawable/ic_tick.xml
@@ -0,0 +1,10 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/img_bar_dots.xml b/app/src/main/res/drawable/img_bar_dots.xml
new file mode 100644
index 0000000..6439bcc
--- /dev/null
+++ b/app/src/main/res/drawable/img_bar_dots.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/note_color_1.xml b/app/src/main/res/drawable/note_color_1.xml
new file mode 100644
index 0000000..96d47c3
--- /dev/null
+++ b/app/src/main/res/drawable/note_color_1.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/scrollview.xml b/app/src/main/res/drawable/scrollview.xml
index b5abf46..a7e8560 100644
--- a/app/src/main/res/drawable/scrollview.xml
+++ b/app/src/main/res/drawable/scrollview.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/app/src/main/res/layout/fragment_folder.xml b/app/src/main/res/layout/fragment_folder.xml
new file mode 100644
index 0000000..5d4745c
--- /dev/null
+++ b/app/src/main/res/layout/fragment_folder.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_main_page.xml b/app/src/main/res/layout/fragment_main_page.xml
index b987f00..520757b 100644
--- a/app/src/main/res/layout/fragment_main_page.xml
+++ b/app/src/main/res/layout/fragment_main_page.xml
@@ -73,15 +73,19 @@
android:layout_height="wrap_content"/>
+
-
+ app:layout_constraintTop_toBottomOf="@id/tabs"
+ app:layout_constraintVertical_bias="0.6"
+ tools:layout_editor_absoluteX="13dp" />
+ tools:context=".NotesPage">
-
@@ -24,22 +27,46 @@
android:id="@+id/note_back_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:background="@drawable/back">
+ android:layout_weight="10"
+ android:background="@drawable/back"
+ app:layout_constraintRight_toLeftOf="@id/note_heading"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
+ android:textStyle="bold"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toStartOf="@+id/imgDone"
+ app:layout_constraintStart_toEndOf="@+id/note_back_button"
+ app:layout_constraintTop_toTopOf="parent" />
+
+
-
+
+
@@ -105,20 +136,20 @@
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp"
+ android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent">
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent">
-
+ android:layout_gravity="center_horizontal"
+ android:background="@drawable/img_bar_dots" />
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_notes_page_bottom_sheet.xml b/app/src/main/res/layout/fragment_notes_page_bottom_sheet.xml
new file mode 100644
index 0000000..66e07d4
--- /dev/null
+++ b/app/src/main/res/layout/fragment_notes_page_bottom_sheet.xml
@@ -0,0 +1,288 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_rv.xml b/app/src/main/res/layout/fragment_rv.xml
index 30179d0..5260480 100644
--- a/app/src/main/res/layout/fragment_rv.xml
+++ b/app/src/main/res/layout/fragment_rv.xml
@@ -5,10 +5,9 @@
android:layout_height="match_parent"
tools:context=".RvFragment">
-
-
+ android:layout_height="wrap_content"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/home_grids.xml b/app/src/main/res/layout/home_grids.xml
deleted file mode 100644
index aebfcee..0000000
--- a/app/src/main/res/layout/home_grids.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/rvcard.xml b/app/src/main/res/layout/rvcard.xml
new file mode 100644
index 0000000..8b021d4
--- /dev/null
+++ b/app/src/main/res/layout/rvcard.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index edd1ef7..8406ab2 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -15,4 +15,13 @@
#030800
#232323
+ #606570
+ #4e33ff
+ #ffd633
+ #ffffff
+ #ae3b76
+ #0aebaf
+ #ff7746
+ #202734
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 9db2bf1..1b638e6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ buildscript {
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.2"
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31"
+ classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files