2
0

Manager.xaml.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. using System.Windows.Controls;
  10. using System.Windows.Data;
  11. using System.Windows.Documents;
  12. using System.Windows.Input;
  13. using System.Windows.Media;
  14. using System.Windows.Media.Imaging;
  15. using System.Windows.Navigation;
  16. using WechatBakTool.Export;
  17. using WechatBakTool.Model;
  18. using WechatBakTool.ViewModel;
  19. namespace WechatBakTool.Pages
  20. {
  21. /// <summary>
  22. /// Manager.xaml 的交互逻辑
  23. /// </summary>
  24. public partial class Manager : Page
  25. {
  26. private WorkspaceViewModel workspaceViewModel = new WorkspaceViewModel();
  27. public WXUserReader? UserReader;
  28. public Manager()
  29. {
  30. DataContext = workspaceViewModel;
  31. InitializeComponent();
  32. UserBakConfig? config = Main2.CurrentUserBakConfig;
  33. if (config != null)
  34. {
  35. UserReader = new WXUserReader(config);
  36. if (!config.Decrypt)
  37. {
  38. MessageBox.Show("请先解密数据库", "错误");
  39. return;
  40. }
  41. }
  42. }
  43. private void btn_export_all_Click(object sender, RoutedEventArgs e)
  44. {
  45. Task.Run(() =>
  46. {
  47. bool group = false, user = false;
  48. Dispatcher.Invoke(() =>
  49. {
  50. if (cb_group.IsChecked == null || cb_user.IsChecked == null)
  51. return;
  52. group = (bool)cb_group.IsChecked;
  53. user = (bool)cb_user.IsChecked;
  54. });
  55. if (UserReader != null)
  56. {
  57. List<WXContact>? contacts = UserReader.GetWXContacts().ToList();
  58. foreach (var contact in contacts)
  59. {
  60. if (group && contact.UserName.Contains("@chatroom"))
  61. {
  62. workspaceViewModel.WXContact = contact;
  63. ExportMsg(contact);
  64. }
  65. if (user)
  66. {
  67. workspaceViewModel.WXContact = contact;
  68. ExportMsg(contact);
  69. }
  70. }
  71. MessageBox.Show("批量导出完成", "提示");
  72. }
  73. });
  74. }
  75. private void ExportMsg(WXContact contact)
  76. {
  77. workspaceViewModel.ExportCount = "";
  78. string path = Path.Combine(Main2.CurrentUserBakConfig!.UserWorkspacePath, contact.UserName + ".html");
  79. IExport export = new HtmlExport();
  80. export.InitTemplate(contact, path);
  81. export.SetMsg(UserReader!, contact, workspaceViewModel);
  82. export.SetEnd();
  83. export.Save(path);
  84. }
  85. }
  86. }