package com.wangdaye.mysplash.common.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import com.wangdaye.mysplash.Mysplash;
import com.wangdaye.mysplash.R;
import com.wangdaye.mysplash.common._basic.MysplashActivity;
import com.wangdaye.mysplash.common.ui.fragment.SettingsFragment;
import com.wangdaye.mysplash.common.ui.widget.SwipeBackCoordinatorLayout;
import com.wangdaye.mysplash.common.ui.widget.coordinatorView.StatusBarView;
import com.wangdaye.mysplash.common.utils.DisplayUtils;
import com.wangdaye.mysplash.common.utils.manager.ThemeManager;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Settings activity.
*
* This activity is used to show and save setting options.
*
* */
public class SettingsActivity extends MysplashActivity
implements View.OnClickListener, SwipeBackCoordinatorLayout.OnSwipeListener {
@BindView(R.id.activity_settings_container)
CoordinatorLayout container;
@BindView(R.id.activity_settings_statusBar)
StatusBarView statusBar;
private SettingsFragment fragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
}
@Override
protected void onStart() {
super.onStart();
if (!isStarted()) {
setStarted();
ButterKnife.bind(this);
initWidget();
fragment = new SettingsFragment();
getFragmentManager()
.beginTransaction()
.setTransition(android.app.FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.replace(R.id.activity_settings_preferenceContainer, fragment)
.commit();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case Mysplash.CUSTOM_API_ACTIVITY:
if (resultCode == RESULT_OK) {
showSnackbar(
getString(R.string.feedback_please_login),
Snackbar.LENGTH_LONG);
}
break;
}
}
@Override
protected void setTheme() {
if (ThemeManager.getInstance(this).isLightTheme()) {
setTheme(R.style.MysplashTheme_light_Translucent_Settings);
} else {
setTheme(R.style.MysplashTheme_dark_Translucent_Settings);
}
}
@Override
public void handleBackPressed() {
finishActivity(SwipeBackCoordinatorLayout.DOWN_DIR);
}
@Override
protected void backToTop() {
// do nothing.
}
@Override
public void finishActivity(int dir) {
SwipeBackCoordinatorLayout.hideBackgroundShadow(container);
finish();
switch (dir) {
case SwipeBackCoordinatorLayout.UP_DIR:
overridePendingTransition(0, R.anim.activity_slide_out_top);
break;
case SwipeBackCoordinatorLayout.DOWN_DIR:
overridePendingTransition(0, R.anim.activity_slide_out_bottom);
break;
}
}
@Override
public CoordinatorLayout getSnackbarContainer() {
return container;
}
// init.
private void initWidget() {
SwipeBackCoordinatorLayout swipeBackView = ButterKnife.findById(
this, R.id.activity_settings_swipeBackView);
swipeBackView.setOnSwipeListener(this);
Toolbar toolbar = (Toolbar) findViewById(R.id.activity_settings_toolbar);
ThemeManager.setNavigationIcon(
toolbar, R.drawable.ic_toolbar_back_light, R.drawable.ic_toolbar_back_dark);
toolbar.setNavigationOnClickListener(this);
}
// control.
private void showSnackbar(String content, int duration) {
View container = provideSnackbarContainer();
Snackbar snackbar = Snackbar
.make(container, content, duration);
Snackbar.SnackbarLayout snackbarLayout = (Snackbar.SnackbarLayout) snackbar.getView();
snackbarLayout.setBackgroundColor(ThemeManager.getRootColor(this));
TextView contentTxt = ButterKnife.findById(snackbarLayout, R.id.snackbar_text);
DisplayUtils.setTypeface(this, contentTxt);
contentTxt.setTextColor(ThemeManager.getContentColor(this));
snackbar.show();
}
// interface.
// on click listener.
@Override
public void onClick(View view) {
switch (view.getId()) {
case -1:
finishActivity(SwipeBackCoordinatorLayout.DOWN_DIR);
break;
}
}
// on swipe back listener.
@Override
public boolean canSwipeBack(int dir) {
ListView listView = fragment.getScrolledView();
return listView != null
&& SwipeBackCoordinatorLayout.canSwipeBack(listView, dir);
}
@Override
public void onSwipeProcess(float percent) {
statusBar.setAlpha(1 - percent);
container.setBackgroundColor(SwipeBackCoordinatorLayout.getBackgroundColor(percent));
}
@Override
public void onSwipeFinish(int dir) {
finishActivity(dir);
}
}