236 lines
8.9 KiB
C#
236 lines
8.9 KiB
C#
/*
|
|
* 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
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for UCMessageDialogEx.xaml
|
|
/// </summary>
|
|
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();
|
|
}
|
|
}
|
|
}
|