From 5ca3992e66b100a51bb3e7644d3b3cfbe4d5b123 Mon Sep 17 00:00:00 2001 From: Huawei Date: Fri, 11 Apr 2025 20:37:32 +0300 Subject: [PATCH] My homework is done --- app/build.gradle | 4 + .../homework/viewandresources/CartActivity.kt | 73 +++++- .../gpb/homework/viewandresources/CartItem.kt | 9 + .../viewandresources/CartItemViewHolder.kt | 15 ++ .../viewandresources/ContactsActivity.kt | 21 +- .../homework/viewandresources/ListAdapter.kt | 38 ++++ .../homework/viewandresources/MainActivity.kt | 7 + app/src/main/res/drawable/account.xml | 9 + .../main/res/drawable/bookmark_outline.xml | 9 + app/src/main/res/drawable/border_bottom.xml | 15 ++ .../main/res/drawable/border_gray_dark.xml | 7 + app/src/main/res/drawable/calendar_today.xml | 9 + app/src/main/res/drawable/cellphone_check.xml | 9 + .../res/drawable/close_circle_outline.xml | 9 + app/src/main/res/drawable/dots_vertical.xml | 9 + .../res/drawable/emoticon_excited_outline.xml | 9 + app/src/main/res/drawable/food_steak.xml | 9 + .../main/res/drawable/map_marker_outline.xml | 9 + app/src/main/res/drawable/menu_down.xml | 9 + app/src/main/res/drawable/microphone.xml | 9 + app/src/main/res/drawable/paperclip.xml | 9 + app/src/main/res/drawable/rectangle_gray.xml | 6 + .../main/res/drawable/white_balance_sunny.xml | 9 + app/src/main/res/layout/activity_cart.xml | 164 ++++++++++++++ app/src/main/res/layout/activity_contacts.xml | 210 ++++++++++++++++++ app/src/main/res/layout/cart_item.xml | 69 ++++++ app/src/main/res/layout/dialog_signin.xml | 105 ++++++++- app/src/main/res/menu/menu_cart.xml | 11 + app/src/main/res/menu/menu_contacts.xml | 16 ++ app/src/main/res/values-night/colors.xml | 16 ++ app/src/main/res/values-night/themes.xml | 5 + app/src/main/res/values/colors.xml | 16 +- app/src/main/res/values/strings.xml | 36 +++ app/src/main/res/values/themes.xml | 7 +- 34 files changed, 954 insertions(+), 13 deletions(-) create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/CartItem.kt create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/CartItemViewHolder.kt create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/ListAdapter.kt create mode 100644 app/src/main/res/drawable/account.xml create mode 100644 app/src/main/res/drawable/bookmark_outline.xml create mode 100644 app/src/main/res/drawable/border_bottom.xml create mode 100644 app/src/main/res/drawable/border_gray_dark.xml create mode 100644 app/src/main/res/drawable/calendar_today.xml create mode 100644 app/src/main/res/drawable/cellphone_check.xml create mode 100644 app/src/main/res/drawable/close_circle_outline.xml create mode 100644 app/src/main/res/drawable/dots_vertical.xml create mode 100644 app/src/main/res/drawable/emoticon_excited_outline.xml create mode 100644 app/src/main/res/drawable/food_steak.xml create mode 100644 app/src/main/res/drawable/map_marker_outline.xml create mode 100644 app/src/main/res/drawable/menu_down.xml create mode 100644 app/src/main/res/drawable/microphone.xml create mode 100644 app/src/main/res/drawable/paperclip.xml create mode 100644 app/src/main/res/drawable/rectangle_gray.xml create mode 100644 app/src/main/res/drawable/white_balance_sunny.xml create mode 100644 app/src/main/res/layout/cart_item.xml create mode 100644 app/src/main/res/menu/menu_cart.xml create mode 100644 app/src/main/res/menu/menu_contacts.xml create mode 100644 app/src/main/res/values-night/colors.xml diff --git a/app/build.gradle b/app/build.gradle index debcfaf..17f604f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,6 +29,10 @@ android { kotlinOptions { jvmTarget = '17' } + + buildFeatures{ + viewBinding = true + } } dependencies { diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt index b6cbf73..1f619fd 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt @@ -1,11 +1,80 @@ package otus.gpb.homework.viewandresources -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.Menu +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.Toolbar +import otus.gpb.homework.viewandresources.databinding.ActivityCartBinding + class CartActivity : AppCompatActivity() { + + private var orderTotal = 0.0 + private var subtotal = 0 + private var shipping = 25.0 + private var tax = 10.50 + private val listItem = mutableListOf() + private val binding by lazy { + ActivityCartBinding.inflate(layoutInflater) + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cart) + setContentView(binding.root) + setSupportActionBar(binding.myToolbar) + getSupportActionBar()?.setDisplayHomeAsUpEnabled(true) + getSupportActionBar()?.setDisplayShowHomeEnabled(true) + binding.myToolbar.setNavigationOnClickListener() { + val intent = MainActivity.newIntent(this) + startActivity(intent) + } + createListCartItem() + val adapter = ListAdapter() + adapter.list = listItem + binding.textViewCountItems.setText(String.format( + this.resources.getString(R.string.count_items), + adapter.list.size + )) + binding.recyclerViewCartList.adapter = adapter + calculateSubtotal() + calculateOrderTotal() + setResults() + } + + private fun calculateSubtotal(){ + var sum = 0 + for(cartItem in listItem){ + sum += cartItem.price + } + subtotal = sum + } + + private fun calculateOrderTotal(){ + orderTotal = tax + shipping + subtotal + } + private fun setResults(){ + binding.textViewShipping.setText(shipping.toString()) + binding.textViewSubtotal.setText(subtotal.toString()) + binding.textViewOrderTotal.setText(orderTotal.toString()) + binding.textViewTax.setText(tax.toString()) + } + + private fun createListCartItem() { + for(i in 1..4){ + val cartItem = CartItem(i, 35, CATEGORY, DESCRIPTION, IMAGE) + listItem.add(cartItem) + } + } + + override fun onCreateOptionsMenu(menu: Menu?): Boolean { + menuInflater.inflate(R.menu.menu_cart, menu) + return true + } + + companion object{ + private const val DESCRIPTION = "Supporting line text lorem ipsum..." + private const val CATEGORY = "Category" + private const val IMAGE = "drawable/food_steak" } } \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/CartItem.kt b/app/src/main/java/otus/gpb/homework/viewandresources/CartItem.kt new file mode 100644 index 0000000..2b6a117 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/CartItem.kt @@ -0,0 +1,9 @@ +package otus.gpb.homework.viewandresources + +class CartItem( + val index: Int, + val price: Int, + val category: String, + val description: String, + val image: String +) \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/CartItemViewHolder.kt b/app/src/main/java/otus/gpb/homework/viewandresources/CartItemViewHolder.kt new file mode 100644 index 0000000..522d47b --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/CartItemViewHolder.kt @@ -0,0 +1,15 @@ +package otus.gpb.homework.viewandresources + +import android.view.View +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView.ViewHolder + +class CartItemViewHolder(view: View): ViewHolder(view){ + + val textViewCategory = view.findViewById(R.id.textViewCategory) + val textViewDescription = view.findViewById(R.id.textViewDescription) + val textViewPrice = view.findViewById(R.id.textViewPrice) + val textViewNumber = view.findViewById(R.id.textViewNumber) + val imageView = view.findViewById(R.id.imageView) +} \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt index 25f1ffb..5ea0ef1 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt @@ -2,10 +2,29 @@ package otus.gpb.homework.viewandresources import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.Menu +import otus.gpb.homework.viewandresources.databinding.ActivityContactsBinding class ContactsActivity : AppCompatActivity() { + + private val binding by lazy { + ActivityContactsBinding.inflate(layoutInflater) + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_contacts) + setContentView(binding.root) + setSupportActionBar(binding.myToolbar) + getSupportActionBar()?.setDisplayHomeAsUpEnabled(true) + getSupportActionBar()?.setDisplayShowHomeEnabled(true) + binding.myToolbar.setNavigationOnClickListener() { + val intent = MainActivity.newIntent(this) + startActivity(intent) + } + } + + override fun onCreateOptionsMenu(menu: Menu?): Boolean { + menuInflater.inflate(R.menu.menu_contacts, menu) + return true } } \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/ListAdapter.kt b/app/src/main/java/otus/gpb/homework/viewandresources/ListAdapter.kt new file mode 100644 index 0000000..9163850 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/ListAdapter.kt @@ -0,0 +1,38 @@ +package otus.gpb.homework.viewandresources + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView.Adapter +import otus.gpb.homework.viewandresources.databinding.ActivityCartBinding +import otus.gpb.homework.viewandresources.databinding.CartItemBinding + +class ListAdapter: Adapter() { + + var list = listOf() + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CartItemViewHolder { + val view = LayoutInflater.from(parent.context).inflate(R.layout.cart_item, parent, false) + return CartItemViewHolder(view) + } + + override fun onBindViewHolder(holder: CartItemViewHolder, position: Int) { + val cartItem = list[position] + holder.textViewNumber.setText(String.format( + holder.itemView.context.resources.getString(R.string.number_of_list), + cartItem.index + )) + holder.textViewPrice.setText(String.format( + holder.itemView.context.resources.getString(R.string.price), + cartItem.price + )) + holder.textViewDescription.setText(cartItem.description) + holder.textViewCategory.setText(cartItem.category) + val resourceId = holder.itemView.context.resources.getIdentifier(cartItem.image, "drawable", holder.itemView.context.packageName) + holder.imageView.setImageResource(resourceId) + + } + + override fun getItemCount(): Int { + return list.size + } +} \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt index 22b779c..24434dc 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt @@ -1,5 +1,6 @@ package otus.gpb.homework.viewandresources +import android.content.Context import android.content.Intent import android.os.Bundle import android.widget.Button @@ -24,4 +25,10 @@ class MainActivity : AppCompatActivity() { .show() } } + + companion object{ + fun newIntent(context: Context): Intent { + return Intent(context, MainActivity::class.java) + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/account.xml b/app/src/main/res/drawable/account.xml new file mode 100644 index 0000000..0b3df07 --- /dev/null +++ b/app/src/main/res/drawable/account.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/bookmark_outline.xml b/app/src/main/res/drawable/bookmark_outline.xml new file mode 100644 index 0000000..aba09c0 --- /dev/null +++ b/app/src/main/res/drawable/bookmark_outline.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/border_bottom.xml b/app/src/main/res/drawable/border_bottom.xml new file mode 100644 index 0000000..dee8c06 --- /dev/null +++ b/app/src/main/res/drawable/border_bottom.xml @@ -0,0 +1,15 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_gray_dark.xml b/app/src/main/res/drawable/border_gray_dark.xml new file mode 100644 index 0000000..a6f8451 --- /dev/null +++ b/app/src/main/res/drawable/border_gray_dark.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/calendar_today.xml b/app/src/main/res/drawable/calendar_today.xml new file mode 100644 index 0000000..f248e35 --- /dev/null +++ b/app/src/main/res/drawable/calendar_today.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/cellphone_check.xml b/app/src/main/res/drawable/cellphone_check.xml new file mode 100644 index 0000000..e8b4cca --- /dev/null +++ b/app/src/main/res/drawable/cellphone_check.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/close_circle_outline.xml b/app/src/main/res/drawable/close_circle_outline.xml new file mode 100644 index 0000000..7d76a44 --- /dev/null +++ b/app/src/main/res/drawable/close_circle_outline.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/dots_vertical.xml b/app/src/main/res/drawable/dots_vertical.xml new file mode 100644 index 0000000..53254a9 --- /dev/null +++ b/app/src/main/res/drawable/dots_vertical.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/emoticon_excited_outline.xml b/app/src/main/res/drawable/emoticon_excited_outline.xml new file mode 100644 index 0000000..43d7e0d --- /dev/null +++ b/app/src/main/res/drawable/emoticon_excited_outline.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/food_steak.xml b/app/src/main/res/drawable/food_steak.xml new file mode 100644 index 0000000..19e567e --- /dev/null +++ b/app/src/main/res/drawable/food_steak.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/map_marker_outline.xml b/app/src/main/res/drawable/map_marker_outline.xml new file mode 100644 index 0000000..cf757b2 --- /dev/null +++ b/app/src/main/res/drawable/map_marker_outline.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/menu_down.xml b/app/src/main/res/drawable/menu_down.xml new file mode 100644 index 0000000..22bfc56 --- /dev/null +++ b/app/src/main/res/drawable/menu_down.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/microphone.xml b/app/src/main/res/drawable/microphone.xml new file mode 100644 index 0000000..715463e --- /dev/null +++ b/app/src/main/res/drawable/microphone.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/paperclip.xml b/app/src/main/res/drawable/paperclip.xml new file mode 100644 index 0000000..c2c6419 --- /dev/null +++ b/app/src/main/res/drawable/paperclip.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/rectangle_gray.xml b/app/src/main/res/drawable/rectangle_gray.xml new file mode 100644 index 0000000..bc70444 --- /dev/null +++ b/app/src/main/res/drawable/rectangle_gray.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/white_balance_sunny.xml b/app/src/main/res/drawable/white_balance_sunny.xml new file mode 100644 index 0000000..75e9b83 --- /dev/null +++ b/app/src/main/res/drawable/white_balance_sunny.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_cart.xml b/app/src/main/res/layout/activity_cart.xml index 57dc4d4..a3fb865 100644 --- a/app/src/main/res/layout/activity_cart.xml +++ b/app/src/main/res/layout/activity_cart.xml @@ -6,4 +6,168 @@ android:layout_height="match_parent" tools:context=".CartActivity"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +