Exemplo n.º 1
0
        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            text = textbox[(uint)(myTabControl1.SelectedTab.Tag)].Text;
            textbox[(uint)(myTabControl1.SelectedTab.Tag)].Text = "";

            if (!string.IsNullOrEmpty(text.Trim())) // Если textBox не пустой, то печатаем сообщение в richTextBox, а затем отправляем
            {
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectionStart = richtbox[Convert.ToUInt32(myTabControl1.SelectedTab.Tag)].Text.Length;
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectionLength = 0;
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectionFont = new Font(FontFamily.GenericSerif, 8, FontStyle.Bold);
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectionColor = Color.FromArgb(0, 0, 255);

                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectedText = "Я (" + DateTime.Now.ToShortTimeString() + " " + DateTime.Now.ToShortDateString() + ")";
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectionStart = richtbox[(uint)(myTabControl1.SelectedTab.Tag)].Text.Length;
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectionLength = 0;
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectionFont = new Font(FontFamily.GenericSerif, 9, FontStyle.Regular);
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectionColor = Color.Black;
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectedText = "\r\n" + text + "\r\n";
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectionStart = richtbox[(uint)(myTabControl1.SelectedTab.Tag)].Text.Length;
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectionLength = 0;
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectionFont = new Font(FontFamily.GenericSerif, 4, FontStyle.Regular);
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].SelectedText = "\r\n";
                richtbox[(uint)(myTabControl1.SelectedTab.Tag)].ScrollToCaret();

                if (vars.VARS.Out_message_on && vars.VARS.Sound)
                    GeneralMethods.NotifySound("OutMessage");
            }

            vk start = new vk();

            SendMessage SendMsg = new SendMessage(start.sendMsg);
            IAsyncResult res1 = SendMsg.BeginInvoke(text, (uint)myTabControl1.SelectedTab.Tag, null, null);

            res1.AsyncWaitHandle.WaitOne();

            bool success = SendMsg.EndInvoke(res1);

            if (!success)
            {
                NotifyEvent ShowNotify = new NotifyEvent(ShowNotifyWindow);
                this.Invoke(ShowNotify, "Ошибка!", "Ошибка при отправке!\nПовторите ещё раз!", (uint)0);
            }
        }
Exemplo n.º 2
0
        /// <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;
            }
        }
Exemplo n.º 3
0
        private void button1_Click(object sender, EventArgs e)
        {
            vk start = new vk();
            if (checkBox1.Checked) // если флажон для статуса
            {
                SetStatus setStatus = new SetStatus(start.setStatus);
                IAsyncResult res1 = setStatus.BeginInvoke(richTextBox1.Text, null, null);
                res1.AsyncWaitHandle.WaitOne(2000);
                if (setStatus.EndInvoke(res1).IndexOf("error") != -1)
                {
                    NotifyEvent ShowNotify = new NotifyEvent(ShowNotifyWindow);
                    this.Invoke(ShowNotify, "Ошибка!", "При публикации\nвозникли проблемы!", (uint)0);
                }
                //start.setStatus(richTextBox1.Text);
            }
            else // если для записи на стене
            {
                string name = "";

                if (checkBox2.Checked) // если нужно изображение, загружаем
                {
                    OpenFileDialog open = new OpenFileDialog();
                    open.FileName = "";
                    open.Filter = "Изображения|*.jpg;*.gif;*.png";

                    if (open.ShowDialog() == DialogResult.OK)
                    {
                        UploadFile upload = new UploadFile(start.UploadFile);
                        IAsyncResult res11 = upload.BeginInvoke(ID, open.FileName, null, null);

                        int iter = 0;

                        while (!res11.IsCompleted)
                        {
                            iter++;
                            if (iter == 500)
                            {
                                iter = 0;
                                Application.DoEvents();
                            }
                        }

                        res11.AsyncWaitHandle.WaitOne();

                        name = upload.EndInvoke(res11);
                    }

                    if (name == "")
                    {
                        NotifyEvent ShowNotify = new NotifyEvent(ShowNotifyWindow);
                        this.Invoke(ShowNotify, "Ошибка!", "При публикации\nвозникли проблемы!", (uint)0);
                    }
                }

                if (ID != 0) // не себе
                {
                    if (name != "")
                    {
                        SetWallStatus setWallStatus = new SetWallStatus(start.SetWallStatus);
                        IAsyncResult res1 = setWallStatus.BeginInvoke(richTextBox1.Text, name, ID, null, null);
                        res1.AsyncWaitHandle.WaitOne(2000);
                        if (setWallStatus.EndInvoke(res1).IndexOf("error") != -1)
                        {
                            NotifyEvent ShowNotify = new NotifyEvent(ShowNotifyWindow);
                            this.Invoke(ShowNotify, "Ошибка!", "При публикации\nвозникли проблемы!", (uint)0);
                        }
                        //start.SetWallStatus(richTextBox1.Text, name, ID);
                    }
                    else
                    {
                        SetWallStatus setWallStatus = new SetWallStatus(start.SetWallStatus);
                        IAsyncResult res1 = setWallStatus.BeginInvoke(richTextBox1.Text, "", ID, null, null);
                        res1.AsyncWaitHandle.WaitOne(2000);
                        if (setWallStatus.EndInvoke(res1).IndexOf("error") != -1)
                        {
                            NotifyEvent ShowNotify = new NotifyEvent(ShowNotifyWindow);
                            this.Invoke(ShowNotify, "Ошибка!", "При публикации\nвозникли проблемы!", (uint)0);
                        }
                        //start.SetWallStatus(richTextBox1.Text, "", ID);
                    }
                }
                else // себе
                {
                    if (name != "")
                    {
                        SetWallStatus setWallStatus = new SetWallStatus(start.SetWallStatus);
                        IAsyncResult res1 = setWallStatus.BeginInvoke(richTextBox1.Text, name, ID, null, null);
                        res1.AsyncWaitHandle.WaitOne(2000);
                        if (setWallStatus.EndInvoke(res1).IndexOf("error") != -1)
                        {
                            NotifyEvent ShowNotify = new NotifyEvent(ShowNotifyWindow);
                            this.Invoke(ShowNotify, "Ошибка!", "При публикации\nвозникли проблемы!", (uint)0);
                        }
                        //start.SetWallStatus(richTextBox1.Text, name, ID);
                    }
                    else
                    {
                        SetStatus setWallStatus = new SetStatus(start.SetWallStatus);
                        IAsyncResult res1 = setWallStatus.BeginInvoke(richTextBox1.Text, null, null);
                        res1.AsyncWaitHandle.WaitOne(2000);
                        if (setWallStatus.EndInvoke(res1).IndexOf("error") != -1)
                        {
                            NotifyEvent ShowNotify = new NotifyEvent(ShowNotifyWindow);
                            this.Invoke(ShowNotify, "Ошибка!", "При публикации\nвозникли проблемы!", (uint)0);
                        }
                        //start.SetWallStatus(richTextBox1.Text);
                    }
                }
            }
            this.Close();
        }
Exemplo n.º 4
0
 private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
 {
     try
     {
         chat.Text = myTabControl1.SelectedTab.Text;
         vk start = new vk();
         start.markAsRead(Convert.ToUInt32(myTabControl1.SelectedTab.Tag));
         textbox[(uint)(myTabControl1.SelectedTab.Tag)].Select();
     } // При смене вкладки меняем текст заголовка окна
     catch { }
 }
Exemplo n.º 5
0
        protected override void OnMouseDoubleClick(MouseEventArgs e)
        {
            this.Focus();
            vk start = new vk();
            vk.profile temp = new vk.profile();
            try
            {
                temp = vars.VARS.Contact[Items[(vscroll.Value) + (int)(e.Y / HEIGHT_ITEM)]]; // если контакт на этом месте существует, то его данные записываются в переменную
            }
            catch (ArgumentOutOfRangeException exe)
            {
                //GeneralMethods.WriteError(exe.Source, exe.Message, exe.TargetSite);
                return;
            }

            if (!(temp.online || vars.VARS.ShowOffline)) // когда оффлайн скрыты предотвращаем случайные нажатия
                return;

            if (!vars.VARS.Chat.richtbox.ContainsKey(temp.uid)) // если чат с пользователем ещё не открыт
            {
                vars.VARS.Chat.WindowState = FormWindowState.Normal;
                vars.VARS.Chat.chatIn(temp.uid, temp.UserName, true);
            }

            GetHistory newEvent = new GetHistory(start.getHistory);
            IAsyncResult res2 = newEvent.BeginInvoke(temp.uid, 5, null, null); // в асинхронном потоке получаем историю сообщений, чтобы чат открывался сразу
                //start.getHistory(temp.uid, 5); // заправшиваем историю

            if (vars.VARS.Chat.Visible == false) // если невидим, делаем видимым
            {
                vars.VARS.Chat.Show();
                vars.VARS.Chat.Text = temp.UserName;
            }

            //vars.VARS.Chat.Activate();
            if (vars.VARS.Frequency) // если настройка включена обновляем данные частоты
            {
                if (vars.VARS.FrequencyUse.ContainsKey(temp.uid))
                {
                    uint j = vars.VARS.FrequencyUse[temp.uid];
                    j++;
                    vars.VARS.FrequencyUse.Remove(temp.uid);
                    vars.VARS.FrequencyUse.Add(temp.uid, j);
                }
            }

            base.OnMouseDoubleClick(e);
        }
Exemplo n.º 6
0
        void timer_Tick_About(object sender, EventArgs e)
        {
            time += 500;
            if (time == TIME_TOOLTIP) // когда прошло нужное количество времени, запрашиваем данные о пользователе
            {
                tip.Hide(this);
                vk start = new vk();

                GetPhoto getPhoto = new GetPhoto(start.getPhoto);
                IAsyncResult res1 = getPhoto.BeginInvoke(uid, "medium", null, null);

                while (!res1.IsCompleted)
                    Application.DoEvents();

                res1.AsyncWaitHandle.WaitOne();
                photo = getPhoto.EndInvoke(res1);
            //                photo = start.getPhoto(uid, "medium");

                if (photo == null)
                {
                    if (File.Exists(vars.VARS.Directory + "\\medium\\" + uid.ToString()))
                        try
                        {
                            photo = Image.FromFile(vars.VARS.Directory + "\\medium\\" + uid.ToString());
                        }
                        catch (OutOfMemoryException exe)
                        {
                            GeneralMethods.WriteError(exe.Source, exe.Message, exe.TargetSite);
                        }
                    else
                    {
                        timer.Stop();
                        time = 0;
                        return;
                    }
                }

                GetInfo getInfo = new GetInfo(start.getInfo);
                IAsyncResult res2 = getInfo.BeginInvoke(uid, null, null);

                while (!res2.IsCompleted)
                    Application.DoEvents();

                res1.AsyncWaitHandle.WaitOne();
                System.Collections.Hashtable Info = getInfo.EndInvoke(res2);

                //System.Collections.Hashtable Info = start.getInfo(uid);
                if (Info != null && !Info.ContainsKey("error"))
                {
                    System.Collections.ArrayList Data = (System.Collections.ArrayList)Info["response"];

                    name = Convert.ToString(((System.Collections.Hashtable)Data[0])["first_name"]) + " " + Convert.ToString(((System.Collections.Hashtable)Data[0])["last_name"]);
                    string bdate = Convert.ToString(((System.Collections.Hashtable)Data[0])["bdate"]);
                    phone = Convert.ToString(((System.Collections.Hashtable)Data[0])["mobile_phone"]);

                    string month = "";

                    if (bdate != "")
                    {
                        string[] bday = bdate.Split('.');
                        switch (bday[1]) // месяц текстом чтобы был
                        {
                            case "1": month = "января"; break;
                            case "2": month = "февраля"; break;
                            case "3": month = "марта"; break;
                            case "4": month = "апреля"; break;
                            case "5": month = "мая"; break;
                            case "6": month = "июня"; break;
                            case "7": month = "июля"; break;
                            case "8": month = "августа"; break;
                            case "9": month = "сентября"; break;
                            case "10": month = "октября"; break;
                            case "11": month = "ноября"; break;
                            case "12": month = "декабря"; break;
                        }
                        birthday = bday[0] + " " + month + " " + (bday.Length == 2 ? "" : bday[2]); // формируем строку дня рождения
                    }

                    tip.Size = new Size(220, (photo == null) ? 200 : (photo.Height + 40)); // задаём размер подсказки
                    tip.Show(uid.ToString(), this, this.ClientRectangle.X + this.Width, this.PointToClient(Control.MousePosition).Y); // показываем подсказку
                }
                timer.Stop();
                time = 0;
            }
            //throw new NotImplementedException();
        }
Exemplo n.º 7
0
        protected override void OnKeyUp(KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                vk start = new vk();

                if (!vars.VARS.Chat.richtbox.ContainsKey(selectedItem.uid)) // если чат с пользователем ещё не открыт
                {
                    vars.VARS.Chat.WindowState = FormWindowState.Normal;
                    vars.VARS.Chat.chatIn(selectedItem.uid, selectedItem.UserName, true);
                }

                GetHistory newEvent = new GetHistory(start.getHistory);
                IAsyncResult res2 = newEvent.BeginInvoke(selectedItem.uid, 5, null, null); // в асинхронном потоке получаем историю сообщений, чтобы чат открывался сразу
                //start.getHistory(temp.uid, 5); // заправшиваем историю

                if (vars.VARS.Chat.Visible == false) // если невидим, делаем видимым
                {
                    vars.VARS.Chat.Show();
                    vars.VARS.Chat.Text = selectedItem.UserName;
                }

                //vars.VARS.Chat.Activate();
                if (vars.VARS.Frequency) // если настройка включена обновляем данные частоты
                {
                    if (vars.VARS.FrequencyUse.ContainsKey(selectedItem.uid))
                    {
                        uint j = vars.VARS.FrequencyUse[selectedItem.uid];
                        j++;
                        vars.VARS.FrequencyUse.Remove(selectedItem.uid);
                        vars.VARS.FrequencyUse.Add(selectedItem.uid, j);
                    }
                }
                e.SuppressKeyPress = true;
            }
            base.OnKeyUp(e);
        }
Exemplo n.º 8
0
 private void button2_Click(object sender, EventArgs e)
 {
     try
     { // обновляем маленькие фотографии в списке контактов если кажется, что они устарели, например)
         vk start = new vk();
         List<uint> a = new List<uint>();
         foreach (KeyValuePair<uint, vk.profile> item in vars.VARS.Contact) // для кого грузим новые фотки (в данном случае для всех)
             a.Add(item.Key);
         getPhoto newPhoto = new getPhoto(start.getPhoto);
         IAsyncResult res2 = newPhoto.BeginInvoke(a, "photo", null, null); // пускаем в асинхронном потоке
     }
     catch (Exception exe)
     {
         MessageBox.Show("Неизвестная ошибка!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
         GeneralMethods.WriteError(exe.Source, exe.Message, exe.TargetSite);
     }
 }
Exemplo n.º 9
0
        void Processing(uint msgId, uint flag, uint outId, double date, string subj, string text, vk start)
        {
            if ((flag & 2) != 2) // Если не содержит флаг 2 (исходящее)
            {
                string name = null;

                if ((flag & 32) == 32) // Выбираем какое имя (Если 32, то друг, значит должен быть в списке)
                    name = vars.VARS.Contact[outId].UserName;
                else
                    name = outId.ToString();

                if (vars.VARS.Chat.richtbox.ContainsKey(outId)) // Если содержит, значит вкладка была открыта, значит печатаем
                {
                    GeneralMethods.printMsg(outId, text, name, date);
                    start.markAsReadMsg(msgId);
                }
                else
                {
                    bool flag1;
                    if (vars.VARS.Chat.WindowState == FormWindowState.Minimized)
                    {
                        flag1 = true;
                        vars.VARS.Chat.WindowState = FormWindowState.Normal;
                    }
                    else
                        flag1 = false;

                    vars.VARS.Chat.chatIn(outId, name, flag1); // Создаём новую вкладку

                    if (!vars.VARS.Chat.Visible) // Если невидимый чат - делаем видимым
                    {
                        vars.VARS.Chat.Show();
                        vars.VARS.Chat.Activate();
                        start.markAsReadMsg(msgId);
                    }
                    else // Или просто активируем
                        vars.VARS.Chat.Activate();

                    GeneralMethods.printMsg(outId, text, name, date); // Печатаем сообщение
                }

                if ((flag & 3) != 3) // Если не "исходящее непрочитанное"
                {
                    if (vars.VARS.NumbMass.ContainsKey(outId)) // Если содержит ключ, добавляем новый айди сообщения
                        vars.VARS.NumbMass[outId].Add(msgId);
                    else // Иначе новый ключ и добавляем айди
                    {
                        vars.VARS.NumbMass.Add(outId, new List<uint>());
                        vars.VARS.NumbMass[outId].Add(msgId);
                    }
                }

                if (vars.VARS.Incoming_message_on && vars.VARS.Sound) // Если разрешено играть музыку, играем в другом потоку
                {
                    GeneralMethods.NotifySound("IncomeMessage");
                }

                if (vars.VARS.Frequency)
                {
                    if (vars.VARS.FrequencyUse.ContainsKey(outId))
                    {
                        uint j = vars.VARS.FrequencyUse[outId];
                        j++;
                        vars.VARS.FrequencyUse.Remove(outId);
                        vars.VARS.FrequencyUse.Add(outId, j);
                    }
                }
            }
            else if ((flag & 16) != 16)
            {
                if (vars.VARS.Chat.richtbox.ContainsKey(outId))
                    GeneralMethods.printMsg(outId, text, vars.VARS.Mid.ToString(), date);
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Метод, обрабатывающий получение сообщения
        /// </summary>
        /// <param name="msgId">ID сообщения</param>
        /// <param name="flag">Флаг сообщения (суммирование определённых флажков)</param>
        /// <param name="outId">ID отправителя</param>
        /// <param name="date">Дата в UNIX формате</param>
        /// <param name="subj">Тема сообщения</param>
        /// <param name="text">Текст сообщения</param>
        void server_NewMessage(IncomingMessageArgs info)
        {
            uint msgId = info.MessageID;
            uint flag = info.flag;
            uint outId = info.outID;
            double date = info.date;
            string subj = info.subj;
            string text = info.text;
            vk start = new vk();

            AccessChat NewAccess = new AccessChat(Processing);
            vars.VARS.Chat.Invoke(NewAccess, msgId, flag, outId, date, subj, text, start);
        }
Exemplo n.º 11
0
        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);
        }