/* * Copyright (C) 2014 The Android Open Source Project * * 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 com.example.android.support.wearable.notifications; import android.content.Context; import android.content.res.Resources; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; import java.util.List; /** * Manages the background image pickers. */ public class BackgroundPickers { public interface OnBackgroundPickersChangedListener { public void onBackgroundPickersChanged(BackgroundPickers pickers); } private final ViewGroup mContainer; private final OnPickedListener mOnPickedListener; private final List mPickers; private final OnBackgroundPickersChangedListener listener; public BackgroundPickers(ViewGroup container, OnBackgroundPickersChangedListener listener) { this.mContainer = container; this.mOnPickedListener = new OnPickedListener(); this.mPickers = new ArrayList(); this.listener = listener; } /** * Generates the pickers as necessary. */ public void generatePickers(int count) { // Clear existing containers. clear(); // Fill in new pickers. LayoutInflater inflater = LayoutInflater.from(mContainer.getContext()); Resources res = mContainer.getResources(); for (int i = 0; i < count; i++) { View picker = inflater.inflate(R.layout.background_picker, mContainer, false); TextView label = (TextView) picker.findViewById(R.id.bg_picker_label); label.setText(String.format(res.getString(R.string.bg_picker_label), i+1)); ViewGroup pickerBox = (ViewGroup) picker.findViewById(R.id.bg_picker_container); mPickers.add(pickerBox); for (int j = 0; j < pickerBox.getChildCount(); j++) { ImageView img = (ImageView) pickerBox.getChildAt(j); img.setOnClickListener(mOnPickedListener); } mContainer.addView(picker); } } /** * Returns the background resource for the picker at the given index. * @param position Index of the background picker. * @return Id of the background image resource. null if no image is picked. */ public Integer getRes(int position) { String tag = (String) mPickers.get(position).getTag(); if (tag == null) { return null; } Context context = mContainer.getContext(); return context.getResources().getIdentifier(tag, "drawable", context.getPackageName()); } /** * Returns the all the background resources for the pickers managed by this object. Returns null * if no pickers exist. */ public Integer[] getRes() { if (mPickers.size() == 0) { return null; } Integer[] res = new Integer[mPickers.size()]; for (int i = 0; i < mPickers.size(); i++) { res[i] = getRes(i); } return res; } /** * Clears the pickers. */ public void clear() { mContainer.removeAllViews(); mPickers.clear(); } public int getCount() { return mPickers.size(); } private class OnPickedListener implements View.OnClickListener { @Override public void onClick(View view) { ImageView pickedView = (ImageView) view; ViewGroup pickerBox = (ViewGroup) view.getParent(); // Clear old selection. for (int i = 0; i < pickerBox.getChildCount(); i++) { ImageView childView = (ImageView) pickerBox.getChildAt(i); childView.setBackgroundResource(R.drawable.unselected_background); } // Set new selection. pickedView.setBackgroundResource(R.drawable.selected_background); pickerBox.setTag(pickedView.getTag()); if (listener != null) { listener.onBackgroundPickersChanged(BackgroundPickers.this); } } } }