优化默认菜单颜色显示

添加主题切换按钮
优化图片显示计数
This commit is contained in:
尚美 2025-03-12 18:03:58 +08:00
parent beb88e236d
commit 60db9fd0c2

View File

@ -250,6 +250,9 @@ namespace QuickLauncher
// 设置快捷方式面板颜色
shortcutsPanel.BackColor = isDarkMode ? Color.FromArgb(32, 32, 32) : Color.FromArgb(250, 250, 250);
// 设置分类文字颜色
categoryLabel.ForeColor = isDarkMode ? Color.FromArgb(255, 255, 255) : Color.FromArgb(0, 0, 0);
// 设置添加按钮颜色
addButton.BackColor = accentColor;
addButton.ForeColor = Color.White;
@ -831,7 +834,7 @@ namespace QuickLauncher
// 设置分类标签样式
categoryLabel.Font = new Font("Microsoft YaHei UI", 11);
categoryLabel.ForeColor = isDarkMode ? Color.Black : Color.White;
categoryLabel.ForeColor = isDarkMode ? Color.FromArgb(0, 0, 0) : Color.FromArgb(255, 255, 255);
// 创建左侧面板调整手柄
CreateResizeHandle();
@ -922,28 +925,40 @@ namespace QuickLauncher
using (var dialog = new Form())
{
dialog.Text = "添加新分类";
dialog.Size = new Size(350, 150);
dialog.Size = new Size(350, 200);
dialog.StartPosition = FormStartPosition.CenterParent;
dialog.FormBorderStyle = FormBorderStyle.FixedDialog;
dialog.MaximizeBox = false;
dialog.MinimizeBox = false;
dialog.BackColor = isDarkMode ? Color.FromArgb(32, 32, 32) : Color.FromArgb(243, 243, 243);
dialog.BackColor = isDarkMode ? Color.FromArgb(45, 45, 45) : Color.FromArgb(240, 240, 240);
dialog.ForeColor = isDarkMode ? Color.White : Color.Black;
var label = new Label() {
// 应用Windows 11深色/浅色模式到标题栏
if (Environment.OSVersion.Version.Build >= 22000)
{
int darkMode = isDarkMode ? 1 : 0;
DwmSetWindowAttribute(dialog.Handle, DWMWA_USE_IMMERSIVE_DARK_MODE, ref darkMode, sizeof(int));
}
var label = new Label()
{
Text = "分类名称:",
Location = new Point(10, 20),
ForeColor = isDarkMode ? Color.White : Color.Black
ForeColor = isDarkMode ? Color.White : Color.Black,
AutoSize = true
};
var textBox = new TextBox() {
var textBox = new TextBox()
{
Location = new Point(120, 17),
Width = 180,
BackColor = isDarkMode ? Color.FromArgb(45, 45, 45) : Color.White,
ForeColor = isDarkMode ? Color.White : Color.Black
BackColor = isDarkMode ? Color.FromArgb(60, 60, 60) : Color.White,
ForeColor = isDarkMode ? Color.White : Color.Black,
BorderStyle = BorderStyle.FixedSingle
};
var button = new RoundedButton() {
var button = new RoundedButton()
{
Text = "确定",
DialogResult = DialogResult.OK,
Location = new Point(110, 60),
@ -957,6 +972,16 @@ namespace QuickLauncher
dialog.Controls.AddRange(new Control[] { label, textBox, button });
dialog.AcceptButton = button;
// 确保在显示对话框之前应用主题
dialog.HandleCreated += (s, ev) =>
{
if (Environment.OSVersion.Version.Build >= 22000)
{
int darkMode = isDarkMode ? 1 : 0;
DwmSetWindowAttribute(dialog.Handle, DWMWA_USE_IMMERSIVE_DARK_MODE, ref darkMode, sizeof(int));
}
};
if (dialog.ShowDialog() == DialogResult.OK && !string.IsNullOrWhiteSpace(textBox.Text))
{
string newCategory = textBox.Text.Trim();
@ -967,8 +992,7 @@ namespace QuickLauncher
RefreshCategoryList();
// 自动选择新创建的分类
currentCategory = newCategory;
ShowCategoryItems(currentCategory);
SwitchCategory(newCategory);
}
}
}
@ -1042,6 +1066,23 @@ namespace QuickLauncher
btn.Click += (s, e) =>
{
currentCategory = category;
foreach (Control panel in leftPanel.Controls)
{
if (panel is RoundedPanel && panel.Controls.Count > 0)
{
var button = panel.Controls[0] as RoundedButton;
if (button != null)
{
string btnCategory = button.Tag as string;
button.BackColor = btnCategory == category ?
accentColor :
(isDarkMode ? Color.FromArgb(60, 60, 60) : Color.FromArgb(230, 230, 230));
button.ForeColor = btnCategory == category ?
Color.White :
(isDarkMode ? Color.FromArgb(240, 240, 240) : Color.FromArgb(20, 20, 20));
}
}
}
ShowCategoryItems(category);
};
@ -1174,7 +1215,7 @@ namespace QuickLauncher
}
else
{
LaunchApplication(item.Path);
LaunchApplication(item.Path); // 启动应用程序
}
};
@ -1286,6 +1327,14 @@ namespace QuickLauncher
}
};
var item = categories[currentCategory].FirstOrDefault(i => i.Path == imagePath);
if (item != null)
{
item.UsageCount++;
item.LastUsed = DateTime.Now;
SaveData();
}
previewForm.Controls.Add(pictureBox);
previewForm.ShowDialog();
}
@ -1418,6 +1467,7 @@ namespace QuickLauncher
}
}
// 启动应用程序
private void LaunchApplication(string path)
{
try
@ -1483,6 +1533,17 @@ namespace QuickLauncher
}
RefreshCategoryList();
// 如果有上次选择的分类,则选择它
if (!string.IsNullOrEmpty(settings.LastSelectedCategory) && categories.ContainsKey(settings.LastSelectedCategory))
{
SwitchCategory(settings.LastSelectedCategory);
}
// 否则选择第一个分类
else if (categories.Count > 0)
{
SwitchCategory(categories.Keys.First());
}
}
catch (Exception ex)
{
@ -1497,8 +1558,33 @@ namespace QuickLauncher
categories["默认分类"] = new List<ShortcutItem>();
SaveData();
RefreshCategoryList();
SwitchCategory("默认分类");
}
}
private void SwitchCategory(string category)
{
currentCategory = category;
RefreshCategoryList();
ShowCategoryItems(category);
SaveSettings(); // 保存当前选择的分类
}
private void button1_Click(object sender, EventArgs e)
{
isDarkMode = !isDarkMode; // 切换主题状态
ApplyTheme(isDarkMode);
}
private void ApplyTheme(bool darkMode)
{
if (darkMode)
{
ChangeTheme(true);
}
else
ChangeTheme(false);
}
}
public class ShortcutItem