Change IListView.ImageSize type to Eto.Drawing.Size

This commit is contained in:
Ben Olden-Cooligan 2024-08-01 13:13:15 -07:00
parent f132dbef91
commit 1746100be1
12 changed files with 25 additions and 25 deletions

View File

@ -80,7 +80,7 @@ public class GtkListView<T> : IListView<T> where T : notnull
ItemClicked?.Invoke(this, EventArgs.Empty);
}
public int ImageSize { get; set; }
public Eto.Drawing.Size ImageSize { get; set; }
public ScrolledWindow NativeControl => _scrolledWindow;

View File

@ -1,3 +1,4 @@
using Eto.Drawing;
using Eto.Forms;
using Eto.Mac;
using Eto.Mac.Forms.Menu;
@ -71,10 +72,10 @@ public class MacListView<T> : NSCollectionViewDelegateFlowLayout, IListView<T> w
ItemClicked?.Invoke(this, EventArgs.Empty);
}
public int ImageSize
public Size ImageSize
{
get => (int) ((NSCollectionViewFlowLayout) _layout).ItemSize.Width;
set => ((NSCollectionViewFlowLayout) _layout).ItemSize = new CGSize(value, value);
get => Size.Truncate(((NSCollectionViewFlowLayout) _layout).ItemSize.ToEto());
set => ((NSCollectionViewFlowLayout) _layout).ItemSize = new CGSize(value.Width, value.Height);
}
public Control Control => _panel;
@ -290,7 +291,7 @@ public class MacListView<T> : NSCollectionViewDelegateFlowLayout, IListView<T> w
{
var size = _behavior.GetImage(item, ImageSize).Size;
var max = (double) Math.Max(size.Width, size.Height);
return new CGSize(size.Width * ImageSize / max, size.Height * ImageSize / max);
return new CGSize(size.Width * ImageSize.Width / max, size.Height * ImageSize.Width / max);
}
}

View File

@ -91,8 +91,8 @@ public class WinFormsListView<T> : IListView<T> where T : notnull
SizeF textSize = TextRenderer.MeasureText(label, _view.Font);
int textOffset = (int) (textSize.Height + PageNumberTextPadding);
float scaleHeight = (float) (ImageSize - textOffset) / image.Height;
float scaleWidth = (float) ImageSize / image.Width;
float scaleHeight = (float) (ImageSize.Height - textOffset) / image.Height;
float scaleWidth = (float) ImageSize.Width / image.Width;
float scale = Math.Min(scaleWidth, scaleHeight);
int height = (int) Math.Round(image.Height * scale);
@ -145,12 +145,12 @@ public class WinFormsListView<T> : IListView<T> where T : notnull
int width, height;
if (image.Width > image.Height)
{
width = ImageSize;
width = ImageSize.Width;
height = (int) Math.Round(width * (image.Height / (double) image.Width));
}
else
{
height = ImageSize;
height = ImageSize.Height;
width = (int) Math.Round(height * (image.Width / (double) image.Height));
}
var x = e.Bounds.Left + (e.Bounds.Width - width) / 2;
@ -171,10 +171,10 @@ public class WinFormsListView<T> : IListView<T> where T : notnull
}
}
public int ImageSize
public Eto.Drawing.Size ImageSize
{
get => _view.LargeImageList!.ImageSize.Width;
set => WinFormsHacks.SetImageSize(_view.LargeImageList!, new Size(value, value));
get => _view.LargeImageList!.ImageSize.ToEto();
set => WinFormsHacks.SetImageSize(_view.LargeImageList!, new Size(value.Width, value.Height));
}
private void OnDragEnter(object? sender, DragEventArgs e)

View File

@ -80,7 +80,7 @@ public abstract class DesktopForm : EtoFormBase
_listView.ItemClicked += ListViewItemClicked;
_listView.Drop += ListViewDrop;
_listView.SelectionChanged += ListViewSelectionChanged;
_listView.ImageSize = _thumbnailController.VisibleSize;
_listView.ImageSize = new Size(_thumbnailController.VisibleSize, _thumbnailController.VisibleSize);
_listView.ContextMenu = _contextMenu;
// TODO: Fix Eto so that we don't need to set an item here (otherwise the first time we right click nothing happens)

View File

@ -93,7 +93,7 @@ public class ProfilesForm : EtoDialogBase
profilesKsm.Assign("Mod+V", _pasteCommand);
EtoPlatform.Current.HandleKeyDown(_listView.Control, profilesKsm.Perform);
_listView.ImageSize = 48;
_listView.ImageSize = new Size(48, 48);
_listView.ItemClicked += ItemClicked;
_listView.SelectionChanged += SelectionChanged;
_listView.Drop += Drop;

View File

@ -54,7 +54,7 @@ public class ScannerSharingForm : EtoDialogBase
// TODO: Enable
// _shareAsService.Checked = _osServiceManager.IsRegistered;
// _shareAsService.CheckedChanged += ShareAsServiceCheckedChanged;
_listView.ImageSize = 48;
_listView.ImageSize = new Size(48, 48);
_listView.SelectionChanged += SelectionChanged;
_addCommand.Enabled = true;

View File

@ -8,8 +8,7 @@ public interface IListView<T> : Util.ISelectable<T> where T : notnull
ContextMenu? ContextMenu { get; set; }
// TODO: Maybe convert this back to a Size
int ImageSize { get; set; }
Eto.Drawing.Size ImageSize { get; set; }
event EventHandler SelectionChanged;

View File

@ -24,9 +24,9 @@ public class ImageListViewBehavior : ListViewBehavior<UiImage>
public override bool ShowPageNumbers => _config.Get(c => c.ShowPageNumbers);
public override Image GetImage(UiImage item, int imageSize)
public override Image GetImage(UiImage item, Size imageSize)
{
using var thumbnail = _thumbnailProvider.GetThumbnail(item, imageSize);
using var thumbnail = _thumbnailProvider.GetThumbnail(item, imageSize.Width);
return thumbnail.ToEtoImage();
}

View File

@ -26,7 +26,7 @@ public abstract class ListViewBehavior<T> where T : notnull
public virtual string GetLabel(T item) => throw new NotSupportedException();
public virtual Image GetImage(T item, int imageSize) => throw new NotSupportedException();
public virtual Image GetImage(T item, Size imageSize) => throw new NotSupportedException();
public virtual bool AllowDragDrop => false;

View File

@ -20,7 +20,7 @@ public class ProfileListViewBehavior : ListViewBehavior<ScanProfile>
public override string GetLabel(ScanProfile item) => item.DisplayName ?? "";
public override Image GetImage(ScanProfile item, int imageSize)
public override Image GetImage(ScanProfile item, Size imageSize)
{
if (item.IsDefault && item.IsLocked)
{

View File

@ -14,5 +14,5 @@ public class SharedDevicesListViewBehavior : ListViewBehavior<SharedDevice>
public override string GetLabel(SharedDevice item) => item.Name;
public override Image GetImage(SharedDevice item, int imageSize) => Icons.scanner_wireless.ToEtoImage();
public override Image GetImage(SharedDevice item, Size imageSize) => Icons.scanner_wireless.ToEtoImage();
}

View File

@ -1,4 +1,4 @@
using NAPS2.EtoForms;
using Eto.Drawing;
using NAPS2.EtoForms.Widgets;
namespace NAPS2.Images;
@ -51,7 +51,7 @@ public class ThumbnailController : IDisposable
{
var thumbnailSize = ThumbnailSizes.Validate(value);
_config.User.Set(c => c.ThumbnailSize, thumbnailSize);
if (ListView?.ImageSize == thumbnailSize)
if (ListView?.ImageSize.Width == thumbnailSize)
{
// Same size so no resizing needed
return;
@ -76,7 +76,7 @@ public class ThumbnailController : IDisposable
if (ListView != null)
{
// Adjust the visible thumbnail display with the new size
ListView.ImageSize = VisibleSize;
ListView.ImageSize = new Size(VisibleSize, VisibleSize);
ListView.RegenerateImages();
}