コード例 #1
0
        private async Task HeadDeleteCardsCommandExecute(IDim head)
        {
            var ts = await dialCoord.ShowMessageAsync(this, "Warning",
                                                      $"Are you sure to delete all Cards in {head.FullName}?"
                                                      , MessageDialogStyle.AffirmativeAndNegative);

            if (ts == MessageDialogResult.Negative)
            {
                return;
            }

            switch (head)
            {
            case ColumnViewModel column:
            {
                // Remove Cards
                foreach (var it in cardList.Where(x => x.ColumnDeterminant == column.Id).ToList())
                {
                    Box.Cards.Remove(it);
                }
            }
            break;

            case RowViewModel row:
            {
                // Remove Cards
                foreach (var it in cardList.Where(x => x.RowDeterminant == row.Id).ToList())
                {
                    Box.Cards.Remove(it);
                }
            }
            break;
            }
        }
コード例 #2
0
ファイル: Screensaver.cs プロジェクト: ralle12345/Kala
        public static void Screensaver(int timeOut)
        {
            CrossLogger.Current.Debug("Screensaver", "Configuring screensaver, using timeout of " + timeOut.ToString());

            Device.StartTimer(TimeSpan.FromSeconds(10), () =>
            {
                CrossLogger.Current.Debug("Screensaver", "Check if time to show screensaver");

                if (App.config.LastActivity.AddSeconds(timeOut) < DateTime.Now && active == false)
                {
                    CrossLogger.Current.Debug("Screensaver", "Enable Screensaver");
                    PreviousPage = Application.Current.MainPage;

                    IDim dim = DependencyService.Get <IDim>();
                    dim.SetBacklight(0.0f);
                    active = true;

                    Application.Current.MainPage = CreatePage();
                    InfiniteLoop();

                    dim = null;
                }

                return(true);
            });
        }
コード例 #3
0
ファイル: Screensaver.cs プロジェクト: ralle12345/Kala
        private static void OnResumeButtonClicked(object sender, EventArgs e)
        {
            CrossLogger.Current.Debug("Screensaver", "Button Pressed");
            active = false;
            Application.Current.MainPage = PreviousPage;
            App.tp.CurrentPage           = App.tp.Children[0]; //Revert to first tab when resuming
            App.config.LastActivity      = DateTime.Now;       //Update lastactivity to reset Screensaver timer

            IDim dim = DependencyService.Get <IDim>();

            dim.SetBacklight(0.8f);
            dim = null;
        }
コード例 #4
0
        private async Task InsertHead(IDim head, int after)
        {
            var ts = await dialCoord
                     .ShowInputAsync(this, "Info", "Enter new name",
                                     new MetroDialogSettings
            {
                AffirmativeButtonText = "OK",
                NegativeButtonText    = "Cancel",
                DefaultText           = head.Name
            });

            if (string.IsNullOrEmpty(ts))
            {
                return;
            }

            EnableMatrix = false;

            switch (head)
            {
            case ColumnViewModel column:
            {
                var tempColumns = Columns.ToList();
                var index       = tempColumns.IndexOf(head) + after;

                var cvm = new ColumnViewModel
                {
                    Name    = ts,
                    BoardId = column.BoardId
                };

                tempColumns.Insert(index, cvm);
                Box.Columns.Add(cvm);

                var i = 0;
                foreach (var it in tempColumns)
                {
                    it.Order = i;
                    i++;
                }
            }
            break;

            case RowViewModel row:
            {
                var tempRows = Rows.ToList();
                var index    = tempRows.IndexOf(head) + after;

                var rvm = new RowViewModel
                {
                    Name    = ts,
                    BoardId = row.BoardId
                };

                tempRows.Insert(index, rvm);
                Box.Rows.Add(rvm);

                var i = 0;
                foreach (var it in tempRows)
                {
                    it.Order = i;
                    i++;
                }
            }
            break;
            }

            // Rebuild matrix
            this.EnableMatrix = true;

            NormalizeGridCommand
            .Execute()
            .Subscribe();
        }
コード例 #5
0
 private async Task InsertHeadAfterCommandExecute(IDim head)
 {
     await InsertHead(head, 1);
 }
コード例 #6
0
 private async Task InsertHeadBeforeCommandExecute(IDim head)
 {
     await InsertHead(head, 0);
 }
コード例 #7
0
        private async Task HeadDeleteCommandExecute(IDim head)
        {
            switch (head)
            {
            case ColumnViewModel _ when Box.Columns.Count <= 1:
            case RowViewModel _ when Box.Rows.Count <= 1:
                await dialCoord.ShowMessageAsync(this, "Warning", $"Cannot remove {head.FullName}");

                return;
            }

            var ts = await dialCoord.ShowMessageAsync(this, "Warning",
                                                      $"Are you sure to delete {head.FullName}?"
                                                      , MessageDialogStyle.AffirmativeAndNegative);

            if (ts == MessageDialogResult.Negative)
            {
                return;
            }

            EnableMatrix = false;
            bool needDeleteCards = false;

            // delete head and move cards from deleted cells to first head if needed
            switch (head)
            {
            case ColumnViewModel column:
            {
                if (column.CurNumberOfCards > 0)
                {
                    ts = await dialCoord.ShowMessageAsync(this, "Warning",
                                                          "Do you need move cards to the first column? (otherwise they will be deleted)"
                                                          , MessageDialogStyle.AffirmativeAndNegative);

                    needDeleteCards = ts == MessageDialogResult.Negative;
                }

                var cardsTo = cardList.Where(x => x.ColumnDeterminant == column.Id).ToList();

                if (needDeleteCards)
                {
                    Box.Cards.RemoveMany(cardsTo);
                }
                else
                {
                    // Move cards to the first column, but not to the deleted column
                    var firstColumn = Columns
                                      .OrderBy(x => x.Order)
                                      .First(x => x.Id != column.Id);

                    var maxOrderNum = cardList
                                      .Where(x => x.ColumnDeterminant == firstColumn.Id)
                                      .Max(x => x.Order);

                    foreach (var it in cardsTo)
                    {
                        it.ColumnDeterminant = firstColumn.Id;
                        it.Order             = maxOrderNum += 10;
                    }
                }

                Box.Columns.Remove(column);
            }
            break;

            case RowViewModel row:
            {
                if (row.CurNumberOfCards > 0)
                {
                    ts = await dialCoord.ShowMessageAsync(this, "Warning",
                                                          "Do you need move cards to the first row? (otherwise they will be deleted)"
                                                          , MessageDialogStyle.AffirmativeAndNegative);

                    needDeleteCards = ts == MessageDialogResult.Negative;
                }

                var cardsTo = cardList.Where(x => x.RowDeterminant == row.Id).ToList();

                if (needDeleteCards)
                {
                    Box.Cards.RemoveMany(cardsTo);
                }
                else
                {
                    // Move cards to the first row, ...
                    var firstRow = Rows
                                   .OrderBy(x => x.Order)
                                   .First(x => x.Id != row.Id);

                    var maxOrderNum = cardList
                                      .Where(x => x.RowDeterminant == firstRow.Id)
                                      .Max(x => x.Order);

                    foreach (var it in cardsTo)
                    {
                        it.RowDeterminant = firstRow.Id;
                        it.Order          = maxOrderNum += 10;
                    }
                }

                Box.Rows.Remove(row);
            }
            break;
            }

            // Rebuild Matrix
            EnableMatrix = true;

            NormalizeGridCommand
            .Execute()
            .Subscribe();
        }
コード例 #8
0
        private async Task HeadDeleteCommandExecute(IDim head)
        {
            switch (head)
            {
            case ColumnViewModel _ when Box.Columns.Count <= 1:
            case RowViewModel _ when Box.Rows.Count <= 1:
                await dialCoord.ShowMessageAsync(this, "Warning", $"Cannot remove {head.FullName}");

                return;
            }

            var ts = await dialCoord.ShowMessageAsync(this, "Warning",
                                                      $"Are you sure to delete {head.FullName}?"
                                                      , MessageDialogStyle.AffirmativeAndNegative);

            if (ts == MessageDialogResult.Negative)
            {
                return;
            }

            EnableMatrix = false;

            // delete head and move cards from deleted cells to first head
            switch (head)
            {
            case ColumnViewModel column:
            {
                // Shift cards
                var firstColumn = Columns
                                  .OrderBy(x => x.Order)
                                  .First(x => x.Id != column.Id);
                foreach (var it in cardList.Where(x => x.ColumnDeterminant == column.Id).ToList())
                {
                    it.ColumnDeterminant = firstColumn.Id;
                }

                Box.Columns.Remove(column);
            }
            break;

            case RowViewModel row:
            {
                // Shift cards
                var firstRow = Rows
                               .OrderBy(x => x.Order)
                               .First(x => x.Id != row.Id);
                foreach (var it in cardList.Where(x => x.RowDeterminant == row.Id).ToList())
                {
                    it.RowDeterminant = firstRow.Id;
                }

                Box.Rows.Remove(row);
            }
            break;
            }

            // Rebuild Matrix
            EnableMatrix = true;

            NormalizeGridCommand
            .Execute()
            .Subscribe();
        }