├── .gitignore
├── .hgignore
├── Images
├── ScreenShot1.jpg
├── SkypeLogLGG.ico
├── SkypeLogLGG.png
├── SkypeLogLGG.psd
└── SkypeLogSLGG.png
├── README.md
├── SkypeLogViewerLGG.sln
└── SkypeLogViewerLGG
├── AboutForm.Designer.cs
├── AboutForm.cs
├── AboutForm.resx
├── HelpForm.Designer.cs
├── HelpForm.cs
├── HelpForm.resx
├── MainWindowForm.Designer.cs
├── MainWindowForm.cs
├── MainWindowForm.resx
├── PortableSettings.cs
├── PreferencesForm.Designer.cs
├── PreferencesForm.cs
├── PreferencesForm.resx
├── Program.cs
├── Properties
├── AssemblyInfo.cs
├── Resources.Designer.cs
├── Resources.resx
├── Settings.Designer.cs
└── Settings.settings
├── Resources
├── SkypeLogLGG.png
├── SkypeLogSBLGG.png
└── SkypeLogSLGG.png
├── SkypeLogLGG.ico
├── SkypeLogViewerLGG.csproj
├── SkypeLogViewerLGG_TemporaryKey.pfx
├── System.Data.SQLite.dll
└── app.config
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.sln.docstates
8 |
9 | # Build results
10 |
11 | [Dd]ebug/
12 | [Rr]elease/
13 | x64/
14 | build/
15 | [Bb]in/
16 | [Oo]bj/
17 |
18 | # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
19 | !packages/*/build/
20 |
21 | # MSTest test Results
22 | [Tt]est[Rr]esult*/
23 | [Bb]uild[Ll]og.*
24 |
25 | *_i.c
26 | *_p.c
27 | *.ilk
28 | *.meta
29 | *.obj
30 | *.pch
31 | *.pdb
32 | *.pgc
33 | *.pgd
34 | *.rsp
35 | *.sbr
36 | *.tlb
37 | *.tli
38 | *.tlh
39 | *.tmp
40 | *.tmp_proj
41 | *.log
42 | *.vspscc
43 | *.vssscc
44 | .builds
45 | *.pidb
46 | *.log
47 | *.scc
48 |
49 | # Visual C++ cache files
50 | ipch/
51 | *.aps
52 | *.ncb
53 | *.opensdf
54 | *.sdf
55 | *.cachefile
56 |
57 | # Visual Studio profiler
58 | *.psess
59 | *.vsp
60 | *.vspx
61 |
62 | # Guidance Automation Toolkit
63 | *.gpState
64 |
65 | # ReSharper is a .NET coding add-in
66 | _ReSharper*/
67 | *.[Rr]e[Ss]harper
68 |
69 | # TeamCity is a build add-in
70 | _TeamCity*
71 |
72 | # DotCover is a Code Coverage Tool
73 | *.dotCover
74 |
75 | # NCrunch
76 | *.ncrunch*
77 | .*crunch*.local.xml
78 |
79 | # Installshield output folder
80 | [Ee]xpress/
81 |
82 | # DocProject is a documentation generator add-in
83 | DocProject/buildhelp/
84 | DocProject/Help/*.HxT
85 | DocProject/Help/*.HxC
86 | DocProject/Help/*.hhc
87 | DocProject/Help/*.hhk
88 | DocProject/Help/*.hhp
89 | DocProject/Help/Html2
90 | DocProject/Help/html
91 |
92 | # Click-Once directory
93 | publish/
94 |
95 | # Publish Web Output
96 | *.Publish.xml
97 |
98 | # NuGet Packages Directory
99 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line
100 | #packages/
101 |
102 | # Windows Azure Build Output
103 | csx
104 | *.build.csdef
105 |
106 | # Windows Store app package directory
107 | AppPackages/
108 |
109 | # Others
110 | sql/
111 | *.Cache
112 | ClientBin/
113 | [Ss]tyle[Cc]op.*
114 | ~$*
115 | *~
116 | *.dbmdl
117 | *.[Pp]ublish.xml
118 | *.pfx
119 | *.publishsettings
120 |
121 | # RIA/Silverlight projects
122 | Generated_Code/
123 |
124 | # Backup & report files from converting an old project file to a newer
125 | # Visual Studio version. Backup files are not needed, because we have git ;-)
126 | _UpgradeReport_Files/
127 | Backup*/
128 | UpgradeLog*.XML
129 | UpgradeLog*.htm
130 |
131 | # SQL Server files
132 | App_Data/*.mdf
133 | App_Data/*.ldf
134 |
135 |
136 | #LightSwitch generated files
137 | GeneratedArtifacts/
138 | _Pvt_Extensions/
139 | ModelManifest.xml
140 |
141 | # =========================
142 | # Windows detritus
143 | # =========================
144 |
145 | # Windows image file caches
146 | Thumbs.db
147 | ehthumbs.db
148 |
149 | # Folder config file
150 | Desktop.ini
151 |
152 | # Recycle Bin used on file shares
153 | $RECYCLE.BIN/
154 |
155 | # Mac desktop service store files
156 | .DS_Store
157 |
--------------------------------------------------------------------------------
/.hgignore:
--------------------------------------------------------------------------------
1 | syntax: glob
2 | SkypeLogViewerLGG/bin/*
3 | SkypeLogViewerLGG/obj/*
4 | SkypeLogViewerLGG.suo
5 |
--------------------------------------------------------------------------------
/Images/ScreenShot1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LGGGreg/skype-log-viewer/acf8e8cda7d2389389ad44a5c2debc504b0db443/Images/ScreenShot1.jpg
--------------------------------------------------------------------------------
/Images/SkypeLogLGG.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LGGGreg/skype-log-viewer/acf8e8cda7d2389389ad44a5c2debc504b0db443/Images/SkypeLogLGG.ico
--------------------------------------------------------------------------------
/Images/SkypeLogLGG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LGGGreg/skype-log-viewer/acf8e8cda7d2389389ad44a5c2debc504b0db443/Images/SkypeLogLGG.png
--------------------------------------------------------------------------------
/Images/SkypeLogLGG.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LGGGreg/skype-log-viewer/acf8e8cda7d2389389ad44a5c2debc504b0db443/Images/SkypeLogLGG.psd
--------------------------------------------------------------------------------
/Images/SkypeLogSLGG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LGGGreg/skype-log-viewer/acf8e8cda7d2389389ad44a5c2debc504b0db443/Images/SkypeLogSLGG.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # skype-log-viewer
2 | Download and View Skype History Without Skype
3 |
4 | This program allows you to view all of your skype chat logs and then easily export them as text files.
5 |
6 | It correctly organizes them by conversation, and makes sure that group conversations do not get jumbled with one on one chats.
7 |
8 | Features
9 | * Download Skype Logs
10 | * Broken Database Support
11 | * Change Export Format
12 | * Organized by conversation in skype
13 |
14 | 
15 | 
16 |
17 |
18 | **Code license**
19 | * [GNU GPL v2](http://www.gnu.org/licenses/gpl-2.0.html)
20 |
21 | **Content License**
22 | * [Creative Commons 3.0 BY-SA](http://creativecommons.org/licenses/by-sa/3.0/)
23 |
24 | **Code Of Conduct**
25 | * Treat everyone with respect.
26 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkypeLogViewerLGG", "SkypeLogViewerLGG\SkypeLogViewerLGG.csproj", "{71AC519A-87B3-4620-ABE0-A4831B9D8990}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|x86 = Debug|x86
9 | Release|x86 = Release|x86
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {71AC519A-87B3-4620-ABE0-A4831B9D8990}.Debug|x86.ActiveCfg = Debug|x86
13 | {71AC519A-87B3-4620-ABE0-A4831B9D8990}.Debug|x86.Build.0 = Debug|x86
14 | {71AC519A-87B3-4620-ABE0-A4831B9D8990}.Release|x86.ActiveCfg = Release|x86
15 | {71AC519A-87B3-4620-ABE0-A4831B9D8990}.Release|x86.Build.0 = Release|x86
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | EndGlobal
21 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/AboutForm.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace SkypeLogViewerLGG
2 | {
3 | partial class AboutForm
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm));
32 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
33 | this.textBox1 = new System.Windows.Forms.TextBox();
34 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
35 | this.SuspendLayout();
36 | //
37 | // pictureBox1
38 | //
39 | this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
40 | this.pictureBox1.Image = global::SkypeLogViewerLGG.Properties.Resources.SkypeLogLGG;
41 | this.pictureBox1.Location = new System.Drawing.Point(12, 12);
42 | this.pictureBox1.Name = "pictureBox1";
43 | this.pictureBox1.Size = new System.Drawing.Size(166, 170);
44 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
45 | this.pictureBox1.TabIndex = 0;
46 | this.pictureBox1.TabStop = false;
47 | //
48 | // textBox1
49 | //
50 | this.textBox1.Location = new System.Drawing.Point(197, 12);
51 | this.textBox1.Multiline = true;
52 | this.textBox1.Name = "textBox1";
53 | this.textBox1.ReadOnly = true;
54 | this.textBox1.Size = new System.Drawing.Size(342, 170);
55 | this.textBox1.TabIndex = 1;
56 | this.textBox1.Text = resources.GetString("textBox1.Text");
57 | this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
58 | //
59 | // AboutForm
60 | //
61 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
62 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
63 | this.ClientSize = new System.Drawing.Size(551, 191);
64 | this.Controls.Add(this.textBox1);
65 | this.Controls.Add(this.pictureBox1);
66 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
67 | this.Name = "AboutForm";
68 | this.Text = "About Skype Log Viewer LGG";
69 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
70 | this.ResumeLayout(false);
71 | this.PerformLayout();
72 |
73 | }
74 |
75 | #endregion
76 |
77 | private System.Windows.Forms.PictureBox pictureBox1;
78 | private System.Windows.Forms.TextBox textBox1;
79 | }
80 | }
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/AboutForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | namespace SkypeLogViewerLGG
11 | {
12 | public partial class AboutForm : Form
13 | {
14 | public AboutForm()
15 | {
16 | InitializeComponent();
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/HelpForm.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace SkypeLogViewerLGG
2 | {
3 | partial class HelpForm
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HelpForm));
32 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
33 | this.textBox1 = new System.Windows.Forms.TextBox();
34 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
35 | this.SuspendLayout();
36 | //
37 | // pictureBox1
38 | //
39 | this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
40 | this.pictureBox1.Image = global::SkypeLogViewerLGG.Properties.Resources.SkypeLogLGG;
41 | this.pictureBox1.Location = new System.Drawing.Point(483, 12);
42 | this.pictureBox1.Name = "pictureBox1";
43 | this.pictureBox1.Size = new System.Drawing.Size(99, 99);
44 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
45 | this.pictureBox1.TabIndex = 0;
46 | this.pictureBox1.TabStop = false;
47 | //
48 | // textBox1
49 | //
50 | this.textBox1.Location = new System.Drawing.Point(12, 12);
51 | this.textBox1.Multiline = true;
52 | this.textBox1.Name = "textBox1";
53 | this.textBox1.ReadOnly = true;
54 | this.textBox1.Size = new System.Drawing.Size(471, 346);
55 | this.textBox1.TabIndex = 1;
56 | this.textBox1.Text = resources.GetString("textBox1.Text");
57 | //
58 | // HelpForm
59 | //
60 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
61 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
62 | this.ClientSize = new System.Drawing.Size(582, 370);
63 | this.Controls.Add(this.textBox1);
64 | this.Controls.Add(this.pictureBox1);
65 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
66 | this.Name = "HelpForm";
67 | this.Text = "Help For Skype Log Viewer LGG";
68 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
69 | this.ResumeLayout(false);
70 | this.PerformLayout();
71 |
72 | }
73 |
74 | #endregion
75 |
76 | private System.Windows.Forms.PictureBox pictureBox1;
77 | private System.Windows.Forms.TextBox textBox1;
78 | }
79 | }
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/HelpForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | namespace SkypeLogViewerLGG
11 | {
12 | public partial class HelpForm : Form
13 | {
14 | public HelpForm()
15 | {
16 | InitializeComponent();
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/MainWindowForm.Designer.cs:
--------------------------------------------------------------------------------
1 | /*
2 | This file is part of SkypeLogViewerLGG
3 |
4 | SkypeLogViewerLGG is free software: you can redistribute it and/or modify
5 | it under the terms of the GNU General Public License as published by
6 | the Free Software Foundation, either version 2 of the License, or
7 | (at your option) any later version.
8 |
9 | SkypeLogViewerLGG is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 |
14 | You should have received a copy of the GNU General Public License
15 | along with SkypeLogViewerLGG. If not, see .
16 | */
17 |
18 | namespace SkypeLogViewerLGG
19 | {
20 | partial class MainWindowForm
21 | {
22 | ///
23 | /// Required designer variable.
24 | ///
25 | private System.ComponentModel.IContainer components = null;
26 |
27 | ///
28 | /// Clean up any resources being used.
29 | ///
30 | /// true if managed resources should be disposed; otherwise, false.
31 | protected override void Dispose(bool disposing)
32 | {
33 | if (disposing && (components != null))
34 | {
35 | components.Dispose();
36 | }
37 | base.Dispose(disposing);
38 | }
39 |
40 | #region Windows Form Designer generated code
41 |
42 | ///
43 | /// Required method for Designer support - do not modify
44 | /// the contents of this method with the code editor.
45 | ///
46 | private void InitializeComponent()
47 | {
48 | this.components = new System.ComponentModel.Container();
49 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainWindowForm));
50 | this.menuStrip1 = new System.Windows.Forms.MenuStrip();
51 | this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
52 | this.saveAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
53 | this.saveCurrentConversationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
54 | this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
55 | this.preferencesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
56 | this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
57 | this.statusStrip1 = new System.Windows.Forms.StatusStrip();
58 | this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
59 | this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
60 | this.tabControl1 = new System.Windows.Forms.TabControl();
61 | this.tabPage1 = new System.Windows.Forms.TabPage();
62 | this.splitContainer1 = new System.Windows.Forms.SplitContainer();
63 | this.listViewConversations = new System.Windows.Forms.ListView();
64 | this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
65 | this.imageList1 = new System.Windows.Forms.ImageList(this.components);
66 | this.panel3 = new System.Windows.Forms.Panel();
67 | this.label3 = new System.Windows.Forms.Label();
68 | this.listView1 = new System.Windows.Forms.ListView();
69 | this.columnHeaderDate = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
70 | this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
71 | this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
72 | this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
73 | this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
74 | this.panel4 = new System.Windows.Forms.Panel();
75 | this.button2 = new System.Windows.Forms.Button();
76 | this.label4 = new System.Windows.Forms.Label();
77 | this.panel2 = new System.Windows.Forms.Panel();
78 | this.button1 = new System.Windows.Forms.Button();
79 | this.textBoxDataBasePath = new System.Windows.Forms.TextBox();
80 | this.label2 = new System.Windows.Forms.Label();
81 | this.comboBox1 = new System.Windows.Forms.ComboBox();
82 | this.label1 = new System.Windows.Forms.Label();
83 | this.tabPage2 = new System.Windows.Forms.TabPage();
84 | this.textBox1debug = new System.Windows.Forms.TextBox();
85 | this.panel1 = new System.Windows.Forms.Panel();
86 | this.button1clearDebug = new System.Windows.Forms.Button();
87 | this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
88 | this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
89 | this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
90 | this.saveAllWorker = new System.ComponentModel.BackgroundWorker();
91 | this.menuStrip1.SuspendLayout();
92 | this.statusStrip1.SuspendLayout();
93 | this.tabControl1.SuspendLayout();
94 | this.tabPage1.SuspendLayout();
95 | this.splitContainer1.Panel1.SuspendLayout();
96 | this.splitContainer1.Panel2.SuspendLayout();
97 | this.splitContainer1.SuspendLayout();
98 | this.panel3.SuspendLayout();
99 | this.contextMenuStrip1.SuspendLayout();
100 | this.panel4.SuspendLayout();
101 | this.panel2.SuspendLayout();
102 | this.tabPage2.SuspendLayout();
103 | this.panel1.SuspendLayout();
104 | this.SuspendLayout();
105 | //
106 | // menuStrip1
107 | //
108 | this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
109 | this.fileToolStripMenuItem,
110 | this.aboutToolStripMenuItem,
111 | this.preferencesToolStripMenuItem,
112 | this.helpToolStripMenuItem});
113 | this.menuStrip1.Location = new System.Drawing.Point(0, 0);
114 | this.menuStrip1.Name = "menuStrip1";
115 | this.menuStrip1.Size = new System.Drawing.Size(961, 24);
116 | this.menuStrip1.TabIndex = 0;
117 | this.menuStrip1.Text = "menuStrip1";
118 | //
119 | // fileToolStripMenuItem
120 | //
121 | this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
122 | this.saveAllToolStripMenuItem,
123 | this.saveCurrentConversationToolStripMenuItem});
124 | this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
125 | this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
126 | this.fileToolStripMenuItem.Text = "File";
127 | //
128 | // saveAllToolStripMenuItem
129 | //
130 | this.saveAllToolStripMenuItem.Name = "saveAllToolStripMenuItem";
131 | this.saveAllToolStripMenuItem.Size = new System.Drawing.Size(214, 22);
132 | this.saveAllToolStripMenuItem.Text = "Save All";
133 | this.saveAllToolStripMenuItem.Click += new System.EventHandler(this.saveAllToolStripMenuItem_Click);
134 | //
135 | // saveCurrentConversationToolStripMenuItem
136 | //
137 | this.saveCurrentConversationToolStripMenuItem.Name = "saveCurrentConversationToolStripMenuItem";
138 | this.saveCurrentConversationToolStripMenuItem.Size = new System.Drawing.Size(214, 22);
139 | this.saveCurrentConversationToolStripMenuItem.Text = "Save Current Conversation";
140 | this.saveCurrentConversationToolStripMenuItem.Click += new System.EventHandler(this.exportCurrentConvo_Click);
141 | //
142 | // aboutToolStripMenuItem
143 | //
144 | this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
145 | this.aboutToolStripMenuItem.Size = new System.Drawing.Size(52, 20);
146 | this.aboutToolStripMenuItem.Text = "About";
147 | this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
148 | //
149 | // preferencesToolStripMenuItem
150 | //
151 | this.preferencesToolStripMenuItem.Name = "preferencesToolStripMenuItem";
152 | this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(80, 20);
153 | this.preferencesToolStripMenuItem.Text = "Preferences";
154 | this.preferencesToolStripMenuItem.Click += new System.EventHandler(this.preferencesToolStripMenuItem_Click);
155 | //
156 | // helpToolStripMenuItem
157 | //
158 | this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
159 | this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
160 | this.helpToolStripMenuItem.Text = "Help";
161 | this.helpToolStripMenuItem.Click += new System.EventHandler(this.helpToolStripMenuItem_Click);
162 | //
163 | // statusStrip1
164 | //
165 | this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
166 | this.toolStripStatusLabel1,
167 | this.toolStripProgressBar1});
168 | this.statusStrip1.Location = new System.Drawing.Point(0, 388);
169 | this.statusStrip1.Name = "statusStrip1";
170 | this.statusStrip1.Size = new System.Drawing.Size(961, 22);
171 | this.statusStrip1.TabIndex = 1;
172 | this.statusStrip1.Text = "statusStrip1";
173 | //
174 | // toolStripStatusLabel1
175 | //
176 | this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
177 | this.toolStripStatusLabel1.Size = new System.Drawing.Size(48, 17);
178 | this.toolStripStatusLabel1.Text = "Ready...";
179 | //
180 | // toolStripProgressBar1
181 | //
182 | this.toolStripProgressBar1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
183 | this.toolStripProgressBar1.Name = "toolStripProgressBar1";
184 | this.toolStripProgressBar1.Overflow = System.Windows.Forms.ToolStripItemOverflow.Always;
185 | this.toolStripProgressBar1.Size = new System.Drawing.Size(500, 16);
186 | //
187 | // tabControl1
188 | //
189 | this.tabControl1.Controls.Add(this.tabPage1);
190 | this.tabControl1.Controls.Add(this.tabPage2);
191 | this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
192 | this.tabControl1.Location = new System.Drawing.Point(0, 24);
193 | this.tabControl1.Name = "tabControl1";
194 | this.tabControl1.SelectedIndex = 0;
195 | this.tabControl1.Size = new System.Drawing.Size(961, 364);
196 | this.tabControl1.TabIndex = 2;
197 | //
198 | // tabPage1
199 | //
200 | this.tabPage1.Controls.Add(this.splitContainer1);
201 | this.tabPage1.Controls.Add(this.panel2);
202 | this.tabPage1.Location = new System.Drawing.Point(4, 22);
203 | this.tabPage1.Name = "tabPage1";
204 | this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
205 | this.tabPage1.Size = new System.Drawing.Size(953, 338);
206 | this.tabPage1.TabIndex = 0;
207 | this.tabPage1.Text = "Log View";
208 | this.tabPage1.UseVisualStyleBackColor = true;
209 | //
210 | // splitContainer1
211 | //
212 | this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
213 | this.splitContainer1.Location = new System.Drawing.Point(3, 23);
214 | this.splitContainer1.Name = "splitContainer1";
215 | //
216 | // splitContainer1.Panel1
217 | //
218 | this.splitContainer1.Panel1.Controls.Add(this.listViewConversations);
219 | this.splitContainer1.Panel1.Controls.Add(this.panel3);
220 | //
221 | // splitContainer1.Panel2
222 | //
223 | this.splitContainer1.Panel2.Controls.Add(this.listView1);
224 | this.splitContainer1.Panel2.Controls.Add(this.panel4);
225 | this.splitContainer1.Size = new System.Drawing.Size(947, 312);
226 | this.splitContainer1.SplitterDistance = 315;
227 | this.splitContainer1.TabIndex = 1;
228 | //
229 | // listViewConversations
230 | //
231 | this.listViewConversations.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
232 | this.columnHeader1});
233 | this.listViewConversations.Dock = System.Windows.Forms.DockStyle.Fill;
234 | this.listViewConversations.GridLines = true;
235 | this.listViewConversations.HideSelection = false;
236 | this.listViewConversations.LargeImageList = this.imageList1;
237 | this.listViewConversations.Location = new System.Drawing.Point(0, 23);
238 | this.listViewConversations.Name = "listViewConversations";
239 | this.listViewConversations.ShowItemToolTips = true;
240 | this.listViewConversations.Size = new System.Drawing.Size(315, 289);
241 | this.listViewConversations.SmallImageList = this.imageList1;
242 | this.listViewConversations.TabIndex = 1;
243 | this.listViewConversations.TileSize = new System.Drawing.Size(295, 24);
244 | this.listViewConversations.UseCompatibleStateImageBehavior = false;
245 | this.listViewConversations.View = System.Windows.Forms.View.Tile;
246 | this.listViewConversations.DoubleClick += new System.EventHandler(this.listViewConversations_DoubleClick);
247 | //
248 | // columnHeader1
249 | //
250 | this.columnHeader1.Text = "Name";
251 | this.columnHeader1.Width = 10;
252 | //
253 | // imageList1
254 | //
255 | this.imageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
256 | this.imageList1.ImageSize = new System.Drawing.Size(24, 24);
257 | this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
258 | //
259 | // panel3
260 | //
261 | this.panel3.Controls.Add(this.label3);
262 | this.panel3.Dock = System.Windows.Forms.DockStyle.Top;
263 | this.panel3.Location = new System.Drawing.Point(0, 0);
264 | this.panel3.Name = "panel3";
265 | this.panel3.Size = new System.Drawing.Size(315, 23);
266 | this.panel3.TabIndex = 0;
267 | //
268 | // label3
269 | //
270 | this.label3.AutoSize = true;
271 | this.label3.Location = new System.Drawing.Point(6, 5);
272 | this.label3.Name = "label3";
273 | this.label3.Size = new System.Drawing.Size(74, 13);
274 | this.label3.TabIndex = 0;
275 | this.label3.Text = "Conversations";
276 | //
277 | // listView1
278 | //
279 | this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
280 | this.columnHeaderDate,
281 | this.columnHeader2,
282 | this.columnHeader3});
283 | this.listView1.ContextMenuStrip = this.contextMenuStrip1;
284 | this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
285 | this.listView1.FullRowSelect = true;
286 | this.listView1.HideSelection = false;
287 | this.listView1.Location = new System.Drawing.Point(0, 23);
288 | this.listView1.Name = "listView1";
289 | this.listView1.ShowItemToolTips = true;
290 | this.listView1.Size = new System.Drawing.Size(628, 289);
291 | this.listView1.TabIndex = 1;
292 | this.listView1.UseCompatibleStateImageBehavior = false;
293 | this.listView1.View = System.Windows.Forms.View.Details;
294 | //
295 | // columnHeaderDate
296 | //
297 | this.columnHeaderDate.Text = "Date";
298 | this.columnHeaderDate.Width = 124;
299 | //
300 | // columnHeader2
301 | //
302 | this.columnHeader2.Text = "Name";
303 | this.columnHeader2.Width = 90;
304 | //
305 | // columnHeader3
306 | //
307 | this.columnHeader3.Text = "Message";
308 | this.columnHeader3.Width = 393;
309 | //
310 | // contextMenuStrip1
311 | //
312 | this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
313 | this.copyToolStripMenuItem});
314 | this.contextMenuStrip1.Name = "contextMenuStrip1";
315 | this.contextMenuStrip1.Size = new System.Drawing.Size(103, 26);
316 | //
317 | // copyToolStripMenuItem
318 | //
319 | this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";
320 | this.copyToolStripMenuItem.Size = new System.Drawing.Size(102, 22);
321 | this.copyToolStripMenuItem.Text = "Copy";
322 | this.copyToolStripMenuItem.Click += new System.EventHandler(this.copyToolStripMenuItem_Click);
323 | //
324 | // panel4
325 | //
326 | this.panel4.Controls.Add(this.button2);
327 | this.panel4.Controls.Add(this.label4);
328 | this.panel4.Dock = System.Windows.Forms.DockStyle.Top;
329 | this.panel4.Location = new System.Drawing.Point(0, 0);
330 | this.panel4.Name = "panel4";
331 | this.panel4.Size = new System.Drawing.Size(628, 23);
332 | this.panel4.TabIndex = 0;
333 | //
334 | // button2
335 | //
336 | this.button2.Location = new System.Drawing.Point(75, 0);
337 | this.button2.Name = "button2";
338 | this.button2.Size = new System.Drawing.Size(75, 23);
339 | this.button2.TabIndex = 1;
340 | this.button2.Text = "Export";
341 | this.button2.UseVisualStyleBackColor = true;
342 | this.button2.Click += new System.EventHandler(this.exportCurrentConvo_Click);
343 | //
344 | // label4
345 | //
346 | this.label4.AutoSize = true;
347 | this.label4.Location = new System.Drawing.Point(3, 5);
348 | this.label4.Name = "label4";
349 | this.label4.Size = new System.Drawing.Size(55, 13);
350 | this.label4.TabIndex = 0;
351 | this.label4.Text = "Messages";
352 | //
353 | // panel2
354 | //
355 | this.panel2.Controls.Add(this.button1);
356 | this.panel2.Controls.Add(this.textBoxDataBasePath);
357 | this.panel2.Controls.Add(this.label2);
358 | this.panel2.Controls.Add(this.comboBox1);
359 | this.panel2.Controls.Add(this.label1);
360 | this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
361 | this.panel2.Location = new System.Drawing.Point(3, 3);
362 | this.panel2.Name = "panel2";
363 | this.panel2.Size = new System.Drawing.Size(947, 20);
364 | this.panel2.TabIndex = 0;
365 | //
366 | // button1
367 | //
368 | this.button1.Location = new System.Drawing.Point(891, -1);
369 | this.button1.Name = "button1";
370 | this.button1.Size = new System.Drawing.Size(53, 23);
371 | this.button1.TabIndex = 4;
372 | this.button1.Text = "Browse";
373 | this.button1.UseVisualStyleBackColor = true;
374 | this.button1.Click += new System.EventHandler(this.button1_Click);
375 | //
376 | // textBoxDataBasePath
377 | //
378 | this.textBoxDataBasePath.Location = new System.Drawing.Point(410, -2);
379 | this.textBoxDataBasePath.Name = "textBoxDataBasePath";
380 | this.textBoxDataBasePath.ReadOnly = true;
381 | this.textBoxDataBasePath.Size = new System.Drawing.Size(475, 20);
382 | this.textBoxDataBasePath.TabIndex = 3;
383 | //
384 | // label2
385 | //
386 | this.label2.AutoSize = true;
387 | this.label2.Location = new System.Drawing.Point(302, 2);
388 | this.label2.Name = "label2";
389 | this.label2.Size = new System.Drawing.Size(108, 13);
390 | this.label2.TabIndex = 2;
391 | this.label2.Text = "or specify main.db file";
392 | //
393 | // comboBox1
394 | //
395 | this.comboBox1.BackColor = System.Drawing.SystemColors.ControlLight;
396 | this.comboBox1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
397 | this.comboBox1.ForeColor = System.Drawing.SystemColors.ControlDark;
398 | this.comboBox1.FormattingEnabled = true;
399 | this.comboBox1.Location = new System.Drawing.Point(71, -1);
400 | this.comboBox1.Name = "comboBox1";
401 | this.comboBox1.Size = new System.Drawing.Size(225, 21);
402 | this.comboBox1.TabIndex = 1;
403 | this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
404 | //
405 | // label1
406 | //
407 | this.label1.AutoSize = true;
408 | this.label1.Location = new System.Drawing.Point(3, 4);
409 | this.label1.Name = "label1";
410 | this.label1.Size = new System.Drawing.Size(62, 13);
411 | this.label1.TabIndex = 0;
412 | this.label1.Text = "Select User";
413 | //
414 | // tabPage2
415 | //
416 | this.tabPage2.Controls.Add(this.textBox1debug);
417 | this.tabPage2.Controls.Add(this.panel1);
418 | this.tabPage2.Location = new System.Drawing.Point(4, 22);
419 | this.tabPage2.Name = "tabPage2";
420 | this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
421 | this.tabPage2.Size = new System.Drawing.Size(953, 338);
422 | this.tabPage2.TabIndex = 1;
423 | this.tabPage2.Text = "Debug";
424 | this.tabPage2.UseVisualStyleBackColor = true;
425 | //
426 | // textBox1debug
427 | //
428 | this.textBox1debug.Dock = System.Windows.Forms.DockStyle.Fill;
429 | this.textBox1debug.Location = new System.Drawing.Point(3, 3);
430 | this.textBox1debug.Multiline = true;
431 | this.textBox1debug.Name = "textBox1debug";
432 | this.textBox1debug.ReadOnly = true;
433 | this.textBox1debug.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
434 | this.textBox1debug.Size = new System.Drawing.Size(947, 304);
435 | this.textBox1debug.TabIndex = 1;
436 | this.textBox1debug.Text = "Debug:";
437 | //
438 | // panel1
439 | //
440 | this.panel1.Controls.Add(this.button1clearDebug);
441 | this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
442 | this.panel1.Location = new System.Drawing.Point(3, 307);
443 | this.panel1.Name = "panel1";
444 | this.panel1.Size = new System.Drawing.Size(947, 28);
445 | this.panel1.TabIndex = 0;
446 | //
447 | // button1clearDebug
448 | //
449 | this.button1clearDebug.Location = new System.Drawing.Point(6, 4);
450 | this.button1clearDebug.Name = "button1clearDebug";
451 | this.button1clearDebug.Size = new System.Drawing.Size(75, 23);
452 | this.button1clearDebug.TabIndex = 0;
453 | this.button1clearDebug.Text = "Clear Debug";
454 | this.button1clearDebug.UseVisualStyleBackColor = true;
455 | this.button1clearDebug.Click += new System.EventHandler(this.button1clearDebug_Click);
456 | //
457 | // openFileDialog1
458 | //
459 | this.openFileDialog1.DefaultExt = "*.db";
460 | this.openFileDialog1.FileName = "openFileDialog1";
461 | this.openFileDialog1.Filter = "Skype Database files|*.db|All Files|*.*";
462 | //
463 | // backgroundWorker1
464 | //
465 | this.backgroundWorker1.WorkerReportsProgress = true;
466 | this.backgroundWorker1.WorkerSupportsCancellation = true;
467 | this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
468 | this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
469 | //
470 | // saveAllWorker
471 | //
472 | this.saveAllWorker.WorkerReportsProgress = true;
473 | this.saveAllWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.saveAllWorker_DoWork);
474 | this.saveAllWorker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.saveAllWorker_ProgressChanged);
475 | this.saveAllWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.saveAllWorker_RunWorkerCompleted);
476 | //
477 | // MainWindowForm
478 | //
479 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
480 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
481 | this.ClientSize = new System.Drawing.Size(961, 410);
482 | this.Controls.Add(this.tabControl1);
483 | this.Controls.Add(this.statusStrip1);
484 | this.Controls.Add(this.menuStrip1);
485 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
486 | this.MainMenuStrip = this.menuStrip1;
487 | this.Name = "MainWindowForm";
488 | this.Text = "Skype Log Viewer LGG - v1.2";
489 | this.Load += new System.EventHandler(this.Form1_Load);
490 | this.menuStrip1.ResumeLayout(false);
491 | this.menuStrip1.PerformLayout();
492 | this.statusStrip1.ResumeLayout(false);
493 | this.statusStrip1.PerformLayout();
494 | this.tabControl1.ResumeLayout(false);
495 | this.tabPage1.ResumeLayout(false);
496 | this.splitContainer1.Panel1.ResumeLayout(false);
497 | this.splitContainer1.Panel2.ResumeLayout(false);
498 | this.splitContainer1.ResumeLayout(false);
499 | this.panel3.ResumeLayout(false);
500 | this.panel3.PerformLayout();
501 | this.contextMenuStrip1.ResumeLayout(false);
502 | this.panel4.ResumeLayout(false);
503 | this.panel4.PerformLayout();
504 | this.panel2.ResumeLayout(false);
505 | this.panel2.PerformLayout();
506 | this.tabPage2.ResumeLayout(false);
507 | this.tabPage2.PerformLayout();
508 | this.panel1.ResumeLayout(false);
509 | this.ResumeLayout(false);
510 | this.PerformLayout();
511 |
512 | }
513 |
514 | #endregion
515 |
516 | private System.Windows.Forms.MenuStrip menuStrip1;
517 | private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
518 | private System.Windows.Forms.ToolStripMenuItem saveAllToolStripMenuItem;
519 | private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
520 | private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
521 | private System.Windows.Forms.StatusStrip statusStrip1;
522 | private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
523 | private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
524 | private System.Windows.Forms.TabControl tabControl1;
525 | private System.Windows.Forms.TabPage tabPage1;
526 | private System.Windows.Forms.SplitContainer splitContainer1;
527 | private System.Windows.Forms.Panel panel2;
528 | private System.Windows.Forms.Button button1;
529 | private System.Windows.Forms.TextBox textBoxDataBasePath;
530 | private System.Windows.Forms.Label label2;
531 | private System.Windows.Forms.ComboBox comboBox1;
532 | private System.Windows.Forms.Label label1;
533 | private System.Windows.Forms.TabPage tabPage2;
534 | private System.Windows.Forms.TextBox textBox1debug;
535 | private System.Windows.Forms.Panel panel1;
536 | private System.Windows.Forms.Button button1clearDebug;
537 | private System.Windows.Forms.ListView listViewConversations;
538 | private System.Windows.Forms.Panel panel3;
539 | private System.Windows.Forms.Label label3;
540 | private System.Windows.Forms.Panel panel4;
541 | private System.Windows.Forms.Label label4;
542 | private System.Windows.Forms.OpenFileDialog openFileDialog1;
543 | private System.Windows.Forms.ImageList imageList1;
544 | private System.Windows.Forms.ColumnHeader columnHeader1;
545 | private System.Windows.Forms.ListView listView1;
546 | private System.Windows.Forms.ColumnHeader columnHeader2;
547 | private System.Windows.Forms.ColumnHeader columnHeader3;
548 | private System.Windows.Forms.ColumnHeader columnHeaderDate;
549 | private System.ComponentModel.BackgroundWorker backgroundWorker1;
550 | private System.Windows.Forms.Button button2;
551 | private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1;
552 | private System.Windows.Forms.ToolStripMenuItem saveCurrentConversationToolStripMenuItem;
553 | private System.ComponentModel.BackgroundWorker saveAllWorker;
554 | private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
555 | private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;
556 | private System.Windows.Forms.ToolStripMenuItem preferencesToolStripMenuItem;
557 | }
558 | }
559 |
560 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/MainWindowForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 | using System.IO;
10 | using System.Text.RegularExpressions;
11 | using System.Diagnostics;
12 | using System.Data.SQLite;
13 | using System.Reflection;
14 | /*
15 | This file is part of SkypeLogViewerLGG
16 |
17 | SkypeLogViewerLGG is free software: you can redistribute it and/or modify
18 | it under the terms of the GNU General Public License as published by
19 | the Free Software Foundation, either version 2 of the License, or
20 | (at your option) any later version.
21 |
22 | SkypeLogViewerLGG is distributed in the hope that it will be useful,
23 | but WITHOUT ANY WARRANTY; without even the implied warranty of
24 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 | GNU General Public License for more details.
26 |
27 | You should have received a copy of the GNU General Public License
28 | along with SkypeLogViewerLGG. If not, see .
29 | */
30 |
31 | namespace SkypeLogViewerLGG
32 | {
33 | public partial class MainWindowForm : Form
34 | {
35 | private string skypePath = "";
36 | SQLiteConnection connection;
37 | Conversation currentConversation;
38 |
39 | public MainWindowForm()
40 | {
41 | loadSQL();
42 | InitializeComponent();
43 | this.imageList1.Images.Add((Image)(Properties.Resources.SkypeLogSLGG));
44 | this.imageList1.Images.Add((Image)(Properties.Resources.SkypeLogLGG));
45 | this.imageList1.Images.Add((Image)(Properties.Resources.SkypeLogSBLGG));
46 | }
47 | private void loadSQL()
48 | {
49 | string name = "System.Data.SQLite.dll";
50 | String resourceName = "SkypeLogViewerLGG." +
51 | name;
52 | if (File.Exists(name)) return;
53 | using (var stream = Assembly.GetExecutingAssembly()
54 | .GetManifestResourceStream(resourceName))
55 | {
56 | using (System.IO.FileStream fs =
57 | new System.IO.FileStream(name, System.IO.FileMode.Create))
58 | {
59 | Byte[] assemblyData = new Byte[stream.Length];
60 | stream.Read(assemblyData, 0, assemblyData.Length);
61 | fs.Write(assemblyData, 0, assemblyData.Length);
62 | }
63 | }
64 | }
65 | public void debugAdd(string info)
66 | {
67 | this.textBox1debug.Text += "\r\n" + info;
68 | }
69 | private void Form1_Load(object sender, EventArgs e)
70 | {
71 | skypePath= Environment.GetEnvironmentVariable("APPDATA") + @"\Skype";
72 | this.textBoxDataBasePath.Text = skypePath;
73 | if (Properties.Settings.Default.LastPath != "")
74 | {
75 | fillUsers();
76 | this.textBoxDataBasePath.Text = Properties.Settings.Default.LastPath;
77 | tryLoad();
78 | } else
79 | if (fillUsers())
80 | {
81 | this.comboBox1.SelectedIndex = 0;//triggers the open
82 | }
83 | }
84 | public bool checkAndKilledSkype()
85 | {
86 | foreach (Process process in Process.GetProcesses(Environment.MachineName))
87 | {
88 | if (process.ProcessName.Equals("Skype"))
89 | {
90 | debugAdd("Skype Running");
91 | DialogResult result = MessageBox.Show("You must close skype to use this program\nDo you wish to do this now?",
92 | "Close Skype?", MessageBoxButtons.YesNoCancel);
93 | if (result== DialogResult.Yes)
94 | {
95 | process.Kill();
96 | }
97 | else if (result == DialogResult.Cancel)
98 | {
99 | return false;
100 | }
101 | return true;
102 | }
103 | }
104 | return true;
105 | }
106 | private bool fillUsers()
107 | {
108 | bool found = false;
109 | if (!Directory.Exists(skypePath)) return found;
110 | string[] folders = Directory.GetDirectories(skypePath);
111 | foreach (string folderName in folders)
112 | {
113 | FileInfo folderInfo = new FileInfo(folderName);
114 | if (!Regex.Match(folderInfo.Name, "content|pictures|dbtemp|shared.*|My Skype Received Files", RegexOptions.IgnoreCase).Success)
115 | {
116 | if (File.Exists(folderInfo.FullName + @"\main.db"))
117 | {
118 | this.comboBox1.Items.Add(folderInfo.Name);
119 | found = true;
120 | }
121 | }
122 | }
123 | return found;
124 | }
125 | public void tryLoad()
126 | {
127 | listViewConversations.Items.Clear();
128 |
129 | connection = new SQLiteConnection(
130 | "data source=" + this.textBoxDataBasePath.Text);
131 | if (true)//checkAndKilledSkype()
132 | {
133 | if (File.Exists(textBoxDataBasePath.Text))
134 | {
135 | try
136 | {
137 | connection.Open();
138 | debugAdd("connection opened");
139 | Properties.Settings.Default.LastPath = textBoxDataBasePath.Text;
140 | Properties.Settings.Default.Save();
141 | }
142 | catch
143 | {
144 | if(checkAndKilledSkype())
145 | tryLoad();
146 | }
147 | }
148 | else
149 | {
150 | MessageBox.Show("Error, file does not exist");
151 | return;
152 | }
153 | }
154 | //file should be open
155 | SQLiteCommand cmd = connection.CreateCommand();
156 | //last_activity_timestamp
157 | //consumption_horizon
158 | //inbox_timestamp
159 | cmd.CommandText = "select * from Conversations order by last_activity_timestamp desc";
160 | SQLiteDataReader dataRead = cmd.ExecuteReader();
161 | listViewConversations.Items.Clear();
162 | while (dataRead.Read())
163 | {
164 | Conversation tempConv = new Conversation(
165 | dataRead["displayname"].ToString(),
166 | dataRead["identity"].ToString(),
167 | dataRead["type"].ToString(),
168 | dataRead["id"].ToString());
169 | if (tempConv.DisplayName == "") continue;
170 | if (tempConv.getType()==1)
171 | {
172 | //we need the real name
173 | SQLiteCommand namecmd = connection.CreateCommand();
174 | namecmd.CommandText = "select name from Chats WHERE dialog_partner ='"
175 | +dataRead["identity"]+"' order by timestamp";
176 | SQLiteDataReader chatDataRead = namecmd.ExecuteReader();
177 | List chats = new List();
178 | while (chatDataRead.Read())
179 | chats.Add(chatDataRead[0].ToString());
180 | tempConv.chats = chats.ToArray();
181 | if (tempConv.chats.Length <= 0)
182 | {
183 | //tempConv.setType(3);
184 | //continue;
185 | }
186 | }
187 | if (tempConv.getType() < 3)
188 | {
189 | ListViewItem tempItem = new ListViewItem(tempConv.DisplayName);
190 | tempItem.Tag = tempConv;
191 | tempItem.ToolTipText = tempConv.DisplayName + "\r\n" + tempConv.Identity;
192 | tempItem.ImageIndex = tempItem.StateImageIndex = tempConv.getType() - 1;
193 | listViewConversations.Items.Add(tempItem);
194 | }
195 | debugAdd("Found: "+ dataRead["displayname"] + " at "+tempConv.Identity);
196 | }
197 | cmd.Dispose();
198 | // find broken msn b.s.
199 | if (true)
200 | {
201 |
202 | SQLiteCommand brokenCmd = connection.CreateCommand();
203 | brokenCmd.CommandText = "select DISTINCT author,from_dispname from Messages where ifnull(chatname, '') = '' and ifnull(dialog_partner, '') = '' order by timestamp desc";
204 | SQLiteDataReader brokenDataRead = brokenCmd.ExecuteReader();
205 | while (brokenDataRead.Read())
206 | {
207 | debugAdd("found missing partner with id of " + brokenDataRead["from_dispname"]);
208 | Conversation tempConv = new Conversation(
209 | brokenDataRead["from_dispname"].ToString(),
210 | "",
211 | "3",
212 | "-1");
213 | List chats = new List();
214 | chats.Add(brokenDataRead["from_dispname"].ToString());
215 | chats.Add(brokenDataRead["author"].ToString());
216 | tempConv.chats = chats.ToArray();
217 | ListViewItem tempItem = new ListViewItem(tempConv.DisplayName);
218 | tempItem.Tag = tempConv;
219 | tempItem.ToolTipText = tempConv.DisplayName + "\r\n" + tempConv.Identity;
220 | tempItem.ImageIndex = tempItem.StateImageIndex = tempConv.getType() - 1;
221 | listViewConversations.Items.Add(tempItem);
222 | }
223 | }
224 | }
225 |
226 | private void button1_Click(object sender, EventArgs e)
227 | {
228 | if (Properties.Settings.Default.LastFolderPath != "")
229 | openFileDialog1.InitialDirectory = Properties.Settings.Default.LastFolderPath;
230 | else
231 | openFileDialog1.InitialDirectory = skypePath;
232 |
233 | if (openFileDialog1.ShowDialog() == DialogResult.OK)
234 | {
235 | this.textBoxDataBasePath.Text = openFileDialog1.FileName;
236 | Properties.Settings.Default.LastFolderPath = Path.GetDirectoryName(openFileDialog1.FileName);
237 |
238 | tryLoad();
239 | }
240 | }
241 | private void loadMessagesFromIdentity(Conversation c)
242 | {
243 | List messages = getSkypeMessages(c);
244 | displayMessages(messages);
245 | }
246 | private void displayMessages(List messages)
247 | {
248 | listView1.Items.Clear();
249 | foreach (SkypeMessage message in messages)
250 | {
251 | ListViewItem tempItem = new ListViewItem(message.msgDate.ToString());
252 | tempItem.SubItems.Add(message.sender);
253 | tempItem.SubItems.Add(message.msgData);
254 | tempItem.Tag = message;
255 | tempItem.ToolTipText = message.msgDate.ToString() + "\r\n" + message.sender + "\r\n" + message.msgData;
256 | listView1.Items.Add(tempItem);
257 | }
258 | }
259 | private List getSkypeMessages(Conversation c)
260 | {
261 | List messages = new List();
262 |
263 | //debugAdd("Loading messages for " + c.Identity);
264 | if (c.getType() == 2)
265 | {
266 | SQLiteCommand cmd = connection.CreateCommand();
267 | cmd.CommandText = "select timestamp,from_dispname,author,body_xml from Messages where chatname='" + c.Identity + "' order by timestamp";
268 | SQLiteDataReader dataRead = cmd.ExecuteReader();
269 | while (dataRead.Read())
270 | {
271 | //debugAdd("Found message " + dataRead["body_xml"]);
272 | SkypeMessage message = new SkypeMessage();
273 | message.sender = dataRead["from_dispname"].ToString();
274 | message.senderID = dataRead["author"].ToString();
275 | message.setData(dataRead["body_xml"].ToString());
276 | message.setDate(dataRead["timestamp"].ToString());
277 | messages.Add(message);
278 | }
279 | }
280 | else if(c.getType()==1)
281 | {
282 | //if (c.chats.Length == 0) return messages;
283 | SQLiteCommand cmd = connection.CreateCommand();
284 | cmd.CommandText = "select timestamp,from_dispname,author,body_xml from Messages where convo_id = " + c.ConvoId + " order by timestamp";
285 | SQLiteDataReader dataRead = cmd.ExecuteReader();
286 | while (dataRead.Read())
287 | {
288 | //debugAdd("Found message " + dataRead["body_xml"]);
289 | SkypeMessage message = new SkypeMessage();
290 | message.sender = dataRead["from_dispname"].ToString();
291 | message.senderID = dataRead["author"].ToString();
292 | message.setData(dataRead["body_xml"].ToString());
293 | message.setDate(dataRead["timestamp"].ToString());
294 | messages.Add(message);
295 | }
296 | }
297 | else if (c.getType() == 3)
298 | {
299 | String wheres = "";
300 | if(c.chats!=null)
301 | foreach (string name in c.chats)
302 | {
303 | wheres += "OR dialog_partner='" + name + "' ";
304 | }
305 | SQLiteCommand cmd = connection.CreateCommand();
306 | cmd.CommandText = "select timestamp,from_dispname,author,body_xml from Messages where "
307 | + "ifnull(chatname, '') = '' and from_dispname='"+c.DisplayName+"'" + wheres
308 | + " order by timestamp";
309 | SQLiteDataReader dataRead = cmd.ExecuteReader();
310 | while (dataRead.Read())
311 | {
312 | SkypeMessage message = new SkypeMessage();
313 | message.sender = dataRead["from_dispname"].ToString();
314 | message.senderID = dataRead["author"].ToString();
315 | message.setData(dataRead["body_xml"].ToString());
316 | message.setDate(dataRead["timestamp"].ToString());
317 | messages.Add(message);
318 | }
319 | }
320 |
321 | return messages;
322 | }
323 |
324 | private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
325 | {
326 | this.textBoxDataBasePath.Text = skypePath + @"\" + this.comboBox1.Items[0] + @"\main.db";
327 |
328 | tryLoad();
329 | }
330 |
331 | private void listViewConversations_DoubleClick(object sender, EventArgs e)
332 | {
333 | //loadMessagesFromIdentity((listViewConversations.SelectedItems[0].Tag as Conversation));
334 | if (saveAllWorker.IsBusy)
335 | {
336 | MessageBox.Show("Please watch the progress bar\nAnd wait till the save all is completed");
337 | return;
338 | }
339 | while (backgroundWorker1.IsBusy)
340 | {
341 | backgroundWorker1.CancelAsync();
342 | }
343 | backgroundWorker1.RunWorkerAsync(listViewConversations.SelectedItems[0].Tag);
344 | currentConversation = (listViewConversations.SelectedItems[0].Tag as Conversation);
345 | this.toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
346 | this.toolStripStatusLabel1.Text = "Loading, please wait!";
347 | }
348 |
349 | private void button1clearDebug_Click(object sender, EventArgs e)
350 | {
351 | textBox1debug.Text = "";
352 | }
353 |
354 | private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
355 | {
356 | Conversation c = (e.Argument as Conversation);
357 | List messages = getSkypeMessages(c);
358 | e.Result = messages;
359 | }
360 |
361 | private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
362 | {
363 | if(!e.Cancelled)
364 | displayMessages((e.Result as List));
365 | this.toolStripProgressBar1.Style = ProgressBarStyle.Continuous;
366 | this.toolStripStatusLabel1.Text = "Ready";
367 | }
368 |
369 | private void exportCurrentConvo_Click(object sender, EventArgs e)
370 | {
371 | if (currentConversation != null)
372 | {
373 | if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
374 | {
375 | exportConversation(currentConversation, folderBrowserDialog1.SelectedPath);
376 | }
377 | }
378 | }
379 |
380 | public String formatMessage(SkypeMessage message, String messageFormat = "[[Month]/[Day]/[Year] [Time]] [DisplayName]:")
381 | {
382 |
383 | messageFormat = messageFormat.Replace("[Day]", message.msgDate.Day.ToString());
384 | messageFormat = messageFormat.Replace("[Month]", message.msgDate.Month.ToString());
385 | messageFormat = messageFormat.Replace("[Year]", message.msgDate.Year.ToString());
386 |
387 | messageFormat = messageFormat.Replace("[Time]", message.msgDate.ToString("h:mm:ss tt"));
388 |
389 |
390 | messageFormat = messageFormat.Replace("[DisplayName]", message.sender);
391 | messageFormat = messageFormat.Replace("[UserName]", message.senderID);
392 |
393 | messageFormat += " " + message.msgData;
394 |
395 | return messageFormat;
396 | }
397 |
398 | private void exportConversation(Conversation c, String directory)
399 | {
400 | String fileName = directory + "\\" +
401 | (c.DisplayName+(c.getType()==3?"-Broken Log":"")).Replace("\\", "-").Replace("/", "-").Replace(":", "-").Replace("*", "-")
402 | .Replace("\"", "-").Replace("|", "-").Replace(">", "-").Replace("<", "-").Replace("?", "-")
403 | +".txt";
404 | List messages = getSkypeMessages(c);
405 | using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileName))
406 | {
407 | foreach (SkypeMessage message in messages)
408 | {
409 | String format = (Properties.Settings.Default.Format != "") ? Properties.Settings.Default.Format : "[[Month]/[Day]/[Year] [Time]] [DisplayName]:";
410 | file.WriteLine(this.formatMessage(message,format));
411 | }
412 | }
413 | }
414 |
415 | private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
416 | {
417 | AboutForm form = new AboutForm();
418 | form.ShowDialog();
419 | }
420 |
421 | private void helpToolStripMenuItem_Click(object sender, EventArgs e)
422 | {
423 | HelpForm form = new HelpForm();
424 | form.ShowDialog();
425 | }
426 |
427 | private void preferencesToolStripMenuItem_Click(object sender, EventArgs e)
428 | {
429 | PreferencesForm form = new PreferencesForm(this);
430 | form.ShowDialog();
431 | }
432 |
433 | private void saveAllToolStripMenuItem_Click(object sender, EventArgs e)
434 | {
435 | if(MessageBox.Show(
436 | "This process will take quite a long time\r\nPlease watch the progress bar at the bottom for it to finish\r\n"
437 | , "Long wait expected", MessageBoxButtons.OKCancel) == DialogResult.OK)
438 | {
439 | if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
440 | {
441 | convsAndSaveDir casd = new convsAndSaveDir();
442 | casd.saveDir = folderBrowserDialog1.SelectedPath;
443 | casd.convs = new List();
444 | foreach (ListViewItem i in listViewConversations.Items)
445 | {
446 | casd.convs.Add(i.Tag as Conversation);
447 | }
448 | saveAllWorker.RunWorkerAsync(casd);
449 | toolStripProgressBar1.Value = 0;
450 | toolStripStatusLabel1.Text = "Saving all Conversations";
451 | }
452 | }
453 | }
454 | private void exportConversations(List conversations, string dest)
455 | {
456 | int done = 1;
457 | foreach(Conversation c in conversations)
458 | {
459 | exportConversation(c, dest);
460 | saveAllWorker.ReportProgress((int)(100.0f*((float)(done++))/((float)(conversations.Count))));
461 | }
462 | }
463 |
464 | private void saveAllWorker_DoWork(object sender, DoWorkEventArgs e)
465 | {
466 | convsAndSaveDir casd = (e.Argument as convsAndSaveDir);
467 | exportConversations(casd.convs, casd.saveDir);
468 | }
469 |
470 | private void saveAllWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
471 | {
472 | toolStripProgressBar1.Value = 0;
473 | toolStripStatusLabel1.Text = "Ready";
474 | MessageBox.Show("Export completed");
475 | }
476 |
477 | private void saveAllWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
478 | {
479 | toolStripProgressBar1.Value = e.ProgressPercentage;
480 | }
481 |
482 | private void copyToolStripMenuItem_Click(object sender, EventArgs e)
483 | {
484 | StringBuilder sb = new StringBuilder("");
485 | foreach (ListViewItem item in listView1.SelectedItems)
486 | {
487 | SkypeMessage message = item.Tag as SkypeMessage;
488 | sb.AppendLine("["+message.msgDate.ToString()+"] "
489 | +message.sender+": "
490 | +message.msgData);
491 | }
492 | if(sb.ToString()!="")Clipboard.SetText(sb.ToString());
493 | }
494 |
495 | }
496 | public class convsAndSaveDir
497 | {
498 | public List convs { get; set; }
499 | public string saveDir { get; set; }
500 | }
501 | public class Conversation
502 | {
503 | public string DisplayName { get; set; }
504 | public string Identity { get; set; }
505 | public int ConvoId { get; set; }
506 | private int type = 0;
507 | public string[] chats { get; set; }
508 | public Conversation(string _displayName, string _identity, string _type, string _convo_id)
509 | {
510 | DisplayName = _displayName;
511 | Identity = _identity;
512 | ConvoId = int.Parse(_convo_id);
513 | this.type = int.Parse(_type);
514 | }
515 | public int getType() { return type; }
516 | public void setType(int newType) { type = newType; }
517 | public override string ToString()
518 | {
519 | return DisplayName;
520 | }
521 | }
522 | public class SkypeMessage
523 | {
524 | private DateTime _msgDate;
525 | private string _msgData;
526 | public DateTime msgDate { get { return _msgDate; } set { _msgDate = value; } }
527 | public string msgData { get { return _msgData; } }
528 | public string sender { get; set; }
529 | public string senderID { get; set; }
530 | public void setData(string xmlin)
531 | {
532 | _msgData =
533 | Regex.Replace(
534 | Regex.Replace(
535 | xmlin
536 | .Replace("<", "<")
537 | .Replace(">", ">")
538 | .Replace("&", "&")
539 | .Replace(""", "\"")
540 | .Replace("'", "'")
541 | .Replace("", "")
542 | .Replace(""," "),
543 | "", ""),
544 | "", "");
545 | }
546 | public void setDate(string timestamp)
547 | {
548 | _msgDate=new DateTime(1970, 1, 1, 0, 0, 0, 0)
549 | .AddSeconds(int.Parse(timestamp)).ToLocalTime();
550 | }
551 | }
552 |
553 | }
554 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/PortableSettings.cs:
--------------------------------------------------------------------------------
1 | // ---------------------------------------------------------------------------------------------
2 | #region // Copyright (c) 2010, SIL International. All Rights Reserved.
3 | //
4 | // Copyright (c) 2010, SIL International. All Rights Reserved.
5 | //
6 | // Distributable under the terms of either the Common Public License or the
7 | // GNU Lesser General Public License, as specified in the LICENSING.txt file.
8 | //
9 | //
10 | // File: PortableSettingsProvider.cs
11 | // Responsibility: D. Olson
12 | //
13 | //
14 | // This class is based on a class by the same name found at
15 | // http://www.codeproject.com/KB/vb/CustomSettingsProvider.aspx. The original was written in
16 | // VB.Net so this is a C# port of that. Other changes include some variable name changes,
17 | // making the settings file path a public static property, special handling of string
18 | // collections, getting rid of the IsRoaming support and all-around method rewriting.
19 | // The original code is under the CPOL license (http://www.codeproject.com/info/cpol10.aspx).
20 | //
21 | // ---------------------------------------------------------------------------------------------
22 | #endregion
23 | using System;
24 | using System.Collections.Generic;
25 | using System.Collections.Specialized;
26 | using System.Configuration;
27 | using System.IO;
28 | using System.Text;
29 | using System.Windows.Forms;
30 | using System.Xml;
31 |
32 | namespace SkypeLogViewerLGG
33 | {
34 | /// ----------------------------------------------------------------------------------------
35 | ///
36 | /// This class is a settings provider that allows applications to specify in what file and
37 | /// where in a file system it's settings will be stored. It's good for portable apps.
38 | ///
39 | /// ----------------------------------------------------------------------------------------
40 | public class PortableSettingsProvider : SettingsProvider
41 | {
42 | // XML Root Node name.
43 | private const string Root = "Settings";
44 | private const string StrCollectionAttrib = "stringcollection";
45 |
46 | protected XmlDocument m_settingsXml;
47 |
48 | // This allows tests to specify a temp. location which can be deleted on test cleanup.
49 | public static string SettingsFileFolder { get; set; }
50 |
51 | /// ------------------------------------------------------------------------------------
52 | ///
53 | ///
54 | ///
55 | /// ------------------------------------------------------------------------------------
56 | public PortableSettingsProvider()
57 | {
58 | if (SettingsFileFolder == null)
59 | {
60 | var appFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
61 | appFolder = GetAppPath();
62 | //appFolder = Path.Combine(appFolder, ApplicationName);
63 | if (!Directory.Exists(appFolder))
64 | Directory.CreateDirectory(appFolder);
65 |
66 | SettingsFileFolder = appFolder;
67 | }
68 | }
69 | // Gets current executable path in order to determine where to read and write the config file
70 | public virtual string GetAppPath()
71 | {
72 | return new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName;
73 | }
74 |
75 | /// ------------------------------------------------------------------------------------
76 | ///
77 | /// Initializes the specified name.
78 | ///
79 | /// ------------------------------------------------------------------------------------
80 | public override void Initialize(string name, NameValueCollection nvc)
81 | {
82 | base.Initialize(ApplicationName, nvc);
83 |
84 | m_settingsXml = new XmlDocument();
85 |
86 | try
87 | {
88 | m_settingsXml.Load(Path.Combine(SettingsFilePath, SettingsFilename));
89 | }
90 | catch
91 | {
92 | XmlDeclaration dec = m_settingsXml.CreateXmlDeclaration("1.0", "utf-8", null);
93 | m_settingsXml.AppendChild(dec);
94 | XmlNode nodeRoot = m_settingsXml.CreateNode(XmlNodeType.Element, Root, null);
95 | m_settingsXml.AppendChild(nodeRoot);
96 | }
97 | }
98 |
99 | #region Properties
100 | /// ------------------------------------------------------------------------------------
101 | ///
102 | /// Gets the name of the currently running application.
103 | ///
104 | /// ------------------------------------------------------------------------------------
105 | public override string ApplicationName
106 | {
107 | get
108 | {
109 | return (Application.ProductName.Trim().Length > 0 ? Application.ProductName :
110 | Path.GetFileNameWithoutExtension(Application.ExecutablePath));
111 | }
112 | set { }
113 | }
114 |
115 | /// ------------------------------------------------------------------------------------
116 | ///
117 | /// Gets the path to the application's settings file. This path does not include the
118 | /// file name.
119 | ///
120 | /// ------------------------------------------------------------------------------------
121 | public virtual string SettingsFilePath
122 | {
123 | get { return SettingsFileFolder; }
124 | }
125 |
126 | /// ------------------------------------------------------------------------------------
127 | ///
128 | /// Gets only the name of the application settings file.
129 | ///
130 | /// ------------------------------------------------------------------------------------
131 | public virtual string SettingsFilename
132 | {
133 | get { return ApplicationName + ".settings"; }
134 | }
135 |
136 | #endregion
137 |
138 | #region Methods for getting property values from XML.
139 | /// ------------------------------------------------------------------------------------
140 | ///
141 | /// Gets a collection of property values.
142 | ///
143 | /// ------------------------------------------------------------------------------------
144 | public override SettingsPropertyValueCollection GetPropertyValues(
145 | SettingsContext context, SettingsPropertyCollection props)
146 | {
147 | SettingsPropertyValueCollection propValues = new SettingsPropertyValueCollection();
148 |
149 | foreach (SettingsProperty setting in props)
150 | propValues.Add(GetValue(setting));
151 |
152 | return propValues;
153 | }
154 |
155 | /// ------------------------------------------------------------------------------------
156 | ///
157 | /// Gets from the XML the value for the specified property.
158 | ///
159 | /// ------------------------------------------------------------------------------------
160 | private SettingsPropertyValue GetValue(SettingsProperty setting)
161 | {
162 | var value = new SettingsPropertyValue(setting);
163 | value.IsDirty = false;
164 | value.SerializedValue = string.Empty;
165 |
166 | try
167 | {
168 | XmlNode node = m_settingsXml.SelectSingleNode(Root + "/" + setting.Name);
169 |
170 | // StringCollections will have an indicating attribute and they
171 | // receive special handling.
172 | if (node.Attributes.GetNamedItem(StrCollectionAttrib) != null &&
173 | node.Attributes[StrCollectionAttrib].Value == "true")
174 | {
175 | var sc = new StringCollection();
176 | foreach (XmlNode childNode in node.ChildNodes)
177 | sc.Add(childNode.InnerText);
178 |
179 | value.PropertyValue = sc;
180 | }
181 | else
182 | value.SerializedValue = node.InnerText;
183 | }
184 | catch
185 | {
186 | if ((setting.DefaultValue != null))
187 | value.SerializedValue = setting.DefaultValue.ToString();
188 | }
189 |
190 | return value;
191 | }
192 |
193 | #endregion
194 |
195 | #region Methods for saving property values to XML.
196 | /// ------------------------------------------------------------------------------------
197 | ///
198 | /// Sets the values for the specified properties and saves the XML file in which
199 | /// they're stored.
200 | ///
201 | /// ------------------------------------------------------------------------------------
202 | public override void SetPropertyValues(SettingsContext context,
203 | SettingsPropertyValueCollection propvals)
204 | {
205 | // Iterate through the settings to be stored. Only dirty settings are included
206 | // in propvals, and only ones relevant to this provider
207 | foreach (SettingsPropertyValue propVal in propvals)
208 | {
209 | if (propVal.Property.Attributes.ContainsKey(typeof(ApplicationScopedSettingAttribute)))
210 | continue;
211 |
212 | XmlElement settingNode = null;
213 |
214 | try
215 | {
216 | settingNode = (XmlElement)m_settingsXml.SelectSingleNode(Root + "/" + propVal.Name);
217 | }
218 | catch { }
219 |
220 | // Check if node exists.
221 | if ((settingNode != null))
222 | SetPropNodeValue(settingNode, propVal);
223 | else
224 | {
225 | // Node does not exist so create one.
226 | settingNode = m_settingsXml.CreateElement(propVal.Name);
227 | SetPropNodeValue(settingNode, propVal);
228 | m_settingsXml.SelectSingleNode(Root).AppendChild(settingNode);
229 | }
230 | }
231 |
232 | try
233 | {
234 | m_settingsXml.Save(Path.Combine(SettingsFilePath, SettingsFilename));
235 | }
236 | catch { }
237 | }
238 |
239 | /// ------------------------------------------------------------------------------------
240 | ///
241 | /// Sets the value of a node to that found in the specified property. This method
242 | /// specially handles properties that are string collections.
243 | ///
244 | /// ------------------------------------------------------------------------------------
245 | private void SetPropNodeValue(XmlNode propNode, SettingsPropertyValue propVal)
246 | {
247 | if (propVal.Property.PropertyType != typeof(StringCollection))
248 | {
249 | propNode.InnerText = propVal.SerializedValue.ToString();
250 | return;
251 | }
252 |
253 | if (propVal.PropertyValue == null)
254 | return;
255 |
256 | // At this point, we know we're dealing with a string collection, therefore,
257 | // create child nodes for each item in the collection.
258 | propNode.RemoveAll();
259 | var attrib = m_settingsXml.CreateAttribute(StrCollectionAttrib);
260 | attrib.Value = "true";
261 | propNode.Attributes.Append(attrib);
262 | int i = 0;
263 | foreach (string str in propVal.PropertyValue as StringCollection)
264 | {
265 | var node = m_settingsXml.CreateElement(propVal.Name + i++);
266 | node.AppendChild(m_settingsXml.CreateTextNode(str));
267 | propNode.AppendChild(node);
268 | }
269 | }
270 |
271 | #endregion
272 |
273 | /// ------------------------------------------------------------------------------------
274 | ///
275 | /// Gets a comma-delimited string from an array of integers.
276 | ///
277 | /// ------------------------------------------------------------------------------------
278 | public static string GetStringFromIntArray(int[] array)
279 | {
280 | if (array == null)
281 | return string.Empty;
282 |
283 | StringBuilder bldr = new StringBuilder();
284 | foreach (int i in array)
285 | bldr.AppendFormat("{0}, ", i);
286 |
287 | return bldr.ToString().TrimEnd(',', ' ');
288 | }
289 |
290 | /// ------------------------------------------------------------------------------------
291 | ///
292 | /// Gets an int array from a comma-delimited string of numbers.
293 | ///
294 | /// ------------------------------------------------------------------------------------
295 | public static int[] GetIntArrayFromString(string str)
296 | {
297 | List array = new List();
298 |
299 | if (str != null)
300 | {
301 | string[] pieces = str.Split(',');
302 | foreach (string piece in pieces)
303 | {
304 | int i;
305 | if (int.TryParse(piece, out i))
306 | array.Add(i);
307 | }
308 | }
309 |
310 | return array.ToArray();
311 | }
312 | }
313 | }
314 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/PreferencesForm.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace SkypeLogViewerLGG
2 | {
3 | partial class PreferencesForm
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.groupBox1 = new System.Windows.Forms.GroupBox();
32 | this.textBox1Preview = new System.Windows.Forms.TextBox();
33 | this.label2 = new System.Windows.Forms.Label();
34 | this.textBox1custom = new System.Windows.Forms.TextBox();
35 | this.radioButtonCustom = new System.Windows.Forms.RadioButton();
36 | this.radioButtonOtherDefault = new System.Windows.Forms.RadioButton();
37 | this.label1 = new System.Windows.Forms.Label();
38 | this.radioButtonDefault1 = new System.Windows.Forms.RadioButton();
39 | this.button1Save = new System.Windows.Forms.Button();
40 | this.button1Cancel = new System.Windows.Forms.Button();
41 | this.groupBox1.SuspendLayout();
42 | this.SuspendLayout();
43 | //
44 | // groupBox1
45 | //
46 | this.groupBox1.Controls.Add(this.textBox1Preview);
47 | this.groupBox1.Controls.Add(this.label2);
48 | this.groupBox1.Controls.Add(this.textBox1custom);
49 | this.groupBox1.Controls.Add(this.radioButtonCustom);
50 | this.groupBox1.Controls.Add(this.radioButtonOtherDefault);
51 | this.groupBox1.Controls.Add(this.label1);
52 | this.groupBox1.Controls.Add(this.radioButtonDefault1);
53 | this.groupBox1.Location = new System.Drawing.Point(26, 14);
54 | this.groupBox1.Name = "groupBox1";
55 | this.groupBox1.Size = new System.Drawing.Size(362, 318);
56 | this.groupBox1.TabIndex = 0;
57 | this.groupBox1.TabStop = false;
58 | this.groupBox1.Text = "Log Format";
59 | //
60 | // textBox1Preview
61 | //
62 | this.textBox1Preview.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
63 | this.textBox1Preview.Location = new System.Drawing.Point(9, 292);
64 | this.textBox1Preview.Name = "textBox1Preview";
65 | this.textBox1Preview.ReadOnly = true;
66 | this.textBox1Preview.Size = new System.Drawing.Size(347, 20);
67 | this.textBox1Preview.TabIndex = 6;
68 | //
69 | // label2
70 | //
71 | this.label2.AutoSize = true;
72 | this.label2.Location = new System.Drawing.Point(9, 276);
73 | this.label2.Name = "label2";
74 | this.label2.Size = new System.Drawing.Size(48, 13);
75 | this.label2.TabIndex = 5;
76 | this.label2.Text = "Preview:";
77 | //
78 | // textBox1custom
79 | //
80 | this.textBox1custom.Location = new System.Drawing.Point(9, 238);
81 | this.textBox1custom.Name = "textBox1custom";
82 | this.textBox1custom.Size = new System.Drawing.Size(347, 20);
83 | this.textBox1custom.TabIndex = 4;
84 | this.textBox1custom.Text = "[[Month]/[Day]/[Year] [Time]] [DisplayName]:";
85 | this.textBox1custom.TextChanged += new System.EventHandler(this.updatePreview);
86 | //
87 | // radioButtonCustom
88 | //
89 | this.radioButtonCustom.AutoSize = true;
90 | this.radioButtonCustom.Location = new System.Drawing.Point(12, 215);
91 | this.radioButtonCustom.Name = "radioButtonCustom";
92 | this.radioButtonCustom.Size = new System.Drawing.Size(60, 17);
93 | this.radioButtonCustom.TabIndex = 3;
94 | this.radioButtonCustom.TabStop = true;
95 | this.radioButtonCustom.Text = "Custom";
96 | this.radioButtonCustom.UseVisualStyleBackColor = true;
97 | this.radioButtonCustom.CheckedChanged += new System.EventHandler(this.updatePreview);
98 | //
99 | // radioButtonOtherDefault
100 | //
101 | this.radioButtonOtherDefault.AutoSize = true;
102 | this.radioButtonOtherDefault.Location = new System.Drawing.Point(9, 176);
103 | this.radioButtonOtherDefault.Name = "radioButtonOtherDefault";
104 | this.radioButtonOtherDefault.Size = new System.Drawing.Size(301, 17);
105 | this.radioButtonOtherDefault.TabIndex = 2;
106 | this.radioButtonOtherDefault.TabStop = true;
107 | this.radioButtonOtherDefault.Text = "[[Month]/[Day]/[Year] [Time]] [DisplayName] ([UserName]):";
108 | this.radioButtonOtherDefault.UseVisualStyleBackColor = true;
109 | this.radioButtonOtherDefault.CheckedChanged += new System.EventHandler(this.updatePreview);
110 | //
111 | // label1
112 | //
113 | this.label1.AutoSize = true;
114 | this.label1.Location = new System.Drawing.Point(6, 27);
115 | this.label1.Name = "label1";
116 | this.label1.Size = new System.Drawing.Size(75, 91);
117 | this.label1.TabIndex = 1;
118 | this.label1.Text = "Keywords:\r\n[DisplayName]\r\n[UserName]\r\n[Month]\r\n[Day]\r\n[Year]\r\n[Time]";
119 | //
120 | // radioButtonDefault1
121 | //
122 | this.radioButtonDefault1.AutoSize = true;
123 | this.radioButtonDefault1.Location = new System.Drawing.Point(9, 138);
124 | this.radioButtonDefault1.Name = "radioButtonDefault1";
125 | this.radioButtonDefault1.Size = new System.Drawing.Size(236, 17);
126 | this.radioButtonDefault1.TabIndex = 0;
127 | this.radioButtonDefault1.TabStop = true;
128 | this.radioButtonDefault1.Text = "[[Month]/[Day]/[Year] [Time]] [DisplayName]:";
129 | this.radioButtonDefault1.UseVisualStyleBackColor = true;
130 | this.radioButtonDefault1.CheckedChanged += new System.EventHandler(this.updatePreview);
131 | //
132 | // button1Save
133 | //
134 | this.button1Save.Location = new System.Drawing.Point(315, 349);
135 | this.button1Save.Name = "button1Save";
136 | this.button1Save.Size = new System.Drawing.Size(75, 23);
137 | this.button1Save.TabIndex = 1;
138 | this.button1Save.Text = "Save";
139 | this.button1Save.UseVisualStyleBackColor = true;
140 | this.button1Save.Click += new System.EventHandler(this.button1Save_Click);
141 | //
142 | // button1Cancel
143 | //
144 | this.button1Cancel.Location = new System.Drawing.Point(234, 348);
145 | this.button1Cancel.Name = "button1Cancel";
146 | this.button1Cancel.Size = new System.Drawing.Size(75, 23);
147 | this.button1Cancel.TabIndex = 2;
148 | this.button1Cancel.Text = "Cancel";
149 | this.button1Cancel.UseVisualStyleBackColor = true;
150 | this.button1Cancel.Click += new System.EventHandler(this.button1Cancel_Click);
151 | //
152 | // PreferencesForm
153 | //
154 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
155 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
156 | this.ClientSize = new System.Drawing.Size(417, 383);
157 | this.Controls.Add(this.button1Cancel);
158 | this.Controls.Add(this.button1Save);
159 | this.Controls.Add(this.groupBox1);
160 | this.Name = "PreferencesForm";
161 | this.Text = "PreferencesForm";
162 | this.groupBox1.ResumeLayout(false);
163 | this.groupBox1.PerformLayout();
164 | this.ResumeLayout(false);
165 |
166 | }
167 |
168 | #endregion
169 |
170 | private System.Windows.Forms.GroupBox groupBox1;
171 | private System.Windows.Forms.Label label1;
172 | private System.Windows.Forms.RadioButton radioButtonDefault1;
173 | private System.Windows.Forms.RadioButton radioButtonCustom;
174 | private System.Windows.Forms.RadioButton radioButtonOtherDefault;
175 | private System.Windows.Forms.Button button1Save;
176 | private System.Windows.Forms.Button button1Cancel;
177 | private System.Windows.Forms.TextBox textBox1custom;
178 | private System.Windows.Forms.TextBox textBox1Preview;
179 | private System.Windows.Forms.Label label2;
180 | }
181 | }
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/PreferencesForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | namespace SkypeLogViewerLGG
11 | {
12 | public partial class PreferencesForm : Form
13 | {
14 | private MainWindowForm mwf;
15 | public PreferencesForm(MainWindowForm inMwf)
16 | {
17 | this.mwf = inMwf;
18 | InitializeComponent();
19 | LoadSettings();
20 | }
21 |
22 | private void LoadSettings()
23 | {
24 | if (Properties.Settings.Default.FormatSelection == "Default")
25 | {
26 | this.radioButtonDefault1.Checked = true;
27 | }
28 | else if (Properties.Settings.Default.FormatSelection == "OtherDefault")
29 | {
30 | this.radioButtonOtherDefault.Checked = true;
31 | }
32 | else if (Properties.Settings.Default.FormatSelection == "Custom")
33 | {
34 | this.radioButtonCustom.Checked = true;
35 | }
36 | if(Properties.Settings.Default.CustomFormat!="")this.textBox1custom.Text = Properties.Settings.Default.CustomFormat;
37 |
38 | this.updatePreview(null,null);
39 | }
40 |
41 | private void button1Cancel_Click(object sender, EventArgs e)
42 | {
43 | this.Close();
44 | }
45 |
46 | private void button1Save_Click(object sender, EventArgs e)
47 | {
48 | Properties.Settings.Default.Format = this.getFormat();
49 | Properties.Settings.Default.CustomFormat = this.textBox1custom.Text;
50 | if (radioButtonDefault1.Checked)
51 | {
52 | Properties.Settings.Default.FormatSelection = "Default";
53 | }else if (radioButtonOtherDefault.Checked)
54 | {
55 | Properties.Settings.Default.FormatSelection = "OtherDefault";
56 | }
57 | else if (radioButtonCustom.Checked)
58 | {
59 | Properties.Settings.Default.FormatSelection = "Custom";
60 | }
61 | Properties.Settings.Default.Save();
62 | this.Close();
63 | }
64 |
65 | private void updatePreview(object sender, EventArgs e)
66 | {
67 | SkypeMessage message = new SkypeMessage();
68 | message.senderID = "lordgreggreg";
69 | message.sender = "LGG";
70 | message.setData("Hello World!");
71 | message.msgDate = DateTime.Now;
72 |
73 | this.textBox1Preview.Text = mwf.formatMessage(message, this.getFormat());
74 | }
75 |
76 | private String getFormat()
77 | {
78 | String format = "[[Month]/[Day]/[Year] [Time]] [DisplayName]:";
79 | if (radioButtonOtherDefault.Checked)
80 | {
81 | format = "[[Month]/[Day]/[Year] [Time]] [DisplayName] ([UserName]):";
82 | }
83 | if (radioButtonCustom.Checked)
84 | {
85 | format = textBox1custom.Text;
86 | }
87 | return format;
88 | }
89 |
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/PreferencesForm.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Windows.Forms;
5 |
6 | namespace SkypeLogViewerLGG
7 | {
8 | static class Program
9 | {
10 | ///
11 | /// The main entry point for the application.
12 | ///
13 | [STAThread]
14 | static void Main()
15 | {
16 | Application.EnableVisualStyles();
17 | Application.SetCompatibleTextRenderingDefault(false);
18 | Application.Run(new MainWindowForm());
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("SkypeLogViewerLGG")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("SkypeLogViewerLGG")]
13 | [assembly: AssemblyCopyright("Copyright © 2012")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("177870f8-37a4-4611-8c2e-7bba3cec99b4")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.18010
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace SkypeLogViewerLGG.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | public class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | public static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SkypeLogViewerLGG.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | public static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Drawing.Bitmap.
65 | ///
66 | public static System.Drawing.Bitmap SkypeLogLGG {
67 | get {
68 | object obj = ResourceManager.GetObject("SkypeLogLGG", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized resource of type System.Drawing.Bitmap.
75 | ///
76 | public static System.Drawing.Bitmap SkypeLogSBLGG {
77 | get {
78 | object obj = ResourceManager.GetObject("SkypeLogSBLGG", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// Looks up a localized resource of type System.Drawing.Bitmap.
85 | ///
86 | public static System.Drawing.Bitmap SkypeLogSLGG {
87 | get {
88 | object obj = ResourceManager.GetObject("SkypeLogSLGG", resourceCulture);
89 | return ((System.Drawing.Bitmap)(obj));
90 | }
91 | }
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\SkypeLogLGG.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
125 |
126 | ..\Resources\SkypeLogSBLGG.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
127 |
128 |
129 | ..\Resources\SkypeLogSLGG.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
130 |
131 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.34014
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace SkypeLogViewerLGG.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Configuration.SettingsProviderAttribute(typeof(SkypeLogViewerLGG.PortableSettingsProvider))]
28 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
29 | [global::System.Configuration.DefaultSettingValueAttribute("")]
30 | public string LastPath {
31 | get {
32 | return ((string)(this["LastPath"]));
33 | }
34 | set {
35 | this["LastPath"] = value;
36 | }
37 | }
38 |
39 | [global::System.Configuration.UserScopedSettingAttribute()]
40 | [global::System.Configuration.SettingsProviderAttribute(typeof(SkypeLogViewerLGG.PortableSettingsProvider))]
41 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
42 | [global::System.Configuration.DefaultSettingValueAttribute("")]
43 | public string CustomFormat {
44 | get {
45 | return ((string)(this["CustomFormat"]));
46 | }
47 | set {
48 | this["CustomFormat"] = value;
49 | }
50 | }
51 |
52 | [global::System.Configuration.UserScopedSettingAttribute()]
53 | [global::System.Configuration.SettingsProviderAttribute(typeof(SkypeLogViewerLGG.PortableSettingsProvider))]
54 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
55 | [global::System.Configuration.DefaultSettingValueAttribute("")]
56 | public string FormatSelection {
57 | get {
58 | return ((string)(this["FormatSelection"]));
59 | }
60 | set {
61 | this["FormatSelection"] = value;
62 | }
63 | }
64 |
65 | [global::System.Configuration.UserScopedSettingAttribute()]
66 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
67 | [global::System.Configuration.DefaultSettingValueAttribute("")]
68 | public string Format {
69 | get {
70 | return ((string)(this["Format"]));
71 | }
72 | set {
73 | this["Format"] = value;
74 | }
75 | }
76 |
77 | [global::System.Configuration.UserScopedSettingAttribute()]
78 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
79 | [global::System.Configuration.DefaultSettingValueAttribute("")]
80 | public string LastFolderPath {
81 | get {
82 | return ((string)(this["LastFolderPath"]));
83 | }
84 | set {
85 | this["LastFolderPath"] = value;
86 | }
87 | }
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/Resources/SkypeLogLGG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LGGGreg/skype-log-viewer/acf8e8cda7d2389389ad44a5c2debc504b0db443/SkypeLogViewerLGG/Resources/SkypeLogLGG.png
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/Resources/SkypeLogSBLGG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LGGGreg/skype-log-viewer/acf8e8cda7d2389389ad44a5c2debc504b0db443/SkypeLogViewerLGG/Resources/SkypeLogSBLGG.png
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/Resources/SkypeLogSLGG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LGGGreg/skype-log-viewer/acf8e8cda7d2389389ad44a5c2debc504b0db443/SkypeLogViewerLGG/Resources/SkypeLogSLGG.png
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/SkypeLogLGG.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LGGGreg/skype-log-viewer/acf8e8cda7d2389389ad44a5c2debc504b0db443/SkypeLogViewerLGG/SkypeLogLGG.ico
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/SkypeLogViewerLGG.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | x86
6 | 8.0.30703
7 | 2.0
8 | {71AC519A-87B3-4620-ABE0-A4831B9D8990}
9 | WinExe
10 | Properties
11 | SkypeLogViewerLGG
12 | SkypeLogViewerLGG
13 | v3.5
14 | 512
15 |
16 |
17 | x86
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | x86
28 | pdbonly
29 | true
30 | bin\Release\
31 | TRACE
32 | prompt
33 | 4
34 |
35 |
36 | SkypeLogLGG.ico
37 |
38 |
39 | false
40 |
41 |
42 | 5F972E42ED816A3D2BA07D99262A60E6D0BB14E0
43 |
44 |
45 | SkypeLogViewerLGG_TemporaryKey.pfx
46 |
47 |
48 |
49 |
50 |
51 |
52 | False
53 | .\System.Data.SQLite.dll
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | Form
66 |
67 |
68 | AboutForm.cs
69 |
70 |
71 | Form
72 |
73 |
74 | HelpForm.cs
75 |
76 |
77 | Form
78 |
79 |
80 | MainWindowForm.cs
81 |
82 |
83 |
84 | Form
85 |
86 |
87 | PreferencesForm.cs
88 |
89 |
90 |
91 |
92 | AboutForm.cs
93 |
94 |
95 | HelpForm.cs
96 |
97 |
98 | MainWindowForm.cs
99 | Designer
100 |
101 |
102 | PreferencesForm.cs
103 |
104 |
105 | PublicResXFileCodeGenerator
106 | Resources.Designer.cs
107 | Designer
108 |
109 |
110 | True
111 | Resources.resx
112 | True
113 |
114 |
115 |
116 | SettingsSingleFileGenerator
117 | Settings.Designer.cs
118 |
119 |
120 | True
121 | Settings.settings
122 | True
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
143 |
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/SkypeLogViewerLGG_TemporaryKey.pfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LGGGreg/skype-log-viewer/acf8e8cda7d2389389ad44a5c2debc504b0db443/SkypeLogViewerLGG/SkypeLogViewerLGG_TemporaryKey.pfx
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/System.Data.SQLite.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LGGGreg/skype-log-viewer/acf8e8cda7d2389389ad44a5c2debc504b0db443/SkypeLogViewerLGG/System.Data.SQLite.dll
--------------------------------------------------------------------------------
/SkypeLogViewerLGG/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------