Exemplo n.º 1
0
        protected async override void RemoteWindowOperationsBus_EventBroadcasted(BusEvent e)
        {
            var remoteOp = e.DataAs <RemoteWindowOperationEvent>();
            var vm       = remoteOp.ViewModel;

            var wnd = _vmWindowMapping[(ContentItemViewModel)vm];

            var op = WindowOperation.Unlock;

            switch (remoteOp.RemoteEvent.Type)
            {
            case RemoteEventType.MenuClosed:
            case RemoteEventType.MoveMenuTo:
            case RemoteEventType.MenuItemSelected:
                op = WindowOperation.Unknown;
                break;

            case RemoteEventType.WindowClosed:
                op = WindowOperation.Close;
                break;

            case RemoteEventType.WindowLocked:
                op = WindowOperation.Lock;
                break;

            case RemoteEventType.WindowRestored:
                op = WindowOperation.Restore;
                break;

            case RemoteEventType.WindowUnlocked:
                op = WindowOperation.Unlock;
                break;

            default:
                break;
            }

            var opdata = new WindowOperationEventData()
            {
                BusEvent     = e,
                DataObject   = vm,
                WindowObject = wnd,
                Operation    = op
            };

            var dsp = Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher;

            if (!dsp.HasThreadAccess)
            {
                await dsp.RunAsync(CoreDispatcherPriority.Normal, () => _wndOpHandlers[op](opdata));

                return;
            }
        }
Exemplo n.º 2
0
        private void WndOpHandler_Close(WindowOperationEventData data)
        {
            if (data.DataObject is ContentItemViewModel cvi && cvi.Type != ContentItemType.MenuItem)
            {
                _workspace.WindowDataSource.Remove(cvi);
                _vmWindowMapping.Remove(cvi);

                if (cvi.PublishRemoteEvents)
                {
                    _remoteBus.Publish(new RemoteEvent(RemoteEventType.WindowClosed, cvi.Model), this);
                }
            }
        }
Exemplo n.º 3
0
        private void WndOpHandler_Opened(WindowOperationEventData obj)
        {
            var vm = obj.DataObject as ContentItemViewModel;

            if (obj.WindowObject is Window wnd)
            {
                wnd.SetPosition(0, 0);

                // HACK : this should be temporary since i don't know if it's ok to have multiple windows open under the same VM
                if (!_vmWindowMapping.ContainsKey(vm))
                {
                    _vmWindowMapping.Add(vm, wnd);
                }

                wnd.PrepareFullscreen();

                BringItemToFront(vm);
            }
        }
Exemplo n.º 4
0
        private void WndOpHandler_Opened(WindowOperationEventData obj)
        {
            var vm = obj.DataObject as ContentItemViewModel;

            if (obj.WindowObject is Window wnd)
            {
                wnd.ManipulationMode       = ManipulationModes.All;
                wnd.Tapped                += Wnd_Tapped;
                wnd.ManipulationStarted   += Wnd_ManipulationStarted;
                wnd.ManipulationDelta     += Wnd_ManipulationDelta;
                wnd.ManipulationCompleted += Wnd_ManipulationCompleted;

                var(x, y) = _cascadeManager.GetSpawnCoordinates();
                wnd.SetPosition(x, y);

                // HACK : this should be temporary since i don't know if it's ok to have multiple windows open under the same VM
                if (!_vmWindowMapping.ContainsKey(vm))
                {
                    _vmWindowMapping.Add(vm, wnd);
                }

                BringItemToFront(vm);
            }
        }