diff --git a/Cineapp/.idea/inspectionProfiles/Project_Default.xml b/Cineapp/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..bd2a505
--- /dev/null
+++ b/Cineapp/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Cineapp/app/build.gradle b/Cineapp/app/build.gradle
index 671976d..0254c11 100644
--- a/Cineapp/app/build.gradle
+++ b/Cineapp/app/build.gradle
@@ -30,6 +30,12 @@ android {
kotlinOptions {
jvmTarget = '1.8'
}
+ buildFeatures {
+ compose = true
+ }
+ composeOptions {
+ kotlinCompilerExtensionVersion = "1.4.0-alpha01"
+ }
}
dependencies {
@@ -44,4 +50,18 @@ dependencies {
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+
+
+ implementation 'androidx.navigation:navigation-fragment-ktx:2.3.0'
+ implementation 'androidx.navigation:navigation-ui-ktx:2.3.0'
+ implementation 'androidx.navigation:navigation-compose:2.4.0-alpha10'
+ implementation 'androidx.compose.ui:ui:1.1.1'
+ implementation 'androidx.compose.material:material-icons-core:1.1.1'
+ implementation 'androidx.compose.material:material-icons-extended:1.1.1'
+
+ implementation "androidx.compose.ui:ui:1.1.1"
+ implementation "androidx.compose.ui:ui-tooling:1.1.1"
+ implementation "androidx.compose.material:material:1.1.1"
+ implementation "androidx.compose.material:material-ripple:1.1.1"
+
}
\ No newline at end of file
diff --git a/Cineapp/app/src/main/java/com/example/cinapp/MainActivity.kt b/Cineapp/app/src/main/java/com/example/cinapp/MainActivity.kt
index 85fe622..2c27bf3 100644
--- a/Cineapp/app/src/main/java/com/example/cinapp/MainActivity.kt
+++ b/Cineapp/app/src/main/java/com/example/cinapp/MainActivity.kt
@@ -3,16 +3,23 @@ package com.example.cinapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
+import androidx.activity.compose.setContent
+import androidx.compose.material.MaterialTheme
import com.android.volley.VolleyError
import com.android.volley.toolbox.StringRequest
import com.android.volley.toolbox.Volley
import com.example.cinapp.model.Movie
+import com.example.cinapp.navigation.MainScreen
+
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
-
+ //setContentView(R.layout.activity_main)
+ setContent {
+ MaterialTheme { MainScreen() }
+ }
+ /*
// TextView
val textView = findViewById(R.id.text)
@@ -34,24 +41,13 @@ class MainActivity : AppCompatActivity() {
// Add the request to the RequestQueue.
queue.add(stringRequest)
- /*companion object {
- fun fromJson(json: JSONObject): Movie {
- return Movie(
- json.getInt("id"),
- json.getString("name"),
- json.getString("backdrop_path"),
- json.getString("release_date"),
- json.getJSONArray("origin_country").toList(),
- json.getString("original_language"),
- json.getString("original_name"),
- json.getString("overview"),
- json.getDouble("popularity"),
- json.getString("poster_path"),
- json.getDouble("vote_average"),
- json.getInt("vote_count"),
- json.getJSONArray("genre_ids").toList()
- )
- }
- }*/
+
+ //bottom navigation with jetpack compose
+
+ */
+
+
+
+
}
}
\ No newline at end of file
diff --git a/Cineapp/app/src/main/java/com/example/cinapp/Room/DAO/SeasonDAO.kt b/Cineapp/app/src/main/java/com/example/cinapp/Room/DAO/SeasonDAO.kt
index f620409..8863542 100644
--- a/Cineapp/app/src/main/java/com/example/cinapp/Room/DAO/SeasonDAO.kt
+++ b/Cineapp/app/src/main/java/com/example/cinapp/Room/DAO/SeasonDAO.kt
@@ -1,7 +1,20 @@
package com.example.cinapp.Room.DAO
import androidx.room.Dao
+import androidx.room.Delete
+import androidx.room.Query
+import com.example.cinapp.Room.Entity.SeasonEntity
@Dao
interface SeasonDAO {
+ @Query("SELECT * FROM season")
+ fun getAll(): List
+
+ @Query("SELECT * FROM season WHERE id = :id ")
+ fun getSeasonById(id: Int): SeasonEntity
+
+ @Delete
+ fun deleteSeason(season: SeasonEntity)
+
+ //@Query("DELETE FROM season WHERE ")
}
\ No newline at end of file
diff --git a/Cineapp/app/src/main/java/com/example/cinapp/Room/DAO/SerieDAO.kt b/Cineapp/app/src/main/java/com/example/cinapp/Room/DAO/SerieDAO.kt
index 3013c6c..aad0887 100644
--- a/Cineapp/app/src/main/java/com/example/cinapp/Room/DAO/SerieDAO.kt
+++ b/Cineapp/app/src/main/java/com/example/cinapp/Room/DAO/SerieDAO.kt
@@ -26,12 +26,4 @@ interface SerieDAO {
@Query("SELECT * FROM serie WHERE :seasonId IN (seasonsIds)")
fun findBySeason(seasonId: Int): SerieEntity
- @Query("SELECT * FROM serie " +
- "WHERE :episodeId IN (" +
- "SELECT episodesIds FROM season WHERE id IN (" +
- "SELECT seasonsIds FROM serie WHERE :episodeId IN (" +
- "SELECT episodesIds FROM season)))")
- fun findByEpisode(episodeId: Int): SerieEntity
-
-
}
\ No newline at end of file
diff --git a/Cineapp/app/src/main/java/com/example/cinapp/Room/Entity/EpisodeEntity.kt b/Cineapp/app/src/main/java/com/example/cinapp/Room/Entity/EpisodeEntity.kt
index 8d368a1..eebf7e8 100644
--- a/Cineapp/app/src/main/java/com/example/cinapp/Room/Entity/EpisodeEntity.kt
+++ b/Cineapp/app/src/main/java/com/example/cinapp/Room/Entity/EpisodeEntity.kt
@@ -11,7 +11,8 @@ data class EpisodeEntity (
var stillPath: String,
var episodeNumber: Int,
var seasonNumber: Int,
- var airDate: String,
+ val releaseDate: String,
var voteAverage: Double,
- var voteCount: Int
+ var voteCount: Int,
+ var runtime: Int
)
\ No newline at end of file
diff --git a/Cineapp/app/src/main/java/com/example/cinapp/Room/Entity/SeasonEntity.kt b/Cineapp/app/src/main/java/com/example/cinapp/Room/Entity/SeasonEntity.kt
index 9cbee77..cfc9a47 100644
--- a/Cineapp/app/src/main/java/com/example/cinapp/Room/Entity/SeasonEntity.kt
+++ b/Cineapp/app/src/main/java/com/example/cinapp/Room/Entity/SeasonEntity.kt
@@ -10,5 +10,6 @@ data class SeasonEntity (
var overview: String,
var posterPath: String,
var seasonNumber: Int,
- var episodesIds: List
+ var episodesIds: List,
+ val releaseDate: String
)
\ No newline at end of file
diff --git a/Cineapp/app/src/main/java/com/example/cinapp/navigation/BottomNavGraph.kt b/Cineapp/app/src/main/java/com/example/cinapp/navigation/BottomNavGraph.kt
new file mode 100644
index 0000000..792e630
--- /dev/null
+++ b/Cineapp/app/src/main/java/com/example/cinapp/navigation/BottomNavGraph.kt
@@ -0,0 +1,24 @@
+package com.example.cinapp.navigation
+
+import androidx.compose.runtime.Composable
+import androidx.navigation.NavHostController
+import androidx.navigation.compose.NavHost
+import androidx.navigation.compose.composable
+
+@Composable
+fun BottomNavGraph(navController: NavHostController){
+ NavHost(
+ navController = navController,
+ startDestination = BottomNavigation.Movie.route
+ ) {
+ composable(BottomNavigation.Movie.route) {
+ MovieScreen()
+ }
+ composable(BottomNavigation.Search.route) {
+ SearchScreen()
+ }
+ composable(BottomNavigation.Serie.route) {
+ SerieScreen()
+ }
+ }
+}
\ No newline at end of file
diff --git a/Cineapp/app/src/main/java/com/example/cinapp/navigation/BottomNavigation.kt b/Cineapp/app/src/main/java/com/example/cinapp/navigation/BottomNavigation.kt
new file mode 100644
index 0000000..3f2891f
--- /dev/null
+++ b/Cineapp/app/src/main/java/com/example/cinapp/navigation/BottomNavigation.kt
@@ -0,0 +1,30 @@
+package com.example.cinapp.navigation
+
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Home
+import androidx.compose.material.icons.filled.LiveTv
+import androidx.compose.material.icons.filled.Movie
+import androidx.compose.material.icons.filled.Search
+import androidx.compose.ui.graphics.vector.ImageVector
+
+sealed class BottomNavigation(
+ val route: String,
+ val icon: ImageVector,
+ val title: String
+) {
+ object Movie : BottomNavigation(
+ route = "movie",
+ //icon = R.drawable.ic_baseline_movie_24,
+ icon = Icons.Filled.Movie,
+ title = "Movie")
+ object Search : BottomNavigation(
+ route = "search",
+ //icon = R.drawable.ic_baseline_search_24,
+ icon = Icons.Filled.Search,
+ title = "Search")
+ object Serie : BottomNavigation(
+ route = "serie",
+ //icon = R.drawable.ic_baseline_live_tv_24,
+ icon = Icons.Filled.LiveTv,
+ title = "Serie")
+}
diff --git a/Cineapp/app/src/main/java/com/example/cinapp/navigation/MainScreen.kt b/Cineapp/app/src/main/java/com/example/cinapp/navigation/MainScreen.kt
new file mode 100644
index 0000000..085cfee
--- /dev/null
+++ b/Cineapp/app/src/main/java/com/example/cinapp/navigation/MainScreen.kt
@@ -0,0 +1,78 @@
+package com.example.cinapp.navigation
+
+import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.padding
+import androidx.compose.material.*
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.remember
+import androidx.navigation.compose.rememberNavController
+import androidx.compose.ui.Modifier
+import androidx.navigation.NavDestination
+import androidx.navigation.NavDestination.Companion.hierarchy
+import androidx.navigation.NavGraph.Companion.findStartDestination
+import androidx.navigation.NavHostController
+import androidx.navigation.compose.NavHost
+import androidx.navigation.compose.composable
+import androidx.navigation.compose.currentBackStackEntryAsState
+import androidx.navigation.ui.setupWithNavController
+
+@Composable
+fun MainScreen() {
+ val navController = rememberNavController()
+ Scaffold(
+ bottomBar = { BottomBar(navController = navController) }
+ ) {
+ BottomNavGraph(navController = navController)
+ }
+}
+
+@Composable
+fun BottomBar(navController: NavHostController) {
+ val screens = listOf(
+ BottomNavigation.Movie,
+ BottomNavigation.Serie,
+ BottomNavigation.Search,
+ )
+ val navBackStackEntry by navController.currentBackStackEntryAsState()
+ val currentDestination = navBackStackEntry?.destination
+
+ BottomNavigation {
+ screens.forEach { screen ->
+ AddItem(
+ screen = screen,
+ currentDestination = currentDestination,
+ navController = navController
+ )
+ }
+ }
+}
+
+@Composable
+fun RowScope.AddItem(
+ screen: BottomNavigation,
+ currentDestination: NavDestination?,
+ navController: NavHostController
+) {
+ BottomNavigationItem(
+ label = {
+ Text(text = screen.title)
+ },
+ icon = {
+ Icon(
+ imageVector = screen.icon,
+ contentDescription = "Navigation Icon"
+ )
+ },
+ selected = currentDestination?.hierarchy?.any {
+ it.route == screen.route
+ } == true,
+ unselectedContentColor = LocalContentColor.current.copy(alpha = ContentAlpha.disabled),
+ onClick = {
+ navController.navigate(screen.route) {
+ popUpTo(navController.graph.findStartDestination().id)
+ launchSingleTop = true
+ }
+ }
+ )
+}
diff --git a/Cineapp/app/src/main/java/com/example/cinapp/navigation/Movie.kt b/Cineapp/app/src/main/java/com/example/cinapp/navigation/Movie.kt
new file mode 100644
index 0000000..2bf64ae
--- /dev/null
+++ b/Cineapp/app/src/main/java/com/example/cinapp/navigation/Movie.kt
@@ -0,0 +1,8 @@
+package com.example.cinapp.navigation
+
+import androidx.compose.runtime.Composable
+
+@Composable
+fun MovieScreen() {
+
+}
\ No newline at end of file
diff --git a/Cineapp/app/src/main/java/com/example/cinapp/navigation/Search.kt b/Cineapp/app/src/main/java/com/example/cinapp/navigation/Search.kt
new file mode 100644
index 0000000..16a2a40
--- /dev/null
+++ b/Cineapp/app/src/main/java/com/example/cinapp/navigation/Search.kt
@@ -0,0 +1,8 @@
+package com.example.cinapp.navigation
+
+import androidx.compose.runtime.Composable
+
+@Composable
+fun SerieScreen() {
+
+}
\ No newline at end of file
diff --git a/Cineapp/app/src/main/java/com/example/cinapp/navigation/Serie.kt b/Cineapp/app/src/main/java/com/example/cinapp/navigation/Serie.kt
new file mode 100644
index 0000000..5b2c049
--- /dev/null
+++ b/Cineapp/app/src/main/java/com/example/cinapp/navigation/Serie.kt
@@ -0,0 +1,8 @@
+package com.example.cinapp.navigation
+
+import androidx.compose.runtime.Composable
+
+@Composable
+fun SearchScreen() {
+
+}
\ No newline at end of file
diff --git a/Cineapp/app/src/main/res/drawable/ic_baseline_live_tv_24.xml b/Cineapp/app/src/main/res/drawable/ic_baseline_live_tv_24.xml
new file mode 100644
index 0000000..cdd0f67
--- /dev/null
+++ b/Cineapp/app/src/main/res/drawable/ic_baseline_live_tv_24.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/Cineapp/app/src/main/res/drawable/ic_baseline_movie_24.xml b/Cineapp/app/src/main/res/drawable/ic_baseline_movie_24.xml
new file mode 100644
index 0000000..a0e2d16
--- /dev/null
+++ b/Cineapp/app/src/main/res/drawable/ic_baseline_movie_24.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/Cineapp/app/src/main/res/drawable/ic_baseline_search_24.xml b/Cineapp/app/src/main/res/drawable/ic_baseline_search_24.xml
new file mode 100644
index 0000000..a5687c6
--- /dev/null
+++ b/Cineapp/app/src/main/res/drawable/ic_baseline_search_24.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/Cineapp/app/src/main/res/layout/main_windows.xml b/Cineapp/app/src/main/res/layout/main_windows.xml
new file mode 100644
index 0000000..e8ba097
--- /dev/null
+++ b/Cineapp/app/src/main/res/layout/main_windows.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file