Skip to content

Commit 11eba98

Browse files
authored
Merge pull request #22 from VectorVanguard/main
Updates
2 parents 0bde8a4 + 4e8ef6d commit 11eba98

31 files changed

+412
-49
lines changed

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ dependencies {
4040
implementation("androidx.constraintlayout:constraintlayout:2.2.1")
4141

4242
implementation("androidx.room:room-ktx:2.7.1")
43+
implementation(libs.androidx.activity)
4344
kapt("androidx.room:room-compiler:2.7.1")
4445

4546
testImplementation("junit:junit:4.13.2")

app/src/main/AndroidManifest.xml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
android:supportsRtl="true"
1414
android:theme="@style/Theme.Project"
1515
tools:targetApi="31">
16+
<activity
17+
android:name=".Activity.AdvertisingPage"
18+
android:exported="false" />
1619
<activity
1720
android:name=".Activity.MainActivity"
1821
android:exported="true">
@@ -22,12 +25,12 @@
2225
<category android:name="android.intent.category.LAUNCHER" />
2326
</intent-filter>
2427
</activity>
25-
<activity android:name=".Activity.WelcomeActivity"/>
26-
<activity android:name=".Activity.LogActivity"/>
27-
<activity android:name=".Activity.RegActivity"/>
28-
<activity android:name=".Activity.HomeActivity"/>
29-
<activity android:name=".Activity.ForgetPasswordActivity"/>
30-
<activity android:name=".Activity.FavoritesActivity"/>
28+
<activity android:name=".Activity.WelcomeActivity" />
29+
<activity android:name=".Activity.LogActivity" />
30+
<activity android:name=".Activity.RegActivity" />
31+
<activity android:name=".Activity.HomeActivity" />
32+
<activity android:name=".Activity.ForgetPasswordActivity" />
33+
<activity android:name=".Activity.FavoritesActivity" />
3134

3235
<meta-data
3336
android:name="preloaded_fonts"
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.example.projectfigma.Activity
2+
3+
import android.graphics.Paint
4+
import android.os.Bundle
5+
import android.widget.TextView
6+
import androidx.activity.enableEdgeToEdge
7+
import androidx.appcompat.app.AppCompatActivity
8+
import androidx.core.view.ViewCompat
9+
import androidx.core.view.WindowInsetsCompat
10+
import com.example.projectfigma.R
11+
12+
class AdvertisingPage : AppCompatActivity() {
13+
override fun onCreate(savedInstanceState: Bundle?) {
14+
super.onCreate(savedInstanceState)
15+
enableEdgeToEdge()
16+
setContentView(R.layout.activity_advertising_page)
17+
val tv: TextView = findViewById(R.id.customtext1piska)
18+
tv.paintFlags = tv.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
19+
20+
}
21+
}

app/src/main/java/com/example/projectfigma/Activity/FavoritesActivity.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,6 @@ class FavoritesActivity : AppCompatActivity() {
2020
setContentView(binding.root)
2121
StatusBar.hideStatusBar(window)
2222

23-
val dateBase = DataBase.getDb(this)
24-
25-
val rv = findViewById<RecyclerView>(R.id.rvFoods).apply {
26-
layoutManager = GridLayoutManager(context, 2)
27-
}
28-
2923
supportFragmentManager.beginTransaction()
3024
.replace(R.id.buttonPanel, BottomPanelFragment())
3125
.commit()

app/src/main/java/com/example/projectfigma/Activity/RegActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ class RegActivity() : AppCompatActivity(){
8585
binding.passwordEditText.text.toString(),
8686
email,
8787
binding.mobileNumberEdit.text.toString(),
88-
selectedDate ?: Date()
88+
selectedDate ?: Date(),
89+
favoriteDishesId = emptyList()
8990
)
9091

9192
Thread {

app/src/main/java/com/example/projectfigma/Adapters/FavoriteDishesAdapter.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ import android.widget.ImageView
77
import android.widget.TextView
88
import androidx.recyclerview.widget.RecyclerView
99
import com.bumptech.glide.Glide
10+
import com.example.projectfigma.DataBase.DataBase
1011
import com.example.projectfigma.Entites.Dishes
12+
import com.example.projectfigma.Entites.User
1113
import com.example.projectfigma.R
14+
import kotlin.coroutines.coroutineContext
1215

1316
class FavoriteFoodAdapter(
14-
private val items: MutableList<Dishes>
17+
private val items: MutableList<Dishes>,
18+
private val onFavoriteClick: (dish: Dishes) -> Unit
1519
) : RecyclerView.Adapter<FavoriteFoodAdapter.VH>() {
1620

1721
inner class VH(view: View) : RecyclerView.ViewHolder(view) {
@@ -34,16 +38,14 @@ class FavoriteFoodAdapter(
3438
holder.tvTitle.text = dish.name
3539
holder.tvDesc.text = dish.description
3640

37-
// загрузка изображения блюда
3841
Glide.with(holder.itemView)
3942
.load(dish.imageUri)
4043
.into(holder.imgFood)
4144

42-
// иконка категории
4345
holder.imgTag.setImageResource(dish.category.iconRes)
4446

45-
// иконка «избранное»— всегда заполнена
4647
holder.imgFavorite.setImageResource(R.drawable.ic_heart_border)
48+
holder.imgFavorite.setOnClickListener { onFavoriteClick(dish) }
4749
}
4850

4951
override fun getItemCount(): Int = items.size
@@ -54,4 +56,5 @@ class FavoriteFoodAdapter(
5456
items.addAll(newItems)
5557
notifyDataSetChanged()
5658
}
59+
5760
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.example.projectfigma.Converters
2+
3+
import androidx.room.TypeConverter
4+
5+
class ConvertersList {
6+
@TypeConverter
7+
fun fromIntList(value: List<Int>?): String = value?.joinToString(",") ?: ""
8+
@TypeConverter
9+
fun toIntList(value: String): List<Int> =
10+
if (value.isEmpty()) emptyList() else value.split(",").map { it.toInt() }
11+
}

app/src/main/java/com/example/projectfigma/DAO/DishesDao.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import androidx.room.OnConflictStrategy
77
import androidx.room.Query
88
import androidx.room.Update
99
import com.example.projectfigma.Entites.Dishes
10+
import com.example.projectfigma.Enums.DishCategory
1011

1112
@Dao
1213
interface DishesDao {
@@ -31,6 +32,12 @@ interface DishesDao {
3132
@Query("SELECT * FROM dishes b WHERE b.isRecommend = 1")
3233
fun getRecommend(): LiveData<List<Dishes>>
3334

35+
@Query("SELECT * FROM dishes d WHERE d.id = :id")
36+
fun getDishById(id : Int) : Dishes
37+
38+
@Query("SELECT * FROM dishes WHERE id IN (:ids)")
39+
fun getDishesByIds(ids: List<Int>): List<Dishes>
40+
3441
@Update
3542
suspend fun update(item: Dishes)
3643
}

app/src/main/java/com/example/projectfigma/DAO/UserDao.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,21 @@ package com.example.projectfigma.DAO
22

33
import androidx.room.Dao
44
import androidx.room.Insert
5+
import androidx.room.OnConflictStrategy
56
import androidx.room.Query
67
import androidx.room.Update
8+
import com.example.projectfigma.Entites.Dishes
79
import com.example.projectfigma.Entites.User
810

911
@Dao
1012
interface UserDao {
1113

12-
@Insert
14+
@Insert(onConflict = OnConflictStrategy.REPLACE)
1315
fun insertUser(item: User)
1416

17+
@Insert(onConflict = OnConflictStrategy.REPLACE)
18+
fun insertAll(items: List<User>)
19+
1520
@Update
1621
fun updateUser(user: User)
1722

app/src/main/java/com/example/projectfigma/DataBase/DataBase.kt

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.example.projectfigma.DataBase
22

33
import android.content.Context
4+
import android.text.style.TtsSpan
45
import androidx.room.Database
56
import androidx.room.Room
67
import androidx.room.RoomDatabase
78
import androidx.room.TypeConverters
89
import androidx.sqlite.db.SupportSQLiteDatabase
910
import com.example.projectfigma.Converters.ConvertToDishesCategory
11+
import com.example.projectfigma.Converters.ConvertersList
1012
import com.example.projectfigma.DAO.DishesDao
1113
import com.example.projectfigma.DAO.SettingsDao
1214
import com.example.projectfigma.DAO.SessionDao
@@ -22,12 +24,17 @@ import kotlinx.coroutines.CoroutineScope
2224
import kotlinx.coroutines.Dispatchers
2325
import kotlinx.coroutines.SupervisorJob
2426
import kotlinx.coroutines.launch
27+
import java.util.Date
2528

2629
@Database(
2730
entities = [User::class, Dishes::class, Session::class, AppSettings::class],
28-
version = 5
31+
version = 6
32+
)
33+
@TypeConverters(
34+
ConvertersToDateTime::class,
35+
ConvertToDishesCategory::class,
36+
ConvertersList::class
2937
)
30-
@TypeConverters(ConvertersToDateTime::class, ConvertToDishesCategory::class)
3138
abstract class DataBase : RoomDatabase() {
3239

3340
abstract fun getUserDao(): UserDao
@@ -41,6 +48,17 @@ abstract class DataBase : RoomDatabase() {
4148

4249
private val applicationScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
4350

51+
private fun prepopulateUsers(): List<User> = listOf(
52+
User(
53+
name = "TestUser",
54+
gmail = "test@yandex.ru",
55+
password = "1111",
56+
mobileNumber = "818412481",
57+
dateOfBirth = Date(),
58+
favoriteDishesId = listOf(1,2,3)
59+
)
60+
)
61+
4462
private fun prepopulateBestSellers(packageName: String) = listOf(
4563
Dishes(
4664
imageUri = "android.resource://$packageName/${R.drawable.best_seller_card_1}",
@@ -92,6 +110,16 @@ abstract class DataBase : RoomDatabase() {
92110
description = "Бургер",
93111
category = DishCategory.MEAL
94112
),
113+
Dishes(
114+
imageUri = "android.resource://$packageName/${R.drawable.roll}",
115+
price = 25.0,
116+
isBestSeller = false,
117+
isRecommend = true,
118+
rating = 5.0,
119+
name = "Роллы",
120+
description = "Роллы",
121+
category = DishCategory.VEGAN
122+
),
95123
Dishes(
96124
imageUri = "android.resource://$packageName/${R.drawable.roll}",
97125
price = 25.0,
@@ -121,10 +149,16 @@ abstract class DataBase : RoomDatabase() {
121149
applicationScope.launch {
122150
val database = getDb(appContext)
123151

124-
val bestSellerDao = database.getDishesDao()
125-
if (bestSellerDao.getAll().isEmpty()) {
126-
bestSellerDao.insertAll(prepopulateBestSellers(pkg))
152+
val dishesDao = database.getDishesDao()
153+
if (dishesDao.getAll().isEmpty()) {
154+
dishesDao.insertAll(prepopulateBestSellers(pkg))
155+
}
156+
157+
val userDao = database.getUserDao()
158+
if (userDao.getAllUsers().isEmpty()) {
159+
userDao.insertAll(prepopulateUsers())
127160
}
161+
128162
val settingsDao = database.getSettingsDao()
129163
settingsDao.upsert(AppSettings(id = 0, isFirstRun = true))
130164

0 commit comments

Comments
 (0)