/* * Copyright (c) 2022 LG Electronics Inc. * SPDX-License-Identifier: LicenseRef-LGE-Proprietary */ using Aurora; using Aurora.Api; using Aurora.Api.Control; using MahApps.Metro.Controls; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace AuroraUIComponent.Dialog { /// /// Interaction logic for UCMessageDialogEx.xaml /// public partial class UCMessageDialogEx : MetroWindow { public UCMessageDialogEx() { InitializeComponent(); } public string ButtonName1 { get; private set; } public static readonly DependencyProperty DisplayButtonName1Property = DependencyProperty.Register( nameof(DisplayButtonName1), typeof(string), typeof(UCMessageDialogEx), new FrameworkPropertyMetadata( string.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); public string DisplayButtonName1 { get { return (string)GetValue(DisplayButtonName1Property); } set { SetValue(DisplayButtonName1Property, value); } } public string ButtonName2 { get; private set; } public static readonly DependencyProperty DisplayButtonName2Property = DependencyProperty.Register( nameof(DisplayButtonName2), typeof(string), typeof(UCMessageDialogEx), new FrameworkPropertyMetadata( string.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); public string DisplayButtonName2 { get { return (string)GetValue(DisplayButtonName2Property); } set { SetValue(DisplayButtonName2Property, value); } } public string ButtonName3 { get; private set; } public static readonly DependencyProperty DisplayButtonName3Property = DependencyProperty.Register( nameof(DisplayButtonName3), typeof(string), typeof(UCMessageDialogEx), new FrameworkPropertyMetadata( string.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); public string DisplayButtonName3 { get { return (string)GetValue(DisplayButtonName3Property); } set { SetValue(DisplayButtonName3Property, value); } } public bool ApplyTranslateForButtonName = true; public string TitleText { get; private set; } public static readonly DependencyProperty DisplayTitleProperty = DependencyProperty.Register( nameof(DisplayTitle), typeof(string), typeof(UCMessageDialogEx), new FrameworkPropertyMetadata( string.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); public string DisplayTitle { get { return (string)GetValue(DisplayTitleProperty); } set { SetValue(DisplayTitleProperty, value); } } public bool ApplyTranslateForTitle = true; public string Message { get; private set; } public static readonly DependencyProperty DisplayMessageProperty = DependencyProperty.Register( nameof(DisplayMessage), typeof(string), typeof(UCMessageDialogEx), new FrameworkPropertyMetadata( string.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); public string DisplayMessage { get { return (string)GetValue(DisplayMessageProperty); } set { SetValue(DisplayMessageProperty, value); } } public bool ApplyTranslateForMessage = true; public Visibility MessageVisiblility { get => string.IsNullOrEmpty(Message) ? Visibility.Collapsed : Visibility.Visible; } public Visibility ControlVisiblility { get; private set; } private string mResult = null; private void UpdateToken() { if (ApplyTranslateForTitle) { DisplayTitle = Application.Current.FindStrToken(TitleText); } else { DisplayTitle = TitleText; } if (ApplyTranslateForButtonName) { DisplayButtonName1 = Application.Current.FindStrToken(ButtonName1); DisplayButtonName2 = Application.Current.FindStrToken(ButtonName2); DisplayButtonName3 = Application.Current.FindStrToken(ButtonName3); } else { DisplayButtonName1 = ButtonName1; DisplayButtonName2 = ButtonName2; DisplayButtonName3 = ButtonName3; } if (ApplyTranslateForMessage) { DisplayMessage = Application.Current.FindStrToken(Message); } else { DisplayMessage = Message; } //Binding으로 처리 mTxtTitle.Text = DisplayTitle; mBtn1.Content = DisplayButtonName1; mBtn2.Content = DisplayButtonName2; mBtn3.Content = DisplayButtonName3; mTxtMessage.Text = DisplayMessage; } protected UCMessageDialogEx(string title, string message = "", ContentControl control = null, string buttonName1 = "", string buttonName2 = "", string buttonName3 = "", bool translateTitle = true, bool translateButtonName = true, bool translateMessage = true, double messageFontSize = 14) { InitializeComponent(); TitleText = title; ApplyTranslateForTitle = translateTitle; ApplyTranslateForButtonName = translateButtonName; ApplyTranslateForMessage = translateMessage; ButtonName1 = buttonName1; ButtonName2 = buttonName2; ButtonName3 = buttonName3; mResult = null; if (control != null) { mBorderControl.Child = control; } Message = message; mBtn1.Visibility = !String.IsNullOrEmpty(buttonName1) ? Visibility.Visible : Visibility.Collapsed; mBtn2.Visibility = !String.IsNullOrEmpty(buttonName2) ? Visibility.Visible : Visibility.Collapsed; mBtn3.Visibility = !String.IsNullOrEmpty(buttonName3) ? Visibility.Visible : Visibility.Collapsed; mBorderControl.Visibility = (control != null || !String.IsNullOrEmpty(Message)) ? Visibility.Visible : Visibility.Collapsed; mTxtMessage.Visibility = !string.IsNullOrEmpty(message) ? Visibility.Visible : Visibility.Collapsed; mTxtMessage.FontSize = messageFontSize; UpdateToken(); Application.Current.AuroraEnv().EventObservable.AsObservable(AuroraSysEvent.SYS_LANGUAGE_CHANGED).Subscribe(_ => { Application.Current.Dispatcher.Invoke(delegate { UpdateToken(); }); }); } private string Show(Window parent) { DialogUtil.ShowDlg(this, parent); return mResult; } public static string Show(Window parent, string title, string message = "", ContentControl control = null, string buttonName1 = "", string buttonName2 = "", string buttonName3 = "", bool translateTitle = true, bool translateButtonName = true, bool translateMessage = true, double messageFontSize = 14) { return new UCMessageDialogEx(title, message, control, buttonName1, buttonName2, buttonName3, translateTitle, translateButtonName, translateMessage, messageFontSize).Show(parent); } private void Click_Button1(object sender, RoutedEventArgs e) { // Default : OK mResult = ButtonName1; Close(); } private void Click_Button2(object sender, RoutedEventArgs e) { // Default : Cancel mResult = ButtonName2; Close(); } private void Click_Button3(object sender, RoutedEventArgs e) { // Default : Optional mResult = ButtonName3; Close(); } } }