Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AndroidLinkMode>None</AndroidLinkMode>
<AotAssemblies>false</AotAssemblies>
<EnableLLVM>false</EnableLLVM>
<BundleAssemblies>false</BundleAssemblies>
<AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
<AndroidDexTool>d8</AndroidDexTool>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Expand All @@ -53,11 +58,15 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Acr.UserDialogs" Version="7.0.30" />
<PackageReference Include="MonkeyCache.FileStore" Version="1.3.0" />
<PackageReference Include="Xamarin.FFImageLoading.Svg.Forms" Version="2.4.11.982" />
<PackageReference Include="Xamarin.Forms" Version="4.3.0.819712-pre2" />
<PackageReference Include="Xamarin.Android.Support.Core.Utils" Version="28.0.0.1" />
<PackageReference Include="Xamarin.Essentials" Version="1.3.0" />
<PackageReference Include="Xamarin.Android.Support.Core.Utils" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Essentials" Version="1.3.1" />
</ItemGroup>
<ItemGroup>
<Compile Include="GlobalSuppressions.cs" />
<Compile Include="MainActivity.cs" />
<Compile Include="Resources\Resource.designer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
Expand Down Expand Up @@ -101,4 +110,4 @@
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
</Project>
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@

// This file is used by Code Analysis to maintain SuppressMessage
// attributes that are applied to this project.
// Project-level suppressions either have no target or are given
// a specific target and scoped to a namespace, type, member, etc.

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Scope = "member", Target = "~M:CarouselViewChallenge.Droid.MainActivity.OnCreate(Android.OS.Bundle)")]

Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
using System;

using Acr.UserDialogs;
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Runtime;
using FFImageLoading.Forms.Platform;
using FFImageLoading.Svg.Forms;

namespace CarouselViewChallenge.Droid
{
Expand All @@ -20,10 +19,16 @@ protected override void OnCreate(Bundle savedInstanceState)
base.OnCreate(savedInstanceState);

global::Xamarin.Forms.Forms.SetFlags("CollectionView_Experimental");

CachedImageRenderer.Init(true);
var ignore = typeof(SvgCachedImage);
UserDialogs.Init(this);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);

global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
}

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Xamarin.Forms" Version="4.3.0.819712-pre2" />
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform" Version="6.1.9" />
<PackageReference Include="Xamarin.Essentials" Version="1.3.0" />
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform" Version="6.2.9" />
<PackageReference Include="Xamarin.Essentials" Version="1.3.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CarouselViewChallenge\CarouselViewChallenge.csproj">
Expand All @@ -159,4 +159,4 @@
<VisualStudioVersion>14.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
</Project>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Xamarin.Forms" Version="4.3.0.819712-pre2" />
<PackageReference Include="Xamarin.Essentials" Version="1.3.0" />
<PackageReference Include="Xamarin.Essentials" Version="1.3.1" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
<ItemGroup>
Expand All @@ -139,4 +139,4 @@
<Name>CarouselViewChallenge</Name>
</ProjectReference>
</ItemGroup>
</Project>
</Project>
7 changes: 7 additions & 0 deletions CarouselViewChallenge/CarouselViewChallenge/App.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,12 @@
mc:Ignorable="d"
x:Class="CarouselViewChallenge.App">
<Application.Resources>

<Color x:Key="pageBackground">#2F3136</Color>
<Color x:Key="contentBackground">#484B51</Color>
<Color x:Key="textColor">LightGray</Color>
<Color x:Key="altTextColor">White</Color>
<Color x:Key="brandColor">#2196F3</Color>

</Application.Resources>
</Application>
3 changes: 3 additions & 0 deletions CarouselViewChallenge/CarouselViewChallenge/AppShell.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@
<Tab Title="Challenge" Icon="tab_feed.png">
<ShellContent ContentTemplate="{DataTemplate local:CarouselViewChallengePage}" />
</Tab>
<Tab Title="Challenge Two" Icon="tab_feed.png">
<ShellContent ContentTemplate="{DataTemplate local:CarouselViewTwoPage}" />
</Tab>
</TabBar>

</Shell>
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,98 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Xamarin.Forms" Version="4.3.0.819712-pre2" />
<PackageReference Include="Xamarin.Essentials" Version="1.3.0" />
<None Remove="Resources\aisling.logo.svg" />
<None Remove="Resources\ald.logo.svg" />
<None Remove="Resources\aliens-ufo1.svg" />
<None Remove="Resources\alliance.green.svg" />
<None Remove="Resources\antal.logo.svg" />
<None Remove="Resources\combat-fighter2.svg" />
<None Remove="Resources\coriolis.orange.svg" />
<None Remove="Resources\crime.svg" />
<None Remove="Resources\delaine.logo.svg" />
<None Remove="Resources\economy-chart.svg" />
<None Remove="Resources\empire.blue.svg" />
<None Remove="Resources\engineer.orange.svg" />
<None Remove="Resources\exploration-planet.svg" />
<None Remove="Resources\federation.red.svg" />
<None Remove="Resources\galnet.orange.svg" />
<None Remove="Resources\grom.logo.svg" />
<None Remove="Resources\health.svg" />
<None Remove="Resources\hudson.logo.svg" />
<None Remove="Resources\independent.orange.svg" />
<None Remove="Resources\lyr.logo.svg" />
<None Remove="Resources\mahon.logo.svg" />
<None Remove="Resources\mining-pick.svg" />
<None Remove="Resources\mystery.svg" />
<None Remove="Resources\NewsBoW.csv" />
<None Remove="Resources\outpost.orange.svg" />
<None Remove="Resources\patreus.logo.svg" />
<None Remove="Resources\politics.svg" />
<None Remove="Resources\religion-ankh.svg" />
<None Remove="Resources\science-atom.svg" />
<None Remove="Resources\surface-port.orange.svg" />
<None Remove="Resources\theatre.svg" />
<None Remove="Resources\torval.logo.svg" />
<None Remove="Resources\winters.logo.svg" />
</ItemGroup>

<ItemGroup>
<Folder Include="Models\" />
<EmbeddedResource Include="Resources\aisling.logo.svg" />
<EmbeddedResource Include="Resources\ald.logo.svg" />
<EmbeddedResource Include="Resources\aliens-ufo1.svg" />
<EmbeddedResource Include="Resources\alliance.green.svg" />
<EmbeddedResource Include="Resources\antal.logo.svg" />
<EmbeddedResource Include="Resources\combat-fighter2.svg" />
<EmbeddedResource Include="Resources\coriolis.orange.svg" />
<EmbeddedResource Include="Resources\crime.svg" />
<EmbeddedResource Include="Resources\delaine.logo.svg" />
<EmbeddedResource Include="Resources\economy-chart.svg" />
<EmbeddedResource Include="Resources\empire.blue.svg" />
<EmbeddedResource Include="Resources\engineer.orange.svg" />
<EmbeddedResource Include="Resources\exploration-planet.svg" />
<EmbeddedResource Include="Resources\federation.red.svg" />
<EmbeddedResource Include="Resources\galnet.orange.svg" />
<EmbeddedResource Include="Resources\grom.logo.svg" />
<EmbeddedResource Include="Resources\health.svg" />
<EmbeddedResource Include="Resources\hudson.logo.svg" />
<EmbeddedResource Include="Resources\independent.orange.svg" />
<EmbeddedResource Include="Resources\lyr.logo.svg" />
<EmbeddedResource Include="Resources\mahon.logo.svg" />
<EmbeddedResource Include="Resources\mining-pick.svg" />
<EmbeddedResource Include="Resources\mystery.svg" />
<EmbeddedResource Include="Resources\NewsBoW.csv" />
<EmbeddedResource Include="Resources\outpost.orange.svg" />
<EmbeddedResource Include="Resources\patreus.logo.svg" />
<EmbeddedResource Include="Resources\politics.svg" />
<EmbeddedResource Include="Resources\religion-ankh.svg" />
<EmbeddedResource Include="Resources\science-atom.svg" />
<EmbeddedResource Include="Resources\surface-port.orange.svg" />
<EmbeddedResource Include="Resources\theatre.svg" />
<EmbeddedResource Include="Resources\torval.logo.svg" />
<EmbeddedResource Include="Resources\winters.logo.svg" />
</ItemGroup>

<ItemGroup>
<Compile Update="Views\WelcomePage.xaml.cs">
<DependentUpon>WelcomePage.xaml</DependentUpon>
</Compile>
<PackageReference Include="Acr.UserDialogs" Version="7.0.30" />
<PackageReference Include="CsvHelper" Version="12.1.2" />
<PackageReference Include="MonkeyCache.FileStore" Version="1.3.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
<PackageReference Include="Xamarin.FFImageLoading.Svg.Forms" Version="2.4.11.982" />
<PackageReference Include="Xamarin.Forms" Version="4.3.0.819712-pre2" />
<PackageReference Include="Xamarin.Essentials" Version="1.3.1" />
</ItemGroup>

<ItemGroup>
<Folder Include="Models\" />
</ItemGroup>

<ItemGroup>
<EmbeddedResource Update="Views\CarouselViewTwoPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Views\WelcomePage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Update="Views\CarouselViewChallengePage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using System;
using System.Globalization;
using Xamarin.Forms;

namespace CarouselViewChallenge.Converters
{
internal class FactionToLogo : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
{
return String.Empty;
}

string faction = ((string)value).Trim().ToLower();
switch (faction)
{
case "alliance":
return "resource://CarouselViewChallenge.Resources.alliance.green.svg";
case "empire":
return "resource://CarouselViewChallenge.Resources.empire.blue.svg";
case "federation":
return "resource://CarouselViewChallenge.Resources.federation.red.svg";
case "independent":
case "independant": // Uranius can't spell
return "resource://CarouselViewChallenge.Resources.independent.orange.svg";
default:
return String.Empty;
}
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
using CarouselViewChallenge.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;

namespace CarouselViewChallenge.Converters
{
public class NewsItemConverter : JsonConverter
{
public static readonly NewsItemConverter Instance = new NewsItemConverter();

private static readonly Type NewsItemType = typeof(ICollection<NewsItem>);

public override bool CanConvert(Type objectType)
{
return NewsItemType.IsAssignableFrom(objectType);
}

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var collection = new List<NewsItem>();
NewsItem item = null;
while (reader.Read())
{
switch (reader.TokenType)
{
case JsonToken.StartObject:
item = new NewsItem();
collection.Add(item);
break;
case JsonToken.PropertyName:
SetProperty(reader, item);
break;
case JsonToken.EndArray:
return collection;
}
}
return collection;
}

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}

private static void SetProperty(JsonReader reader, NewsItem item)
{
var name = (string)reader.Value;
reader.Read();
switch (name)
{
case "title":
item.Title = (string)reader.Value;
break;
case "body":
item.Body = (string)reader.Value;
break;
case "date":
item.PublishDateTime = Convert.ToDateTime(reader.Value);
break;
case "nid":
item.Id = Convert.ToInt32(reader.Value);
break;
case "image":
item.FDImageName = (string)reader.Value;
break;
case "slug":
item.Slug = (string)reader.Value;
break;
}
}
}
}
Loading