Skip to content
Open
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
22 changes: 22 additions & 0 deletions .whitesource
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"scanSettings": {
"configMode": "AUTO",
"configExternalURL": "",
"projectToken": "",
"baseBranches": []
},
"checkRunSettings": {
"vulnerableCheckRunConclusionLevel": "failure",
"displayMode": "diff",
"useMendCheckNames": true
},
"issueSettings": {
"minSeverityLevel": "LOW",
"issueType": "DEPENDENCY"
},
"remediateSettings": {
"workflowRules": {
"enabled": true
}
}
}
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
android:exported="true"
android:label="@string/app_name">
<intent-filter>
<data android:name="android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION" />
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Expand Down
27 changes: 24 additions & 3 deletions app/src/main/java/com/teavaro/teavarodemoapp/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
package com.teavaro.teavarodemoapp

import android.content.Intent
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import com.teavaro.teavarodemoapp.core.Store
import com.teavaro.teavarodemoapp.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
Expand Down Expand Up @@ -37,13 +41,17 @@ class MainActivity : AppCompatActivity() {
supportActionBar?.setDisplayShowTitleEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(R.mipmap.ic_logo)


}

override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.login_menu, menu)
val idLogin = menu.getItem(0).itemId
val idLogout = menu.getItem(1).itemId
if(Store.isLogin)
menu.removeItem(idLogin)
else
menu.removeItem(idLogout)
return true
}

Expand All @@ -58,7 +66,20 @@ class MainActivity : AppCompatActivity() {
navController.navigate(R.id.navigation_login)
}
R.id.menu_logout -> {
navController.navigate(R.id.navigation_home)
val builder = AlertDialog.Builder(this)
builder.setTitle("Logout confirmation")
.setMessage("Do you want to proceed with the logout?")
.setNegativeButton("Cancel") {_,_ ->

}
.setPositiveButton("Proceed") { _, _ ->
Store.isLogin = false
val startIntent = Intent(this, MainActivity::class.java)
startIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
startActivity(startIntent)
Toast.makeText(this, "Logout success!", Toast.LENGTH_SHORT).show()
}
.create().show()
}
else -> navController.navigate(R.id.navigation_home)
}
Expand Down
12 changes: 12 additions & 0 deletions app/src/main/java/com/teavaro/teavarodemoapp/core/Item.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.teavaro.teavarodemoapp.core

data class Item (
var id: Int,
var title: String,
var price: Float,
var picture: String,
var isOffer: Boolean = false,
var isInStock: Boolean = true,
var isWish: Boolean = false,
var countOnCart: Int = 0
)
79 changes: 79 additions & 0 deletions app/src/main/java/com/teavaro/teavarodemoapp/core/Store.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package com.teavaro.teavarodemoapp.core

object Store {

private var listItems: ArrayList<Item> = ArrayList()
var isLogin = false

init {
listItems.add(Item(0, "Jacob’s Baked Crinklys Cheese", 60.00f, "crinklys", true))
listItems.add(Item(1, "Pork Cocktail Sausages, Pack", 54.00f, "pork", true, false))
listItems.add(Item(2, "Broccoli and Cauliflower Mix", 6.00f, "cauliflower"))
listItems.add(Item(3, "Morrisons Creamed Rice Pudding", 44.00f, "paprika"))
listItems.add(Item(4, "Fresh For The Bold Ground Amazon", 12.00f, "burst"))
listItems.add(Item(5, "Frito-Lay Doritos & Cheetos Mix", 20.00f, "watermelon"))
listItems.add(Item(6, "Green Mountain Coffee Roast", 20.00f, "grapes"))
listItems.add(Item(7, "Nature’s Bakery Whole Wheat Bars", 50.00f, "mixed"))
}

fun addItemToCart(id: Int) {
listItems[id].countOnCart += 1
}

fun removeItemFromCart(id: Int) {
listItems[id].countOnCart = 0
}

fun addItemToWish(id: Int) {
listItems[id].isWish = true
}

fun removeItemFromWish(id: Int) {
listItems[id].isWish = false
}

fun getItems(): ArrayList<Item> {
return listItems
}

fun getItemsCart(): ArrayList<Item> {
val listCart = ArrayList<Item>()
for (item in listItems) {
if (item.countOnCart > 0)
listCart.add(item)
}
return listCart
}

fun getItemsWish(): ArrayList<Item> {
val listWish = ArrayList<Item>()
for (item in listItems) {
if (item.isWish)
listWish.add(item)
}
return listWish
}

fun getTotalPriceCart(): Float {
var total = 0f
for (item in listItems) {
total += item.price * item.countOnCart
}
return total
}

fun getItemsOffer(): ArrayList<Item> {
val listOffer = ArrayList<Item>()
for (item in listItems) {
if (item.isOffer)
listOffer.add(item)
}
return listOffer
}

fun removeAllCartItems() {
for (item in listItems) {
item.countOnCart = 0
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,35 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.Toast
import androidx.navigation.findNavController
import com.teavaro.teavarodemoapp.R
import com.teavaro.teavarodemoapp.core.Item
import com.teavaro.teavarodemoapp.core.Store
import kotlinx.android.synthetic.main.item_cart.view.*
import kotlinx.android.synthetic.main.item_cart.view.txtPrice
import kotlinx.android.synthetic.main.item_cart.view.txtTitle
import kotlinx.android.synthetic.main.item_shop.view.*

class CartAdapter(context: Context,
private val listItems: List<String>) :
ArrayAdapter<String>(context, 0, listItems) {
private val listItems: List<Item>) :
ArrayAdapter<Item>(context, 0, listItems) {

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val layout = LayoutInflater.from(context).inflate(R.layout.item_shop,parent, false)
val layout = LayoutInflater.from(context).inflate(R.layout.item_cart,parent, false)

val item = listItems[position]
layout.txtTitle.text = item
val subTotal: Float = item.price * item.countOnCart
layout.txtTitle.text = item.title
layout.txtPrice.text = item.price.toString()
layout.txtCount.text = item.countOnCart.toString()
layout.txtSubTotal.text = "$$subTotal / piece"

layout.btnRemove.setOnClickListener {
Store.removeItemFromCart(item.id)
parent.findNavController().navigate(R.id.navigation_cart)
Toast.makeText(context, "Product removed!", Toast.LENGTH_SHORT).show()
}

return layout
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
package com.teavaro.teavarodemoapp.ui.cart

import android.app.AlertDialog
import android.content.DialogInterface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import android.widget.LinearLayout
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.findNavController
import com.teavaro.teavarodemoapp.R
import com.teavaro.teavarodemoapp.core.Store
import com.teavaro.teavarodemoapp.databinding.FragmentCartBinding
import com.teavaro.teavarodemoapp.ui.shop.ShopAdapter

class CartFragment : Fragment() {

Expand All @@ -28,14 +35,35 @@ class CartFragment : Fragment() {
_binding = FragmentCartBinding.inflate(inflater, container, false)
val root: View = binding.root

// val textView: TextView = binding.textCart
// cartViewModel.text.observe(viewLifecycleOwner) {
// textView.text = it
// }
var list = Store.getItemsCart()
val cartAdapter = CartAdapter(requireContext(), list)
for (pos in 0..list.lastIndex){
container?.let {
binding.listItems.addView(cartAdapter.getView(pos, view, it), 0)
}
}

val cartAdapter = CartAdapter(requireContext(), listOf("Puerco", "Pollo", "Picadillo"))
val lvItems = binding.listItems
lvItems.adapter = cartAdapter
binding.txtTotal.text = "$${Store.getTotalPriceCart()} in total"

if(cartAdapter.count == 0)
binding.txtEmpty.visibility = LinearLayout.VISIBLE
else
binding.layTotal.visibility = LinearLayout.VISIBLE

binding.btnCheckout.setOnClickListener {
val builder = AlertDialog.Builder(context)
builder.setTitle("Checkout confirmation")
.setMessage("Do you want to proceed with checkout?")
.setNegativeButton("Cancel") {_,_ ->

}
.setPositiveButton("Proceed") { _, _ ->
Store.removeAllCartItems()
root.findNavController().navigate(R.id.navigation_home)
Toast.makeText(context, "Success!", Toast.LENGTH_SHORT).show()
}
.create().show()
}

return root
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.findNavController
import com.teavaro.teavarodemoapp.R
import com.teavaro.teavarodemoapp.core.Store
import com.teavaro.teavarodemoapp.databinding.FragmentHomeBinding
import com.teavaro.teavarodemoapp.ui.shop.ShopAdapter

class HomeFragment : Fragment() {

Expand All @@ -28,10 +31,15 @@ class HomeFragment : Fragment() {
_binding = FragmentHomeBinding.inflate(inflater, container, false)
val root: View = binding.root

// val textView: TextView = binding.textHome
// homeViewModel.text.observe(viewLifecycleOwner) {
// textView.text = it
// }
var list = Store.getItemsOffer()
val shopAdapter = ShopAdapter(requireContext(), list)
for (pos in 0..list.lastIndex){
binding.listItems.addView(shopAdapter.getView(pos, view, container!!))
}

binding.btnExplore.setOnClickListener {
root.findNavController().navigate(R.id.navigation_shop)
}
return root
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package com.teavaro.teavarodemoapp.ui.login

import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import com.teavaro.teavarodemoapp.databinding.FragmentCartBinding
import com.teavaro.teavarodemoapp.MainActivity
import com.teavaro.teavarodemoapp.core.Store
import com.teavaro.teavarodemoapp.databinding.FragmentLoginBinding


class LoginFragment : Fragment() {

private var _binding: FragmentLoginBinding? = null
Expand All @@ -29,10 +32,17 @@ class LoginFragment : Fragment() {
_binding = FragmentLoginBinding.inflate(inflater, container, false)
val root: View = binding.root

// val textView: TextView = binding.textLogin
// loginViewModel.text.observe(viewLifecycleOwner) {
// textView.text = it
// }
binding.btnLogin.setOnClickListener {
if (!binding.edtEmail.text.isNullOrEmpty() && !binding.edtPassword.text.isNullOrEmpty()) {
Store.isLogin = true
val startIntent = Intent(context, MainActivity::class.java)
startIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
startActivity(startIntent)
Toast.makeText(context, "Login success!", Toast.LENGTH_SHORT).show()
} else
Toast.makeText(context, "Need to insert email and password!", Toast.LENGTH_SHORT)
.show()
}
return root
}

Expand Down
Loading