コード例 #1
0
        private async void RatioPTTChecked(object sender, RoutedEventArgs e)
        {
            if (DisplayFrame.CurrentSourcePageType != typeof(PttMainPage))
            {
                if (SplitView1.DisplayMode == SplitViewDisplayMode.CompactOverlay)
                {
                    await rtb.RenderAsync(SplitContent);

                    DissolveImage.Source     = rtb;
                    DissolveImage.Visibility = Visibility.Visible;
                    DissolveImage.Opacity    = 1.0;
                    double duration = 150;
                    AnimateDouble(DissolveImage, "Opacity", 0.0, duration + 50, () =>
                    {
                        DissolveImage.Visibility = Visibility.Collapsed;
                    });

                    SplitView1.DisplayMode = SplitViewDisplayMode.Overlay;
                    DisplayFrame.Navigate(typeof(PttMainPage));
                    SplitContentTransform.X = 0;
                    SplitContentTransform.Y = 20;
                    AnimateDouble(SplitContentTransform, "Y", 0, duration, () =>
                    {
                        SplitContentTransform.X = 0;
                    });
                }

                /***
                 * if (SplitView1.DisplayMode == SplitViewDisplayMode.Overlay)
                 * {
                 *  // Overlay ==> CompactOverlay
                 *  await rtb.RenderAsync(SplitContent);
                 *  DissolveImage.Source = rtb;
                 *  DissolveImage.Visibility = Visibility.Visible;
                 *  DissolveImage.Opacity = 1.0;
                 *  double duration = 150;
                 *  AnimateDouble(DissolveImage, "Opacity", 0.0, duration + 50, () =>
                 *  {
                 *      DissolveImage.Visibility = Visibility.Collapsed;
                 *  });
                 *
                 *  DisplayFrame.Navigate(typeof(PttMainPage));
                 *  SplitContentTransform.X = SplitView1.CompactPaneLength;
                 *
                 *  SplitContentTransform.Y = 20;
                 *  AnimateDouble(SplitContentTransform, "Y", 0, duration, () => {
                 *
                 *      SplitView1.DisplayMode = SplitViewDisplayMode.CompactOverlay;
                 *      SplitContentTransform.X = 0;
                 *  });
                 * }
                 * /***/
                else
                {
                    await StartDissolvingAsync();

                    DisplayFrame.Navigate(typeof(PttMainPage));
                }
            }
        }
コード例 #2
0
        private async void YoutubePageChecked(object sender, RoutedEventArgs e)
        {
            if (DisplayFrame.CurrentSourcePageType != typeof(YoutubePage))
            {
                if (SplitView1.DisplayMode == SplitViewDisplayMode.CompactOverlay && LiPTT.IsYoutubeFullScreen)
                {
                    // CompactOverlay ==> Overlay
                    await rtb.RenderAsync(SplitContent);

                    DissolveImage.Source     = rtb;
                    DissolveImage.Visibility = Visibility.Visible;
                    DissolveImage.Opacity    = 1.0;
                    double duration = 150;
                    AnimateDouble(DissolveImage, "Opacity", 0.0, duration + 50, () =>
                    {
                        DissolveImage.Visibility = Visibility.Collapsed;
                    });

                    SplitView1.DisplayMode = SplitViewDisplayMode.Overlay;
                    DisplayFrame.Navigate(typeof(YoutubePage));
                    SplitContentTransform.X = 0;
                    SplitContentTransform.Y = 20;
                    AnimateDouble(SplitContentTransform, "Y", 0, duration, () =>
                    {
                        SplitContentTransform.X = 0;
                    });
                }
                else if (SplitView1.DisplayMode == SplitViewDisplayMode.Overlay && !LiPTT.IsYoutubeFullScreen)
                {
                    // Overlay ==> CompactOverlay
                    await rtb.RenderAsync(SplitContent);

                    DissolveImage.Source     = rtb;
                    DissolveImage.Visibility = Visibility.Visible;
                    DissolveImage.Opacity    = 1.0;
                    double duration = 150;
                    AnimateDouble(DissolveImage, "Opacity", 0.0, duration + 50, () =>
                    {
                        DissolveImage.Visibility = Visibility.Collapsed;
                    });

                    DisplayFrame.Navigate(typeof(YoutubePage));
                    SplitContentTransform.X = SplitView1.CompactPaneLength;

                    SplitContentTransform.Y = 20;
                    AnimateDouble(SplitContentTransform, "Y", 0, duration, () => {
                        SplitView1.DisplayMode  = SplitViewDisplayMode.CompactOverlay;
                        SplitContentTransform.X = 0;
                    });
                }
                else
                {
                    await StartDissolvingAsync();

                    DisplayFrame.Navigate(typeof(YoutubePage));
                }
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: jeffman/BaseStation
        private async Task <int> Run(Options options)
        {
            try
            {
                using (var ledDriver = LedDriver.Create())
                {
                    var  displayDriver = new DisplayDriver(ledDriver);
                    Task task;

                    if (options.StringValue != null)
                    {
                        if (options.ForceScroll || DisplayFrame.GetDisplayedStringLength(options.StringValue) > 3)
                        {
                            task = displayDriver.ScrollString(options.StringValue, options.Duration);
                        }
                        else
                        {
                            displayDriver.WriteString(options.StringValue);
                            task = Task.Delay(options.Duration);
                        }
                    }
                    else if (options.DecimalValue != null)
                    {
                        displayDriver.WriteFrame(DisplayFrame.FromDecimal(options.DecimalValue.Value, StatusLed.Blue));
                        task = Task.Delay(options.Duration);
                    }
                    else if (options.BusyDelay != null)
                    {
                        task = displayDriver.BusyLoop(options.BusyDelay.Value, options.Duration);
                    }
                    else if (options.RawValue != null)
                    {
                        for (int i = 0; i < 32; i++)
                        {
                            bool bit = ((options.RawValue.Value << i) & 0x80000000u) != 0u;
                            ledDriver.WriteBit(bit);
                        }
                        ledDriver.Latch();
                        task = Task.Delay(options.Duration);
                    }
                    else
                    {
                        Console.WriteLine("No option selected.");
                        return(-1);
                    }

                    await task;
                    displayDriver.Clear();
                }

                return(0);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error: {ex}");
                return(-1);
            }
        }
コード例 #4
0
        private async void ColorPage_Click(object sender, RoutedEventArgs e)
        {
            if (DisplayFrame.CurrentSourcePageType != typeof(ColorPage))
            {
                await StartDissolvingAsync();

                DisplayFrame.Navigate(typeof(ColorPage));
            }
        }
コード例 #5
0
        private async void RatioSettingChecked(object sender, RoutedEventArgs e)
        {
            if (DisplayFrame.CurrentSourcePageType != typeof(SettingPage))
            {
                await StartDissolvingAsync();

                DisplayFrame.Navigate(typeof(SettingPage));
                SplitView1.DisplayMode = SplitViewDisplayMode.Overlay;
            }
        }
コード例 #6
0
        private void SwitchPage(object sender, EventArgs e)
        {
            DisplayFrame.Navigate(pageToLoad);

            if (NavigatorFree != null)
            {
                Tools.Animations.FadeIn(DisplayFrame, animationTime, NavigationFinished);
            }
            else
            {
                Tools.Animations.FadeIn(DisplayFrame, animationTime, null);
            }
        }
コード例 #7
0
        public void UpdateDisplay(DisplayFrame data)
        {
            //Render
            byte[] rendered = data.GetSerializedData();

            //Create data to send
            byte[] buffer = new byte[2 + rendered.Length];
            buffer[1] = 0x65;
            Array.Copy(rendered, 0, buffer, 2, rendered.Length);

            //Send
            device.WriteFeatureData(buffer);
        }
コード例 #8
0
        // -------- Navigator --------

        public void Navigate(Page pageToLoad, double animationTime = .25d, bool animated = true)
        {
            if (!animated)
            {
                DisplayFrame.Navigate(pageToLoad);
            }
            else
            {
                this.pageToLoad    = pageToLoad;
                this.animationTime = animationTime;

                Tools.Animations.FadeOut(DisplayFrame, animationTime, SwitchPage);
            }
        }
コード例 #9
0
        private int videoFrame = -1; //Used for recording. Set to 0 to begin, -1 to stop

        public OSInstance()
        {
            this.frame      = new DisplayFrame(128, 40);
            this.connection = new KeyboardConnection();
            this.connection.Init();
            this.apps = new List <KeyboardApp>();
            this.rand = new Random();

            new Thread(() =>
            {
                Hooky.Init();
            }).Start();
            Hooky.listeners += Hooky_listeners;
        }
コード例 #10
0
        private void Timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            Dispatcher.Invoke(() =>
            {
                switch (DisplayType)
                {
                case DISPLAY_TYPE.LOGO:
                    DisplayFrame.Navigate(new LogoPage());
                    break;

                case DISPLAY_TYPE.TEXT:
                    DisplayFrame.Navigate(new TextPage(showText));
                    break;
                }
            });
        }
コード例 #11
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            switch (DisplayType)
            {
            case DISPLAY_TYPE.LOGO:
                DisplayFrame.Navigate(new LogoPage());
                break;

            case DISPLAY_TYPE.TEXT:
                DisplayFrame.Navigate(new TextPage(showText));
                break;

            case DISPLAY_TYPE.SEATMAPS:
                DisplayFrame.Navigate(new SeatMapPage(aircraftConfigurationId, frontDoorUsingFlag, rearDoorUsingFlag));
                break;
            }
        }
コード例 #12
0
 private static void AssertFrame(
     bool expectedRed,
     bool expectedGreen,
     bool expectedBlue,
     DisplayCharacter expectedLeft,
     DisplayCharacter expectedMiddle,
     DisplayCharacter expectedRight,
     DisplayFrame actual
     )
 {
     Assert.AreEqual(expectedRed, actual.StatusLeds[StatusLed.Red]);
     Assert.AreEqual(expectedGreen, actual.StatusLeds[StatusLed.Green]);
     Assert.AreEqual(expectedBlue, actual.StatusLeds[StatusLed.Blue]);
     Assert.AreEqual(expectedLeft.Value, actual.Characters[2].Value);
     Assert.AreEqual(expectedMiddle.Value, actual.Characters[1].Value);
     Assert.AreEqual(expectedRight.Value, actual.Characters[0].Value);
 }
コード例 #13
0
        // -------- Initialization --------

        public MainWindow()
        {
            InitializeComponent();

            instance = this;

            Editor.Initiate();

            Project.VerifyDirectories();
            Project.VerifyEnchantDefaultFiles();

            EnchantPack.LoadEnchantPacks();

            DisplayFrame.Navigate(new WelcomePage());

            InitializeColorBar();

            ActionBar.Height = 0;
        }
コード例 #14
0
 private void HandleEsc(object sender, KeyEventArgs e)
 {
     if (e.Key == Key.Escape)
     {
         Close();
     }
     if (e.Key == Key.T && DisplayType != DISPLAY_TYPE.SEATMAPS)
     {
         if (timer != null && timer.Enabled)
         {
             timer.Enabled = false;
         }
         seatMapPage = new SeatMapPage(aircraftConfigurationId, frontDoorUsingFlag, rearDoorUsingFlag, "C_3");
         DisplayFrame.Navigate(seatMapPage);
         timer           = new Timer(guidanceTime * 1000);
         timer.AutoReset = false;
         timer.Elapsed  += Timer_Elapsed;
         timer.Start();
     }
 }
コード例 #15
0
        private async void RatioBBSChecked(object sender, RoutedEventArgs e)
        {
            RatioBBS.IsEnabled = false;

            if (DisplayFrame.CurrentSourcePageType != typeof(BBSPage))
            {
                // CompactOverlay ==> Overlay
                if (SplitView1.DisplayMode == SplitViewDisplayMode.CompactOverlay)
                {
                    await StartDissolvingAsync();

                    DisplayFrame.Navigate(typeof(BBSPage));
                    SplitView1.DisplayMode = SplitViewDisplayMode.Overlay;
                }
                else
                {
                    await StartDissolvingAsync();

                    DisplayFrame.Navigate(typeof(BBSPage));
                    SplitView1.DisplayMode = SplitViewDisplayMode.Overlay;
                }
            }
        }
コード例 #16
0
 private void MainPage_Loaded(object sender, RoutedEventArgs e)
 {
     DisplayFrame.Navigate(typeof(PttMainPage));
     RatioPTT.IsChecked = true;
 }
コード例 #17
0
 public LoginWindow()
 {
     InitializeComponent();
     DisplayFrame.Navigate(new LoginPage(this));
 }
コード例 #18
0
 public MenuWindow()
 {
     InitializeComponent();
     DisplayFrame.Navigate(new MenuPage(this));
 }
コード例 #19
0
 private static DisplayFrame CreateFrameDecimal(decimal value)
 => DisplayFrame.FromDecimal(value, StatusLed.Blue);