Commit b28e977f by Javier Piris

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

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