Commit b28e977f by Javier Piris

Refactor de todos los using de la app metiendolos dentro de los namespace

parent 5f1f8862
using System.Collections.Generic; namespace inutralia.Abstractions
using System.Threading.Tasks;
namespace inutralia.Abstractions
{ {
using System.Collections.Generic;
using System.Threading.Tasks;
/// <summary> /// <summary>
/// Interfaz genérico de almacenamiento de entidades /// Interfaz genérico de almacenamiento de entidades
/// </summary> /// </summary>
......
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 namespace inutralia
{ {
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;
//https://developer.android.com/guide/topics/manifest/activity-element.html //https://developer.android.com/guide/topics/manifest/activity-element.html
[Activity( [Activity(
Label = "iNutralia", Label = "iNutralia",
...@@ -53,7 +52,6 @@ namespace inutralia ...@@ -53,7 +52,6 @@ namespace inutralia
public override void OnConfigurationChanged(Android.Content.Res.Configuration newConfig) public override void OnConfigurationChanged(Android.Content.Res.Configuration newConfig)
{ {
base.OnConfigurationChanged(newConfig); base.OnConfigurationChanged(newConfig);
DeviceOrientationLocator.NotifyOrientationChanged(); DeviceOrientationLocator.NotifyOrientationChanged();
} }
......
<?xml version="1.0" encoding="utf-8"?> <?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"> <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" /> <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="28" />
<application android:icon="@drawable/icon" android:largeHeap="@bool/largeheap" android:label="iNutralia"></application>
<application android:icon="@drawable/icon" android:largeHeap="@bool/largeheap" android:label="iNutralia"/>
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
</manifest> </manifest>
\ No newline at end of file
using System;
using UXDivers.Artina.Shared;
using Xamarin.Forms;
namespace inutralia namespace inutralia
{ {
using System;
using UXDivers.Artina.Shared;
using Xamarin.Forms;
public class CustomFontLabelRenderer : ArtinaCustomFontLabelRenderer public class CustomFontLabelRenderer : ArtinaCustomFontLabelRenderer
{ {
private static readonly string[] CustomFontFamily = new[] private static readonly string[] CustomFontFamily = new[]
...@@ -21,24 +21,20 @@ namespace inutralia ...@@ -21,24 +21,20 @@ namespace inutralia
new Tuple<FontAttributes, string>(FontAttributes.Italic, "grialshapes.ttf") new Tuple<FontAttributes, string>(FontAttributes.Italic, "grialshapes.ttf")
}, },
//* new []
new []
{ {
new Tuple<FontAttributes, string>(FontAttributes.None, "fontawesome-webfont.ttf"), new Tuple<FontAttributes, string>(FontAttributes.None, "fontawesome-webfont.ttf"),
new Tuple<FontAttributes, string>(FontAttributes.Bold, "fontawesome-webfont.ttf"), new Tuple<FontAttributes, string>(FontAttributes.Bold, "fontawesome-webfont.ttf"),
new Tuple<FontAttributes, string>(FontAttributes.Italic, "fontawesome-webfont.ttf") new Tuple<FontAttributes, string>(FontAttributes.Italic, "fontawesome-webfont.ttf")
}, },
//*/
//* new []
new []
{ {
new Tuple<FontAttributes, string>(FontAttributes.None, "ionicons.ttf"), new Tuple<FontAttributes, string>(FontAttributes.None, "ionicons.ttf"),
new Tuple<FontAttributes, string>(FontAttributes.Bold, "ionicons.ttf"), new Tuple<FontAttributes, string>(FontAttributes.Bold, "ionicons.ttf"),
new Tuple<FontAttributes, string>(FontAttributes.Italic, "ionicons.ttf") new Tuple<FontAttributes, string>(FontAttributes.Italic, "ionicons.ttf")
} }
//*/ };
};
protected override bool CheckIfCustomFont(string fontFamily, FontAttributes attributes, out string fontFileName) protected override bool CheckIfCustomFont(string fontFamily, FontAttributes attributes, out string fontFileName)
{ {
......
using Newtonsoft.Json; namespace inutralia.Models
using System;
namespace inutralia.Models
{ {
using Newtonsoft.Json;
using System;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("article")] [DataPath("article")]
public class Article : ObservableEntityData public class Article : ObservableEntityData
......
using Newtonsoft.Json; namespace inutralia.Models
using System.Collections.Generic;
namespace inutralia.Models
{ {
using Newtonsoft.Json;
using System.Collections.Generic;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
public class Day public class Day
{ {
......
using Newtonsoft.Json; namespace inutralia.Models
namespace inutralia.Models
{ {
using Newtonsoft.Json;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("generic")] [DataPath("generic")]
public class Generic : MenuBase public class Generic : MenuBase
......
using Newtonsoft.Json; namespace inutralia.Models
namespace inutralia.Models
{ {
using Newtonsoft.Json;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("recipe")] [DataPath("recipe")]
public class Ingredient : ObservableEntityData public class Ingredient : ObservableEntityData
......
using Newtonsoft.Json; namespace inutralia.Models
using System.ComponentModel;
namespace inutralia.Models
{ {
using Newtonsoft.Json;
using System.ComponentModel;
/// <summary> /// <summary>
/// Representa el menú personal guardado localmente /// Representa el menú personal guardado localmente
/// </summary> /// </summary>
......
using Newtonsoft.Json; namespace inutralia.Models
using System.ComponentModel;
namespace inutralia.Models
{ {
using Newtonsoft.Json;
using System.ComponentModel;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("menu")] [DataPath("menu")]
......
using Newtonsoft.Json; namespace inutralia.Models
using System.Collections.Generic;
using System.ComponentModel;
namespace inutralia.Models
{ {
using Newtonsoft.Json;
using System.Collections.Generic;
using System.ComponentModel;
public abstract class MenuBase : ObservableEntityData public abstract class MenuBase : ObservableEntityData
{ {
public abstract string Title { get; } public abstract string Title { get; }
......
using Newtonsoft.Json; namespace inutralia.Models
using System.ComponentModel;
namespace inutralia.Models
{ {
using Newtonsoft.Json;
using System.ComponentModel;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("profile")] [DataPath("profile")]
public class Profile : ObservableEntityData public class Profile : ObservableEntityData
......
using Newtonsoft.Json; namespace inutralia.Models
namespace inutralia.Models
{ {
using Newtonsoft.Json;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("user")] [DataPath("user")]
......
using MvvmHelpers; namespace inutralia.Models.Questions
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
namespace inutralia.Models.Questions
{ {
using MvvmHelpers;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("messages")] [DataPath("messages")]
public class Message : ObservableEntityData public class Message : ObservableEntityData
{ {
public enum Estatus
{
Pending,
Answered_for_client,
Answered_for_nutricionist,
Closed
}
public string StatusImg => imgStatus[StateId]; public string StatusImg => imgStatus[StateId];
[JsonProperty("text", Required = Required.Always)] [JsonProperty("text", Required = Required.Always)]
...@@ -54,8 +46,7 @@ namespace inutralia.Models.Questions ...@@ -54,8 +46,7 @@ namespace inutralia.Models.Questions
public int StateId { get; set; } public int StateId { get; set; }
[JsonProperty("status", Required = Required.Always)] [JsonProperty("status", Required = Required.Always)]
[JsonConverter(typeof(StringEnumConverter))] public string State { get; set; }
public Estatus State { get; set; }
[JsonProperty("subject", Required = Required.Always)] [JsonProperty("subject", Required = Required.Always)]
public string Subject public string Subject
......
using Newtonsoft.Json; namespace inutralia.Models
using System.Collections.Generic;
namespace inutralia.Models
{ {
using Newtonsoft.Json;
using System.Collections.Generic;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("recipe")] [DataPath("recipe")]
......
using Newtonsoft.Json; namespace inutralia.Models
namespace inutralia.Models
{ {
using Newtonsoft.Json;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
public class RecipeOption : ObservableEntityData public class RecipeOption : ObservableEntityData
{ {
[JsonProperty("name", Required = Required.Always)] [JsonProperty("name", Required = Required.Always)]
public string Name { get; set; } public string Name { get; set; }
[JsonProperty("selected", Required = Required.Always)]
public bool Selected { get; set; } public bool Selected { get; set; }
} }
} }
using Newtonsoft.Json; namespace inutralia.Models
using System.Collections.Generic;
namespace inutralia.Models
{ {
using Newtonsoft.Json;
using System.Collections.Generic;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("options")] [DataPath("options")]
......
using Newtonsoft.Json; namespace inutralia.Models
namespace inutralia.Models
{ {
using Newtonsoft.Json;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("shoppingList")] [DataPath("shoppingList")]
......
using Newtonsoft.Json; namespace inutralia.Models
using System;
using System.Collections.Generic;
namespace inutralia.Models
{ {
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("game")] [DataPath("game")]
......
using Newtonsoft.Json; namespace inutralia.Models
using System.Collections.Generic;
using System.ComponentModel;
namespace inutralia.Models
{ {
using Newtonsoft.Json;
using System.Collections.Generic;
using System.ComponentModel;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("trivial")] [DataPath("trivial")]
......
using System; namespace inutralia
using Newtonsoft.Json;
namespace inutralia
{ {
using System;
using Newtonsoft.Json;
public class BoolConverter : JsonConverter public class BoolConverter : JsonConverter
{ {
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
......
using System; namespace inutralia.Models
namespace inutralia.Models
{ {
using System;
/// <summary> /// <summary>
/// Atributo para establecer la ruta de acceso a un tipo de datos. Si no se incluye /// 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 /// este atributo, se utilizará el nombre de la clase en minúsculas con una 's' al
......
using inutralia.Abstractions; namespace inutralia.Models
using MvvmHelpers;
using Newtonsoft.Json;
namespace inutralia.Models
{ {
using inutralia.Abstractions;
using MvvmHelpers;
using Newtonsoft.Json;
/// <summary> /// <summary>
/// A type that fulfills IIdentifiableEntity and is also observable /// A type that fulfills IIdentifiableEntity and is also observable
/// </summary> /// </summary>
......
using System; namespace inutralia.Utils
using System.Globalization;
namespace inutralia.Utils
{ {
using System;
using System.Globalization;
public static class DateUtilities public static class DateUtilities
{ {
public static DateTime DateTimefromTimeStamp(int timestamp) public static DateTime DateTimefromTimeStamp(int timestamp)
......
using Foundation;
using UIKit;
using Xamarin.Forms;
using Lottie.Forms.iOS.Renderers;
using UXDivers.Artina.Shared;
namespace inutralia namespace inutralia
{ {
using Foundation;
using UIKit;
using Xamarin.Forms;
using Lottie.Forms.iOS.Renderers;
using UXDivers.Artina.Shared;
// The UIApplicationDelegate for the application. This class is responsible for launching the // 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 // User Interface of the application, as well as listening (and optionally responding) to application events from iOS
[Register("AppDelegate")] [Register("AppDelegate")]
public class AppDelegate : Xamarin.Forms.Platform.iOS.FormsApplicationDelegate public class AppDelegate : Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{ {
......
using UIKit;
namespace inutralia namespace inutralia
{ {
using UIKit;
public class Application public class Application
{ {
// This is the main entry point of the application. // This is the main entry point of the application.
......
using Xamarin.Forms; namespace inutralia.API
namespace inutralia.API
{ {
using Xamarin.Forms;
class Constants class Constants
{ {
public static readonly string ApiUrlTemplate = public static readonly string ApiUrlTemplate =
......
using inutralia.Abstractions; namespace inutralia.API
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Net.Http;
using System.Net;
namespace inutralia.API
{ {
using inutralia.Abstractions;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Net.Http;
using System.Net;
/// <summary> /// <summary>
/// Interfaz genérico de comunicación con un Web Service /// Interfaz genérico de comunicación con un Web Service
/// </summary> /// </summary>
......
using inutralia.Abstractions; namespace inutralia.API
using inutralia.Models;
using Newtonsoft.Json;
using Plugin.Settings;
using Plugin.Settings.Abstractions;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Threading.Tasks;
namespace inutralia.API
{ {
using inutralia.Abstractions;
using inutralia.Models;
using Newtonsoft.Json;
using Plugin.Settings;
using Plugin.Settings.Abstractions;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Threading.Tasks;
/// <summary> /// <summary>
/// Servicio de datos que utiliza el plugin de Settings para almacenar modelos /// Servicio de datos que utiliza el plugin de Settings para almacenar modelos
/// </summary> /// </summary>
......
using inutralia.Abstractions;
using inutralia.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace inutralia.API namespace inutralia.API
{ {
using inutralia.Abstractions;
using inutralia.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
/// <summary> /// <summary>
/// Interfaz con el WebService de peticiones de la API de iNutralia /// Interfaz con el WebService de peticiones de la API de iNutralia
/// </summary> /// </summary>
......
using System;
using System.Collections.Generic;
using System.Linq;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using inutralia.Views;
using inutralia.API;
using inutralia.Models;
using System.Reflection;
using System.IO;
using Newtonsoft.Json;
namespace inutralia namespace inutralia
{ {
using System;
using System.Collections.Generic;
using Xamarin.Forms;
using inutralia.Views;
using inutralia.API;
using inutralia.Models;
using System.Reflection;
using System.IO;
using Newtonsoft.Json;
public partial class App : Application public partial class App : Application
{ {
private static bool _IsUserLoggedIn = false; private static bool _IsUserLoggedIn = false;
public static bool IsUserLoggedIn public static bool IsUserLoggedIn
......
using System; namespace inutralia
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Xamarin.Forms;
namespace inutralia
{ {
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Xamarin.Forms;
class AlternatingBackgroundColorConverter : IValueConverter class AlternatingBackgroundColorConverter : IValueConverter
{ {
private List<Color> _Colors; private List<Color> _Colors;
......
using inutralia.Utils; namespace inutralia
using System;
using System.Globalization;
using Xamarin.Forms;
namespace inutralia
{ {
using inutralia.Utils;
using System;
using System.Globalization;
using Xamarin.Forms;
public class DateTransformator : IValueConverter public class DateTransformator : IValueConverter
{ {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
......
using inutralia.CustomCells; namespace inutralia
using inutralia.Models.Questions;
using Xamarin.Forms;
namespace inutralia
{ {
using inutralia.CustomCells;
using inutralia.Models.Questions;
using Xamarin.Forms;
public class SelectorDataTemplate : DataTemplateSelector public class SelectorDataTemplate : DataTemplateSelector
{ {
private readonly DataTemplate textInDataTemplate; private readonly DataTemplate textInDataTemplate;
...@@ -17,12 +17,10 @@ namespace inutralia ...@@ -17,12 +17,10 @@ namespace inutralia
return messageVm.IsTextIn ? this.textInDataTemplate : this.textOutDataTemplate; return messageVm.IsTextIn ? this.textInDataTemplate : this.textOutDataTemplate;
} }
public SelectorDataTemplate() public SelectorDataTemplate()
{ {
this.textInDataTemplate = new DataTemplate(typeof(TextInViewCell)); this.textInDataTemplate = new DataTemplate(typeof(TextInViewCell));
this.textOutDataTemplate = new DataTemplate(typeof(TextOutViewCell)); this.textOutDataTemplate = new DataTemplate(typeof(TextOutViewCell));
} }
} }
} }
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
Grid.Column="1" Grid.Column="1"
Text="{Binding MessageDateTime, StringFormat='{0:MM/dd/yyyy hh:mm tt}'}" Text="{Binding MessageDateTime, StringFormat='{0:MM/dd/yyyy hh:mm tt}'}"
TextColor="Black"> TextColor="Black">
</Label> </Label>
</Grid> </Grid>
</ViewCell> </ViewCell>
\ No newline at end of file
using Xamarin.Forms; namespace inutralia.CustomCells
using Xamarin.Forms.Xaml;
namespace inutralia.CustomCells
{ {
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
[XamlCompilation(XamlCompilationOptions.Compile)] [XamlCompilation(XamlCompilationOptions.Compile)]
public partial class TextInViewCell : ViewCell public partial class TextInViewCell : ViewCell
{ {
......
...@@ -35,8 +35,6 @@ ...@@ -35,8 +35,6 @@
HorizontalTextAlignment="End" HorizontalTextAlignment="End"
Text="{Binding MessageDateTime, StringFormat='{0:MM/dd/yyyy hh:mm tt}'}" Text="{Binding MessageDateTime, StringFormat='{0:MM/dd/yyyy hh:mm tt}'}"
TextColor="Black"> TextColor="Black">
</Label> </Label>
</Grid> </Grid>
</ViewCell> </ViewCell>
\ No newline at end of file
using Xamarin.Forms; namespace inutralia.CustomCells
using Xamarin.Forms.Xaml;
namespace inutralia.CustomCells
{ {
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
[XamlCompilation(XamlCompilationOptions.Compile)] [XamlCompilation(XamlCompilationOptions.Compile)]
public partial class TextOutViewCell : ViewCell public partial class TextOutViewCell : ViewCell
{ {
......
using Plugin.Settings;
using Plugin.Settings.Abstractions;
namespace inutralia.Helpers namespace inutralia.Helpers
{ {
using Plugin.Settings;
using Plugin.Settings.Abstractions;
/// <summary> /// <summary>
/// This is the Settings static class that can be used in your Core solution or in any /// 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 /// of your client applications. All settings are laid out the same exact way with getters
...@@ -18,13 +18,9 @@ namespace inutralia.Helpers ...@@ -18,13 +18,9 @@ namespace inutralia.Helpers
} }
} }
#region Setting Constants
private const string SettingsKey = "settings_key"; private const string SettingsKey = "settings_key";
private static readonly string SettingsDefault = string.Empty; private static readonly string SettingsDefault = string.Empty;
#endregion
public static string GeneralSettings public static string GeneralSettings
{ {
get get
......
<html> <html>
<head> <head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=Generator content="Microsoft Word 14 (filtered)"> <meta name=Generator content="Microsoft Word 14 (filtered)">
......
...@@ -76,5 +76,4 @@ ...@@ -76,5 +76,4 @@
<Color x:Key="ChatBalloonFooterTextColor">#FFFFFF</Color> <Color x:Key="ChatBalloonFooterTextColor">#FFFFFF</Color>
<Color x:Key="ChatRightTextColor">#FFFFFF</Color> <Color x:Key="ChatRightTextColor">#FFFFFF</Color>
<Color x:Key="ChatLeftTextColor">#FFFFFF</Color> <Color x:Key="ChatLeftTextColor">#FFFFFF</Color>
</ResourceDictionary> </ResourceDictionary>
...@@ -77,5 +77,4 @@ ...@@ -77,5 +77,4 @@
<Color x:Key="ChatBalloonFooterTextColor">#FFFFFF</Color> <Color x:Key="ChatBalloonFooterTextColor">#FFFFFF</Color>
<Color x:Key="ChatRightTextColor">#FFFFFF</Color> <Color x:Key="ChatRightTextColor">#FFFFFF</Color>
<Color x:Key="ChatLeftTextColor">#FFFFFF</Color> <Color x:Key="ChatLeftTextColor">#FFFFFF</Color>
</ResourceDictionary> </ResourceDictionary>
...@@ -79,5 +79,4 @@ ...@@ -79,5 +79,4 @@
<Color x:Key="ChatBalloonFooterTextColor">#FFFFFF</Color> <Color x:Key="ChatBalloonFooterTextColor">#FFFFFF</Color>
<Color x:Key="ChatRightTextColor">#FFFFFF</Color> <Color x:Key="ChatRightTextColor">#FFFFFF</Color>
<Color x:Key="ChatLeftTextColor">#FFFFFF</Color> <Color x:Key="ChatLeftTextColor">#FFFFFF</Color>
</ResourceDictionary> </ResourceDictionary>
using inutralia.Models; namespace inutralia.ViewModels
namespace inutralia.ViewModels
{ {
using inutralia.Models;
public class ArticleDetailViewModel : ModelBasedViewModel public class ArticleDetailViewModel : ModelBasedViewModel
{ {
public ArticleDetailViewModel(Article artic) : base(artic) public ArticleDetailViewModel(Article artic) : base(artic) { }
{
//Title = Generic?.Title;
//Subtitle = Generic?.Body;
}
public Article Article => Model as Article; public Article Article => Model as Article;
} }
......
using inutralia.Models; namespace inutralia.ViewModels
using System.Threading.Tasks;
using MvvmHelpers; // Este namespace está en el paquete Refractored.MvvmHelpers
using Xamarin.Forms;
using System.Diagnostics;
namespace inutralia.ViewModels
{ {
using inutralia.Models;
using System.Threading.Tasks;
using MvvmHelpers;
using System.Diagnostics;
using Xamarin.Forms;
public class ArticleListViewModel : BaseViewModel public class ArticleListViewModel : BaseViewModel
{ {
public ArticleListViewModel() { } public ArticleListViewModel() { }
......
using MvvmHelpers; namespace inutralia
using Xamarin.Forms;
using System.Threading.Tasks;
using System.Collections.Generic;
namespace inutralia
{ {
using MvvmHelpers;
using Xamarin.Forms;
using System.Threading.Tasks;
using System.Collections.Generic;
/// <summary> /// <summary>
/// Implements the INavigation interface on top of BaseViewModel. /// Implements the INavigation interface on top of BaseViewModel.
/// </summary> /// </summary>
......
using inutralia.Models; namespace inutralia.ViewModels
using System.Threading.Tasks;
using Xamarin.Forms;
using System.Collections.Generic;
using System.Linq;
namespace inutralia.ViewModels
{ {
using inutralia.Models;
using System.Threading.Tasks;
using Xamarin.Forms;
using System.Collections.Generic;
using System.Linq;
public class CustomMenuViewModel : MenuBaseViewModel public class CustomMenuViewModel : MenuBaseViewModel
{ {
public CustomMenuViewModel() : this(new Models.Menu()) { } public CustomMenuViewModel() : this(new Models.Menu()) { }
......
using inutralia.Models; namespace inutralia.ViewModels
namespace inutralia.ViewModels
{ {
using inutralia.Models;
public class GenericDetailViewModel : MenuBaseViewModel public class GenericDetailViewModel : MenuBaseViewModel
{ {
public GenericDetailViewModel(Generic gener) : base(gener) { } public GenericDetailViewModel(Generic gener) : base(gener) { }
......
using inutralia.Models; namespace inutralia.ViewModels
using System.Threading.Tasks;
using MvvmHelpers; // Este namespace está en el paquete Refractored.MvvmHelpers
using Xamarin.Forms;
namespace inutralia.ViewModels
{ {
using inutralia.Models;
using System.Threading.Tasks;
using MvvmHelpers;
using Xamarin.Forms;
public class GenericListViewModel : BaseViewModel public class GenericListViewModel : BaseViewModel
{ {
public GenericListViewModel() { } public GenericListViewModel() { }
......
using inutralia.Models; namespace inutralia.ViewModels
using inutralia.Views;
using System.Threading.Tasks;
using Xamarin.Forms;
using System;
namespace inutralia.ViewModels
{ {
using inutralia.Models;
using inutralia.Views;
using System.Threading.Tasks;
using Xamarin.Forms;
using System;
/// <summary> /// <summary>
/// ViewModel de un menú semanal /// ViewModel de un menú semanal
/// </summary> /// </summary>
......
using inutralia.Models; namespace inutralia.ViewModels
using MvvmHelpers;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace inutralia.ViewModels
{ {
using inutralia.Models;
using MvvmHelpers;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Xamarin.Forms;
public class RecipeListViewModel : BaseNavigationViewModel public class RecipeListViewModel : BaseNavigationViewModel
{ {
public RecipeListViewModel() public RecipeListViewModel()
......
using inutralia.Models; namespace inutralia.ViewModels
using System.Threading.Tasks;
namespace inutralia.ViewModels
{ {
using inutralia.Models;
using System.Threading.Tasks;
public class RecipeViewModel : BaseNavigationViewModel public class RecipeViewModel : BaseNavigationViewModel
{ {
public RecipeViewModel(Recipe recipe) public RecipeViewModel(Recipe recipe)
......
using inutralia.Models; namespace inutralia.ViewModels
using System.Threading.Tasks;
namespace inutralia.ViewModels
{ {
using inutralia.Models;
using System.Threading.Tasks;
/// <summary> /// <summary>
/// ViewModel con task RefreshData /// ViewModel con task RefreshData
/// </summary> /// </summary>
......
using inutralia.Models; namespace inutralia.ViewModels
using System.Threading.Tasks;
namespace inutralia.ViewModels
{ {
using inutralia.Models;
using System.Threading.Tasks;
public class ProfileViewModel : BaseNavigationViewModel public class ProfileViewModel : BaseNavigationViewModel
{ {
public ProfileViewModel() { Profile = new Profile(); } public ProfileViewModel() { Profile = new Profile(); }
......
using inutralia.Models.Questions; namespace inutralia.ViewModels
using MvvmHelpers;
using System;
using System.Windows.Input;
using Xamarin.Forms;
namespace inutralia.ViewModels
{ {
using inutralia.Models.Questions;
using MvvmHelpers;
using System;
using System.Windows.Input;
using Xamarin.Forms;
public class NewQuestionViewModel : BaseViewModel public class NewQuestionViewModel : BaseViewModel
{ {
public ObservableRangeCollection<Message> ListMessages { get; } public ObservableRangeCollection<Message> ListMessages { get; }
public ICommand SendCommand { get; set; } public ICommand SendCommand { get; set; }
public NewQuestionViewModel() public NewQuestionViewModel()
{ {
IsBusy = true; IsBusy = true;
...@@ -39,7 +38,6 @@ namespace inutralia.ViewModels ...@@ -39,7 +38,6 @@ namespace inutralia.ViewModels
IsBusy = false; IsBusy = false;
} }
public string OutText public string OutText
{ {
get { return _outText; } get { return _outText; }
......
using System.Threading.Tasks; namespace inutralia.ViewModels
using inutralia.Models;
using inutralia.Models.Questions;
namespace inutralia.ViewModels
{ {
using System;
using System.Threading.Tasks;
using inutralia.Models;
using inutralia.Models.Questions;
public class PendingReadViewModel : BaseNavigationViewModel public class PendingReadViewModel : BaseNavigationViewModel
{ {
public enum Estatus public enum Estatus
...@@ -17,8 +18,7 @@ namespace inutralia.ViewModels ...@@ -17,8 +18,7 @@ namespace inutralia.ViewModels
public PendingReadViewModel(Message message) public PendingReadViewModel(Message message)
{ {
Message = message; Message = message;
Title = message?.State;
Title = message?.StatusImg;
} }
public PendingReadViewModel() { } public PendingReadViewModel() { }
...@@ -27,7 +27,11 @@ namespace inutralia.ViewModels ...@@ -27,7 +27,11 @@ namespace inutralia.ViewModels
public int StateId => Message.StateId; public int StateId => Message.StateId;
public Estatus estatus => (Estatus)Message?.StateId; public Estatus State => (Estatus)Message?.StateId;
public string Subject => Message?.Subject;
public DateTime MessageDateTime => (DateTime)Message?.MessageDateTime;
public async Task RefresData() public async Task RefresData()
{ {
...@@ -38,11 +42,18 @@ namespace inutralia.ViewModels ...@@ -38,11 +42,18 @@ namespace inutralia.ViewModels
if (await App.API.RefreshItemAsync(Message)) if (await App.API.RefreshItemAsync(Message))
{ {
Title = Message.StatusImg; Title = Message.State;
OnPropertyChanged(""); OnPropertyChanged("State");
} }
IsBusy = false; IsBusy = false;
} }
public bool IsClosedOrPending => (State == Estatus.Pendiente ||
State == Estatus.Cerrado ||
State == Estatus.Respondida_por_cliente ||
State == Estatus.Respondida_por_nutricionista);
public bool MayBeClosed => !IsClosedOrPending;
} }
} }
using inutralia.Models; namespace inutralia.ViewModels
using inutralia.Models.Questions;
using MvvmHelpers; // Este namespace está en el paquete Refractored.MvvmHelpers
using System;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace inutralia.ViewModels
{ {
/// <summary> using inutralia.Models.Questions;
/// ViewModel del listado de preguntas. Hereda de MvvmHelpers.BaseViewModel using MvvmHelpers;
/// </summary> using System;
using System.Threading.Tasks;
using Xamarin.Forms;
public class QuestionListViewModel : BaseNavigationViewModel public class QuestionListViewModel : BaseNavigationViewModel
{ {
public QuestionListViewModel() { } public QuestionListViewModel() { }
// Datos del histórico
ObservableRangeCollection<Message> _QuestionList; ObservableRangeCollection<Message> _QuestionList;
// Comando de loading del listado
Command _LoadQuestionListCommand; Command _LoadQuestionListCommand;
// Comando de actualización del listado del listado
Command _RefreshQuestionListCommand; Command _RefreshQuestionListCommand;
// Acceso a la lista preguntas
public ObservableRangeCollection<Message> QuestionList public ObservableRangeCollection<Message> QuestionList
{ {
// Getter (lazy load), crea la lista si no exite get { return _QuestionList ?? (_QuestionList = new ObservableRangeCollection<Message>()); }
get => _QuestionList ?? (_QuestionList = new ObservableRangeCollection<Message>());
// Setter. Cambia el valor y notifica a la vista de dicho cambio
set set
{ {
_QuestionList = value; _QuestionList = value;
...@@ -42,41 +30,30 @@ namespace inutralia.ViewModels ...@@ -42,41 +30,30 @@ namespace inutralia.ViewModels
get { return _LoadQuestionListCommand ?? (_LoadQuestionListCommand = new Command(async () => await ExecuteLoadQuestionListCommand())); } get { return _LoadQuestionListCommand ?? (_LoadQuestionListCommand = new Command(async () => await ExecuteLoadQuestionListCommand())); }
} }
/// <summary>
/// Método que realiza la carga inicial del listado
/// </summary>
///
public async Task ExecuteLoadQuestionListCommand() public async Task ExecuteLoadQuestionListCommand()
{ {
// Realiza el proceso de actualización si hay menos de un LoadQuestionListCommand.ChangeCanExecute();
// elemento en el listado //if (QuestionList.Count < 1)
if (QuestionList.Count < 1) await FetchQuestionList();
await FetchQuestionList(); LoadQuestionListCommand.ChangeCanExecute();
} }
/// <summary>
/// Acceso al comando de actualización del listado
/// </summary>
public Command RefreshQuestionListCommand public Command RefreshQuestionListCommand
{ {
// Getter (lazy load), crea el comando si no existe
get { return _RefreshQuestionListCommand ?? (_RefreshQuestionListCommand = new Command(async () => await ExecuteRefreshQuestionListCommand())); } get { return _RefreshQuestionListCommand ?? (_RefreshQuestionListCommand = new Command(async () => await ExecuteRefreshQuestionListCommand())); }
} }
/// <summary>
/// Proceso de ejecución del comando de actualización del listado
/// </summary>
async Task ExecuteRefreshQuestionListCommand() async Task ExecuteRefreshQuestionListCommand()
{ {
try try
{ {
// Hace que el comando no se pueda ejecutar de nuevo
RefreshQuestionListCommand.ChangeCanExecute(); RefreshQuestionListCommand.ChangeCanExecute();
// Realiza el proceso de actualización
await FetchQuestionList(); await FetchQuestionList();
// Hace que el comando pueda volver a ejecutarse
RefreshQuestionListCommand.ChangeCanExecute(); RefreshQuestionListCommand.ChangeCanExecute();
} }
catch (Exception e) catch (Exception e)
...@@ -85,17 +62,11 @@ namespace inutralia.ViewModels ...@@ -85,17 +62,11 @@ namespace inutralia.ViewModels
} }
} }
/// <summary>
/// Proceso de actualización del listado
/// </summary>
async Task FetchQuestionList() async Task FetchQuestionList()
{ {
// Indicamos que estamos ocupados (provoca que aparezca el indicador de carga)
IsBusy = true; IsBusy = true;
// Llamada al API para coger el listado (provoca que se actualize la vista del listado)
// Nota: Al obtener el listado, el controlador Rest del servidor no retorna el cuerpo de
// la notificación (campo Body)
try try
{ {
QuestionList = new ObservableRangeCollection<Message>(await App.API.RefreshListAsync<Message>()); QuestionList = new ObservableRangeCollection<Message>(await App.API.RefreshListAsync<Message>());
...@@ -106,8 +77,8 @@ namespace inutralia.ViewModels ...@@ -106,8 +77,8 @@ namespace inutralia.ViewModels
string err = e.Message; string err = e.Message;
} }
// Indicamos que ya no estamos ocupados (provoca que desaparezca el indicador de carga)
IsBusy = false; IsBusy = false;
} }
} }
} }
using MvvmHelpers; namespace inutralia.ViewModels
namespace inutralia.ViewModels
{ {
using MvvmHelpers;
public class RecipeListOptionsViewModel : BaseNavigationViewModel public class RecipeListOptionsViewModel : BaseNavigationViewModel
{ {
public RecipeListOptionsViewModel() { Title = "Filtrado de Recetas"; } public RecipeListOptionsViewModel() { Title = "Filtrado de Recetas"; }
...@@ -13,7 +13,6 @@ namespace inutralia.ViewModels ...@@ -13,7 +13,6 @@ namespace inutralia.ViewModels
public ObservableRangeCollection<RecipeOptionGroupViewModel> Groups public ObservableRangeCollection<RecipeOptionGroupViewModel> Groups
{ {
get { return _Groups ?? (_Groups = new ObservableRangeCollection<RecipeOptionGroupViewModel>()); } get { return _Groups ?? (_Groups = new ObservableRangeCollection<RecipeOptionGroupViewModel>()); }
set { SetProperty(ref _Groups, value); } set { SetProperty(ref _Groups, value); }
} }
......
using inutralia.Models; namespace inutralia.ViewModels
using MvvmHelpers;
namespace inutralia.ViewModels
{ {
using inutralia.Models;
using MvvmHelpers;
public class RecipeOptionGroupViewModel : ObservableRangeCollection<RecipeOption> public class RecipeOptionGroupViewModel : ObservableRangeCollection<RecipeOption>
{ {
public string Name { get; private set; } public string Name { get; private set; }
......
using inutralia.Models; namespace inutralia.ViewModels
using MvvmHelpers;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace inutralia.ViewModels
{ {
using inutralia.Models;
using MvvmHelpers;
using System.Threading.Tasks;
using Xamarin.Forms;
public class ShoppingListViewModel : BaseNavigationViewModel public class ShoppingListViewModel : BaseNavigationViewModel
{ {
public ShoppingListViewModel() { } public ShoppingListViewModel() { }
......
using inutralia.Models; namespace inutralia.ViewModels
using System.Collections.Generic;
using System.Threading.Tasks;
namespace inutralia.ViewModels
{ {
using inutralia.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
public class TrivialGameViewModel : BaseNavigationViewModel public class TrivialGameViewModel : BaseNavigationViewModel
{ {
public class QuestionResult public class QuestionResult
......
using inutralia.Models; namespace inutralia.ViewModels
using inutralia.Views;
using MvvmHelpers;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace inutralia.ViewModels
{ {
using inutralia.Models;
using inutralia.Views;
using MvvmHelpers;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Xamarin.Forms;
public class TrivialListViewModel : BaseNavigationViewModel public class TrivialListViewModel : BaseNavigationViewModel
{ {
public TrivialListViewModel() { } public TrivialListViewModel() { }
...@@ -130,8 +130,5 @@ namespace inutralia.ViewModels ...@@ -130,8 +130,5 @@ namespace inutralia.ViewModels
// Indicamos que ya no estamos ocupados (provoca que desaparezca el indicador de carga) // Indicamos que ya no estamos ocupados (provoca que desaparezca el indicador de carga)
IsBusy = false; IsBusy = false;
} }
} }
} }
using inutralia.Models; namespace inutralia.Views
using inutralia.ViewModels;
using Xamarin.Forms;
namespace inutralia.Views
{ {
using inutralia.Models;
using inutralia.ViewModels;
using Xamarin.Forms;
public partial class ArticleListView : ContentPage public partial class ArticleListView : ContentPage
{ {
// Accesor al ViewModel // Accesor al ViewModel
......
using inutralia.ViewModels;
using System;
using Xamarin.Forms;
namespace inutralia.Views namespace inutralia.Views
{ {
using inutralia.ViewModels;
using System;
using Xamarin.Forms;
public partial class ArticleViewPage : ContentPage public partial class ArticleViewPage : ContentPage
{ {
public ArticleViewPage() public ArticleViewPage()
......
using Xamarin.Forms;
namespace inutralia.Views namespace inutralia.Views
{ {
using Xamarin.Forms;
public partial class ArticleItemTemplate : ContentView public partial class ArticleItemTemplate : ContentView
{ {
public ArticleItemTemplate() public ArticleItemTemplate()
......
using Xamarin.Forms;
namespace inutralia.Views namespace inutralia.Views
{ {
using Xamarin.Forms;
public partial class Badge : ContentView public partial class Badge : ContentView
{ {
public Badge() public Badge()
......
using Xamarin.Forms;
namespace inutralia namespace inutralia
{ {
using Xamarin.Forms;
public partial class BrandBlock : ContentView public partial class BrandBlock : ContentView
{ {
public BrandBlock() public BrandBlock()
......
using Xamarin.Forms;
namespace inutralia namespace inutralia
{ {
using Xamarin.Forms;
public partial class CircleIcon : ContentView public partial class CircleIcon : ContentView
{ {
public CircleIcon() public CircleIcon()
......
using Xamarin.Forms;
namespace inutralia namespace inutralia
{ {
using Xamarin.Forms;
public partial class CustomActivityIndicator : ContentView public partial class CustomActivityIndicator : ContentView
{ {
public CustomActivityIndicator() public CustomActivityIndicator()
......
using System;
using Xamarin.Forms;
namespace inutralia namespace inutralia
{ {
using System;
using Xamarin.Forms;
public partial class Rating : ContentView public partial class Rating : ContentView
{ {
private string RATING_EMPTY_ICON_CHAR = GrialShapesFont.StarBorder; private string RATING_EMPTY_ICON_CHAR = GrialShapesFont.StarBorder;
......
...@@ -8,8 +8,7 @@ ...@@ -8,8 +8,7 @@
Padding="0"> Padding="0">
<ContentView.Content> <ContentView.Content>
<AbsoluteLayout <AbsoluteLayout
effects:Effects.CornerRadius="{ Binding Source={ x:Reference Root }, Path=RoundedLabelCornerRadius }" effects:Effects.CornerRadius="{ Binding Source={ x:Reference Root }, Path=RoundedLabelCornerRadius }"
BackgroundColor="{ Binding Source={ x:Reference Root }, Path=RoundedLabelBackgroundColor }" > BackgroundColor="{ Binding Source={ x:Reference Root }, Path=RoundedLabelBackgroundColor }" >
...@@ -21,7 +20,6 @@ ...@@ -21,7 +20,6 @@
TextColor="{ Binding Source={ x:Reference Root }, Path=RoundedLabelTextColor }" TextColor="{ Binding Source={ x:Reference Root }, Path=RoundedLabelTextColor }"
AbsoluteLayout.LayoutBounds="0, 0.5, AutoSize, AutoSize" AbsoluteLayout.LayoutBounds="0, 0.5, AutoSize, AutoSize"
AbsoluteLayout.LayoutFlags="XProportional, YProportional" /> AbsoluteLayout.LayoutFlags="XProportional, YProportional" />
</AbsoluteLayout> </AbsoluteLayout>
</ContentView.Content> </ContentView.Content>
</ContentView> </ContentView>
using System;
using Xamarin.Forms;
namespace inutralia namespace inutralia
{ {
using System;
using Xamarin.Forms;
public partial class RoundedLabel : ContentView public partial class RoundedLabel : ContentView
{ {
public RoundedLabel() public RoundedLabel()
......
...@@ -3,11 +3,10 @@ ...@@ -3,11 +3,10 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="inutralia.Views.HomeView" x:Class="inutralia.Views.HomeView"
xmlns:local="clr-namespace:inutralia;assembly=inutralia" xmlns:local="clr-namespace:inutralia;assembly=inutralia"
NavigationPage.HasNavigationBar="false" NavigationPage.HasNavigationBar="false"
Padding ="0,40,0,10"> Padding ="0,40,0,10">
<StackLayout> <StackLayout>
<!-- -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*LOGO-*-*-*-*-*-*-*-*-*-*-*-* --> <!-- -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*LOGO-*-*-*-*-*-*-*-*-*-*-*-* -->
<StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"> <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
......
using inutralia.Views.Question; namespace inutralia.Views
using System;
using Xamarin.Forms;
namespace inutralia.Views
{ {
using inutralia.Views.Question;
using System;
using Xamarin.Forms;
public partial class HomeView : ContentPage public partial class HomeView : ContentPage
{ {
protected RootPage RootPage => Application.Current.MainPage as RootPage; protected RootPage RootPage => Application.Current.MainPage as RootPage;
......
using System; namespace inutralia.Views
using inutralia.Models;
using Xamarin.Forms;
namespace inutralia.Views
{ {
using System;
using inutralia.Models;
using Xamarin.Forms;
public partial class LoginView : ContentPage public partial class LoginView : ContentPage
{ {
private bool processing private bool processing
......
using inutralia.Views.Question; namespace inutralia.Views
using Xamarin.Forms;
namespace inutralia.Views
{ {
using inutralia.Views.Question;
using Xamarin.Forms;
public partial class MenuView : ContentPage public partial class MenuView : ContentPage
{ {
public MenuView() public MenuView()
......
using System; namespace inutralia.Views
using Xamarin.Forms;
namespace inutralia.Views
{ {
using System;
using Xamarin.Forms;
public partial class RootPage : MasterDetailPage public partial class RootPage : MasterDetailPage
{ {
public RootPage() public RootPage()
......
using Xamarin.Forms;
namespace inutralia namespace inutralia
{ {
using Xamarin.Forms;
public partial class WelcomeStarterPage : ContentPage public partial class WelcomeStarterPage : ContentPage
{ {
public WelcomeStarterPage() public WelcomeStarterPage()
......
using System; namespace inutralia.Views
using inutralia.ViewModels;
using Xamarin.Forms;
namespace inutralia.Views
{ {
using System;
using inutralia.ViewModels;
using Xamarin.Forms;
public partial class ProfileView : ContentPage public partial class ProfileView : ContentPage
{ {
protected ProfileViewModel ViewModel => BindingContext as ProfileViewModel; protected ProfileViewModel ViewModel => BindingContext as ProfileViewModel;
......
...@@ -2,15 +2,11 @@ ...@@ -2,15 +2,11 @@
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="inutralia.Views.Question.HistoryView" x:Class="inutralia.Views.Question.HistoryView"
xmlns:artina="clr-namespace:UXDivers.Artina.Shared;assembly=UXDivers.Artina.Shared"
xmlns:local="clr-namespace:inutralia.Views.Question"
x:Name="historyView" x:Name="historyView"
Title="Histórico" Title="Histórico"
Icon="History1" Icon="History1"
BackgroundColor="{DynamicResource BasePageColor}"> BackgroundColor="{DynamicResource BasePageColor}">
<ContentPage.Content> <ContentPage.Content>
<StackLayout Orientation="Vertical" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"> <StackLayout Orientation="Vertical" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<Frame Margin="0,0,0,8" Padding="14,14,14,14" BackgroundColor="{DynamicResource AccentColor}"> <Frame Margin="0,0,0,8" Padding="14,14,14,14" BackgroundColor="{DynamicResource AccentColor}">
...@@ -40,12 +36,15 @@ ...@@ -40,12 +36,15 @@
<ListView x:Name="ListView" <ListView x:Name="ListView"
ItemsSource="{Binding QuestionList}" ItemsSource="{Binding QuestionList}"
ItemTapped="ItemTapped" ItemTapped="ItemTapped"
IsPullToRefreshEnabled="True" IsPullToRefreshEnabled="True"
RefreshCommand="{Binding RefreshQuestionListCommand}"
IsRefreshing="{Binding Busy, Mode=TwoWay}" IsRefreshing="{Binding Busy, Mode=TwoWay}"
BackgroundColor="Transparent" BackgroundColor="Transparent"
Footer="" Footer=""
CachingStrategy="RecycleElement" CachingStrategy="RecycleElement"
HasUnevenRows="False" HasUnevenRows="True"
Margin="10,10"> Margin="10,10">
<ListView.ItemTemplate> <ListView.ItemTemplate>
...@@ -57,8 +56,9 @@ ...@@ -57,8 +56,9 @@
<ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<StackLayout> <StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Label Text="{Binding Text}" FontSize="Medium"/> <Label Text="{Binding Text}" FontSize="Medium" HorizontalOptions="StartAndExpand" TextColor="Black"/>
<Label Text="{Binding Subject}" FontSize="Medium" HorizontalOptions="CenterAndExpand" TextColor="Black"/>
</StackLayout> </StackLayout>
</Grid> </Grid>
</ViewCell> </ViewCell>
......
using inutralia.Models; namespace inutralia.Views.Question
using inutralia.Models.Questions;
using inutralia.ViewModels;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace inutralia.Views.Question
{ {
using inutralia.Models.Questions;
using inutralia.ViewModels;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
[XamlCompilation(XamlCompilationOptions.Compile)] [XamlCompilation(XamlCompilationOptions.Compile)]
public partial class HistoryView : ContentPage public partial class HistoryView : ContentPage
{ {
...@@ -20,7 +19,7 @@ namespace inutralia.Views.Question ...@@ -20,7 +19,7 @@ namespace inutralia.Views.Question
protected async void ItemTapped(object sender, ItemTappedEventArgs e) protected async void ItemTapped(object sender, ItemTappedEventArgs e)
{ {
var respon = e.Item as Message; var respon = e.Item as Message;
if (respon.StatusImg == "Respondida") if (respon.State == "Respondida")
{ {
await DisplayAlert("ERROR", "La pregunta ya está respondida", "Entendido"); await DisplayAlert("ERROR", "La pregunta ya está respondida", "Entendido");
} }
...@@ -31,7 +30,7 @@ namespace inutralia.Views.Question ...@@ -31,7 +30,7 @@ namespace inutralia.Views.Question
{ {
BindingContext = new PendingReadViewModel((Message)e.Item) BindingContext = new PendingReadViewModel((Message)e.Item)
} }
); );
((ListView)sender).SelectedItem = null; ((ListView)sender).SelectedItem = null;
} }
} }
......
using System; namespace inutralia.Views.Question
using System.Linq;
using inutralia.Models;
using inutralia.ViewModels;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace inutralia.Views.Question
{ {
using inutralia.ViewModels;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
[XamlCompilation(XamlCompilationOptions.Compile)] [XamlCompilation(XamlCompilationOptions.Compile)]
public partial class NewConsultationView : ContentPage public partial class NewConsultationView : ContentPage
{ {
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="inutralia.Views.Question.PendingReadView" x:Class="inutralia.Views.Question.PendingReadView"
xmlns:artina="clr-namespace:UXDivers.Artina.Shared;assembly=UXDivers.Artina.Shared"
Title="Pendientes de leer" Title="Pendientes de leer"
Icon="pendiente" Icon="pendiente"
BackgroundColor="{DynamicResource BasePageColor}"> BackgroundColor="{DynamicResource BasePageColor}">
...@@ -32,7 +31,7 @@ ...@@ -32,7 +31,7 @@
</Frame> </Frame>
<StackLayout VerticalOptions="FillAndExpand" Margin="15,15" Padding="0,15,0,15"> <StackLayout VerticalOptions="FillAndExpand" Margin="15,15" Padding="0,15,0,15">
<ListView x:Name="ListView" <ListView x:Name="ListView"
ItemsSource="{Binding }" ItemsSource="{Binding }"
ItemTapped="ItemTapped" ItemTapped="ItemTapped"
...@@ -53,8 +52,10 @@ ...@@ -53,8 +52,10 @@
<ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<StackLayout> <StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Label Text="{Binding Text}" FontSize="Medium"/> <Label Text="{Binding Text}" FontSize="Medium" HorizontalOptions="StartAndExpand" TextColor="Black"/>
<Label x:Name="State" Text="{Binding State}" HorizontalOptions="EndAndExpand" TextColor="Black"/>
<Image Source="{Binding StatusImg}" Aspect="AspectFit" HorizontalOptions="EndAndExpand"/>
</StackLayout> </StackLayout>
</Grid> </Grid>
</ViewCell> </ViewCell>
...@@ -62,7 +63,6 @@ ...@@ -62,7 +63,6 @@
</ListView.ItemTemplate> </ListView.ItemTemplate>
</ListView> </ListView>
</StackLayout> </StackLayout>
</StackLayout> </StackLayout>
</ContentPage.Content> </ContentPage.Content>
</ContentPage> </ContentPage>
\ No newline at end of file
using inutralia.Models; namespace inutralia.Views.Question
using inutralia.Models.Questions;
using inutralia.ViewModels;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace inutralia.Views.Question
{ {
using inutralia.Models.Questions;
using inutralia.ViewModels;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
[XamlCompilation(XamlCompilationOptions.Compile)] [XamlCompilation(XamlCompilationOptions.Compile)]
public partial class PendingReadView : ContentPage public partial class PendingReadView : ContentPage
{ {
...@@ -19,9 +18,29 @@ namespace inutralia.Views.Question ...@@ -19,9 +18,29 @@ namespace inutralia.Views.Question
BindingContext = new PendingReadViewModel(); BindingContext = new PendingReadViewModel();
} }
protected void ItemTapped(object sender, ItemTappedEventArgs e) protected async void ItemTapped(object sender, ItemTappedEventArgs e)
{ {
var pdte = (BindingContext as PendingReadViewModel);
if (pdte.State == PendingReadViewModel.Estatus.Cerrado)
{
await DisplayAlert("ERROR", "La pregunta ya está cerrada", "Entendido");
}
else
{
await Navigation.PushAsync(new NewConsultationView()
{
BindingContext = ViewModel.Message
});
}
((ListView)sender).SelectedItem = null; ((ListView)sender).SelectedItem = null;
} }
protected override async void OnAppearing()
{
base.OnAppearing();
await ViewModel.RefresData();
}
} }
} }
\ No newline at end of file
...@@ -3,8 +3,7 @@ ...@@ -3,8 +3,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:inutralia.Views.Question" xmlns:local="clr-namespace:inutralia.Views.Question"
x:Class="inutralia.Views.Question.QuestionListView" x:Class="inutralia.Views.Question.QuestionListView"
Title="Mis Consultas" Title="Mis Consultas">
>
<local:HistoryView/> <local:HistoryView/>
<local:PendingReadView/> <local:PendingReadView/>
......
using Xamarin.Forms; namespace inutralia.Views.Question
using Xamarin.Forms.Xaml;
namespace inutralia.Views.Question
{ {
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
[XamlCompilation(XamlCompilationOptions.Compile)] [XamlCompilation(XamlCompilationOptions.Compile)]
public partial class QuestionListView : TabbedPage public partial class QuestionListView : TabbedPage
{ {
......
using inutralia.ViewModels; namespace inutralia.Views
using System;
using System.Linq;
using Xamarin.Forms;
namespace inutralia.Views
{ {
using inutralia.ViewModels;
using System;
using System.Linq;
using Xamarin.Forms;
public partial class RecipeDetailView : ContentPage public partial class RecipeDetailView : ContentPage
{ {
protected RecipeViewModel ViewModel => BindingContext as RecipeViewModel; protected RecipeViewModel ViewModel => BindingContext as RecipeViewModel;
...@@ -21,9 +21,7 @@ namespace inutralia.Views ...@@ -21,9 +21,7 @@ namespace inutralia.Views
protected override async void OnAppearing() protected override async void OnAppearing()
{ {
base.OnAppearing(); base.OnAppearing();
await ViewModel.RefreshData(); await ViewModel.RefreshData();
outerScrollView.Scrolled += OnScroll; outerScrollView.Scrolled += OnScroll;
} }
......
using inutralia.ViewModels; namespace inutralia.Views
using System;
using Xamarin.Forms;
namespace inutralia.Views
{ {
using inutralia.ViewModels;
using System;
using Xamarin.Forms;
public partial class ModalFiltersRecipe : ContentPage public partial class ModalFiltersRecipe : ContentPage
{ {
protected RecipeListOptionsViewModel ViewModel => BindingContext as RecipeListOptionsViewModel; protected RecipeListOptionsViewModel ViewModel => BindingContext as RecipeListOptionsViewModel;
......
using System;
using System.Collections.Generic;
using Xamarin.Forms;
namespace inutralia.Views namespace inutralia.Views
{ {
public partial class RecipeItemTemplate : ContentView using Xamarin.Forms;
{
public RecipeItemTemplate () public partial class RecipeItemTemplate : ContentView
{ {
InitializeComponent (); public RecipeItemTemplate()
} {
} InitializeComponent();
}
}
} }
using inutralia.Models; namespace inutralia.Views
using inutralia.ViewModels;
using System;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace inutralia.Views
{ {
using inutralia.Models;
using inutralia.ViewModels;
using System;
using System.Threading.Tasks;
using Xamarin.Forms;
public partial class RecipeListView : ContentPage public partial class RecipeListView : ContentPage
{ {
protected RecipeListViewModel ViewModel => BindingContext as RecipeListViewModel; protected RecipeListViewModel ViewModel => BindingContext as RecipeListViewModel;
......
using System; namespace inutralia.Views
using System.IO;
using System.Reflection;
using Xamarin.Forms;
namespace inutralia.Views
{ {
using System;
using System.IO;
using System.Reflection;
using Xamarin.Forms;
public partial class RegisterConditionsView : ContentPage public partial class RegisterConditionsView : ContentPage
{ {
public RegisterConditionsView() public RegisterConditionsView()
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
<ContentPage.Content> <ContentPage.Content>
<AbsoluteLayout> <AbsoluteLayout>
<!-- GRADIENT--> <!-- GRADIENT-->
<Image AbsoluteLayout.LayoutBounds="0,0,1,44" AbsoluteLayout.LayoutFlags="WidthProportional" Style="{ StaticResource StatusBarShimStyle }" VerticalOptions="Start"/> <Image AbsoluteLayout.LayoutBounds="0,0,1,44" AbsoluteLayout.LayoutFlags="WidthProportional" Style="{ StaticResource StatusBarShimStyle }" VerticalOptions="Start"/>
...@@ -146,7 +145,6 @@ ...@@ -146,7 +145,6 @@
<!-- BUTTONS --> <!-- BUTTONS -->
<StackLayout Grid.Row="2" Spacing="10" Padding="0,10,0,0" HorizontalOptions="FillAndExpand" VerticalOptions="End" > <StackLayout Grid.Row="2" Spacing="10" Padding="0,10,0,0" HorizontalOptions="FillAndExpand" VerticalOptions="End" >
<StackLayout Orientation="Horizontal" IsVisible="False"> <StackLayout Orientation="Horizontal" IsVisible="False">
<Switch x:Name="ConditionsSwitch" Toggled="ConditionsSwitch_Toggled" /> <Switch x:Name="ConditionsSwitch" Toggled="ConditionsSwitch_Toggled" />
......
using System;
using System.Net;
using Xamarin.Forms;
namespace inutralia.Views namespace inutralia.Views
{ {
using System;
using System.Net;
using Xamarin.Forms;
public partial class RegisterView : ContentPage public partial class RegisterView : ContentPage
{ {
public RegisterView() public RegisterView()
......
...@@ -5,7 +5,19 @@ ...@@ -5,7 +5,19 @@
<StackLayout Padding = "25,50" > <StackLayout Padding = "25,50" >
<Label x:Name="messageLabel" HorizontalOptions = "Center"/> <Label x:Name="messageLabel" HorizontalOptions = "Center"/>
<Entry x:Name = "userEntry" Placeholder="Usuario" HorizontalOptions = "Fill" VerticalOptions = "CenterAndExpand" />
<Button x:Name="RememberButton" Text = "Recuperar" Clicked="OnRememberButtonClicked" HorizontalOptions = "Fill" VerticalOptions = "EndAndExpand" FontSize="24" BorderRadius="10" BorderWidth="1"/> <Entry x:Name = "userEntry"
Placeholder="Usuario"
HorizontalOptions = "Fill"
VerticalOptions = "CenterAndExpand" />
<Button x:Name="RememberButton"
Text = "Recuperar"
Clicked="OnRememberButtonClicked"
HorizontalOptions = "Fill"
VerticalOptions = "EndAndExpand"
FontSize="24"
BorderRadius="10"
BorderWidth="1"/>
</StackLayout> </StackLayout>
</ContentPage> </ContentPage>
using System; namespace inutralia.Views
using Xamarin.Forms;
namespace inutralia.Views
{ {
using System;
using Xamarin.Forms;
public partial class RememberView : ContentPage public partial class RememberView : ContentPage
{ {
public RememberView() public RememberView()
......
using Rg.Plugins.Popup.Pages; namespace inutralia.Views.ShoppingList
using Rg.Plugins.Popup.Services;
using System;
using Xamarin.Forms.Xaml;
namespace inutralia.Views.ShoppingList
{ {
using Rg.Plugins.Popup.Pages;
using Rg.Plugins.Popup.Services;
using System;
using Xamarin.Forms.Xaml;
[XamlCompilation(XamlCompilationOptions.Compile)] [XamlCompilation(XamlCompilationOptions.Compile)]
public partial class InfoPopup : PopupPage public partial class InfoPopup : PopupPage
{ {
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
Title=" TU COMPRA DELSUPER" > Title=" TU COMPRA DELSUPER" >
<StackLayout Margin="10,10" VerticalOptions="FillAndExpand" IsVisible="{Binding isBusy}"> <StackLayout Margin="10,10" VerticalOptions="FillAndExpand" IsVisible="{Binding isBusy}">
<ListView ItemsSource="{Binding ShoppingList}" <ListView ItemsSource="{Binding ShoppingList}"
ItemTapped="ItemTapped" ItemTapped="ItemTapped"
IsPullToRefreshEnabled="True" IsPullToRefreshEnabled="True"
......
using inutralia.ViewModels; namespace inutralia.Views
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace inutralia.Views
{ {
using inutralia.ViewModels;
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
[XamlCompilation(XamlCompilationOptions.Compile)] [XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ListDelSuper : ContentPage public partial class ListDelSuper : ContentPage
{ {
......
using inutralia.ViewModels; namespace inutralia.Views
using System;
using Xamarin.Forms;
namespace inutralia.Views
{ {
using inutralia.ViewModels;
using System;
using Xamarin.Forms;
public partial class ModalAddShoppingList : ContentPage public partial class ModalAddShoppingList : ContentPage
{ {
protected ShoppingListViewModel ViewModel => BindingContext as ShoppingListViewModel; protected ShoppingListViewModel ViewModel => BindingContext as ShoppingListViewModel;
......
using inutralia.ViewModels; namespace inutralia.Views
using inutralia.Views.ShoppingList;
using Rg.Plugins.Popup.Services;
using System;
using Xamarin.Forms;
namespace inutralia.Views
{ {
using inutralia.ViewModels;
using inutralia.Views.ShoppingList;
using Rg.Plugins.Popup.Services;
using System;
using Xamarin.Forms;
public partial class ShoppingListView : ContentPage public partial class ShoppingListView : ContentPage
{ {
protected ShoppingListViewModel ViewModel => BindingContext as ShoppingListViewModel; protected ShoppingListViewModel ViewModel => BindingContext as ShoppingListViewModel;
...@@ -52,7 +52,7 @@ namespace inutralia.Views ...@@ -52,7 +52,7 @@ namespace inutralia.Views
if (await DisplayAlert("Está a punto de borrar uno o varios ingredientes.", "¿Desea continuar?", "Aceptar", "Cancelar")) if (await DisplayAlert("Está a punto de borrar uno o varios ingredientes.", "¿Desea continuar?", "Aceptar", "Cancelar"))
{ {
await ViewModel.DeleteSelected(); await ViewModel.DeleteSelected();
} //endif }
} }
async void OnDeleteAllButtonClicked(object sender, EventArgs e) async void OnDeleteAllButtonClicked(object sender, EventArgs e)
......
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