Skip to content

Commit

Permalink
Add Now Playing Fragment and setup navigation drawer
Browse files Browse the repository at this point in the history
  • Loading branch information
ShashankSinha98 committed Apr 2, 2022
1 parent 5be4675 commit 369edd2
Show file tree
Hide file tree
Showing 18 changed files with 150 additions and 71 deletions.
1 change: 1 addition & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package com.shashank.moviedb.di;

import com.shashank.moviedb.di.home.HomeFragmentBuildersModule;
import com.shashank.moviedb.di.home.HomeModule;
import com.shashank.moviedb.di.home.HomeScope;
import com.shashank.moviedb.di.home.HomeViewModelModule;
import com.shashank.moviedb.di.trending.HomeFragmentBuildersModule;
import com.shashank.moviedb.di.trending.HomeModule;
import com.shashank.moviedb.di.trending.HomeScope;
import com.shashank.moviedb.di.trending.HomeViewModelModule;
import com.shashank.moviedb.ui.HomeActivity;

import dagger.Module;
import dagger.Provides;
import dagger.android.ContributesAndroidInjector;

@Module
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import android.app.Application;

import com.shashank.moviedb.BaseApplication;
import com.shashank.moviedb.ui.home.viewholder.MovieViewHolder;

import javax.inject.Singleton;

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.shashank.moviedb.di.trending;

import com.shashank.moviedb.ui.trending.TrendingFragment;

import dagger.Module;
import dagger.android.ContributesAndroidInjector;

@Module
public abstract class HomeFragmentBuildersModule {

@ContributesAndroidInjector
abstract TrendingFragment contributeHomeFragment();
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.shashank.moviedb.di.home;
package com.shashank.moviedb.di.trending;

import android.app.Application;

import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.RequestManager;
import com.shashank.moviedb.ui.home.adapter.MovieRecyclerAdapter;
import com.shashank.moviedb.ui.trending.adapter.MovieRecyclerAdapter;

import dagger.Module;
import dagger.Provides;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.shashank.moviedb.di.home;
package com.shashank.moviedb.di.trending;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.shashank.moviedb.di.home;
package com.shashank.moviedb.di.trending;

import androidx.lifecycle.ViewModel;

import com.shashank.moviedb.di.ViewModelKey;
import com.shashank.moviedb.ui.home.HomeViewModel;
import com.shashank.moviedb.ui.trending.TrendingViewModel;

import dagger.Binds;
import dagger.Module;
Expand All @@ -14,6 +14,6 @@ public abstract class HomeViewModelModule {

@Binds
@IntoMap
@ViewModelKey(HomeViewModel.class)
abstract ViewModel bindHomeViewModel(HomeViewModel homeViewModel);
@ViewModelKey(TrendingViewModel.class)
abstract ViewModel bindHomeViewModel(TrendingViewModel trendingViewModel);
}
85 changes: 74 additions & 11 deletions app/src/main/java/com/shashank/moviedb/ui/HomeActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,33 @@
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.navigation.NavController;
import androidx.navigation.NavDestination;
import androidx.navigation.NavOptions;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfigurationKt;
import androidx.navigation.ui.NavigationUI;
import androidx.navigation.ui.AppBarConfiguration;

import com.google.android.material.navigation.NavigationView;
import com.shashank.moviedb.R;
import com.shashank.moviedb.data.ResourceCallback;
import com.shashank.moviedb.data.Resource;
import com.shashank.moviedb.data.remote.MovieRepository;

import java.util.HashSet;
import java.util.Set;

import javax.inject.Inject;

import dagger.android.support.DaggerAppCompatActivity;

public class HomeActivity extends DaggerAppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
public class HomeActivity extends DaggerAppCompatActivity implements NavController.OnDestinationChangedListener {

private static final String TAG = "HomeActivity";

Expand All @@ -34,10 +38,12 @@ public class HomeActivity extends DaggerAppCompatActivity implements NavigationV


private Toolbar toolbar;
private TextView toolbarTextView;
private DrawerLayout drawerLayout;
private NavigationView navigationView;

private NavController navController;
private AppBarConfiguration appBarConfiguration;


@Override
Expand All @@ -48,28 +54,85 @@ protected void onCreate(Bundle savedInstanceState) {
toolbar = findViewById(R.id.toolbar);
drawerLayout = findViewById(R.id.drawer_layout);
navigationView = findViewById(R.id.nav_view);
toolbarTextView = findViewById(R.id.tv_toolbar_title);


setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);

initNavigation();

}

private void initNavigation() {
navController = Navigation.findNavController(this, R.id.nav_host_fragment);
//appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build();
NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout);
NavigationUI.setupWithNavController(navigationView, navController);
navigationView.setNavigationItemSelectedListener(this);
// navigationView.setNavigationItemSelectedListener(this);
navController.addOnDestinationChangedListener(this);
}

@Override
public boolean onSupportNavigateUp() {
return NavigationUI.navigateUp(navController, drawerLayout);
}

/* @Override
public void onDestinationChanged(@NonNull NavController controller,
@NonNull NavDestination destination,
@Nullable Bundle arguments) {
switch (destination.getId()) {
case R.id.nav_trending:
toolbar.setVisibility(View.VISIBLE);
toolbarTextView.setText(destination.getLabel());
break;
}
}*/

/* @Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
return false;
switch (item.getItemId()) {
case R.id.menu_trending_movie:
if(isValidDestination(R.id.nav_trending)) {
NavOptions navOptions = new NavOptions.Builder().setPopUpTo(R.id.main_nav_graph, true).build();
Navigation.findNavController(this, R.id.nav_host_fragment).navigate(R.id.nav_trending, null, navOptions);
}
break;
case R.id.menu_now_playing_movie:
if(isValidDestination(R.id.nav_now_playing)) {
Navigation.findNavController(this, R.id.nav_host_fragment).navigate(R.id.nav_now_playing);
}
break;
}
item.setChecked(true);
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}*/

private boolean isValidDestination(int destination) {
return destination != Navigation.findNavController(this, R.id.nav_host_fragment).getCurrentDestination().getId();
}

@Override
public boolean onSupportNavigateUp() {
return NavigationUI.navigateUp(navController, drawerLayout);
public void onBackPressed() {
Log.d(TAG,"xlr8: onbackpressed");
super.onBackPressed();
}

@Override
public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
switch (destination.getId()) {
case R.id.nav_trending:
case R.id.nav_now_playing:
toolbar.setVisibility(View.VISIBLE);
toolbarTextView.setText(destination.getLabel());
break;

}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.shashank.moviedb.ui.nowplaying;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.shashank.moviedb.R;

public class NowPlaying extends Fragment {

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
return inflater.inflate(R.layout.fragment_now_playing, null);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.shashank.moviedb.ui.home;
package com.shashank.moviedb.ui.trending;

import android.os.Bundle;
import android.view.LayoutInflater;
Expand All @@ -9,63 +9,58 @@
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.RequestManager;
import com.shashank.moviedb.R;
import com.shashank.moviedb.common.ViewModelProviderFactory;
import com.shashank.moviedb.data.Resource;
import com.shashank.moviedb.data.ResourceCallback;
import com.shashank.moviedb.data.Status;
import com.shashank.moviedb.data.remote.MovieRepository;
import com.shashank.moviedb.model.MovieResponse;
import com.shashank.moviedb.model.MovieResult;
import com.shashank.moviedb.ui.home.adapter.MovieRecyclerAdapter;
import com.shashank.moviedb.util.Constants;
import com.shashank.moviedb.ui.trending.adapter.MovieRecyclerAdapter;

import java.util.List;

import javax.inject.Inject;

import dagger.android.support.DaggerFragment;

public class HomeFragment extends DaggerFragment {
public class TrendingFragment extends DaggerFragment {

@Inject public MovieRecyclerAdapter movieRecyclerAdapter;
@Inject public RecyclerView.LayoutManager gridLayoutManager;
@Inject public MovieRepository movieRepository;
@Inject public ViewModelProviderFactory providerFactory;

private RecyclerView movieRecyclerView;
private HomeViewModel homeViewModel;
private TrendingViewModel trendingViewModel;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
return inflater.inflate(R.layout.fragment_home, null);
return inflater.inflate(R.layout.fragment_trending, null);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
movieRecyclerView = view.findViewById(R.id.rv_movie);

homeViewModel = new ViewModelProvider(this, providerFactory).get(HomeViewModel.class);
trendingViewModel = new ViewModelProvider(this, providerFactory).get(TrendingViewModel.class);

initUI();
initObservers();
}


private void initUI() {
movieRecyclerView.setLayoutManager(gridLayoutManager);
movieRecyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
movieRecyclerView.setAdapter(movieRecyclerAdapter);
}


private void initObservers() {
homeViewModel.getMoviesLiveData().observe(getViewLifecycleOwner(), new Observer<List<MovieResult>>() {
trendingViewModel.getMoviesLiveData().observe(getViewLifecycleOwner(), new Observer<List<MovieResult>>() {
@Override
public void onChanged(List<MovieResult> movieResults) {
movieRecyclerAdapter.setMovies(movieResults);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.shashank.moviedb.ui.home;
package com.shashank.moviedb.ui.trending;

import android.util.Log;
import android.widget.Toast;

import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
Expand All @@ -19,15 +18,15 @@

import javax.inject.Inject;

public class HomeViewModel extends ViewModel {
public class TrendingViewModel extends ViewModel {

private static final String TAG = "HomeViewModel";

private MovieRepository movieRepository;
private MutableLiveData<List<MovieResult>> _movies = new MutableLiveData<>();

@Inject
public HomeViewModel(MovieRepository movieRepository) {
public TrendingViewModel(MovieRepository movieRepository) {
this.movieRepository = movieRepository;

fetchTrendingMovies();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
package com.shashank.moviedb.ui.home.adapter;
package com.shashank.moviedb.ui.trending.adapter;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.RequestManager;
import com.shashank.moviedb.R;
import com.shashank.moviedb.model.MovieResult;
import com.shashank.moviedb.ui.home.viewholder.MovieViewHolder;
import com.shashank.moviedb.ui.trending.viewholder.MovieViewHolder;

import java.util.ArrayList;
import java.util.List;
Expand Down
Loading

0 comments on commit 369edd2

Please sign in to comment.