Skip to content

Commit

Permalink
Implement CarouselView handler (dotnet#428)
Browse files Browse the repository at this point in the history
  • Loading branch information
myroot committed Aug 24, 2022
1 parent 61e9938 commit 137986d
Show file tree
Hide file tree
Showing 13 changed files with 397 additions and 48 deletions.
2 changes: 2 additions & 0 deletions src/Compatibility/Core/src/Tizen/Renderers/LayoutRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ protected override void OnElementChanged(ElementChangedEventArgs<Layout> e)
SetNativeControl(new NViewGroup());
}
base.OnElementChanged(e);

RegisterOnLayoutUpdated();
}

protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
Expand Down
38 changes: 27 additions & 11 deletions src/Controls/src/Core/Handlers/Items/CarouselViewHandler.Tizen.cs
Original file line number Diff line number Diff line change
@@ -1,25 +1,41 @@
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Maui.Handlers;
using TCollectionView = Tizen.UIExtensions.NUI.CollectionView;
using TCollectionView = Tizen.UIExtensions.NUI.CollectionView;

namespace Microsoft.Maui.Controls.Handlers.Items
{
public partial class CarouselViewHandler : ItemsViewHandler<CarouselView>
{

protected override TCollectionView CreatePlatformView()
{
throw new NotImplementedException();
return new MauiCarouselView();
}

public static void MapCurrentItem(CarouselViewHandler handler, CarouselView carouselView)
{
(handler.PlatformView as MauiCarouselView)?.UpdateCurrentItem();
}

//TODO : Need to impl
public static void MapCurrentItem(CarouselViewHandler handler, CarouselView carouselView) { }
public static void MapPosition(CarouselViewHandler handler, CarouselView carouselView) { }
public static void MapPosition(CarouselViewHandler handler, CarouselView carouselView)
{
(handler.PlatformView as MauiCarouselView)?.UpdatePosition();
}

[MissingMapper]
public static void MapIsBounceEnabled(CarouselViewHandler handler, CarouselView carouselView) { }
public static void MapIsSwipeEnabled(CarouselViewHandler handler, CarouselView carouselView) { }

public static void MapIsSwipeEnabled(CarouselViewHandler handler, CarouselView carouselView)
{
(handler.PlatformView as MauiCarouselView)?.UpdateIsSwipeEnabled();
}

[MissingMapper]
public static void MapPeekAreaInsets(CarouselViewHandler handler, CarouselView carouselView) { }

[MissingMapper]
public static void MapLoop(CarouselViewHandler handler, CarouselView carouselView) { }

public static void MapItemsLayout(CarouselViewHandler handler, CarouselView itemsView)
{
(handler.PlatformView as MauiCarouselView)?.UpdateLayoutManager();
}
}
}
3 changes: 3 additions & 0 deletions src/Controls/src/Core/Handlers/Items/CarouselViewHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ public CarouselViewHandler(PropertyMapper mapper = null) : base(mapper ?? Mapper

public static PropertyMapper<CarouselView, CarouselViewHandler> Mapper = new PropertyMapper<CarouselView, CarouselViewHandler>(ViewMapper)
{
#if TIZEN
[Controls.CarouselView.ItemsLayoutProperty.PropertyName] = MapItemsLayout,
#endif
[Controls.ItemsView.ItemsSourceProperty.PropertyName] = MapItemsSource,
[Controls.ItemsView.HorizontalScrollBarVisibilityProperty.PropertyName] = MapHorizontalScrollBarVisibility,
[Controls.ItemsView.VerticalScrollBarVisibilityProperty.PropertyName] = MapVerticalScrollBarVisibility,
Expand Down
16 changes: 8 additions & 8 deletions src/Controls/src/Core/Handlers/Items/ItemsViewHandler.Tizen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ public abstract partial class ItemsViewHandler<TItemsView> : ViewHandler<TItemsV
protected override void ConnectHandler(TCollectionView nativeView)
{
base.ConnectHandler(nativeView);
(nativeView as MauiCollectionView<TItemsView>).SetupNewElement(VirtualView);
(nativeView as MauiCollectionView<TItemsView>)?.SetupNewElement(VirtualView);
}

protected override void DisconnectHandler(TCollectionView nativeView)
{
(nativeView as MauiCollectionView<TItemsView>).TearDownOldElement(VirtualView);
(nativeView as MauiCollectionView<TItemsView>)?.TearDownOldElement(VirtualView);
base.DisconnectHandler(nativeView);
}

Expand All @@ -24,32 +24,32 @@ public override Size GetDesiredSize(double widthConstraint, double heightConstra

public static void MapItemsSource(ItemsViewHandler<TItemsView> handler, ItemsView itemsView)
{
(handler.PlatformView as MauiCollectionView<TItemsView>).UpdateItemsSource();
(handler.PlatformView as MauiCollectionView<TItemsView>)?.UpdateItemsSource();
}

public static void MapHorizontalScrollBarVisibility(ItemsViewHandler<TItemsView> handler, ItemsView itemsView)
{
(handler.PlatformView as MauiCollectionView<TItemsView>).UpdateHorizontalScrollBarVisibility();
(handler.PlatformView as MauiCollectionView<TItemsView>)?.UpdateHorizontalScrollBarVisibility();
}

public static void MapVerticalScrollBarVisibility(ItemsViewHandler<TItemsView> handler, ItemsView itemsView)
{
(handler.PlatformView as MauiCollectionView<TItemsView>).UpdateVerticalScrollBarVisibility();
(handler.PlatformView as MauiCollectionView<TItemsView>)?.UpdateVerticalScrollBarVisibility();
}

public static void MapItemTemplate(ItemsViewHandler<TItemsView> handler, ItemsView itemsView)
{
(handler.PlatformView as MauiCollectionView<TItemsView>).UpdateAdaptor();
(handler.PlatformView as MauiCollectionView<TItemsView>)?.UpdateAdaptor();
}

public static void MapEmptyView(ItemsViewHandler<TItemsView> handler, ItemsView itemsView)
{
(handler.PlatformView as MauiCollectionView<TItemsView>).UpdateAdaptor();
(handler.PlatformView as MauiCollectionView<TItemsView>)?.UpdateAdaptor();
}

public static void MapEmptyViewTemplate(ItemsViewHandler<TItemsView> handler, ItemsView itemsView)
{
(handler.PlatformView as MauiCollectionView<TItemsView>).UpdateAdaptor();
(handler.PlatformView as MauiCollectionView<TItemsView>)?.UpdateAdaptor();
}

[MissingMapper]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@ protected override TCollectionView CreatePlatformView()

public static void MapSelectedItem(SelectableItemsViewHandler<TItemsView> handler, SelectableItemsView itemsView)
{
(handler.PlatformView as MauiSelectableItemsView<TItemsView>).UpdateSelection();
(handler.PlatformView as MauiSelectableItemsView<TItemsView>)?.UpdateSelection();
}

public static void MapSelectedItems(SelectableItemsViewHandler<TItemsView> handler, SelectableItemsView itemsView)
{
(handler.PlatformView as MauiSelectableItemsView<TItemsView>).UpdateSelection();
(handler.PlatformView as MauiSelectableItemsView<TItemsView>)?.UpdateSelection();
}

public static void MapSelectionMode(SelectableItemsViewHandler<TItemsView> handler, SelectableItemsView itemsView)
{
(handler.PlatformView as MauiSelectableItemsView<TItemsView>).UpdateSelection();
(handler.PlatformView as MauiSelectableItemsView<TItemsView>)?.UpdateSelection();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,31 @@ protected override TCollectionView CreatePlatformView()

public static void MapHeaderTemplate(StructuredItemsViewHandler<TItemsView> handler, StructuredItemsView itemsView)
{
(handler.PlatformView as MauiCollectionView<TItemsView>).UpdateAdaptor();
(handler.PlatformView as MauiCollectionView<TItemsView>)?.UpdateAdaptor();
}

public static void MapFooterTemplate(StructuredItemsViewHandler<TItemsView> handler, StructuredItemsView itemsView)
{
(handler.PlatformView as MauiCollectionView<TItemsView>).UpdateAdaptor();
(handler.PlatformView as MauiCollectionView<TItemsView>)?.UpdateAdaptor();
}

public static void MapItemsLayout(StructuredItemsViewHandler<TItemsView> handler, StructuredItemsView itemsView)
{
(handler.PlatformView as MauiCollectionView<TItemsView>).UpdateLayoutManager();
(handler.PlatformView as MauiCollectionView<TItemsView>)?.UpdateLayoutManager();
}

public static void MapItemSizingStrategy(StructuredItemsViewHandler<TItemsView> handler, StructuredItemsView itemsView)
{
(handler.PlatformView as MauiCollectionView<TItemsView>).UpdateLayoutManager();
(handler.PlatformView as MauiCollectionView<TItemsView>)?.UpdateLayoutManager();
}

public static void MapFooter(StructuredItemsViewHandler<TItemsView> handler, StructuredItemsView itemsView)
{
(handler.PlatformView as MauiCollectionView<TItemsView>).UpdateAdaptor();
(handler.PlatformView as MauiCollectionView<TItemsView>)?.UpdateAdaptor();
}
public static void MapHeader(StructuredItemsViewHandler<TItemsView> handler, StructuredItemsView itemsView)
{
(handler.PlatformView as MauiCollectionView<TItemsView>).UpdateAdaptor();
(handler.PlatformView as MauiCollectionView<TItemsView>)?.UpdateAdaptor();
}
}
}
62 changes: 54 additions & 8 deletions src/Controls/src/Core/Handlers/Items/Tizen/EmptyItemAdaptor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

using System.Collections;
using System.Collections.Generic;
using Tizen.UIExtensions.NUI;
using NView = Tizen.NUI.BaseComponents.View;
using TSize = Tizen.UIExtensions.Common.Size;
using XLabel = Microsoft.Maui.Controls.Label;
Expand Down Expand Up @@ -55,20 +56,65 @@ public static EmptyItemAdaptor Create(ItemsView itemsView)
var header = CreateHeaderView();
var footer = CreateFooterView();

var layout = new StackLayout
bool isHorizontal = false;

if (CollectionView is Tizen.UIExtensions.NUI.CollectionView cv)
{
VerticalOptions = LayoutOptions.Fill,
HorizontalOptions = LayoutOptions.Fill,
};
if (cv.LayoutManager != null)
{
isHorizontal = cv.LayoutManager.IsHorizontal;
}
}

var layout = new Grid();

if (isHorizontal)
{
layout.RowDefinitions.Add(new RowDefinition
{
Height = GridLength.Auto,
});
layout.RowDefinitions.Add(new RowDefinition
{
Height = GridLength.Star,
});
layout.RowDefinitions.Add(new RowDefinition
{
Height = GridLength.Auto,
});
}
else
{
layout.ColumnDefinitions.Add(new ColumnDefinition
{
Width = GridLength.Auto,
});
layout.ColumnDefinitions.Add(new ColumnDefinition
{
Width = GridLength.Star,
});
layout.ColumnDefinitions.Add(new ColumnDefinition
{
Width = GridLength.Auto,
});
}

if (header != null)
{
layout.Children.Add(header);
layout.Add(header, 0, 0);
}
layout.Children.Add(emptyView);

if (isHorizontal)
layout.Add(emptyView, 1, 0);
else
layout.Add(emptyView, 0, 1);

if (footer != null)
{
layout.Children.Add(footer);
if (isHorizontal)
layout.Add(emptyView, 2, 0);
else
layout.Add(emptyView, 0, 2);
}

layout.Parent = Element;
Expand All @@ -79,7 +125,7 @@ public static EmptyItemAdaptor Create(ItemsView itemsView)

public override TSize MeasureHeader(double widthConstraint, double heightConstraint)
{
return _createdEmptyView?.Measure(widthConstraint, heightConstraint, MeasureFlags.IncludeMargins).Request.ToPixel() ?? new TSize(100, 100);
return (CollectionView as NView)!.Size.ToCommon();
}

public override TSize MeasureItem(double widthConstraint, double heightConstraint)
Expand Down
Loading

0 comments on commit 137986d

Please sign in to comment.