diff --git a/app/build.gradle b/app/build.gradle index debcfaf..bc2ca49 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..b981957 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt @@ -2,10 +2,43 @@ package otus.gpb.homework.viewandresources import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.Menu +import androidx.appcompat.widget.Toolbar +import androidx.recyclerview.widget.RecyclerView +import otus.gpb.homework.viewandresources.cart.CartAdapter +import otus.gpb.homework.viewandresources.cart.CartData class CartActivity : AppCompatActivity() { + + private val cartAdapter: CartAdapter by lazy { CartAdapter() } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_cart) + var toolbar = findViewById(R.id.topAppBar) + setSupportActionBar(toolbar) + + val recyclerView = findViewById(R.id.cartRW) + recyclerView.adapter = cartAdapter + cartAdapter.createCarts(createCarts()) + } + + override fun onCreateOptionsMenu(menu: Menu?): Boolean { + menuInflater.inflate(R.menu.main_menu_card, menu) + return true + } + + private fun createCarts(): List { + + val carts = (1..15).map { + CartData( + headerTitle = "List item $it", + image = R.drawable.cart_image, + category = "category", + supporting = "Supporting line text lorem ipsum dolor sit amet, consectetur.", + price = "$35", + ) + }.toList() + return carts } -} \ 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..8da4a1d 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,22 @@ package otus.gpb.homework.viewandresources import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.Menu +import androidx.appcompat.widget.Toolbar class ContactsActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_contacts) + + var toolbar = findViewById(R.id.topAppBar) + toolbar.setTitle(R.string.personName) + setSupportActionBar(findViewById(R.id.topAppBar)) + } + + override fun onCreateOptionsMenu(menu: Menu?): Boolean { + menuInflater.inflate(R.menu.main_menu, menu) + return true } + } \ 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..38bf0ff 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt @@ -6,6 +6,7 @@ import android.widget.Button import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder + class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartAdapter.kt b/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartAdapter.kt new file mode 100644 index 0000000..5ea8747 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartAdapter.kt @@ -0,0 +1,38 @@ +package otus.gpb.homework.viewandresources.cart + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import otus.gpb.homework.viewandresources.R + +class CartAdapter : RecyclerView.Adapter() { + private var carts = listOf() + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): CartViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.cart_item, parent, false) + + return CartViewHolder(view) + } + + override fun onBindViewHolder( + holder: CartViewHolder, + position: Int + ) { + val item = carts.getOrNull(position) + item?.let { + holder.bind(it) + } + } + + override fun getItemCount(): Int { + return carts.size + } + + fun createCarts(newCarts: List) { + carts = newCarts + } +} diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartData.kt b/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartData.kt new file mode 100644 index 0000000..94917a1 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartData.kt @@ -0,0 +1,9 @@ +package otus.gpb.homework.viewandresources.cart + +data class CartData( + val image: Int, + val headerTitle: String, + val category: String, + val supporting: String, + val price: String, +) \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartViewHolder.kt b/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartViewHolder.kt new file mode 100644 index 0000000..f91b69f --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartViewHolder.kt @@ -0,0 +1,26 @@ +package otus.gpb.homework.viewandresources.cart + +import android.view.View +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import otus.gpb.homework.viewandresources.R + +class CartViewHolder( + private val viewCartItem: View, +) : RecyclerView.ViewHolder(viewCartItem) { + + private val image: ImageView by lazy { viewCartItem.findViewById(R.id.imageView) } + private val headerTitle: TextView by lazy { viewCartItem.findViewById(R.id.header_title) } + private val category: TextView by lazy { viewCartItem.findViewById(R.id.category) } + private val supporting: TextView by lazy { viewCartItem.findViewById(R.id.supporting) } + private val price: TextView by lazy { viewCartItem.findViewById(R.id.price) } + + fun bind(items: CartData) { + image.setImageResource(items.image) + headerTitle.text = items.headerTitle + category.text = items.category + supporting.text = items.supporting + price.text = items.price + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-nodpi/cart_image.png b/app/src/main/res/drawable-nodpi/cart_image.png new file mode 100644 index 0000000..3ff684e Binary files /dev/null and b/app/src/main/res/drawable-nodpi/cart_image.png differ diff --git a/app/src/main/res/drawable/address.xml b/app/src/main/res/drawable/address.xml new file mode 100644 index 0000000..ee4a635 --- /dev/null +++ b/app/src/main/res/drawable/address.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_arrow_back_24.xml b/app/src/main/res/drawable/baseline_arrow_back_24.xml new file mode 100644 index 0000000..eed1897 --- /dev/null +++ b/app/src/main/res/drawable/baseline_arrow_back_24.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/drawable/baseline_attach_file_24.xml b/app/src/main/res/drawable/baseline_attach_file_24.xml new file mode 100644 index 0000000..615ac2c --- /dev/null +++ b/app/src/main/res/drawable/baseline_attach_file_24.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/app/src/main/res/drawable/baseline_mic_24.xml b/app/src/main/res/drawable/baseline_mic_24.xml new file mode 100644 index 0000000..9d4e4cd --- /dev/null +++ b/app/src/main/res/drawable/baseline_mic_24.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/app/src/main/res/drawable/baseline_perm_identity_24.xml b/app/src/main/res/drawable/baseline_perm_identity_24.xml new file mode 100644 index 0000000..d732412 --- /dev/null +++ b/app/src/main/res/drawable/baseline_perm_identity_24.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/app/src/main/res/drawable/calendar.xml b/app/src/main/res/drawable/calendar.xml new file mode 100644 index 0000000..4cc77d2 --- /dev/null +++ b/app/src/main/res/drawable/calendar.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/drop.xml b/app/src/main/res/drawable/drop.xml new file mode 100644 index 0000000..b7fd08e --- /dev/null +++ b/app/src/main/res/drawable/drop.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/mood.xml b/app/src/main/res/drawable/mood.xml new file mode 100644 index 0000000..6ca55a5 --- /dev/null +++ b/app/src/main/res/drawable/mood.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/phone.xml b/app/src/main/res/drawable/phone.xml new file mode 100644 index 0000000..828cfc4 --- /dev/null +++ b/app/src/main/res/drawable/phone.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/round_close.xml b/app/src/main/res/drawable/round_close.xml new file mode 100644 index 0000000..5cbee6d --- /dev/null +++ b/app/src/main/res/drawable/round_close.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/sun.xml b/app/src/main/res/drawable/sun.xml new file mode 100644 index 0000000..df4fde7 --- /dev/null +++ b/app/src/main/res/drawable/sun.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_cart.xml b/app/src/main/res/layout/activity_cart.xml index 57dc4d4..20a6b4f 100644 --- a/app/src/main/res/layout/activity_cart.xml +++ b/app/src/main/res/layout/activity_cart.xml @@ -6,4 +6,56 @@ android:layout_height="match_parent" tools:context=".CartActivity"> + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_contacts.xml b/app/src/main/res/layout/activity_contacts.xml index 6ef087b..b602408 100644 --- a/app/src/main/res/layout/activity_contacts.xml +++ b/app/src/main/res/layout/activity_contacts.xml @@ -6,4 +6,41 @@ android:layout_height="match_parent" tools:context=".ContactsActivity"> + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 8ce09de..10fb998 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -10,7 +10,7 @@ android:id="@+id/cart_button" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="open cart" + android:text="@string/open_cart" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -20,7 +20,7 @@ android:id="@+id/signin_button" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="show sign in dialog" + android:text="@string/show_sign_in_dialog" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/cart_button" /> @@ -29,7 +29,7 @@ android:id="@+id/contacts_button" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="open contacts" + android:text="@string/open_contacts" app:layout_constraintBottom_toTopOf="@+id/cart_button" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> diff --git a/app/src/main/res/layout/cart_item.xml b/app/src/main/res/layout/cart_item.xml new file mode 100644 index 0000000..2ac9469 --- /dev/null +++ b/app/src/main/res/layout/cart_item.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/cart_price_block.xml b/app/src/main/res/layout/cart_price_block.xml new file mode 100644 index 0000000..6e7a053 --- /dev/null +++ b/app/src/main/res/layout/cart_price_block.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_signin.xml b/app/src/main/res/layout/dialog_signin.xml index 77d9ef6..c99b256 100644 --- a/app/src/main/res/layout/dialog_signin.xml +++ b/app/src/main/res/layout/dialog_signin.xml @@ -1,6 +1,104 @@ + android:layout_height="match_parent" + android:paddingTop="16dp" + android:paddingBottom="16dp"> + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/main_toolbar.xml b/app/src/main/res/layout/main_toolbar.xml new file mode 100644 index 0000000..bc259ed --- /dev/null +++ b/app/src/main/res/layout/main_toolbar.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/person_address_text_field.xml b/app/src/main/res/layout/person_address_text_field.xml new file mode 100644 index 0000000..dc08b05 --- /dev/null +++ b/app/src/main/res/layout/person_address_text_field.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/person_birthday_text_field.xml b/app/src/main/res/layout/person_birthday_text_field.xml new file mode 100644 index 0000000..b7efc78 --- /dev/null +++ b/app/src/main/res/layout/person_birthday_text_field.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/person_city_block.xml b/app/src/main/res/layout/person_city_block.xml new file mode 100644 index 0000000..14398fd --- /dev/null +++ b/app/src/main/res/layout/person_city_block.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/person_name_text_field.xml b/app/src/main/res/layout/person_name_text_field.xml new file mode 100644 index 0000000..bccf091 --- /dev/null +++ b/app/src/main/res/layout/person_name_text_field.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/person_notes_text_field.xml b/app/src/main/res/layout/person_notes_text_field.xml new file mode 100644 index 0000000..10e498a --- /dev/null +++ b/app/src/main/res/layout/person_notes_text_field.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/person_phone_block.xml b/app/src/main/res/layout/person_phone_block.xml new file mode 100644 index 0000000..34d68a5 --- /dev/null +++ b/app/src/main/res/layout/person_phone_block.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/main_menu.xml b/app/src/main/res/menu/main_menu.xml new file mode 100644 index 0000000..2b98080 --- /dev/null +++ b/app/src/main/res/menu/main_menu.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/main_menu_card.xml b/app/src/main/res/menu/main_menu_card.xml new file mode 100644 index 0000000..c098a6e --- /dev/null +++ b/app/src/main/res/menu/main_menu_card.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index b236109..65d14fe 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -3,5 +3,8 @@ \ 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 f8c6127..cfd83c9 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,10 +1,13 @@ #FFBB86FC + #FFDBBCE1 #FF6200EE #FF3700B3 #FF03DAC5 #FF018786 #FF000000 #FFFFFFFF + #FF3E5F90 + #FFA7C8FF \ 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 a7036ac..3a4b9a9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,39 @@ View & Resources + Open + Save + attach + Settings + back + Ivan Petrov + Name + Phone + Select + Address + City + Country + Date + Notes + Save + cart image + List item 1 + $35 + open cart + show sign in dialog + open contacts + 4 items in your cart + Subtotal: + $140 + Shipping: + $25 + Tax: + $10.50 + Order Total: + $175.50 + Price order + mood + Login + Password + Reset my password + Cancel \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 62ec3ea..efd093c 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -3,6 +3,8 @@