Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("kotlin-kapt")
id("kotlin-parcelize")
}

android {
Expand Down Expand Up @@ -47,6 +48,9 @@ dependencies {
androidTestImplementation("androidx.test.ext:junit:1.2.1")
androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")

// JSON
implementation ("com.google.code.gson:gson:2.10.1")

// RecyclerView
implementation("androidx.recyclerview:recyclerview:1.2.1")
// CardView для скруглённых углов карточек
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.Project"
tools:targetApi="31">
<activity
android:name=".Activity.FoodDetailActivity"
android:exported="false" />
<activity
android:name=".Activity.MainActivity"
android:exported="true">
Expand All @@ -31,6 +34,9 @@
<activity android:name=".Activity.FavoritesActivity" />
<activity android:name=".Activity.BestSellerActivity" />
<activity android:name=".Activity.AdverstsingPageActivity" />
<activity android:name=".Activity.OrderHelpActivity" />
<activity android:name=".Activity.HelpCenterActivity" />
<activity android:name=".Activity.HelpActivity" />

<meta-data
android:name="preloaded_fonts"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.example.projectfigma.Activity

import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.bumptech.glide.Glide
import com.example.projectfigma.DataBase.DataBase
import com.example.projectfigma.Entites.Dishes
import com.example.projectfigma.Fragments.BottomPanelFragment
import com.example.projectfigma.R
import com.example.projectfigma.Util.Likes
import com.example.projectfigma.Util.StatusBar
import com.example.projectfigma.databinding.ActivityFavoritesBinding
import com.example.projectfigma.databinding.ActivityFoodDetailBinding
import kotlin.time.toDuration

class FoodDetailActivity : AppCompatActivity() {
private lateinit var binding: ActivityFoodDetailBinding
private lateinit var dataBase : DataBase
private lateinit var likes: Likes

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

dataBase = DataBase.getDb(this)
likes = Likes(dataBase)

binding = ActivityFoodDetailBinding.inflate(layoutInflater)
setContentView(binding.root)
StatusBar.hideStatusBar(window)

supportFragmentManager.beginTransaction()
.replace(R.id.buttonPanel, BottomPanelFragment())
.commit()

binding.exitArrow.setOnClickListener(){
startActivity(Intent(this@FoodDetailActivity,HomeActivity::class.java))
}

val dish = intent.getParcelableExtra<Dishes>("dish")

if(likes.isLike(dish)){
likes.setLikeButton(binding.likeButton, dish)
}

binding.likeButton.setOnClickListener(){
if (dish != null) {
likes.likeDish(dish,binding.likeButton)
}
}

dish?.let {
binding.nameDishHeader.text = it.name
binding.tvRating.text = it.rating.toString()
binding.textPrice.text = "$" + it.price.toString()
Glide.with(binding.imgFood)
.load(dish.imageUri)
.into(binding.imgFood)

binding.dishDescription.text = it.description
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.example.projectfigma.Activity

import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.LinearLayout
import androidx.appcompat.app.AppCompatActivity
import com.example.projectfigma.Fragments.BottomPanelFragment
import com.example.projectfigma.R
import com.example.projectfigma.Util.StatusBar

class HelpActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activiti_help)

val helpWithOrder = findViewById<LinearLayout>(R.id.help_with_order)
val helpCenter = findViewById<LinearLayout>(R.id.help_center)

helpWithOrder.setOnClickListener {
val intent = Intent(this, OrderHelpActivity::class.java)
startActivity(intent)
}

helpCenter.setOnClickListener {
val intent = Intent(this, HelpCenterActivity::class.java)
startActivity(intent)
}

StatusBar.hideStatusBar(window)

supportFragmentManager.beginTransaction()
.replace(R.id.buttonPanel, BottomPanelFragment())
.commit()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.example.projectfigma.Activity

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.projectfigma.Fragments.BottomPanelFragment
import com.example.projectfigma.R
import com.example.projectfigma.Util.StatusBar

class HelpCenterActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_help_center)

StatusBar.hideStatusBar(window)

supportFragmentManager.beginTransaction()
.replace(R.id.buttonPanel, BottomPanelFragment())
.commit()
}
}
34 changes: 16 additions & 18 deletions app/src/main/java/com/example/projectfigma/Activity/HomeActivity.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.example.projectfigma.Activity

import android.content.Intent
import android.os.Bundle
import android.widget.TextView
import android.widget.Toast
Expand All @@ -10,58 +11,55 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.projectfigma.Adapters.BestSellerAdapter
import com.example.projectfigma.DAO.DishesDao
import com.example.projectfigma.DAO.SessionDao
import com.example.projectfigma.DAO.UserDao
import com.example.projectfigma.DataBase.DataBase
import com.example.projectfigma.Entites.Dishes
import com.example.projectfigma.Entites.User
import com.example.projectfigma.Fragments.*
import com.example.projectfigma.R
import com.example.projectfigma.Util.StatusBar
import com.example.projectfigma.Util.SwitchCard

class HomeActivity : AppCompatActivity(),
HeaderButtonsFragment.Listener {

private lateinit var adapter: BestSellerAdapter
private lateinit var dao: DishesDao
private lateinit var userDao: UserDao
private lateinit var sessionDao: SessionDao
private lateinit var drawer: DrawerLayout

private var user: User? = null
private lateinit var user: User

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
StatusBar.hideStatusBar(window)

drawer = findViewById(R.id.drawer_layout)

val db = DataBase.getDb(this)
dao = db.getDishesDao()
userDao = db.getUserDao()
sessionDao = db.getSessionDao()
user = (sessionDao.getSession()?.user ?: null)!!

val email = intent.getStringExtra("user_email")
if (!email.isNullOrBlank()) {
user = userDao.getUserByEmail(email)
}
drawer = findViewById<DrawerLayout>(R.id.drawer_layout)

adapter = BestSellerAdapter(emptyList()) { item ->
SwitchCard.switchDish(
item,
this,
FoodDetailActivity::class.java
)
}
val rv = findViewById<RecyclerView>(R.id.rvBestSellers).apply {
layoutManager = LinearLayoutManager(
this@HomeActivity,
LinearLayoutManager.HORIZONTAL,
false
)
adapter = BestSellerAdapter(emptyList()) { item: Dishes ->
Toast.makeText(
this@HomeActivity,
"Clicked: ${item.price}",
Toast.LENGTH_SHORT
).show()
}.also { this@HomeActivity.adapter = it }
adapter = this@HomeActivity.adapter
}




dao.getBestSellersWithLimit(4).observe(this) { list ->
adapter.updateList(list)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,6 @@ class LogActivity : AppCompatActivity() {
val userDao = db.getUserDao()
val sessionDao = db.getSessionDao()

supportFragmentManager.beginTransaction()
.replace(R.id.buttonPanel, BottomPanelFragment())
.commit()

Password.setIsVisable(binding.passwordEditText)

binding.goToSignUp.setOnClickListener {
Expand Down Expand Up @@ -95,7 +91,7 @@ class LogActivity : AppCompatActivity() {
}
else -> {
withContext(Dispatchers.IO) {
sessionDao.upsert(Session(id = 0, isLoggedIn = true, userEmail = email))
sessionDao.upsert(Session(id = 0, isLoggedIn = true, userEmail = email, user = user))
}
Toast.makeText(this@LogActivity, "Вход успешен", Toast.LENGTH_SHORT).show()
startActivity(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.example.projectfigma.Activity

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.projectfigma.Fragments.BottomPanelFragment
import com.example.projectfigma.R
import com.example.projectfigma.Util.StatusBar

class OrderHelpActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_order_help)

StatusBar.hideStatusBar(window)

supportFragmentManager.beginTransaction()
.replace(R.id.buttonPanel, BottomPanelFragment())
.commit()

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,6 @@ class RegActivity() : AppCompatActivity(){
setupDatePicker()
Reg(binding, dateBase)

supportFragmentManager.beginTransaction()
.replace(R.id.buttonPanel, BottomPanelFragment())
.commit()

passwordEditText = binding.passwordEditText
Password.setIsVisable(passwordEditText)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import com.example.projectfigma.R

class BestSellerAdapter(
private var items: List<Dishes>,
private val onClick: (Dishes) -> Unit
private val switchToSelfPage: (Dishes) -> Unit
) : RecyclerView.Adapter<BestSellerAdapter.VH>() {

inner class VH(view: View) : RecyclerView.ViewHolder(view) {
Expand All @@ -26,7 +26,7 @@ class BestSellerAdapter(
.centerCrop()
.into(ivFood)

itemView.setOnClickListener { onClick(item) }
itemView.setOnClickListener { switchToSelfPage(item) }
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ import kotlin.coroutines.coroutineContext

class FavoriteFoodAdapter(
private val items: MutableList<Dishes>,
private val onFavoriteClick: (dish: Dishes) -> Unit
private val onFavoriteClick: (dish: Dishes) -> Unit,
private val switchToSelfPage: (Dishes) -> Unit
) : RecyclerView.Adapter<FavoriteFoodAdapter.VH>() {

inner class VH(view: View) : RecyclerView.ViewHolder(view) {
Expand Down Expand Up @@ -46,6 +47,8 @@ class FavoriteFoodAdapter(

holder.imgFavorite.setImageResource(R.drawable.ic_heart_border)
holder.imgFavorite.setOnClickListener { onFavoriteClick(dish) }

holder.itemView.setOnClickListener { switchToSelfPage(dish) }
}

override fun getItemCount(): Int = items.size
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ import com.bumptech.glide.Glide
import com.example.projectfigma.Entites.Dishes
import com.example.projectfigma.R

class MainBestSellerAdapter (private var dishes: List<Dishes>) :
class MainBestSellerAdapter (
private var dishes: List<Dishes>,
private val switchToSelfPage: (Dishes) -> Unit
) :
RecyclerView.Adapter<MainBestSellerAdapter.DishViewHolder>() {

inner class DishViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
Expand All @@ -31,7 +34,6 @@ class MainBestSellerAdapter (private var dishes: List<Dishes>) :
override fun onBindViewHolder(holder: DishViewHolder, position: Int) {
val dish = dishes[position]

// Используем Glide для загрузки изображения
Glide.with(holder.itemView.context)
.load(Uri.parse(dish.imageUri))
.into(holder.image)
Expand All @@ -41,6 +43,8 @@ class MainBestSellerAdapter (private var dishes: List<Dishes>) :
holder.description.text = dish.description
holder.price.text = "$${dish.price}"
holder.rating.text = "${dish.rating}"

holder.itemView.setOnClickListener { switchToSelfPage(dish) }
}

override fun getItemCount(): Int = dishes.size
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ import com.example.projectfigma.Entites.Dishes
import com.example.projectfigma.R

class MainRecommendAdapter(
private var dishes: List<Dishes>
private var dishes: List<Dishes>,
private val switchToSelfPage: (Dishes) -> Unit
) : RecyclerView.Adapter<MainRecommendAdapter.ViewHolder>() {

inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
Expand Down Expand Up @@ -41,6 +42,8 @@ class MainRecommendAdapter(
holder.tvDesc.text = dish.description
holder.tvPrice.text = "$" + dish.price.toString()
holder.tvRating.text = dish.rating.toString()

holder.itemView.setOnClickListener { switchToSelfPage(dish) }
}

override fun getItemCount(): Int = dishes.size
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ import com.example.projectfigma.R

class PromoAdapter(
private var items: List<Dishes>,
private val onBannerClick: () -> Unit) :
private val onBannerClick: () -> Unit
) :
RecyclerView.Adapter<PromoAdapter.VH>() {

inner class VH(view: View) : RecyclerView.ViewHolder(view) {
Expand Down
Loading
Loading