// Path: app/src/main/java/io/rapidpro/surveyor/ui/CachedLinearLayout.java
// public class CachedLinearLayout extends LinearLayout {
// 
//     private ViewCache m_cache;
// 
//     public CachedLinearLayout(Context context) {
//         super(context);
//         init();
//     }
// 
//     public CachedLinearLayout(Context context, AttributeSet attrs) {
//         super(context, attrs);
//         init();
//     }
// 
//     public CachedLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {
//         super(context, attrs, defStyleAttr);
//         init();
//     }
// 
//     protected void init() {
//         m_cache = new ViewCache(getContext(), this);
//     }
// 
//     public TextView getTextView(int id) {
//         return m_cache.getTextView(id);
//     }
// 
//     public ImageView getImageView(int id) {
//         return m_cache.getImageView(id);
//     }
// 
//     public View getView(int id) {
//         return m_cache.getView(id);
//     }
// 
//     public void hide(int id) {
//         m_cache.hide(id);
//     }
// 
//     public void show(int id) {
//         m_cache.show(id);
//     }
// }
// 
// Path: app/src/main/java/io/rapidpro/surveyor/ui/IconTextView.java
// public class IconTextView extends TextView {
//     public IconTextView(Context context, AttributeSet attrs) {
//         super(context, attrs);
//         setTypeface(Typefaces.get(getContext(), "material.ttf"));
//     }
// 
//     public void setIconColor(int color) {
//         setTextColor(getResources().getColor(color));
//     }
// }


import android.content.Context;
import android.graphics.Bitmap;
import android.text.method.LinkMovementMethod;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import io.rapidpro.surveyor.R;
import io.rapidpro.surveyor.ui.CachedLinearLayout;
import io.rapidpro.surveyor.ui.IconTextView;
        tv.setText(text);
        tv.setMovementMethod(LinkMovementMethod.getInstance());

        if (!inbound) {
            tv.setBackground(getResources().getDrawable(R.drawable.chat_bubble_out));
        }

        addView(getSpacer(), inbound ? 1 : 0);
    }

    public void setThumbnail(Bitmap image, String url, int type) {
        ImageView imageView = getImageView(R.id.thumbnail);

        if (image != null) {
            imageView.setImageBitmap(image);
        } else {

        }

        View mediaView = getView(R.id.media_view);
        mediaView.setVisibility(VISIBLE);

        mediaView.setTag(R.string.tag_url, url);
        mediaView.setTag(R.string.tag_media_type, type);

        if (type == R.string.media_image) {
            getTextView(R.id.media_icon).setText(R.string.icon_photo);
        } else if (type == R.string.media_video) {
            getTextView(R.id.media_icon).setText(R.string.icon_play_arrow);
        } else if (type == R.string.media_audio || type == R.string.media_location) {
// Path: app/src/main/java/io/rapidpro/surveyor/ui/CachedLinearLayout.java
// public class CachedLinearLayout extends LinearLayout {
// 
//     private ViewCache m_cache;
// 
//     public CachedLinearLayout(Context context) {
//         super(context);
//         init();
//     }
// 
//     public CachedLinearLayout(Context context, AttributeSet attrs) {
//         super(context, attrs);
//         init();
//     }
// 
//     public CachedLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {
//         super(context, attrs, defStyleAttr);
//         init();
//     }
// 
//     protected void init() {
//         m_cache = new ViewCache(getContext(), this);
//     }
// 
//     public TextView getTextView(int id) {
//         return m_cache.getTextView(id);
//     }
// 
//     public ImageView getImageView(int id) {
//         return m_cache.getImageView(id);
//     }
// 
//     public View getView(int id) {
//         return m_cache.getView(id);
//     }
// 
//     public void hide(int id) {
//         m_cache.hide(id);
//     }
// 
//     public void show(int id) {
//         m_cache.show(id);
//     }
// }
// 
// Path: app/src/main/java/io/rapidpro/surveyor/ui/IconTextView.java
// public class IconTextView extends TextView {
//     public IconTextView(Context context, AttributeSet attrs) {
//         super(context, attrs);
//         setTypeface(Typefaces.get(getContext(), "material.ttf"));
//     }
// 
//     public void setIconColor(int color) {
//         setTextColor(getResources().getColor(color));
//     }
// }


// Path: app/src/main/java/io/rapidpro/surveyor/widget/ChatBubbleView.java
import android.content.Context;
import android.graphics.Bitmap;
import android.text.method.LinkMovementMethod;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import io.rapidpro.surveyor.R;
import io.rapidpro.surveyor.ui.CachedLinearLayout;
import io.rapidpro.surveyor.ui.IconTextView;

        tv.setText(text);
        tv.setMovementMethod(LinkMovementMethod.getInstance());

        if (!inbound) {
            tv.setBackground(getResources().getDrawable(R.drawable.chat_bubble_out));
        }

        addView(getSpacer(), inbound ? 1 : 0);
    }

    public void setThumbnail(Bitmap image, String url, int type) {
        ImageView imageView = getImageView(R.id.thumbnail);

        if (image != null) {
            imageView.setImageBitmap(image);
        } else {

        }

        View mediaView = getView(R.id.media_view);
        mediaView.setVisibility(VISIBLE);

        mediaView.setTag(R.string.tag_url, url);
        mediaView.setTag(R.string.tag_media_type, type);

        if (type == R.string.media_image) {
            getTextView(R.id.media_icon).setText(R.string.icon_photo);
        } else if (type == R.string.media_video) {
            getTextView(R.id.media_icon).setText(R.string.icon_play_arrow);
        } else if (type == R.string.media_audio || type == R.string.media_location) {
            IconTextView iconView = (IconTextView) getTextView(R.id.media_icon);