/*
* Copyright 2015 Google Inc.
*
* 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.
*/
package net.nurik.roman.formwatchface;
import android.app.Fragment;
import android.content.SharedPreferences;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.support.wearable.view.WearableListView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import net.nurik.roman.formwatchface.common.MuzeiArtworkImageLoader;
import net.nurik.roman.formwatchface.common.config.ConfigHelper;
import net.nurik.roman.formwatchface.common.config.Themes;
import net.nurik.roman.formwatchface.common.config.UpdateConfigIntentService;
public class ConfigThemeFragment extends Fragment {
private View mRootView;
private SharedPreferences mSharedPreferences;
public ConfigThemeFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
}
@Nullable
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mRootView = inflater.inflate(R.layout.config_theme_fragment, container, false);
WearableListView listView = (WearableListView) mRootView.findViewById(R.id.wearable_list);
listView.setGreedyTouchMode(true);
final boolean hasMuzeiArtwork = MuzeiArtworkImageLoader.hasMuzeiArtwork(getActivity());
listView.setAdapter(new WearableListView.Adapter() {
private static final int TYPE_NORMAL = 1;
private static final int TYPE_MUZEI = 2;
@Override
public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ItemViewHolder(inflater
.inflate(R.layout.config_theme_color_item, parent, false));
}
@Override
public int getItemViewType(int position) {
return (position >= Themes.THEMES.length) ? TYPE_MUZEI : TYPE_NORMAL;
}
@Override
public void onBindViewHolder(WearableListView.ViewHolder holder, int position) {
ItemViewHolder itemHolder = (ItemViewHolder) holder;
Themes.Theme theme;
if (getItemViewType(position) == TYPE_MUZEI) {
theme = Themes.MUZEI_THEME;
itemHolder.circleView.setImageResource(R.drawable.muzei_icon);
} else {
theme = Themes.THEMES[position];
((GradientDrawable) itemHolder.circleView.getDrawable()).setColor(
getResources().getColor(theme.darkRes));
}
holder.itemView.setTag(theme.id);
}
@Override
public int getItemCount() {
return Themes.THEMES.length + (hasMuzeiArtwork ? 1 : 0);
}
});
listView.setClickListener(new WearableListView.ClickListener() {
@Override
public void onClick(WearableListView.ViewHolder viewHolder) {
String theme = viewHolder.itemView.getTag().toString();
mSharedPreferences.edit().putString(ConfigHelper.KEY_THEME, theme).apply();
getActivity().finish();
}
@Override
public void onTopEmptyRegionClick() {
}
});
int startingIndex = 0;
String theme = mSharedPreferences.getString(ConfigHelper.KEY_THEME, null);
if (theme != null) {
for (int i = 0; i < Themes.THEMES.length; i++) {
if (Themes.THEMES[i].id.equals(theme)) {
startingIndex = i;
break;
}
}
}
listView.scrollToPosition(startingIndex);
return mRootView;
}
public static class ItemViewHolder extends WearableListView.ViewHolder {
private ImageView circleView;
public ItemViewHolder(View itemView) {
super(itemView);
circleView = (ImageView) itemView.findViewById(R.id.circle);
}
}
}