private void HandleNavigationMessage(NavigationMessage message)
        {
            logger.Trace($"Got a navigation message [{message}]");

            switch (message)
            {
            case NavigationMessage.Collections:
                NavigateToCollectionsModule();
                break;

            case NavigationMessage.Import:
                shell.NavigateTo(typeof(IImportModule));
                break;

            case NavigationMessage.Logs:
                shell.NavigateTo(typeof(ILogsModule));
                break;

            case NavigationMessage.Tools:
                shell.NavigateTo(typeof(IToolsModule));
                break;

            case NavigationMessage.Books:
                shell.NavigateTo(typeof(IBooksModule));
                break;

            case NavigationMessage.Series:
                shell.NavigateTo(typeof(ISeriesModule));
                break;

            case NavigationMessage.Notes:
                shell.NavigateTo(typeof(INotesModule));
                break;

            case NavigationMessage.Settings:
                shell.NavigateTo(typeof(ISettingsModule));
                break;

            default:
                throw new ArgumentException($"Unhandled navigation message {message}");
            }
        }
예제 #2
0
        /// <summary>
        /// 画面遷移を行う
        /// </summary>
        /// <param name="message"></param>
        private void NavigationPage(NavigationMessage message)
        {
            // 遷移先の画面インスタンスを生成する
            // message.Destinationと同名のPageクラスのインスタンスを生成する
            var nextPage =
                Activator.CreateInstance(
                    Type.GetType($"{typeof(MainWindow).Namespace}.{message.Destination.ToString()}", false)) as Page;

            // 遷移先の画面が無い場合(バグ)、例外をスローする
            if (nextPage == null)
            {
                throw new NotImplementedException($"NavigationDestination:{message.Destination}");
            }

            // ViewModelが明示的に指定されていた場合、DataContextへバインドする
            if (message.ViewModel != null)
            {
                nextPage.DataContext = message.ViewModel;
            }

            AssociatedObject.Navigate(nextPage);
        }
예제 #3
0
 //Reply mail base on exist mail
 //use NavigationMessage
 private void ReplyMailFrom(object o)
 {
     if (o is object[])
     {
         var parameters = o as object[];
         if (null == parameters)
         {
             return;
         }
         var type  = parameters[0] as Type;
         var extra = parameters[1] as MailMsgBase;
         var mail  = new MailBase()
         {
             BodyHtml    = extra.BodyHtmlText,
             BodyText    = extra.BodyText,
             Subject     = "RE: " + extra.Subject,
             ToAddresses = extra.From[0].Address
         };
         var msg = new NavigationMessage(type, mail, Tokens.NavEdit);
         Messenger.Default.Send(msg, Tokens.Main);
         Messenger.Default.Send(msg, Tokens.Draft);
     }
 }
예제 #4
0
        private bool OnBusMessage(Bus bus, Message msg)
        {
            switch (msg.Type)
            {
            case MessageType.Eos:
                StopIterating();
                Close(false);
                OnEventChanged(PlayerEvent.EndOfStream);
                OnEventChanged(PlayerEvent.RequestNextTrack);
                break;

            case MessageType.StateChanged:
                if (msg.Src == playbin)
                {
                    State old_state, new_state, pending_state;
                    msg.ParseStateChanged(out old_state, out new_state, out pending_state);
                    HandleStateChange(old_state, new_state, pending_state);
                }
                break;

            case MessageType.Buffering:
                int buffer_percent;
                msg.ParseBuffering(out buffer_percent);
                HandleBuffering(buffer_percent);
                break;

            case MessageType.Tag:
                Pad     pad;
                TagList tag_list;
                msg.ParseTag(out pad, out tag_list);

                HandleTag(pad, tag_list);
                break;

            case MessageType.Error:
                Enum   error_type;
                string err_msg, debug;
                msg.ParseError(out error_type, out err_msg, out debug);

                HandleError(error_type, err_msg, debug);
                break;

            case MessageType.Element:
                if (MissingPluginMessage.IsMissingPluginMessage(msg))
                {
                    string detail = MissingPluginMessage.GetInstallerDetail(msg);

                    if (detail == null)
                    {
                        return(false);
                    }

                    if (missing_details.Contains(detail))
                    {
                        Log.DebugFormat("Ignoring missing element details, already prompted ('{0}')", detail);
                        return(false);
                    }

                    Log.DebugFormat("Saving missing element details ('{0}')", detail);
                    missing_details.Add(detail);

                    Log.Error("Missing GStreamer Plugin", MissingPluginMessage.GetDescription(msg), true);

                    InstallPluginsContext install_context = new InstallPluginsContext();
                    Install.InstallPlugins(missing_details.ToArray(), install_context, OnInstallPluginsReturn);
                }
                else if (msg.Src == playbin && msg.Structure.Name == "playbin2-stream-changed")
                {
                    HandleStreamChanged();
                }
                else if (NavigationMessage.MessageGetType(msg) == NavigationMessageType.CommandsChanged)
                {
                    dvd_manager.HandleCommandsChanged(playbin);
                }
                break;

            case MessageType.Application:
                string    name;
                Structure s = msg.Structure;
                name = s.Name;
                if (String.IsNullOrEmpty(name) && name == "stream-changed")
                {
                    video_manager.ParseStreamInfo();
                }
                break;
            }

            return(true);
        }
예제 #5
0
 private void ProcessNavigationMessage(NavigationMessage message)
 {
     CanInitiateConnect = !message.IsStartedByNfcRequest;
 }
예제 #6
0
 private void OnNavigationMessageReceived(NavigationMessage msg)
 {
     MainFrame.Navigate(msg.DestinationPageType);
 }
예제 #7
0
        public void OnNavigation(NavigationMessage navigationMessage)
        {
            if (navigationMessage == null)
            {
                throw new SystemException();
            }

            var region = regionManager.Regions[RegionNames.WorkspaceRegion];

            switch (navigationMessage.PageTitles)
            {
            case PageTitle.AddUser:
                ViewShower <AddUser> .ShowView(region, container);

                break;

            case PageTitle.UserAdmin:
                ViewShower <UserAdmin> .ShowView(region, container);

                break;

            case PageTitle.AddGroup:
                ViewShower <AddGroup> .ShowView(region, container);

                break;

            case PageTitle.ShippingMethodGridView:
                ViewShower <ShippingMethodGridView> .ShowView(region, container);

                break;

            case PageTitle.AddShippingMethod:
                ViewShower <ShippingMethodDetail> .ShowView(region, container);

                break;

            case PageTitle.OpenOrders:
                ViewShower <OpenOrders> .ShowView(region, container);

                break;

            case PageTitle.HomePage:

                break;

            case PageTitle.MetricsPage:
                break;

            case PageTitle.SettingsPage:
                break;

            case PageTitle.SecurityPage:
                break;

            case PageTitle.RestorePage:

                break;
            }

            //MessageBox.Show("public class ViewSelector: No View type defined");
        }
예제 #8
0
파일: Program.cs 프로젝트: ekx/LiveViewLib
 public static void OnNavigation(LiveView liveView, NavigationMessage message)
 {
     liveView.Send(new NavigationResponse(LiveViewMessage.RESULT_EXIT));
 }
예제 #9
0
        public void CanGetItem()
        {
            var message = new NavigationMessage(new object());

            message.Item.ShouldNotBeNull();
        }
예제 #10
0
        public void CanGetItemType()
        {
            var message = new NavigationMessage(typeof(object));

            message.ItemType.ShouldBe(typeof(object));
        }
예제 #11
0
        /// <summary>
        /// Navigates to the view to add connection.
        /// </summary>
        public void AddConnection()
        {
            var message = new NavigationMessage(typeof(AddConnectionViewModel <T1, T2>));

            _eventAggregator.PublishOnUIThread(message);
        }
예제 #12
0
        public SaoPage() : base()
        {
            InitializeComponent();

            zxing = new ZXingScannerView
            {
                Options = new ZXing.Mobile.MobileBarcodeScanningOptions()
                {
                    TryHarder = true
                },
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.FillAndExpand
            };

            zxing.OnScanResult += (result) =>
                                  Device.BeginInvokeOnMainThread(async() =>
            {
                zxing.IsAnalyzing = false;
                zxing.IsScanning  = false;

                try
                {
                    zxing.IsTorchOn = false;
                }
                catch (Exception)
                {
                }

                //await DisplayAlert("Scanned Barcode", result.Text, "OK");
                //连接地址则跳转
                if (ToolsClass.IsUrl(result.Text))
                {
                    var msg = new NavigationMessage()
                    {
                        Paremeter = result.Text
                    };
                    MessagingCenter.Send(msg, "AutoScanCode");
                    Navigation.RemovePage(this);
                    //await Navigation.PushAsync(new WebViewPage(result.Text));
                    return;
                }
                else
                {
                    await DisplayAlert("查询结果", "" + result.Text + "", "确定");
                    var msg = new NavigationMessage()
                    {
                        Paremeter = result.Text
                    };
                    MessagingCenter.Send(msg, "AutoScanCode");
                }

                await Navigation.PopAsync();
            });

            overlay = new MyZXingOverlay
            {
                TopText         = "请对准条码/二维码",
                BottomText      = "阴暗天气建议打开闪光灯",
                ShowFlashButton = true,
                ButtonText      = "开灯"
            };


            overlay.FlashButtonClicked += (sender, e) =>
            {
                try
                {
                    sender.BackgroundColor = Color.FromHex("7fadf7");
                    if (!zxing.IsTorchOn)
                    {
                        sender.Text     = "关灯";
                        CrossLampState  = true;
                        zxing.IsTorchOn = true;
                    }
                    else
                    {
                        sender.Text     = "开灯";
                        zxing.IsTorchOn = false;
                    }
                }
                catch (Exception)
                {
                }
            };
            var grid = new Grid
            {
                VerticalOptions   = LayoutOptions.FillAndExpand,
                HorizontalOptions = LayoutOptions.FillAndExpand,
            };

            grid.Children.Add(zxing);
            grid.Children.Add(overlay);
            Content = grid;
        }
예제 #13
0
 private void OnNavigationMessage(NavigationMessage msg)
 {
     Dispatcher.Invoke(() => { this.IsOpen = false; });
 }
예제 #14
0
 public void Handle(NavigationMessage message)
 {
     //Implementation for later possible windows
 }
예제 #15
0
        public void CanNotGetItem()
        {
            var message = new NavigationMessage(typeof(object));

            message.Item.ShouldBeNull();
        }
 private void HandleNavigationMessage(NavigationMessage obj)
 {
     this.ActionTree.ClearSelection();
     this.ActionTree.SelectedTreeItem = this.ActionTree.Items[0];
 }
예제 #17
0
        /// <summary>
        /// Handles the specified message.
        /// </summary>
        /// <param name="message">The message to handle.</param>
        public void Handle(NavigationMessage message)
        {
            this.ThrowIfDisposed(_isDisposed);

            _navigator.Navigate(message);
        }
예제 #18
0
 private void NavigateTo(NavigationMessage message)
 {
     this.AppFrame.Navigate(message.DestinationPage, message.Arguments);
 }
예제 #19
0
        private void OnNavigationChange(NavigationMessage message)
        {
            var currentFragment = (MvxFragment)this.FragmentManager.Fragments.LastOrDefault();

            Navigate(currentFragment.ViewModel);
        }
예제 #20
0
        /// <inheritdoc/>
        public void View()
        {
            var message = new NavigationMessage(this);

            _eventAggregator.PublishOnUIThread(message);
        }
예제 #21
0
 private void OnNavigation(NavigationMessage obj)
 {
     navigation.OnNavigation(obj);
 }