diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 9c99d4c..3509c3c 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -4,29 +4,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
diff --git a/app/src/main/java/com/timber/soft/mylivewallpaper/data/AppDatabase.kt b/app/src/main/java/com/timber/soft/mylivewallpaper/data/AppDatabase.kt
new file mode 100644
index 0000000..f53db87
--- /dev/null
+++ b/app/src/main/java/com/timber/soft/mylivewallpaper/data/AppDatabase.kt
@@ -0,0 +1,25 @@
+package com.timber.soft.mylivewallpaper.data
+
+import androidx.room.Database
+import androidx.room.Room
+import androidx.room.RoomDatabase
+import com.timber.soft.mylivewallpaper.tools.AppFinalString
+import com.timber.soft.mylivewallpaper.tools.MyApplication
+
+@Database(
+ entities = [WallpaperData::class], version = AppFinalString.DB_VERSION, exportSchema = false
+)
+abstract class AppDatabase : RoomDatabase() {
+ companion object {
+ val dataBase: AppDatabase by lazy {
+ getInstance()
+ }
+
+ private fun getInstance(): AppDatabase {
+ return Room.databaseBuilder(
+ MyApplication.appContext, AppDatabase::class.java, AppFinalString.DB_NAME
+ ).build()
+ }
+ }
+ abstract fun getWallpaperDao(): WallpaperDao
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/timber/soft/mylivewallpaper/data/WallpaperDao.kt b/app/src/main/java/com/timber/soft/mylivewallpaper/data/WallpaperDao.kt
index c3d9fb6..98b5ae8 100644
--- a/app/src/main/java/com/timber/soft/mylivewallpaper/data/WallpaperDao.kt
+++ b/app/src/main/java/com/timber/soft/mylivewallpaper/data/WallpaperDao.kt
@@ -8,7 +8,7 @@ import androidx.room.Update
@Dao
interface WallpaperDao {
- @Query("select * from wallpaper where isCollect = :collect ")
+ @Query("select * from t_wallpaper where isCollect = :collect ")
suspend fun getCollectData(collect: Boolean = true): List
@Update
diff --git a/app/src/main/java/com/timber/soft/mylivewallpaper/tools/AppFinalString.kt b/app/src/main/java/com/timber/soft/mylivewallpaper/tools/AppFinalString.kt
index 16d610e..8208084 100644
--- a/app/src/main/java/com/timber/soft/mylivewallpaper/tools/AppFinalString.kt
+++ b/app/src/main/java/com/timber/soft/mylivewallpaper/tools/AppFinalString.kt
@@ -1,6 +1,10 @@
package com.timber.soft.mylivewallpaper.tools
object AppFinalString {
- const val TABLE_NAME_WALLPAPER = "wallpaper"
+
+ const val DB_NAME = "wallpaper_db"
+ const val DB_VERSION = 1
+ const val TABLE_NAME_WALLPAPER = "t_wallpaper"
const val KEY_EXTRA = "KEY_EXTRA"
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/activity/DetailActivity.kt b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/activity/DetailActivity.kt
index da5537c..655894d 100644
--- a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/activity/DetailActivity.kt
+++ b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/activity/DetailActivity.kt
@@ -1,6 +1,8 @@
package com.timber.soft.mylivewallpaper.ui.activity
+import android.graphics.Color
import android.graphics.drawable.Drawable
+import android.os.Build
import android.util.Log
import android.view.View
import android.widget.Toast
@@ -11,11 +13,15 @@ import com.bumptech.glide.load.engine.GlideException
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
import com.bumptech.glide.request.RequestListener
import com.bumptech.glide.request.target.Target
+import com.timber.soft.mylivewallpaper.data.AppDatabase
import com.timber.soft.mylivewallpaper.data.WallpaperData
import com.timber.soft.mylivewallpaper.databinding.ActivityDetailsBinding
import com.timber.soft.mylivewallpaper.tools.AppFinalString
import com.timber.soft.mylivewallpaper.tools.AppTools.isExist
import com.timber.soft.mylivewallpaper.ui.customerView.DownLoadDialog
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
class DetailActivity : BaseActivity(), View.OnClickListener {
@@ -28,8 +34,15 @@ class DetailActivity : BaseActivity(), View.OnClickListener {
}
override fun initViews() {
- super.initViews()
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ window.decorView.systemUiVisibility =
+ (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
+ window.statusBarColor = Color.TRANSPARENT
+ }
+
wallpaperData = intent.getSerializableExtra(AppFinalString.KEY_EXTRA) as WallpaperData
+
initButton()
initPreImg()
@@ -38,8 +51,7 @@ class DetailActivity : BaseActivity(), View.OnClickListener {
private fun initPreImg() {
Glide.with(this).load(wallpaperData.thumbnail)
.transition(DrawableTransitionOptions.withCrossFade())
- .diskCacheStrategy(DiskCacheStrategy.ALL)
- .listener(object : RequestListener {
+ .diskCacheStrategy(DiskCacheStrategy.ALL).listener(object : RequestListener {
override fun onLoadFailed(
e: GlideException?,
model: Any?,
@@ -75,6 +87,7 @@ class DetailActivity : BaseActivity(), View.OnClickListener {
binding.detailsCollect.setOnClickListener(this)
binding.detailsSet.setOnClickListener(this)
binding.detailsPlayButton.setOnClickListener(this)
+ binding.detailsCollect.isSelected = wallpaperData.isCollect
}
override fun onClick(v: View?) {
@@ -88,7 +101,7 @@ class DetailActivity : BaseActivity(), View.OnClickListener {
}
binding.detailsCollect -> {
- Log.e("onclick", "detailsCollect has been click!")
+ setCollect()
}
binding.detailsPlayButton -> {
@@ -101,12 +114,37 @@ class DetailActivity : BaseActivity(), View.OnClickListener {
}
}
- private fun showDownloadDialog() {
+ private fun setCollect() {
+ if (!binding.detailsCollect.isSelected) {
+ binding.detailsCollect.isSelected = !binding.detailsCollect.isSelected
+ Toast.makeText(
+ this@DetailActivity, "You have collected this sound.", Toast.LENGTH_SHORT
+ ).show()
+ CoroutineScope(Dispatchers.IO).launch {
+ AppDatabase.dataBase.getWallpaperDao().insertData(wallpaperData.apply {
+ isCollect = binding.detailsCollect.isSelected
+ })
+ }
+ } else {
+ binding.detailsCollect.isSelected = !binding.detailsCollect.isSelected
+ Toast.makeText(
+ this@DetailActivity, "You have unfavorite this sound.", Toast.LENGTH_SHORT
+ ).show()
+ CoroutineScope(Dispatchers.IO).launch {
+ AppDatabase.dataBase.getWallpaperDao().deleteData(wallpaperData.apply {
+ isCollect = binding.detailsCollect.isSelected
+ })
+ }
+ }
+ }
+
+ private fun showDownloadDialog() {
+ Log.e("file_play", "file is null!")
}
private fun playVideo() {
-
+ Log.e("file_play", "file is exist!")
}
private fun isExist(): Boolean {
diff --git a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/adapter/RateStartAdapter.kt b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/adapter/RateStartAdapter.kt
index 1b785c1..a553bc1 100644
--- a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/adapter/RateStartAdapter.kt
+++ b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/adapter/RateStartAdapter.kt
@@ -1,4 +1,59 @@
package com.timber.soft.mylivewallpaper.ui.adapter
-class RateStartAdapter {
+import android.annotation.SuppressLint
+import android.content.Context
+import android.service.autofill.OnClickAction
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.timber.soft.mylivewallpaper.databinding.FragmentRateBinding
+import com.timber.soft.mylivewallpaper.databinding.ItemRateStartBinding
+
+class RateStartAdapter(
+ private val context: Context,
+ private var clickAction: (Int) -> Unit
+) : RecyclerView.Adapter() {
+
+ private var clickPos: Int? = null
+ fun getRate(): Int? = clickPos
+
+ @SuppressLint("NotifyDataSetChanged")
+ inner class RateViewHolder(private val binding: ItemRateStartBinding) :
+ RecyclerView.ViewHolder(binding.root) {
+ init {
+// binding.root.setOnClickListener {
+// val position = bindingAdapterPosition
+// if (position != RecyclerView.NO_POSITION) {
+// clickAction.invoke(position)
+// }
+// }
+ }
+
+ fun bind(position: Int) {
+ clickPos?.let {
+ binding.itemStart.isSelected = position <= it
+ }
+ binding.consStart.setOnClickListener {
+ clickAction.invoke(position)
+ clickPos = position
+ notifyDataSetChanged()
+ }
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RateViewHolder =
+ RateViewHolder(
+ ItemRateStartBinding.inflate(
+ LayoutInflater.from(parent.context),
+ parent,
+ false
+ )
+ )
+
+
+ override fun getItemCount(): Int = 5
+
+ override fun onBindViewHolder(holder: RateViewHolder, position: Int) {
+ holder.bind(position)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/BaseFragment.kt b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/BaseFragment.kt
index a00d232..6face8d 100644
--- a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/BaseFragment.kt
+++ b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/BaseFragment.kt
@@ -21,6 +21,7 @@ abstract class BaseFragment : Fragment() {
}
open fun initViews() {
+
}
abstract fun getFragmentContentView(): View
diff --git a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/RateFragment.kt b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/RateFragment.kt
index b86a68d..2d761bb 100644
--- a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/RateFragment.kt
+++ b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/RateFragment.kt
@@ -1,7 +1,9 @@
package com.timber.soft.mylivewallpaper.ui.fragment
+import android.content.Intent
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
+import android.net.Uri
import android.os.Bundle
import android.view.Gravity
import android.view.LayoutInflater
@@ -10,6 +12,7 @@ import android.view.ViewGroup
import android.view.WindowManager
import androidx.fragment.app.DialogFragment
import androidx.recyclerview.widget.LinearLayoutManager
+import com.timber.soft.mylivewallpaper.R
import com.timber.soft.mylivewallpaper.databinding.FragmentRateBinding
import com.timber.soft.mylivewallpaper.ui.adapter.RateStartAdapter
@@ -31,9 +34,7 @@ class RateFragment : DialogFragment() {
}
override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
+ inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
binding = FragmentRateBinding.inflate(layoutInflater)
return binding.root
@@ -60,8 +61,40 @@ class RateFragment : DialogFragment() {
private fun initDialog() {
binding.run {
-
+ rateStartAdapter = RateStartAdapter(requireContext()) {
+ tvRateIt.run {
+ isSelected = true
+ isClickable = true
+ }
+ }
+ recyclerStart.apply {
+ adapter = rateStartAdapter
+ layoutManager = LinearLayoutManager(requireContext()).apply {
+ orientation = LinearLayoutManager.HORIZONTAL
+ }
+ }
+ tvRateIt.run {
+ isSelected = false
+ isClickable = false
+ }
+ rateCancel.setOnClickListener() { dismiss() }
+ tvRateIt.setOnClickListener {
+ rateStartAdapter.getRate()?.let {
+ if (it >= 3) {
+ goRate()
+ dismiss()
+ } else {
+ dismiss()
+ }
+ }
+ }
}
}
+ private fun goRate() {
+ val intent = Intent("android.intent.action.VIEW")
+ val stringBuilder = getString(R.string.set_shop_link) + (requireContext().packageName)
+ intent.data = Uri.parse(stringBuilder)
+ startActivity(intent)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/SettingFragment.kt b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/SettingFragment.kt
index fa24116..4fada93 100644
--- a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/SettingFragment.kt
+++ b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/SettingFragment.kt
@@ -20,7 +20,7 @@ class SettingFragment : BaseFragment() {
override fun initViews() {
super.initViews()
binding.setLayoutRating.setOnClickListener {
- //TODO:no implement
+ RateFragment.newInstance(0, 0).show(childFragmentManager, "")
}
binding.setLayoutShare.setOnClickListener {
val url = getString(R.string.set_shop_link) + (activity?.packageName ?: "")
diff --git a/app/src/main/res/layout/fragment_collect.xml b/app/src/main/res/layout/fragment_collect.xml
index 77d9ef6..0ef716c 100644
--- a/app/src/main/res/layout/fragment_collect.xml
+++ b/app/src/main/res/layout/fragment_collect.xml
@@ -1,6 +1,31 @@
-
+ android:layout_height="match_parent"
+ android:background="@color/theme_color_light"
+ android:orientation="vertical"
+ tools:context=".ui.fragment.CollectFragment">
-
\ No newline at end of file
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_rate.xml b/app/src/main/res/layout/fragment_rate.xml
index f58ba9d..8017911 100644
--- a/app/src/main/res/layout/fragment_rate.xml
+++ b/app/src/main/res/layout/fragment_rate.xml
@@ -10,7 +10,7 @@
tools:context=".ui.fragment.RateFragment">
+ app:layout_constraintTop_toBottomOf="@id/rate_title" />
+ app:layout_constraintTop_toBottomOf="@id/rate_content" />
+ app:layout_constraintTop_toTopOf="@id/rate_cancel" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_rate_start.xml b/app/src/main/res/layout/item_rate_start.xml
new file mode 100644
index 0000000..b2c60b0
--- /dev/null
+++ b/app/src/main/res/layout/item_rate_start.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f9b3c85..286e044 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -13,6 +13,8 @@
CANCEL
RATE IT
+ My Collection
+
Set Wallpaper
Loading video...