diff --git a/app/build.gradle b/app/build.gradle index c57574f..1654b50 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,10 +62,10 @@ dependencies { //CardView implementation deps.android.support.cardView - //PinView implementation 'com.github.GoodieBag:Pinview:v1.3' implementation 'com.android.support.constraint:constraint-layout:1.1.0' + implementation 'com.android.support:support-v4:27.1.1' testImplementation deps.junit androidTestImplementation deps.android.support.test.runner androidTestImplementation deps.android.support.test.espressoCore diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b627a2d..2a85c96 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.udacity.exploreindia"> - - - + + + - - + android:theme="@style/AppTheme.NoActionBar"> + - - - - - - + android:windowSoftInputMode="adjustPan|adjustResize"> + + + + + + - + \ No newline at end of file diff --git a/app/src/main/java/com/udacity/exploreindia/base/PresenterFactory.java b/app/src/main/java/com/udacity/exploreindia/base/PresenterFactory.java index 311833b..3418332 100644 --- a/app/src/main/java/com/udacity/exploreindia/base/PresenterFactory.java +++ b/app/src/main/java/com/udacity/exploreindia/base/PresenterFactory.java @@ -1,8 +1,6 @@ package com.udacity.exploreindia.base; import com.udacity.exploreindia.injection.InjectionUtils; -import com.udacity.exploreindia.ui.City.CityActivity; -import com.udacity.exploreindia.ui.City.CityPresenter; import com.udacity.exploreindia.ui.home.HomeActivity; import com.udacity.exploreindia.ui.home.HomePresenter; import com.udacity.exploreindia.ui.home.fragments.likedplaces.LikedPlacesFragment; @@ -16,6 +14,10 @@ import com.udacity.exploreindia.ui.home.fragments.search.SearchFragment; import com.udacity.exploreindia.ui.login.LoginActivity; import com.udacity.exploreindia.ui.login.LoginPresenter; +import com.udacity.exploreindia.ui.selectedstate.SelectedStateActivity; +import com.udacity.exploreindia.ui.selectedstate.SelectedStatePresenter; +import com.udacity.exploreindia.ui.selectedstate.fragment.SelectedPlacesFragment; +import com.udacity.exploreindia.ui.selectedstate.fragment.SelectedPlacesPresenter; import com.udacity.exploreindia.ui.splash.SplashActivity; import com.udacity.exploreindia.ui.splash.SplashPresenter; @@ -40,6 +42,8 @@ public static S getPresente return presenter; } else if (claxx instanceof LikedPlacesFragment) { presenter = (S) new LikedPlacesPresenter(InjectionUtils.getSharedPreference(), InjectionUtils.providesDataRepo(), claxx.getContext()); + } else if (claxx instanceof SelectedPlacesFragment) { + presenter = (S) new SelectedPlacesPresenter(InjectionUtils.getSharedPreference(), InjectionUtils.providesDataRepo(), claxx.getContext()); } else { throw new IllegalStateException("Activity presenter not supported yet"); } @@ -57,8 +61,8 @@ public static S getPresente presenter = (S) new LoginPresenter(InjectionUtils.getSharedPreference(), InjectionUtils.providesDataRepo(), claxx); } else if (claxx instanceof HomeActivity) { presenter = (S) new HomePresenter(InjectionUtils.getSharedPreference(), InjectionUtils.providesDataRepo(), claxx); - } else if (claxx instanceof CityActivity) { - presenter = (S) new CityPresenter(InjectionUtils.getSharedPreference(), InjectionUtils.providesDataRepo(), claxx); + } else if (claxx instanceof SelectedStateActivity) { + presenter = (S) new SelectedStatePresenter(InjectionUtils.getSharedPreference(), InjectionUtils.providesDataRepo(), claxx); } else { throw new IllegalStateException("Activity presenter not supported yet"); } diff --git a/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/SelectedStateActivity.java b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/SelectedStateActivity.java new file mode 100644 index 0000000..244d8cc --- /dev/null +++ b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/SelectedStateActivity.java @@ -0,0 +1,55 @@ +package com.udacity.exploreindia.ui.selectedstate; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.design.widget.TabLayout; +import android.support.v4.view.ViewPager; +import android.view.Menu; + +import com.udacity.exploreindia.R; +import com.udacity.exploreindia.base.BaseActivity; +import com.udacity.exploreindia.databinding.ActivitySelectedStateBinding; +import com.udacity.exploreindia.ui.home.HomeContract; +import com.udacity.exploreindia.ui.selectedstate.adapter.SelectedStateVPAdapter; +import com.udacity.exploreindia.ui.selectedstate.fragment.SelectedPlacesFragment; + +public class SelectedStateActivity extends BaseActivity implements HomeContract.View { + + private ViewPager mVpSelectedState; + private TabLayout mTabSelectedState; + + @Override + protected int getContentResource() { + return R.layout.activity_selected_state; + } + + @Override + protected void init(@Nullable Bundle savedInstanceState) { + mVpSelectedState = findViewById(R.id.vp_selected_state); + mTabSelectedState = findViewById(R.id.tb_selected_state); + //Set up the view pager + setupViewPager(mVpSelectedState); + //set up the tab layout with the tab layout + mTabSelectedState.setupWithViewPager(mVpSelectedState); + } + + @Override + protected void beforeView(@Nullable Bundle savedInstanceState) { + + } + + private void setupViewPager(ViewPager viewPager) { + SelectedStateVPAdapter adapter = new SelectedStateVPAdapter(getSupportFragmentManager()); + adapter.addFragment(SelectedPlacesFragment.newInstance(), getString(R.string.tab_places_title)); + //TODO + //Add the City fragment here + adapter.addFragment(SelectedPlacesFragment.newInstance(), getString(R.string.tab_city_title)); + viewPager.setAdapter(adapter); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.search_menu, menu); + return true; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/SelectedStateContract.java b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/SelectedStateContract.java new file mode 100644 index 0000000..f2e74b1 --- /dev/null +++ b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/SelectedStateContract.java @@ -0,0 +1,15 @@ +package com.udacity.exploreindia.ui.selectedstate; + +import com.udacity.exploreindia.base.BaseMvpPresenter; +import com.udacity.exploreindia.base.BaseView; + +public interface SelectedStateContract { + + interface Presenter extends BaseMvpPresenter { + + } + + interface View extends BaseView { + + } +} diff --git a/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/SelectedStatePresenter.java b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/SelectedStatePresenter.java new file mode 100644 index 0000000..478bc37 --- /dev/null +++ b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/SelectedStatePresenter.java @@ -0,0 +1,20 @@ +package com.udacity.exploreindia.ui.selectedstate; + +import android.content.Context; + +import com.udacity.exploreindia.base.BasePresenter; +import com.udacity.exploreindia.data.BaseRepo; +import com.udacity.exploreindia.helper.SharedPrefManager; + +public class SelectedStatePresenter extends BasePresenter implements SelectedStateContract.Presenter { + + + public SelectedStatePresenter(SharedPrefManager mSharedPreferences, BaseRepo mBaseRepo, Context mContext) { + super(mSharedPreferences, mBaseRepo, mContext); + } + + @Override + public void init() { + + } +} diff --git a/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/adapter/SelectedStateVPAdapter.java b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/adapter/SelectedStateVPAdapter.java new file mode 100644 index 0000000..9c9e1b1 --- /dev/null +++ b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/adapter/SelectedStateVPAdapter.java @@ -0,0 +1,40 @@ +package com.udacity.exploreindia.ui.selectedstate.adapter; + +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Bhavik Makwana on 11-05-2018. + */ +public class SelectedStateVPAdapter extends FragmentPagerAdapter { + private final List mFragmentList = new ArrayList<>(); + private final List mFragmentTitleList = new ArrayList<>(); + + public SelectedStateVPAdapter(FragmentManager manager) { + super(manager); + } + + @Override + public Fragment getItem(int position) { + return mFragmentList.get(position); + } + + @Override + public int getCount() { + return mFragmentList.size(); + } + + public void addFragment(Fragment fragment, String title) { + mFragmentList.add(fragment); + mFragmentTitleList.add(title); + } + + @Override + public CharSequence getPageTitle(int position) { + return mFragmentTitleList.get(position); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/adapter/StatePlacesAdapter.java b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/adapter/StatePlacesAdapter.java new file mode 100644 index 0000000..2cdfecc --- /dev/null +++ b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/adapter/StatePlacesAdapter.java @@ -0,0 +1,69 @@ +package com.udacity.exploreindia.ui.selectedstate.adapter; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.support.v4.content.ContextCompat; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.udacity.exploreindia.R; + +/** + * Created by Divya on 30-04-2018. + */ + +public class StatePlacesAdapter extends RecyclerView.Adapter { + private Context context; + + /*TODO + * 1. add the arrayList in the Constructor + * */ + public StatePlacesAdapter(Context context) { + this.context = context; + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(context).inflate(R.layout.places_item_layout, parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { + + //TODO Remove this code when fetch the data from the server + if (position % 2 == 0) + holder.mIvPlaceImage.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.gateway_of_india)); + else + holder.mIvPlaceImage.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.gateway_of_india_small)); + + holder.mTvPlaceName.setText("Diu Daman"); + holder.mIvIsFavorite.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_action_favorite_fill)); + } + + + @Override + public int getItemCount() { + //TODO Change this to -> arrayListObject.size() + return 10; + } + + class ViewHolder extends RecyclerView.ViewHolder { + private ImageView mIvPlaceImage; + private TextView mTvPlaceName; + private ImageView mIvIsFavorite; + + ViewHolder(View itemView) { + super(itemView); + mIvPlaceImage = itemView.findViewById(R.id.iv_state_place_image); + mTvPlaceName = itemView.findViewById(R.id.tv_state_place_name); + mIvIsFavorite = itemView.findViewById(R.id.iv_state_place_favourite); + } + } + +} diff --git a/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/fragment/SelectedPlacesContract.java b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/fragment/SelectedPlacesContract.java new file mode 100644 index 0000000..0141e5e --- /dev/null +++ b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/fragment/SelectedPlacesContract.java @@ -0,0 +1,18 @@ +package com.udacity.exploreindia.ui.selectedstate.fragment; + +import com.udacity.exploreindia.base.BaseMvpPresenter; +import com.udacity.exploreindia.base.BaseView; + +/** + * Created by kamalshree on 5/3/2018. + */ + +public interface SelectedPlacesContract { + + interface Presenter extends BaseMvpPresenter { + } + + interface View extends BaseView { + + } +} diff --git a/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/fragment/SelectedPlacesFragment.java b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/fragment/SelectedPlacesFragment.java new file mode 100644 index 0000000..c7a0c4a --- /dev/null +++ b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/fragment/SelectedPlacesFragment.java @@ -0,0 +1,44 @@ +package com.udacity.exploreindia.ui.selectedstate.fragment; + + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; +import android.view.View; +import android.widget.LinearLayout; + +import com.udacity.exploreindia.R; +import com.udacity.exploreindia.base.BaseFragment; +import com.udacity.exploreindia.databinding.FragmentSelectedPlacesBinding; +import com.udacity.exploreindia.ui.selectedstate.adapter.StatePlacesAdapter; + + +public class SelectedPlacesFragment extends BaseFragment implements SelectedPlacesContract.View { + + public SelectedPlacesFragment() { + // Required empty public constructor + } + + public static SelectedPlacesFragment newInstance() { + SelectedPlacesFragment fragment = new SelectedPlacesFragment(); + Bundle bundle = new Bundle(); + fragment.setArguments(bundle); + return fragment; + } + + @Override + protected int getContentResource() { + return R.layout.fragment_selected_places; + } + + @Override + protected void init(View view, @Nullable Bundle savedInstanceState) { + //initializations + RecyclerView mRvSelectedPlaces = view.findViewById(R.id.rv_selected_state_places); + //set up the RecyclerView + mRvSelectedPlaces.setHasFixedSize(true); + mRvSelectedPlaces.setLayoutManager(new StaggeredGridLayoutManager(2, LinearLayout.VERTICAL)); + mRvSelectedPlaces.setAdapter(new StatePlacesAdapter(getContext())); + } +} diff --git a/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/fragment/SelectedPlacesPresenter.java b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/fragment/SelectedPlacesPresenter.java new file mode 100644 index 0000000..2b5ae1a --- /dev/null +++ b/app/src/main/java/com/udacity/exploreindia/ui/selectedstate/fragment/SelectedPlacesPresenter.java @@ -0,0 +1,23 @@ +package com.udacity.exploreindia.ui.selectedstate.fragment; + +import android.content.Context; + +import com.udacity.exploreindia.base.BasePresenter; +import com.udacity.exploreindia.data.BaseRepo; +import com.udacity.exploreindia.helper.SharedPrefManager; + +/** + * Created by kamalshree on 5/3/2018. + */ + +public class SelectedPlacesPresenter extends BasePresenter implements SelectedPlacesContract.Presenter { + + public SelectedPlacesPresenter(SharedPrefManager mSharedPreferences, BaseRepo mBaseRepo, Context mContext) { + super(mSharedPreferences, mBaseRepo, mContext); + } + + @Override + public void init() { + + } +} diff --git a/app/src/main/res/layout/activity_selected_state.xml b/app/src/main/res/layout/activity_selected_state.xml new file mode 100644 index 0000000..2dc0eba --- /dev/null +++ b/app/src/main/res/layout/activity_selected_state.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_selected_places.xml b/app/src/main/res/layout/fragment_selected_places.xml new file mode 100644 index 0000000..a61d084 --- /dev/null +++ b/app/src/main/res/layout/fragment_selected_places.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/places_item_layout.xml b/app/src/main/res/layout/places_item_layout.xml new file mode 100644 index 0000000..12a97b0 --- /dev/null +++ b/app/src/main/res/layout/places_item_layout.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/search_menu.xml b/app/src/main/res/menu/search_menu.xml new file mode 100644 index 0000000..1196a43 --- /dev/null +++ b/app/src/main/res/menu/search_menu.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index ccf536c..d71a888 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -2,4 +2,6 @@ 8dp 16dp + 8dp + 16dp \ 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 98e1b52..09a3859 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -55,24 +55,27 @@ My Places - + - Image of place - Details of place + Image of place + Details of place - Places : - Bandstand + Places : + Bandstand - State : - Maharashtra + State : + Maharashtra - City : - Mumbai + City : + Mumbai - Date : - 17–04–18 + Date : + 17–04–18 + Places + City + Search - +