Android Open Source - DashClockWidget Simple View Builder






From Project

Back to project page DashClockWidget.

License

The source code is released under:

Apache License

If you think the Android project DashClockWidget listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2013 Google Inc./*from   ww w .ja v  a  2  s  .c  om*/
 *
 * 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.dashclock.render;

import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.google.android.apps.dashclock.LogUtils;

import static com.google.android.apps.dashclock.LogUtils.LOGE;

/**
 * {@link ViewBuilder} implementation for standard framework views.
 */
public class SimpleViewBuilder implements ViewBuilder {
    private static final String TAG = LogUtils.makeLogTag(SimpleViewBuilder.class);

    private Context mContext;
    private View mRootView;
    private Callbacks mCallbacks;

    public SimpleViewBuilder(Context context, Callbacks callbacks) {
        mContext = context;
        mCallbacks = callbacks;
    }

    @Override
    public void useRoot(Object root) {
        mRootView = (View) root;
    }

    @Override
    public void loadRootLayout(Object container, int layoutResId) {
        mRootView = LayoutInflater.from(mContext).inflate(layoutResId,
                (ViewGroup) container, false);
    }

    @Override
    public Object inflateChildLayout(int layoutResId, int containerId) {
        return LayoutInflater.from(mContext).inflate(layoutResId,
                (containerId != 0) ? (ViewGroup) mRootView.findViewById(containerId) : null, false);
    }

    @Override
    public void setImageViewBitmap(int viewId, Bitmap bitmap) {
        try {
            ((ImageView) mRootView.findViewById(viewId)).setImageBitmap(bitmap);
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public void setViewContentDescription(int viewId, String contentDescription) {
        try {
            mRootView.findViewById(viewId).setContentDescription(contentDescription);
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public void setTextViewText(int viewId, CharSequence text) {
        try {
            ((TextView) mRootView.findViewById(viewId)).setText(text);
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public void setTextViewColor(int viewId, int color) {
        try {
            ((TextView) mRootView.findViewById(viewId)).setTextColor(color);
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public void setTextViewMaxLines(int viewId, int maxLines) {
        try {
            ((TextView) mRootView.findViewById(viewId)).setMaxLines(maxLines);
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public void setTextViewSingleLine(int viewId, boolean singleLine) {
        try {
            ((TextView) mRootView.findViewById(viewId)).setSingleLine(singleLine);
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public void setTextViewTextSize(int viewId, int unit, float size) {
        try {
            ((TextView) mRootView.findViewById(viewId)).setTextSize(unit, size);
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public void setLinearLayoutGravity(int viewId, int gravity) {
        try {
            ((LinearLayout) mRootView.findViewById(viewId)).setGravity(gravity);
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public void setViewPadding(int viewId, int left, int top, int right, int bottom) {
        try {
            mRootView.findViewById(viewId).setPadding(left, top, right, bottom);
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public void addView(int viewId, Object child) {
        ((ViewGroup) mRootView.findViewById(viewId)).addView((View) child);
    }

    @Override
    public void removeAllViews(int viewId) {
        ((ViewGroup) mRootView.findViewById(viewId)).removeAllViews();
    }

    @Override
    public void setViewVisibility(int viewId, int visibility) {
        try {
            mRootView.findViewById(viewId).setVisibility(visibility);
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public void setViewBackgroundColor(int viewId, int color) {
        try {
            mRootView.findViewById(viewId).setBackgroundColor(color);
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public void setViewClickIntent(final int viewId, final Intent clickIntent) {
        try {
            if (mCallbacks != null) {
                mCallbacks.onModifyClickIntent(clickIntent);
            }

            mRootView.findViewById(viewId).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mContext.startActivity(clickIntent);
                    mCallbacks.onClickIntentCalled(viewId);
                }
            });
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public void setViewClickFillInIntent(final int viewId, final Intent fillIntent) {
        try {
            View targetView = mRootView.findViewById(viewId);
            targetView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (mCallbacks == null) {
                        return;
                    }

                    try {
                        Intent intent = mCallbacks.onGetClickIntentTemplate();
                        intent.fillIn(fillIntent, 0);
                        mContext.startActivity(intent);
                        mCallbacks.onClickIntentCalled(viewId);
                    } catch (SecurityException e) {
                        LOGE(TAG, "Can't click extension.", e);
                    } catch (ActivityNotFoundException e) {
                        LOGE(TAG, "Can't click extension.", e);
                    }
                }
            });
        } catch (NullPointerException ignored) {
        }
    }

    @Override
    public Object getRoot() {
        return mRootView;
    }

    public static interface Callbacks {
        Intent onGetClickIntentTemplate();
        void onModifyClickIntent(Intent clickIntent);
        void onClickIntentCalled(int viewId);
    }
}




Java Source Code List

com.example.dashclock.exampleextension.ExampleExtension.java
com.example.dashclock.exampleextension.ExampleSettingsActivity.java
com.google.android.apps.dashclock.BackupAgent.java
com.google.android.apps.dashclock.DashClockService.java
com.google.android.apps.dashclock.DaydreamService.java
com.google.android.apps.dashclock.ExtensionHost.java
com.google.android.apps.dashclock.ExtensionManager.java
com.google.android.apps.dashclock.ExtensionPackageChangeReceiver.java
com.google.android.apps.dashclock.HelpUtils.java
com.google.android.apps.dashclock.LogAttachmentProvider.java
com.google.android.apps.dashclock.LogUtils.java
com.google.android.apps.dashclock.PeriodicExtensionRefreshReceiver.java
com.google.android.apps.dashclock.Utils.java
com.google.android.apps.dashclock.WidgetClickProxyActivity.java
com.google.android.apps.dashclock.WidgetProvider.java
com.google.android.apps.dashclock.api.DashClockExtension.java
com.google.android.apps.dashclock.api.ExtensionData.java
com.google.android.apps.dashclock.api.VisibleExtension.java
com.google.android.apps.dashclock.api.package-info.java
com.google.android.apps.dashclock.calendar.CalendarExtension.java
com.google.android.apps.dashclock.calendar.CalendarSelectionPreference.java
com.google.android.apps.dashclock.calendar.CalendarSettingsActivity.java
com.google.android.apps.dashclock.configuration.AppChooserPreference.java
com.google.android.apps.dashclock.configuration.AppearanceConfig.java
com.google.android.apps.dashclock.configuration.BaseSettingsActivity.java
com.google.android.apps.dashclock.configuration.ColorPreference.java
com.google.android.apps.dashclock.configuration.ConfigurationActivity.java
com.google.android.apps.dashclock.configuration.ConfigureAdvancedFragment.java
com.google.android.apps.dashclock.configuration.ConfigureAppearanceFragment.java
com.google.android.apps.dashclock.configuration.ConfigureDaydreamFragment.java
com.google.android.apps.dashclock.configuration.ConfigureExtensionsFragment.java
com.google.android.apps.dashclock.configuration.DaydreamProxyActivity.java
com.google.android.apps.dashclock.gmail.GmailContract.java
com.google.android.apps.dashclock.gmail.GmailExtension.java
com.google.android.apps.dashclock.gmail.GmailSettingsActivity.java
com.google.android.apps.dashclock.nextalarm.NextAlarmExtension.java
com.google.android.apps.dashclock.nextalarm.NextAlarmSettingsActivity.java
com.google.android.apps.dashclock.phone.MissedCallsExtension.java
com.google.android.apps.dashclock.phone.SmsExtension.java
com.google.android.apps.dashclock.phone.TelephonyProviderConstants.java
com.google.android.apps.dashclock.render.DashClockRenderer.java
com.google.android.apps.dashclock.render.SimpleRenderer.java
com.google.android.apps.dashclock.render.SimpleViewBuilder.java
com.google.android.apps.dashclock.render.ViewBuilder.java
com.google.android.apps.dashclock.render.WidgetRemoteViewsFactoryService.java
com.google.android.apps.dashclock.render.WidgetRenderer.java
com.google.android.apps.dashclock.render.WidgetViewBuilder.java
com.google.android.apps.dashclock.ui.DragGripView.java
com.google.android.apps.dashclock.ui.EdgeEffectUtil.java
com.google.android.apps.dashclock.ui.PagerPositionStrip.java
com.google.android.apps.dashclock.ui.SimplePagedTabsHelper.java
com.google.android.apps.dashclock.ui.SwipeDismissListViewTouchListener.java
com.google.android.apps.dashclock.ui.UndoBarController.java
com.google.android.apps.dashclock.weather.CantGetWeatherException.java
com.google.android.apps.dashclock.weather.WeatherData.java
com.google.android.apps.dashclock.weather.WeatherExtension.java
com.google.android.apps.dashclock.weather.WeatherLocationPreference.java
com.google.android.apps.dashclock.weather.WeatherRetryReceiver.java
com.google.android.apps.dashclock.weather.WeatherSettingsActivity.java
com.google.android.apps.dashclock.weather.YahooWeatherApiClient.java
com.google.android.apps.dashclock.weather.YahooWeatherApiConfig.java