package com.dm.wallpaper.board.fragments.dialogs;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.AppCompatRadioButton;
import android.util.Log;
import android.view.View;
import android.widget.NumberPicker;
import com.afollestad.materialdialogs.MaterialDialog;
import com.danimahardhika.android.helpers.core.ColorHelper;
import com.danimahardhika.android.helpers.core.DrawableHelper;
import com.dm.wallpaper.board.R;
import com.dm.wallpaper.board.R2;
import com.dm.wallpaper.board.utils.LogUtil;
import com.dm.wallpaper.board.utils.listeners.RefreshDurationListener;
import butterknife.BindView;
import butterknife.ButterKnife;
/*
* 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 RefreshDurationFragment extends DialogFragment implements View.OnClickListener {
@BindView(R2.id.number_picker)
NumberPicker mNumberPicker;
@BindView(R2.id.minute)
AppCompatRadioButton mMinute;
@BindView(R2.id.hour)
AppCompatRadioButton mHour;
private int mRotateTime;
private boolean mIsMinute;
private static final String MINUTE = "minute";
private static final String ROTATE_TIME = "rotate_time";
private static final String TAG = "com.dm.wallpaper.board.dialog.refresh.duration";
private static RefreshDurationFragment newInstance(int rotateTime, boolean isMinute) {
RefreshDurationFragment fragment = new RefreshDurationFragment();
Bundle bundle = new Bundle();
bundle.putInt(ROTATE_TIME, rotateTime);
bundle.putBoolean(MINUTE, isMinute);
fragment.setArguments(bundle);
return fragment;
}
public static void showRefreshDurationDialog(FragmentManager fm, int rotateTime, boolean isMinute) {
FragmentTransaction ft = fm.beginTransaction();
Fragment prev = fm.findFragmentByTag(TAG);
if (prev != null) {
ft.remove(prev);
}
try {
DialogFragment dialog = RefreshDurationFragment.newInstance(rotateTime, isMinute);
dialog.show(ft, TAG);
} catch (IllegalStateException | IllegalArgumentException ignored) {}
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity());
builder.customView(R.layout.fragment_refresh_duration, true);
builder.typeface("Font-Medium.ttf", "Font-Regular.ttf");
builder.title(R.string.muzei_refresh_duration);
builder.positiveText(R.string.close);
MaterialDialog dialog = builder.build();
dialog.show();
ButterKnife.bind(this, dialog);
return dialog;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mRotateTime = getArguments().getInt(ROTATE_TIME, 1);
mIsMinute = getArguments().getBoolean(MINUTE, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mNumberPicker.setMinValue(1);
mNumberPicker.setMaxValue(100);
setDividerColor(mNumberPicker);
mMinute.setOnClickListener(this);
mHour.setOnClickListener(this);
mMinute.setChecked(mIsMinute);
mHour.setChecked(!mIsMinute);
mNumberPicker.setValue(mRotateTime);
}
@Override
public void onDismiss(DialogInterface dialog) {
RefreshDurationListener listener = (RefreshDurationListener) getActivity();
listener.onRefreshDurationSet(mNumberPicker.getValue(), mMinute.isChecked());
super.onDismiss(dialog);
}
@Override
public void onClick(View view) {
int id = view.getId();
if (id == R.id.minute) {
mMinute.setChecked(true);
mHour.setChecked(false);
} else if (id == R.id.hour) {
mHour.setChecked(true);
mMinute.setChecked(false);
}
}
private void setDividerColor (NumberPicker picker) {
java.lang.reflect.Field[] pickerFields = NumberPicker.class.getDeclaredFields();
for (java.lang.reflect.Field pf : pickerFields) {
if (pf.getName().equals("mSelectionDivider")) {
pf.setAccessible(true);
try {
int color = ColorHelper.getAttributeColor(getActivity(), R.attr.colorAccent);
pf.set(picker, DrawableHelper.getTintedDrawable(
getActivity(), R.drawable.numberpicker_divider, color));
} catch (Exception e) {
LogUtil.e(Log.getStackTraceString(e));
}
break;
}
}
}
}