/* * Copyright (C) 2016 Google Inc. All Rights Reserved. * * 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.google.android.apps.santatracker.map.cardstream; import android.content.Context; import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.Typeface; import android.os.Build; import android.os.LocaleList; import android.support.v4.content.res.ResourcesCompat; import android.text.method.LinkMovementMethod; import android.text.method.TransformationMethod; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.google.android.apps.santatracker.R; import java.util.Locale; class DestinationViewHolder extends CardViewHolder { private static AllCaps sAllCaps; private static LinkMovementMethod sLinkMovementMethod; TextView region; TextView city; TextView copyright; TextView arrival; TextView weather; TextView weatherLabel; ImageView image; Button streetView; DestinationViewHolder(View itemView) { super(itemView); region = (TextView) itemView.findViewById(R.id.destination_region); city = (TextView) itemView.findViewById(R.id.destination_city); copyright = (TextView) itemView.findViewById(R.id.destination_copyright); arrival = (TextView) itemView.findViewById(R.id.destination_arrival); weather = (TextView) itemView.findViewById(R.id.destination_weather); weatherLabel = (TextView) itemView.findViewById(R.id.destination_weather_label); image = (ImageView) itemView.findViewById(R.id.destination_image); streetView = (Button) itemView.findViewById(R.id.destination_street_view); image.setColorFilter(ResourcesCompat.getColor(itemView.getResources(), R.color.overlayDestinationCardFilter, itemView.getContext().getTheme()), PorterDuff.Mode.MULTIPLY); ensureMethods(itemView.getContext()); region.setTransformationMethod(sAllCaps); copyright.setMovementMethod(sLinkMovementMethod); } private void ensureMethods(Context context) { if (sAllCaps == null) { sAllCaps = new AllCaps(context); } if (sLinkMovementMethod == null) { sLinkMovementMethod = new LinkMovementMethod(); } } @Override public void setTypefaces(Typeface label, Typeface body) { setTypeface(new TextView[]{copyright, arrival, weather}, body); setTypeface(new TextView[]{city}, label); } private static class AllCaps implements TransformationMethod { private final Locale mLocale; public AllCaps(Context context) { if (Build.VERSION.SDK_INT >= 24) { LocaleList locales = context.getResources().getConfiguration().getLocales(); mLocale = locales.get(0); } else { //noinspection deprecation mLocale = context.getResources().getConfiguration().locale; } } @Override public CharSequence getTransformation(CharSequence source, View view) { return source != null ? source.toString().toUpperCase(mLocale) : null; } @Override public void onFocusChanged(View view, CharSequence sourceText, boolean focused, int direction, Rect previouslyFocusedRect) { // Do nothing } } }