mirror of
https://github.com/cyanfish/naps2.git
synced 2024-10-26 17:11:21 +03:00
Use IIconProvider more for higher-resolution icons as needed
This commit is contained in:
parent
1f2f7ed984
commit
35b2e37fee
@ -39,10 +39,11 @@ public class GtkDesktopForm : DesktopForm
|
||||
IDesktopSubFormController desktopSubFormController,
|
||||
Lazy<DesktopCommands> commands,
|
||||
IDarkModeProvider darkModeProvider,
|
||||
Sidebar sidebar)
|
||||
Sidebar sidebar,
|
||||
IIconProvider iconProvider)
|
||||
: base(config, keyboardShortcuts, notificationManager, cultureHelper, colorScheme, profileManager, imageList,
|
||||
thumbnailController, thumbnailProvider, desktopController, desktopScanController, imageListActions,
|
||||
imageListViewBehavior, desktopFormProvider, desktopSubFormController, commands, sidebar)
|
||||
imageListViewBehavior, desktopFormProvider, desktopSubFormController, commands, sidebar, iconProvider)
|
||||
{
|
||||
((GtkDarkModeProvider) darkModeProvider).StyleContext =
|
||||
Eto.Forms.Gtk3Helpers.ToNative(this).StyleContext;
|
||||
|
@ -8,24 +8,21 @@ public class MacIconProvider : IIconProvider
|
||||
private static readonly Dictionary<string, string> IconMap = new()
|
||||
{
|
||||
{ "control_play_blue", "play" },
|
||||
{ "control_play_blue_small", "play" },
|
||||
{ "add_small", "plus.circle" },
|
||||
{ "pencil_small", "pencil" },
|
||||
{ "add", "plus.circle" },
|
||||
{ "pencil", "pencil" },
|
||||
{ "cross", "trash" },
|
||||
{ "cross_small", "xmark" },
|
||||
{ "accept_small", "checkmark.circle" },
|
||||
{ "accept", "checkmark.circle" },
|
||||
{ "wireless16", "wifi" },
|
||||
{ "blueprints", "list.bullet" },
|
||||
{ "folder_picture", "folder" },
|
||||
{ "diskette", "square.and.arrow.down" },
|
||||
{ "zoom", "viewfinder" },
|
||||
{ "zoom_small", "viewfinder" },
|
||||
{ "arrow_rotate_anticlockwise", "arrow.counterclockwise" },
|
||||
{ "arrow_rotate_anticlockwise_small", "arrow.counterclockwise" },
|
||||
{ "arrow_rotate_clockwise_small", "arrow.clockwise" },
|
||||
{ "arrow_switch_small", "arrow.2.squarepath" },
|
||||
{ "arrow_up_small", "arrow.up" },
|
||||
{ "arrow_down_small", "arrow.down" },
|
||||
{ "arrow_rotate_clockwise", "arrow.clockwise" },
|
||||
{ "arrow_switch", "arrow.2.squarepath" },
|
||||
{ "arrow_up", "arrow.up" },
|
||||
{ "arrow_down", "arrow.down" },
|
||||
{ "arrow_left", "arrow.left" },
|
||||
{ "arrow_right", "arrow.right" },
|
||||
{ "transform_crop", "crop" },
|
||||
@ -41,9 +38,9 @@ public class MacIconProvider : IIconProvider
|
||||
{ "pictures", "photo" },
|
||||
{ "document", "doc.text" },
|
||||
{ "split", "squareshape.split.2x2.dotted" },
|
||||
{ "text_align_justify_small", "text.justify" },
|
||||
{ "large_tiles_small", "square.grid.2x2" },
|
||||
{ "exclamation_small", "exclamationmark.triangle" },
|
||||
{ "text_align_justify", "text.justify" },
|
||||
{ "large_tiles", "square.grid.2x2" },
|
||||
{ "exclamation", "exclamationmark.triangle" },
|
||||
{ "application_side_list", "sidebar.left" },
|
||||
// TODO: Consider these
|
||||
// { "ask", "questionmark" },
|
||||
@ -57,7 +54,7 @@ public class MacIconProvider : IIconProvider
|
||||
_defaultIconProvider = defaultIconProvider;
|
||||
}
|
||||
|
||||
public Image? GetIcon(string name, bool oversized = false)
|
||||
public Bitmap? GetIcon(string name, bool oversized = false)
|
||||
{
|
||||
if (!OperatingSystem.IsMacOSVersionAtLeast(11) && name == "arrow_rotate_anticlockwise")
|
||||
{
|
||||
@ -65,16 +62,23 @@ public class MacIconProvider : IIconProvider
|
||||
// TODO: Also maybe map other icons to 16x16 versions (e.g. control_play_blue) for better rendering
|
||||
return _defaultIconProvider.GetIcon("arrow_rotate_anticlockwise_small");
|
||||
}
|
||||
if (OperatingSystem.IsMacOSVersionAtLeast(11) && IconMap.ContainsKey(name))
|
||||
if (OperatingSystem.IsMacOSVersionAtLeast(11))
|
||||
{
|
||||
var symbol = NSImage.GetSystemSymbol(IconMap[name], null);
|
||||
if (symbol != null)
|
||||
if (!IconMap.ContainsKey(name) && name.EndsWith("_small"))
|
||||
{
|
||||
if (oversized)
|
||||
name = name.Substring(0, name.Length - 6);
|
||||
}
|
||||
if (IconMap.ContainsKey(name))
|
||||
{
|
||||
var symbol = NSImage.GetSystemSymbol(IconMap[name], null);
|
||||
if (symbol != null)
|
||||
{
|
||||
symbol = symbol.GetImage(NSImageSymbolConfiguration.Create(32, 0.1));
|
||||
if (oversized)
|
||||
{
|
||||
symbol = symbol.GetImage(NSImageSymbolConfiguration.Create(32, 0.1));
|
||||
}
|
||||
return new Bitmap(new BitmapHandler(symbol));
|
||||
}
|
||||
return new Bitmap(new BitmapHandler(symbol));
|
||||
}
|
||||
}
|
||||
return _defaultIconProvider.GetIcon(name);
|
||||
|
@ -29,10 +29,11 @@ public class MacDesktopForm : DesktopForm
|
||||
DesktopFormProvider desktopFormProvider,
|
||||
IDesktopSubFormController desktopSubFormController,
|
||||
Lazy<DesktopCommands> commands,
|
||||
Sidebar sidebar)
|
||||
Sidebar sidebar,
|
||||
IIconProvider iconProvider)
|
||||
: base(config, keyboardShortcuts, notificationManager, cultureHelper, colorScheme, profileManager, imageList,
|
||||
thumbnailController, thumbnailProvider, desktopController, desktopScanController, imageListActions,
|
||||
imageListViewBehavior, desktopFormProvider, desktopSubFormController, commands, sidebar)
|
||||
imageListViewBehavior, desktopFormProvider, desktopSubFormController, commands, sidebar, iconProvider)
|
||||
{
|
||||
// For retina screens
|
||||
_thumbnailController.Oversample = 2.0;
|
||||
|
@ -40,10 +40,11 @@ public class WinFormsDesktopForm : DesktopForm
|
||||
DesktopFormProvider desktopFormProvider,
|
||||
IDesktopSubFormController desktopSubFormController,
|
||||
Lazy<DesktopCommands> commands,
|
||||
Sidebar sidebar)
|
||||
Sidebar sidebar,
|
||||
IIconProvider iconProvider)
|
||||
: base(config, keyboardShortcuts, notificationManager, cultureHelper, colorScheme, profileManager, imageList,
|
||||
thumbnailController, thumbnailProvider, desktopController, desktopScanController, imageListActions,
|
||||
imageListViewBehavior, desktopFormProvider, desktopSubFormController, commands, sidebar)
|
||||
imageListViewBehavior, desktopFormProvider, desktopSubFormController, commands, sidebar, iconProvider)
|
||||
{
|
||||
_form = this.ToNative();
|
||||
_form.FormClosing += OnFormClosing;
|
||||
@ -172,7 +173,7 @@ public class WinFormsDesktopForm : DesktopForm
|
||||
TextImageRelation = WF.TextImageRelation.ImageBeforeText,
|
||||
ImageAlign = ContentAlignment.MiddleLeft,
|
||||
TextAlign = ContentAlignment.MiddleLeft,
|
||||
Image = Image.FromStream(new MemoryStream(Icons.control_play_blue_small))
|
||||
Image = _iconProvider.GetIcon("control_play_blue_small").ToSD()
|
||||
};
|
||||
item.Click += (_, _) => _desktopScanController.ScanWithProfile((ScanProfile) item.Tag!);
|
||||
toolbarItems.Add(item);
|
||||
|
@ -15,7 +15,7 @@ public class WinFormsIconProvider : IIconProvider
|
||||
_desktopFormProvider = desktopFormProvider;
|
||||
}
|
||||
|
||||
public Image? GetIcon(string name, bool oversized = false)
|
||||
public Bitmap? GetIcon(string name, bool oversized = false)
|
||||
{
|
||||
var dpi = _desktopFormProvider.DesktopForm.ToNative().DeviceDpi;
|
||||
|
||||
|
@ -4,7 +4,7 @@ namespace NAPS2.EtoForms;
|
||||
|
||||
public class DefaultIconProvider : IIconProvider
|
||||
{
|
||||
public Image? GetIcon(string name, bool oversized = false)
|
||||
public Bitmap? GetIcon(string name, bool oversized = false)
|
||||
{
|
||||
var data = (byte[]?) Icons.ResourceManager.GetObject(name);
|
||||
if (data == null) return null;
|
||||
|
@ -37,7 +37,7 @@ public class Sidebar
|
||||
{
|
||||
var profile = _profileManager.Profiles.First();
|
||||
|
||||
_deviceSelectorWidget = new DeviceSelectorWidget(_scanPerformer, _deviceCapsCache, parentWindow)
|
||||
_deviceSelectorWidget = new DeviceSelectorWidget(_scanPerformer, _deviceCapsCache, _iconProvider, parentWindow)
|
||||
{
|
||||
ShowChooseDevice = false,
|
||||
ProfileFunc = () => profile
|
||||
|
@ -65,11 +65,11 @@ public static class EtoExtensions
|
||||
return image;
|
||||
}
|
||||
|
||||
public static Image ResizeTo(this Image image, int size) => ResizeTo(image, new Size(size, size));
|
||||
public static Bitmap ResizeTo(this Bitmap image, int size) => ResizeTo(image, new Size(size, size));
|
||||
|
||||
public static Image ResizeTo(this Image image, int width, int height) => ResizeTo(image, new Size(width, height));
|
||||
public static Bitmap ResizeTo(this Bitmap image, int width, int height) => ResizeTo(image, new Size(width, height));
|
||||
|
||||
public static Image ResizeTo(this Image image, Size size)
|
||||
public static Bitmap ResizeTo(this Bitmap image, Size size)
|
||||
{
|
||||
if (image.Width != size.Width || image.Height != size.Height)
|
||||
{
|
||||
|
@ -4,5 +4,5 @@ namespace NAPS2.EtoForms;
|
||||
|
||||
public interface IIconProvider
|
||||
{
|
||||
Image? GetIcon(string name, bool oversized = false);
|
||||
Bitmap? GetIcon(string name, bool oversized = false);
|
||||
}
|
@ -17,9 +17,12 @@ public class AboutForm : EtoDialogBase
|
||||
private readonly UpdateChecker _updateChecker;
|
||||
private readonly CheckBox _enableDebugLogging = C.CheckBox(UiStrings.EnableDebugLogging);
|
||||
|
||||
public AboutForm(Naps2Config config, UpdateChecker updateChecker)
|
||||
public AboutForm(Naps2Config config, IIconProvider iconProvider, UpdateChecker updateChecker)
|
||||
: base(config)
|
||||
{
|
||||
Title = UiStrings.AboutFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("information_small"));
|
||||
|
||||
_donateButton = EtoPlatform.Current.AccessibleImageButton(
|
||||
Icons.btn_donate_LG.ToEtoImage(),
|
||||
UiStrings.Donate,
|
||||
@ -35,9 +38,6 @@ public class AboutForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.AboutFormTitle;
|
||||
Icon = new Icon(1f, Icons.information_small.ToEtoImage());
|
||||
|
||||
FormStateController.Resizable = false;
|
||||
FormStateController.RestoreFormState = false;
|
||||
|
||||
|
@ -33,8 +33,11 @@ public class AdvancedProfileForm : EtoDialogBase
|
||||
private readonly CheckBox _twainProgress = new() { Text = UiStrings.ShowNativeTwainProgress };
|
||||
private readonly Button _restoreDefaults = new() { Text = UiStrings.RestoreDefaults };
|
||||
|
||||
public AdvancedProfileForm(Naps2Config config) : base(config)
|
||||
public AdvancedProfileForm(Naps2Config config, IIconProvider iconProvider) : base(config)
|
||||
{
|
||||
Title = UiStrings.AdvancedProfileFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("blueprints_small"));
|
||||
|
||||
_restoreDefaults.Click += RestoreDefaults_Click;
|
||||
_maximumQuality.CheckedChanged += MaximumQuality_CheckedChanged;
|
||||
_excludeBlank.CheckedChanged += ExcludeBlank_CheckedChanged;
|
||||
@ -58,9 +61,6 @@ public class AdvancedProfileForm : EtoDialogBase
|
||||
UpdateValues(ScanProfile!);
|
||||
UpdateEnabled();
|
||||
|
||||
Title = UiStrings.AdvancedProfileFormTitle;
|
||||
Icon = new Icon(1f, Icons.blueprints_small.ToEtoImage());
|
||||
|
||||
FormStateController.DefaultExtraLayoutSize = new Size(60, 0);
|
||||
FormStateController.FixedHeightLayout = true;
|
||||
|
||||
|
@ -10,16 +10,16 @@ public class AuthorizeForm : EtoDialogBase
|
||||
private readonly ErrorOutput _errorOutput;
|
||||
private CancellationTokenSource? _cancelTokenSource;
|
||||
|
||||
public AuthorizeForm(Naps2Config config, ErrorOutput errorOutput) : base(config)
|
||||
public AuthorizeForm(Naps2Config config, IIconProvider iconProvider, ErrorOutput errorOutput) : base(config)
|
||||
{
|
||||
Title = UiStrings.AuthorizeFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("key_small"));
|
||||
|
||||
_errorOutput = errorOutput;
|
||||
}
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.AuthorizeFormTitle;
|
||||
Icon = new Icon(1f, Icons.key_small.ToEtoImage());
|
||||
|
||||
FormStateController.FixedHeightLayout = true;
|
||||
FormStateController.RestoreFormState = false;
|
||||
FormStateController.Resizable = false;
|
||||
|
@ -56,6 +56,9 @@ public class BatchScanForm : EtoDialogBase
|
||||
IBatchScanPerformer batchScanPerformer, ErrorOutput errorOutput, IIconProvider iconProvider)
|
||||
: base(config)
|
||||
{
|
||||
Title = UiStrings.BatchScanFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("application_cascade_small"));
|
||||
|
||||
_profileManager = profileManager;
|
||||
_batchScanPerformer = batchScanPerformer;
|
||||
_errorOutput = errorOutput;
|
||||
@ -104,9 +107,6 @@ public class BatchScanForm : EtoDialogBase
|
||||
!(Config.Get(c => c.NoUserProfiles) && _profileManager.Profiles.Any(x => x.IsLocked));
|
||||
UpdateUIFromSettings();
|
||||
|
||||
Title = UiStrings.BatchScanFormTitle;
|
||||
Icon = new Icon(1f, Icons.application_cascade.ToEtoImage());
|
||||
|
||||
FormStateController.FixedHeightLayout = true;
|
||||
AbortButton = _cancel;
|
||||
|
||||
|
@ -11,10 +11,10 @@ public class BlackWhiteForm : UnaryImageFormBase
|
||||
IIconProvider iconProvider) :
|
||||
base(config, imageList, thumbnailController)
|
||||
{
|
||||
Icon = new Icon(1f, Icons.contrast_high.ToEtoImage());
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("contrast_high_small"));
|
||||
Title = UiStrings.BlackAndWhite;
|
||||
|
||||
_thresholdSlider.Icon = iconProvider.GetIcon("contrast_high");
|
||||
_thresholdSlider.Icon = iconProvider.GetIcon("contrast_high_small");
|
||||
Sliders = [_thresholdSlider];
|
||||
// BlackWhiteTransform is not commutative with scaling
|
||||
CanScaleWorkingImage = false;
|
||||
|
@ -12,11 +12,11 @@ public class BrightContForm : UnaryImageFormBase
|
||||
IIconProvider iconProvider) :
|
||||
base(config, imageList, thumbnailController)
|
||||
{
|
||||
Icon = new Icon(1f, Icons.contrast_with_sun.ToEtoImage());
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("contrast_with_sun_small"));
|
||||
Title = UiStrings.BrightnessContrast;
|
||||
|
||||
_brightnessSlider.Icon = iconProvider.GetIcon("weather_sun");
|
||||
_contrastSlider.Icon = iconProvider.GetIcon("contrast");
|
||||
_brightnessSlider.Icon = iconProvider.GetIcon("weather_sun_small");
|
||||
_contrastSlider.Icon = iconProvider.GetIcon("contrast_small");
|
||||
Sliders = [_brightnessSlider, _contrastSlider];
|
||||
}
|
||||
|
||||
|
@ -19,10 +19,11 @@ public class CombineForm : ImageFormBase
|
||||
IIconProvider iconProvider, ScanningContext scanningContext) :
|
||||
base(config, imageList, thumbnailController)
|
||||
{
|
||||
Title = UiStrings.Combine;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("combine_small"));
|
||||
|
||||
_iconProvider = iconProvider;
|
||||
_scanningContext = scanningContext;
|
||||
Icon = new Icon(1f, Icons.combine.ToEtoImage());
|
||||
Title = UiStrings.Combine;
|
||||
}
|
||||
|
||||
private UiImage Image1 { get; set; } = null!;
|
||||
@ -37,23 +38,25 @@ public class CombineForm : ImageFormBase
|
||||
C.Filler(),
|
||||
L.Row(
|
||||
L.Row(
|
||||
C.IconButton(_iconProvider.GetIcon("shape_align_left")!, () => SetHOffset(0)),
|
||||
C.IconButton(_iconProvider.GetIcon("shape_align_center")!, () => SetHOffset(0.5)),
|
||||
C.IconButton(_iconProvider.GetIcon("shape_align_right")!, () => SetHOffset(1.0))
|
||||
C.IconButton(_iconProvider.GetIcon("shape_align_left_small")!, () => SetHOffset(0)),
|
||||
C.IconButton(_iconProvider.GetIcon("shape_align_center_small")!, () => SetHOffset(0.5)),
|
||||
C.IconButton(_iconProvider.GetIcon("shape_align_right_small")!, () => SetHOffset(1.0))
|
||||
).Visible(_alignVis),
|
||||
C.IconButton(_iconProvider.GetIcon("combine_hor")!, () => SetOrientation(CombineOrientation.Horizontal))
|
||||
C.IconButton(_iconProvider.GetIcon("combine_hor_small")!,
|
||||
() => SetOrientation(CombineOrientation.Horizontal))
|
||||
.Padding(left: 20),
|
||||
C.IconButton(_iconProvider.GetIcon("switch_ver")!, SwapImages)
|
||||
C.IconButton(_iconProvider.GetIcon("switch_ver_small")!, SwapImages)
|
||||
).Visible(!_horizontalOrientationVis),
|
||||
L.Row(
|
||||
L.Row(
|
||||
C.IconButton(_iconProvider.GetIcon("shape_align_top")!, () => SetVOffset(0)),
|
||||
C.IconButton(_iconProvider.GetIcon("shape_align_middle")!, () => SetVOffset(0.5)),
|
||||
C.IconButton(_iconProvider.GetIcon("shape_align_bottom")!, () => SetVOffset(1.0))
|
||||
C.IconButton(_iconProvider.GetIcon("shape_align_top_small")!, () => SetVOffset(0)),
|
||||
C.IconButton(_iconProvider.GetIcon("shape_align_middle_small")!, () => SetVOffset(0.5)),
|
||||
C.IconButton(_iconProvider.GetIcon("shape_align_bottom_small")!, () => SetVOffset(1.0))
|
||||
).Visible(_alignVis),
|
||||
C.IconButton(_iconProvider.GetIcon("combine_ver")!, () => SetOrientation(CombineOrientation.Vertical))
|
||||
C.IconButton(_iconProvider.GetIcon("combine_ver_small")!,
|
||||
() => SetOrientation(CombineOrientation.Vertical))
|
||||
.Padding(left: 20),
|
||||
C.IconButton(_iconProvider.GetIcon("switch_hor")!, SwapImages)
|
||||
C.IconButton(_iconProvider.GetIcon("switch_hor_small")!, SwapImages)
|
||||
).Visible(_horizontalOrientationVis),
|
||||
C.Filler()
|
||||
);
|
||||
|
@ -32,12 +32,13 @@ public class CropForm : UnaryImageFormBase
|
||||
private bool _freeformActive;
|
||||
|
||||
public CropForm(Naps2Config config, UiImageList imageList, ThumbnailController thumbnailController,
|
||||
ColorScheme colorScheme) :
|
||||
ColorScheme colorScheme, IIconProvider iconProvider) :
|
||||
base(config, imageList, thumbnailController)
|
||||
{
|
||||
_colorScheme = colorScheme;
|
||||
Icon = new Icon(1f, Icons.transform_crop.ToEtoImage());
|
||||
Title = UiStrings.Crop;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("transform_crop_small"));
|
||||
|
||||
_colorScheme = colorScheme;
|
||||
|
||||
OverlayBorderSize = HANDLE_WIDTH;
|
||||
Overlay.MouseDown += Overlay_MouseDown;
|
||||
|
@ -45,7 +45,7 @@ public class DesktopCommands
|
||||
BatchScan = new ActionCommand(desktopSubFormController.ShowBatchScanForm)
|
||||
{
|
||||
Text = UiStrings.BatchScan,
|
||||
Image = iconProvider.GetIcon("application_cascade")
|
||||
Image = iconProvider.GetIcon("application_cascade_small")
|
||||
};
|
||||
ScannerSharing = new ActionCommand(desktopSubFormController.ShowScannerSharingForm)
|
||||
{
|
||||
@ -69,13 +69,11 @@ public class DesktopCommands
|
||||
};
|
||||
SaveAll = new ActionCommand(_imageListActions.SaveAllAsPdfOrImages)
|
||||
{
|
||||
Text = UiStrings.SaveAll,
|
||||
Image = iconProvider.GetIcon("diskette")
|
||||
Text = UiStrings.SaveAll
|
||||
};
|
||||
SaveSelected = new ActionCommand(_imageListActions.SaveSelectedAsPdfOrImages)
|
||||
{
|
||||
Text = UiStrings.SaveSelected,
|
||||
Image = iconProvider.GetIcon("diskette")
|
||||
Text = UiStrings.SaveSelected
|
||||
};
|
||||
SavePdf = new ActionCommand(desktopController.SavePdf)
|
||||
{
|
||||
@ -146,43 +144,43 @@ public class DesktopCommands
|
||||
Crop = new ActionCommand(desktopSubFormController.ShowCropForm)
|
||||
{
|
||||
Text = UiStrings.Crop,
|
||||
Image = iconProvider.GetIcon("transform_crop")
|
||||
Image = iconProvider.GetIcon("transform_crop_small")
|
||||
};
|
||||
BrightCont = new ActionCommand(desktopSubFormController.ShowBrightnessContrastForm)
|
||||
{
|
||||
Text = UiStrings.BrightnessContrast,
|
||||
Image = iconProvider.GetIcon("contrast_with_sun")
|
||||
Image = iconProvider.GetIcon("contrast_with_sun_small")
|
||||
};
|
||||
HueSat = new ActionCommand(desktopSubFormController.ShowHueSaturationForm)
|
||||
{
|
||||
Text = UiStrings.HueSaturation,
|
||||
Image = iconProvider.GetIcon("color_management")
|
||||
Image = iconProvider.GetIcon("color_management_small")
|
||||
};
|
||||
BlackWhite = new ActionCommand(desktopSubFormController.ShowBlackWhiteForm)
|
||||
{
|
||||
Text = UiStrings.BlackAndWhite,
|
||||
Image = iconProvider.GetIcon("contrast_high")
|
||||
Image = iconProvider.GetIcon("contrast_high_small")
|
||||
};
|
||||
Sharpen = new ActionCommand(desktopSubFormController.ShowSharpenForm)
|
||||
{
|
||||
Text = UiStrings.Sharpen,
|
||||
Image = iconProvider.GetIcon("sharpen")
|
||||
Image = iconProvider.GetIcon("sharpen_small")
|
||||
};
|
||||
// TODO: Make this an image form with options
|
||||
DocumentCorrection = new ActionCommand(imageListActions.DocumentCorrection)
|
||||
{
|
||||
Text = UiStrings.DocumentCorrection,
|
||||
Image = iconProvider.GetIcon("document")
|
||||
Image = iconProvider.GetIcon("document_small")
|
||||
};
|
||||
Split = new ActionCommand(desktopSubFormController.ShowSplitForm)
|
||||
{
|
||||
Text = UiStrings.Split,
|
||||
Image = iconProvider.GetIcon("split")
|
||||
Image = iconProvider.GetIcon("split_small")
|
||||
};
|
||||
Combine = new ActionCommand(desktopSubFormController.ShowCombineForm)
|
||||
{
|
||||
Text = UiStrings.Combine,
|
||||
Image = iconProvider.GetIcon("combine")
|
||||
Image = iconProvider.GetIcon("combine_small")
|
||||
};
|
||||
ResetImage = new ActionCommand(desktopController.ResetImage)
|
||||
{
|
||||
@ -290,12 +288,12 @@ public class DesktopCommands
|
||||
ZoomIn = new ActionCommand(() => thumbnailController.StepSize(1))
|
||||
{
|
||||
Text = UiStrings.ZoomIn,
|
||||
Image = iconProvider.GetIcon("zoom_in")
|
||||
Image = iconProvider.GetIcon("zoom_in_small")
|
||||
};
|
||||
ZoomOut = new ActionCommand(() => thumbnailController.StepSize(-1))
|
||||
{
|
||||
Text = UiStrings.ZoomOut,
|
||||
Image = iconProvider.GetIcon("zoom_out")
|
||||
Image = iconProvider.GetIcon("zoom_out_small")
|
||||
};
|
||||
SelectAll = new ActionCommand(imageListActions.SelectAll)
|
||||
{
|
||||
@ -304,27 +302,27 @@ public class DesktopCommands
|
||||
Copy = new ActionCommand(desktopController.Copy)
|
||||
{
|
||||
Text = UiStrings.Copy,
|
||||
Image = iconProvider.GetIcon("copy")
|
||||
Image = iconProvider.GetIcon("copy_small")
|
||||
};
|
||||
Paste = new ActionCommand(desktopController.Paste)
|
||||
{
|
||||
Text = UiStrings.Paste,
|
||||
Image = iconProvider.GetIcon("paste")
|
||||
Image = iconProvider.GetIcon("paste_small")
|
||||
};
|
||||
Undo = new ActionCommand(imageListActions.Undo)
|
||||
{
|
||||
Text = UiStrings.Undo,
|
||||
Image = iconProvider.GetIcon("undo")
|
||||
Image = iconProvider.GetIcon("undo_small")
|
||||
};
|
||||
Redo = new ActionCommand(imageListActions.Redo)
|
||||
{
|
||||
Text = UiStrings.Redo,
|
||||
Image = iconProvider.GetIcon("redo")
|
||||
Image = iconProvider.GetIcon("redo_small")
|
||||
};
|
||||
ToggleSidebar = new ActionCommand(() => _desktopFormProvider.DesktopForm.ToggleSidebar())
|
||||
{
|
||||
Text = UiStrings.ToggleSidebar,
|
||||
Image = iconProvider.GetIcon("application_side_list")
|
||||
Image = iconProvider.GetIcon("application_side_list_small")
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -28,6 +28,8 @@ public abstract class DesktopForm : EtoFormBase
|
||||
private readonly IDesktopSubFormController _desktopSubFormController;
|
||||
private readonly ImageTransfer _imageTransfer = new();
|
||||
private readonly Lazy<DesktopCommands> _commands;
|
||||
private readonly Sidebar _sidebar;
|
||||
protected readonly IIconProvider _iconProvider;
|
||||
|
||||
protected readonly ListProvider<Command> _scanMenuCommands = new();
|
||||
private readonly ListProvider<Command> _languageMenuCommands = new();
|
||||
@ -36,7 +38,6 @@ public abstract class DesktopForm : EtoFormBase
|
||||
private readonly NotificationArea _notificationArea;
|
||||
protected IListView<UiImage> _listView;
|
||||
private ImageListSyncer? _imageListSyncer;
|
||||
private readonly Sidebar _sidebar;
|
||||
|
||||
public DesktopForm(
|
||||
Naps2Config config,
|
||||
@ -55,8 +56,11 @@ public abstract class DesktopForm : EtoFormBase
|
||||
DesktopFormProvider desktopFormProvider,
|
||||
IDesktopSubFormController desktopSubFormController,
|
||||
Lazy<DesktopCommands> commands,
|
||||
Sidebar sidebar) : base(config)
|
||||
Sidebar sidebar,
|
||||
IIconProvider iconProvider) : base(config)
|
||||
{
|
||||
Icon = Icons.favicon.ToEtoIcon();
|
||||
|
||||
_keyboardShortcuts = keyboardShortcuts;
|
||||
_notificationManager = notificationManager;
|
||||
_cultureHelper = cultureHelper;
|
||||
@ -71,6 +75,7 @@ public abstract class DesktopForm : EtoFormBase
|
||||
_desktopFormProvider = desktopFormProvider;
|
||||
_desktopSubFormController = desktopSubFormController;
|
||||
_sidebar = sidebar;
|
||||
_iconProvider = iconProvider;
|
||||
_commands = commands;
|
||||
|
||||
_desktopFormProvider.DesktopForm = this;
|
||||
@ -111,8 +116,6 @@ public abstract class DesktopForm : EtoFormBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Icon = Icons.favicon.ToEtoIcon();
|
||||
|
||||
FormStateController.AutoLayoutSize = false;
|
||||
FormStateController.DefaultClientSize = new Size(1210, 600);
|
||||
|
||||
@ -526,7 +529,7 @@ public abstract class DesktopForm : EtoFormBase
|
||||
{
|
||||
// TODO: Does this need to change on non-WinForms?
|
||||
MenuText = profile.DisplayName.Replace("&", "&&"),
|
||||
Image = profile == defaultProfile ? Icons.accept_small.ToEtoImage() : null
|
||||
Image = profile == defaultProfile ? _iconProvider.GetIcon("accept_small") : null
|
||||
})
|
||||
.ToImmutableList<Command>();
|
||||
for (int i = 0; i < commandList.Count; i++)
|
||||
|
@ -14,8 +14,12 @@ public class DownloadProgressForm : EtoDialogBase
|
||||
private readonly ProgressBar _totalProgressBar = new();
|
||||
private readonly ProgressBar _fileProgressBar = new();
|
||||
|
||||
public DownloadProgressForm(ScanningContext scanningContext, Naps2Config config) : base(config)
|
||||
public DownloadProgressForm(ScanningContext scanningContext, Naps2Config config, IIconProvider iconProvider) :
|
||||
base(config)
|
||||
{
|
||||
Title = UiStrings.DownloadProgressFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("text_small"));
|
||||
|
||||
Controller = new DownloadController(scanningContext);
|
||||
Controller.DownloadError += OnDownloadError;
|
||||
Controller.DownloadComplete += (_, _) => Close();
|
||||
@ -24,16 +28,14 @@ public class DownloadProgressForm : EtoDialogBase
|
||||
|
||||
private void OnDownloadError(object? sender, EventArgs e)
|
||||
{
|
||||
MessageBox.Show(MiscResources.FilesCouldNotBeDownloaded, MiscResources.DownloadError, MessageBoxButtons.OK, MessageBoxType.Error);
|
||||
MessageBox.Show(MiscResources.FilesCouldNotBeDownloaded, MiscResources.DownloadError, MessageBoxButtons.OK,
|
||||
MessageBoxType.Error);
|
||||
}
|
||||
|
||||
public DownloadController Controller { get; }
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.DownloadProgressFormTitle;
|
||||
Icon = new Icon(1f, Icons.text_small.ToEtoImage());
|
||||
|
||||
FormStateController.RestoreFormState = false;
|
||||
|
||||
LayoutController.Content = L.Column(
|
||||
@ -62,8 +64,9 @@ public class DownloadProgressForm : EtoDialogBase
|
||||
var cTot = Controller.CurrentFileSize;
|
||||
_totalStatus.Text = string.Format(MiscResources.FilesProgressFormat, f, fTot);
|
||||
_totalProgressBar.MaxValue = fTot * 1000;
|
||||
_totalProgressBar.Value = f * 1000 + (cTot == 0 ? 0 : (int)(c * 1e3 / cTot));
|
||||
_fileStatus.Text = string.Format(MiscResources.SizeProgress, (c / 1e6).ToString("f1"), (cTot / 1e6).ToString("f1"));
|
||||
_totalProgressBar.Value = f * 1000 + (cTot == 0 ? 0 : (int) (c * 1e3 / cTot));
|
||||
_fileStatus.Text =
|
||||
string.Format(MiscResources.SizeProgress, (c / 1e6).ToString("f1"), (cTot / 1e6).ToString("f1"));
|
||||
if (c > 0)
|
||||
{
|
||||
_fileProgressBar.MaxValue = (int) cTot;
|
||||
@ -76,5 +79,4 @@ public class DownloadProgressForm : EtoDialogBase
|
||||
base.OnClosing(e);
|
||||
Controller.Stop();
|
||||
}
|
||||
|
||||
}
|
@ -39,12 +39,16 @@ public class EditProfileForm : EtoDialogBase
|
||||
private CancellationTokenSource? _updateCapsCts;
|
||||
|
||||
public EditProfileForm(Naps2Config config, IScanPerformer scanPerformer, ErrorOutput errorOutput,
|
||||
ProfileNameTracker profileNameTracker, DeviceCapsCache deviceCapsCache) : base(config)
|
||||
ProfileNameTracker profileNameTracker, DeviceCapsCache deviceCapsCache,
|
||||
IIconProvider iconProvider) : base(config)
|
||||
{
|
||||
Title = UiStrings.EditProfileFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("blueprints_small"));
|
||||
|
||||
_errorOutput = errorOutput;
|
||||
_profileNameTracker = profileNameTracker;
|
||||
_deviceCapsCache = deviceCapsCache;
|
||||
_deviceSelectorWidget = new(scanPerformer, deviceCapsCache, this)
|
||||
_deviceSelectorWidget = new(scanPerformer, deviceCapsCache, iconProvider, this)
|
||||
{
|
||||
ProfileFunc = GetUpdatedScanProfile,
|
||||
AllowAlwaysAsk = true
|
||||
@ -85,9 +89,6 @@ public class EditProfileForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.EditProfileFormTitle;
|
||||
Icon = new Icon(1f, Icons.blueprints_small.ToEtoImage());
|
||||
|
||||
FormStateController.DefaultExtraLayoutSize = new Size(60, 0);
|
||||
FormStateController.FixedHeightLayout = true;
|
||||
|
||||
|
@ -9,16 +9,17 @@ internal class EmailProviderForm : EtoDialogBase
|
||||
{
|
||||
private readonly EmailProviderController _controller;
|
||||
|
||||
public EmailProviderForm(Naps2Config config, EmailProviderController controller) : base(config)
|
||||
public EmailProviderForm(Naps2Config config, EmailProviderController controller, IIconProvider iconProvider) :
|
||||
base(config)
|
||||
{
|
||||
Title = UiStrings.EmailProviderFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("email_small"));
|
||||
|
||||
_controller = controller;
|
||||
}
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.EmailProviderFormTitle;
|
||||
Icon = new Icon(1f, Icons.email_small.ToEtoImage());
|
||||
|
||||
FormStateController.FixedHeightLayout = true;
|
||||
|
||||
LayoutController.DefaultSpacing = 0;
|
||||
@ -40,5 +41,4 @@ internal class EmailProviderForm : EtoDialogBase
|
||||
}
|
||||
|
||||
public bool Result { get; private set; }
|
||||
|
||||
}
|
@ -16,8 +16,12 @@ internal class EmailSettingsForm : EtoDialogBase
|
||||
private readonly CheckBox _rememberSettings = new() { Text = UiStrings.RememberTheseSettings };
|
||||
private readonly Button _restoreDefaults = new() { Text = UiStrings.RestoreDefaults };
|
||||
|
||||
public EmailSettingsForm(Naps2Config config, SystemEmailClients systemEmailClients) : base(config)
|
||||
public EmailSettingsForm(Naps2Config config, SystemEmailClients systemEmailClients, IIconProvider iconProvider) :
|
||||
base(config)
|
||||
{
|
||||
Title = UiStrings.EmailSettingsFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("email_small"));
|
||||
|
||||
_systemEmailClients = systemEmailClients;
|
||||
_attachmentName = new(this);
|
||||
|
||||
@ -29,9 +33,6 @@ internal class EmailSettingsForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.EmailSettingsFormTitle;
|
||||
Icon = new Icon(1f, Icons.email_small.ToEtoImage());
|
||||
|
||||
FormStateController.DefaultExtraLayoutSize = new Size(60, 0);
|
||||
FormStateController.FixedHeightLayout = true;
|
||||
|
||||
|
@ -5,14 +5,15 @@ namespace NAPS2.EtoForms.Ui;
|
||||
|
||||
public class ErrorForm : EtoDialogBase
|
||||
{
|
||||
private readonly ImageView _image = new() { Image = Icons.exclamation.ToEtoImage() };
|
||||
private readonly ImageView _image = new();
|
||||
private readonly Label _message = new();
|
||||
private readonly TextArea _details = new() { ReadOnly = true };
|
||||
private readonly LayoutVisibility _detailsVisibility = new(false);
|
||||
|
||||
public ErrorForm(Naps2Config config)
|
||||
public ErrorForm(Naps2Config config, IIconProvider iconProvider)
|
||||
: base(config)
|
||||
{
|
||||
_image.Image = iconProvider.GetIcon("exclamation");
|
||||
}
|
||||
|
||||
protected override void BuildLayout()
|
||||
|
@ -12,11 +12,11 @@ public class HueSatForm : UnaryImageFormBase
|
||||
IIconProvider iconProvider) :
|
||||
base(config, imageList, thumbnailController)
|
||||
{
|
||||
Icon = new Icon(1f, Icons.color_management.ToEtoImage());
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("color_management_small"));
|
||||
Title = UiStrings.HueSaturation;
|
||||
|
||||
_hueSlider.Icon = iconProvider.GetIcon("color_wheel");
|
||||
_saturationSlider.Icon = iconProvider.GetIcon("color_gradient");
|
||||
_hueSlider.Icon = iconProvider.GetIcon("color_wheel_small");
|
||||
_saturationSlider.Icon = iconProvider.GetIcon("color_gradient_small");
|
||||
Sliders = [_hueSlider, _saturationSlider];
|
||||
}
|
||||
|
||||
|
@ -16,8 +16,11 @@ public class ImageSettingsForm : EtoDialogBase
|
||||
private readonly CheckBox _rememberSettings = new() { Text = UiStrings.RememberTheseSettings };
|
||||
private readonly Button _restoreDefaults = new() { Text = UiStrings.RestoreDefaults };
|
||||
|
||||
public ImageSettingsForm(Naps2Config config, DialogHelper dialogHelper) : base(config)
|
||||
public ImageSettingsForm(Naps2Config config, DialogHelper dialogHelper, IIconProvider iconProvider) : base(config)
|
||||
{
|
||||
Title = UiStrings.ImageSettingsFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("picture_small"));
|
||||
|
||||
_defaultFilePath = new(this, dialogHelper) { ImagesOnly = true };
|
||||
|
||||
UpdateValues(Config);
|
||||
@ -29,9 +32,6 @@ public class ImageSettingsForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.ImageSettingsFormTitle;
|
||||
Icon = new Icon(1f, Icons.picture_small.ToEtoImage());
|
||||
|
||||
FormStateController.DefaultExtraLayoutSize = new Size(60, 0);
|
||||
FormStateController.FixedHeightLayout = true;
|
||||
|
||||
|
@ -14,9 +14,12 @@ public class ManualIpForm : EtoDialogBase
|
||||
|
||||
private readonly ErrorOutput _errorOutput;
|
||||
|
||||
public ManualIpForm(Naps2Config config, ErrorOutput errorOutput)
|
||||
public ManualIpForm(Naps2Config config, ErrorOutput errorOutput, IIconProvider iconProvider)
|
||||
: base(config)
|
||||
{
|
||||
Title = UiStrings.ManualIpFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("network_ip_small"));
|
||||
|
||||
_errorOutput = errorOutput;
|
||||
}
|
||||
|
||||
@ -26,9 +29,6 @@ public class ManualIpForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.ManualIpFormTitle;
|
||||
Icon = new Icon(1f, Icons.network_ip_small.ToEtoImage());
|
||||
|
||||
FormStateController.RestoreFormState = false;
|
||||
FormStateController.FixedHeightLayout = true;
|
||||
|
||||
|
@ -15,8 +15,11 @@ public class OcrDownloadForm : EtoDialogBase
|
||||
private readonly Button _downloadButton;
|
||||
|
||||
public OcrDownloadForm(Naps2Config config, TesseractLanguageManager tesseractLanguageManager,
|
||||
OcrLanguagesListViewBehavior ocrLanguagesListViewBehavior) : base(config)
|
||||
OcrLanguagesListViewBehavior ocrLanguagesListViewBehavior, IIconProvider iconProvider) : base(config)
|
||||
{
|
||||
Title = UiStrings.OcrDownloadFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("text_small"));
|
||||
|
||||
_tesseractLanguageManager = tesseractLanguageManager;
|
||||
_languageList = EtoPlatform.Current.CreateListView(ocrLanguagesListViewBehavior);
|
||||
|
||||
@ -42,9 +45,6 @@ public class OcrDownloadForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.OcrDownloadFormTitle;
|
||||
Icon = new Icon(1f, Icons.text_small.ToEtoImage());
|
||||
|
||||
FormStateController.RestoreFormState = false;
|
||||
FormStateController.DefaultExtraLayoutSize = new Size(300, 300);
|
||||
|
||||
|
@ -10,8 +10,11 @@ public class OcrMultiLangForm : EtoDialogBase
|
||||
private readonly IListView<Language> _languageList;
|
||||
|
||||
public OcrMultiLangForm(Naps2Config config, TesseractLanguageManager tesseractLanguageManager,
|
||||
OcrLanguagesListViewBehavior ocrLanguagesListViewBehavior) : base(config)
|
||||
OcrLanguagesListViewBehavior ocrLanguagesListViewBehavior, IIconProvider iconProvider) : base(config)
|
||||
{
|
||||
Title = UiStrings.OcrMultiLangFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("text_small"));
|
||||
|
||||
_languageList = EtoPlatform.Current.CreateListView(ocrLanguagesListViewBehavior);
|
||||
_languageList.SetItems(tesseractLanguageManager.InstalledLanguages.OrderBy(x => x.Name));
|
||||
}
|
||||
@ -20,9 +23,6 @@ public class OcrMultiLangForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.OcrMultiLangFormTitle;
|
||||
Icon = new Icon(1f, Icons.text_small.ToEtoImage());
|
||||
|
||||
FormStateController.RestoreFormState = false;
|
||||
FormStateController.DefaultExtraLayoutSize = new Size(150, 20);
|
||||
|
||||
|
@ -28,8 +28,12 @@ public class OcrSetupForm : EtoDialogBase
|
||||
private string? _multiLangCode;
|
||||
private bool _suppressLangChangeEvent;
|
||||
|
||||
public OcrSetupForm(Naps2Config config, TesseractLanguageManager tesseractLanguageManager) : base(config)
|
||||
public OcrSetupForm(Naps2Config config, TesseractLanguageManager tesseractLanguageManager,
|
||||
IIconProvider iconProvider) : base(config)
|
||||
{
|
||||
Title = UiStrings.OcrSetupFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("text_small"));
|
||||
|
||||
_tesseractLanguageManager = tesseractLanguageManager;
|
||||
|
||||
_enableOcr.CheckedChanged += EnableOcr_CheckedChanged;
|
||||
@ -57,9 +61,6 @@ public class OcrSetupForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.OcrSetupFormTitle;
|
||||
Icon = new Icon(1f, Icons.text_small.ToEtoImage());
|
||||
|
||||
FormStateController.Resizable = false;
|
||||
|
||||
LayoutController.Content = L.Column(
|
||||
|
@ -36,8 +36,11 @@ public class PdfSettingsForm : EtoDialogBase
|
||||
|
||||
private readonly EnumDropDownWidget<PdfCompat> _compat = new();
|
||||
|
||||
public PdfSettingsForm(Naps2Config config, DialogHelper dialogHelper) : base(config)
|
||||
public PdfSettingsForm(Naps2Config config, DialogHelper dialogHelper, IIconProvider iconProvider) : base(config)
|
||||
{
|
||||
Title = UiStrings.PdfSettingsFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("file_extension_pdf_small"));
|
||||
|
||||
_defaultFilePath = new(this, dialogHelper) { PdfOnly = true };
|
||||
_compat.Format = compat => compat switch
|
||||
{
|
||||
@ -59,9 +62,6 @@ public class PdfSettingsForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.PdfSettingsFormTitle;
|
||||
Icon = new Icon(1f, Icons.file_extension_pdf_small.ToEtoImage());
|
||||
|
||||
FormStateController.DefaultExtraLayoutSize = new Size(60, 0);
|
||||
FormStateController.FixedHeightLayout = true;
|
||||
|
||||
|
@ -18,6 +18,9 @@ public class PreviewForm : EtoDialogBase
|
||||
public PreviewForm(Naps2Config config, DesktopCommands desktopCommands, UiImageList imageList,
|
||||
IIconProvider iconProvider, ColorScheme colorScheme) : base(config)
|
||||
{
|
||||
Title = UiStrings.PreviewFormTitle;
|
||||
Icon = Icons.favicon.ToEtoIcon();
|
||||
|
||||
_desktopCommands = desktopCommands;
|
||||
ImageList = imageList;
|
||||
_iconProvider = iconProvider;
|
||||
@ -29,38 +32,38 @@ public class PreviewForm : EtoDialogBase
|
||||
GoToPrevCommand = new ActionCommand(() => GoTo(ImageIndex - 1))
|
||||
{
|
||||
Text = UiStrings.Previous,
|
||||
Image = iconProvider.GetIcon("arrow_left")
|
||||
Image = iconProvider.GetIcon("arrow_left_small")
|
||||
};
|
||||
GoToNextCommand = new ActionCommand(() => GoTo(ImageIndex + 1))
|
||||
{
|
||||
Text = UiStrings.Next,
|
||||
Image = iconProvider.GetIcon("arrow_right")
|
||||
Image = iconProvider.GetIcon("arrow_right_small")
|
||||
};
|
||||
ZoomInCommand = new ActionCommand(() => ImageViewer.ChangeZoom(1))
|
||||
{
|
||||
Text = UiStrings.ZoomIn,
|
||||
Image = iconProvider.GetIcon("zoom_in")
|
||||
Image = iconProvider.GetIcon("zoom_in_small")
|
||||
};
|
||||
ZoomOutCommand = new ActionCommand(() => ImageViewer.ChangeZoom(-1))
|
||||
{
|
||||
Text = UiStrings.ZoomOut,
|
||||
Image = iconProvider.GetIcon("zoom_out")
|
||||
Image = iconProvider.GetIcon("zoom_out_small")
|
||||
};
|
||||
ZoomWindowCommand = new ActionCommand(ImageViewer.ZoomToContainer)
|
||||
{
|
||||
// TODO: Update this string as it's now a button and not a toggle
|
||||
Text = UiStrings.ScaleWithWindow,
|
||||
Image = iconProvider.GetIcon("arrow_out")
|
||||
Image = iconProvider.GetIcon("arrow_out_small")
|
||||
};
|
||||
ZoomActualCommand = new ActionCommand(ImageViewer.ZoomToActual)
|
||||
{
|
||||
Text = UiStrings.ZoomActual,
|
||||
Image = iconProvider.GetIcon("zoom_actual")
|
||||
Image = iconProvider.GetIcon("zoom_actual_small")
|
||||
};
|
||||
DeleteCurrentImageCommand = new ActionCommand(DeleteCurrentImage)
|
||||
{
|
||||
Text = UiStrings.Delete,
|
||||
Image = iconProvider.GetIcon("cross")
|
||||
Image = iconProvider.GetIcon("cross_small")
|
||||
};
|
||||
|
||||
_previewKsm = new KeyboardShortcutManager();
|
||||
@ -125,9 +128,6 @@ public class PreviewForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.PreviewFormTitle;
|
||||
Icon = Icons.favicon.ToEtoIcon();
|
||||
|
||||
FormStateController.AutoLayoutSize = false;
|
||||
FormStateController.DefaultClientSize = new Size(800, 600);
|
||||
|
||||
|
@ -33,6 +33,9 @@ public class ProfilesForm : EtoDialogBase
|
||||
ThumbnailController thumbnailController, IIconProvider iconProvider)
|
||||
: base(config)
|
||||
{
|
||||
Title = UiStrings.ProfilesFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("blueprints_small"));
|
||||
|
||||
_scanPerformer = scanPerformer;
|
||||
_profileNameTracker = profileNameTracker;
|
||||
_profileManager = profileManager;
|
||||
@ -132,9 +135,6 @@ public class ProfilesForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.ProfilesFormTitle;
|
||||
Icon = new Icon(1f, Icons.blueprints_small.ToEtoImage());
|
||||
|
||||
FormStateController.DefaultExtraLayoutSize = new Size(200, 0);
|
||||
|
||||
LayoutController.Content = L.Column(
|
||||
|
@ -17,8 +17,8 @@ public class RotateForm : UnaryImageFormBase
|
||||
IIconProvider iconProvider) :
|
||||
base(config, imageList, thumbnailController)
|
||||
{
|
||||
Icon = new Icon(1f, Icons.arrow_rotate_anticlockwise_small.ToEtoImage());
|
||||
Title = UiStrings.Rotate;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("arrow_rotate_anticlockwise_small"));
|
||||
|
||||
_angleSlider.Icon = iconProvider.GetIcon("arrow_rotate_anticlockwise_small");
|
||||
Sliders = [_angleSlider];
|
||||
|
@ -26,6 +26,9 @@ public class ScannerSharingForm : EtoDialogBase
|
||||
IIconProvider iconProvider)
|
||||
: base(config)
|
||||
{
|
||||
Title = UiStrings.ScannerSharingFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("wireless16"));
|
||||
|
||||
_sharedDeviceManager = sharedDeviceManager;
|
||||
_osServiceManager = osServiceManager;
|
||||
_errorOutput = errorOutput;
|
||||
@ -73,9 +76,6 @@ public class ScannerSharingForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.ScannerSharingFormTitle;
|
||||
Icon = new Icon(1f, Icons.wireless16.ToEtoImage());
|
||||
|
||||
FormStateController.DefaultExtraLayoutSize = new Size(200, 0);
|
||||
|
||||
LayoutController.Content = L.Column(
|
||||
|
@ -24,8 +24,11 @@ internal class SettingsForm : EtoDialogBase
|
||||
private readonly Button _restoreDefaults = new() { Text = UiStrings.RestoreDefaults };
|
||||
|
||||
public SettingsForm(Naps2Config config, DesktopSubFormController desktopSubFormController,
|
||||
DesktopFormProvider desktopFormProvider) : base(config)
|
||||
DesktopFormProvider desktopFormProvider, IIconProvider iconProvider) : base(config)
|
||||
{
|
||||
Title = UiStrings.SettingsFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("cog_small"));
|
||||
|
||||
_desktopFormProvider = desktopFormProvider;
|
||||
UpdateValues(Config);
|
||||
_restoreDefaults.Click += RestoreDefaults_Click;
|
||||
@ -33,26 +36,22 @@ internal class SettingsForm : EtoDialogBase
|
||||
_pdfSettingsCommand = new ActionCommand(desktopSubFormController.ShowPdfSettingsForm)
|
||||
{
|
||||
Text = UiStrings.PdfSettings,
|
||||
Image = Icons.file_extension_pdf_small.ToEtoImage()
|
||||
Image = iconProvider.GetIcon("file_extension_pdf_small")
|
||||
};
|
||||
_imageSettingsCommand = new ActionCommand(desktopSubFormController.ShowImageSettingsForm)
|
||||
{
|
||||
Text = UiStrings.ImageSettings,
|
||||
// TODO: Get an actual 16x16 image
|
||||
Image = Icons.picture_small.ToEtoImage()
|
||||
Image = iconProvider.GetIcon("picture_small")
|
||||
};
|
||||
_emailSettingsCommand = new ActionCommand(desktopSubFormController.ShowEmailSettingsForm)
|
||||
{
|
||||
Text = UiStrings.EmailSettings,
|
||||
Image = Icons.email_small.ToEtoImage()
|
||||
Image = iconProvider.GetIcon("email_small")
|
||||
};
|
||||
}
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.SettingsFormTitle;
|
||||
Icon = new Icon(1f, Icons.cog_small.ToEtoImage());
|
||||
|
||||
FormStateController.DefaultExtraLayoutSize = new Size(60, 0);
|
||||
FormStateController.FixedHeightLayout = true;
|
||||
|
||||
|
@ -20,11 +20,15 @@ public class SharedDeviceForm : EtoDialogBase
|
||||
private readonly DeviceSelectorWidget _deviceSelectorWidget;
|
||||
|
||||
public SharedDeviceForm(Naps2Config config, IScanPerformer scanPerformer, ErrorOutput errorOutput,
|
||||
ISharedDeviceManager sharedDeviceManager, DeviceCapsCache deviceCapsCache) : base(config)
|
||||
ISharedDeviceManager sharedDeviceManager, DeviceCapsCache deviceCapsCache,
|
||||
IIconProvider iconProvider) : base(config)
|
||||
{
|
||||
Title = UiStrings.SharedDeviceFormTitle;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("wireless16"));
|
||||
|
||||
_errorOutput = errorOutput;
|
||||
_sharedDeviceManager = sharedDeviceManager;
|
||||
_deviceSelectorWidget = new(scanPerformer, deviceCapsCache, this)
|
||||
_deviceSelectorWidget = new(scanPerformer, deviceCapsCache, iconProvider, this)
|
||||
{
|
||||
ProfileFunc = () => new ScanProfile { DriverName = DeviceDriver.ToString().ToLowerInvariant() },
|
||||
AllowAlwaysAsk = false
|
||||
@ -44,9 +48,6 @@ public class SharedDeviceForm : EtoDialogBase
|
||||
|
||||
protected override void BuildLayout()
|
||||
{
|
||||
Title = UiStrings.SharedDeviceFormTitle;
|
||||
Icon = new Icon(1f, Icons.wireless16.ToEtoImage());
|
||||
|
||||
FormStateController.DefaultExtraLayoutSize = new Size(60, 0);
|
||||
FormStateController.FixedHeightLayout = true;
|
||||
|
||||
|
@ -11,10 +11,10 @@ public class SharpenForm : UnaryImageFormBase
|
||||
IIconProvider iconProvider) :
|
||||
base(config, imageList, thumbnailController)
|
||||
{
|
||||
Icon = new Icon(1f, Icons.sharpen.ToEtoImage());
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("sharpen_small"));
|
||||
Title = UiStrings.Sharpen;
|
||||
|
||||
_sharpenSlider.Icon = iconProvider.GetIcon("sharpen");
|
||||
_sharpenSlider.Icon = iconProvider.GetIcon("sharpen_small");
|
||||
Sliders = [_sharpenSlider];
|
||||
}
|
||||
|
||||
|
@ -32,12 +32,15 @@ public class SplitForm : UnaryImageFormBase
|
||||
IIconProvider iconProvider, ColorScheme colorScheme) :
|
||||
base(config, imageList, thumbnailController)
|
||||
{
|
||||
_colorScheme = colorScheme;
|
||||
Icon = new Icon(1f, Icons.split.ToEtoImage());
|
||||
Title = UiStrings.Split;
|
||||
Icon = new Icon(1f, iconProvider.GetIcon("split_small"));
|
||||
|
||||
_vSplit = C.IconButton(iconProvider.GetIcon("split_ver")!, () => SetOrientation(SplitOrientation.Vertical));
|
||||
_hSplit = C.IconButton(iconProvider.GetIcon("split_hor")!, () => SetOrientation(SplitOrientation.Horizontal));
|
||||
_colorScheme = colorScheme;
|
||||
|
||||
_vSplit = C.IconButton(iconProvider.GetIcon("split_ver_small")!,
|
||||
() => SetOrientation(SplitOrientation.Vertical));
|
||||
_hSplit = C.IconButton(iconProvider.GetIcon("split_hor_small")!,
|
||||
() => SetOrientation(SplitOrientation.Horizontal));
|
||||
Overlay.MouseDown += Overlay_MouseDown;
|
||||
Overlay.MouseMove += Overlay_MouseMove;
|
||||
Overlay.MouseUp += Overlay_MouseUp;
|
||||
@ -46,7 +49,9 @@ public class SplitForm : UnaryImageFormBase
|
||||
protected override List<Transform> Transforms => throw new NotSupportedException();
|
||||
|
||||
private int HandleClickRadius =>
|
||||
(int) Math.Max(Math.Round((_orientation == SplitOrientation.Horizontal ? _overlayH : _overlayW) * HANDLE_RADIUS_RATIO), HANDLE_MIN_RADIUS);
|
||||
(int) Math.Max(
|
||||
Math.Round((_orientation == SplitOrientation.Horizontal ? _overlayH : _overlayW) * HANDLE_RADIUS_RATIO),
|
||||
HANDLE_MIN_RADIUS);
|
||||
|
||||
protected override void OnPreLoad(EventArgs e)
|
||||
{
|
||||
@ -184,12 +189,14 @@ public class SplitForm : UnaryImageFormBase
|
||||
if (_orientation == SplitOrientation.Horizontal)
|
||||
{
|
||||
var y = _overlayT + _cropY * _overlayH;
|
||||
return e.Location.Y > y - radius && e.Location.Y < y + radius && e.Location.X > _overlayL && e.Location.X < _overlayR;
|
||||
return e.Location.Y > y - radius && e.Location.Y < y + radius && e.Location.X > _overlayL &&
|
||||
e.Location.X < _overlayR;
|
||||
}
|
||||
else
|
||||
{
|
||||
var x = _overlayL + _cropX * _overlayW;
|
||||
return e.Location.X > x - radius && e.Location.X < x + radius && e.Location.Y > _overlayT && e.Location.Y < _overlayB;
|
||||
return e.Location.X > x - radius && e.Location.X < x + radius && e.Location.Y > _overlayT &&
|
||||
e.Location.Y < _overlayB;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9,6 +9,7 @@ public class DeviceSelectorWidget
|
||||
{
|
||||
private readonly IScanPerformer _scanPerformer;
|
||||
private readonly DeviceCapsCache _deviceCapsCache;
|
||||
private readonly IIconProvider _iconProvider;
|
||||
private readonly IFormBase _parentWindow;
|
||||
|
||||
private readonly ImageView _deviceIcon = new();
|
||||
@ -20,10 +21,12 @@ public class DeviceSelectorWidget
|
||||
private DeviceChoice _choice = DeviceChoice.None;
|
||||
private CancellationTokenSource? _loadIconCts;
|
||||
|
||||
public DeviceSelectorWidget(IScanPerformer scanPerformer, DeviceCapsCache deviceCapsCache, IFormBase parentWindow)
|
||||
public DeviceSelectorWidget(IScanPerformer scanPerformer, DeviceCapsCache deviceCapsCache,
|
||||
IIconProvider iconProvider, IFormBase parentWindow)
|
||||
{
|
||||
_scanPerformer = scanPerformer;
|
||||
_deviceCapsCache = deviceCapsCache;
|
||||
_iconProvider = iconProvider;
|
||||
_parentWindow = parentWindow;
|
||||
_chooseDevice.Click += ChooseDevice;
|
||||
}
|
||||
@ -72,7 +75,8 @@ public class DeviceSelectorWidget
|
||||
public event EventHandler<DeviceChangedEventArgs>? DeviceChanged;
|
||||
|
||||
private async void ChooseDevice(object? sender, EventArgs args)
|
||||
{;
|
||||
{
|
||||
;
|
||||
var choice = await _scanPerformer.PromptForDevice(ProfileFunc(), AllowAlwaysAsk, _parentWindow.NativeHandle);
|
||||
if (choice.Device != null || choice.AlwaysAsk)
|
||||
{
|
||||
@ -88,7 +92,7 @@ public class DeviceSelectorWidget
|
||||
{
|
||||
var cachedIcon = _deviceCapsCache.GetCachedIcon(iconUri);
|
||||
_deviceIcon.Image =
|
||||
cachedIcon ?? (_choice.AlwaysAsk ? Icons.ask.ToEtoImage() : Icons.device.ToEtoImage());
|
||||
cachedIcon ?? (_choice.AlwaysAsk ? _iconProvider.GetIcon("ask") : _iconProvider.GetIcon("device"));
|
||||
if (((Window) _parentWindow).Loaded)
|
||||
{
|
||||
_parentWindow.LayoutController.Invalidate();
|
||||
|
50
NAPS2.Lib/Icons.Designer.cs
generated
50
NAPS2.Lib/Icons.Designer.cs
generated
@ -169,6 +169,26 @@ namespace NAPS2 {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] arrow_left {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("arrow_left", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] arrow_left_small {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("arrow_left_small", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
@ -179,6 +199,16 @@ namespace NAPS2 {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] arrow_out_small {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("arrow_out_small", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
@ -199,6 +229,26 @@ namespace NAPS2 {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] arrow_right {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("arrow_right", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] arrow_right_small {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("arrow_right_small", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
|
@ -127,6 +127,9 @@
|
||||
<data name="arrow_out" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>Icons\arrow_out.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="arrow_out_small" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>Icons\arrow_out-small.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="arrow_rotate_anticlockwise" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>Icons\arrow_rotate_anticlockwise.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
@ -154,6 +157,18 @@
|
||||
<data name="arrow_up_small" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>Icons\arrow_up-small.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="arrow_left" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>Icons\arrow_left.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="arrow_left_small" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>Icons\arrow_left-small.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="arrow_right" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>Icons\arrow_right.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="arrow_right_small" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>Icons\arrow_right-small.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="blueprints" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>Icons\blueprints.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
|
BIN
NAPS2.Lib/Icons/arrow_left-small.png
Normal file
BIN
NAPS2.Lib/Icons/arrow_left-small.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 371 B |
BIN
NAPS2.Lib/Icons/arrow_left.png
Normal file
BIN
NAPS2.Lib/Icons/arrow_left.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 570 B |
BIN
NAPS2.Lib/Icons/arrow_right-small.png
Normal file
BIN
NAPS2.Lib/Icons/arrow_right-small.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 363 B |
BIN
NAPS2.Lib/Icons/arrow_right.png
Normal file
BIN
NAPS2.Lib/Icons/arrow_right.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 577 B |
@ -15,10 +15,11 @@ internal class EmailProviderController
|
||||
private readonly GmailOauthProvider _gmailOauthProvider;
|
||||
private readonly OutlookWebOauthProvider _outlookWebOauthProvider;
|
||||
private readonly ThunderbirdEmailProvider _thunderbirdProvider;
|
||||
private readonly IIconProvider _iconProvider;
|
||||
|
||||
public EmailProviderController(IFormFactory formFactory, Naps2Config config, SystemEmailClients systemEmailClients,
|
||||
GmailOauthProvider gmailOauthProvider, OutlookWebOauthProvider outlookWebOauthProvider,
|
||||
ThunderbirdEmailProvider thunderbirdProvider)
|
||||
ThunderbirdEmailProvider thunderbirdProvider, IIconProvider iconProvider)
|
||||
{
|
||||
_formFactory = formFactory;
|
||||
_config = config;
|
||||
@ -26,6 +27,7 @@ internal class EmailProviderController
|
||||
_gmailOauthProvider = gmailOauthProvider;
|
||||
_outlookWebOauthProvider = outlookWebOauthProvider;
|
||||
_thunderbirdProvider = thunderbirdProvider;
|
||||
_iconProvider = iconProvider;
|
||||
}
|
||||
|
||||
public List<EmailProviderWidget> GetWidgets()
|
||||
@ -76,14 +78,14 @@ internal class EmailProviderController
|
||||
EmailProviderType.System => new EmailProviderWidget
|
||||
{
|
||||
ProviderType = EmailProviderType.System,
|
||||
ProviderIcon = GetSystemIcon(clientName!) ?? Icons.mail_yellow.ToEtoImage(),
|
||||
ProviderIcon = GetSystemIcon(clientName!) ?? _iconProvider.GetIcon("mail_yellow")!,
|
||||
ProviderName = clientName!,
|
||||
Choose = () => ChooseSystem(clientName!)
|
||||
},
|
||||
EmailProviderType.Thunderbird => new EmailProviderWidget
|
||||
{
|
||||
ProviderType = EmailProviderType.Thunderbird,
|
||||
ProviderIcon = Icons.thunderbird.ToEtoImage(),
|
||||
ProviderIcon = _iconProvider.GetIcon("thunderbird")!,
|
||||
ProviderName = EmailProviderType.Thunderbird.Description(),
|
||||
Choose = ChooseThunderbird,
|
||||
// When Thunderbird isn't available, we disable it rather than hide it.
|
||||
@ -93,28 +95,28 @@ internal class EmailProviderController
|
||||
EmailProviderType.AppleMail => new EmailProviderWidget
|
||||
{
|
||||
ProviderType = EmailProviderType.AppleMail,
|
||||
ProviderIcon = Icons.apple_mail.ToEtoImage(),
|
||||
ProviderIcon = _iconProvider.GetIcon("apple_mail")!,
|
||||
ProviderName = EmailProviderType.AppleMail.Description(),
|
||||
Choose = ChooseAppleMail
|
||||
},
|
||||
EmailProviderType.Gmail => new EmailProviderWidget
|
||||
{
|
||||
ProviderType = EmailProviderType.Gmail,
|
||||
ProviderIcon = Icons.gmail.ToEtoImage(),
|
||||
ProviderIcon = _iconProvider.GetIcon("gmail")!,
|
||||
ProviderName = EmailProviderType.Gmail.Description(),
|
||||
Choose = () => ChooseOauth(_gmailOauthProvider)
|
||||
},
|
||||
EmailProviderType.OutlookWeb => new EmailProviderWidget
|
||||
{
|
||||
ProviderType = EmailProviderType.OutlookWeb,
|
||||
ProviderIcon = Icons.outlookweb.ToEtoImage(),
|
||||
ProviderIcon = _iconProvider.GetIcon("outlookweb")!,
|
||||
ProviderName = EmailProviderType.OutlookWeb.Description(),
|
||||
Choose = () => ChooseOauth(_outlookWebOauthProvider)
|
||||
},
|
||||
// EmailProviderType.CustomSmtp => new EmailProviderWidget
|
||||
// {
|
||||
// ProviderType = EmailProviderType.CustomSmtp,
|
||||
// ProviderIcon = Icons.email_setting.ToEtoImage(),
|
||||
// ProviderIcon = _iconProvider.GetIcon("email_setting")!,
|
||||
// ProviderName = EmailProviderType.CustomSmtp.Description(),
|
||||
// Choose = ChooseCustomSmtp
|
||||
// },
|
||||
|
Loading…
Reference in New Issue
Block a user