FeedActivity.java 4.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/*
 *  Copyright (C) 2017 MINDORKS NEXTGEN PRIVATE LIMITED
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      https://mindorks.com/license/apache-v2
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License
 */

package com.mindorks.framework.mvvm.ui.feed;

19
import android.arch.lifecycle.ViewModelProviders;
20 21 22 23
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
24
import android.support.v4.app.Fragment;
25 26 27
import android.support.v4.app.NavUtils;
import android.support.v4.app.TaskStackBuilder;
import android.view.MenuItem;
L
Lam Tran 已提交
28 29
import com.mindorks.framework.mvvm.BR;
import com.mindorks.framework.mvvm.R;
30
import com.mindorks.framework.mvvm.ViewModelProviderFactory;
L
Lam Tran 已提交
31 32
import com.mindorks.framework.mvvm.databinding.ActivityFeedBinding;
import com.mindorks.framework.mvvm.ui.base.BaseActivity;
33 34 35
import dagger.android.AndroidInjector;
import dagger.android.DispatchingAndroidInjector;
import dagger.android.support.HasSupportFragmentInjector;
36 37
import javax.inject.Inject;
import javax.inject.Named;
38

39 40 41 42
/**
 * Created by amitshekhar on 10/07/17.
 */

43 44 45 46 47 48 49 50 51 52
public class FeedActivity extends BaseActivity<ActivityFeedBinding, FeedViewModel> implements
    HasSupportFragmentInjector {

  @Inject
  DispatchingAndroidInjector<Fragment> fragmentDispatchingAndroidInjector;
  @Inject
  FeedPagerAdapter mPagerAdapter;
  @Inject
  @Named("FeedActivity")
  ViewModelProviderFactory factory;
J
Jyoti Dubey 已提交
53
  private FeedViewModel mFeedViewModel;
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
  private ActivityFeedBinding mActivityFeedBinding;

  public static Intent newIntent(Context context) {
    return new Intent(context, FeedActivity.class);
  }

  @Override
  public int getBindingVariable() {
    return BR.viewModel;
  }

  @Override
  public int getLayoutId() {
    return R.layout.activity_feed;
  }

  @Override
  public FeedViewModel getViewModel() {
    mFeedViewModel = ViewModelProviders.of(this, factory).get(FeedViewModel.class);
    return mFeedViewModel;
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
      // Respond to the action bar's Up/Home button
      case android.R.id.home:
        Intent upIntent = NavUtils.getParentActivityIntent(this);
        upIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
          // This activity is NOT part of this app's task, so create a new task
          // when navigating up, with a synthesized back stack.
          TaskStackBuilder.create(this)
              // Add all of this activity's parents to the back stack
              .addNextIntentWithParentStack(upIntent)
              // Navigate up to the closest parent
              .startActivities();
        } else {
          // This activity is part of this app's task, so simply
          // navigate up to the logical parent activity.
          NavUtils.navigateUpTo(this, upIntent);
L
Lam Tran 已提交
95
        }
96
        return true;
L
Lam Tran 已提交
97
    }
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
    return super.onOptionsItemSelected(item);
  }

  @Override
  public AndroidInjector<Fragment> supportFragmentInjector() {
    return fragmentDispatchingAndroidInjector;
  }

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mActivityFeedBinding = getViewDataBinding();
    setUp();
  }

  private void setUp() {
    setSupportActionBar(mActivityFeedBinding.toolbar);
    if (getSupportActionBar() != null) {
      getSupportActionBar().setDisplayHomeAsUpEnabled(true);
      getSupportActionBar().setDisplayShowHomeEnabled(true);
118 119
    }

120
    mPagerAdapter.setCount(2);
L
Lam Tran 已提交
121

122
    mActivityFeedBinding.feedViewPager.setAdapter(mPagerAdapter);
123

124 125 126 127
    mActivityFeedBinding.tabLayout
        .addTab(mActivityFeedBinding.tabLayout.newTab().setText(getString(R.string.blog)));
    mActivityFeedBinding.tabLayout
        .addTab(mActivityFeedBinding.tabLayout.newTab().setText(getString(R.string.open_source)));
128

129 130
    mActivityFeedBinding.feedViewPager
        .setOffscreenPageLimit(mActivityFeedBinding.tabLayout.getTabCount());
131

132 133
    mActivityFeedBinding.feedViewPager.addOnPageChangeListener(
        new TabLayout.TabLayoutOnPageChangeListener(mActivityFeedBinding.tabLayout));
134

135 136 137
    mActivityFeedBinding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
      @Override
      public void onTabReselected(TabLayout.Tab tab) {
138

139
      }
140

141 142 143 144
      @Override
      public void onTabSelected(TabLayout.Tab tab) {
        mActivityFeedBinding.feedViewPager.setCurrentItem(tab.getPosition());
      }
145

146 147
      @Override
      public void onTabUnselected(TabLayout.Tab tab) {
148

149 150 151
      }
    });
  }
152
}