* [Tizen] Add Resizetizer Tizen Implementation

* Treat nullablity for buidling net6 project

* Bump to latest and fix build error

* Fix Tizen Handlers

* Fix font and SingleProject to locate manifest

* Update tizen manifest path

* Bump to latest

- Adds the GraphicsViewHandler and ShapeViewHandler
- Apply one stop shop UseMauiControls (#1157)
- Implements new APIs for each IView
- and so on

* Bump to latest

- Including register images and set Compat Service Provider (#1306), and so on

* [SingleProject] Update intermediate asset path

* Bump to latest

- Apply to start adding in APIs for adding legacy renderers via assembly scanning (#1333)
- Update to IMauiContext (#1357)
- and so on

* Remove duplicate type for legacy compat renderers

* Fix Color Extension

* Adds Microsoft.Maui.Tizen.sln

* Rebase to upstream latest main

* InitialzationOption for MauiApp

* Bump to latest

- Apply to patch related to Animation (#1436)
- Apply to register Microsoft.Maui.Graphics Platforms (#1441)
- and so on.

* Enable to DisplayResolutionUnit

* Implement Clip

* Implement ModalNavigationService

* Update build targets for single project

* Remove comment

* Remove image resource on Tizen project

* Remove space

* Bump to latest

- Added GestureManager.Tizen.cs (#1489)
- Set handler to shimmed handler so it doesn't get reshimmed  (#1483)
- Turn XamlC on by default (#1422)
- and so on

* Fix SwitchHandler

* Fix compatibility issue (#41)

* Fix compatibility issue

* Fix Compatibility Resource path

* Fix Transformations (#42)

* Fix the compat LayoutRenderer (#43)

* Bump to latest

- Modal Navigation Manager (#1563)
- Implement the basic WindowHandler (#1468)
- Don't extract native defaults, meaning users can no longer reset a color back to a platform theme (#1485)
- Implement Alerts (Alert, Prompt and ActionSheet) (#1328)
- And so on.

* Fix Layout margin issue (#44)

* [SingleProject] Fix Issues (#50)

* Fix RefreshView related issue (#51)

* Fix RefreshView related issue

* Fix StreamImageSourceService.Tizen

* Bumt to latest

- Effects (#1574)
- Improve Window and AnimationManager (#1653)
- and so on

* Add Microsoft.Maui.Graphics.Skia as PackageReference

* Update Compatibility projects (*.csproj) for Tizen

* Add AlertManager on Tizen (#57)

* Add AlertManager on Tizen

* Add null check and remove whitespace

* Remove watch profile code

* Change subscriber object

* Add Essentials.Samples.Tizen (#24)

* Add Essentials.Samples.Tizen

* Add guard for null exception

* Fix Essentials.Samples for Tizen

* Fix csproj for net6

* Remove Forms.Init

* Fix build error (#60)

* Update referenced Tizen.UIExtensions version (#61)

* Add BlazorWebView skeleton code (#62)

* Bump to latest (#71)

- Window lifecycle (#1754)
- Move New Navigation Handler to Core and make it internal (#1800)
- Scrollview handler (#1669)
- ScrollView Resize + Window Handler Resize (#1676)
- Font AutoScalingEnabled (#1774)
- Rename Font Properties (#1755)
- Update layout system to ensure native measure/arrange are called for all controls, even from Page subclasses (#1819)
- IContainer as IList<IView> (#1724)
- Implement Layout padding for new StackLayouts and GridLayout (#1749)
- Delete all the TabIndex, TabStop, Focusable things! (#1777)
- Introduce SetSemanticFocus API via SemanticExtensions (#1829)
- Improve Window and AnimationManager (#1653)
- And so on

* Remove IPage on Tizen (#72)

- Merge IFrameworkElement and IView and Remove IPage (#1875)

* Remove obsolete methods from Controls (#73)

- [Controls] Remove obsolete methods from Controls (#1644)

* Fix issue related rebase (#74)

* Add Blazor webview (#67)

* Add Blazor webview

* Replace space to tab

* remove space

* Fix AlertManager prompt layout issue (#76)

* Fix entry cursor error (#68)

* Fix entry cursor error

* Update code referring to android extension

* Remove duplicate code & Add exception cases

* Code fixes for consistency

* Fix nullable issue (#77)

* Fix Image loading (#78)

* Fix nested layout issue (#79)

Co-authored-by: 허강호/Common Platform Lab(SR)/Principal Engineer/삼성전자 <kangho.hur@samsung.com>

* Fix issues caused by bump up (#75)

* Fix issues caused by bump up

* Update Tizen file provider

* Update file provider with proper path

* Replace StackLayout from Compatibility.StackLayout (#82)

* Fix unmatched partial method (#84)

* Bump to latest

* Fix GetDesiredSize (#87)

* Fix GetDesiredSize

* update for readability

* Fix ScrollView content absolute position (#89)

* Fixes incorrect parameter type for ILayoutManager.ArrangeChildren (Rectangle -> Size). (#91)

* Make the HandlerToRendererShim simple

* Revert "Fixes incorrect parameter type for ILayoutManager.ArrangeChildren (Rectangle -> Size). (#91)" (#97)

This reverts commit c54ac836ef961d647989a34fa83208b9883142ef.

* Add GestureManager (#96)

* Add GestureManager

* Fix DragGestureHandler

* Fix GestureManager

* Check nullable enable

* Fix Label LineBreakMode using workaround (#98)

* Refactor the LayoutHandler (#99)

* Fix layout measure issue (#100)

* Bump to latest

* Fix LayoutHandler Update issue (#103)

* Fix LayoutHandler Update issue

* Implement InvalidateMeasure propagation

* Update MapBackground

* Fix default font size issue (#113)

* Add InitializationOptions (#107)

* Add InitializationOptions

* Set UseSkiaSharp true as default

* Apply DP as default

* Fix SKClipperView to have proper size (#115)

* Fix Essentials sample (#108)

* Fix Essentials sample for Tizen

* Remove UseSkiaSharp flag

* Remove MaterialComponents

* Fix Tizen flag

* Remove CustomRenderer

* Add ShellHandler (#64)

* Add ShellHandler

* Move ShellView into Platform/Tizen

* Update ShellView

* Move the code for embedded tizen resources to csproj

* Add UIExtenstions for shell

* fix ViewHandlerOfT dispose (#120)

* MAUI workload for Tizen (#66)

* Fix build and runtime error after bumping to latest code

* Fix HandlerToRendererShim dispose (#127)

* Add ShellSearchView (#121)

* Add ShellSearchView

* Fix the layout issue in ShellSearchResultList

* Enable nullable

* Fix maximum height of ShellSearchResultList

* Fix scaling issue on Clip (#130)

* Fix Shell build error on net6 project (#133)

* Fix DisplayResolutionUnit sync issue (#134)

* Fix build error (#137)

* Replace SkiaGraphicsView with local patch (#135)

This commit will be revert when upstream code is updated

* Fix GraphicsView scaling issue (#136)

* Support Min/Max Height/Width on IView and applying MauiApp/MauiAppBuilder pattern

- Support Min/Max Height/Width on IView (#2265)
- Updating .NET MAUI to use MauiApp/MauiAppBuilder pattern and use MS.Extensions.DependencyInjection (#2137)

* Fix Tizen Templates (#144)

* Fix webview break caused by updated dependency (#143)

* Update the Tizen.UIExtension.ElmSharp version (#145)

* Fix Essentials (#146)

* Fix Essentials sample for tizen

* Add SemanticScreenReader for Tizen

* Fix Startup

* Reomve internal UIExtensions compoments for Shell (#147)

* Implement PlaceholderColor property in SearchBarHandlers

- Implement PlaceholderColor property in SearchBarHandlers (#1512)

* Adds missing implementation after bumping to latest main

* Fix Control.Samples.Singleproject Main correctly (#150)

* [Tizen] Add support for JS root components in BlazorWebView (#151)

* [Tizen] Adds BoxView Handler

* [Tizen] Update project templates to work with safe characters

- Update project templates to work with safe characters (#2368)

* [Tizen] Implement ProgressColor property in ProgressBarHandlers

- Implement ProgressColor property in ProgressBarHandlers (#600)

* [Tizen] Fix project template's tizne-manifest.xml correctly

* [Tizen] Handle ContentViews and templated content in new layout system

* [Tizen] WebView Handlers

* [Tizen] Use Color.IsDefault in Compat renderers

* Fix Essentials DeviceDisplay (#156)

* Fix Essentials.DeviceDisplay

* Fix DeviceDisplay

* [Tizen] Fix build error on net6

* Fix Layout remove issue (#164)

* Fix Layout remove issue

* Fix layout remove on Dispose

* Bump to latest (rc1)

- ImageButtonHandler and Handler Re-usability (#2352)
- Remove IBoxView (#2619)
- Add SupportedOSPlatformVersion (#2565)
- Merge all the .NET 6 projects/solutions (#2505)
- Shadow Support (#570)
- Add IndicatorView handler(#2038)

* [Tizen] Initial Border control

* [Tizen] Apply graphics related code review feedback

* [Tizen] Remove Device.OpenUri impl and Device.Flags/SetFlags

* [Tizen] Fix Display Prompt Alerts

* [Tizen] Fix WebView Handler

* [Tizen] Fix ShapeViewHandler

* [Tizen] Port H/V TextAlignment to Editor/Picker Handler

* [Tizen] Add TVShellView (#183)

* [Tizen] Add TVShellView

* [Tizen] Update TVShellView

* [Tizen] Update NativeView for Shell

* [Tizen] Update ShellView

* [Tizen] Change default FlyoutBackgroundColor for TV

* [Tizen] Enable nullable

* Refactor WrapperView to draw drawable features (#186)

* Refactor WrapperView to draw drawable features

* Update class names and devide files

* Override NeesContainer to remove duplicated code

* Update class names

* [Tizen] Adds ApplicationHandler

* Remove dispose action on ImageSourceServiceResult (#192)

* Fix Background issue of Frame (#193)

* Fix UpdateBackground (#194)

* Fix UpdateBackground

* Add ContentView Background mapper

* Fix Editor/Entry/Label/Layout Background

* Add IWrapperViewCanvas.Content

* Add PageHandler Background mapper

* Restore WrapperView

* Remove unnecessary namespace

* [Tizen] Fix build error on PageHandler

* [Tizen] Fix ButtonHandler events

* [Tizen] Use new dispatcher instance in Tizen's BlazorWebView

* [Tizen] Fix DpiPath correctly

* [Tizen] Fix Compatibility and Controls.Sample build error

* [Tizen] Initial CollectionViewHandler

* [Tizen] Apply ITextButton related changes

* [Tizen] Add Shadows (#233)

* [Tizen] Add Shadows

* [Tizen] Apply review comments

* [Tizen] Move updating shape in proper position

* [Tizen] Update BackgroundDrawable

* [Tizen] Apply review comments

* [Tizen] Add BorderDrawable (#224)

* Move to platform specific

* Fix border handler for Tizen

* Rename ToDrawable method

* Fix border content layout

* Fix BorderView

* Apply rebase

* [Tizen] Fix entry cursor issue (#222)

* Fix entry cursor issue

* Fix UpdateSelectionLength method

* [Tizen] Remove TVNavigationDrawer TVNavigationView (#223)

* [Tizen] Remove TVNavigationDrawer TVNavigationView

* [Elmsharp] Update Tizen.UIExtensions version

* [Tizen] Remove Forms DeviceInfo and use Essentials

* [Tizen] Initial Multi Window support

* [Tizen] Fix MauiContext

* [Tizen] Refactor Border by defining MauiDrawable (#248)

* [Tizen] Refactor Border by defining MauiDrawable

* [Tizen] Apply review comments

* [Tizen] Remove unnecessary type casting

* [Tizen] Move getting path logic to drawable

* [Tizen] Obsolete AndExpand & Remove IsolatedStorage

* Fix layout measure issue (#254)

* Fix layout measure issue

* Update src/Compatibility/Core/src/Tizen/Platform.cs

Co-authored-by: 허강호/Common Platform Lab(SR)/Principal Engineer/삼성전자 <kangho.hur@samsung.com>

Co-authored-by: 허강호/Common Platform Lab(SR)/Principal Engineer/삼성전자 <kangho.hur@samsung.com>

* Fix tizen solution (.sln) correctly

* [Tizen] Add VerticalTextAlignment

* [Tizen] Move IDispatcher logic out of IPlatformServices

* [Tizen] Fix Scoping of MauiContext

* Fix NavigationPage navigating issue (#263)

* [Tizen] Add ImageButton handler (#261)

* [Tizen] Add ImageButton handler

* Add comment

* Fix Compatibility build error (#265)

* Fix catch exception for sample (#262)

* Fix catch exception for control sample

* Fix exception type for Tizen

* Add bracket

* [Tizen] Use CoreApplication as native app type

* Fix ScrollView (#269)

* [Tizen] Add Collectionview adaptor (#271)

* [Tizen] Add CollectionView Adaptors

* Remove unnecessary override

* Fix ConvertToScaledDP

* Fix flag

* Fix item selected event

* Apply review comments

* Move to extension for CollectionView

* [Tizen] Remove legacy Log and use ILogger

* [Tizen] Applying upstream changes

* [Tizen] Add ContainerView to Layout if it's present

* [Tizen] Initial Reloadyfy support

* [Tizen] Initial IVisualDiagnosticOveraly support

* [Tizen] Setup first set of Automation Properties

* [Tizen] Move types in the Platform folder into the Platform namespaces

* Fix CollectionView layout issue (#288)

* Fix CollectionView layout issue

* Remove unnecessary code

* [Tizen] ZIndex proof-of-concept

* Fix ScrollView ContentSize and Padding margin (#291)

* Fix ScrollView ContentSize and Padding margin

* Fix MapRequestScrollTo

* Update src/Core/src/Handlers/ScrollView/ScrollViewHandler.Tizen.cs

Co-authored-by: 허강호/Common Platform Lab(SR)/Principal Engineer/삼성전자 <kangho.hur@samsung.com>

* Update src/Core/src/Handlers/ScrollView/ScrollViewHandler.Tizen.cs

Co-authored-by: 허강호/Common Platform Lab(SR)/Principal Engineer/삼성전자 <kangho.hur@samsung.com>

* Remove MapContentSize

Co-authored-by: 허강호/Common Platform Lab(SR)/Principal Engineer/삼성전자 <kangho.hur@samsung.com>

* Implements WindowOverlay and VisualDiagnosticsOverlay (#294)

* Implements WindowOverlay and VisualDiagnosticsOverlay

* Apply code review

* [Tizen] Fix Image Handler

* Remove GetDesiredSize (#295)

* [Tizen] Fix ButtonHandler

* Fix UpdateSemantics (#299)

* Fix UpdateSemantics

* Fix Semantics mapping

* Apply comment

* [Tizen] Organize and centralize HandlerExtensions

* Refactor WrapperView and Fix Issue (#302)

* Refactor WrapperView

* Use Thickness type for Shadow margin

* Update variable name

* Update class name to GraphicsExtensions

* Fix essentials sample for Tizen (#305)

* [Tizen] Fix NativeView casting issue

* [Tizen] Update the UIExtensions package version

* [Templates] Update Tizen Template (#311)

* [Tizen] Initial Flyout handler

* Fix BlazorWebview binary resource issue (#317)

* [Tizen] Handle query strings in Blazor static assets by trimming them out

* Refactor MauiContext (#330)

* [Tizen] Adds PaintExtensions

* [Tizen] Update compat's Platform

* [Tizen] Fix controls build error

* [Tizen] Adds RadioButton Handler

* [Tizen] Implement CursorPosition in IEditor/ITextInput Handlers

* [Tizen] Initial SwipeView Handler

* [Tizen] Remove GetNative

* [Tizen] Update Microsoft.NET.Sdk.Maui/WorkloadManifest

* [Tizen] Add FormattedText property support to Label in Controls

* [Tizen] Bump to latest

* [Tizen] Use legacy compat renderers temporarily

* [Tizen] Use BorderView

* [SingleProject] Update splash updator (#353)

* [singleproject] update splash updator

* [singleproject] update icon updator

* [singleproject] Fix default icon path

* [Tizen] Fix BlazorWebView build error (#355)

* [Tizen] Fix BlazorWebView build error

* [Tizen] Update tizen handler

* [Tizen] Implement IPlatformApplication.Current

* [Tizen] Implements missing WebViewHandler APIs

* [Tizen] Refactor AppInfo/PhoneDialer into interface

* [Tizen] Fix INativeViewHandler to return more expected NativeView

* [Tizen] Remove legacy TFMs

* [Tizen] Refactor DeviceInfo and Flashlight to use an interface

* [Tizen] Remove `IPlatformInvalidate` and `Device.Invalidate()

* [Tizen] Refactored Geocoding to an interface

* [Tizen] Adds Microsoft.Maui.Graphics.Skia as package reference

* [Tizen] Refactored Map, SMS, Contacts to an interface

* [Tizen] Bump to latest

* [Tizen] Fix Essential sample build error

* [Tizen] Fix Workload build error

* Add Platform code on Controls.Sample.Sandbox for tizen (#382)

* Fix processing MauiAssets (#383)

Co-authored-by: Jay Cho <chojoong@gmail.com>

* [Tizen] Refactor Essential's implementations

* [Tizen] Renaming public APIs Native -> Platform

* [Tizen] Update template & sample's tizen-manifest.xml

* Fix DotNet.csproj to build tizen (#372)

* [Tizen] Update ImageHandler and ImageButtonHandler

* [Tizen] Add handling for TextTransform for SearchBar/Editor/Entry

* [Tizen] Interfaced Handler for Label, Page, NavigationView, Picker,
ProgressBar, SwipeView

* [Tizen] Initial MenuBar

* [Tizen] Moved GetPlatformSize logic into a new service

* [Tizen] Interfaced handler for Switch, TimePicker, WebView, Slider,
SearchBar, RefreshView, RadioButton

* [Tizen] Fix build error after rebasing

* [Tizen] Use StringComparison.Ordinal everywhere

* [Tizen] Move TabbedPageHandler to TabbedViewHandler

* [Tizen] Add more APIs to IDispatcher

* [Tizen] Remove Application.Properties implementation

* [Tizen] Backport p14 changes

* [Tizen] Implement InputTransparent

* [Tizen] Loaded/Unloaded events and propagate Window

* [Tizen] Fix Path shapes rendering issues

* [Tizen] Fix CI build error on ImageButtonHandler

* [Tizen] Optimize ConfigureFonts and Logging during startup

* [Tizen] Make sure StrokeDashArray property invalidate the Shape

* [Tizen] Implement FillRule property in Polygon/PolylineHandler

* [Tizen] Add install tizen to provision.yml

* [Tizen] Simplify OnPlatformExtension

* [Tizen] Use interface on mappers of shapes

* [Tizen] Install tizen workload on dotnet-local-workloads

* [Tizen] Move package version into Versions.props

* [Tizen] Move 'UseMauiApp' call into "Controls"

* [Tizen] update template description of localized string files

* [Tizen] Update the package reference of Microsoft.Maui.Dependencies

* [Tizen] Add IWindow.DisplayDensity

* [Tizen] Initial VisualDiagnostic Image APIs

* [Tizen] Mark all the Device [Obsolete]

* [Tizen] Mark renderers and related base classes as obsolete

* [Tizen] Platform behavior implementation

* [Tizen] Clean unnecessary resource files

* [Tizen] Graphics events

* [Tizen] Modernize Essentials Namepsaces

* [Tizen] Fix Compat's control gallery build error

* Fix ClipperView background color issue (#447)

* Fix typo (#450)

* [Tizen] Initial support for configuring the underlying Web view settings

* [Tizen] BlazorWebView public API tracking

* [Tizen] use latest tizen workload as default

* [Tizen] specify sdk version to avoid ci build error

* [Tizen] Keep the text wrapping/truncation and max lines stuff in Controls

* [Tizen] Remove downcasts in BlazorWebView

* [Tizen] BlazorWebView API review changes: Shared sources

* [Tizen] add tizen TFM optional

* [Tizen] adding informative comments for template

* [Tizen] Set IncludeTizenTargetFrameworks correctly

* [Tizen] install maui-tizen

Co-authored-by: JoonghyunCho <jh5.cho@samsung.com>
Co-authored-by: Seungkeun Lee <sngn.lee@samsung.com>
Co-authored-by: 김성수/Common Platform Lab(SR)/Staff Engineer/삼성전자 <sung-su.kim@samsung.com>
Co-authored-by: 박인서/Common Platform Lab(SR)/Associate/삼성전자 <inseo9.park@samsung.com>
Co-authored-by: 민성현/Common Platform Lab(SR)/Staff Engineer/삼성전자 <shyun.min@samsung.com>
Co-authored-by: Jay Cho <chojoong@gmail.com>
This commit is contained in:
Kangho Hur 2022-04-15 17:43:01 +09:00 коммит произвёл GitHub
Родитель 2d765b7ae0
Коммит 438aef2e5d
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
680 изменённых файлов: 18088 добавлений и 2380 удалений

Просмотреть файл

@ -59,6 +59,12 @@
<Compile Remove="**\*.uwp.cs" />
<None Include="**\*.uwp.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
<ItemGroup Condition=" '$(_MauiTargetPlatformIsTizen)' != 'True' ">
<Compile Remove="**\**\*.Tizen.cs" />
<None Include="**\**\*.Tizen.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
<Compile Remove="**\Tizen\**\*.cs" />
<None Include="**\Tizen\**\*.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
<ItemGroup>
<Compile Remove="bin\**;obj\**" />
<None Remove="bin\**;obj\**" />
@ -99,6 +105,11 @@
<DefineConstants>$(DefineConstants);MACCATALYST;IOS</DefineConstants>
</PropertyGroup>
<!-- Tizen -->
<PropertyGroup Condition=" '$(_MauiTargetPlatformIsTizen)' == 'True' ">
<DefineConstants>$(DefineConstants);TIZEN</DefineConstants>
</PropertyGroup>
<!-- If this becomes part of the product we will remove these but for now it's useful having them all in one place -->
<ItemGroup Condition=" '$(_MauiTargetPlatformIsAndroid)' == 'True' ">
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" />
@ -120,4 +131,8 @@
<PackageReference Include="Microsoft.Graphics.Win2D" />
<PackageReference Include="Microsoft.Maui.Graphics.Win2D.WinUI.Desktop" />
</ItemGroup>
<ItemGroup Condition=" '$(_MauiTargetPlatformIsTizen)' == 'True' ">
<PackageReference Include="Tizen.UIExtensions.ElmSharp" />
<PackageReference Include="Microsoft.Maui.Graphics.Skia" />
</ItemGroup>
</Project>

Просмотреть файл

@ -16,4 +16,10 @@
<_MauiUsingDefaultRuntimeIdentifier>true</_MauiUsingDefaultRuntimeIdentifier>
</PropertyGroup>
<!-- Tizen -->
<ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' and '$(SingleProject)' == 'true' and '$(TargetPlatformIdentifier)' == 'tizen' and '$(TizenProjectFolder)' != '' ">
<TizenResource Include="$(TizenResourcePrefix)\**\*" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);@(TizenTpkUserExcludeFiles)" />
<TizenSharedResource Include="$(TizenSharedPrefix)\**\*" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);@(TizenTpkUserExcludeFiles)" />
</ItemGroup>
</Project>

Просмотреть файл

@ -22,6 +22,10 @@
<EnableDefaultWindowsItems>false</EnableDefaultWindowsItems>
<WindowsProjectFolder Condition=" '$(WindowsProjectFolder)' == '' ">$(PlatformsProjectFolder)Windows\</WindowsProjectFolder>
<WindowsProjectFolder>$([MSBuild]::EnsureTrailingSlash('$(WindowsProjectFolder)'))</WindowsProjectFolder>
<!-- Tizen -->
<EnableDefaultTizenItems>false</EnableDefaultTizenItems>
<TizenProjectFolder Condition=" '$(TizenProjectFolder)' == '' ">$(PlatformsProjectFolder)Tizen\</TizenProjectFolder>
<TizenProjectFolder>$([MSBuild]::EnsureTrailingSlash('$(TizenProjectFolder)'))</TizenProjectFolder>
</PropertyGroup>
<ItemGroup>
@ -29,6 +33,7 @@
<MauiPlatformSpecificFolder Include="$(iOSProjectFolder)" TargetPlatformIdentifier="ios" />
<MauiPlatformSpecificFolder Include="$(MacCatalystProjectFolder)" TargetPlatformIdentifier="maccatalyst" />
<MauiPlatformSpecificFolder Include="$(WindowsProjectFolder)" TargetPlatformIdentifier="windows" />
<MauiPlatformSpecificFolder Include="$(TizenProjectFolder)" TargetPlatformIdentifier="tizen" />
</ItemGroup>
<PropertyGroup Condition=" '$(SingleProject)' == 'true' and '$([MSBuild]::GetTargetPlatformIdentifier($(TargetFramework)))' == 'android' ">
@ -57,6 +62,12 @@
<_SingleProjectWindowsExcludes>$(WindowsProjectFolder)/**/.*/**</_SingleProjectWindowsExcludes>
</PropertyGroup>
<PropertyGroup Condition=" '$(SingleProject)' == 'true' and '$([MSBuild]::GetTargetPlatformIdentifier($(TargetFramework)))' == 'tizen' ">
<TizenManifestFile Condition=" Exists('$(TizenProjectFolder)tizen-manifest.xml') ">$(TizenProjectFolder)tizen-manifest.xml</TizenManifestFile>
<TizenResourcePrefix>$(TizenProjectFolder)res</TizenResourcePrefix>
<TizenSharedPrefix>$(TizenProjectFolder)shared</TizenSharedPrefix>
</PropertyGroup>
<!--
Run before both _MauiInjectXamlCssAdditionalFiles and GenerateMSBuildEditorConfigFileShouldRun because
if for some reason the _MauiInjectXamlCssAdditionalFiles target is not run, we still get in at the
@ -82,6 +93,9 @@
<Compile
Condition=" '$(TargetPlatformIdentifier)' == 'windows' and '$(WindowsProjectFolder)' != '' "
Include="$(WindowsProjectFolder)**/*$(DefaultLanguageSourceExtension)" />
<Compile
Condition=" '$(TargetPlatformIdentifier)' == 'tizen' and '$(TizenProjectFolder)' != '' "
Include="$(TizenProjectFolder)**/*$(DefaultLanguageSourceExtension)" />
<!-- Remove all Windows (WinUI) XAML Files from the Windows folder -->
<_MauiXamlToRemove
@ -127,4 +141,4 @@
<ProjectCapability Include="LaunchProfilesGroupByPlatformFilters" Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &gt;= '17.0' " />
</ItemGroup>
</Project>
</Project>

Просмотреть файл

@ -33,6 +33,10 @@
AssemblyFile="$(_ResizetizerTaskAssemblyName)"
TaskName="Microsoft.Maui.Resizetizer.GenerateSplashStoryboard" />
<UsingTask
AssemblyFile="$(_ResizetizerTaskAssemblyName)"
TaskName="Microsoft.Maui.Resizetizer.TizenSplashUpdater" />
<UsingTask
AssemblyFile="$(_ResizetizerTaskAssemblyName)"
TaskName="Microsoft.Maui.Resizetizer.GenerateSplashAssets" />
@ -76,6 +80,7 @@
<_ResizetizerPlatformIsmacOS Condition="'$(_ResizetizerPlatformIdentifier)' == 'macos'">True</_ResizetizerPlatformIsmacOS>
<_ResizetizerPlatformIstvOS Condition="'$(_ResizetizerPlatformIdentifier)' == 'tvos'">True</_ResizetizerPlatformIstvOS>
<_ResizetizerPlatformIsWindows Condition="$(_ResizetizerPlatformIdentifier.Contains('windows')) == 'True'">True</_ResizetizerPlatformIsWindows>
<_ResizetizerPlatformIsTizen Condition="'$(_ResizetizerPlatformIdentifier)' == 'tizen'">True</_ResizetizerPlatformIsTizen>
<ResizetizerIncludeSelfProject Condition="'$(ResizetizerIncludeSelfProject)' == ''">False</ResizetizerIncludeSelfProject>
@ -90,9 +95,10 @@
<_ResizetizerIsiOSApp Condition="( '$(_ResizetizerPlatformIsiOS)' == 'True' OR '$(_ResizetizerPlatformIsMacCatalyst)' == 'True' ) And ('$(OutputType)' == 'Exe' Or '$(IsAppExtension)' == 'True')">True</_ResizetizerIsiOSApp>
<_ResizetizerIsWPFApp Condition="'$(IsApplication)' == 'True' And '$(NuGetRuntimeIdentifier)' == 'win' And '$(_ResizetizerPlatformIsWindows)' == 'True'">True</_ResizetizerIsWPFApp>
<_ResizetizerIsWindowsAppSdk Condition="('$(ProjectReunionWinUI)'=='True' Or '$(WindowsAppSDKWinUI)'=='True') And '$(_ResizetizerPlatformIsWindows)' == 'True' And ('$(OutputType)' == 'WinExe' Or '$(OutputType)' == 'Exe')">True</_ResizetizerIsWindowsAppSdk>
<_ResizetizerIsTizenApp Condition="'$(_ResizetizerPlatformIsTizen)' == 'True'">True</_ResizetizerIsTizenApp>
</PropertyGroup>
<PropertyGroup Condition="'$(_ResizetizerIsAndroidApp)' == 'True' Or '$(_ResizetizerIsiOSApp)' == 'True' Or '$(_ResizetizerIsWPFApp)' == 'True' Or '$(_ResizetizerIsWindowsAppSdk)' == 'True'">
<PropertyGroup Condition="'$(_ResizetizerIsAndroidApp)' == 'True' Or '$(_ResizetizerIsiOSApp)' == 'True' Or '$(_ResizetizerIsWPFApp)' == 'True' Or '$(_ResizetizerIsWindowsAppSdk)' == 'True' Or '$(_ResizetizerIsTizenApp)' == 'True'">
<_ResizetizerIsCompatibleApp>True</_ResizetizerIsCompatibleApp>
<ResizetizeDependsOnTargets>
@ -190,10 +196,29 @@
</ProcessMauiFontsBeforeTargets>
</PropertyGroup>
<!-- Tizen -->
<PropertyGroup Condition="'$(_ResizetizerIsTizenApp)' == 'True'">
<ResizetizerPlatformType>tizen</ResizetizerPlatformType>
<ResizetizeBeforeTargets>
$(ResizetizeBeforeTargets);
PrepareResources;
</ResizetizeBeforeTargets>
<ResizetizeAfterTargets>
$(ResizetizeAfterTargets);
ResizetizeCollectItems;
</ResizetizeAfterTargets>
<ProcessMauiFontsAfterTargets>
$(ProcessMauiFontsAfterTargets);
ResizetizeCollectItems;
</ProcessMauiFontsAfterTargets>
</PropertyGroup>
<!-- Finds absolute paths to any MauiImage in this project -->
<!-- App head projects will invoke this target on their project references to collect images -->
<Target Name="GetMauiItems" Outputs="@(ExportedMauiItem)">
<ItemGroup>
<MauiItem Include="@(MauiImage)" ItemGroupName="MauiImage" Condition="'%(MauiImage.ForegroundFile)' == ''" />
<MauiItem Include="@(MauiImage)" ItemGroupName="MauiImage" Condition="'%(MauiImage.ForegroundFile)' != ''" ForegroundFile="$([System.IO.Path]::GetFullPath('%(MauiImage.ForegroundFile)'))" />
@ -295,6 +320,12 @@
<!-- Windows does not recognize %(LogicalName), so we must copy it to %(Link) -->
<MauiAsset Update="@(MauiAsset)" Link="%(MauiAsset.LogicalName)" Condition="'%(MauiAsset.Link)' == '' And '%(MauiAsset.LogicalName)' != ''" />
</ItemGroup>
<PropertyGroup Condition="'$(_ResizetizerIsTizenApp)' == 'True'">
<_MauiAssetItemMetadata>TizenTpkFileName</_MauiAssetItemMetadata>
</PropertyGroup>
<ItemGroup Condition="'$(_ResizetizerIsTizenApp)' == 'True'">
<MauiAsset Update="@(MauiAsset)" Link="%(MauiAsset.LogicalName)" Condition="'%(MauiAsset.Link)' == '' And '%(MauiAsset.LogicalName)' != ''" />
</ItemGroup>
<GetMauiAssetPath
ProjectDirectory="$(MSBuildProjectDirectory)"
ItemMetadata="$(_MauiAssetItemMetadata)"
@ -302,6 +333,7 @@
<Output ItemName="AndroidAsset" TaskParameter="Output" Condition="'$(_ResizetizerIsAndroidApp)' == 'True'" />
<Output ItemName="Content" TaskParameter="Output" Condition="'$(_ResizetizerIsiOSApp)' == 'True'" />
<Output ItemName="ContentWithTargetPath" TaskParameter="Output" Condition="'$(_ResizetizerIsUWPApp)' == 'True' Or '$(_ResizetizerIsWindowsAppSdk)' == 'True'" />
<Output ItemName="TizenResource" TaskParameter="Output" Condition="'$(_ResizetizerIsTizenApp)' == 'True'" />
</GetMauiAssetPath>
</Target>
@ -348,7 +380,7 @@
<GenerateSplashAssets
Condition="'$(_ResizetizerIsUWPApp)' == 'True' Or '$(_ResizetizerIsWindowsAppSdk)' == 'True'"
IntermediateOutputPath="$(_MauiIntermediateSplashScreen)"
MauiSplashScreen="@(MauiSplashScreen)"
MauiSplashScreen="@(MauiSplashScreen)"
/>
<ItemGroup Condition="'$(_ResizetizerIsUWPApp)' == 'True' Or '$(_ResizetizerIsWindowsAppSdk)' == 'True'">
<_MauiSplashAssets Include="$(_MauiIntermediateSplashScreen)**\*" />
@ -358,6 +390,11 @@
<FileWrites Include="@(_MauiSplashAssets)" />
</ItemGroup>
<!-- Tizen -->
<ItemGroup Condition="'$(_ResizetizerIsTizenApp)' == 'True'">
<MauiImage Include="@(MauiSplashScreen)" />
</ItemGroup>
<!-- Stamp file for Outputs -->
<Touch Files="$(_MauiSplashStampFile)" AlwaysCreate="True" />
<ItemGroup>
@ -437,6 +474,11 @@
</ItemGroup>
<!-- Tizen -->
<ItemGroup Condition="'$(_ResizetizerIsTizenApp)' == 'True'">
<TizenTpkUserIncludeFiles Include="@(_MauiFontCopied)" Condition="'@(_MauiFontCopied)' != ''" TizenTpkSubDir="res\fonts\" />
</ItemGroup>
<!-- iOS Only -->
<!-- If on Windows, using build host, copy the files over to build server host too -->
<ItemGroup Condition="'$(BuildSessionId)' != '' And '$(_ResizetizerIsiOSApp)' == 'True' And '$(IsMacEnabled)'=='true'">
@ -479,6 +521,13 @@
Images="@(MauiImage->Distinct())">
</ResizetizeImages>
<!-- Tizen - Move splash images to a specific location -->
<TizenSplashUpdater
Condition="'$(_ResizetizerIsTizenApp)' == 'True' And '@(MauiSplashScreen)' != ''"
IntermediateOutputPath="$(_MauiIntermediateImages)"
ManifestFile="$(TizenManifestFile)"
MauiSplashScreen="@(MauiSplashScreen)" />
<ItemGroup>
<!-- Get Images that were generated -->
<!-- Either from the task, or if the task was skipped (up to date), use the wildcard lookup -->
@ -548,6 +597,20 @@
<FileWrites Include="@(_ResizetizerCollectedImages)" />
</ItemGroup>
<!-- Tizen -->
<PropertyGroup>
<ResizetizerIntermediateOutputAbsolutePath>$([System.IO.Path]::GetFullPath('$(_MauiIntermediateImages)'))</ResizetizerIntermediateOutputAbsolutePath>
</PropertyGroup>
<ItemGroup Condition="'$(_ResizetizerIsTizenApp)' == 'True' And '@(_ResizetizerCollectedImages)' != ''">
<TizenTpkUserIncludeFiles Include="$(ResizetizerIntermediateOutputAbsolutePath)res\res.xml" TizenTpkSubDir="res\" />
<FileWrites Include="$(ResizetizerIntermediateOutputAbsolutePath)res\res.xml)" />
<TizenTpkUserIncludeFiles Include="@(_ResizetizerCollectedImages)">
<TizenTpkSubDir>$([MSBuild]::MakeRelative($(ResizetizerIntermediateOutputAbsolutePath), $([System.IO.Path]::GetFullPath('%(_ResizetizerCollectedImages.RelativeDir)'))))</TizenTpkSubDir>
</TizenTpkUserIncludeFiles>
<FileWrites Include="@(_ResizetizerCollectedImages)" />
</ItemGroup>
<!-- Touch/create our stamp file for outputs -->
<Touch Files="$(_ResizetizerStampFile)" AlwaysCreate="True" />
@ -602,4 +665,4 @@
<RemoveDir Directories="$(_ResizetizerIntermediateOutputRoot)" Condition="Exists ('$(_ResizetizerIntermediateOutputRoot)' )" />
</Target>
</Project>
</Project>

Просмотреть файл

@ -12,8 +12,12 @@
<_MauiTargetPlatformIsmacOS Condition="'$(_MauiTargetPlatformIdentifier)' == 'macos'">True</_MauiTargetPlatformIsmacOS>
<_MauiTargetPlatformIstvOS Condition="'$(_MauiTargetPlatformIdentifier)' == 'tvos'">True</_MauiTargetPlatformIstvOS>
<_MauiTargetPlatformIsWindows Condition="$(_MauiTargetPlatformIdentifier.Contains('windows')) == 'True'">True</_MauiTargetPlatformIsWindows>
<_MauiTargetPlatformIsTizen Condition="'$(_MauiTargetPlatformIdentifier)' == 'tizen'">True</_MauiTargetPlatformIsTizen>
<IncludeWindowsTargetFrameworks Condition="($([MSBuild]::IsOSPlatform('windows')) and '$(MSBuildRuntimeType)' == 'Full') or ('$(Packing)' == 'true')">true</IncludeWindowsTargetFrameworks>
<IncludeTizenTargetFrameworks Condition="'$(CI)' == 'true' or '$(TF_BUILD)' == 'true' or
Exists('$(DOTNET_ROOT)\sdk-manifests\$(DotNetVersionBand)\samsung.net.sdk.tizen\WorkloadManifest.json') or
Exists('$(ProgramFiles)\dotnet\sdk-manifests\$(DotNetVersionBand)\samsung.net.sdk.tizen\WorkloadManifest.json')">true</IncludeTizenTargetFrameworks>
</PropertyGroup>
<PropertyGroup>
@ -34,6 +38,7 @@
<AndroidTargetFrameworkVersion>30.0</AndroidTargetFrameworkVersion>
<WindowsTargetFrameworkVersion>10.0.19041</WindowsTargetFrameworkVersion>
<Windows2TargetFrameworkVersion>10.0.20348</Windows2TargetFrameworkVersion>
<TizenTargetFrameworkVersion>6.5</TizenTargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup>
@ -41,6 +46,7 @@
<MauiPlatforms>net$(_MauiDotNetVersion)-ios;net$(_MauiDotNetVersion)-maccatalyst;net$(_MauiDotNetVersion)-android</MauiPlatforms>
<WindowsMauiPlatforms Condition="'$(WindowsMauiPlatforms)' == ''">net$(_MauiDotNetVersion)-windows$(WindowsTargetFrameworkVersion);net$(_MauiDotNetVersion)-windows$(Windows2TargetFrameworkVersion)</WindowsMauiPlatforms>
<MauiPlatforms Condition="'$(IncludeWindowsTargetFrameworks)' == 'true'">$(MauiPlatforms);$(WindowsMauiPlatforms)</MauiPlatforms>
<MauiPlatforms Condition="'$(IncludeTizenTargetFrameworks)' == 'true'">$(MauiPlatforms);net$(_MauiDotNetVersion)-tizen</MauiPlatforms>
<!-- Work around the IDE not properly handling the NU1703 warning -->
<MauiPlatformsNoMacCat>net$(_MauiDotNetVersion)-ios;net$(_MauiDotNetVersion)-android</MauiPlatformsNoMacCat>

Просмотреть файл

@ -33,6 +33,10 @@
<SupportedOSPlatformVersion>21.0</SupportedOSPlatformVersion>
<TargetPlatformMinVersion>21.0</TargetPlatformMinVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(_MauiTargetPlatformIsTizen)' == 'True'">
<SupportedOSPlatformVersion>6.5</SupportedOSPlatformVersion>
<TargetPlatformMinVersion>6.5</TargetPlatformMinVersion>
</PropertyGroup>
<!--
NOTE: The Contains('-windows10') is a bit of a hack

Просмотреть файл

@ -109,5 +109,9 @@
Update="Microsoft.CodeAnalysis.PublicApiAnalyzers"
Version="$(MicrosoftCodeAnalysisPublicApiAnalyzersVersion)"
/>
<PackageReference
Update="Tizen.UIExtensions.ElmSharp"
Version="$(TizenUIExtensionsVersion)"
/>
</ItemGroup>
</Project>

Просмотреть файл

@ -15,6 +15,7 @@
<MicrosoftMacCatalystSdkPackageVersion>15.4.200-rc.2.159</MicrosoftMacCatalystSdkPackageVersion>
<MicrosoftmacOSSdkPackageVersion>12.3.200-rc.2.159</MicrosoftmacOSSdkPackageVersion>
<MicrosofttvOSSdkPackageVersion>15.4.200-rc.2.159</MicrosofttvOSSdkPackageVersion>
<SamsungTizenSdkPackageVersion>7.0.100-preview.13.30</SamsungTizenSdkPackageVersion>
<!-- emsdk -->
<MicrosoftNETWorkloadEmscriptenManifest60300PackageVersion>6.0.4</MicrosoftNETWorkloadEmscriptenManifest60300PackageVersion>
<MicrosoftNETWorkloadEmscriptenPackageVersion>$(MicrosoftNETWorkloadEmscriptenManifest60300PackageVersion)</MicrosoftNETWorkloadEmscriptenPackageVersion>
@ -49,6 +50,7 @@
<MicrosoftDotNetXHarnessTestRunnersCommonVersion>1.0.0-prerelease.22211.4</MicrosoftDotNetXHarnessTestRunnersCommonVersion>
<MicrosoftDotNetXHarnessTestRunnersXunitVersion>1.0.0-prerelease.22211.4</MicrosoftDotNetXHarnessTestRunnersXunitVersion>
<MicrosoftDotNetXHarnessCLIVersion>1.0.0-prerelease.22211.4</MicrosoftDotNetXHarnessCLIVersion>
<TizenUIExtensionsVersion>0.6.0-pre1</TizenUIExtensionsVersion>
</PropertyGroup>
<PropertyGroup>
<!-- Match the first three version numbers and append 00 -->
@ -60,5 +62,6 @@
<DotNetEmscriptenManifestVersionBand>$(DotNetVersionBand)</DotNetEmscriptenManifestVersionBand>
<DotNetAndroidManifestVersionBand>$(DotNetVersionBand)</DotNetAndroidManifestVersionBand>
<DotNetMaciOSManifestVersionBand>$(DotNetVersionBand)</DotNetMaciOSManifestVersionBand>
<DotNetTizenManifestVersionBand>$(DotNetVersionBand)</DotNetTizenManifestVersionBand>
</PropertyGroup>
</Project>

Просмотреть файл

@ -107,6 +107,14 @@ steps:
displayName: 'Setup MSBuild Paths'
condition: eq(variables['provisioningVS'], 'true')
- pwsh: |
[xml] $fileXml = Get-Content "eng\Versions.props"
$DotNetVersionBand = $fileXml.SelectSingleNode("Project/PropertyGroup/DotNetVersionBand").InnerText
echo "Installing .NET $DotNetVersion"
Invoke-WebRequest 'https://raw.githubusercontent.com/Samsung/Tizen.NET/main/workload/scripts/workload-install.ps1' -OutFile 'workload-install.ps1'
.\workload-install.ps1 -t $DotNetVersion
displayName: 'Install Tizen'
# Prepare Both
- pwsh: ./build.ps1 --target provision
displayName: 'Cake Provision'

Просмотреть файл

@ -0,0 +1 @@
#nullable enable

Просмотреть файл

@ -0,0 +1,63 @@
#nullable enable
Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs
Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs.BlazorWebViewInitializedEventArgs() -> void
Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs
Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs.BlazorWebViewInitializingEventArgs() -> void
Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebView
Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebView.BlazorWebView() -> void
Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebView.BlazorWebViewInitialized -> System.EventHandler<Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs!>?
Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebView.BlazorWebViewInitializing -> System.EventHandler<Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs!>?
Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebView.HostPage.get -> string?
Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebView.HostPage.set -> void
Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebView.RootComponents.get -> Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection!
Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebView.UrlLoading -> System.EventHandler<Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs!>?
Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler
Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.BlazorWebViewHandler() -> void
Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.BlazorWebViewHandler(Microsoft.Maui.PropertyMapper? mapper) -> void
Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView
Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView.BlazorWebViewInitialized(Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs! args) -> void
Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView.BlazorWebViewInitializing(Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializingEventArgs! args) -> void
Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView.CreateFileProvider(string! contentRootDir) -> Microsoft.Extensions.FileProviders.IFileProvider!
Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView.HostPage.get -> string?
Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView.JSComponents.get -> Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore!
Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView.RootComponents.get -> Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection!
Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView.UrlLoading(Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs! args) -> void
Microsoft.AspNetCore.Components.WebView.Maui.IMauiBlazorWebViewBuilder
Microsoft.AspNetCore.Components.WebView.Maui.IMauiBlazorWebViewBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection!
Microsoft.AspNetCore.Components.WebView.Maui.RootComponent
Microsoft.AspNetCore.Components.WebView.Maui.RootComponent.ComponentType.get -> System.Type?
Microsoft.AspNetCore.Components.WebView.Maui.RootComponent.ComponentType.set -> void
Microsoft.AspNetCore.Components.WebView.Maui.RootComponent.Parameters.get -> System.Collections.Generic.IDictionary<string!, object?>?
Microsoft.AspNetCore.Components.WebView.Maui.RootComponent.Parameters.set -> void
Microsoft.AspNetCore.Components.WebView.Maui.RootComponent.RootComponent() -> void
Microsoft.AspNetCore.Components.WebView.Maui.RootComponent.Selector.get -> string?
Microsoft.AspNetCore.Components.WebView.Maui.RootComponent.Selector.set -> void
Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection
Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection.JSComponents.get -> Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore!
Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection.RootComponentsCollection(Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! jsComponents) -> void
Microsoft.AspNetCore.Components.WebView.Maui.TizenWebViewManager
Microsoft.AspNetCore.Components.WebView.Maui.TizenWebViewManager.TizenWebViewManager(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! blazorMauiWebViewHandler, Tizen.WebView.WebView! webview, System.IServiceProvider! provider, Microsoft.AspNetCore.Components.Dispatcher! dispatcher, Microsoft.Extensions.FileProviders.IFileProvider! fileProvider, Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! jsComponents, string! contentRootRelativeToAppRoot, string! hostPageRelativePath) -> void
override Microsoft.AspNetCore.Components.WebView.Maui.TizenWebViewManager.NavigateCore(System.Uri! absoluteUri) -> void
override Microsoft.AspNetCore.Components.WebView.Maui.TizenWebViewManager.SendMessage(string! message) -> void
Microsoft.AspNetCore.Components.WebView.Maui.WebViewContainer
Microsoft.AspNetCore.Components.WebView.Maui.WebViewContainer.WebViewContainer(ElmSharp.EvasObject! parent) -> void
Microsoft.AspNetCore.Components.WebView.Maui.WebViewContainer.WebView.get -> Tizen.WebView.WebView!
Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs
Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.Url.get -> System.Uri!
Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.UrlLoadingStrategy.get -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy
Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.UrlLoadingStrategy.set -> void
Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy
Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.CancelLoad = 2 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy
Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.OpenExternally = 0 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy
Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.OpenInWebView = 1 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy
Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions
override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.CreatePlatformView() -> Microsoft.AspNetCore.Components.WebView.Maui.WebViewContainer!
override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.ConnectHandler(Microsoft.AspNetCore.Components.WebView.Maui.WebViewContainer! platformView) -> void
override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.DisconnectHandler(Microsoft.AspNetCore.Components.WebView.Maui.WebViewContainer! platformView) -> void
static Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.MapHostPage(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! handler, Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView! webView) -> void
static Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.MapRootComponents(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! handler, Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView! webView) -> void
static Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions.AddBlazorWebViewDeveloperTools(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection!
static Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions.AddMauiBlazorWebView(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.AspNetCore.Components.WebView.Maui.IMauiBlazorWebViewBuilder!
static Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.BlazorWebViewMapper -> Microsoft.Maui.PropertyMapper<Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView!, Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler!>!
virtual Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebView.CreateFileProvider(string! contentRootDir) -> Microsoft.Extensions.FileProviders.IFileProvider!
~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs.WebView.get -> Tizen.WebView.WebView

Просмотреть файл

@ -0,0 +1,192 @@
using System;
using System.IO;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
using Microsoft.Maui;
using Microsoft.Maui.Dispatching;
using Microsoft.Maui.Handlers;
using Tizen.WebView;
using TChromium = Tizen.WebView.Chromium;
using TWebView = Tizen.WebView.WebView;
namespace Microsoft.AspNetCore.Components.WebView.Maui
{
/// <summary>
/// The Tizen <see cref="ViewHandler"/> for <see cref="BlazorWebView"/>.
/// </summary>
public partial class BlazorWebViewHandler : ViewHandler<IBlazorWebView, WebViewContainer>
{
private const string AppOrigin = "http://0.0.0.0/";
private const string BlazorInitScript = @"
window.__receiveMessageCallbacks = [];
window.__dispatchMessageCallback = function(message) {
window.__receiveMessageCallbacks.forEach(function(callback) { callback(message); });
};
window.external = {
sendMessage: function(message) {
window.BlazorHandler.postMessage(message);
},
receiveMessage: function(callback) {
window.__receiveMessageCallbacks.push(callback);
}
};
Blazor.start();
(function () {
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload();
}
};
})();
";
private TizenWebViewManager? _webviewManager;
private WebViewExtensions.InterceptRequestCallback? _interceptRequestCallback;
private TWebView NativeWebView => PlatformView.WebView;
private bool RequiredStartupPropertiesSet =>
//_webview != null &&
HostPage != null &&
Services != null;
/// <inheritdoc />
protected override WebViewContainer CreatePlatformView()
{
TChromium.Initialize();
MauiApplication.Current.Terminated += (s, e) => TChromium.Shutdown();
return new WebViewContainer(NativeParent!);
}
/// <inheritdoc />
protected override void ConnectHandler(WebViewContainer platformView)
{
_interceptRequestCallback = OnRequestInterceptCallback;
NativeWebView.LoadFinished += OnLoadFinished;
NativeWebView.AddJavaScriptMessageHandler("BlazorHandler", PostMessageFromJS);
NativeWebView.SetInterceptRequestCallback(_interceptRequestCallback);
NativeWebView.GetSettings().JavaScriptEnabled = true;
}
/// <inheritdoc />
protected override void DisconnectHandler(WebViewContainer platformView)
{
NativeWebView.LoadFinished -= OnLoadFinished;
base.DisconnectHandler(platformView);
}
private void PostMessageFromJS(JavaScriptMessage message)
{
if (message is null)
{
throw new ArgumentNullException(nameof(message));
}
if (message.Name.Equals("BlazorHandler", StringComparison.Ordinal))
{
_webviewManager!.MessageReceivedInternal(new Uri(NativeWebView.Url), message.GetBodyAsString());
}
}
private void StartWebViewCoreIfPossible()
{
if (!RequiredStartupPropertiesSet ||
_webviewManager != null)
{
return;
}
if (PlatformView == null)
{
throw new InvalidOperationException($"Can't start {nameof(BlazorWebView)} without platform web view instance.");
}
// We assume the host page is always in the root of the content directory, because it's
// unclear there's any other use case. We can add more options later if so.
var contentRootDir = Path.GetDirectoryName(HostPage!) ?? string.Empty;
var hostPageRelativePath = Path.GetRelativePath(contentRootDir, HostPage!);
var fileProvider = VirtualView.CreateFileProvider(contentRootDir);
_webviewManager = new TizenWebViewManager(
this,
NativeWebView,
Services!,
new MauiDispatcher(Services!.GetRequiredService<IDispatcher>()),
fileProvider,
VirtualView.JSComponents,
contentRootDir,
hostPageRelativePath);
StaticContentHotReloadManager.AttachToWebViewManagerIfEnabled(_webviewManager);
VirtualView.BlazorWebViewInitializing(new BlazorWebViewInitializingEventArgs());
VirtualView.BlazorWebViewInitialized(new BlazorWebViewInitializedEventArgs
{
WebView = NativeWebView,
});
if (RootComponents != null)
{
foreach (var rootComponent in RootComponents)
{
// Since the page isn't loaded yet, this will always complete synchronously
_ = rootComponent.AddToWebViewManagerAsync(_webviewManager);
}
}
_webviewManager.Navigate("/");
}
private void OnRequestInterceptCallback(IntPtr context, IntPtr request, IntPtr userdata)
{
if (request == IntPtr.Zero)
{
return;
}
var url = NativeWebView.GetInterceptRequestUrl(request);
if (url.StartsWith(AppOrigin))
{
var allowFallbackOnHostPage = url.EndsWith("/");
url = QueryStringHelper.RemovePossibleQueryString(url);
if (_webviewManager!.TryGetResponseContentInternal(url, allowFallbackOnHostPage, out var statusCode, out var statusMessage, out var content, out var headers))
{
var header = $"HTTP/1.0 200 OK\r\n";
foreach (var item in headers)
{
header += $"{item.Key}:{item.Value}\r\n";
}
header += "\r\n";
using (MemoryStream memstream = new MemoryStream())
{
content.CopyTo(memstream);
var body = memstream.ToArray();
NativeWebView.SetInterceptRequestResponse(request, header, body, (uint)body.Length);
}
return;
}
}
NativeWebView.IgnoreInterceptRequest(request);
}
private void OnLoadFinished(object? sender, EventArgs e)
{
NativeWebView.SetFocus(true);
var url = NativeWebView.Url;
if (url == AppOrigin)
NativeWebView.Eval(BlazorInitScript);
}
internal IFileProvider CreateFileProvider(string contentRootDir)
{
return new TizenMauiAssetFileProvider(contentRootDir);
}
}
}

Просмотреть файл

@ -0,0 +1,74 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Primitives;
using Tizen.Applications;
namespace Microsoft.AspNetCore.Components.WebView.Maui
{
/// <summary>
/// A minimal implementation of an IFileProvider to be used by the BlazorWebView and WebViewManager types.
/// </summary>
internal sealed class TizenMauiAssetFileProvider : IFileProvider
{
private readonly string _resDir;
public TizenMauiAssetFileProvider(string contentRootDir)
{
_resDir = Path.Combine(Application.Current.DirectoryInfo.Resource, contentRootDir);
}
public IDirectoryContents GetDirectoryContents(string subpath)
=> new TizenMauiAssetDirectoryContents(Path.Combine(_resDir, subpath));
public IFileInfo GetFileInfo(string subpath)
=> new TizenMauiAssetFileInfo(Path.Combine(_resDir, subpath));
public IChangeToken? Watch(string filter)
=> null;
private sealed class TizenMauiAssetFileInfo : IFileInfo
{
private readonly string _filePath;
public TizenMauiAssetFileInfo(string filePath)
{
_filePath = filePath;
Name = Path.GetFileName(_filePath);
var fileInfo = new FileInfo(_filePath);
Exists = fileInfo.Exists;
Length = Exists ? fileInfo.Length : -1;
}
public bool Exists { get; }
public long Length { get; }
public string PhysicalPath { get; } = null!;
public string Name { get; }
public DateTimeOffset LastModified { get; } = DateTimeOffset.FromUnixTimeSeconds(0);
public bool IsDirectory => false;
public Stream CreateReadStream()
=> File.OpenRead(_filePath);
}
// This is never used by BlazorWebView or WebViewManager
private sealed class TizenMauiAssetDirectoryContents : IDirectoryContents
{
public TizenMauiAssetDirectoryContents(string filePath)
{
}
public bool Exists => false;
public IEnumerator<IFileInfo> GetEnumerator()
=> throw new NotImplementedException();
IEnumerator IEnumerable.GetEnumerator()
=> throw new NotImplementedException();
}
}
}

Просмотреть файл

@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Encodings.Web;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.Extensions.FileProviders;
using TWebView = Tizen.WebView.WebView;
namespace Microsoft.AspNetCore.Components.WebView.Maui
{
/// <summary>
/// An implementation of <see cref="WebViewManager"/> that uses the Tizen WebView browser control
/// to render web content.
/// </summary>
public class TizenWebViewManager : WebViewManager
{
private const string AppOrigin = "http://0.0.0.0/";
private readonly BlazorWebViewHandler _blazorMauiWebViewHandler;
private readonly TWebView _webview;
private readonly string _contentRootRelativeToAppRoot;
/// <summary>
/// Initializes a new instance of <see cref="TizenWebViewManager"/>
/// </summary>
/// <param name="blazorMauiWebViewHandler">The <see cref="BlazorWebViewHandler"/>.</param>
/// <param name="webview">A wrapper to access platform-specific WebView APIs.</param>
/// <param name="provider">The <see cref="IServiceProvider"/> for the application.</param>
/// <param name="dispatcher">A <see cref="Dispatcher"/> instance instance that can marshal calls to the required thread or sync context.</param>
/// <param name="fileProvider">Provides static content to the webview.</param>
/// <param name="jsComponents">Describes configuration for adding, removing, and updating root components from JavaScript code.</param>
/// <param name="contentRootRelativeToAppRoot">Path to the directory containing application content files.</param>
/// <param name="hostPageRelativePath">Path to the host page within the fileProvider.</param>
public TizenWebViewManager(BlazorWebViewHandler blazorMauiWebViewHandler, TWebView webview, IServiceProvider provider, Dispatcher dispatcher, IFileProvider fileProvider, JSComponentConfigurationStore jsComponents, string contentRootRelativeToAppRoot, string hostPageRelativePath)
: base(provider, dispatcher, new Uri(AppOrigin), fileProvider, jsComponents, hostPageRelativePath)
{
_blazorMauiWebViewHandler = blazorMauiWebViewHandler ?? throw new ArgumentNullException(nameof(blazorMauiWebViewHandler));
_webview = webview ?? throw new ArgumentNullException(nameof(webview));
_contentRootRelativeToAppRoot = contentRootRelativeToAppRoot;
}
internal bool TryGetResponseContentInternal(string uri, bool allowFallbackOnHostPage, out int statusCode, out string statusMessage, out Stream content, out IDictionary<string, string> headers)
{
var defaultResult = TryGetResponseContent(uri, allowFallbackOnHostPage, out statusCode, out statusMessage, out content, out headers);
var hotReloadedResult = StaticContentHotReloadManager.TryReplaceResponseContent(_contentRootRelativeToAppRoot, uri, ref statusCode, ref content, headers);
return defaultResult || hotReloadedResult;
}
/// <inheritdoc />
protected override void NavigateCore(Uri absoluteUri)
{
_webview.LoadUrl(absoluteUri.ToString());
}
/// <inheritdoc />
protected override void SendMessage(string message)
{
var messageJSStringLiteral = JavaScriptEncoder.Default.Encode(message);
_webview.Eval($"__dispatchMessageCallback(\"{messageJSStringLiteral}\")");
}
internal void MessageReceivedInternal(Uri uri, string message)
{
MessageReceived(uri, message);
}
}
}

Просмотреть файл

@ -0,0 +1,42 @@
using System;
using Tizen.UIExtensions.ElmSharp;
using ElmSharp;
using TWebView = Tizen.WebView.WebView;
namespace Microsoft.AspNetCore.Components.WebView.Maui
{
/// <summary>
/// A Tizen WebView browser control container.
/// </summary>
public class WebViewContainer : WidgetLayout
{
/// <summary>
/// A Tizen WebView.
/// </summary>
public TWebView WebView { get; }
/// <summary>
/// Initializes a new instance of <see cref="WebViewContainer"/>
/// </summary>
/// <param name="parent">The <see cref="EvasObject"/>.</param>
public WebViewContainer(EvasObject parent) : base(parent)
{
WebView = new TWebView(parent);
SetContent(WebView);
AllowFocus(true);
Focused += OnFocused;
Unfocused += OnUnfocused;
}
void OnFocused(object? sender, EventArgs e)
{
WebView.SetFocus(true);
}
void OnUnfocused(object? sender, EventArgs e)
{
WebView.SetFocus(false);
}
}
}

Просмотреть файл

@ -0,0 +1,79 @@
using System;
using System.Runtime.InteropServices;
using TWebView = Tizen.WebView.WebView;
namespace Microsoft.AspNetCore.Components.WebView.Maui
{
/// <summary>
/// WebViewExtension
/// </summary>
internal static class WebViewExtensions
{
public const string ChromiumEwk = "libchromium-ewk.so";
public static void SetInterceptRequestCallback(this TWebView webView, InterceptRequestCallback callback)
{
var context = webView.GetContext();
var handleField = context.GetType().GetField("_handle", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
var contextHandle = (IntPtr?)handleField?.GetValue(context);
if (contextHandle != null)
ewk_context_intercept_request_callback_set(contextHandle.Value, callback, IntPtr.Zero);
}
public static void SetInspectorStart(this TWebView webView, uint port)
{
var context = webView.GetContext();
var handleField = context.GetType().GetField("_handle", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
var contextHandle = (IntPtr?)handleField?.GetValue(context);
if (contextHandle != null)
ewk_context_inspector_server_start(contextHandle.Value, port);
}
public static bool SetInterceptRequestResponse(this TWebView webView, IntPtr request, string header, byte[] body, uint length)
{
return ewk_intercept_request_response_set(request, header, body, length);
}
public static bool IgnoreInterceptRequest(this TWebView webView, IntPtr request)
{
return ewk_intercept_request_ignore(request);
}
public static string GetInterceptRequestUrl(this TWebView webView, IntPtr request)
{
return Marshal.PtrToStringAnsi(_ewk_intercept_request_url_get(request)) ?? string.Empty;
}
[DllImport(ChromiumEwk)]
internal static extern IntPtr ewk_view_context_get(IntPtr obj);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void InterceptRequestCallback(IntPtr context, IntPtr request, IntPtr userData);
[DllImport(ChromiumEwk)]
internal static extern void ewk_context_intercept_request_callback_set(IntPtr context, InterceptRequestCallback callback, IntPtr userData);
[DllImport(ChromiumEwk, EntryPoint = "ewk_intercept_request_url_get")]
internal static extern IntPtr _ewk_intercept_request_url_get(IntPtr request);
[DllImport(ChromiumEwk, EntryPoint = "ewk_intercept_request_http_method_get")]
internal static extern IntPtr _ewk_intercept_request_http_method_get(IntPtr request);
internal static string ewk_intercept_request_http_method_get(IntPtr request)
{
return Marshal.PtrToStringAnsi(_ewk_intercept_request_http_method_get(request)) ?? string.Empty;
}
[DllImport(ChromiumEwk)]
public static extern uint ewk_context_inspector_server_start(IntPtr context, uint port);
[DllImport(ChromiumEwk)]
internal static extern bool ewk_intercept_request_ignore(IntPtr request);
[DllImport(ChromiumEwk)]
internal static extern bool ewk_intercept_request_response_set(IntPtr request, string header, string body, uint length);
[DllImport(ChromiumEwk)]
internal static extern bool ewk_intercept_request_response_set(IntPtr request, string header, byte[] body, uint length);
}
}

Просмотреть файл

@ -13,6 +13,8 @@ using WebView2Control = Microsoft.UI.Xaml.Controls.WebView2;
using AWebView = Android.Webkit.WebView;
#elif IOS || MACCATALYST
using WebKit;
#elif TIZEN
using TWebView = Tizen.WebView.WebView;
#endif
namespace Microsoft.AspNetCore.Components.WebView
@ -39,6 +41,11 @@ namespace Microsoft.AspNetCore.Components.WebView
/// the default values to allow further configuring additional options.
/// </summary>
public WKWebView WebView { get; internal set; }
#elif TIZEN
/// <summary>
/// Gets the <see cref="TWebView"/> instance that was initialized.
/// </summary>
public TWebView WebView { get; internal set; }
#endif
}
}

Просмотреть файл

@ -12,6 +12,8 @@ using WebView2Control = Microsoft.UI.Xaml.Controls.WebView2;
using AWebView = Android.Webkit.WebView;
#elif IOS || MACCATALYST
using WebKit;
#elif TIZEN
using TWebView = Tizen.WebView.WebView;
#endif
namespace Microsoft.AspNetCore.Components.WebView

Просмотреть файл

@ -4,6 +4,7 @@ using Microsoft.Maui;
using Microsoft.Maui.Controls.Compatibility;
using Microsoft.Maui.Controls.Compatibility.Hosting;
using Microsoft.Maui.Controls.Hosting;
using Microsoft.Maui.Devices;
using Microsoft.Maui.Hosting;
namespace Microsoft.Maui.Controls.Compatibility.ControlGallery
@ -41,6 +42,12 @@ namespace Microsoft.Maui.Controls.Compatibility.ControlGallery
effects.AddCompatibilityEffects(AppDomain.CurrentDomain.GetAssemblies());
});
if (DeviceInfo.Platform == DevicePlatform.Tizen)
{
//Some controls still need to use legacy renderers on Tizen.
builder.UseMauiCompatibility();
}
DependencyService.Register(AppDomain.CurrentDomain.GetAssemblies());
return builder;

Просмотреть файл

@ -1,12 +1,13 @@
using System.ComponentModel;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen;
using Microsoft.Maui.Controls.Compatibility.Platform.Tizen;
using Microsoft.Maui.Controls.Platform;
using ElmSharp;
using Xamarin.Forms;
using Xamarin.Forms.ControlGallery.Tizen;
using Xamarin.Forms.Platform.Tizen;
using EColor = ElmSharp.Color;
[assembly: ExportEffect(typeof(BorderEffect), "BorderEffect")]
namespace Xamarin.Forms.ControlGallery.Tizen
namespace Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen
{
public class BorderEffect : PlatformEffect
{

Просмотреть файл

@ -0,0 +1,38 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>$(_MauiDotNetTfm)-tizen</TargetFramework>
<OutputType>Exe</OutputType>
<RootNamespace>Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen</RootNamespace>
<AssemblyName>Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen</AssemblyName>
<IsPackable>false</IsPackable>
<Nullable>disable</Nullable>
<!--<DefineConstants>$(DefineConstants);HAVE_OPENTK</DefineConstants>-->
<!--<MtouchLink Condition="'$(CI)' == 'true'">Full</MtouchLink>-->
<NoWarn>0612</NoWarn>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Tizen.NET.MaterialComponents" Version="0.9.9-pre2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\Compatibility\Maps\src\Tizen\Compatibility.Maps.Tizen.csproj" />
<ProjectReference Include="..\..\..\..\Controls\tests\CustomAttributes\Controls.CustomAttributes.csproj" />
<ProjectReference Include="..\..\..\..\Controls\Maps\src\Controls.Maps.csproj" />
<ProjectReference Include="..\..\..\..\Controls\src\Core\Controls.Core.csproj" />
<ProjectReference Include="..\..\..\..\Core\src\Core.csproj" />
<ProjectReference Include="..\..\..\..\Compatibility\Core\src\Compatibility.csproj" />
<ProjectReference Include="..\Core\Compatibility.ControlGallery.Core.csproj" />
<!-- <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj" />
<ProjectReference Include="..\Xamarin.Forms.Material.Tizen\Xamarin.Forms.Material.Tizen.csproj" />
<ProjectReference Include="..\Xamarin.Forms.Platform\Xamarin.Forms.Platform.csproj" />
<ProjectReference Include="..\Xamarin.Forms.Xaml\Xamarin.Forms.Xaml.csproj" />
<ProjectReference Include="..\Xamarin.Forms.Platform.Tizen\Xamarin.Forms.Platform.Tizen.csproj" />
<ProjectReference Include="..\Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj" />
<ProjectReference Include="..\Xamarin.Forms.Maps.Tizen\Xamarin.Forms.Maps.Tizen.csproj" />
<ProjectReference Include="..\Xamarin.Forms.Controls\Xamarin.Forms.Controls.csproj" /> -->
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,32 @@
using ElmSharp;
using Tizen.Applications;
using Tizen.NET.MaterialComponents;
using Microsoft.Maui.Controls.Compatibility.ControlGallery;
using Microsoft.Maui.Controls.Compatibility.ControlGallery.Issues;
using Microsoft.Maui.Controls.Compatibility.Platform.Tizen;
using Microsoft.Maui.Controls.Internals;
using Microsoft.Maui.Handlers;
using Microsoft.Maui.Hosting;
using Microsoft.Maui.Platform;
namespace Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen
{
class MainApplication : MauiApplication
{
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
protected override void OnCreate()
{
base.OnCreate();
MaterialComponents.Init(DirectoryInfo.Resource);
}
static void Main(string[] args)
{
var app = new MainApplication();
FormsMaps.Init("HERE", "write-your-API-key-here");
//FormsMaterial.Init();
app.Run(args);
}
}
}

Просмотреть файл

@ -0,0 +1,22 @@
using Microsoft.Maui.Controls.Compatibility;
using Microsoft.Maui.Controls.Compatibility.ControlGallery;
using Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen;
using Microsoft.Maui.Controls.Compatibility.Platform.Tizen;
[assembly: ExportRenderer(typeof(DisposeLabel), typeof(DisposeLabelRenderer))]
namespace Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen
{
#pragma warning disable CS0618 // Type or member is obsolete
public class DisposeLabelRenderer : LabelRenderer
#pragma warning disable CS0618 // Type or member is obsolete
{
protected override void Dispose(bool disposing)
{
if (disposing)
{
((DisposeLabel)Element).SendRendererDisposed();
}
base.Dispose(disposing);
}
}
}

Просмотреть файл

@ -0,0 +1,22 @@
using Microsoft.Maui.Controls.Compatibility;
using Microsoft.Maui.Controls.Compatibility.ControlGallery;
using Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen;
using Microsoft.Maui.Controls.Compatibility.Platform.Tizen;
[assembly: ExportRenderer(typeof(DisposePage), typeof(DisposePageRenderer))]
namespace Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen
{
#pragma warning disable CS0618 // Type or member is obsolete
public class DisposePageRenderer : PageRenderer
#pragma warning disable CS0618 // Type or member is obsolete
{
protected override void Dispose(bool disposing)
{
if (disposing)
{
((DisposePage)Element).SendRendererDisposed();
}
base.Dispose(disposing);
}
}
}

Просмотреть файл

@ -1,12 +1,13 @@
using System;
using System.Collections.Generic;
using Xamarin.Forms;
using Xamarin.Forms.ControlGallery.Tizen;
using Xamarin.Forms.Controls;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Controls.Compatibility;
using Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen;
using Microsoft.Maui.Controls.Internals;
[assembly: Dependency(typeof(PlatformSpecificCoreGalleryFactory))]
namespace Xamarin.Forms.ControlGallery.Tizen
namespace Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen
{
public class PlatformSpecificCoreGalleryFactory : IPlatformSpecificCoreGalleryFactory
{

Просмотреть файл

@ -1,10 +1,11 @@
using Xamarin.Forms;
using Xamarin.Forms.ControlGallery.Tizen;
using Xamarin.Forms.Controls;
using Xamarin.Forms.Platform.Tizen;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Controls.Compatibility;
using Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen;
using Microsoft.Maui.Controls.Compatibility.Platform.Tizen;
using Microsoft.Maui.Controls.Internals;
[assembly: Dependency(typeof(RegistrarValidationService))]
namespace Xamarin.Forms.ControlGallery.Tizen
namespace Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen
{
public class RegistrarValidationService : IRegistrarValidationService
{

Просмотреть файл

@ -0,0 +1,27 @@
using Microsoft.Maui.Controls;
using Microsoft.Maui.Controls.Compatibility;
using Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen;
using Microsoft.Maui.Controls.Compatibility.ControlGallery.Issues.Helpers;
using Microsoft.Maui.Controls.Compatibility.Platform.Tizen;
using Microsoft.Maui.Controls.Internals;
using Microsoft.Maui.Platform;
using ELabel = ElmSharp.Label;
[assembly: Dependency(typeof(SampleNativeControl))]
namespace Microsoft.Maui.Controls.Compatibility.ControlGallery.Tizen
{
public class SampleNativeControl : ISampleNativeControl
{
public View View
{
get
{
var label = new ELabel(CoreAppExtensions.MainWindow)
{
Text = "Sample Native Control"
};
return label.ToView();
}
}
}
}

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 4.9 KiB

После

Ширина:  |  Высота:  |  Размер: 4.9 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 10 KiB

После

Ширина:  |  Высота:  |  Размер: 10 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 2.4 KiB

После

Ширина:  |  Высота:  |  Размер: 2.4 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 8.1 KiB

После

Ширина:  |  Высота:  |  Размер: 8.1 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 206 KiB

После

Ширина:  |  Высота:  |  Размер: 206 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 6.1 KiB

После

Ширина:  |  Высота:  |  Размер: 6.1 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 5.2 KiB

После

Ширина:  |  Высота:  |  Размер: 5.2 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 615 B

После

Ширина:  |  Высота:  |  Размер: 615 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

После

Ширина:  |  Высота:  |  Размер: 1.4 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.2 KiB

После

Ширина:  |  Высота:  |  Размер: 1.2 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 232 B

После

Ширина:  |  Высота:  |  Размер: 232 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 629 B

После

Ширина:  |  Высота:  |  Размер: 629 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 629 B

После

Ширина:  |  Высота:  |  Размер: 629 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.5 KiB

После

Ширина:  |  Высота:  |  Размер: 1.5 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 480 B

После

Ширина:  |  Высота:  |  Размер: 480 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 404 B

После

Ширина:  |  Высота:  |  Размер: 404 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 490 B

После

Ширина:  |  Высота:  |  Размер: 490 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 5.0 KiB

После

Ширина:  |  Высота:  |  Размер: 5.0 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.5 KiB

После

Ширина:  |  Высота:  |  Размер: 1.5 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 77 KiB

После

Ширина:  |  Высота:  |  Размер: 77 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 4.9 KiB

После

Ширина:  |  Высота:  |  Размер: 4.9 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 317 B

После

Ширина:  |  Высота:  |  Размер: 317 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 5.1 KiB

После

Ширина:  |  Высота:  |  Размер: 5.1 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 923 B

После

Ширина:  |  Высота:  |  Размер: 923 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 923 B

После

Ширина:  |  Высота:  |  Размер: 923 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.1 KiB

После

Ширина:  |  Высота:  |  Размер: 1.1 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.1 KiB

После

Ширина:  |  Высота:  |  Размер: 1.1 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 671 B

После

Ширина:  |  Высота:  |  Размер: 671 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 320 B

После

Ширина:  |  Высота:  |  Размер: 320 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.2 KiB

После

Ширина:  |  Высота:  |  Размер: 1.2 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.2 KiB

После

Ширина:  |  Высота:  |  Размер: 1.2 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 936 B

После

Ширина:  |  Высота:  |  Размер: 936 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 15 KiB

После

Ширина:  |  Высота:  |  Размер: 15 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 7.8 KiB

После

Ширина:  |  Высота:  |  Размер: 7.8 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 544 B

После

Ширина:  |  Высота:  |  Размер: 544 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 255 B

После

Ширина:  |  Высота:  |  Размер: 255 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 605 B

После

Ширина:  |  Высота:  |  Размер: 605 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 219 B

После

Ширина:  |  Высота:  |  Размер: 219 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 227 B

После

Ширина:  |  Высота:  |  Размер: 227 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 430 B

После

Ширина:  |  Высота:  |  Размер: 430 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.1 KiB

После

Ширина:  |  Высота:  |  Размер: 1.1 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 5.6 KiB

После

Ширина:  |  Высота:  |  Размер: 5.6 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.1 KiB

После

Ширина:  |  Высота:  |  Размер: 1.1 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 3.0 KiB

После

Ширина:  |  Высота:  |  Размер: 3.0 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 5.4 KiB

После

Ширина:  |  Высота:  |  Размер: 5.4 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 484 B

После

Ширина:  |  Высота:  |  Размер: 484 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 484 B

После

Ширина:  |  Высота:  |  Размер: 484 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 5.3 KiB

После

Ширина:  |  Высота:  |  Размер: 5.3 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 122 KiB

После

Ширина:  |  Высота:  |  Размер: 122 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 3.0 KiB

После

Ширина:  |  Высота:  |  Размер: 3.0 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 708 B

После

Ширина:  |  Высота:  |  Размер: 708 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 111 KiB

После

Ширина:  |  Высота:  |  Размер: 111 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 6.6 KiB

После

Ширина:  |  Высота:  |  Размер: 6.6 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.5 KiB

После

Ширина:  |  Высота:  |  Размер: 1.5 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 21 KiB

После

Ширина:  |  Высота:  |  Размер: 21 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 380 B

После

Ширина:  |  Высота:  |  Размер: 380 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 4.9 KiB

После

Ширина:  |  Высота:  |  Размер: 4.9 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 5.6 KiB

После

Ширина:  |  Высота:  |  Размер: 5.6 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 151 KiB

После

Ширина:  |  Высота:  |  Размер: 151 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 53 KiB

После

Ширина:  |  Высота:  |  Размер: 53 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 7.0 KiB

После

Ширина:  |  Высота:  |  Размер: 7.0 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 4.0 KiB

После

Ширина:  |  Высота:  |  Размер: 4.0 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 181 B

После

Ширина:  |  Высота:  |  Размер: 181 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 671 B

После

Ширина:  |  Высота:  |  Размер: 671 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.5 KiB

После

Ширина:  |  Высота:  |  Размер: 1.5 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 9.5 KiB

После

Ширина:  |  Высота:  |  Размер: 9.5 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 3.4 KiB

После

Ширина:  |  Высота:  |  Размер: 3.4 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 463 B

После

Ширина:  |  Высота:  |  Размер: 463 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 6.6 KiB

После

Ширина:  |  Высота:  |  Размер: 6.6 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 539 B

После

Ширина:  |  Высота:  |  Размер: 539 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 539 B

После

Ширина:  |  Высота:  |  Размер: 539 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 20 KiB

После

Ширина:  |  Высота:  |  Размер: 20 KiB

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше