Commit 07937c98 by Javier Piris

Creado nuevo proyecto de inutralia en una nueva rama del git

parents
inutralia/packages/
inutralia/inutralia.Abstract/obj/
inutralia/inutralia.Abstract/bin/
inutralia/inutralia.Models/obj/
inutralia/inutralia.Models/bin/
inutralia/inutralia.Utils/bin/
inutralia/inutralia.Utils/obj/
inutralia/inutralia.Abstract/obj/Debug/inutralia.Abstractions.csproj.FileListAbsolute.txt
inutralia/inutralia.Abstract/obj/
inutralia/inutralia.Droid/obj/
inutralia/inutralia.Droid/bin/
inutralia/inutralia/bin/
inutralia/inutralia/obj/
inutralia/inutralia.iOS/obj/
inutralia/inutralia.iOS/bin/
inutralia/.vs/
inutralia/inutralia.Droid/inutralia.Droid.csproj.user
inutralia/inutralia.iOS/inutralia.iOS.csproj.user
inutralia/inutralia.Models/inutralia.Models.csproj.user
inutralia/inutralia/inutralia.csproj.user
inutralia/inutralia.Droid/Resources/Resource.designer.cs
namespace inutralia.Abstractions
{
/// <summary>
/// A service that exposes whether or not certain device capabilities are available.
/// </summary>
public interface ICapabilityService
{
/// <summary>
/// Gets a bool representing whether or not the device can make calls.
/// </summary>
/// <value>A bool representing whether or not the device can make calls.</value>
bool CanMakeCalls { get; }
/// <summary>
/// Gets a bool representing whether or not the device can send messages.
/// </summary>
/// <value>A bool representing whether or not the device can send messages.</value>
bool CanSendMessages { get; }
/// <summary>
/// Gets a bool representing whether or not the device cansend email.
/// </summary>
/// <value>A bool representing whether or not the device cansend email.</value>
bool CanSendEmail { get; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace inutralia.Abstract
{
public class ICredentialsService
{
string UserName { get; }
string Password { get; }
void SaveCredentials(string userName, string password);
void DeleteCredentials();
bool DoCredentialsExist();
}
}
using System.Collections.Generic;
using System.Threading.Tasks;
namespace inutralia.Abstractions
{
/// <summary>
/// Interfaz genérico de almacenamiento de entidades
/// </summary>
public interface IDataPersistenceService
{
/// <summary>
/// Recupera de forma asíncrona los datos de una entidad a partir de su
/// identificador
/// </summary>
/// <typeparam name="T">Tipo de dato de cada entidad</typeparam>
/// <param name="id">Identificador de la entidad</param>
/// <returns>Instancia de T correspondiente al identificador</returns>
Task<T> GetItemAsync<T>(int id) where T : IIdentifiableEntity;
/// <summary>
/// Obtiene de forma asíncrona una lista de entidades
/// </summary>
/// <typeparam name="T">Tipo de dato de cada entidad</typeparam>
/// <returns>Lista de elementos obtenidos</returns>
Task<List<T>> RefreshListAsync<T>() where T : IIdentifiableEntity;
/// <summary>
/// Recupera de forma asíncrona los datos de una entidad
/// </summary>
/// <typeparam name="T">Tipo de dato de la entidad</typeparam>
/// <param name="item">La entidad a actualizar</param>
/// <returns>Si la operación se realizó correctamente</returns>
Task<bool> RefreshItemAsync<T>(T item) where T : IIdentifiableEntity;
/// <summary>
/// Actualiza de forma asíncrona los datos de una entidad
/// </summary>
/// <typeparam name="T">Tipo de dato de la entidad</typeparam>
/// <param name="item">La entidad a actualizar</param>
/// <param name="isNew">Indica si hay que crear una entidad nueva o modificar una existente</param>
/// <returns>El ID de la entidad. Null en caso de error</returns>
Task<int?> UpdateItemAsync<T>(T item, bool isNew = false) where T : IIdentifiableEntity;
/// <summary>
/// Elimina de forma asíncrona una entidad
/// </summary>
/// <typeparam name="T">Tipo de dato de la entidad</typeparam>
/// <param name="item">La entidad a eliminar</param>
/// <returns>Si la operación se realizó correctamente</returns>
Task<bool> DeleteItemAsync<T>(T item) where T : IIdentifiableEntity;
}
}
namespace inutralia.Abstractions
{
/// <summary>
/// A service that exposes some platform environment characteristics.
/// </summary>
public interface IEnvironmentService
{
/// <summary>
/// Gets a bool representing whether or not is the app is running on a simulator or device.
/// </summary>
/// <value>True if the device is real, false if a simulator/emulator.</value>
bool IsRealDevice { get; }
}
}
namespace inutralia.Abstractions
{
/// <summary>
/// Entidad que tiene un Id de tipo entero
/// </summary>
public interface IIdentifiableEntity
{
/// <summary>
/// Identificador de la entidad
/// </summary>
int Id { get; set; }
}
}
using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle("inutralia.Abstract")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("SETI Consultyn SL")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("SETI Consultyn SL")]
[assembly: AssemblyTrademark("SETI Consultyn SL")]
[assembly: AssemblyCulture("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion("1.0.*")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{EE196AE1-7332-479F-8C2E-B7B6CAA873B0}</ProjectGuid>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<UseMSBuildEngine>true</UseMSBuildEngine>
<OutputType>Library</OutputType>
<RootNamespace>inutralia.Abstract</RootNamespace>
<AssemblyName>inutralia.Abstract</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile78</TargetFrameworkProfile>
<ReleaseVersion>1.5</ReleaseVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ICapabilityService.cs" />
<Compile Include="IDataPersistenceService.cs" />
<Compile Include="IEnvironmentService.cs" />
<Compile Include="IIdentifiableEntity.cs" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
</Project>
\ No newline at end of file
Any raw assets you want to be deployed with your application can be placed in
this directory (and child directories) and given a Build Action of "AndroidAsset".
These files will be deployed with your package and will be accessible using Android's
AssetManager, like this:
public class ReadAsset : Activity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
InputStream input = Assets.Open ("my_asset.txt");
}
}
Additionally, some Android functions will automatically load asset files:
Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
diff a/Droid/UIkit.Droid.csproj b/Droid/UIkit.Droid.csproj (rejected hunks)
@@ -175,6 +175,7 @@
<AndroidResource Include="Resources\drawable-xxhdpi\dashboard_thumbnail_9.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\dashboard_thumbnail_10.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\dashboard_thumbnail_11.png" />
+ <AndroidResource Include="Resources\drawable\MasterDetailBg.png" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets" />
<Import Project="..\packages\Xamarin.Forms.1.4.2.6359\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\packages\Xamarin.Forms.1.4.2.6359\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
MegTe6XsLKoqV9y3DgM76kRW5np71Jl11PclHLQCxAK9spE2XOCFEt+9KdOusb8RJrBlHh8Bj7tBUHWjopm9ulBEvy4Q5/iagzCKAe0jd7CEkvk3xm0nJKabq13tUgBBDYykX/hlaDPHqs6re4FRiK8kTolSfzyg8ZNXlKbg5gOoiVy/huNfAgqRN7RXCojC0bYk5oKhemCAu5ShdlQsqETCvQSjEsn21fwbIZVQd7RQSn2OWg7iS1Qw1hXgzmU+pC24aY4J9yDfCN5JaeQq8X1k9l/21cz1ZG3EDE6kbXbUzpVVvx7o1uNMHafQ5/qdWFUYaAx75rEWO5oBkV3Kw0hLVX8BOGF9V+lzkGHa0Z3eUiJ0H/gzdg2qF1+FaF8LCdvXpMmmF2qpSuq3pVL9MPXCubAGV6hQ7xhW5HG+Y00dfSa3/RqFO3WNR/wvxqQvlgi/qQ0jUk+7FEuwc0dJMxAthWFMktwErILnCxNYZoPqNvmHDoPhABFlQn8+LCJ1PVhqqNVkh4gv3VgQkdw7tUP/OCg5tU7fiwiCDlUrO9iwfVu7rebNWpHgIofl86Vv#ddAMEG3NvqCcwSSwMwI7RVhxOTLX9sDU2BycamfjbgreRWjeD/1vsbiB6lhnzivr+wfIbpr5fM3JwkrpaIiE8cCoQRDpTyEsvF6G478wBMTOGkkybvkEV0TJpNBLvY6ahv68hWcCnVAmWrK4zanFtr20T7XaQmc+WD/cyG6G6to=
\ No newline at end of file
/*
// Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it.
using Plugin.Settings;
using Plugin.Settings.Abstractions;
namespace inutralia.Helpers
{
/// <summary>
/// This is the Settings static class that can be used in your Core solution or in any
/// of your client applications. All settings are laid out the same exact way with getters
/// and setters.
/// </summary>
public static class Settings
{
private static ISettings AppSettings
{
get
{
return CrossSettings.Current;
}
}
#region Setting Constants
private const string SettingsKey = "settings_key";
private static readonly string SettingsDefault = string.Empty;
#endregion
public static string GeneralSettings
{
get
{
return AppSettings.GetValueOrDefault<string>(SettingsKey, SettingsDefault);
}
set
{
AppSettings.AddOrUpdateValue<string>(SettingsKey, value);
}
}
}
}*/
\ No newline at end of file
using Android.App;
using Android.Content.PM;
using Android.Views;
using Android.OS;
using Xamarin.Forms.Platform.Android;
using Xamarin.Forms;
using UXDivers.Artina.Shared;
using UXDivers.Artina.Shared.Droid;
using FFImageLoading.Forms.Droid;
namespace inutralia
{
//https://developer.android.com/guide/topics/manifest/activity-element.html
[Activity(
Label = "iNutralia",
Icon = "@drawable/icon",
Theme = "@style/Theme.Splash",
MainLauncher = true,
LaunchMode = LaunchMode.SingleTask,
ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize,
ScreenOrientation = ScreenOrientation.Portrait
)
]
public class MainActivity : FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
// Changing to App's theme since we are OnCreate and we are ready to
// "hide" the splash
base.Window.RequestFeature(WindowFeatures.ActionBar);
base.SetTheme(Resource.Style.AppTheme);
FormsAppCompatActivity.ToolbarResource = Resource.Layout.Toolbar;
FormsAppCompatActivity.TabLayoutResource = Resource.Layout.Tabs;
base.OnCreate(bundle);
Window.AddFlags(WindowManagerFlags.Fullscreen);
//Initializing FFImageLoading
CachedImageRenderer.Init(true);
Forms.Init(this, bundle);
GrialKit.Init(this, "inutralia.GrialLicense");
FormsHelper.ForceLoadingAssemblyContainingType(typeof(UXDivers.Effects.Effects));
LoadApplication(new App());}
public override void OnConfigurationChanged(Android.Content.Res.Configuration newConfig)
{
base.OnConfigurationChanged(newConfig);
DeviceOrientationLocator.NotifyOrientationChanged();
}
public override void OnBackPressed ()
{
var md = Xamarin.Forms.Application.Current.MainPage as MasterDetailPage;
if (md != null && !md.IsPresented &&
(
!(md.Detail is NavigationPage) || (((NavigationPage) md.Detail).Navigation.NavigationStack.Count == 1 && ((NavigationPage) md.Detail).Navigation.ModalStack.Count == 0)
))
MoveTaskToBack (true);
else
base.OnBackPressed ();
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1010" android:installLocation="preferExternal" package="com.seti.inutralia.inutralia" android:versionName="1.2">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="28" />
<application android:icon="@drawable/icon" android:largeHeap="@bool/largeheap" android:label="iNutralia"></application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
\ No newline at end of file
using System.Reflection;
using Xamarin.Forms;
using inutralia;
[assembly: AssemblyTitle (AssemblyGlobal.ProductLine + " - " + "Grial Xamarin.Forms UIKit (Android)")]
[assembly: AssemblyConfiguration (AssemblyGlobal.Configuration)]
[assembly: AssemblyCompany (AssemblyGlobal.Company)]
[assembly: AssemblyProduct (AssemblyGlobal.ProductLine + " - " + "Grial Xamarin.Forms UIKit (Android)")]
[assembly: AssemblyCopyright (AssemblyGlobal.Copyright)]
// Custom renderer definition.
[assembly: ExportRenderer(typeof(Entry), typeof(UXDivers.Artina.Shared.ArtinaEntryRenderer))]
[assembly: ExportRenderer(typeof(Editor), typeof(UXDivers.Artina.Shared.ArtinaEditorRenderer))]
[assembly: ExportRenderer(typeof(Label), typeof(inutralia.CustomFontLabelRenderer))]
[assembly: ExportRenderer(typeof(Switch), typeof(UXDivers.Artina.Shared.ArtinaSwitchRenderer))]
[assembly: ExportRenderer(typeof(ActivityIndicator), typeof(UXDivers.Artina.Shared.ArtinaActivityIndicatorRenderer))]
[assembly: ExportRenderer(typeof(ProgressBar), typeof(UXDivers.Artina.Shared.ArtinaProgressBarRenderer))]
[assembly: ExportRenderer(typeof(Slider), typeof(UXDivers.Artina.Shared.ArtinaSliderRenderer))]
[assembly: ExportRenderer(typeof(SwitchCell), typeof(UXDivers.Artina.Shared.ArtinaSwitchCellRenderer))]
[assembly: ExportRenderer(typeof(TextCell), typeof(UXDivers.Artina.Shared.ArtinaTextCellRenderer))]
[assembly: ExportRenderer(typeof(ImageCell), typeof(UXDivers.Artina.Shared.ArtinaImageCellRenderer))]
[assembly: ExportRenderer(typeof(ViewCell), typeof(UXDivers.Artina.Shared.ArtinaViewCellRenderer))]
[assembly: ExportRenderer(typeof(EntryCell), typeof(UXDivers.Artina.Shared.ArtinaEntryCellRenderer))]
[assembly: ExportRenderer(typeof(SearchBar), typeof(UXDivers.Artina.Shared.ArtinaSearchBarRenderer))]
[assembly: ExportRenderer(typeof(UXDivers.Artina.Shared.Button), typeof(UXDivers.Artina.Shared.ArtinaButtonRenderer))]
using System;
using UXDivers.Artina.Shared;
using Xamarin.Forms;
namespace inutralia
{
public class CustomFontLabelRenderer : ArtinaCustomFontLabelRenderer
{
private static readonly string[] CustomFontFamily = new []
{
"grialshapes",
"FontAwesome",
"Ionicons"
};
private static readonly Tuple<FontAttributes, string>[][] CustomFontFamilyData = new [] {
new [] {
new Tuple<FontAttributes, string>(FontAttributes.None, "grialshapes.ttf"),
new Tuple<FontAttributes, string>(FontAttributes.Bold, "grialshapes.ttf"),
new Tuple<FontAttributes, string>(FontAttributes.Italic, "grialshapes.ttf")
},
//*
new [] {
new Tuple<FontAttributes, string>(FontAttributes.None, "fontawesome-webfont.ttf"),
new Tuple<FontAttributes, string>(FontAttributes.Bold, "fontawesome-webfont.ttf"),
new Tuple<FontAttributes, string>(FontAttributes.Italic, "fontawesome-webfont.ttf")
},
//*/
//*
new [] {
new Tuple<FontAttributes, string>(FontAttributes.None, "ionicons.ttf"),
new Tuple<FontAttributes, string>(FontAttributes.Bold, "ionicons.ttf"),
new Tuple<FontAttributes, string>(FontAttributes.Italic, "ionicons.ttf")
}
//*/
};
protected override bool CheckIfCustomFont (string fontFamily, FontAttributes attributes, out string fontFileName)
{
for (int i = 0; i < CustomFontFamily.Length; i++) {
if (string.Equals(fontFamily, CustomFontFamily[i], StringComparison.InvariantCulture)){
var fontFamilyData = CustomFontFamilyData[i];
for (int j = 0; j < fontFamilyData.Length; j++) {
var data = fontFamilyData[j];
if (data.Item1 == attributes){
fontFileName = data.Item2;
return true;
}
}
break;
}
}
fontFileName = null;
return false;
}
}
}
Images, layout descriptions, binary blobs and string dictionaries can be included
in your application as resource files. Various Android APIs are designed to
operate on the resource IDs instead of dealing with images, strings or binary blobs
directly.
For example, a sample Android app that contains a user interface layout (main.axml),
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
would keep its resources in the "Resources" directory of the application:
Resources/
drawable/
icon.png
layout/
main.axml
values/
strings.xml
In order to get the build system to recognize Android resources, set the build action to
"AndroidResource". The native Android APIs do not operate directly with filenames, but
instead operate on resource IDs. When you compile an Android application that uses resources,
the build system will package the resources for distribution and generate a class called "R"
(this is an Android convention) that contains the tokens for each one of the resources
included. For example, for the above Resources layout, this is what the R class would expose:
public class R {
public class drawable {
public const int icon = 0x123;
}
public class layout {
public const int main = 0x456;
}
public class strings {
public const int first_string = 0xabc;
public const int second_string = 0xbcd;
}
}
You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
to reference the layout/main.axml file, or R.strings.first_string to reference the first
string in the dictionary file values/strings.xml.
diff a/Droid/Resources/Resource.designer.cs b/Droid/Resources/Resource.designer.cs (rejected hunks)
@@ -47,115 +47,118 @@
{
// aapt resource value: 0x7f020000
- public const int avatar = 2130837504;
+ public const int ArticleImg = 2130837504;
// aapt resource value: 0x7f020001
- public const int background = 2130837505;
+ public const int avatar = 2130837505;
// aapt resource value: 0x7f020002
- public const int badge = 2130837506;
+ public const int background = 2130837506;
// aapt resource value: 0x7f020003
- public const int bokeh = 2130837507;
+ public const int badge = 2130837507;
// aapt resource value: 0x7f020004
- public const int building = 2130837508;
+ public const int bokeh = 2130837508;
// aapt resource value: 0x7f020005
- public const int chat = 2130837509;
+ public const int building = 2130837509;
// aapt resource value: 0x7f020006
- public const int dashboard_thumbnail_0 = 2130837510;
+ public const int chat = 2130837510;
// aapt resource value: 0x7f020007
- public const int dashboard_thumbnail_1 = 2130837511;
+ public const int dashboard_thumbnail_0 = 2130837511;
// aapt resource value: 0x7f020008
- public const int dashboard_thumbnail_2 = 2130837512;
+ public const int dashboard_thumbnail_1 = 2130837512;
// aapt resource value: 0x7f020009
- public const int dashboard_thumbnail_3 = 2130837513;
+ public const int dashboard_thumbnail_2 = 2130837513;
// aapt resource value: 0x7f02000a
- public const int dashboard_thumbnail_4 = 2130837514;
+ public const int dashboard_thumbnail_3 = 2130837514;
// aapt resource value: 0x7f02000b
- public const int dashboard_thumbnail_5 = 2130837515;
+ public const int dashboard_thumbnail_4 = 2130837515;
// aapt resource value: 0x7f02000c
- public const int dome = 2130837516;
+ public const int dashboard_thumbnail_5 = 2130837516;
// aapt resource value: 0x7f02000d
- public const int face = 2130837517;
+ public const int dome = 2130837517;
// aapt resource value: 0x7f02000e
- public const int friend_thumbnail_27 = 2130837518;
+ public const int face = 2130837518;
// aapt resource value: 0x7f02000f
- public const int friend_thumbnail_31 = 2130837519;
+ public const int friend_thumbnail_27 = 2130837519;
// aapt resource value: 0x7f020010
- public const int friend_thumbnail_34 = 2130837520;
+ public const int friend_thumbnail_31 = 2130837520;
// aapt resource value: 0x7f020011
- public const int friend_thumbnail_55 = 2130837521;
+ public const int friend_thumbnail_34 = 2130837521;
// aapt resource value: 0x7f020012
- public const int friend_thumbnail_71 = 2130837522;
+ public const int friend_thumbnail_55 = 2130837522;
// aapt resource value: 0x7f020013
- public const int friend_thumbnail_75 = 2130837523;
+ public const int friend_thumbnail_71 = 2130837523;
// aapt resource value: 0x7f020014
- public const int friend_thumbnail_93 = 2130837524;
+ public const int friend_thumbnail_75 = 2130837524;
// aapt resource value: 0x7f020015
- public const int generic_icon = 2130837525;
+ public const int friend_thumbnail_93 = 2130837525;
// aapt resource value: 0x7f020016
- public const int icon = 2130837526;
+ public const int generic_icon = 2130837526;
// aapt resource value: 0x7f020017
- public const int lighthouse = 2130837527;
+ public const int icon = 2130837527;
// aapt resource value: 0x7f020018
- public const int login_background = 2130837528;
+ public const int lighthouse = 2130837528;
// aapt resource value: 0x7f020019
- public const int monoandroidsplash = 2130837529;
+ public const int login_background = 2130837529;
// aapt resource value: 0x7f02001a
- public const int MountainBg = 2130837530;
+ public const int monoandroidsplash = 2130837530;
// aapt resource value: 0x7f02001b
- public const int pindrop = 2130837531;
+ public const int MountainBg = 2130837531;
// aapt resource value: 0x7f02001c
- public const int RoadBg = 2130837532;
+ public const int pindrop = 2130837532;
// aapt resource value: 0x7f02001d
- public const int southmountain = 2130837533;
+ public const int RoadBg = 2130837533;
// aapt resource value: 0x7f02001e
- public const int splash = 2130837534;
+ public const int southmountain = 2130837534;
// aapt resource value: 0x7f02001f
- public const int thumb_1 = 2130837535;
+ public const int splash = 2130837535;
// aapt resource value: 0x7f020020
- public const int thumbnail = 2130837536;
+ public const int thumb_1 = 2130837536;
// aapt resource value: 0x7f020021
- public const int walkthrough_0 = 2130837537;
+ public const int thumbnail = 2130837537;
// aapt resource value: 0x7f020022
- public const int walkthrough_1 = 2130837538;
+ public const int walkthrough_0 = 2130837538;
// aapt resource value: 0x7f020023
- public const int walkthrough_2 = 2130837539;
+ public const int walkthrough_1 = 2130837539;
// aapt resource value: 0x7f020024
- public const int white_mountains = 2130837540;
+ public const int walkthrough_2 = 2130837540;
+
+ // aapt resource value: 0x7f020025
+ public const int white_mountains = 2130837541;
static Drawable()
{
<?xml version="1.0" encoding="utf-8" ?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#FFFFFFFF" />
<padding
android:left="0dip"
android:top="0dip"
android:right="0dip"
android:bottom="0dip" />
</shape>
</item>
<item>
<bitmap android:src="@drawable/splash"
android:gravity="center" />
</item>
</layer-list>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
style="@style/Widget.AppTheme.TabLayout" />
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:elevation="4dp" />
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<bool name="largeheap">true</bool>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<color name="primary">@color/AccentColor</color>
<color name="primary_dark">@color/AccentColor</color>
<color name="actionbar_tab_indicator">@color/AccentColor</color>
<!-- Theme -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Set AppCompat’s color theming attrs -->
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">@color/AccentColor</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">#000000</item>
<!-- colorAccent is used as the default value for colorControlActivated,
which is used to tint widgets -->
<item name="colorAccent">@color/AccentColor</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<!-- Used on ListView selected items -->
<item name="android:color">@color/AccentColor</item>
<item name="android:colorPressedHighlight">@color/AccentColor</item>
<item name="android:colorLongPressedHighlight">@color/AccentColor</item>
<item name="android:colorFocusedHighlight">@color/AccentColor</item>
<item name="android:colorActivatedHighlight">@color/AccentColor</item>
<item name="android:activatedBackgroundIndicator">@color/AccentColor</item>
<!-- Main theme colors -->
<!-- your app branding color for the app bar -->
<item name="android:colorPrimary">@color/primary</item>
<!-- darker variant for the status bar and contextual app bars
<item name="android:colorPrimaryDark">@color/primary_dark</item>-->
<!-- theme UI controls like checkboxes and text fields -->
<item name="android:colorAccent">@color/AccentColor</item>
<!-- TimePicker dialog-->
<item name="android:dialogTheme">@style/AppTheme.Dialog</item>
<item name="android:timePickerDialogTheme">@style/AppTheme.Dialog</item>
<item name="android:datePickerDialogTheme">@style/AppTheme.Dialog</item>
<item name="alertDialogTheme">@style/AppTheme.AlertDialog</item>
<item name="drawerArrowStyle">@style/AppTheme.DrawerArrowStyle</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
<item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
<item name="android:windowSharedElementExitTransition">@android:transition/move</item>
</style>
<!-- Adding animation to hamburguer icon, and overriding color to fix weird color change bug on app compat -->
<style name="AppTheme.DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">#FFFFFF</item>
</style>
<!-- DatePicker style -->
<style name="AppTheme.Dialog" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:colorAccent">@color/AccentColor</item>
<item name="android:textColorPrimary">@color/AccentColor</item>
</style>
<style name="AppTheme.DialogTitleTextStyle">
<item name="android:textColor">@color/AccentColor</item>
<item name="android:textAppearance">@style/TextAppearance.AppCompat.Title</item>
</style>
<style name="AppTheme.AlertDialog" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:colorAccent">@color/AccentColor</item>
<item name="android:windowTitleStyle">@style/AppTheme.DialogTitleTextStyle</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="AccentColor">#FFA2C300</color>
<color name="ComplementColor">#FFD480D6</color>
<color name="BaseTextColor">#FF666666</color>
</resources>
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<!-- Splash styles -->
<style name="Theme.Splash" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/splash_drawable</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowIsFloating">false</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
<!-- Theme -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Set AppCompat’s color theming attrs -->
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">@color/AccentColor</item>
<!-- colorPrimaryDark is used for the status bar
<item name="colorPrimaryDark">@color/AccentColor</item>-->
<!-- colorAccent is used as the default value for colorControlActivated,
which is used to tint widgets -->
<item name="colorAccent">@color/AccentColor</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<!-- Used on ListView selected items -->
<item name="android:color">@color/AccentColor</item>
<item name="android:colorPressedHighlight">@color/AccentColor</item>
<item name="android:colorLongPressedHighlight">@color/AccentColor</item>
<item name="android:colorFocusedHighlight">@color/AccentColor</item>
<item name="android:colorActivatedHighlight">@color/AccentColor</item>
<item name="android:activatedBackgroundIndicator">@color/AccentColor</item>
<!-- Main theme colors -->
<!-- your app branding color for the app bar -->
<item name="android:colorPrimary">@color/AccentColor</item>
<!-- darker variant for the status bar and contextual app bars
<item name="android:colorPrimaryDark">@color/primary_dark</item>-->
<!-- theme UI controls like checkboxes and text fields -->
<item name="android:colorAccent">@color/AccentColor</item>
<!-- Dialog attributes -->
<item name="dialogTheme">@style/AppTheme.Dialog</item>
<!-- AlertDialog attributes -->
<item name="alertDialogTheme">@style/AppTheme.Dialog</item>
<item name="drawerArrowStyle">@style/AppTheme.DrawerArrowStyle</item>
<item name="android:showDividers">none</item>
<item name="android:divider">@null</item>
<item name="android:datePickerStyle">@style/Widget.AppTheme.Picker</item>
</style>
<!-- Adding animation to hamburguer icon, and overriding color to fix weird color change bug on app compat -->
<style name="AppTheme.DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">#FFFFFF</item>
</style>
<style name="AppTheme.Dialog" parent="@style/Theme.AppCompat.Light.Dialog">
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
<item name="android:textColorAlertDialogListItem">@color/AccentColor</item>
<item name="android:textColor">@color/AccentColor</item>
<item name="colorAccent">@color/AccentColor</item>
<item name="android:borderlessButtonStyle">@style/Widget.AppTheme.Button.Borderless</item>
</style>
<style name="Widget.AppTheme.Button.Borderless" parent="@style/Widget.AppCompat.Button.Borderless">
<item name="android:textColor">#FF00FF</item>
<item name="android:textAppearance">@style/TextAppearance.AppTheme.DialogButton</item>
</style>
<style name="Widget.AppTheme.TabLayout" parent="@style/Widget.Design.TabLayout">
<item name="tabSelectedTextColor">@color/AccentColor</item>
<item name="tabTextColor">@color/BaseTextColor</item>
</style>
<style name="Widget.AppTheme.Picker" parent="@style/Theme.AppCompat.Light.Dialog">
<item name="android:colorPrimary">@color/AccentColor</item>
<item name="android:colorPrimaryDark">@color/AccentColor</item>
<item name="android:colorAccent">@color/AccentColor</item>
<item name="android:textColor">@color/AccentColor</item>
</style>
<style name="TextAppearance.AppTheme.DialogButton" parent="@style/TextAppearance.AppCompat.Title">
</style>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.5.0.0" newVersion="1.5.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Com.Airbnb.Android.Lottie" version="2.5.4" targetFramework="monoandroid81" />
<package id="Microsoft.CSharp" version="4.5.0" targetFramework="monoandroid81" />
<package id="Microsoft.NETCore.Platforms" version="2.1.0" targetFramework="monoandroid81" />
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="monoandroid80" />
<package id="NETStandard.Library" version="2.0.3" targetFramework="monoandroid81" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="monoandroid81" />
<package id="Rg.Plugins.Popup" version="1.0.4" targetFramework="monoandroid81" />
<package id="System.AppContext" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Collections" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.ComponentModel.TypeConverter" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Console" version="4.3.1" targetFramework="monoandroid81" />
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Globalization" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Globalization.Calendars" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.IO" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.IO.FileSystem" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Linq" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Net.Http" version="4.3.3" targetFramework="monoandroid80" />
<package id="System.Net.Primitives" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Net.Sockets" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.ObjectModel" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Reflection" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Runtime" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Runtime.Handles" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Runtime.Serialization.Formatters" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Runtime.Serialization.Primitives" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Security.Cryptography.Algorithms" version="4.3.1" targetFramework="monoandroid80" />
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Security.Cryptography.X509Certificates" version="4.3.2" targetFramework="monoandroid80" />
<package id="System.Text.Encoding" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Text.RegularExpressions" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Threading" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Threading.Timer" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Xml.ReaderWriter" version="4.3.1" targetFramework="monoandroid80" />
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="monoandroid80" />
<package id="System.Xml.XmlDocument" version="4.3.0" targetFramework="monoandroid80" />
<package id="UXDivers.Artina.Shared" version="2.0.35" targetFramework="monoandroid80" />
<package id="UXDivers.Artina.Shared.Base" version="2.0.35" targetFramework="monoandroid80" />
<package id="UXDivers.Effects" version="0.6.3" targetFramework="monoandroid80" />
<package id="Xam.Plugins.Settings" version="2.5.8" targetFramework="monoandroid80" />
<package id="Xamarin.Android.Arch.Core.Common" version="1.0.0.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Arch.Lifecycle.Common" version="1.0.3.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Arch.Lifecycle.Runtime" version="1.0.3.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.Annotations" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.Compat" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.Core.UI" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.Core.Utils" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.Design" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.Exif" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.Fragment" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.Media.Compat" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.Transition" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.v4" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.v7.CardView" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.v7.MediaRouter" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.v7.Palette" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.v7.RecyclerView" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="27.0.2.1" targetFramework="monoandroid81" />
<package id="Xamarin.Build.Download" version="0.4.11" targetFramework="monoandroid81" />
<package id="Xamarin.FFImageLoading" version="2.4.2.832" targetFramework="monoandroid81" />
<package id="Xamarin.FFImageLoading.Forms" version="2.4.2.832" targetFramework="monoandroid81" />
<package id="Xamarin.FFImageLoading.Transformations" version="2.4.2.832" targetFramework="monoandroid81" />
<package id="Xamarin.Forms" version="3.0.0.561731" targetFramework="monoandroid81" />
</packages>
\ No newline at end of file
using Newtonsoft.Json;
using System;
using System.ComponentModel;
using System.Globalization;
namespace inutralia.Models
{
[JsonObject(MemberSerialization.OptIn)]
[DataPath("article")]
public class Article : ObservableEntityData
{
[JsonProperty("title", Required = Required.Always)]
public string Title { get; set; }
[JsonProperty("excerpt")]
public string Excerpt { get; set; }
[JsonProperty("body")]
public string Body { get; set; }
[JsonProperty("photo")]
public string Photo { get; set; }
[JsonProperty("published")]
public string Date { get; set; }
public string ExcerptCompress => Excerpt == null ? "..." : Excerpt.Substring(0, Math.Min(80, Excerpt.Length)).Length<80 ? Excerpt : Excerpt.Substring(0, Excerpt.Substring(0, 80).LastIndexOf(" ")) + ((Excerpt.Length>80) ? "..." : "" );
}
}
using System;
using Newtonsoft.Json;
namespace inutralia
{
public class BoolConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((bool)value) ? 1 : 0);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return reader.Value.ToString() == "1";
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(bool);
}
}
}
using System;
namespace inutralia.Models
{
/// <summary>
/// Atributo para establecer la ruta de acceso a un tipo de datos. Si no se incluye
/// este atributo, se utilizará el nombre de la clase en minúsculas con una 's' al
/// final
/// </summary>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
public class DataPathAttribute : Attribute
{
public DataPathAttribute ( string path)
{
DataPath = path;
}
public string DataPath { get; private set; }
}
}

using Newtonsoft.Json;
using System.Collections.Generic;
namespace inutralia.Models
{
[JsonObject(MemberSerialization.OptIn)]
public class Day
{
[JsonProperty("ds", Required = Required.Always)]
public string Ds { get; set; }
[JsonProperty("lunchFirst", Required = Required.Always)]
public IList<Recipe> LunchFirst { get; set; }
[JsonProperty("lunchSecond", Required = Required.Always)]
public IList<Recipe> LunchSecond { get; set; }
[JsonProperty("dinnerFirst", Required = Required.Always)]
public IList<Recipe> DinnerFirst { get; set; }
[JsonProperty("dinnerSecond", Required = Required.Always)]
public IList<Recipe> DinnerSecond { get; set; }
public Day()
{
}
}
}
using Newtonsoft.Json;
using System.ComponentModel;
using System;
namespace inutralia.Models
{
[JsonObject(MemberSerialization.OptIn)]
[DataPath("generic")]
public class Generic : MenuBase
{
[JsonProperty("ds", Required = Required.Always)]
public string Ds
{ get; set; }
public override string Title
{
get
{
return Ds;
}
}
}
}

using Newtonsoft.Json;
using System.ComponentModel;
using System.Linq;
using System.Runtime.Serialization;
namespace inutralia.Models
{
[JsonObject(MemberSerialization.OptIn)]
[DataPath("recipe")]
public class Ingredient : ObservableEntityData
{
[JsonProperty("name", Required = Required.Always)]
public string Name { get; set; }
[JsonProperty("cuantity")]
public string Cuantity { get; set; }
[JsonProperty("order")]
public int Order { get; set; }
public Ingredient()
{
}
}
}
using Newtonsoft.Json;
using System.ComponentModel;
using System;
namespace inutralia.Models
{
/// <summary>
/// Representa el menú personal guardado localmente
/// </summary>
[JsonObject (MemberSerialization.OptIn)]
[DataPath ("LocalMenu")]
public class LocalMenu : Menu
{
private static JsonSerializerSettings _jsonSettings = new JsonSerializerSettings { ObjectCreationHandling = ObjectCreationHandling.Replace, NullValueHandling = NullValueHandling.Ignore};
/// <summary>
/// Indice del plato seleccionado para un día
/// </summary>
public class MealSelections
{
[JsonProperty ("lf_idx", DefaultValueHandling = DefaultValueHandling.Populate)]
[DefaultValue(-1)]
public int LunchFirstIndex = -1;
[JsonProperty ("ls_idx", DefaultValueHandling = DefaultValueHandling.Populate)]
[DefaultValue (-1)]
public int LunchSecondIndex = -1;
[JsonProperty ("df_idx", DefaultValueHandling = DefaultValueHandling.Populate)]
[DefaultValue (-1)]
public int DinnerFirstIndex = -1;
[JsonProperty ("ds_idx", DefaultValueHandling = DefaultValueHandling.Populate)]
[DefaultValue (-1)]
public int DinnerSecondIndex = -1;
}
/// <summary>
/// Platos seleccionados para cada uno de los días
/// </summary>
[JsonProperty("day_selections")]
public MealSelections [] DaySelections;
/// <summary>
/// Identificador del último menú semanal recibido del servidor
/// </summary>
[JsonProperty("last_id")]
public int LastReceivedMenuId;
/// <summary>
/// Copia los datos del menú recibido del servidor
/// </summary>
/// <param name="menu">El recibido del servidor</param>
public void AssignFromMenu ( Menu menu)
{
// Usar el serializador Json para copiar los datos del menú
JsonConvert.PopulateObject (JsonConvert.SerializeObject (menu), this, _jsonSettings);
// Borrar la selección de los platos de cada día
DaySelections = new MealSelections [7];
for (int i = 0; i < 7; i++)
DaySelections[i] = new MealSelections ();
// Asignar último menú recibido
LastReceivedMenuId = menu.Id;
}
}
}
using Newtonsoft.Json;
using System.ComponentModel;
using System;
namespace inutralia.Models
{
[JsonObject(MemberSerialization.OptIn)]
[DataPath("menu")]
public class Menu : MenuBase
{
[JsonProperty("recomendation", DefaultValueHandling = DefaultValueHandling.Populate)]
[DefaultValue("")]
public string Recomendation
{ get; set; }
[JsonProperty("intro", DefaultValueHandling = DefaultValueHandling.Populate)]
[DefaultValue("")]
public string Intro
{ get; set; }
public override string Title
{
get
{
return "Mi menú personalizado";
}
}
public Menu()
{
}
}
}
using Newtonsoft.Json;
using System.Collections.Generic;
using System.ComponentModel;
namespace inutralia.Models
{
public abstract class MenuBase : ObservableEntityData
{
public abstract string Title { get; }
[JsonProperty("days")]
public IList<Day> Days
{ get; set; }
[JsonProperty("recBreakfastBase")]
[DefaultValue("")]
public string RecBreakfastBase
{ get; set; }
[JsonProperty("recBreakfastExt")]
[DefaultValue("")]
public string RecBreakfastExt
{ get; set; }
[JsonProperty("recMorningBase")]
[DefaultValue("")]
public string RecMorningBase
{ get; set; }
[JsonProperty("recMorningExt")]
[DefaultValue("")]
public string RecMorningExt
{ get; set; }
[JsonProperty("recAfternoonBase")]
[DefaultValue("")]
public string RecAfternoonBase
{ get; set; }
[JsonProperty("recAfternoonExt")]
[DefaultValue("")]
public string RecAfternoonExt
{ get; set; }
[JsonProperty("recGeneralBase")]
[DefaultValue("")]
public string RecGeneralBase
{ get; set; }
[JsonProperty("recGeneralExt")]
[DefaultValue("")]
public string RecGeneralExt
{ get; set; }
public string resume => "<br><div style='background-color:#62b9ae; overflow: auto; width:100%; text-align:center'><h3 style='color:#FFFFFF'> DESAYUNO </h3></div><br>" + RecBreakfastBase + "<br>" + RecBreakfastExt +
"<br><div style='background-color:#62b9ae; overflow: auto; width:100%; text-align:center'><h3 style='color:#FFFFFF'> MEDIA MAÑANA </h3></div><br>" + RecMorningBase + "<br>" + RecMorningExt +
"<br><div style='background-color:#62b9ae; overflow: auto; width:100%; text-align:center'><h3 style='color:#FFFFFF'> MERIENDA </h3></div><br>" + RecAfternoonBase + "<br>" + RecAfternoonExt +
"<br><div style='background-color:#62b9ae; overflow: auto; width:100%; text-align:center'><h3 style='color:#FFFFFF'> CONSEJOS GENERALES </h3></div><br>" + RecGeneralBase + "<br>" + RecGeneralExt ;
}
}
\ No newline at end of file
using inutralia.Abstractions;
using MvvmHelpers;
using Newtonsoft.Json;
namespace inutralia.Models
{
/// <summary>
/// A type that fulfills IIdentifiableEntity and is also observable
/// </summary>
public class ObservableEntityData : ObservableObject, IIdentifiableEntity
{
public ObservableEntityData ()
{
// Los identificadores negativos indican que la entidad es nueva y no
// existe por tanto en la base de datos
Id = -1;
}
[JsonProperty ("id", Required = Required.Always)]
public int Id { get; set; }
}
}
using Newtonsoft.Json;
using System.ComponentModel;
using System.Linq;
using System.Runtime.Serialization;
namespace inutralia.Models
{
[JsonObject(MemberSerialization.OptIn)]
[DataPath("profile")]
public class Profile : ObservableEntityData
{
[JsonProperty("code")]
[DefaultValue("")]
public string Code { get; set; }
[JsonProperty("age")]
[DefaultValue(0)]
public int Age { get; set; }
[JsonProperty("gender")]
[DefaultValue('M')]
public char Gender { get; set; }
[JsonProperty("height")]
[DefaultValue(0)]
public int Height { get; set; }
[JsonProperty("weight")]
[DefaultValue(0)]
//public int _Weight;
//public int Weight { get { return _Weight;} set { SetProperty(ref _Weight,value);} }
public int Weight { get; set; }
[JsonProperty("physical")]
[DefaultValue(0)]
public int Physical { get; set; }
[JsonProperty("menopause")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Menopause { get; set; }
[JsonProperty("pregnancy")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Pregnancy { get; set; }
[JsonProperty("lactation")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Lactation { get; set; }
[JsonProperty("celiac")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Celiac { get; set; }
[JsonProperty("lactose")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Lactose { get; set; }
[JsonProperty("diabetes")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Diabetes { get; set; }
[JsonProperty("cholesterol")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Cholesterol { get; set; }
[JsonProperty("hypertension")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Hypertension { get; set; }
[JsonProperty("triglycerides")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Triglycerides { get; set; }
[JsonProperty("cv")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Cv { get; set; }
[JsonProperty("al_fish")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Al_fish { get; set; }
[JsonProperty("al_egg")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Al_egg { get; set; }
[JsonProperty("al_nuts")]
[JsonConverter(typeof(BoolConverter))]
[DefaultValue("0")]
public bool Al_nuts { get; set; }
[JsonProperty("preference")]
[DefaultValue(0)]
public int Preference { get; set; }
public Profile()
{
}
}
}
using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle("inutralia.Models")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("SETI Consultyn SL")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("SETI Consultyn SL")]
[assembly: AssemblyTrademark("SETI Consultyn SL")]
[assembly: AssemblyCulture("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion("1.0.*")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]

using Newtonsoft.Json;
using System.Collections.Generic;
namespace inutralia.Models
{
[JsonObject(MemberSerialization.OptIn)]
[DataPath("recipe")]
public class Recipe : ObservableEntityData
{
[JsonProperty("name", Required = Required.Always)]
public string Name { get; set; }
[JsonProperty("shortName")]
public string ShortName { get; set; }
[JsonProperty("excerpt")]
public string Excerpt { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("image")]
public string Image { get; set; }
[JsonProperty("time")]
public int Time { get; set; }
[JsonProperty("difficulty")]
public string Difficulty { get; set; }
[JsonProperty("energy")]
public string Energy { get; set; }
[JsonProperty("protein")]
public string Protein { get; set; }
[JsonProperty("carbohydrates")]
public string Carbohydrates { get; set; }
[JsonProperty("lipids")]
public string Lipids { get; set; }
[JsonProperty("fiber")]
public string Fiber { get; set; }
[JsonProperty("cholesterol")]
public string Cholesterol { get; set; }
[JsonProperty("ingredients")]
public IList<Ingredient> Ingredients { get; set; }
public string ExcerptQuotes => $"\"{Excerpt}\"";
public Recipe()
{
}
}
}
using Newtonsoft.Json;
namespace inutralia.Models
{
[JsonObject (MemberSerialization.OptIn)]
public class RecipeOption : ObservableEntityData
{
[JsonProperty ("name", Required = Required.Always)]
public string Name { get; set; }
public bool Selected { get; set; }
}
}
using Newtonsoft.Json;
using System.Collections.Generic;
namespace inutralia.Models
{
[JsonObject (MemberSerialization.OptIn)]
[DataPath ("options")]
public class RecipeOptionGroup : ObservableEntityData
{
private bool _isExpanded = false;
public bool IsExpanded
{
get
{
return _isExpanded;
}
set
{
_isExpanded = value;
OnPropertyChanged();
}
}
[JsonProperty ("name", Required = Required.Always)]
public string Name { get; set; }
[JsonProperty ("options")]
public IList<RecipeOption> Options { get; set; }
}
}
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace inutralia.Models
{
[JsonObject(MemberSerialization.OptIn)]
[DataPath("shoppingList")]
public class ShoppingList : ObservableEntityData
{
[JsonProperty("text", Required = Required.Always)]
public string Text { get; set; }
[JsonProperty("select", Required = Required.Always)]
public bool Select { get; set; }
[JsonProperty("fromMenus", Required = Required.Always)]
public bool FromMenus { get; set; }
}
}
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace inutralia.Models
{
[JsonObject (MemberSerialization.OptIn)]
[DataPath ("game")]
public class TrivialGame : ObservableEntityData
{
[JsonProperty ("start", Required = Required.Always)]
public string StartDate { get; protected set; }
[JsonProperty ("finish", Required = Required.Always )]
public string FinishDate { get; protected set; }
[JsonProperty ("questions", Required = Required.Always)]
public IList<TrivialQuestion> Questions;
[JsonProperty ("answers", Required = Required.Always)]
public IList<int> Answers;
public string Progress => $"{Answers.Count} / {Questions.Count}";
public string Score
{
get
{
// Si no está todo respondido, no hay puntuación
int n = Answers.Count;
if ( (n < Questions.Count) || (n < 1) )
return "";
// Calcular respuestas correctas
int correctas = 0;
for (int i = 0; i < n; i++)
if (Questions [i].ValidIndex == Answers [i])
correctas++;
// TODO: Otro mecanismo de score ?
int score = (100 * correctas) / n;
return score.ToString();
}
}
public static TrivialGame Create ( IList<TrivialQuestion> questions)
{
TrivialGame game = new TrivialGame ();
game.Questions = questions;
game.Answers = new List<int> ();
game.StartDate = DateTime.Now.ToString();
game.FinishDate = "";
return game;
}
public bool Answer ( int answer)
{
int n = Answers.Count;
if(n < Questions.Count)
{
Answers.Add (answer);
OnPropertyChanged ("Answers");
OnPropertyChanged ("Progress");
OnPropertyChanged ("Score");
return Questions [n].ValidIndex == answer;
} //endif
return false;
}
}
}
using Newtonsoft.Json;
using System.Collections.Generic;
using System.ComponentModel;
namespace inutralia.Models
{
[JsonObject (MemberSerialization.OptIn)]
[DataPath ("trivial")]
public class TrivialQuestion : ObservableEntityData
{
[JsonProperty ("image", DefaultValueHandling = DefaultValueHandling.Populate)]
[DefaultValue("")]
public string Image { get; set; }
[JsonProperty ("text", Required = Required.Always)]
public string Text { get; set; }
[JsonProperty ("options", Required = Required.Always)]
public IList<string> Options { get; set; }
[JsonProperty ("valid", Required = Required.Always)]
public int ValidIndex { get; set; }
}
}

using Newtonsoft.Json;
using System.ComponentModel;
using System.Linq;
using System.Runtime.Serialization;
namespace inutralia.Models
{
[JsonObject(MemberSerialization.OptIn)]
[DataPath("user")]
public class User : ObservableEntityData
{
public User()
{
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{60318098-AB20-44A8-8B0A-F8914C5D0ECD}</ProjectGuid>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<UseMSBuildEngine>true</UseMSBuildEngine>
<OutputType>Library</OutputType>
<RootNamespace>inutralia.Models</RootNamespace>
<AssemblyName>inutralia.Models</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile78</TargetFrameworkProfile>
<ReleaseVersion>1.5</ReleaseVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Compile Include="BoolConverter.cs" />
<Compile Include="LocalMenu.cs" />
<Compile Include="MenuBase.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ObservableEntityData.cs" />
<Compile Include="Profile.cs" />
<Compile Include="Ingredient.cs" />
<Compile Include="Menu.cs" />
<Compile Include="Recipe.cs" />
<Compile Include="RecipeOption.cs" />
<Compile Include="RecipeOptionGroup.cs" />
<Compile Include="ShoppingList.cs" />
<Compile Include="TrivialGame.cs" />
<Compile Include="TrivialQuestion.cs" />
<Compile Include="User.cs" />
<Compile Include="Generic.cs" />
<Compile Include="Day.cs" />
<Compile Include="DataPathAttribute.cs" />
<Compile Include="Article.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\inutralia.Abstract\inutralia.Abstractions.csproj">
<Project>{ee196ae1-7332-479f-8c2e-b7b6caa873b0}</Project>
<Name>inutralia.Abstractions</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Reference Include="MvvmHelpers, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Refractored.MvvmHelpers.1.3.0\lib\netstandard1.0\MvvmHelpers.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\portable-net45+win8+wp8+wpa81\Newtonsoft.Json.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="portable45-net45+win8+wp8" />
<package id="Refractored.MvvmHelpers" version="1.3.0" targetFramework="portable45-net45+win8+wp8" />
</packages>
\ No newline at end of file
using System;
using System.Globalization;
namespace inutralia.Utils
{
public static class DateUtilities
{
public static DateTime DateTimefromTimeStamp(int timestamp)
{
DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
dtDateTime = dtDateTime.AddSeconds(timestamp);
return dtDateTime;
}
public static string formatedDateFromTimeStamp(int timestamp, string format = "dd/MM/YYYY")
{
DateTime time = DateTimefromTimeStamp(timestamp);
string d1 = DateTime.UtcNow.ToString("dd/MM/yyyy");
string d2 = time.ToString("dd/MM/yyyy");
if (d1 == d2)
{
format = "HH:mm";
}
return time.ToString(format);
}
public static Int32 formatedDateToTimeStamp(string date, string format = "dd/mm/YYYY", CultureInfo CI = null)
{
if (CI == null)
{
CI = CultureInfo.CurrentCulture;
}
return formatedDateToTimeStamp(DateTime.ParseExact(date, format, CI));
}
public static Int32 formatedDateToTimeStamp(DateTime date)
{
return (Int32)(date.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
}
}
}
using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle("inutralia.Utils")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("SETI Consultyn SL")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("SETI Consultyn SL")]
[assembly: AssemblyTrademark("SETI Consultyn SL")]
[assembly: AssemblyCulture("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion("1.0.*")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{47ED81AD-7EB7-45B7-9AF7-7059C8CC6185}</ProjectGuid>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<UseMSBuildEngine>true</UseMSBuildEngine>
<OutputType>Library</OutputType>
<RootNamespace>inutralia.Utils</RootNamespace>
<AssemblyName>inutralia.Utils</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile78</TargetFrameworkProfile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="DateUtilities.cs" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
</Project>
\ No newline at end of file
using System.Diagnostics;
using Foundation;
using UIKit;
using Xamarin.Forms;
using Lottie.Forms.iOS.Renderers;
using FFImageLoading.Forms.Touch;
using UXDivers.Artina.Shared;
namespace inutralia
{
// The UIApplicationDelegate for the application. This class is responsible for launching the
// User Interface of the application, as well as listening (and optionally responding) to application events from iOS.
[Register ("AppDelegate")]
public class AppDelegate : Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
Forms.Init ();
CachedImageRenderer.Init(); // Initializing FFImageLoading
AnimationViewRenderer.Init(); // Initializing Lottie
GrialKit.Init(new ThemeColors(), "inutralia.GrialLicense");
UIApplication.SharedApplication.SetStatusBarHidden(true, true);
var tint = UIColor.White;
UIButton.AppearanceWhenContainedIn( typeof(UINavigationBar) ).TintColor = tint;
app.SetStatusBarStyle(UIStatusBarStyle.LightContent, true);
//UINavigationBar.Appearance.SetTitleTextAttributes(new UITextAttributes{TextColor = UIColor.White});
UINavigationBar.Appearance.TintColor = UIColor.White;
// Code for starting up the Xamarin Test Cloud Agent
#if ENABLE_TEST_CLOUD
Xamarin.Calabash.Start();
#endif
FormsHelper.ForceLoadingAssemblyContainingType(typeof(UXDivers.Effects.Effects));
FormsHelper.ForceLoadingAssemblyContainingType<UXDivers.Effects.iOS.CircleEffect>();
LoadApplication (new App ());
return base.FinishedLaunching (app, options);
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
MegTe6XsLKoqV9y3DgM76kRW5np71Jl11PclHLQCxAK9spE2XOCFEt+9KdOusb8RJrBlHh8Bj7tBUHWjopm9ulBEvy4Q5/iagzCKAe0jd7CEkvk3xm0nJKabq13tUgBBDYykX/hlaDPHqs6re4FRiK8kTolSfzyg8ZNXlKbg5gOoiVy/huNfAgqRN7RXCojC0bYk5oKhemCAu5ShdlQsqETCvQSjEsn21fwbIZVQd7RQSn2OWg7iS1Qw1hXgzmU+pC24aY4J9yDfCN5JaeQq8X1k9l/21cz1ZG3EDE6kbXbUzpVVvx7o1uNMHafQ5/qdWFUYaAx75rEWO5oBkV3Kw0hLVX8BOGF9V+lzkGHa0Z3eUiJ0H/gzdg2qF1+FaF8LCdvXpMmmF2qpSuq3pVL9MPXCubAGV6hQ7xhW5HG+Y00dfSa3/RqFO3WNR/wvxqQvlgi/qQ0jUk+7FEuwc0dJMxAthWFMktwErILnCxNYZoPqNvmHDoPhABFlQn8+LCJ1PVhqqNVkh4gv3VgQkdw7tUP/OCg5tU7fiwiCDlUrO9iwfVu7rebNWpHgIofl86Vv#ddAMEG3NvqCcwSSwMwI7RVhxOTLX9sDU2BycamfjbgreRWjeD/1vsbiB6lhnzivr+wfIbpr5fM3JwkrpaIiE8cCoQRDpTyEsvF6G478wBMTOGkkybvkEV0TJpNBLvY6ahv68hWcCnVAmWrK4zanFtr20T7XaQmc+WD/cyG6G6to=
\ No newline at end of file
/*
// Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it.
using Plugin.Settings;
using Plugin.Settings.Abstractions;
namespace inutralia.Helpers
{
/// <summary>
/// This is the Settings static class that can be used in your Core solution or in any
/// of your client applications. All settings are laid out the same exact way with getters
/// and setters.
/// </summary>
public static class Settings
{
private static ISettings AppSettings
{
get
{
return CrossSettings.Current;
}
}
#region Setting Constants
private const string SettingsKey = "settings_key";
private static readonly string SettingsDefault = string.Empty;
#endregion
public static string GeneralSettings
{
get
{
return AppSettings.GetValueOrDefault<string>(SettingsKey, SettingsDefault);
}
set
{
AppSettings.AddOrUpdateValue<string>(SettingsKey, value);
}
}
}
}*/
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>com.seti.inutralia.inutralia</string>
<key>CFBundleShortVersionString</key>
<string>121</string>
<key>CFBundleVersion</key>
<string>1.2.1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>MinimumOSVersion</key>
<string>8.2</string>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
<integer>2</integer>
</array>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>XSAppIconAssets</key>
<string>Resources/Images.xcassets/AppIcons.appiconset</string>
<key>UIAppFonts</key>
<array>
<string>ionicons.ttf</string>
<string>grialshapes.ttf</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>uxdivers.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
<key>grialkit.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>Custom PropertyNSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
<key>setisl.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
<key>grialkit.com</key>
<dict/>
</dict>
<key>UILaunchImages</key>
<array>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default-667h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{375, 667}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>Default-736h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{414, 736}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>Default-568h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{320, 568}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>6.0</string>
<key>UILaunchImageName</key>
<string>Default</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{320, 480}</string>
</dict>
</array>
<key>UILaunchStoryboardName</key>
<string>Splash</string>
<key>UIStatusBarStyle</key>
<string>Default</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIRequiresFullScreen</key>
<true/>
<key>CFBundleName</key>
<string>iNutralia</string>
<key>UIStatusBarHidden</key>
<true/>
</dict>
</plist>
using UIKit;
namespace inutralia
{
public class Application
{
// This is the main entry point of the application.
static void Main (string[] args)
{
// if you want to use a different Application Delegate class from "AppDelegate"
// you can specify it here.
UIApplication.Main (args, null, "AppDelegate");
}
}
}
using System.Reflection;
using Xamarin.Forms;
using inutralia;
[assembly: AssemblyTitle (AssemblyGlobal.ProductLine + " - " + "Grial Xamarin.Forms UIKit (iOS)")]
[assembly: AssemblyConfiguration (AssemblyGlobal.Configuration)]
[assembly: AssemblyCompany (AssemblyGlobal.Company)]
[assembly: AssemblyProduct (AssemblyGlobal.ProductLine + " - " + "Grial Xamarin.Forms UIKit (iOS)")]
[assembly: AssemblyCopyright (AssemblyGlobal.Copyright)]
// Custom renderer definition
[assembly: ExportRenderer(typeof(UXDivers.Artina.Shared.CircleImage), typeof(UXDivers.Artina.Shared.ImageCircleRenderer))]
[assembly: ExportRenderer(typeof(EntryCell), typeof(UXDivers.Artina.Shared.ArtinaEntryCellRenderer))]
[assembly: ExportRenderer(typeof(ImageCell), typeof(UXDivers.Artina.Shared.ArtinaImageCellRenderer))]
[assembly: ExportRenderer(typeof(SwitchCell), typeof(UXDivers.Artina.Shared.ArtinaSwitchCellRenderer))]
[assembly: ExportRenderer(typeof(TableView), typeof(UXDivers.Artina.Shared.ArtinaTableRenderer))]
[assembly: ExportRenderer(typeof(TextCell), typeof(UXDivers.Artina.Shared.ArtinaTextCellRenderer))]
[assembly: ExportRenderer(typeof(ViewCell), typeof(UXDivers.Artina.Shared.ArtinaViewCellRenderer))]
[assembly: ExportRenderer(typeof(Entry), typeof(UXDivers.Artina.Shared.ArtinaEntryRenderer))]
[assembly: ExportRenderer(typeof(Picker), typeof(UXDivers.Artina.Shared.ArtinaPickerRenderer))]
[assembly: ExportRenderer(typeof(DatePicker), typeof(UXDivers.Artina.Shared.ArtinaDatePickerRenderer))]
[assembly: ExportRenderer(typeof(TimePicker), typeof(UXDivers.Artina.Shared.ArtinaTimePickerRenderer))]
#pragma warning disable 219
internal static class WorkaroundLoadingCustomRenderersFromExternalAssemblies {
static WorkaroundLoadingCustomRenderersFromExternalAssemblies()
{
var a = new UXDivers.Artina.Shared.ArtinaEntryRenderer();
}
}
#pragma warning restore 219
using Xamarin.Forms;
using UXDivers.Artina.Shared;
namespace UXDivers.Artina.Grial
{
public sealed class LoginRenderer: ArtinaPageRenderer
{
protected override string GetTallImage(){
return "login_background-568h.jpg";
}
protected override string GetStandardImage(){
return "login_background.jpg";
}
}
}
\ No newline at end of file
{
"images": [
{
"filename": "Icon-Small-40.png",
"size": "20x20",
"scale": "2x",
"idiom": "iphone"
},
{
"filename": "Icon-60.png",
"size": "20x20",
"scale": "3x",
"idiom": "iphone"
},
{
"filename": "Icon-Small@2x.png",
"size": "29x29",
"scale": "2x",
"idiom": "iphone"
},
{
"filename": "Icon-Small@3x.png",
"size": "29x29",
"scale": "3x",
"idiom": "iphone"
},
{
"filename": "Icon-Small-40@2x.png",
"size": "40x40",
"scale": "2x",
"idiom": "iphone"
},
{
"filename": "Icon-Small-40@3x.png",
"size": "40x40",
"scale": "3x",
"idiom": "iphone"
},
{
"filename": "Icon-60@2x.png",
"size": "60x60",
"scale": "2x",
"idiom": "iphone"
},
{
"filename": "Icon-60@3x.png",
"size": "60x60",
"scale": "3x",
"idiom": "iphone"
},
{
"size": "20x20",
"scale": "1x",
"idiom": "ipad"
},
{
"filename": "Icon-Small-40.png",
"size": "20x20",
"scale": "2x",
"idiom": "ipad"
},
{
"filename": "Icon-Small.png",
"size": "29x29",
"scale": "1x",
"idiom": "ipad"
},
{
"filename": "Icon-Small@2x.png",
"size": "29x29",
"scale": "2x",
"idiom": "ipad"
},
{
"filename": "Icon-Small-40.png",
"size": "40x40",
"scale": "1x",
"idiom": "ipad"
},
{
"filename": "Icon-Small-40@2x.png",
"size": "40x40",
"scale": "2x",
"idiom": "ipad"
},
{
"filename": "icon-167.png",
"size": "83.5x83.5",
"scale": "2x",
"idiom": "ipad"
},
{
"filename": "Icon-76.png",
"size": "76x76",
"scale": "1x",
"idiom": "ipad"
},
{
"filename": "Icon-76@2x.png",
"size": "76x76",
"scale": "2x",
"idiom": "ipad"
},
{
"filename": "iTunesArtwork@2x.png",
"size": "1024x1024",
"scale": "1x",
"idiom": "ios-marketing"
},
{
"role": "notificationCenter",
"filename": "Icon-48.png",
"size": "24x24",
"subtype": "38mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "notificationCenter",
"filename": "Icon-55.png",
"size": "27.5x27.5",
"subtype": "42mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "companionSettings",
"filename": "Icon-58.png",
"size": "29x29",
"scale": "2x",
"idiom": "watch"
},
{
"role": "companionSettings",
"filename": "Icon-87.png",
"size": "29x29",
"scale": "3x",
"idiom": "watch"
},
{
"role": "appLauncher",
"filename": "Icon-80.png",
"size": "40x40",
"subtype": "38mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "longLook",
"size": "44x44",
"subtype": "42mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "quickLook",
"filename": "Icon-172.png",
"size": "86x86",
"subtype": "38mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "quickLook",
"filename": "Icon-196.png",
"size": "98x98",
"subtype": "42mm",
"scale": "2x",
"idiom": "watch"
},
{
"filename": "Icon-16.png",
"size": "16x16",
"scale": "1x",
"idiom": "mac"
},
{
"filename": "Icon-32.png",
"size": "16x16",
"scale": "2x",
"idiom": "mac"
},
{
"filename": "Icon-32.png",
"size": "32x32",
"scale": "1x",
"idiom": "mac"
},
{
"filename": "Icon-64.png",
"size": "32x32",
"scale": "2x",
"idiom": "mac"
},
{
"filename": "Icon-128.png",
"size": "128x128",
"scale": "1x",
"idiom": "mac"
},
{
"filename": "Icon-256.png",
"size": "128x128",
"scale": "2x",
"idiom": "mac"
},
{
"filename": "Icon-256.png",
"size": "256x256",
"scale": "1x",
"idiom": "mac"
},
{
"filename": "Icon-512.png",
"size": "256x256",
"scale": "2x",
"idiom": "mac"
},
{
"filename": "iTunesArtwork.png",
"size": "512x512",
"scale": "1x",
"idiom": "mac"
},
{
"filename": "iTunesArtwork@2x.png",
"size": "512x512",
"scale": "2x",
"idiom": "mac"
}
],
"info": {
"version": 1,
"author": "xcode"
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment