New version of Progress Telerik UI for Xamarin SDK examples.

This commit is contained in:
GitTask 2021-09-15 11:39:55 +03:00
Родитель beee87b21f
Коммит bfc857e673
31 изменённых файлов: 1063 добавлений и 62 удалений

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

@ -1,6 +1,7 @@
using Android.App;
using Android.Content.PM;
using Android.OS;
using Android.Runtime;
using AndroidX.AppCompat.App;
using SDKBrowser.Services;
using System.Collections.Generic;
@ -19,6 +20,8 @@ namespace SDKBrowser.Droid
StrictMode.SetVmPolicy(builder.Build());
base.OnCreate(bundle);
Plugin.Media.CrossMedia.Current.Initialize();
Xamarin.Essentials.Platform.Init(this, bundle);
Forms.Init(this, bundle);
this.SetTheme(Resource.Style.Theme_Design_Light);
@ -37,5 +40,12 @@ namespace SDKBrowser.Droid
return backdoorService.NavigateToExample(controlName, exampleName);
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
Plugin.Permissions.PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}

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

@ -461,12 +461,18 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Plugin.Permissions">
<Version>6.0.1</Version>
</PackageReference>
<PackageReference Include="SkiaSharp">
<Version>1.68.0</Version>
</PackageReference>
<PackageReference Include="SkiaSharp.Views.Forms">
<Version>1.68.0</Version>
</PackageReference>
<PackageReference Include="Xam.Plugin.Media">
<Version>5.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2083" />
<PackageReference Include="Xamarin.Essentials" Version="1.6.1" />
<PackageReference Include="Xamarin.Google.Android.Material">

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

@ -589,6 +589,9 @@
<PackageReference Include="SkiaSharp.Views.Forms">
<Version>1.68.0</Version>
</PackageReference>
<PackageReference Include="Xam.Plugin.Media">
<Version>5.0.1</Version>
</PackageReference>
<PackageReference Include="Xam.Plugins.Settings">
<Version>3.1.1</Version>
</PackageReference>

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

@ -39,6 +39,10 @@
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app needs access to photos.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>This app needs access to the photo gallery.</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>XSAppIconAssets</key>

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

@ -629,6 +629,9 @@
<PackageReference Include="SkiaSharp.Views.Forms">
<Version>1.68.0</Version>
</PackageReference>
<PackageReference Include="Xam.Plugin.Media">
<Version>5.0.1</Version>
</PackageReference>
<PackageReference Include="Xam.Plugins.Settings">
<Version>3.1.1</Version>
</PackageReference>

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

@ -0,0 +1,55 @@
using Plugin.Media;
using Plugin.Media.Abstractions;
using SDKBrowser.Helpers;
using Telerik.XamarinForms.RichTextEditor;
using Xamarin.Forms;
namespace SDKBrowser.Behaviors
{
public class PickImageBehavior : Behavior<RadRichTextEditor>
{
protected override void OnAttachedTo(RadRichTextEditor richTextEditor)
{
base.OnAttachedTo(richTextEditor);
richTextEditor.PickImage += OnPickImage;
}
protected override void OnDetachingFrom(RadRichTextEditor richTextEditor)
{
base.OnDetachingFrom(richTextEditor);
richTextEditor.PickImage -= OnPickImage;
}
private static async void OnPickImage(object sender, PickImageEventArgs eventArgs)
{
var mediaPlugin = CrossMedia.Current;
if (mediaPlugin.IsPickPhotoSupported)
{
if (!await PermissionsHelper.RequestPhotosAccess())
{
return;
}
if (!await PermissionsHelper.RequestStorrageAccess())
{
return;
}
var mediaFile = await mediaPlugin.PickPhotoAsync();
if (mediaFile != null)
{
var imageSource = RichTextImageSource.FromFile(mediaFile.Path);
eventArgs.Accept(imageSource);
return;
}
}
eventArgs.Cancel();
}
}
}

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

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:telerikBarcode="clr-namespace:Telerik.XamarinForms.Barcode;assembly=Telerik.XamarinForms.Barcode"
x:Class="SDKBrowser.Examples.BarcodeControl.FeaturesCategory.DataMatrixExample.DataMatrix">
<Grid Margin="20">
<Grid.RowDefinitions>
<RowDefinition Height="3*" />
<RowDefinition Height="2*" />
</Grid.RowDefinitions>
<!-- >> datamatrix-example-xaml -->
<telerikBarcode:RadBarcode x:Name="Barcode"
Value="https://www.telerik.com/xamarin-ui">
<telerikBarcode:RadBarcode.Symbology>
<telerikBarcode:DataMatrix Encodation="Ascii"
SymbolSize="SquareAuto" />
</telerikBarcode:RadBarcode.Symbology>
</telerikBarcode:RadBarcode>
<!-- << datamatrix-example-xaml -->
</Grid>
</ContentView>

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

@ -0,0 +1,14 @@
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace SDKBrowser.Examples.BarcodeControl.FeaturesCategory.DataMatrixExample
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class DataMatrix : ContentView
{
public DataMatrix()
{
InitializeComponent();
}
}
}

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

@ -4,12 +4,14 @@
xmlns:telerikInput="clr-namespace:Telerik.XamarinForms.Input;assembly=Telerik.XamarinForms.Input"
x:Class="SDKBrowser.Examples.CalendarControl.FeaturesCategory.DayViewSettingsExample.DayViewSettingsAndStyle">
<Grid>
<!-- >> calendar-dayview-settings -->
<telerikInput:RadCalendar x:Name="calendar" ViewMode="Day">
<!-- >> calendar-dayview-settings -->
<telerikInput:RadCalendar x:Name="calendar"
ViewMode="Day">
<telerikInput:RadCalendar.DayViewSettings>
<telerikInput:DayViewSettings DayStartTime="9:00:00"
DayEndTime="18:00:00"
TimelineInterval="2:00" />
TimelineInterval="2:00"
IsCurrentTimeIndicatorVisible="True"/>
</telerikInput:RadCalendar.DayViewSettings>
<telerikInput:RadCalendar.DayViewStyle>
<telerikInput:DayViewStyle AllDayAppointmentBackgroundColor="Blue"
@ -18,9 +20,12 @@
TimelineLabelsTextColor="DarkGray"
TimelineLabelsFontSize="10"
AppointmentFontSize="12"
AppointmentDetailsFontSize="10"/>
AppointmentDetailsFontSize="10"
CurrentTimeIndicatorColor="Red"
CurrentTimeIndicatorWidth="5"
CurrentTimeIndicatorRadius="5" />
</telerikInput:RadCalendar.DayViewStyle>
</telerikInput:RadCalendar>
<!-- << calendar-dayview-settings -->
<!-- << calendar-dayview-settings -->
</Grid>
</ContentView>

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

@ -1,4 +1,5 @@
using System;
using SDKBrowser.Behaviors;
using System;
using System.IO;
using System.Linq;
using System.Reflection;
@ -26,6 +27,7 @@ namespace SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.CommandsExa
});
this.richTextEditor.Source = RichTextSource.FromStream(streamFunc);
this.richTextEditor.Behaviors.Add(new PickImageBehavior());
}
}
}

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

@ -1,4 +1,5 @@
using Telerik.XamarinForms.RichTextEditor;
using SDKBrowser.Behaviors;
using Telerik.XamarinForms.RichTextEditor;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
@ -19,6 +20,7 @@ namespace SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.CustomConte
<p><strong>Tenerife</strong> is the largest and most populated island of the eight <a href='https://en.wikipedia.org/wiki/Canary_Islands' target='_blank'>Canary Islands</a>.</p>
<p style='color:#808080'>It is also the most populated island of <strong>Spain</strong>, with a land area of <i>2,034.38 square kilometers</i> and <i>904,713</i> inhabitants, 43% of the total population of the <strong>Canary Islands</strong>.</p>";
this.richTextEditor.Source = RichTextSource.FromString(htmlSource);
this.richTextEditor.Behaviors.Add(new PickImageBehavior());
}
}
}

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

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:telerikRichTextEditor="clr-namespace:Telerik.XamarinForms.RichTextEditor;assembly=Telerik.XamarinForms.RichTextEditor"
x:Class="SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.CustomImagePickerExample.CustomImagePicker">
<!-- >> richtexteditor-custom-image-picker -->
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<telerikRichTextEditor:RadRichTextEditor x:Name="richTextEditor"/>
<telerikRichTextEditor:RadRichTextEditorToolbar x:Name="richTextToolbar"
Grid.Row="1"
RichTextEditor="{x:Reference richTextEditor}"
AutoGenerateItems="False">
<telerikRichTextEditor:ImagePickerToolbarItem x:Name="imagePicker"/>
<telerikRichTextEditor:FontFamilyToolbarItem />
<telerikRichTextEditor:FontSizeToolbarItem />
<telerikRichTextEditor:BoldToolbarItem />
<telerikRichTextEditor:ItalicToolbarItem/>
<telerikRichTextEditor:UnderlineToolbarItem />
</telerikRichTextEditor:RadRichTextEditorToolbar>
</Grid>
<!-- << richtexteditor-custom-image-picker -->
</ContentView>

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

@ -0,0 +1,95 @@
using Plugin.Media;
using Plugin.Media.Abstractions;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using Telerik.XamarinForms.RichTextEditor;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using AndroidSpecific = Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
namespace SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.CustomImagePickerExample
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class CustomImagePicker : ContentView
{
private AndroidSpecific.WindowSoftInputModeAdjust lastInputMode = AndroidSpecific.WindowSoftInputModeAdjust.Unspecified;
private Assembly currentAssembly = typeof(CustomImagePicker).Assembly;
public CustomImagePicker()
{
InitializeComponent();
// >> rte-custom-image-picker-initialize-images
InitializeImages();
// << rte-custom-image-picker-initialize-images
// >> rte-custom-image-picker-html-document
Func<CancellationToken, Task<Stream>> streamFunc = ct => Task.Run(() =>
{
string fileName = this.currentAssembly.GetManifestResourceNames().FirstOrDefault(n => n.Contains("pick-image-demo.html"));
Stream stream = this.currentAssembly.GetManifestResourceStream(fileName);
return stream;
});
this.richTextEditor.Source = RichTextSource.FromStream(streamFunc);
// << rte-custom-image-picker-html-document
}
// >> rte-custom-image-picker-add-images-to-picker-toolbar-item
private void InitializeImages()
{
var resourceNames = this.currentAssembly.GetManifestResourceNames();
var imageSources = new List<RichTextImageSource>();
foreach (var resourceName in resourceNames)
{
if (resourceName.Contains("emoji"))
{
var imageSource = RichTextImageSource.FromStream(() =>
this.currentAssembly.GetManifestResourceStream(resourceName), RichTextImageType.Png);
imageSources.Add(imageSource);
}
}
this.imagePicker.ItemsSource = imageSources;
}
// << rte-custom-image-picker-add-images-to-picker-toolbar-item
protected override void OnParentSet()
{
base.OnParentSet();
if (Device.RuntimePlatform == Device.Android)
{
if (this.Parent != null)
{
if (this.lastInputMode == AndroidSpecific.WindowSoftInputModeAdjust.Unspecified)
{
this.lastInputMode = GetSoftInputMode();
}
SetSoftInputMode(AndroidSpecific.WindowSoftInputModeAdjust.Resize);
}
else
{
SetSoftInputMode(this.lastInputMode);
}
}
}
private static AndroidSpecific.WindowSoftInputModeAdjust GetSoftInputMode()
{
return AndroidSpecific.Application.GetWindowSoftInputModeAdjust(Application.Current);
}
private static void SetSoftInputMode(AndroidSpecific.WindowSoftInputModeAdjust inputMode)
{
AndroidSpecific.Application.SetWindowSoftInputModeAdjust(Application.Current, inputMode);
}
}
}

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

@ -1,4 +1,5 @@
using Telerik.XamarinForms.RichTextEditor;
using SDKBrowser.Behaviors;
using Telerik.XamarinForms.RichTextEditor;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
@ -16,6 +17,7 @@ namespace SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.HyperlinkEr
<p><a href='www.google.com'>Google - not absolute Url</a></p>
<p><a href='http:/www.wvtesting.com'>Wrong format of Url</a></p>";
this.richTextEditor.Source = RichTextSource.FromString(htmlSource);
this.richTextEditor.Behaviors.Add(new PickImageBehavior());
}
// >> richtexteditor-hyperlinkerrorhandling-code

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

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:telerikRichTextEditor="clr-namespace:Telerik.XamarinForms.RichTextEditor;assembly=Telerik.XamarinForms.RichTextEditor"
x:Class="SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.InsertImagesExample.InsertImages">
<ContentView.Content>
<!-- >> rte-insert-images -->
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<telerikRichTextEditor:RadRichTextEditorToolbar x:Name="richTextToolbar" RichTextEditor="{x:Reference richTextEditor}" />
<telerikRichTextEditor:RadRichTextEditor x:Name="richTextEditor" Grid.Row="1" PickImage="OnPickImage"/>
</Grid>
<!-- << rte-insert-images -->
</ContentView.Content>
</ContentView>

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

@ -0,0 +1,102 @@
using Plugin.Media;
using Plugin.Media.Abstractions;
using SDKBrowser.Helpers;
using System;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using Telerik.XamarinForms.RichTextEditor;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using AndroidSpecific = Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
namespace SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.InsertImagesExample
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class InsertImages : ContentView
{
private AndroidSpecific.WindowSoftInputModeAdjust lastInputMode = AndroidSpecific.WindowSoftInputModeAdjust.Unspecified;
public InsertImages()
{
InitializeComponent();
// >> rte-insert-images-add-rte-source
Func<CancellationToken, Task<Stream>> streamFunc = ct => Task.Run(() =>
{
Assembly assembly = typeof(InsertImages).Assembly;
string fileName = assembly.GetManifestResourceNames().FirstOrDefault(n => n.Contains("PickYourHoliday.html"));
Stream stream = assembly.GetManifestResourceStream(fileName);
return stream;
});
this.richTextEditor.Source = RichTextSource.FromStream(streamFunc);
// << rte-insert-images-add-rte-source
}
protected override void OnParentSet()
{
base.OnParentSet();
if (Device.RuntimePlatform == Device.Android)
{
if (this.Parent != null)
{
if (this.lastInputMode == AndroidSpecific.WindowSoftInputModeAdjust.Unspecified)
{
this.lastInputMode = GetSoftInputMode();
}
SetSoftInputMode(AndroidSpecific.WindowSoftInputModeAdjust.Resize);
}
else
{
SetSoftInputMode(this.lastInputMode);
}
}
}
private static AndroidSpecific.WindowSoftInputModeAdjust GetSoftInputMode()
{
return AndroidSpecific.Application.GetWindowSoftInputModeAdjust(Application.Current);
}
private static void SetSoftInputMode(AndroidSpecific.WindowSoftInputModeAdjust inputMode)
{
AndroidSpecific.Application.SetWindowSoftInputModeAdjust(Application.Current, inputMode);
}
// >> rte-insert-images-pick-image-implementation
private async void OnPickImage(object sender, PickImageEventArgs eventArgs)
{
var mediaPlugin = CrossMedia.Current;
if (mediaPlugin.IsPickPhotoSupported)
{
if (!await PermissionsHelper.RequestPhotosAccess())
{
return;
}
if (!await PermissionsHelper.RequestStorrageAccess())
{
return;
}
var mediaFile = await mediaPlugin.PickPhotoAsync();
if (mediaFile != null)
{
var imageSource = RichTextImageSource.FromFile(mediaFile.Path);
eventArgs.Accept(imageSource);
return;
}
}
// << rte-insert-images-pick-image-implementation
}
}
}

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

@ -1,4 +1,5 @@
using System;
using SDKBrowser.Behaviors;
using System;
using System.IO;
using System.Linq;
using System.Reflection;
@ -29,6 +30,8 @@ namespace SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.KeyFeatures
this.richTextEditor.Source = RichTextSource.FromStream(streamFunc);
// << richtexteditor-keyfeatures-fromstream
this.richTextEditor.Behaviors.Add(new PickImageBehavior());
}
private async void GetHTML_Clicked(object sender, EventArgs e)

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

@ -0,0 +1,520 @@
<html>
<head />
<body>
<h1>Barcelona &amp; Tenerife</h1>
<div style="width: 220px; height: 220px; float: left;">
<img style="width: 200px; height: 200px;" src="data:image/jpeg;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAAB
AAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABg
AAAAAQAAAGAAAAABcGFpbnQubmV0IDQuMi4xMwAA/+EDSmh0dHA6Ly9ucy5hZG9i
ZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBD
ZWhpSHpyZVN6TlRjemtjOWQiPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6
bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1
Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4NCiAgPHJkZjpSREYg
eG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50
YXgtbnMjIj4NCiAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxu
czp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1N
PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0i
aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIg
eG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93
cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzdFMzk3MzE1MTQ3MTFFNUI2
Qzc5N0M3NzBEOTY0RTEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzdFMzk3
MzI1MTQ3MTFFNUI2Qzc5N0M3NzBEOTY0RTEiPg0KICAgICAgPHhtcE1NOkRlcml2
ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzdFMzk3MkY1MTQ3MTFF
NUI2Qzc5N0M3NzBEOTY0RTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzdF
Mzk3MzA1MTQ3MTFFNUI2Qzc5N0M3NzBEOTY0RTEiIC8+DQogICAgPC9yZGY6RGVz
Y3JpcHRpb24+DQogIDwvcmRmOlJERj4NCjwveDp4bXBtZXRhPg0KPD94cGFja2V0
IGVuZD0iciI/Pv/bAEMACgcHCAcGCggICAsKCgsOGBAODQ0OHRUWERgjHyUkIh8i
ISYrNy8mKTQpISIwQTE0OTs+Pj4lLkRJQzxINz0+O//bAEMBCgsLDg0OHBAQHDso
Iig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7O//AABEIAOYA5gMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQID
BAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEU
MoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNU
VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq
srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/
xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUE
BAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXx
FxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqC
g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV
1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AJMUYp+KMV9KeCMx
Rin4oxQAzFGKfilxSAiK0mKlxSFaBkWKMVJtpMUAMxRin7aULQAwCnAU7bS4oAbi
jFOxS4oAZijFPxRigBmKXFOxRigBmKMU/FGKAGYoxT8UYoAbijFOxRigBuKMU7FG
KQDMUU/FFMB22jbUm2jbQIjxRtqTbRtoAj20uKfijFAyPbRipMUmKAGbaTbUm2l2
0gIttLtqTbRtoAj20bakxRigBmKMU/bRimAzFGKfijFIBmKMU/FGKAGYoxT9tGKA
G4pMVJijFAEeKMU/FGKAGYpMVJikxQAzFFPxRQBOUNJsNXzb7etAg79qjmL5SgEJ
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
qc+tFFFgEQhv4iAPaiiigD//2Q==" />
</div>
<p><strong>Barcelona</strong> is an excellent place to discover world-class arts and culture. The sights in Barcelona are second to none. Don&rsquo;t miss the architectural wonder, Casa Mila - otherwise known as La Pedrera. You&rsquo;ll want to see another one of Antoni Gaudi&rsquo;s architectural masterpieces, Casa Batllo, which is located at the center of Barcelona.</p>
<p><strong>Tenerife</strong>, one of the nearby Canary Islands, is the perfect escape once you&rsquo;ve had your fill of the city. In Los Gigantes, life revolves around the marina. Take a boat out in search of bottlenose dolphins and whales. While you&rsquo;re in Tenerife, visit Mount Teide. It&rsquo;s the highest point in Spain and the third-largest volcano in the world.</p>
<h1>Attractions</h1>
<table style="width:100%; border-collapse:collapse;">
<tbody>
<tr>
<td style="width:80px;">
<img alt="" src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAAL
EgHS3X78AAABc0lEQVQ4jX1TsU6DUBQ9kKZxKx+gsYMz4uCsTk7ETqx1cfYHSGwi
u12ZtKuTkR9owg9QXJwMxsmtjY2tU80l5+IrpZ7kBbice965991nrVYr1BEluQPA
Y7gIfbfYIBEbAkweAzhs4E8ATPkunGGrgTRg8ohkdeLVRE8kZt0+T2THSwCnXB0S
zkLfHTfZjpJceEMRtLnjHYALJn8qMU4DJ06DB3maAhQuSxGBa9Z2FPquBeCVvAyA
Q1fdBiNSwkx68C5WQt/NartMgcfplmRFZrObWlelXGfGaeBJOfg7qRItWu3TqjYt
Y1KXsQGbpqhmxDaSPFOZeAKwD+CeDe7EadAz/hc2a5/RQaUcp8FwyzD1zL7oIGWs
/UB/LH6OC8taXu20X3YZ0vF2DIGxCkgZItDmkfbni3PpC76+ZTxKfAB4M452zYEI
3AAIAMwbbAv2uBQjGajqMkVJri4E0hP5lpWZIx0leVmGxtZuI2fh3+u7BgC/kguB
yR0dXpUAAAAASUVORK5CYII=" />
<span style="color:#69a8cf;"><strong>IMAGE</strong></span>
</td>
<td style="width:150px;">
<img alt="" src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAA
AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U
Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6
eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8w
OC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE
ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRv
YmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv
bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20v
eGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRv
YmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlE
PSJ4bXAuaWlkOjk1RTI4N0EyNTA4MDExRTU5RDA3OUM1MTUxRDY5MkFFIiB4bXBN
TTpEb2N1bWVudElEPSJ4bXAuZGlkOjk1RTI4N0EzNTA4MDExRTU5RDA3OUM1MTUx
RDY5MkFFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9Inht
cC5paWQ6OTVFMjg3QTA1MDgwMTFFNTlEMDc5QzUxNTFENjkyQUUiIHN0UmVmOmRv
Y3VtZW50SUQ9InhtcC5kaWQ6OTVFMjg3QTE1MDgwMTFFNTlEMDc5QzUxNTFENjky
QUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+
IDw/eHBhY2tldCBlbmQ9InIiPz4ErhkDAAABGUlEQVR42mL8//8/AzqIX3kuAEjl
A7EDVOgAEDcuDDc6gK6WEd0AoOYFIIoBOwAZ0oAswITFZpDmj0BcCFTMCMIgNlSs
HqjGAacBQFAAoyUFNj1vOxj+DYRBbKAYzOYGfAbYgwigrQv4OK/PZ2d9xQnCfBzX
5wPFJiCrwWUAdsCIWwrdgIvQsCj49F0z8ecfse8gDGKDxKBqDuIz4AKUrn/+wU+i
ym4lFwgD2ZIgMajcA2QNLGgGbIDGggAQTwDaOgGLqzcQSgcgG+RxePkhMDAVCAXi
AjzBuYBQIILABGiiQQcfoXL4DQA68QN6YoElIKgc/ryAFBYHkBLNQaBmB2LSAXqy
/gjFBTjTGC4XQF2RAEvauNQABBgAex5x7brCGKAAAAAASUVORK5CYII=" />
<span style="color:#69a8cf;"><strong>LOCATION</strong></span>
</td>
<td>
<img alt="" src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAA
AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U
Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6
eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8w
OC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE
ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRv
YmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv
bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20v
eGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRv
YmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlE
PSJ4bXAuaWlkOkE2M0M1RkZGNTA4MDExRTU4RDg1QTc4MDkxNzM4MzgzIiB4bXBN
TTpEb2N1bWVudElEPSJ4bXAuZGlkOkE2M0M2MDAwNTA4MDExRTU4RDg1QTc4MDkx
NzM4MzgzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9Inht
cC5paWQ6QTYzQzVGRkQ1MDgwMTFFNThEODVBNzgwOTE3MzgzODMiIHN0UmVmOmRv
Y3VtZW50SUQ9InhtcC5kaWQ6QTYzQzVGRkU1MDgwMTFFNThEODVBNzgwOTE3Mzgz
ODMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+
IDw/eHBhY2tldCBlbmQ9InIiPz6Zb8QSAAABJElEQVR42pRTvQ4BQRA+m61UV1JI
dDo/T+DegCcQnoBEoXRKhdh7Akolb+AFJE6nQhRalZYZ+TaZrD1hki83mf2+2Zm5
2VxntQscKxP6hIhQR2xP2BISwlmSlSM2hBNhQLgQJsAFMT6bS4EWPt9Sg4AT3Z3k
IZKMUV1DVmAg7hFijzhALAanDs07ge2Zb15KRaU4fVQK04eTaAkua8oKZdkqPi3n
jVruQKOfja/s422UD/x2h6ap0fvaZVRLw6f1D9eZrw4eektl3JAl+jBOkIqF+cdY
kypsWAv/+VcLodkqOdGsGUjf4RqN3U6wYWe7C19m0AX3/S6UyMizWOAwzCh7DE5q
q9DOUAzWNcav3YuzNvxEtqs9vRl8IyFKITTuc34JMAAkSU1gBsdb6gAAAABJRU5E
rkJggg==" />
<span style="color:#69a8cf;"><strong>DESCRIPTION</strong></span>
</td>
</tr>
<tr>
<td style="width:80px;">
<img alt="" src="data:image/png;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAAB
AAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABg
AAAAAQAAAGAAAAABcGFpbnQubmV0IDQuMi4xMwAA/+EDSmh0dHA6Ly9ucy5hZG9i
ZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBD
ZWhpSHpyZVN6TlRjemtjOWQiPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6
bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1
Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4NCiAgPHJkZjpSREYg
eG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50
YXgtbnMjIj4NCiAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxu
czp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1N
PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0i
aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIg
eG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93
cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MEU5MzJFOTM1MDgwMTFFNTlD
MjQ5NzYyQzgzNzVGMkEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MEU5MzJF
OTQ1MDgwMTFFNTlDMjQ5NzYyQzgzNzVGMkEiPg0KICAgICAgPHhtcE1NOkRlcml2
ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MEU5MzJFOTE1MDgwMTFF
NTlDMjQ5NzYyQzgzNzVGMkEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MEU5
MzJFOTI1MDgwMTFFNTlDMjQ5NzYyQzgzNzVGMkEiIC8+DQogICAgPC9yZGY6RGVz
Y3JpcHRpb24+DQogIDwvcmRmOlJERj4NCjwveDp4bXBtZXRhPg0KPD94cGFja2V0
IGVuZD0iciI/Pv/bAEMACgcHCAcGCggICAsKCgsOGBAODQ0OHRUWERgjHyUkIh8i
ISYrNy8mKTQpISIwQTE0OTs+Pj4lLkRJQzxINz0+O//bAEMBCgsLDg0OHBAQHDso
Iig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7O//AABEIAEEAQQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQID
BAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEU
MoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNU
VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq
srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/
xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUE
BAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXx
FxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqC
g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV
1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APZqimnSBcueT0A6
mmXt7DYQGWdwo6DPc1yOq+IPMiP2fe0jnBY/KR7CtIQvqzOcmtImveeIYkYqJcEd
VjG4/nWTP4glfPlxn/ekbJ/KsPzd8YIbb6gd/amJKiZw5I7g9z7Vd2tifZJ/E7lj
VfE15YW3nGchmbbGq/KCfcjnFZOkfELXbCX/AEq4W+izkpKOSPZuo/HNZHii48+9
ihU5KR5IHbNZAV3whZVHrnP0rSMU46i2eh7t4f8AFOneIoj9mcxzqMvBJww9x6j3
rar55tbt9OniuLaZ0nhOVkHykGvZvB/iePxLpXmttS7hws8Y6Z7MPY/41jOFtUaR
lc6CiiisizhfEuofa9WkiRgY7YbBzwD/ABH+n4VhSs1yiNDyoYk7hj8eaSW+3uZW
JG5yeDzz3NQS3EgLAFkZhyXb7w9gK7FFq1jG66ltokJ3sXJI+6OAKinmgt4HcIoA
GSW5phd2jDgbsDjI/wAapa1J5ejPk7i7Kg4wMZz/AEqOV9TS9tjnbiZppHldyzOc
sT1JqDcAOlJI3Tp+FMUkgELnPrW9jnuP3luore8Ga0dE8S207PthmPlTjsVJ6/gc
H8K54udvzAY7ZFPVnP8AEAfoBxSaurDT1PpOivIv+FgX/wDz2b86K5fZM250MMIh
xGURCOpPP69aAqsqhERDnO5UIOfbNaniWKPTNcnjZNqMfMjz0Ibr+uRWeL61G0hg
D3bp+tdN5NXSMvdTtcQRBWY5wM7W3HqayvERAs4BnGZeR9BWoLm3YkrMuSe5rE1u
9S5kS2Qh/JJYyKcgkjoKlJ31KbVtDDfA5H50o6HCk8809UYcKCQvJBpCCenT1YdK
0uZ2GhmxkYB6ZPrSPnByBn69alVkXBGGbue35Vf8P6U2t69a2KY2yOA+OyDlj+QN
S3YpId/wjGof88W/Kive/s8P/PFP++RRWHtmaezRi+LNB/trTt0CqbuDJjz/ABDu
teVSbo3ZJI9rKcEFeQa9zrnfEXhC11km5h2wXePvY+V/97/GunCYpU/cnscuJw3P
78dzye5eb7ORbKPNY4BPGPesmdbq3Xa0a59Q2QPWuu1HRL7S5Ct3aPGM8P1U/Q9K
y57dXByua9GdKNX3kzhhVlS91owVuFQZDL/31g0ks6k5DDHYAir81gp/hp9h4Zvt
VmEVjayTNnkqPlH1PQfjXLKhy6nVGvzaGcLlmx8gLN239K9g+HfhVtGsTqN7D5d7
dLgIesUfXB9z1P4VF4R+G1posqX+pFLq8U5RAMpEfX3Pv2/Wu5rz6s1tE7YRe7Ci
iisDUKKKKAIL3/jym/3DXj9//wAfUn+8aKK9XL/tHmY/oUj/AK5PqK9j0H/kDW/+
7RRTzDZBgd2aNFFFeSemFFFFAH//2Q==" />
</td>
<td style="width:150px;">
<strong>Los Gigantes, Tenerife</strong>
</td>
<td>Los Gigantes is located on the south-west coast of the Canary Island, Tenerife. It&rsquo;s a cozy and tranquil resort town framed by a backdrop of magnificent cliffs. </td>
</tr>
<tr>
<td style="width:80px; border-bottom:1px solid #d6e1e6;">
<img alt="" src="data:image/png;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAAB
AAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABg
AAAAAQAAAGAAAAABcGFpbnQubmV0IDQuMi4xMwAA/+EDSmh0dHA6Ly9ucy5hZG9i
ZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBD
ZWhpSHpyZVN6TlRjemtjOWQiPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6
bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1
Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4NCiAgPHJkZjpSREYg
eG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50
YXgtbnMjIj4NCiAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxu
czp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1N
PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0i
aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIg
eG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93
cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkQ1RjgyQUQ1MDgwMTFFNTkx
MjBBQTVDRkMzMjFFOEYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkQ1Rjgy
QUU1MDgwMTFFNTkxMjBBQTVDRkMzMjFFOEYiPg0KICAgICAgPHhtcE1NOkRlcml2
ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkQ1RjgyQUI1MDgwMTFF
NTkxMjBBQTVDRkMzMjFFOEYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkQ1
RjgyQUM1MDgwMTFFNTkxMjBBQTVDRkMzMjFFOEYiIC8+DQogICAgPC9yZGY6RGVz
Y3JpcHRpb24+DQogIDwvcmRmOlJERj4NCjwveDp4bXBtZXRhPg0KPD94cGFja2V0
IGVuZD0iciI/Pv/bAEMACgcHCAcGCggICAsKCgsOGBAODQ0OHRUWERgjHyUkIh8i
ISYrNy8mKTQpISIwQTE0OTs+Pj4lLkRJQzxINz0+O//bAEMBCgsLDg0OHBAQHDso
Iig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7O//AABEIAEEAQQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQID
BAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEU
MoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNU
VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq
srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/
xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUE
BAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXx
FxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqC
g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV
1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APZqy9c8Q6f4ftvO
vZfmb/VxJy7/AEH9elHiHXIPD+lvdygPIflijz99uw+nrXi2o311qt7JeXkpklkP
JPQD0HoK6qGH9pq9jnrVuTRbnQav8Rta1B2SzK2EPYR8ufqx/piuZuL++u2LXF5c
TMepkkLfzNM2UuyvTjThFe6jz5TlLdhDeXluwaC6miYdCkhU/pXSaN4+8QWLhZJP
7QhUEskwywA6ncOfzzWDZWy3F9bwtwskqqfoTXc6zZ6fZ2k0mnmG2mb9zI6RnCqf
oOTxXHi68KVlKN7nVhqM6l2nax1nh/xTp3iKH/RnMc6jLwSfeHuPUe9bVeGXUkWl
6hZTaTcuGWLcJlyDvyeefyr1fwp4iTxDpnmNhLqHCzoPXsR7H/GuJxUoe0hsdd3G
XJLc3KKKKzLPLfG11cax4heCNS0Fn+7UZ43fxH8+PwrHTSwB88aj8asNqhkd3Krl
2LH5e5pguZpziKMt9Fr1leEUtkjznaUr7tkEllbKPu8+xqnLbBT8hyPStC5srtE8
ySL5cZJH8P1qrFE08iRxjczsFXHcmqp1IyV1K5M4NOzViKxUJqFszfdEyZ+mRXo+
vaXdXi2ywSeVFbyGRo+P33BAB9AMms/TPCtraTJNMWmljOQT90Eego1u6vY7q3li
uH8jeVcBuDXh43FQrTXJ0PVwtCVKL5upyOvpctqkQnt/JCR7V5yGHPOfxq34T1Nt
H1+3l3YhlPlSjttPf8Dg/hXZ3tlp1zo8lzfKmyOMvvY428da4eK1tLyye4tJz5sQ
zJC/UfSujBYml7N056XMcVQqOaqR6HtFFebf8Jlef89G/Oit/qlQy+swObMJVirD
BBwRW3FFrdtolrPodnbXG9389ZU3E88Aen1p/iTTfsGuXCAYSRvMT6Hn+eR+FT6X
fzW+kz2sBlDmQMWQjKpjnb6McfrRjJc9FP0YsLHlq2MPxnLPDItnFLEjLGJJULZW
NyOhx1x6e9HgO3lu9RhMijMWZG9Acf4mqn2e8v7xHOl28cDnJ+zGRpI/98t94+/H
NdN4Jt/s17Mu0EiNunf5hivNpJw5vR/iehUako+v5HSXUUgRolbAZsbh6VBLpyTR
vC/3CnJ/u471p+QzIQW+YnJ+tY2r3Es1tFaQkp9qH7xh129MfjXIkb3OY16a7vdM
0mzWTZBNH5kp7MwOB+nOPeuca3uLNI7uNyh3mI47g54Nd1Lp32oC1Uhdn+rP901h
x2T6zf6ZpqJhZ5mebH8O04b8gD+dbw/lRnLuO/sOb/nm/wD3zRXrPlR/881/KivT
+s1Dz/YQMjxNop1ax3QqPtMOTH23DutcTb3UekQWr3ltdK14XXzFwFiZSRtYHqSR
0r1Cs/VbCW5tJPsfkJddY2mTcm71IFctRycOVbHRBRUuY4DxTrFxpymzjIR/L8yV
84IGOg9KsfDpnuNPnvGQgZCKD1x1/qK5LxPpmuWF48msQySb+Gm27kkz7j/IrvfC
Uf8AZvhKB5AuXVpCEOR8x+UfXGK4E3G6OxpSszb1C5aKAxwDM8owv+z71n3NsEs1
OcG2Xgn0q2hDXZDcNtGM/Si8glmtJ44YmkdxtUKOpyPwH1NC1dhPRGDqWrw6Rp0m
oFQ8rt5cEf8Aef39h3rT8CeH7jTdO+26iv8AplwWYKw5jViCR7EkZP4Ve0/w3F5s
d3qSJLPFcSzwp1WLecj6kAD6H863q66VPl1ZhOd9EFFFFbGQUUUUAVdR/wCQdP8A
7hrltO/5Fqz/AOuzf+htRRXNiPhNqO5cj/5Cbf7w/ktdHD/qhRRU0N2OrsiSiiiu
swCiiigD/9k=" />
</td>
<td style="width:150px;"><strong>Casa Mila, Barcelona</strong></td>
<td>Casa Mila, more commonly known as La Pedrera, is a quirky modernist apartment building designed by Antoni Gaudi in Barcelona, Spain.&nbsp; </td>
</tr>
<tr>
<td style="width:80px;">
<img alt="" src="data:image/png;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAAB
AAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABg
AAAAAQAAAGAAAAABcGFpbnQubmV0IDQuMi4xMwAA/+EDSmh0dHA6Ly9ucy5hZG9i
ZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBD
ZWhpSHpyZVN6TlRjemtjOWQiPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6
bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1
Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4NCiAgPHJkZjpSREYg
eG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50
YXgtbnMjIj4NCiAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxu
czp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1N
PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0i
aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIg
eG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93
cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTQ0NUIxNkY1MDgwMTFFNUJF
N0JENTYyNDQ4MzY4MTIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTQ0NUIx
NzA1MDgwMTFFNUJFN0JENTYyNDQ4MzY4MTIiPg0KICAgICAgPHhtcE1NOkRlcml2
ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTQ0NUIxNkQ1MDgwMTFF
NUJFN0JENTYyNDQ4MzY4MTIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTQ0
NUIxNkU1MDgwMTFFNUJFN0JENTYyNDQ4MzY4MTIiIC8+DQogICAgPC9yZGY6RGVz
Y3JpcHRpb24+DQogIDwvcmRmOlJERj4NCjwveDp4bXBtZXRhPg0KPD94cGFja2V0
IGVuZD0iciI/Pv/bAEMACgcHCAcGCggICAsKCgsOGBAODQ0OHRUWERgjHyUkIh8i
ISYrNy8mKTQpISIwQTE0OTs+Pj4lLkRJQzxINz0+O//bAEMBCgsLDg0OHBAQHDso
Iig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7O//AABEIAEEAQQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQID
BAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEU
MoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNU
VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq
srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/
xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUE
BAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXx
FxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqC
g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV
1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APZqz9W1qy0aDzLq
T5m+5GvLN9B/WjWtXi0bT2uZPmc/LGn95v8ACvLb29uNQunubmQvI55J7ew9BXVQ
oe01exy16/s9FubWpeNtTvGK2pFpF2Ccsfqf8MVhTXl1cEtPdTSk93kJqPFGK9ON
OEfhR5sqkpP3mPiurmAhoriWM+qORW3p3jLVrJgJpPtcXdZev/fXX881g4oxRKEZ
boUZyjsz1XRvEFlrUf7hikyj54X+8Pp6itSvG7eea1nSeCRo5UOVZTyK9N8O62mt
WG9sLcR/LKg9exHsa82vh/Z+9HY9KhiPae7Lc16KKK5DrPNvGOotfa08KtmK1/dq
P9r+I/nx+FYGKlldppXlY5Z2LH6mm4r3YRUYqJ4U5OUnIbijFPVGZgqqWY9ABk1c
j0yUpukGHPCQggMx9z2H60TnGC95hCnKbtFGexVevU9B3NNSRZE3qG2ZC7ipAyeg
zWzbaHeOl1JLdLHEqbQiDG84yWHcD68nrxSReFUvb4hJH+ymMLGQ+0/dBDD15z7V
xyxWumx3Rwit725l4rV8N6i2mazDIWxFIfLkHse/4HBrPvtIvtCnjguWSSOXiFxn
DnOMZ7HvzSeWwGcdFDHHb61uqsKsbHPKlUpSuj2KivP/APhLbr++1FcH1aZ3fWYH
OFSrFSOQcYpxWOJPNuJRHGBnI+b8PY+3X2pfGD3Gj+I7q2SNlEhM0bg4UxkZI9eu
R+FY9pIJJraa5kiW3RiA7gqkZHU7eh/HrXXKu2vdOaGGSfvHWaXqGmW8RkR3QSOV
Csv76THdR1Cknv6ZqSPWFzLMjQLBExDzh1O05wSB3xn6kj2rmZpobjTP3zS+ZC5W
4nLZM390R4HAx3PTvVBnGpTCdkSCFCpMCnJftn36cmuRx5ndnYmoqyOjvtea8RVt
Vmt7aFmMUvVpWIxuyem7nnsOg71nwazeW1632baPsqtwXIJXP3APqePY1jS3TmQK
jbBG5HmDJXPt74qJmUxyMxwA4O0fec+pPbFUoLYXMzotT1xdXgifUxgxKQYoZDy5
6MB2I5z71Dql1dzRzX06gpagRRmdQfmI9B37k9uKw53knl3SsqsyDoQF4HTitTw3
YDVddtLEO53OSwXoqjr+nr3oskgu2X/+EU1H/nvN/wB+B/jRXsXlR/8APNfyorH2
rNORHPeNPDQ1/TA8Kn7Xb5aMKQDIvdMn17e9eLzTn7Q6y23lsGwYmJwmOMEfhX0Z
XJeLfAVp4hLXdsy2t/j7+Pkk/wB739/506c7aMU431R5BJdXFxI0rSbcDA2jGM8f
h9TTBkgbpsYyvHXB61oatomqaFIy39i8OTgOBmM+4I4JrCuLlYztJJbsi9fxre6t
cysy+GHKkMyA/Lt4P4emfWmSTRQqqOQjDjLHOB9PWst7yaYbVPlr1IXrn61b0jQN
V1u5Men2Mty2eWAyB9SeB+JrKVXsaqn3JFvEc4VmYk43FcH2r2P4e+Fn0exbUL2M
reXK8Kw5jTrg+54J+g96qeDPhnb6G8eoasyXV8vzIi8xwn1/2j79v1rvazdRtWK5
UmFFFFZlBRRRQBV1P/kG3H/XM18x6h/yFrv/AK6N/Oiin0DqFt/r1/3xX0h4Y/5F
60/3KKKQzWooooEFFFFAH//Z" />
</td>
<td style="width:150px; "><strong>Mount Teidet, Tenerife</strong></td>
<td>At 12,200 feet (3,718 meters) Mount Teide is the highest mountain in Spain and the third-largest volcano in the world. </td>
</tr>
</tbody>
</table>
<h1>Pricing</h1>
<table style="width:100%;">
<tbody>
<tr>
<td style="padding-left:20px; width:33%;"><span style="font-size:20px;">Destinations</span></td>
<td style="padding-left:20px; width:33%;"><span style="font-size:20px;">Full Price Info</span></td>
<td style="padding-left:20px; width:33%;"><span style="font-size:20px;">Comments</span></td>
</tr>
<tr>
<td>
<ul>
<li>Barcelona</li>
<li>Tenerife</li>
<li>Santa Cruz</li>
<li>Teide</li>
</ul>
</td>
<td>
<ul>
<li>$800 per person sharing</li>
<li>$900 per single occupancy</li>
<li>$700 per child</li>
</ul>
</td>
<td>
<em><span style="font-size:14px;">We enjoyed a marvelous stay at this location. Very warm welcome, extremely kind and helpful hostess. For sure, we'll come back! Samuel Elms, London.</span></em>
</td>
</tr>
</tbody>
</table>
</body>
</html>

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

@ -1,4 +1,5 @@
using System;
using SDKBrowser.Behaviors;
using System;
using System.IO;
using System.Linq;
using Telerik.XamarinForms.RichTextEditor;
@ -27,6 +28,7 @@ namespace SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.PickerPopup
};
this.richTextEditor.Source = RichTextSource.FromStream(streamFunc);
this.richTextEditor.Behaviors.Add(new PickImageBehavior());
}
protected override void OnParentSet()

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

@ -10,6 +10,7 @@ using Xamarin.Forms.Xaml;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
using AndroidApplication = Xamarin.Forms.PlatformConfiguration.AndroidSpecific.Application;
using SDKBrowser.Behaviors;
namespace SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.ReadOnlyStateExample
{
@ -32,6 +33,8 @@ namespace SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.ReadOnlySta
this.richTextEditor.Source = RichTextSource.FromStream(streamFunc);
// << richtexteditor-readonly-state-code-behind
this.richTextEditor.Behaviors.Add(new PickImageBehavior());
}
protected override void OnParentSet()

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

@ -1,4 +1,5 @@
using System;
using SDKBrowser.Behaviors;
using System;
using System.IO;
using System.Linq;
using System.Reflection;
@ -28,6 +29,7 @@ namespace SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.RichTextEdi
});
this.richTextEditor.Source = RichTextSource.FromStream(streamFunc);
this.richTextEditor.Behaviors.Add(new PickImageBehavior());
}
protected override void OnParentSet()

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

@ -1,4 +1,5 @@
using System;
using SDKBrowser.Behaviors;
using System;
using System.IO;
using System.Linq;
using System.Reflection;
@ -28,6 +29,7 @@ namespace SDKBrowser.Examples.RichTextEditorControl.FeaturesCategory.StylingExam
});
this.richTextEditor.Source = RichTextSource.FromStream(streamFunc);
this.richTextEditor.Behaviors.Add(new PickImageBehavior());
}
protected override void OnParentSet()

Двоичный файл не отображается.

После

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

Двоичный файл не отображается.

После

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

Двоичный файл не отображается.

После

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

Двоичный файл не отображается.

После

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

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

@ -0,0 +1,24 @@
<html>
<head />
<body>
<p style="font-size:16px">Running: <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsSAAALEgHS3X78AAACy0lEQVRIib2WX0hTcRTHT5c7iZZbYqw/a7NabGBaJps4ihhFlAXhgxnRiECDvbUlJQViJRkR073Vg3uJvWQ+SFAZUUQvCx1lSIOJhlstKpJx1UXkaPG9+hv3brvTGvaFH7v3/s7vc8499/c7Z6vS6TQp6Uqb7Wbs088T45PJii/ffvFSs426kpTZpI4at6x+0O0duazEyOugs73O/eT599sMWm/Vkt2qldkEQwK9DgkZZw0H11+8dmvYt6SDljO73z57OV1TupanVudmanHqSVPKZ68TNTObIn8gTn2BzzQ7l6JDjvJR/713exQdOE9WT7wKJkyIuM9XqQjO56jVHRbfaL+9bDJwf2wHm+OkkQPedHwD9ft3LRsOwRZrsBYMsGQOkHOkBZH3dJmXDc4W1oIBFpjEUlRn3T6f/PGbDw7Z/iryfEK67EdGSL2GSw2HPqh4bEXsFo/LSNqKgcwSrUZFNdVlmfutRrU4oKlYUhxMo2MJEmbmM/c9N+zUezcmsul0c9WEwaBPC9GmtFajwhcvaoABFphgczhEyBtSI404nzrbq8RRSGCABSbYHNLDDhFLQTFiDDDB5qSsq0tE59iro8aj+oI22QyZA3hXSsF5l5kc+3RiCnCtlMLsLOTsSUTgdplp8FGcpj4u7BRELf0+vu5aOntqGw0+ji8EZlBT4zE9rdOW5DjlUaiCIYH3SB7CMCFwZLdtosMHyvNGC4cYT19MUzgylwNHMQSbQ8lFDcEByTa40DFO7yNJUhLmznnCoq1UYIEJNod6jjlURVk+L5nE34bmN9R7JyoLANd4hjlUXWbLxFhgFywViLCtI0LhxbeoX9zOrA9UWtTk7bLQTota5lxaKsRdhGaBeo6SKxUWDvXXkve6WayUTLjGM8xJ4RAYYIFJ0n7AGg0W/2tFxTcbePhV1nhWvOH835bJtKJNX6qi/7YQ0R8iYbCBNM1VTAAAAABJRU5ErkJggg==" /></p>
<p style="font-size:16px">Cycling: <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsSAAALEgHS3X78AAAC6klEQVRIib2WX0hTcRTHz67703WKysD+bK3AzIY6rA2L0JKCyoyIQfVSEBj9f1CkSILCevAhKh8qKJSCekryIRSfCivJrGlmjVlLKpvOHmQKzjm3uvH9ya17t3vV/tj36fL7nfM553d++50zjSAIpKZDBzbVDn0N7R4YHFs2OjqulZqlp6fErOa0z0sWGhtv3n5UrcZQDHDs4OaK9heDF0WoLWcxrck3yWy634yQ913gZ7CiQvPJ6/UP62YN4Nq5/pW7Z6CA5w3kKsumyhMmyshQzi4YJLpydYSaWnwUDkfIWWDtaXrwbLVqgB2laz/0egazkPGdGytVwUqB9h9+z05kzzX3N7d2rhD3OGnmgJcUZVHzvbnDIdjCB75ggCULgJqjLMi84Zpl7uQ4wRcMsMAksUR2+6poJBLVPm1d91uZKwnlKi59TgaDLtbb26dLGvr0pPatN7Bh7y4bbd+azFyiXdmkiaRQuMVCkY5M0uWNk0Ybk+GESZ5CDTkU68skrTVKQiCTiJ8iPjVGwwGeXnb7Oe/r5gWasm2F7GLdbRtZ9t8/WmmsipPBko8YybDFI1ubuJtLkaaQbC3ljI50Dh87hbPkMbtwDo8IdRNLE/MbEw7OmaYS1nS2xDVhYvotggUm2Bwek/QR6Yu9ZHD9CpKUz7OsEgI4fGxPFHzgKwpMsLkET5Rkn4eMlTxxy/WUejSoZMKEPdjAFj5K0qo5Ixt9sSqbSbNomNIuD89oo3iCfykOjQqNK15nL4xQ4/3JWUPBBrbxAhNsDi0XPSQYV2oYnD7fSfW3QopgqMv9jdnEJwgWmGBz6OdYRFeUquZUFqGj1ta5WYbSBPCNtT3l7cwGtlKJLLBnbBXIsOqcl774px3w24bEObDUYqJLNTZyOJNkwaWtgl0yhgX6OVquVHBsa8mj6gon65Si8I017EnhEBhggUnSeSAOGjj/aUctP+6ntvZ+2eCZ94Hzf0emqHkd+lL99d8WIvoB2XehRto3sG0AAAAASUVORK5CYII=" /></p>
<p style="font-size:16px">Paint-ball: </p>
<p style="font-size:16px">Poop &#38; Spa:</p>
<p style="font-size:16px">Beverages: </p>
<p style="font-size:16px">Food: </p>
<hr>
<p style="font-size:12px">From: Brandon P &#10094;BrandonP@progress.com&#10095;</p>
<p style="font-size:12px">Date: Tuesday, 13 July 2021</p>
<p style="font-size:12px">To: me &#10094;CharlesP@progress.com&#10095;</p>
<p style="font-size:12px">Subject: Our team is growing</p>
<p><b style="font-size:16px">Progress Summer Fest - Share Your Feedback</b></p>
<p>We want your feedback :)</p>
<p>Please share it for the activities you have participated in.</p>
<p>We want to improve the overall experience for future parties and events.</p>
<p>Cheers,</p>
<div>
<span style="font-style:italic;">Brandon</span> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsSAAALEgHS3X78AAACUUlEQVRIiWP8//8/Ay5QVWza/ujJj9Bbd7/Kv3j1iwVZmYQY2x81Ze6HcjIcq9t6T1fiMgOrBfXlZgXb977phhlqYcLPYGnCj6Lm+JmPDCfOfIRb5uksUtrYeWoCQQuS4/TP7z7w1oCXh4UhJUaKITlGmoGPlwVdHxh8+vyHYe6Spwxzljxj+PzlD4Org/CFuYsuGuK0ICZc986h4++VQS6eM0ELp8HYLEopuAb2kZ2l4N0lKy+rwOSYkF0OMjzET5xh1Vw9og0HAZBakB6QXpAZILNQLACFOShYQC7va1Yj2mB0ANILMgNkFshMBlgQmZko/f767R/L8R2mJLkcGwAFl6XHaQZuLqY/p87cY2X+9Xlr+7HTH+2yk2QYHKyFKDIcBNjZmRh+/frHsOfgO6bXT5ZzMIHSOUgClFqQQVHtLTAmBLCpg5kFMpsJlIlA4UZp0CADkFkgM0Fms4AyU2SQBIYiYiMblzpQxjxx5iMLE1ZZKoJhYAGooDoOLbSQQf/0hww7970laABIDUgtOgCZCTKbCVTkgsoQUAZBBiAFoOR39eZXnIaD5FILrzGgOxBkFshMkNlMoPIcJAgqFZFBfZkymOcZdg7sQmQHgNggMZAcqNSFqYUBmFkgs/EWFSAXFtfeZLgG9YUFtE6A1QNa6twMvc3qDNrq3CiWIxcV4EgGVRag8hxU5CIDkMYdq4wYepvUwCUlDIDYIDGQHLLhIAAyA2QWyEwG5PoAVtGANJNbooLibM2mlygVD80rHPpWmTBA00ofGVDcbGFgYAAAB4N/oRwqInwAAAAASUVORK5CYII=" />
</div>
</body>
</html>

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

@ -1,4 +1,5 @@
using Telerik.XamarinForms.RichTextEditor;
using SDKBrowser.Behaviors;
using Telerik.XamarinForms.RichTextEditor;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
@ -17,6 +18,8 @@ namespace SDKBrowser.Examples.RichTextEditorControl.GettingStartedCategory.Getti
<p style='color:#808080'>It is also the most populated island of <strong>Spain</strong>, with a land area of <i>2,034.38 square kilometers</i> and <i>904,713</i> inhabitants, 43% of the total population of the <strong>Canary Islands</strong>.</p>";
this.richTextEditor.Source = RichTextSource.FromString(htmlSource);
// << richtexteditor-getting-started
this.richTextEditor.Behaviors.Add(new PickImageBehavior());
}
}
}

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

@ -0,0 +1,39 @@
using Plugin.Permissions;
using Plugin.Permissions.Abstractions;
using System.Threading.Tasks;
namespace SDKBrowser.Helpers
{
// >> rte-insert-images-pick-image-permissionhelper
internal static class PermissionsHelper
{
internal static async Task<bool> RequestStorrageAccess()
{
var currentStatus = await CrossPermissions.Current.CheckPermissionStatusAsync<StoragePermission>();
if (currentStatus != PermissionStatus.Granted)
{
var status = await CrossPermissions.Current.RequestPermissionAsync<StoragePermission>();
return status == PermissionStatus.Granted;
}
else
{
return true;
}
}
internal static async Task<bool> RequestPhotosAccess()
{
var currentStatus = await CrossPermissions.Current.CheckPermissionStatusAsync<PhotosPermission>();
if (currentStatus != PermissionStatus.Granted)
{
var status = await CrossPermissions.Current.RequestPermissionAsync<PhotosPermission>();
return status == PermissionStatus.Granted;
}
else
{
return true;
}
}
}
// << rte-insert-images-pick-image-permissionhelper
}

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

@ -29,6 +29,12 @@
<None Remove="Examples\MapControl\world.dbf" />
<None Remove="Examples\MapControl\world.shp" />
<None Remove="Examples\PdfViewerControl\pdfviewer-overview.pdf" />
<None Remove="Examples\RichTextEditorControl\FeaturesCategory\emoji_cool.png" />
<None Remove="Examples\RichTextEditorControl\FeaturesCategory\emoji_loughing.png" />
<None Remove="Examples\RichTextEditorControl\FeaturesCategory\emoji_smile.png" />
<None Remove="Examples\RichTextEditorControl\FeaturesCategory\emoji_wink.png" />
<None Remove="Examples\RichTextEditorControl\FeaturesCategory\pick-image-demo.html" />
<None Remove="Examples\RichTextEditorControl\FeaturesCategory\PickYourHoliday.html" />
<None Remove="Examples\RichTextEditorControl\FeaturesCategory\richtexteditor-htmlsource.html" />
<None Remove="Examples\ZipLibraryControl\Resources\LoremIpsum.txt" />
<None Remove="Examples\ZipLibraryControl\Resources\LoremIpsum.txt.zip" />
@ -45,13 +51,21 @@
<EmbeddedResource Include="Examples\MapControl\world.dbf" />
<EmbeddedResource Include="Examples\MapControl\world.shp" />
<EmbeddedResource Include="Examples\PdfViewerControl\pdfviewer-overview.pdf" />
<EmbeddedResource Include="Examples\RichTextEditorControl\FeaturesCategory\emoji_cool.png" />
<EmbeddedResource Include="Examples\RichTextEditorControl\FeaturesCategory\emoji_loughing.png" />
<EmbeddedResource Include="Examples\RichTextEditorControl\FeaturesCategory\emoji_smile.png" />
<EmbeddedResource Include="Examples\RichTextEditorControl\FeaturesCategory\emoji_wink.png" />
<EmbeddedResource Include="Examples\RichTextEditorControl\FeaturesCategory\pick-image-demo.html" />
<EmbeddedResource Include="Examples\RichTextEditorControl\FeaturesCategory\PickYourHoliday.html" />
<EmbeddedResource Include="Examples\RichTextEditorControl\FeaturesCategory\richtexteditor-htmlsource.html" />
<EmbeddedResource Include="Examples\ZipLibraryControl\Resources\LoremIpsum.txt" />
<EmbeddedResource Include="Examples\ZipLibraryControl\Resources\LoremIpsum.txt.zip" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Plugin.Permissions" Version="6.0.1" />
<PackageReference Include="SkiaSharp" Version="1.68.0" />
<PackageReference Include="SkiaSharp.Views.Forms" Version="1.68.0" />
<PackageReference Include="Xam.Plugin.Media" Version="5.0.1" />
<PackageReference Include="Xam.Plugins.Settings" Version="3.1.1" />
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2083" />
<PackageReference Include="Xamarin.Essentials" Version="1.6.1" />
@ -129,6 +143,12 @@
<EmbeddedResource Update="Examples\RichTextEditorControl\FeaturesCategory\CommandsExample\Commands.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Examples\RichTextEditorControl\FeaturesCategory\CustomImagePickerExample\CustomImagePicker.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Examples\RichTextEditorControl\FeaturesCategory\InsertImagesExample\InsertImages.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Examples\RichTextEditorControl\FeaturesCategory\KeyFeaturesExample\KeyFeatures.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>

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

@ -240,6 +240,11 @@
<Name>QRCode</Name>
<Title>QRCode</Title>
</Example>
<Example>
<Page>DataMatrix</Page>
<Name>DataMatrix</Name>
<Title>DataMatrix</Title>
</Example>
</Examples>
</Category>
<Category>
@ -2773,55 +2778,6 @@
</Category>
</Categories>
</Control>
<Control>
<Name>Popup</Name>
<Title>Popup</Title>
<Icon>Popup.png</Icon>
<Categories>
<Category>
<Name>GettingStarted</Name>
<Title>Getting Started</Title>
<Examples>
<Example>
<Page>PopupGettingStartedXaml</Page>
<Name>GettingStarted</Name>
<Title>Getting Started - Xaml</Title>
</Example>
<Example>
<Page>PopupGettingStartedCSharp</Page>
<Name>GettingStarted</Name>
<Title>Getting Started - Code</Title>
</Example>
</Examples>
</Category>
<Category>
<Name>Features</Name>
<Title>Features</Title>
<Examples>
<Example>
<Page>ContentTemplate</Page>
<Name>ContentTemplate</Name>
<Title>Setting ContentTemplate</Title>
</Example>
<Example>
<Page>ModalPopup</Page>
<Name>ModalPopup</Name>
<Title>Modal Popup</Title>
</Example>
<Example>
<Page>PopupPlacement</Page>
<Name>PopupPlacement</Name>
<Title>Popup Placement</Title>
</Example>
<Example>
<Page>PopupPlacementCSharp</Page>
<Name>PopupPlacement</Name>
<Title>PopupPlacement - Code</Title>
</Example>
</Examples>
</Category>
</Categories>
</Control>
<Control>
<Name>PdfViewer</Name>
<Title>PdfViewer</Title>
@ -2911,6 +2867,55 @@
</Category>
</Categories>
</Control>
<Control>
<Name>Popup</Name>
<Title>Popup</Title>
<Icon>Popup.png</Icon>
<Categories>
<Category>
<Name>GettingStarted</Name>
<Title>Getting Started</Title>
<Examples>
<Example>
<Page>PopupGettingStartedXaml</Page>
<Name>GettingStarted</Name>
<Title>Getting Started - Xaml</Title>
</Example>
<Example>
<Page>PopupGettingStartedCSharp</Page>
<Name>GettingStarted</Name>
<Title>Getting Started - Code</Title>
</Example>
</Examples>
</Category>
<Category>
<Name>Features</Name>
<Title>Features</Title>
<Examples>
<Example>
<Page>ContentTemplate</Page>
<Name>ContentTemplate</Name>
<Title>Setting ContentTemplate</Title>
</Example>
<Example>
<Page>ModalPopup</Page>
<Name>ModalPopup</Name>
<Title>Modal Popup</Title>
</Example>
<Example>
<Page>PopupPlacement</Page>
<Name>PopupPlacement</Name>
<Title>Popup Placement</Title>
</Example>
<Example>
<Page>PopupPlacementCSharp</Page>
<Name>PopupPlacement</Name>
<Title>PopupPlacement - Code</Title>
</Example>
</Examples>
</Category>
</Categories>
</Control>
<Control>
<Name>Rating</Name>
<Title>Rating</Title>
@ -3005,6 +3010,16 @@
<Name>HyperlinkErrorHandling</Name>
<Title>Hyperlink Error Handling</Title>
</Example>
<Example>
<Page>InsertImages</Page>
<Name>InsertImages</Name>
<Title>Insert Images</Title>
</Example>
<Example>
<Page>CustomImagePicker</Page>
<Name>CustomImagePicker</Name>
<Title>Custom Image Picker</Title>
</Example>
<Example>
<Page>CustomContextMenu</Page>
<Name>CustomContextMenu</Name>