package com.dm.wallpaper.board.fragments.dialogs; import android.app.Dialog; import android.content.Context; 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.view.View; import android.widget.LinearLayout; import android.widget.TextView; import com.afollestad.materialdialogs.MaterialDialog; import com.danimahardhika.android.helpers.core.ColorHelper; import com.danimahardhika.android.helpers.core.DrawableHelper; import com.danimahardhika.android.helpers.permission.PermissionHelper; import com.danimahardhika.cafebar.CafeBar; import com.danimahardhika.cafebar.CafeBarTheme; import com.dm.wallpaper.board.R; import com.dm.wallpaper.board.R2; import com.dm.wallpaper.board.helpers.WallpaperHelper; import com.dm.wallpaper.board.utils.Extras; import java.io.File; 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 WallpaperOptionsFragment extends DialogFragment implements View.OnClickListener { @BindView(R2.id.apply) LinearLayout mApply; @BindView(R2.id.save) TextView mSave; @BindView(R2.id.apply_text) TextView mApplyText; @BindView(R2.id.divider) View mDivider; private String mName; private String mUrl; private static final String TAG = "com.dm.wallpaper.board.dialog.wallpaper.options"; private static WallpaperOptionsFragment newInstance(String url, String name) { WallpaperOptionsFragment fragment = new WallpaperOptionsFragment(); Bundle bundle = new Bundle(); bundle.putString(Extras.EXTRA_URL, url); bundle.putString(Extras.EXTRA_NAME, name); fragment.setArguments(bundle); return fragment; } public static void showWallpaperOptionsDialog(FragmentManager fm, String url, String name) { FragmentTransaction ft = fm.beginTransaction(); Fragment prev = fm.findFragmentByTag(TAG); if (prev != null) { ft.remove(prev); } try { DialogFragment dialog = WallpaperOptionsFragment.newInstance(url, name); dialog.show(ft, TAG); } catch (IllegalArgumentException | IllegalStateException ignored) {} } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity()); builder.customView(R.layout.fragment_wallpaper_options, false); builder.typeface("Font-Medium.ttf", "Font-Regular.ttf"); MaterialDialog dialog = builder.build(); dialog.show(); ButterKnife.bind(this, dialog); return dialog; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mName = getArguments().getString(Extras.EXTRA_NAME); mUrl = getArguments().getString(Extras.EXTRA_URL); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (savedInstanceState != null) { mUrl = savedInstanceState.getString(Extras.EXTRA_URL); mName = savedInstanceState.getString(Extras.EXTRA_NAME); } int color = ColorHelper.getAttributeColor(getActivity(), android.R.attr.textColorPrimary); mApplyText.setCompoundDrawablesWithIntrinsicBounds(DrawableHelper.getTintedDrawable( getActivity(), R.drawable.ic_toolbar_apply, color), null, null, null); mSave.setCompoundDrawablesWithIntrinsicBounds(DrawableHelper.getTintedDrawable( getActivity(), R.drawable.ic_toolbar_download, color), null, null, null); mApply.setOnClickListener(this); if (getActivity().getResources().getBoolean(R.bool.enable_wallpaper_download)) { mSave.setOnClickListener(this); return; } mDivider.setVisibility(View.GONE); mSave.setVisibility(View.GONE); } @Override public void onSaveInstanceState(Bundle outState) { outState.putString(Extras.EXTRA_URL, mUrl); outState.putString(Extras.EXTRA_NAME, mName); super.onSaveInstanceState(outState); } @Override public void onClick(View view) { int id = view.getId(); int color = ColorHelper.getAttributeColor(getActivity(), R.attr.colorAccent); if (id == R.id.apply) { WallpaperHelper.applyWallpaper(getActivity(), null, color, mUrl, mName); } else if (id == R.id.save) { if (PermissionHelper.isStorageGranted(getActivity())) { File target = new File(WallpaperHelper.getDefaultWallpapersDirectory(getActivity()).toString() + File.separator + mName + WallpaperHelper.IMAGE_EXTENSION); if (target.exists()) { Context context = getActivity(); CafeBar.builder(getActivity()) .theme(new CafeBarTheme.Custom(ColorHelper.getAttributeColor(getActivity(), R.attr.card_background))) .autoDismiss(false) .fitSystemWindow() .maxLines(4) .typeface("Font-Regular.ttf", "Font-Bold.ttf") .content(String.format(getResources().getString(R.string.wallpaper_download_exist), ("\"" +mName + WallpaperHelper.IMAGE_EXTENSION+ "\""))) .icon(R.drawable.ic_toolbar_download) .positiveText(R.string.wallpaper_download_exist_replace) .positiveColor(color) .onPositive(cafeBar -> { if (context == null) { cafeBar.dismiss(); return; } WallpaperHelper.downloadWallpaper(context, color, mUrl, mName); cafeBar.dismiss(); }) .negativeText(R.string.wallpaper_download_exist_new) .onNegative(cafeBar -> { if (context == null) { cafeBar.dismiss(); return; } WallpaperHelper.downloadWallpaper(context, color, mUrl, mName +"_"+ System.currentTimeMillis()); cafeBar.dismiss(); }) .show(); dismiss(); return; } WallpaperHelper.downloadWallpaper(getActivity(), color, mUrl, mName); dismiss(); return; } PermissionHelper.requestStorage(getActivity()); } dismiss(); } }