TextEditDialog.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. using System.IO;
  3. using System.Windows.Forms;
  4. using BeatLyrics.Common;
  5. using BeatLyrics.Tool.Models;
  6. using BeatLyrics.Tool.Utils;
  7. using Newtonsoft.Json;
  8. namespace BeatLyrics.Tool.Dialogs
  9. {
  10. internal partial class TextEditForm : Form
  11. {
  12. private readonly LevelInfo _nfo;
  13. private LyricFileExt _selectedItem;
  14. public TextEditForm(LevelInfo nfo, string filename)
  15. {
  16. _nfo = nfo;
  17. InitializeComponent();
  18. SaveTextBox.Text = filename;
  19. }
  20. private void TextEditForm_Shown(object sender, EventArgs e)
  21. {
  22. OggAudioPlayer.LoadOggFile(_nfo.MediaPath);
  23. OggAudioPlayer.Stop();
  24. var duration = OggAudioPlayer.Length;
  25. EditorControl.SetMediaInfo((int)duration.TotalMilliseconds);
  26. var localLyricPath = Path.Combine(DirProvider.GetLyricDir(_nfo.Hash), SaveTextBox.Text);
  27. var json = File.ReadAllText(localLyricPath);
  28. _selectedItem = JsonConvert.DeserializeObject<LyricFileExt>(json);
  29. EditorControl.SetLyricFile(_selectedItem);
  30. }
  31. private void SaveButton_Click(object sender, EventArgs e)
  32. {
  33. var json = JsonConvert.SerializeObject(_selectedItem);
  34. File.WriteAllText(Path.Combine(DirProvider.GetLyricDir(_nfo.Hash), SaveTextBox.Text), json);
  35. Close();
  36. }
  37. private void TextEditForm_FormClosed(object sender, FormClosedEventArgs e) => EditorControl.ClearData();
  38. }
  39. }