/// <summary> /// Получение истории /// </summary> /// <param name="uid">ID пользователя</param> /// <param name="offset">Смещение для выборки сообщений</param> protected internal void getHistory(uint uid, int offset) { this.uid = uid; vk start = new vk(); string s, text, // Текст сообщения name; uint mid, // Номер сообщения outId, readstate; // ID отправителя double date; // Дата Hashtable jsonResp = new Hashtable(), data; s = start.getHistory(uid, 40, offset); if (s != "" && s.IndexOf("error") == -1) { StringBuilder sb = new StringBuilder(); // Объявляем "собиралку" строки sb.Append("<html><head>" + "<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'></script>" + "</head><body><table style='font-size: 12px'><tr><td bgcolor=#E1E7ED><center><a href='#more' font-size=12px>Загрузить ещё</a></center></td></tr>"); jsonResp = (Hashtable)JSON.JsonDecode(s); ArrayList msg = (ArrayList)jsonResp["response"]; int min = msg.Count >= 40 ? 40 : msg.Count - 1; // По умолчанию загружаем по 40 фотографий, если их меньше, то загружаем сколько есть for (int i = min; i > 0; i--) { data = (Hashtable)msg[i]; text = Convert.ToString(data["body"]); mid = Convert.ToUInt32(data["mid"]); outId = Convert.ToUInt32(data["from_id"]); date = Convert.ToDouble(data["date"]); readstate = Convert.ToUInt32(data["read_state"]); if (outId == vars.VARS.Mid) name = "Я"; else name = vars.VARS.Contact[outId].UserName; sb.Append("<tr><td bgcolor="); if (readstate != 1) // Выделение непрочитанных сообщений sb.Append("#E1E7ED name="); else sb.Append("#FFFFFF name="); sb.Append(mid + ">"); sb.Append("<font color="); if (outId == vars.VARS.Mid) // Выбор цвета имени sb.Append("'0000FF'>"); else sb.Append("'FA1C21'>"); sb.Append(name); sb.Append(" ("); sb.Append(ChatForm.ConvertFromUnixTimestamp(date).ToShortTimeString()); sb.Append(" "); sb.Append(ChatForm.ConvertFromUnixTimestamp(date).ToShortDateString()); sb.Append(")"); sb.Append("</font><br>"); sb.Append(text); sb.Append("<br></td></tr>"); } temp = webBrowser1.DocumentText.Replace("<html><head>" + "<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'></script>" + "</head><body><table style='font-size: 12px'><tr><td bgcolor=#E1E7ED><center><a href='#more' font-size=12px>Загрузить ещё</a></center></td></tr>", ""); // Удаляем фрагмент заголовка temp = temp.Replace("</table></body></html>", ""); // Удаляем фрагмент подвала sb.Append(temp); // Пристыковываем предыдущие сообщение к новым sb.Append("</table></body></html>"); // Добавляем подвал webBrowser1.DocumentText = sb.ToString(); // Загружаем в веббраузер } else { MessageBox.Show("Не удалось получить историю! Попробуйте позднее!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } }
protected override void OnMouseClick(MouseEventArgs e) { if (e.Button == MouseButtons.Right) this.Close(); if (e.Button == MouseButtons.Left) { if (this.id != 0) { vk start = new vk(); if (!vars.VARS.Chat.richtbox.ContainsKey(this.id)) { vars.VARS.Chat.WindowState = FormWindowState.Normal; vars.VARS.Chat.chatIn(this.id, this.name, true); } start.getHistory(this.id, 5); if (vars.VARS.Chat.Visible == false) { vars.VARS.Chat.Show(); vars.VARS.Chat.Text = this.name; } } else this.Close(); } base.OnMouseClick(e); }