Esempio n. 1
0
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      ViewHolder holder = null;

      if (convertView == null) {
        convertView = inflater.inflate(R.layout.backlog_item, null);
        holder = new ViewHolder();
        holder.timeView = (TextView) convertView.findViewById(R.id.backlog_time_view);
        holder.timeView.setTextColor(ThemeUtil.chatTimestampColor);
        holder.nickView = (TextView) convertView.findViewById(R.id.backlog_nick_view);
        holder.msgView = (TextView) convertView.findViewById(R.id.backlog_msg_view);
        holder.separatorView = (TextView) convertView.findViewById(R.id.backlog_list_separator);
        holder.item_layout =
            (LinearLayout) convertView.findViewById(R.id.backlog_item_linearlayout);
        convertView.setTag(holder);
      } else {
        holder = (ViewHolder) convertView.getTag();
      }

      // Set separator line here
      if (position != (getCount() - 1)
          && (buffer.getMarkerLineMessage() == getItem(position).messageId
              || (buffer.isMarkerLineFiltered()
                  && getItem(position).messageId < buffer.getMarkerLineMessage()
                  && getItem(position + 1).messageId > buffer.getMarkerLineMessage()))) {
        holder.separatorView.getLayoutParams().height = 1;
      } else {
        holder.separatorView.getLayoutParams().height = 0;
      }

      IrcMessage entry = this.getItem(position);
      holder.messageID = entry.messageId;
      holder.timeView.setText(entry.getTime());

      switch (entry.type) {
        case Action:
          holder.nickView.setText("-*-");
          holder.msgView.setTextColor(ThemeUtil.chatActionColor);
          holder.nickView.setTextColor(ThemeUtil.chatActionColor);
          holder.msgView.setText(entry.getNick() + " " + entry.content);
          break;
        case Error:
          holder.nickView.setText("*");
          holder.msgView.setTextColor(ThemeUtil.chatErrorColor);
          holder.nickView.setTextColor(ThemeUtil.chatErrorColor);
          holder.msgView.setText(entry.content);
          break;
        case Server:
        case Info:
          holder.nickView.setText("*");
          holder.msgView.setTextColor(ThemeUtil.chatServerColor);
          holder.nickView.setTextColor(ThemeUtil.chatServerColor);
          holder.msgView.setText(entry.content);
          break;
        case Topic:
          holder.nickView.setText("*");
          holder.msgView.setTextColor(ThemeUtil.chatTopicColor);
          holder.nickView.setTextColor(ThemeUtil.chatTopicColor);
          holder.msgView.setText(entry.content);
          break;
        case Notice:
          holder.nickView.setText("[" + entry.getNick() + "]");
          holder.msgView.setTextColor(ThemeUtil.chatNoticeColor);
          holder.nickView.setTextColor(ThemeUtil.chatNoticeColor);
          holder.msgView.setText(entry.content);
          break;
        case Join:
          holder.nickView.setText("-->");
          holder.msgView.setText(
              entry.getNick() + " (" + entry.getHostmask() + ") has joined " + entry.content);
          holder.msgView.setTextColor(ThemeUtil.chatJoinColor);
          holder.nickView.setTextColor(ThemeUtil.chatJoinColor);
          break;
        case Part:
          holder.nickView.setText("<--");
          holder.msgView.setText(
              entry.getNick() + " (" + entry.getHostmask() + ") has left (" + entry.content + ")");
          holder.msgView.setTextColor(ThemeUtil.chatPartColor);
          holder.nickView.setTextColor(ThemeUtil.chatPartColor);
          break;
        case Quit:
          holder.nickView.setText("<--");
          holder.msgView.setText(
              entry.getNick() + " (" + entry.getHostmask() + ") has quit (" + entry.content + ")");
          holder.msgView.setTextColor(ThemeUtil.chatQuitColor);
          holder.nickView.setTextColor(ThemeUtil.chatQuitColor);
          break;
        case Kill:
          holder.nickView.setText("<--");
          holder.msgView.setText(
              entry.getNick()
                  + " ("
                  + entry.getHostmask()
                  + ") was killed ("
                  + entry.content
                  + ")");
          holder.msgView.setTextColor(ThemeUtil.chatKillColor);
          holder.nickView.setTextColor(ThemeUtil.chatKillColor);
          break;
        case Kick:
          holder.nickView.setText("<-*");
          String nick = "", reason = "";
          int nickEnd = entry.content.toString().indexOf(" ");
          if (nickEnd >= 0) {
            nick = entry.content.toString().substring(0, nickEnd);
            reason = " (" + entry.content.toString().substring(nickEnd + 1) + ")";
          } else {
            nick = entry.content.toString();
          }
          holder.msgView.setText(
              entry.getNick() + " has kicked " + nick + " from " + entry.bufferInfo.name + reason);
          holder.msgView.setTextColor(ThemeUtil.chatKickColor);
          holder.nickView.setTextColor(ThemeUtil.chatKickColor);
          break;
        case Mode:
          holder.nickView.setText("***");
          holder.msgView.setText("Mode " + entry.content.toString() + " by " + entry.getNick());
          holder.msgView.setTextColor(ThemeUtil.chatModeColor);
          holder.nickView.setTextColor(ThemeUtil.chatModeColor);
          break;
        case Nick:
          holder.nickView.setText("<->");
          if (entry.getNick().equals(entry.content.toString())) {
            holder.msgView.setText("You are now known as " + entry.content.toString());
          } else {
            holder.msgView.setText(
                entry.getNick() + " is now known as " + entry.content.toString());
          }
          holder.msgView.setTextColor(ThemeUtil.chatNickColor);
          holder.nickView.setTextColor(ThemeUtil.chatNickColor);
          break;
        case NetsplitJoin:
          holder.nickView.setText("=>");
          holder.msgView.setText(new NetsplitHelper(entry.content.toString()).formatJoinMessage());
          holder.msgView.setTextColor(ThemeUtil.chatNetsplitJoinColor);
          holder.nickView.setTextColor(ThemeUtil.chatNetsplitJoinColor);
          break;
        case NetsplitQuit:
          holder.nickView.setText("<=");
          holder.msgView.setText(new NetsplitHelper(entry.content.toString()).formatQuitMessage());
          holder.msgView.setTextColor(ThemeUtil.chatNetsplitQuitColor);
          holder.nickView.setTextColor(ThemeUtil.chatNetsplitQuitColor);
          break;
        case DayChange:
          holder.nickView.setText("-");
          holder.msgView.setText("{Day changed to " + entry.content.toString() + "}");
          holder.msgView.setTextColor(ThemeUtil.chatDayChangeColor);
          holder.nickView.setTextColor(ThemeUtil.chatDayChangeColor);
        case Plain:
        default:
          if (entry.isSelf()) {
            holder.nickView.setTextColor(ThemeUtil.chatSelfColor);
          } else {
            holder.nickView.setTextColor(entry.senderColor);
          }
          holder.msgView.setTextColor(ThemeUtil.chatPlainColor);
          holder.msgView.setTypeface(Typeface.DEFAULT);

          holder.nickView.setText("<" + entry.getNick() + ">");
          holder.msgView.setText(entry.content);
          break;
      }
      if (entry.isHighlighted()) {
        holder.item_layout.setBackgroundColor(ThemeUtil.chatHighlightColor);
      } else {
        holder.item_layout.setBackgroundResource(0);
      }
      // Log.i(TAG, "CONTENT:" + entry.content);
      return convertView;
    }