package net.miz_hi.smileessence.status; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.android.volley.toolbox.NetworkImageView; import net.miz_hi.smileessence.Client; import net.miz_hi.smileessence.R; import net.miz_hi.smileessence.cache.ImageCache; import net.miz_hi.smileessence.core.Settings; import net.miz_hi.smileessence.model.status.IStatusModel; import net.miz_hi.smileessence.model.status.event.EventModel; import net.miz_hi.smileessence.model.status.event.StatusEvent; import net.miz_hi.smileessence.model.status.tweet.EnumTweetType; import net.miz_hi.smileessence.model.status.tweet.TweetModel; import net.miz_hi.smileessence.model.status.user.UserModel; import net.miz_hi.smileessence.preference.EnumPreferenceKey; import net.miz_hi.smileessence.util.Morse; public class StatusViewFactory { LayoutInflater inflater; View baseView; NetworkImageView icon; TextView textTop; TextView textContent; TextView textBottom; ImageView favorited; View commands; int colorTop; int colorContent; int colorBottom; private StatusViewFactory() { } public static StatusViewFactory newInstance(LayoutInflater inflater, View baseView) { StatusViewFactory factory = new StatusViewFactory(); factory.inflater = inflater; if(baseView == null) { factory.baseView = factory.inflater.inflate(R.layout.status_layout, null); } else { factory.baseView = baseView; } factory.icon = (NetworkImageView) factory.baseView.findViewById(R.id.status_icon); factory.textTop = (TextView) factory.baseView.findViewById(R.id.status_header); factory.textContent = (TextView) factory.baseView.findViewById(R.id.status_text); factory.textBottom = (TextView) factory.baseView.findViewById(R.id.status_footer); factory.favorited = (ImageView) factory.baseView.findViewById(R.id.status_favorited); factory.commands = factory.baseView.findViewById(R.id.status_commands); return factory; } public View getStatusView(IStatusModel model) { // initialize favorited.setVisibility(View.GONE); commands.setVisibility(View.GONE); //text size Settings settings = Client.getSettings(); int textSize = settings.getTextSize(); textTop.setTextSize(textSize); textContent.setTextSize(textSize); textBottom.setTextSize(textSize - 2); //text color colorTop = Client.getMainActivity().getResources().getColor(settings.getTheme().getHeaderTextColor()); colorContent = Client.getMainActivity().getResources().getColor(settings.getTheme().getNormalTextColor()); colorBottom = Client.getMainActivity().getResources().getColor(settings.getTheme().getHintTextColor()); //adjust to model if(model instanceof TweetModel) { adjustToTweetView((TweetModel) model); } else if(model instanceof EventModel) { adjustToEventView((EventModel) model); } else if(model instanceof UserModel) { adjustToUserModel((UserModel) model); } //coloring textTop.setTextColor(colorTop); textContent.setTextColor(colorContent); textBottom.setTextColor(colorBottom); //set value icon.setDefaultImageResId(R.drawable.icon_refresh); ImageCache.setImageToView(model.getUser().iconUrl, icon); textTop.setText(model.getTextTop()); String text; if(Morse.isMorse(model.getTextContent()) && Client.<Boolean>getPreferenceValue(EnumPreferenceKey.READ_MORSE)) { text = model.getTextContent() + "\n(" + Morse.mcToJa(model.getTextContent()) + ")"; } else { text = model.getTextContent(); } textContent.setText(text); textBottom.setText(model.getTextBottom()); return baseView; } private void adjustToTweetView(TweetModel model) { Settings settings = Client.getSettings(); if(model.type == EnumTweetType.RETWEET) { baseView.setBackgroundColor(Client.getMainActivity().getResources().getColor(settings.getTheme().getRetweetBackgroundColor())); } else if(model.type == EnumTweetType.REPLY) { baseView.setBackgroundColor(Client.getMainActivity().getResources().getColor(settings.getTheme().getMentionsBackgroundColor())); } if(model.getUser().isMe()) { colorTop = Client.getMainActivity().getResources().getColor(settings.getTheme().getSpecialTextColor()); } favorited.setVisibility(model.isFavorited() ? View.VISIBLE : View.GONE); } private void adjustToEventView(EventModel model) { Settings settings = Client.getSettings(); if(model instanceof StatusEvent) { colorTop = Client.getMainActivity().getResources().getColor(settings.getTheme().getSpecialTextColor()); } } private void adjustToUserModel(UserModel model) { //TODO } }