package org.petabytes.awesomeblogs.feeds; import android.content.Context; import android.content.Intent; import android.graphics.PorterDuff; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.util.Pair; import android.text.style.StyleSpan; import android.widget.ImageView; import android.widget.TextView; import com.annimon.stream.Optional; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; import org.petabytes.awesomeblogs.R; import org.petabytes.awesomeblogs.base.AwesomeActivity; import org.petabytes.awesomeblogs.util.Analytics; import org.petabytes.awesomeblogs.util.Truss; import org.petabytes.awesomeblogs.util.Views; import org.petabytes.coordinator.ActivityGraph; import butterknife.BindView; import butterknife.OnClick; public class FeedsActivity extends AwesomeActivity { private static String CATEGORY = "category"; private static String FRESH_ENTRIES = "fresh_entries"; @BindView(R.id.menu) ImageView menuButton; @BindView(R.id.sliding_menu) SlidingMenu slidingMenu; @BindView(R.id.page) TextView pageView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); slidingMenu.setOnOpenedListener(() -> Analytics.event(Analytics.Event.OPEN_DRAWER)); } @Override protected ActivityGraph createActivityGraph() { FeedsCoordinator feedsCoordinator; return new ActivityGraph.Builder() .layoutResId(R.layout.main) .coordinator(R.id.bottom_sheet, feedsCoordinator = new FeedsCoordinator(this, (page, total, color) -> { menuButton.setColorFilter(color, PorterDuff.Mode.SRC_ATOP); pageView.setTextColor(color); pageView.setText(new Truss() .pushSpan(new StyleSpan(android.graphics.Typeface.BOLD)) .append(page + 1) .popSpan() .append(" / ") .append(total) .build()); Views.setVisible(pageView); })) .coordinator(R.id.drawer, new DrawerCoordinator(this, new Pair<>(getCategory(), getFreshEntries()), category -> { Views.setInvisible(pageView); feedsCoordinator.onCategorySelect(category); slidingMenu.showContent(); })) .build(); } @OnClick(R.id.menu) void onDrawerButtonClick() { slidingMenu.showMenu(); } @OnClick(R.id.page) void onPageClick() { } @Override public void onBackPressed() { if (slidingMenu.isMenuShowing()) { slidingMenu.showContent(); } else { super.onBackPressed(); } } private Optional<String> getCategory() { return Optional.ofNullable(getIntent().getStringExtra(CATEGORY)); } private int getFreshEntries() { return getIntent().getIntExtra(FRESH_ENTRIES, 0); } public static Intent intent(@NonNull Context context) { Intent intent = new Intent(context, FeedsActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); return intent; } public static Intent intent(@NonNull Context context, @NonNull String category) { Intent intent = intent(context); intent.putExtra(CATEGORY, category); return intent; } public static Intent intent(@NonNull Context context, @NonNull String category, int freshEntries) { Intent intent = intent(context, category); intent.putExtra(FRESH_ENTRIES, freshEntries); return intent; } }