public static void AddMessageFromSymbianMessage(SymbianMessage sm)
        {
            if (sm.MessageText.Length == 0) return;

            DataSetNbuExplorer.MessageRow[] dupl = (DataSetNbuExplorer.MessageRow[])_defaultInstance.Message.Select("number = '" + sm.PhoneNumber.Replace("'", "''") + "'");
            foreach (DataSetNbuExplorer.MessageRow mr in dupl)
            {
                if (mr.messagetext == sm.MessageText) return;
            }

            MessageRow row = _defaultInstance.Message.AddMessageRow(sm.DirectionBox,
                sm.MessageTime,
                sm.PhoneNumber,
                string.IsNullOrEmpty(sm.Name) ? NumToName(sm.PhoneNumber) : sm.Name,
                sm.MessageText);
            if (row.time == DateTime.MinValue) row.SettimeNull();
        }
示例#2
0
        private void listViewFiles_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listViewFiles.SelectedItems.Count == 0)
            {
                hidePreview();
                exportSelectedFilesToolStripMenuItem.Enabled = exportSelectedFilesToolStripMenuItem1.Enabled = false;
                return;
            }

            recountSelected(listViewFiles.SelectedItems);

            exportSelectedFilesToolStripMenuItem.Enabled = exportSelectedFilesToolStripMenuItem1.Enabled = true;

            FileInfo fi = listViewFiles.SelectedItems[0].Tag as FileInfo;
            if (fi == null || fi.FileSize > 5000000)
            {
                hidePreview();
                return;
            }

            try
            {
                MemoryStream ms = new MemoryStream();
                fi.CopyToStream(currentFileName, ms);
                ms.Seek(0, SeekOrigin.Begin);

                try
                {
                    if (treeViewDirs.SelectedNode.Parent.Parent.Text.StartsWith("Mail"))
                    {
                        textBoxPreview.Visible = true;
                        pictureBoxPreview.Visible = false;

                        try
                        {
                            SymbianMessage sm = new SymbianMessage(ms);
                            textBoxPreview.Text = sm.ToString();
                        }
                        catch (Exception exc)
                        {
                            textBoxPreview.Text = exc.Message;
                        }

                        return;
                    }
                }
                catch { }

                System.Text.StringBuilder sb;
                StreamReader sr;

                switch (Path.GetExtension(fi.SafeFilename).ToLower())
                {
                    case ".vcf":
                    case ".vcs":
                        // VCARD text preview
                        sr = new StreamReader(ms, true);
                        Vcard vcrd = new Vcard(sr.ReadToEnd());
                        sb = new System.Text.StringBuilder();
                        foreach (string key in vcrd.Keys)
                        {
                            if (key == "VERSION") continue;
                            sb.AppendFormat("{0}: {1}\r\n", key, vcrd[key]);
                        }
                        if (vcrd.PhoneNumbers.Count > 0)
                        {
                            sb.Append("TEL: ");
                            for (int i = 0; i < vcrd.PhoneNumbers.Count; i++)
                            {
                                if (i > 0) sb.Append(", ");
                                sb.Append(vcrd.PhoneNumbers[i]);
                            }
                            sb.AppendLine();
                        }
                        sr.BaseStream.Seek(0, SeekOrigin.Begin);
                        sb.AppendLine("\r\n--- Raw VCARD format ---\r\n");
                        sb.Append(sr.ReadToEnd());
                        sr.Close();

                        textBoxPreview.Text = sb.ToString();
                        textBoxPreview.Visible = true;
                        pictureBoxPreview.Visible = false;
                        break;
                    case ".vmg":
                    case ".url":
                    case ".txt":
                    case ".jad":
                    case ".xml":
                    case ".csv":
                    case ".ini":
                    case ".log":
                    case ".xhtml":
                    case ".html":
                    case ".htm":
                    case ".smil":
                    case ".css":
                    case ".wbxml":
                        // general text preview
                        int b;
                        bool unicode = false;
                        while ((b = ms.ReadByte()) != -1)
                        {
                            if (b == 0)
                            {
                                unicode = true;
                                break;
                            }
                        }
                        ms.Seek(0, SeekOrigin.Begin);

                        if (unicode) sr = new StreamReader(ms, System.Text.Encoding.Unicode);
                        else sr = new StreamReader(ms, true);

                        sb = new System.Text.StringBuilder();
                        while (!sr.EndOfStream)
                        {
                            sb.AppendLine(sr.ReadLine());
                        }
                        sr.Close();

                        textBoxPreview.Text = sb.ToString();
                        textBoxPreview.Visible = true;
                        pictureBoxPreview.Visible = false;
                        break;
                    default:
                        Image img = Image.FromStream(ms);
                        pictureBoxPreview.Image = img;

                        textBoxPreview.Visible = false;
                        pictureBoxPreview.Visible = true;
                        break;
                }
            }
            catch
            {
                hidePreview();
            }
        }
示例#3
0
 private void parseSymbianMessage(FileInfo fi)
 {
     long cnt = StreamUtils.Counter;
     try
     {
         MemoryStream ms = new MemoryStream();
         fi.CopyToStream(currentFileName, ms);
         ms.Seek(0, SeekOrigin.Begin);
         SymbianMessage sm = new SymbianMessage(ms);
         fi.FileTime = sm.MessageTime;
         DataSetNbuExplorer.AddMessageFromSymbianMessage(sm);
     }
     catch (Exception ex)
     {
         addLine(ex.Message);
     }
     finally
     {
         StreamUtils.Counter = cnt;
     }
 }