diff --git a/BookmarkManager.csproj b/BookmarkManager.csproj
index e441803..e0ad90d 100644
--- a/BookmarkManager.csproj
+++ b/BookmarkManager.csproj
@@ -14,7 +14,7 @@
Ray Lam
1.0.0.0
1.0.0.0
- 0.6.0.607
+ 0.6.0.716
bookmarkmanager
True
8.0
@@ -115,11 +115,8 @@
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/FindForm.cs b/FindForm.cs
index ad21a9f..ff00d2b 100644
--- a/FindForm.cs
+++ b/FindForm.cs
@@ -1,6 +1,8 @@
using System;
-using System.ComponentModel;
+using System.Collections.Generic;
+using System.Linq;
using System.Windows.Forms;
+using bzit.bomg.Models;
using RyzStudio.Windows.Forms;
using RyzStudio.Windows.ThemedForms;
using RyzStudio.Windows.ThemedForms.ButtonTextBox;
@@ -17,13 +19,18 @@ namespace FizzyLauncher
private BookmarkTreeView treeView1 = null;
- private bool findNextNew = false;
+ private int findPosition = -1;
public FindForm(BookmarkTreeView treeView)
{
InitializeComponent();
+ this.MinimizeBox = false;
+ this.MaximizeBox = false;
+ this.ShowIcon = false;
+ this.ShowInTaskbar = true;
+
treeView1 = treeView;
textBox1.PreviewKeyDown += textBox1_PreviewKeyDown;
@@ -139,16 +146,12 @@ namespace FizzyLauncher
}
- [Browsable(false)]
- public string Password => textBox1.Text;
-
-
private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Enter:
- if (findNextNew)
+ if (findPosition < 0)
{
button1_MouseClick(sender, new MouseEventArgs(MouseButtons.Left, 1, 0, 0, 0));
}
@@ -161,39 +164,93 @@ namespace FizzyLauncher
case Keys.Escape:
this.Close();
break;
- default: break;
+ default:
+ break;
}
}
+ ///
+ /// Find first.
+ ///
+ ///
+ ///
private void button1_MouseClick(object sender, MouseEventArgs e)
{
- //if (e.Button == MouseButtons.Left)
- //{
- // if (string.IsNullOrWhiteSpace(textBox1.Text)) return;
- // if (treeView1.Nodes.Count <= 0) return;
+ if (e.Button == MouseButtons.Left)
+ {
+ if (string.IsNullOrWhiteSpace(textBox1.Text))
+ {
+ return;
+ }
- // findNextNew = false;
- // treeView1.FindTextNode(treeView1.Nodes[0], textBox1.Text?.Trim());
- //}
+ if (treeView1.Nodes.Count <= 0)
+ {
+ return;
+ }
+
+ findPosition = -1;
+
+ var nodeList = treeView1.ToNodeList();
+
+ var node = nodeList.Where(x => x.Value.Title.Contains(textBox1.Text?.Trim())).Select(x => x.Key).FirstOrDefault();
+ if (node != null)
+ {
+ findPosition = 0;
+
+ treeView1.SelectedNode = node;
+ treeView1.SelectedNode.EnsureVisible();
+ }
+ }
}
+ ///
+ /// Find next.
+ ///
+ ///
+ ///
private void button2_MouseClick(object sender, MouseEventArgs e)
{
- //if (e.Button == MouseButtons.Left)
- //{
- // if (string.IsNullOrWhiteSpace(textBox1.Text)) return;
- // if (treeView1.Nodes.Count <= 0) return;
+ if (e.Button == MouseButtons.Left)
+ {
+ if (string.IsNullOrWhiteSpace(textBox1.Text))
+ {
+ return;
+ }
- // if (treeView1.SelectedNode == null) treeView1.SelectedNode = treeView1.Nodes[0];
+ if (treeView1.Nodes.Count <= 0)
+ {
+ return;
+ }
- // findNextNew = false;
+ if (treeView1.SelectedNode == null)
+ {
+ treeView1.SelectedNode = treeView1.Nodes[0];
+ }
- // bool rv = treeView1.FindTextNode(treeView1.SelectedNode, textBox1.Text?.Trim());
- // if (!rv)
- // {
- // findNextNew = true;
- // }
- //}
+ var nodeList = treeView1.ToNodeList();
+
+ var node = nodeList.Where(x => x.Value.Title.Contains(textBox1.Text?.Trim())).Select(x => x.Key)?.ToList() ?? new List();
+ if (node != null)
+ {
+ //var pos = nodeList.FindIndex(x => x.Key == treeView1.SelectedNode);
+ //if (pos < 0)
+ //{
+ // findPosition = -1;
+ //} else {
+ // findPosition = pos;
+ //}
+
+ findPosition++;
+
+ if (findPosition >= node.Count)
+ {
+ findPosition = 0;
+ }
+
+ treeView1.SelectedNode = node[findPosition];
+ treeView1.SelectedNode.EnsureVisible();
+ }
+ }
}
}
diff --git a/MainForm.cs b/MainForm.cs
index 7fa855a..0df1786 100644
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -6,7 +6,6 @@ using System.Drawing.Imaging;
using System.IO;
using System.IO.Compression;
using System.Linq;
-using System.Text.Json;
using System.Threading.Tasks;
using System.Windows.Forms;
using BookmarkManager;
@@ -15,9 +14,6 @@ using bzit.bomg.Models;
using FizzyLauncher.Models;
using RyzStudio;
using RyzStudio.Windows.Forms;
-using RyzStudio.Windows.TileForms;
-using static System.Collections.Specialized.BitVector32;
-using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace FizzyLauncher
{
@@ -50,7 +46,6 @@ namespace FizzyLauncher
treeView1.FolderContextMenu = folderContextMenu;
treeView1.PageContextMenu = pageContextMenu;
treeView1.NodeMouseDoubleClick += treeView1_NodeMouseDoubleClick;
- treeView1.OnChanged += treeView1_OnChanged;
treeView1.PreviewKeyDown += treeView1_PreviewKeyDown;
}
@@ -82,11 +77,6 @@ namespace FizzyLauncher
{
base.OnClosing(e);
- //if (this.CurrentSession == null)
- //{
- // this.CurrentSession = new AppOptions();
- //}
-
await _fileSessionManager.CloseSession();
}
@@ -111,7 +101,7 @@ namespace FizzyLauncher
{
closeToolStripMenuItem.Enabled = (_fileSessionManager.SessionState != FileSessionManager.SessionStateEnum.Close);
- saveToolStripMenuItem.Enabled = (_fileSessionManager.SessionState == FileSessionManager.SessionStateEnum.Open);
+ saveToolStripMenuItem.Enabled = (_fileSessionManager.SessionState == FileSessionManager.SessionStateEnum.Open) && treeView1.HasChanged;
saveAsToolStripMenuItem.Enabled = (_fileSessionManager.SessionState != FileSessionManager.SessionStateEnum.Close);
findToolStripMenuItem.Enabled = (_fileSessionManager.SessionState != FileSessionManager.SessionStateEnum.Close);
@@ -224,13 +214,13 @@ namespace FizzyLauncher
///
private void findToolStripMenuItem_Click(object sender, EventArgs e)
{
- //if (this.IsBusy)
- //{
- // return;
- //}
+ if (this.IsBusy)
+ {
+ return;
+ }
- //var form = new FindForm(treeView1);
- //form.Show();
+ var form = new FindForm(treeView1);
+ form.ShowDialog();
}
@@ -836,6 +826,8 @@ namespace FizzyLauncher
default:
break;
}
+
+ treeView1.HasChanged = false;
});
}
@@ -866,14 +858,6 @@ namespace FizzyLauncher
await OpenBookmark(e.Node);
}
- private void treeView1_OnChanged(object sender, EventArgs e)
- {
- if (treeView1.HasChanged)
- {
- _fileSessionManager.HasChanged = treeView1.HasChanged;
- }
- }
-
private AppOptions LoadR4SaveFile(string filename)
{
@@ -999,11 +983,6 @@ namespace FizzyLauncher
{
foreach (var item in items)
{
- if (item.Icon == null)
- {
- continue;
- }
-
var key = "icon\\" + item.Id.ToString() + ".png";
var zipEntry = archive.GetEntry(key);
if (zipEntry != null)
@@ -1011,6 +990,11 @@ namespace FizzyLauncher
zipEntry.Delete();
}
+ if (item.Icon == null)
+ {
+ continue;
+ }
+
zipEntry = archive.CreateEntry(key, CompressionLevel.SmallestSize);
using (Stream entryStream = zipEntry.Open())
diff --git a/References/HtmlAgilityPack.dll b/References/HtmlAgilityPack.dll
deleted file mode 100644
index d817f94..0000000
Binary files a/References/HtmlAgilityPack.dll and /dev/null differ
diff --git a/UpdateIconsForm.cs b/UpdateIconsForm.cs
index fce88a1..bda9729 100644
--- a/UpdateIconsForm.cs
+++ b/UpdateIconsForm.cs
@@ -23,14 +23,14 @@ namespace FizzyLauncher
private ThYesNoPickerBox pickerBox1;
private ThButton button2;
private RyzStudio.Windows.ThemedForms.ThProgressBar progressBar1;
- private Label label3;
- private ThProgressBar thProgressBar1;
- private System.ComponentModel.IContainer components;
private readonly WebProvider _webProvider;
private BookmarkTreeView _treeView;
private bool _isBusy = false;
+ private Label label4;
+ private THorizontalSeparator tHorizontalSeparator3;
+ private ThButton button3;
private bool _requestCancel = false;
@@ -56,7 +56,10 @@ namespace FizzyLauncher
pickerBox1 = new ThYesNoPickerBox();
button2 = new ThButton();
progressBar1 = new ThProgressBar();
- ((System.ComponentModel.ISupportInitialize)pictureBox2).BeginInit();
+ label4 = new Label();
+ tHorizontalSeparator3 = new THorizontalSeparator();
+ button3 = new ThButton();
+ ((ISupportInitialize)pictureBox2).BeginInit();
SuspendLayout();
//
// label1
@@ -131,9 +134,9 @@ namespace FizzyLauncher
label2.Margin = new Padding(0);
label2.Name = "label2";
label2.Padding = new Padding(0, 8, 0, 0);
- label2.Size = new System.Drawing.Size(289, 23);
+ label2.Size = new System.Drawing.Size(231, 23);
label2.TabIndex = 195;
- label2.Text = "Attempt to retrieve supported icons from bookmarks.";
+ label2.Text = "Retrieve supported icons from bookmarks.";
label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// pictureBox2
@@ -208,11 +211,62 @@ namespace FizzyLauncher
progressBar1.TabStop = false;
progressBar1.Value = 50;
//
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.BackColor = System.Drawing.Color.Transparent;
+ label4.ForeColor = System.Drawing.SystemColors.ControlText;
+ label4.Location = new System.Drawing.Point(10, 245);
+ label4.Margin = new Padding(0);
+ label4.Name = "label4";
+ label4.Padding = new Padding(0, 8, 0, 0);
+ label4.Size = new System.Drawing.Size(83, 23);
+ label4.TabIndex = 208;
+ label4.Text = "Clear all icons.";
+ label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // tHorizontalSeparator3
+ //
+ tHorizontalSeparator3.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ tHorizontalSeparator3.AutoScrollMargin = new System.Drawing.Size(0, 0);
+ tHorizontalSeparator3.AutoScrollMinSize = new System.Drawing.Size(0, 0);
+ tHorizontalSeparator3.BackColor = System.Drawing.Color.Transparent;
+ tHorizontalSeparator3.Location = new System.Drawing.Point(10, 212);
+ tHorizontalSeparator3.Margin = new Padding(0, 10, 0, 0);
+ tHorizontalSeparator3.MaximumSize = new System.Drawing.Size(4920, 2);
+ tHorizontalSeparator3.MinimumSize = new System.Drawing.Size(0, 22);
+ tHorizontalSeparator3.Name = "tHorizontalSeparator3";
+ tHorizontalSeparator3.Size = new System.Drawing.Size(424, 22);
+ tHorizontalSeparator3.TabIndex = 207;
+ tHorizontalSeparator3.TabStop = false;
+ //
+ // button3
+ //
+ button3.AcceptButton = null;
+ button3.ActiveImage = null;
+ button3.BackColor = System.Drawing.Color.Transparent;
+ button3.EnableMenuOnClick = false;
+ button3.EnableReactiveVisual = true;
+ button3.HoverImage = null;
+ button3.IdleImage = null;
+ button3.LabelText = "Clear &All";
+ button3.Location = new System.Drawing.Point(10, 288);
+ button3.Margin = new Padding(10, 10, 10, 0);
+ button3.Name = "button3";
+ button3.Padding = new Padding(4, 4, 3, 3);
+ button3.Size = new System.Drawing.Size(128, 32);
+ button3.TabIndex = 209;
+ button3.TabStop = false;
+ button3.MouseClick += button3_MouseClick;
+ //
// UpdateIconsForm
//
AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new System.Drawing.Size(444, 521);
+ Controls.Add(button3);
+ Controls.Add(label4);
+ Controls.Add(tHorizontalSeparator3);
Controls.Add(progressBar1);
Controls.Add(button2);
Controls.Add(pickerBox1);
@@ -226,7 +280,7 @@ namespace FizzyLauncher
MinimumSize = new System.Drawing.Size(460, 560);
Name = "UpdateIconsForm";
Text = "Update Icons";
- ((System.ComponentModel.ISupportInitialize)pictureBox2).EndInit();
+ ((ISupportInitialize)pictureBox2).EndInit();
ResumeLayout(false);
PerformLayout();
}
@@ -237,6 +291,11 @@ namespace FizzyLauncher
var model = _treeView.ToNodeList();
+ if (pickerBox1.Value)
+ {
+ model = model.Where(x => x.Value.Icon == null)?.ToList() ?? new List>();
+ }
+
progressBar1.Minimum = 0;
progressBar1.Value = 0;
progressBar1.Maximum = model.Count;
@@ -263,10 +322,12 @@ namespace FizzyLauncher
_isBusy = value;
UIControl.SetEnable(pickerBox1, !this.IsBusy);
- UIControl.Invoke(button2, (x) => {
+ UIControl.Invoke(button2, (x) =>
+ {
button2.LabelText = (this.IsBusy ? "&Stop" : "&Run");
});
UIControl.SetValue(pictureBox2, (this.IsBusy ? RyzStudio.Windows.ThemedForms.Resource2.loading_block : null));
+ UIControl.SetEnable(button3, !this.IsBusy);
UIControl.SetEnable(button1, !this.IsBusy);
}
}
@@ -338,5 +399,38 @@ namespace FizzyLauncher
});
}
+ private async void button3_MouseClick(object sender, MouseEventArgs e)
+ {
+ await Task.Run(() =>
+ {
+ if (this.IsBusy)
+ {
+ return;
+ }
+
+ this.IsBusy = true;
+
+ var model = _treeView.ToNodeList();
+ foreach (var item in model)
+ {
+ progressBar1.Value++;
+
+ if (item.Value.Icon == null)
+ {
+ continue;
+ }
+
+ var newModel = item.Value;
+ newModel.Icon = null;
+
+ _treeView.UpdateNode(item.Key, newModel);
+ }
+
+ _requestCancel = false;
+
+ this.IsBusy = false;
+ });
+ }
+
}
}
\ No newline at end of file
diff --git a/Windows/Forms/BookmarkTreeView.cs b/Windows/Forms/BookmarkTreeView.cs
index b50950b..b9073e3 100644
--- a/Windows/Forms/BookmarkTreeView.cs
+++ b/Windows/Forms/BookmarkTreeView.cs
@@ -202,6 +202,16 @@ namespace RyzStudio.Windows.Forms
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public ContextMenuStrip PageContextMenu { get; set; } = null;
+ [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+ public new bool HasChanged
+ {
+ get => base.HasChanged;
+ set
+ {
+ base.HasChanged = value;
+ }
+ }
+
public TreeNode AddFolder(TreeNode node = null, string name = "", bool quol = true)
{
@@ -409,18 +419,21 @@ namespace RyzStudio.Windows.Forms
var iconIndex = (int)NodeIcon.Default;
// Update custom favicon
- if (model.Icon != null)
+ var iconKey = model.Id.ToString();
+ if (!string.IsNullOrWhiteSpace(iconKey))
{
- var iconKey = model.Id.ToString();
- if (!string.IsNullOrWhiteSpace(iconKey))
+ UIControl.Invoke(this, (x) =>
+ {
+ if (this.ImageList.Images.ContainsKey(iconKey))
+ {
+ this.ImageList.Images.RemoveByKey(iconKey);
+ }
+ });
+
+ if (model.Icon != null)
{
UIControl.Invoke(this, (x) =>
{
- if (this.ImageList.Images.ContainsKey(iconKey))
- {
- this.ImageList.Images.RemoveByKey(iconKey);
- }
-
this.ImageList.Images.Add(iconKey, model.Icon);
});
diff --git a/build-installer.iss b/build-installer.iss
index 92ee27b..b938179 100644
--- a/build-installer.iss
+++ b/build-installer.iss
@@ -2,13 +2,13 @@
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "Bookmark Manager"
-#define MyAppVersion "0.5.0.012"
+#define MyAppVersion "0.6.0.716"
#define MyAppPublisher "Hi, I'm Ray"
#define MyAppURL "https://www.hiimray.co.uk/software-bookmark-manager"
#define MyAppExeName "bookmarkmanager.exe"
-#define AppSourcePath "L:\gitea-hiimray\bookmark-manager-r4\bin\Release\64"
-#define AppReleasePath "L:\gitea-hiimray\bookmark-manager-r4\bin\Release"
+#define AppSourcePath "L:\gitea-hiimray\bookmark-manager-r4\bin"
+#define AppReleasePath "L:\gitea-hiimray\bookmark-manager-r4\bin"
#define AppReleaseName "bookmark-manager"
[Setup]
@@ -40,7 +40,6 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{
[Files]
Source: "{#AppSourcePath}\bookmarkmanager.exe"; DestDir: "{app}"; Flags: ignoreversion
-Source: "{#AppSourcePath}\e_sqlite3.dll"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
diff --git a/build.bat b/build.bat
index abe9789..4d5c801 100644
--- a/build.bat
+++ b/build.bat
@@ -1,7 +1,17 @@
-rmdir /s /q "bin\Release\"
-dotnet publish skye.sln -r win-x64 -c Release /p:PublishSingleFile=true /p:SelfContained=false /p:PublishReadyToRunfalse=true /p:PublishDir="bin\Release\64\"
+RMDIR /s /q "bin\"
+RMDIR /s /q "obj\"
+
+MKDIR bin
+
+dotnet restore skye.sln
+dotnet publish skye.sln -r win-x64 -c Release /p:PublishSingleFile=true /p:SelfContained=false /p:PublishReadyToRunfalse=true /p:PublishDir="bin\"
"C:\B\Portable Files (dev)\Inno Setup\v6.0.4-2\app\ISCC.exe" "build-installer.iss"
-cd "bin\Release\64\"
-"C:\B\Portable Files\PeaZip (Portable)\v6.5.1\App\PeaZip\res\7z\7z.exe" a -t7z "..\bookmark-manager.7z" "*" -mx9
\ No newline at end of file
+"C:\B\Portable Files\7-Zip (Portable)\23.01\App\7-Zip64\7z.exe" a -t7z "bin\bookmarkmanager.7z" ".\bin\bookmarkmanager.exe" -mx9
+
+RMDIR /s /q "bin\debug"
+RMDIR /s /q "bin\release"
+RMDIR /s /q "obj\"
+
+PAUSE
\ No newline at end of file
diff --git a/skye.sln b/skye.sln
index 187707d..9c9d90e 100644
--- a/skye.sln
+++ b/skye.sln
@@ -5,10 +5,6 @@ VisualStudioVersion = 17.4.33205.214
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookmarkManager", "BookmarkManager.csproj", "{4833FB27-0817-4720-A54B-180369B0C374}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RyzStudio", "..\ryzstudio8\core\RyzStudio.csproj", "{6AF988B5-DA13-46F2-B3D0-505C2681A296}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RyzStudio.Windows.Forms", "..\ryzstudio8\windows.forms\RyzStudio.Windows.Forms.csproj", "{A1656CB4-4A0A-469B-9DC9-8C89188FEC98}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -19,14 +15,6 @@ Global
{4833FB27-0817-4720-A54B-180369B0C374}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4833FB27-0817-4720-A54B-180369B0C374}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4833FB27-0817-4720-A54B-180369B0C374}.Release|Any CPU.Build.0 = Release|Any CPU
- {6AF988B5-DA13-46F2-B3D0-505C2681A296}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6AF988B5-DA13-46F2-B3D0-505C2681A296}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6AF988B5-DA13-46F2-B3D0-505C2681A296}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6AF988B5-DA13-46F2-B3D0-505C2681A296}.Release|Any CPU.Build.0 = Release|Any CPU
- {A1656CB4-4A0A-469B-9DC9-8C89188FEC98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A1656CB4-4A0A-469B-9DC9-8C89188FEC98}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A1656CB4-4A0A-469B-9DC9-8C89188FEC98}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A1656CB4-4A0A-469B-9DC9-8C89188FEC98}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE