/* * Copyright 2013 serso aka se.solovyev * * 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. * * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Contact details * * Email: se.solovyev@gmail.com * Site: http://se.solovyev.org */ package org.solovyev.android.calculator.wizard; import android.os.Bundle; import android.support.v7.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.FrameLayout; import android.widget.Spinner; import org.solovyev.android.calculator.App; import org.solovyev.android.calculator.BaseActivity; import org.solovyev.android.calculator.Preferences; import org.solovyev.android.calculator.R; import org.solovyev.android.calculator.keyboard.BaseKeyboardUi; import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; public class ChooseThemeWizardStep extends WizardFragment implements AdapterView.OnItemSelectedListener { @Nonnull private final List<ThemeUi> themes = new ArrayList<>(); private FrameLayout preview; private WizardArrayAdapter<ThemeUi> adapter; @Override protected int getViewResId() { return R.layout.cpp_wizard_step_choose_theme; } @Override public void onViewCreated(View root, Bundle savedInstanceState) { super.onViewCreated(root, savedInstanceState); final Preferences.Gui.Theme theme = Preferences.Gui.getTheme(preferences); final Spinner spinner = (Spinner) root.findViewById(R.id.wizard_theme_spinner); themes.clear(); themes.add(new ThemeUi(Preferences.Gui.Theme.material_theme)); themes.add(new ThemeUi(Preferences.Gui.Theme.material_black_theme)); themes.add(new ThemeUi(Preferences.Gui.Theme.material_light_theme)); themes.add(new ThemeUi(Preferences.Gui.Theme.metro_blue_theme)); themes.add(new ThemeUi(Preferences.Gui.Theme.metro_green_theme)); themes.add(new ThemeUi(Preferences.Gui.Theme.metro_purple_theme)); adapter = new WizardArrayAdapter<>(getActivity(), themes); spinner.setAdapter(adapter); spinner.setSelection(findPosition(theme)); spinner.setOnItemSelectedListener(this); preview = (FrameLayout) root.findViewById(R.id.wizard_theme_preview); updatePreview(theme); } private int findPosition(@Nonnull Preferences.Gui.Theme theme) { for (int i = 0; i < themes.size(); i++) { if (theme.equals(themes.get(i).theme)) { return i; } } return 0; } private void updatePreview(@Nonnull Preferences.Gui.Theme theme) { preview.removeAllViews(); final ContextThemeWrapper context = new ContextThemeWrapper(getActivity(), theme.theme); LayoutInflater.from(context).inflate(R.layout.cpp_wizard_step_choose_theme_preview, preview); App.processViews(preview, new App.ViewProcessor<View>() { @Override public void process(@Nonnull View view) { BaseKeyboardUi.adjustButton(view); BaseActivity.setFont(view, typeface); } }); } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { final ThemeUi theme = adapter.getItem(position); Preferences.Gui.theme.putPreference(preferences, theme.theme); updatePreview(theme.theme); } @Override public void onNothingSelected(AdapterView<?> parent) { } private final class ThemeUi { @Nonnull final Preferences.Gui.Theme theme; @Nonnull final String name; public ThemeUi(@Nonnull Preferences.Gui.Theme theme) { this.theme = theme; this.name = theme.getName(getActivity()); } @Override public String toString() { return name; } } }