diff --git a/demo-app/src/main/AndroidManifest.xml b/demo-app/src/main/AndroidManifest.xml index 1046456dd..a90f304be 100644 --- a/demo-app/src/main/AndroidManifest.xml +++ b/demo-app/src/main/AndroidManifest.xml @@ -18,9 +18,14 @@ android:usesCleartextTraffic="true" tools:targetApi="31"> + Unit, ) { diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/MainActivity.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/MainActivity.kt index 6e5c2a36e..0826204ac 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/MainActivity.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/MainActivity.kt @@ -28,8 +28,9 @@ import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import io.opentelemetry.android.demo.about.AboutActivity import io.opentelemetry.android.demo.theme.DemoAppTheme -import io.opentelemetry.android.demo.ui.shop.AstronomyShopActivity +import io.opentelemetry.android.demo.shop.ui.AstronomyShopActivity class MainActivity : ComponentActivity() { private val viewModel by viewModels() @@ -73,9 +74,13 @@ class MainActivity : ComponentActivity() { painterResource(id = R.drawable.otel_icon), ) val context = LocalContext.current - OpenStoreButton(text = "Click to begin", onClick = { + LauncherButton(text = "Go shopping", onClick = { context.startActivity(Intent(this@MainActivity, AstronomyShopActivity::class.java)) }) + LauncherButton(text = "Learn more", onClick = { + context.startActivity(Intent(this@MainActivity, AboutActivity::class.java)) + }) + } } Log.d(TAG, "Main Activity started ") diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/about/AboutActivity.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/about/AboutActivity.kt new file mode 100644 index 000000000..f01c42ee7 --- /dev/null +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/about/AboutActivity.kt @@ -0,0 +1,50 @@ +package io.opentelemetry.android.demo.about + +import android.content.Intent +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import com.google.android.material.bottomnavigation.BottomNavigationView +import io.opentelemetry.android.demo.MainActivity +import io.opentelemetry.android.demo.R + +class AboutActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_about) + + val bottomNavigationView: BottomNavigationView = findViewById(R.id.bottom_navigation) + + if (savedInstanceState == null) { + supportFragmentManager.beginTransaction() + .replace(R.id.fragment_container, AppFeaturesFragment()) + .commit() + bottomNavigationView.selectedItemId = R.id.navigation_app_features + } + + bottomNavigationView.setOnItemSelectedListener { item -> + when (item.itemId) { + R.id.navigation_exit -> { + val intent = Intent(this, MainActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK + startActivity(intent) + finish() + true + } + R.id.navigation_app_features -> { + supportFragmentManager.beginTransaction() + .replace(R.id.fragment_container, AppFeaturesFragment()) + .commit() + true + } + R.id.navigation_about_opentelemetry -> { + supportFragmentManager.beginTransaction() + .replace(R.id.fragment_container, AboutOpenTelemetryFragment()) + .commit() + true + } + else -> false + } + } + } +} diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/about/AboutOpenTelemetryFragment.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/about/AboutOpenTelemetryFragment.kt new file mode 100644 index 000000000..bb8bd9877 --- /dev/null +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/about/AboutOpenTelemetryFragment.kt @@ -0,0 +1,18 @@ +package io.opentelemetry.android.demo.about + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import io.opentelemetry.android.demo.R + +class AboutOpenTelemetryFragment : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.fragment_about_opentelemetry, container, false) + } +} \ No newline at end of file diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/about/AppFeaturesFragment.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/about/AppFeaturesFragment.kt new file mode 100644 index 000000000..66fa31a72 --- /dev/null +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/about/AppFeaturesFragment.kt @@ -0,0 +1,29 @@ +package io.opentelemetry.android.demo.about + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import io.opentelemetry.android.demo.R + +class AppFeaturesFragment : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val view = inflater.inflate(R.layout.fragment_app_features, container, false) + lateinit var featureAdapter: FeatureAdapter + val features = getFeatureList() + val recyclerView: RecyclerView = view.findViewById(R.id.recyclerView) + + featureAdapter = FeatureAdapter(features) + recyclerView.adapter = featureAdapter + recyclerView.layoutManager = LinearLayoutManager(requireContext()) + + return view + } +} diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/about/Feature.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/about/Feature.kt new file mode 100644 index 000000000..77205f6df --- /dev/null +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/about/Feature.kt @@ -0,0 +1,45 @@ +package io.opentelemetry.android.demo.about + +data class Feature( + val title: String, + val description: String, + var isExpanded: Boolean = false +) + +fun getFeatureList(): List { + return listOf( + Feature( + "Android Activity Lifecycle Monitoring", + """ + - Automatically captures spans for key lifecycle events: + - Created: Includes `onCreate`, `onStart`, `onResume`, + - Paused: Includes `onPause`, + - Stopped: Includes `onStop`, + - Destroyed: Includes `onDestroy`. + - This covers the entire Activity lifecycle, providing detailed insights into each phase. + """.trimIndent() + ), + Feature( + "ANR Detection", + """ + - Automatically detects and reports ANRs in the app. + - ANR events are captured as spans with detailed stack traces, providing insights into the exact operations that caused the ANR. + - The span includes key attributes such as `screen.name`, `session.id`, and network information to assist in diagnosing the issue. + """.trimIndent() + ), + Feature( + "Slow Render Detection", + """ + - Automatically detects instances of slow rendering within the app. + - Slow render events are captured as spans, providing information on when and where rendering delays occurred. + - The span includes attributes such as `activity.name`, `screen.name`, `count`, and network details to help diagnose performance issues. + """.trimIndent() + ), + Feature( + "Manual Instrumentation", + """ + - Provides access to the OpenTelemetry APIs for manual instrumentation, allowing developers to create custom spans and events as needed. + """.trimIndent() + ) + ) +} \ No newline at end of file diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/about/FeatureAdapter.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/about/FeatureAdapter.kt new file mode 100644 index 000000000..3f9ba7c2f --- /dev/null +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/about/FeatureAdapter.kt @@ -0,0 +1,43 @@ +package io.opentelemetry.android.demo.about + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import io.opentelemetry.android.demo.R + +class FeatureAdapter(private val features: List) : RecyclerView.Adapter() { + + inner class FeatureViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val titleTextView: TextView = itemView.findViewById(R.id.titleTextView) + private val descriptionTextView: TextView = itemView.findViewById(R.id.descriptionTextView) + private val arrowImageView: ImageView = itemView.findViewById(R.id.arrowImageView) + + fun bind(feature: Feature) { + titleTextView.text = feature.title + descriptionTextView.text = feature.description + descriptionTextView.visibility = if (feature.isExpanded) View.VISIBLE else View.GONE + arrowImageView.rotation = if (feature.isExpanded) 180f else 0f + + itemView.setOnClickListener { + feature.isExpanded = !feature.isExpanded + notifyItemChanged(adapterPosition) + } + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FeatureViewHolder { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_feature, parent, false) + return FeatureViewHolder(view) + } + + override fun onBindViewHolder(holder: FeatureViewHolder, position: Int) { + holder.bind(features[position]) + } + + override fun getItemCount(): Int = features.size + +} + diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/clients/ImageLoader.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/clients/ImageLoader.kt similarity index 90% rename from demo-app/src/main/java/io/opentelemetry/android/demo/clients/ImageLoader.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/clients/ImageLoader.kt index 3d6ba8e56..4fdc66531 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/clients/ImageLoader.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/clients/ImageLoader.kt @@ -1,4 +1,4 @@ -package io.opentelemetry.android.demo.clients +package io.opentelemetry.android.demo.shop.clients import android.content.Context import android.graphics.Bitmap diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/clients/ProductCatalogClient.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/clients/ProductCatalogClient.kt similarity index 77% rename from demo-app/src/main/java/io/opentelemetry/android/demo/clients/ProductCatalogClient.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/clients/ProductCatalogClient.kt index 9e0de017c..aab17bc0b 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/clients/ProductCatalogClient.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/clients/ProductCatalogClient.kt @@ -1,10 +1,10 @@ -package io.opentelemetry.android.demo.clients +package io.opentelemetry.android.demo.shop.clients import android.content.Context import com.google.gson.Gson import com.google.gson.reflect.TypeToken -import io.opentelemetry.android.demo.model.Product -import io.opentelemetry.android.demo.model.ProductDeserializationWrapper +import io.opentelemetry.android.demo.shop.model.Product +import io.opentelemetry.android.demo.shop.model.ProductDeserializationWrapper const val PRODUCTS_FILE = "products.json" diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/clients/RecommendationService.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/clients/RecommendationService.kt similarity index 82% rename from demo-app/src/main/java/io/opentelemetry/android/demo/clients/RecommendationService.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/clients/RecommendationService.kt index 647f5c2da..1b4e487e6 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/clients/RecommendationService.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/clients/RecommendationService.kt @@ -1,7 +1,7 @@ -package io.opentelemetry.android.demo.clients +package io.opentelemetry.android.demo.shop.clients -import io.opentelemetry.android.demo.model.Product -import io.opentelemetry.android.demo.ui.shop.cart.CartViewModel +import io.opentelemetry.android.demo.shop.model.Product +import io.opentelemetry.android.demo.shop.ui.cart.CartViewModel class RecommendationService( private val productCatalogClient: ProductCatalogClient, diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/model/Product.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/model/Product.kt similarity index 91% rename from demo-app/src/main/java/io/opentelemetry/android/demo/model/Product.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/model/Product.kt index c10ac82cd..ad0790809 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/model/Product.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/model/Product.kt @@ -1,4 +1,4 @@ -package io.opentelemetry.android.demo.model +package io.opentelemetry.android.demo.shop.model data class Product( val id: String, diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/AstronomyShopActivity.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/AstronomyShopActivity.kt similarity index 90% rename from demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/AstronomyShopActivity.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/AstronomyShopActivity.kt index dd02b637a..a77a6ec88 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/AstronomyShopActivity.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/AstronomyShopActivity.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.android.demo.ui.shop +package io.opentelemetry.android.demo.shop.ui import android.app.Activity import android.content.Intent @@ -24,19 +24,18 @@ import androidx.compose.ui.platform.LocalContext import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import io.opentelemetry.android.demo.MainActivity -import io.opentelemetry.android.demo.clients.ProductCatalogClient +import io.opentelemetry.android.demo.shop.clients.ProductCatalogClient import io.opentelemetry.android.demo.theme.DemoAppTheme -import io.opentelemetry.android.demo.ui.shop.cart.CartScreen -import io.opentelemetry.android.demo.ui.shop.products.ProductDetails -import io.opentelemetry.android.demo.ui.shop.products.ProductList -import io.opentelemetry.android.demo.ui.shop.cart.CartViewModel +import io.opentelemetry.android.demo.shop.ui.cart.CartScreen +import io.opentelemetry.android.demo.shop.ui.products.ProductDetails +import io.opentelemetry.android.demo.shop.ui.products.ProductList +import io.opentelemetry.android.demo.shop.ui.cart.CartViewModel import androidx.lifecycle.viewmodel.compose.viewModel -import io.opentelemetry.android.demo.ui.shop.cart.InfoScreen +import io.opentelemetry.android.demo.shop.ui.cart.InfoScreen class AstronomyShopActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - title = "Astronomy Shop" setContent { AstronomyShopScreen() } diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/Navigation.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt similarity index 98% rename from demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/Navigation.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt index c462cdd86..92849053f 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/Navigation.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt @@ -1,4 +1,4 @@ -package io.opentelemetry.android.demo.ui.shop +package io.opentelemetry.android.demo.shop.ui import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ExitToApp diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/cart/Cart.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/Cart.kt similarity index 90% rename from demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/cart/Cart.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/Cart.kt index f5e18bacb..88f01e181 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/cart/Cart.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/Cart.kt @@ -1,4 +1,4 @@ -package io.opentelemetry.android.demo.ui.shop.cart +package io.opentelemetry.android.demo.shop.ui.cart import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn @@ -8,13 +8,13 @@ import androidx.compose.ui.Modifier import java.util.Locale import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import io.opentelemetry.android.demo.ui.shop.products.ProductCard +import io.opentelemetry.android.demo.shop.ui.products.ProductCard import androidx.compose.ui.Alignment import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext -import io.opentelemetry.android.demo.clients.ProductCatalogClient -import io.opentelemetry.android.demo.clients.RecommendationService -import io.opentelemetry.android.demo.ui.shop.products.RecommendedSection +import io.opentelemetry.android.demo.shop.clients.ProductCatalogClient +import io.opentelemetry.android.demo.shop.clients.RecommendationService +import io.opentelemetry.android.demo.shop.ui.products.RecommendedSection @Composable fun CartScreen( diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/cart/CartViewModel.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/CartViewModel.kt similarity index 90% rename from demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/cart/CartViewModel.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/CartViewModel.kt index 2626aa86c..01a15724e 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/cart/CartViewModel.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/CartViewModel.kt @@ -1,7 +1,7 @@ -package io.opentelemetry.android.demo.ui.shop.cart +package io.opentelemetry.android.demo.shop.ui.cart import androidx.lifecycle.ViewModel -import io.opentelemetry.android.demo.model.Product +import io.opentelemetry.android.demo.shop.model.Product import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/cart/CheckoutInfo.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/CheckoutInfo.kt similarity index 97% rename from demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/cart/CheckoutInfo.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/CheckoutInfo.kt index c725ff34d..2839abced 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/cart/CheckoutInfo.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/CheckoutInfo.kt @@ -1,4 +1,4 @@ -package io.opentelemetry.android.demo.ui.shop.cart +package io.opentelemetry.android.demo.shop.ui.cart import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -15,7 +15,7 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.unit.dp -import io.opentelemetry.android.demo.ui.shop.components.UpPressButton +import io.opentelemetry.android.demo.shop.ui.components.UpPressButton import androidx.compose.ui.Alignment import androidx.compose.ui.text.style.TextAlign diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/components/QuantityChooser.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/components/QuantityChooser.kt similarity index 98% rename from demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/components/QuantityChooser.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/components/QuantityChooser.kt index cd9b6baed..adf079f66 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/components/QuantityChooser.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/components/QuantityChooser.kt @@ -1,4 +1,4 @@ -package io.opentelemetry.android.demo.ui.shop.components +package io.opentelemetry.android.demo.shop.ui.components import androidx.compose.foundation.layout.* import androidx.compose.material3.* diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/components/UpPressButton.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/components/UpPressButton.kt similarity index 94% rename from demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/components/UpPressButton.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/components/UpPressButton.kt index 37b0af39e..a7cda6f3d 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/components/UpPressButton.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/components/UpPressButton.kt @@ -1,4 +1,4 @@ -package io.opentelemetry.android.demo.ui.shop.components +package io.opentelemetry.android.demo.shop.ui.components import androidx.compose.foundation.background import androidx.compose.foundation.clickable diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/products/ProductCard.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/products/ProductCard.kt similarity index 94% rename from demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/products/ProductCard.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/products/ProductCard.kt index 03ed27620..2319b8299 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/products/ProductCard.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/products/ProductCard.kt @@ -1,4 +1,4 @@ -package io.opentelemetry.android.demo.ui.shop.products +package io.opentelemetry.android.demo.shop.ui.products import android.graphics.Bitmap import androidx.compose.foundation.Image @@ -22,9 +22,9 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import io.opentelemetry.android.demo.clients.ImageLoader +import io.opentelemetry.android.demo.shop.clients.ImageLoader import io.opentelemetry.android.demo.gothamFont -import io.opentelemetry.android.demo.model.Product +import io.opentelemetry.android.demo.shop.model.Product @Composable fun ProductCard( diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/products/ProductDetails.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/products/ProductDetails.kt similarity index 87% rename from demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/products/ProductDetails.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/products/ProductDetails.kt index 65a5f75b2..c771581ec 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/products/ProductDetails.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/products/ProductDetails.kt @@ -1,4 +1,4 @@ -package io.opentelemetry.android.demo.ui.shop.products +package io.opentelemetry.android.demo.shop.ui.products import androidx.compose.foundation.Image import androidx.compose.foundation.layout.* @@ -13,16 +13,16 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import io.opentelemetry.android.demo.clients.ImageLoader +import io.opentelemetry.android.demo.shop.clients.ImageLoader import io.opentelemetry.android.demo.gothamFont -import io.opentelemetry.android.demo.model.Product -import io.opentelemetry.android.demo.ui.shop.components.QuantityChooser +import io.opentelemetry.android.demo.shop.model.Product +import io.opentelemetry.android.demo.shop.ui.components.QuantityChooser import androidx.lifecycle.viewmodel.compose.viewModel -import io.opentelemetry.android.demo.ui.shop.cart.CartViewModel -import io.opentelemetry.android.demo.ui.shop.components.UpPressButton +import io.opentelemetry.android.demo.shop.ui.cart.CartViewModel +import io.opentelemetry.android.demo.shop.ui.components.UpPressButton import androidx.compose.ui.Alignment -import io.opentelemetry.android.demo.clients.ProductCatalogClient -import io.opentelemetry.android.demo.clients.RecommendationService +import io.opentelemetry.android.demo.shop.clients.ProductCatalogClient +import io.opentelemetry.android.demo.shop.clients.RecommendationService @Composable fun ProductDetails( diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/products/ProductList.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/products/ProductList.kt similarity index 87% rename from demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/products/ProductList.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/products/ProductList.kt index 0fbec4f58..96b77d9cd 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/products/ProductList.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/products/ProductList.kt @@ -1,4 +1,4 @@ -package io.opentelemetry.android.demo.ui.shop.products +package io.opentelemetry.android.demo.shop.ui.products import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row @@ -8,7 +8,7 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import io.opentelemetry.android.demo.model.Product +import io.opentelemetry.android.demo.shop.model.Product @Composable fun ProductList(products: List, onProductClick: (String) -> Unit) { diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/products/RecommendedSection.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/products/RecommendedSection.kt similarity index 94% rename from demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/products/RecommendedSection.kt rename to demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/products/RecommendedSection.kt index 5d26b93a0..ea1193529 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/ui/shop/products/RecommendedSection.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/products/RecommendedSection.kt @@ -1,4 +1,4 @@ -package io.opentelemetry.android.demo.ui.shop.products +package io.opentelemetry.android.demo.shop.ui.products import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues @@ -15,7 +15,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import io.opentelemetry.android.demo.gothamFont -import io.opentelemetry.android.demo.model.Product +import io.opentelemetry.android.demo.shop.model.Product @Composable fun RecommendedSection( diff --git a/demo-app/src/main/res/drawable/ic_arrow_drop_down.xml b/demo-app/src/main/res/drawable/ic_arrow_drop_down.xml new file mode 100644 index 000000000..a77e33181 --- /dev/null +++ b/demo-app/src/main/res/drawable/ic_arrow_drop_down.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/demo-app/src/main/res/layout/activity_about.xml b/demo-app/src/main/res/layout/activity_about.xml new file mode 100644 index 000000000..1626228d2 --- /dev/null +++ b/demo-app/src/main/res/layout/activity_about.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/demo-app/src/main/res/layout/activity_astronomy_shop.xml b/demo-app/src/main/res/layout/activity_astronomy_shop.xml deleted file mode 100644 index cd1f2df91..000000000 --- a/demo-app/src/main/res/layout/activity_astronomy_shop.xml +++ /dev/null @@ -1,7 +0,0 @@ - - \ No newline at end of file diff --git a/demo-app/src/main/res/layout/fragment_about_opentelemetry.xml b/demo-app/src/main/res/layout/fragment_about_opentelemetry.xml new file mode 100644 index 000000000..91b22e90d --- /dev/null +++ b/demo-app/src/main/res/layout/fragment_about_opentelemetry.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/demo-app/src/main/res/layout/fragment_app_features.xml b/demo-app/src/main/res/layout/fragment_app_features.xml new file mode 100644 index 000000000..ee7f07200 --- /dev/null +++ b/demo-app/src/main/res/layout/fragment_app_features.xml @@ -0,0 +1,34 @@ + + + + + + + + diff --git a/demo-app/src/main/res/layout/item_feature.xml b/demo-app/src/main/res/layout/item_feature.xml new file mode 100644 index 000000000..613061dd5 --- /dev/null +++ b/demo-app/src/main/res/layout/item_feature.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + diff --git a/demo-app/src/main/res/menu/bottom_nav_menu.xml b/demo-app/src/main/res/menu/bottom_nav_menu.xml index 18964885d..512ea719a 100644 --- a/demo-app/src/main/res/menu/bottom_nav_menu.xml +++ b/demo-app/src/main/res/menu/bottom_nav_menu.xml @@ -2,24 +2,16 @@ - - + android:id="@+id/navigation_exit" + android:icon="@drawable/exit_to_main" + android:title="@string/exit" /> + android:id="@+id/navigation_app_features" + android:title="@string/app_features" /> + android:id="@+id/navigation_about_opentelemetry" + android:title="@string/about_opentelemetry" /> \ No newline at end of file diff --git a/demo-app/src/main/res/values/strings.xml b/demo-app/src/main/res/values/strings.xml index 9696d1a88..d89600ae0 100644 --- a/demo-app/src/main/res/values/strings.xml +++ b/demo-app/src/main/res/values/strings.xml @@ -5,4 +5,8 @@ Dashboard Cart Exit + Exit + App Features + About OpenTelemetry + Expand or collapse content \ No newline at end of file