superstar_v2/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.PinyinSearch.cs

187 lines
7.5 KiB
C#
Raw Normal View History

2025-04-07 16:54:10 +08:00
using System.IO;
namespace DualScreenDemo
{
public partial class PrimaryForm
{
private PictureBox pictureBoxPinYinSingers;
private Button modifyButtonPinYinSingers;
private Button clearButtonPinYinSingers;
private Button closeButtonPinYinSingers;
private RichTextBox inputBoxPinYinSingers;
private void InitializeButtonsForPinYinSingers()
{
InitializeInputBoxPinYinSingers();
InitializePinYinSingersButton();
InitializeAlphbtBtns(pictureBoxPinYinSingers, LetterButtonPinYinSingers_Click);
2025-04-07 16:54:10 +08:00
}
private void InitializePinYinSingersButton()
2025-04-07 16:54:10 +08:00
{
var data = LoadBtnConfigData();
2025-04-07 16:54:10 +08:00
modifyButtonPinYinSingers = new Button { Name = "modifyButtonPinYinSingers" };
ConfigureButton(modifyButtonPinYinSingers, 650, 264, 72, 67,
new Bitmap(Path.Combine(serverPath, data["ModifyButtonImagesPinYin"]["normal"])),
new Bitmap(Path.Combine(serverPath, data["ModifyButtonImagesPinYin"]["mouseOver"])),
new Bitmap(Path.Combine(serverPath, data["ModifyButtonImagesPinYin"]["mouseDown"])),
ModifyButtonPinYinSingers_Click);
2025-04-07 16:54:10 +08:00
pictureBoxPinYinSingers.Controls.Add(modifyButtonPinYinSingers);
2025-04-07 16:54:10 +08:00
clearButtonPinYinSingers = new Button { Name = "clearButtonPinYinSingers" };
ConfigureButton(clearButtonPinYinSingers, 8, 264, 72, 67,
new Bitmap(Path.Combine(serverPath, data["ClearButtonImagesPinYin"]["normal"])),
new Bitmap(Path.Combine(serverPath, data["ClearButtonImagesPinYin"]["mouseOver"])),
new Bitmap(Path.Combine(serverPath, data["ClearButtonImagesPinYin"]["mouseDown"])),
ClearButtonPinYinSingers_Click);
2025-04-07 16:54:10 +08:00
pictureBoxPinYinSingers.Controls.Add(clearButtonPinYinSingers);
2025-04-14 11:28:41 +08:00
closeButtonPinYinSingers = new Button { Name = "closeButtonPinYinSingers" };
ConfigureButton(closeButtonPinYinSingers, 730, 264, 72, 67,
new Bitmap(Path.Combine(serverPath, data["CloseButtonImagesPinYin"]["normal"])),
new Bitmap(Path.Combine(serverPath, data["CloseButtonImagesPinYin"]["mouseOver"])),
new Bitmap(Path.Combine(serverPath, data["CloseButtonImagesPinYin"]["mouseDown"])),
CloseButtonPinYinSingers_Click);
pictureBoxPinYinSingers.Controls.Add(closeButtonPinYinSingers);
2025-04-14 11:28:41 +08:00
}
2025-04-07 16:54:10 +08:00
private void InitializeInputBoxPinYinSingers()
{
try
{
string fontName = "Times New Roman";
float fontSize = 26;
FontStyle fontStyle = FontStyle.Regular;
Color foreColor = Color.Black;
2025-04-07 16:54:10 +08:00
inputBoxPinYinSingers = new RichTextBox
{
Visible = false,
Name = "inputBoxPinYinSingers",
ForeColor = foreColor,
Font = new Font(fontName, fontSize / 900 * Screen.PrimaryScreen.Bounds.Height, fontStyle)
};
ResizeAndPositionControl(inputBoxPinYinSingers, 20, 25, 448, 57);
2025-04-07 16:54:10 +08:00
pictureBoxPinYinSingers.Controls.Add(inputBoxPinYinSingers);
2025-04-07 16:54:10 +08:00
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
private void ShowImageOnPictureBoxPinYinSingers(string imagePath)
{
Bitmap originalImage = new Bitmap(imagePath);
pictureBoxPinYinSingers.Image = originalImage;
ResizeAndPositionPictureBox(pictureBoxPinYinSingers, 390, 360, 808, 356);
2025-04-07 16:54:10 +08:00
pictureBoxPinYinSingers.Visible = true;
}
private void SetPinYinSingersAndButtonsVisibility(bool isVisible)
{
System.Action action = () =>
{
SuspendLayout();
if (isVisible) SetUIVisible(pictureBoxPinYinSingers);
else CloseUI(pictureBoxPinYinSingers);
};
2025-04-07 16:54:10 +08:00
if (this.InvokeRequired)
{
this.Invoke(action);
}
else
{
action();
}
}
2025-04-07 16:54:10 +08:00
#region
private void PinyinSingerSearchButton_Click(object sender, EventArgs e)
{
2025-04-07 16:54:10 +08:00
UpdateSSearchBtn(pinyinSearchButton, pinyinSearchActiveBackground);
2025-04-07 16:54:10 +08:00
var configData = LoadBtnConfigData();
string pinyinImagePath = Path.Combine(serverPath, configData["ImagePaths"]["PinYinSingers"]);
2025-04-07 16:54:10 +08:00
ShowImageOnPictureBoxPinYinSingers(Path.Combine(serverPath, pinyinImagePath));
2025-04-07 16:54:10 +08:00
SetZhuYinSingersAndButtonsVisibility(false); // 隱藏注音搜尋相關控件
SetEnglishSingersAndButtonsVisibility(false); // 隱藏英文搜尋相關控件
SetWordCountSingersAndButtonsVisibility(false); // 隱藏字數搜尋相關控件
SetHandWritingForSingersAndButtonsVisibility(false); // 隱藏手寫搜尋相關控件
SetPinYinSingersAndButtonsVisibility(true);
//SetPictureBoxArtistSearchAndButtonsVisibility(false);
pictureBoxPinYinSingers.Visible = true;
}
private void LetterButtonPinYinSingers_Click(object sender, EventArgs e)
{
var button = sender as Button;
if (button != null && button.Tag != null)
{
if (inputBoxPinYinSingers.Visible)
2025-04-07 16:54:10 +08:00
{
inputBoxPinYinSingers.Text += button.Tag.ToString();
2025-04-07 16:54:10 +08:00
}
}
}
private void ModifyButtonPinYinSingers_Click(object sender, EventArgs e)
{
2025-04-07 16:54:10 +08:00
if (pictureBoxPinYinSingers.Controls.Contains(inputBoxPinYinSingers) && inputBoxPinYinSingers.Text.Length > 0)
2025-04-07 16:54:10 +08:00
{
inputBoxPinYinSingers.Text = inputBoxPinYinSingers.Text.Substring(0, inputBoxPinYinSingers.Text.Length - 1);
2025-04-07 16:54:10 +08:00
}
}
private void ClearButtonPinYinSingers_Click(object sender, EventArgs e)
{
if (pictureBoxPinYinSingers.Controls.Contains(inputBoxPinYinSingers) && inputBoxPinYinSingers.Text.Length > 0)
2025-04-07 16:54:10 +08:00
{
inputBoxPinYinSingers.Text = "";
2025-04-07 16:54:10 +08:00
}
}
private void CloseButtonPinYinSingers_Click(object sender, EventArgs e)
{
pictureBoxPinYinSingers.Visible = false;
pinyinSearchButton.BackgroundImage = pinyinSearchNormalBackground;
FindPinYinSingers();
SetPinYinSingersAndButtonsVisibility(false);
}
private void FindPinYinSingers()
{
string searchText = inputBoxPinYinSingers.Text;
// 在這裡添加搜尋歌曲的邏輯
// 例如:根據輸入框的內容搜尋歌曲
string query = string.IsNullOrWhiteSpace(searchText)
? "SELECT * FROM artists; LIMIT 1000"
: $"SELECT * FROM artists WHERE `pinyin_abbr` LIKE '{searchText}%';";
//string query = $"SELECT * FROM SongLibrary WHERE `歌星A拼音` LIKE '{searchText}%' OR `歌星B拼音` LIKE '{searchText}%' ";
var searchResults = SearchSingers_Mysql(query);
// 重置分頁
currentPage = 0;
currentArtistList = searchResults;
totalPages = (int)Math.Ceiling((double)searchResults.Count / itemsPerPage);
multiPagePanel.currentPageIndex = 0;
multiPagePanel.LoadSingers(currentArtistList);
}
#endregion
2025-04-07 16:54:10 +08:00
}
}