/* * Copyright (C) 2010 beworx.com * * 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.bwx.bequick; import java.util.ArrayList; import com.bwx.bequick.fwk.Setting; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.BaseAdapter; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; public class LayoutSettingsAdapter extends BaseAdapter implements OnClickListener { private static final LayoutParams FILL_PARRENT = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); // list of settings private ArrayList<Setting> mSettings; private LayoutInflater mInflater; private float mScale; public LayoutSettingsAdapter(Context context, ArrayList<Setting> settings) { mInflater = LayoutInflater.from(context); mSettings = settings; mScale = context.getResources().getDisplayMetrics().density; // update index int length = settings.size(); for (int i=0; i<length; i++) { settings.get(i).index = i; } } public boolean areAllItemsEnabled() { return false; } public boolean isEnabled(int position) { return mSettings.get(position).id < Setting.GROUP_VISIBLE; } public int getCount() { return mSettings.size(); } public Object getItem(int position) { return mSettings.get(position); } public void setItem(int position, Setting setting) { setting.index = position; mSettings.set(position, setting); } public long getItemId(int position) { return mSettings.get(position).id; } public boolean isInVisibleInList(Setting setting) { ArrayList<Setting> settings = mSettings; int size = settings.size(); for (int i=0; i<size; i++) { int id = settings.get(i).id; if (id == setting.id) return true; if (id == Setting.GROUP_HIDDEN) return false; } return false; } public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { // create placeholder view convertView = mInflater.inflate(R.layout.row_layout_placeholder, null); } LinearLayout placeholder = (LinearLayout) convertView; Setting setting = mSettings.get(position); final int id = setting.id; if (id == Setting.GROUP_VISIBLE || id == Setting.GROUP_HIDDEN) { // create / initialize separator View view = placeholder.findViewById(R.id.separator); if (view == null) { placeholder.removeAllViews(); view = mInflater.inflate(R.layout.row_layout_separator, null); placeholder.addView(view, FILL_PARRENT); } TextView text = (TextView) view.findViewById(R.id.title); text.setText(setting.titleId); placeholder.setMinimumHeight(0); } else if (id == Setting.PLACEHOLDER) { // do nothing, already there placeholder.removeAllViews(); placeholder.setMinimumHeight((int)(58 * mScale)); } else { // create / initialize setting View view = placeholder.findViewById(R.id.settings); if (view == null) { placeholder.removeAllViews(); view = mInflater.inflate(R.layout.row_layout_setting, null); placeholder.addView(view, FILL_PARRENT); } // initialize view ImageView image = (ImageView) view.findViewById(R.id.icon_view); image.setImageResource(setting.iconId); TextView text = (TextView) view.findViewById(R.id.title_view); text.setText(setting.titleId); ImageButton button = (ImageButton) view.findViewById(R.id.wrench); boolean visible = setting.prefs != null; button.setVisibility(visible ? View.VISIBLE : View.GONE); if (visible) { button.setTag(setting); button.setOnClickListener(this); } placeholder.setMinimumHeight(0); } placeholder.requestLayout(); return convertView; } public ArrayList<Setting> getSettings() { return mSettings; } public void onClick(View v) { Setting setting = (Setting) v.getTag(); setting.startPrefsActivity(v.getContext()); } }