package com.dm.wallpaper.board.activities;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewCompat;
import android.support.v4.widget.NestedScrollView;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatCheckBox;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.danimahardhika.android.helpers.core.ColorHelper;
import com.danimahardhika.android.helpers.core.DrawableHelper;
import com.danimahardhika.android.helpers.core.TimeHelper;
import com.danimahardhika.android.helpers.core.WindowHelper;
import com.dm.wallpaper.board.R;
import com.dm.wallpaper.board.R2;
import com.dm.wallpaper.board.fragments.dialogs.FilterFragment;
import com.dm.wallpaper.board.fragments.dialogs.RefreshDurationFragment;
import com.dm.wallpaper.board.helpers.LocaleHelper;
import com.dm.wallpaper.board.preferences.Preferences;
import com.dm.wallpaper.board.utils.listeners.RefreshDurationListener;
import butterknife.BindView;
import butterknife.ButterKnife;
import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;
import static com.dm.wallpaper.board.helpers.ViewHelper.resetViewBottomPadding;
/*
* Wallpaper Board
*
* Copyright (c) 2017 Dani Mahardhika
*
* 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
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*/
public class WallpaperBoardMuzeiActivity extends AppCompatActivity implements View.OnClickListener,
RefreshDurationListener {
@BindView(R2.id.scrollview)
NestedScrollView mScrollView;
@BindView(R2.id.muzei_refresh_duration)
LinearLayout mRefreshDuration;
@BindView(R2.id.muzei_rotate_time)
TextView mRotateTimeText;
@BindView(R2.id.muzei_wifi_only)
LinearLayout mWifiOnly;
@BindView(R2.id.muzei_wifi_only_check)
AppCompatCheckBox mWifiOnlyCheck;
@BindView(R2.id.muzei_select_categories)
LinearLayout mSelectCategories;
@BindView(R2.id.muzei_save)
LinearLayout mSave;
private Class<?> mMuzeiService;
private int mRotateTime;
private boolean mIsMinute;
public void initMuzeiActivity(@Nullable Bundle savedInstanceState, @NonNull Class<?> muzeiService) {
super.setTheme(Preferences.get(this).isDarkTheme() ?
R.style.MuzeiThemeDark : R.style.MuzeiTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_muzei);
ButterKnife.bind(this);
ViewCompat.setNestedScrollingEnabled(mScrollView, false);
WindowHelper.disableTranslucentNavigationBar(this);
ColorHelper.setNavigationBarColor(this, ColorHelper.getDarkerColor(
ColorHelper.getAttributeColor(this, R.attr.colorAccent), 0.8f));
ColorHelper.setStatusBarColor(this, ColorHelper.getDarkerColor(
ColorHelper.getAttributeColor(this, R.attr.colorAccent), 0.8f));
Toolbar toolbar = ButterKnife.findById(this, R.id.toolbar);
toolbar.setTitle("");
toolbar.setNavigationIcon(R.drawable.ic_toolbar_muzei);
setSupportActionBar(toolbar);
mMuzeiService = muzeiService;
mIsMinute = Preferences.get(this).isRotateMinute();
mRotateTime = TimeHelper.milliToMinute(
Preferences.get(this).getRotateTime());
if (!mIsMinute) mRotateTime = mRotateTime / 60;
initRefreshDuration();
initSettings();
mWifiOnly.setOnClickListener(this);
mSelectCategories.setOnClickListener(this);
mRefreshDuration.setOnClickListener(this);
mSave.setOnClickListener(this);
mWifiOnlyCheck.setChecked(Preferences.get(this).isWifiOnly());
}
@Override
protected void attachBaseContext(Context newBase) {
LocaleHelper.setLocale(newBase);
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
resetViewBottomPadding(mScrollView, false);
LocaleHelper.setLocale(this);
}
@Override
public void onClick(View view) {
int id = view.getId();
if (id == R.id.muzei_refresh_duration) {
RefreshDurationFragment.showRefreshDurationDialog(getSupportFragmentManager(), mRotateTime, mIsMinute);
} else if (id == R.id.muzei_wifi_only) {
mWifiOnlyCheck.setChecked(!mWifiOnlyCheck.isChecked());
} else if (id == R.id.muzei_select_categories) {
FilterFragment.showFilterDialog(getSupportFragmentManager(), true);
} else if (id == R.id.muzei_save) {
int rotateTime = TimeHelper.minuteToMilli(mRotateTime);
if (!mIsMinute) rotateTime = rotateTime * 60;
Preferences.get(this).setRotateMinute(mIsMinute);
Preferences.get(this).setRotateTime(rotateTime);
Preferences.get(this).setWifiOnly(mWifiOnlyCheck.isChecked());
Intent intent = new Intent(this, mMuzeiService);
intent.putExtra("restart", true);
startService(intent);
Toast.makeText(this, R.string.muzei_settings_saved,
Toast.LENGTH_SHORT).show();
finish();
}
}
@Override
public void onRefreshDurationSet(int rotateTime, boolean isMinute) {
mRotateTime = rotateTime;
mIsMinute = isMinute;
initRefreshDuration();
}
private void initRefreshDuration() {
String refreshDuration = getResources().getString(R.string.muzei_refresh_duration_desc) +" "+
mRotateTime +" "+ getResources().getString(mIsMinute ? R.string.minute : R.string.hour);
mRotateTimeText.setText(refreshDuration);
}
private void initSettings() {
int color = ColorHelper.getAttributeColor(this, R.attr.colorAccent);
int titleColor = ColorHelper.getTitleTextColor(color);
ImageView icon = ButterKnife.findById(this, R.id.muzei_save_icon);
icon.setImageDrawable(DrawableHelper.getTintedDrawable(this, R.drawable.ic_toolbar_save, titleColor));
TextView text = ButterKnife.findById(this, R.id.muzei_save_text);
text.setTextColor(titleColor);
}
}