예제 #1
0
        async Task ExecuteTapContainerCommandAsync(ASECloudTable table)
        {
            if (table == null)
            {
                return;
            }

            MessagingService.Current.Subscribe <MessageArgsDeleteTable>(MessageKeys.DeleteTable, async(m, argsDeleteTable) =>
            {
                Navigation.PopAsync();
                IProgressDialog deletingDialog = UserDialogs.Loading("Deleting Table");
                deletingDialog.Show();
                try
                {
                    var aseTable = Tables.Where(t => t.TableName == argsDeleteTable.TableName &&
                                                t.StorageAccountName == argsDeleteTable.StorageAccountName).FirstOrDefault();
                    if (aseTable == null)
                    {
                        return;
                    }
                    await aseTable.BaseTable.DeleteIfExistsAsync();
                    App.Logger.Track(AppEvent.DeleteTable.ToString());
                    Tables.Remove(aseTable);
                    SortTables();
                    var realm = App.GetRealm();
                    await realm.WriteAsync(temprealm =>
                    {
                        temprealm.Remove(temprealm.All <RealmCloudTable>()
                                         .Where(t => t.TableName == argsDeleteTable.TableName &&
                                                t.StorageAccountName == argsDeleteTable.StorageAccountName).First());
                    });
                }
                catch (Exception ex)
                {
                    Logger.Report(ex, "Method", "HandleMessageArgsDeleteTable");
                    MessagingService.Current.SendMessage(MessageKeys.Error, ex);
                }
                finally
                {
                    if (deletingDialog != null)
                    {
                        if (deletingDialog.IsShowing)
                        {
                            deletingDialog.Hide();
                        }
                        deletingDialog.Dispose();
                    }
                }
            });

            var tableRowsPage = new TableRowsPage(table);

            App.Logger.TrackPage(AppPage.TableRows.ToString());
            await testPage.Navigation.PushAsync(tableRowsPage);
        }
        public TableRowsPage(ASECloudTable table)
        {
            InitializeComponent();
            BindingContext = new TableRowsViewModel(Navigation, UserDialogs.Instance, table);

            Title = table.BaseTable.Name;
            ViewModel.LoadTableRowsCommand.Execute(false);

            if (Device.RuntimePlatform == Device.Android)
            {
                ToolbarItems.Add(new ToolbarItem
                {
                    Order   = ToolbarItemOrder.Secondary,
                    Text    = "Add Row",
                    Command = vm.AddTableRowCommand
                });
                ToolbarItems.Add(new ToolbarItem
                {
                    Order   = ToolbarItemOrder.Secondary,
                    Text    = "Delete Table",
                    Command = vm.DeleteTableCommand
                });
            }
            else if (Device.RuntimePlatform == Device.iOS)
            {
                ToolbarItems.Add(new ToolbarItem
                {
                    Text    = "More",
                    Icon    = "toolbar_overflow.png",
                    Command = new Command(async() =>
                    {
                        string[] items = new[] { "Add Row", "Delete Table" };

                        var action = await DisplayActionSheet("Options", "Cancel", null, items);
                        if (action == items[0])
                        {
                            vm.AddTableRowCommand.Execute(null);
                        }
                        else if (action == items[1])
                        {
                            vm.DeleteTableCommand.Execute(null);
                        }
                    })
                });
            }

            lvTableRows.ItemSelected += (sender, e) =>
            {
                lvTableRows.SelectedItem = null;
            };
        }
예제 #3
0
 public TableRowsViewModel(INavigation navigation, IUserDialogs userDialogs, ASECloudTable table) : base(navigation, userDialogs)
 {
     Table = table;
     NoTableRowsFoundMessage = "No Queue Messages Found";
     RowsLoadedCount         = 0;
 }
예제 #4
0
 public void AddTable(ASECloudTable aseCloudTable)
 {
     Tables.Add(aseCloudTable);
     SortTables();
 }