Пример #1
0
    private void OnWindowToggleOff(TaskbarButton obj)
    {
        if (obj == friendsButton)
        {
            OnFriendsToggleOff?.Invoke();
        }
        else if (obj == chatButton)
        {
            OnChatToggleOff?.Invoke();
        }
        else if (obj == backpackButton)
        {
            OnBackpackToggleOff?.Invoke();
        }
        else if (obj == exploreButton)
        {
            OnExploreToggleOff?.Invoke();
        }
        else if (obj == goToGenesisButton)
        {
            OnGoToGenesisToggleOff?.Invoke();
        }
        else if (obj == moreButton)
        {
            moreMenu.ShowMoreMenu(false);
        }

        if (AllButtonsToggledOff())
        {
            chatButton.SetToggleState(false, useCallback: false);
            controller.worldChatWindowHud.SetVisibility(true);
        }
    }
Пример #2
0
    public TaskbarButton AddButton()
    {
        GameObject    button        = Instantiate(ButtonPrefab, transform, false);
        TaskbarButton taskbarButton = button.GetComponent <TaskbarButton>();

        return(taskbarButton);
    }
Пример #3
0
    private void OnWindowToggleOn(TaskbarButton obj)
    {
        if (obj == friendsButton)
        {
            OnFriendsToggleOn?.Invoke();
        }
        else if (obj == chatButton)
        {
            OnChatToggleOn?.Invoke();
        }
        else if (obj == backpackButton)
        {
            OnBackpackToggleOn?.Invoke();
        }
        else if (obj == exploreButton)
        {
            OnExploreToggleOn?.Invoke();
        }
        else if (obj == goToGenesisButton)
        {
            OnGoToGenesisToggleOn?.Invoke();
        }
        else if (obj == moreButton)
        {
            moreMenu.ShowMoreMenu(true);
        }

        SelectButton(obj);
    }
Пример #4
0
    private void OnWindowToggleOn(TaskbarButton obj)
    {
        if (obj == friendsButton)
        {
            OnFriendsToggleOn?.Invoke();
        }
        else if (obj == chatButton)
        {
            OnChatToggleOn?.Invoke();
        }
        else if (obj == settingsButton)
        {
            OnSettingsToggleOn?.Invoke();
        }
        else if (obj == builderInWorldButton)
        {
            OnBuilderInWorldToggleOn?.Invoke();
        }
        else if (obj == exploreButton)
        {
            OnExploreToggleOn?.Invoke();
        }
        else if (obj == moreButton)
        {
            moreMenu.ShowMoreMenu(true);
        }

        SelectButton(obj);
    }
Пример #5
0
    private void OnToggleOff(TaskbarButton head)
    {
        if (!(head is ChatHeadButton))
        {
            return;
        }

        OnHeadToggleOff?.Invoke(head);
    }
Пример #6
0
    private void ChatHeadsGroup_OnHeadOpen(TaskbarButton taskbarBtn)
    {
        ChatHeadButton head = taskbarBtn as ChatHeadButton;

        if (taskbarBtn == null)
        {
            return;
        }

        OpenPrivateChatWindow(head.profile.userId);
    }
Пример #7
0
    void SelectButton(TaskbarButton obj)
    {
        var taskbarButtonList = GetButtonList();

        foreach (var btn in taskbarButtonList)
        {
            if (btn != obj)
            {
                btn.SetToggleState(false, useCallback: true);
            }
        }
    }
Пример #8
0
    private void OnWindowToggleOn(TaskbarButton obj)
    {
        if (obj == friendsButton)
        {
            OnFriendsToggleOn?.Invoke();
        }
        else if (obj == chatButton)
        {
            OnChatToggleOn?.Invoke();
        }

        SelectButton(obj);
    }
    private void OnWindowToggleOff(TaskbarButton obj)
    {
        if (obj == friendsButton)
        {
            OnFriendsToggleOff?.Invoke();
        }
        else if (obj == chatButton)
        {
            OnChatToggleOff?.Invoke();
        }
        else if (obj == settingsButton)
        {
            OnSettingsToggleOff?.Invoke();
        }
        else if (obj == builderInWorldButton)
        {
            OnBuilderInWorldToggleOff?.Invoke();
        }
        else if (obj == exploreButton)
        {
            OnExploreToggleOff?.Invoke();
        }
        else if (obj == moreButton)
        {
            moreMenu.ShowMoreMenu(false);
        }
        else if (obj == questPanelButton)
        {
            OnQuestPanelToggled?.Invoke(false);
        }
        else
        {
            using (var iterator = activePortableExperienceItems.GetEnumerator())
            {
                while (iterator.MoveNext())
                {
                    if (iterator.Current.Value.mainButton == obj)
                    {
                        iterator.Current.Value.ShowContextMenu(false);
                        break;
                    }
                }
            }
        }

        if (AllButtonsToggledOff())
        {
            chatButton.SetToggleState(false, useCallback: false);
            controller.worldChatWindowHud.SetVisibility(true);
        }
    }
    private void OnWindowToggleOn(TaskbarButton obj)
    {
        if (obj == friendsButton)
        {
            OnFriendsToggleOn?.Invoke();
        }
        else if (obj == chatButton)
        {
            OnChatToggleOn?.Invoke();
        }
        else if (obj == settingsButton)
        {
            OnSettingsToggleOn?.Invoke();
        }
        else if (obj == builderInWorldButton)
        {
            OnBuilderInWorldToggleOn?.Invoke();
        }
        else if (obj == exploreButton)
        {
            OnExploreToggleOn?.Invoke();
        }
        else if (obj == moreButton)
        {
            moreMenu.ShowMoreMenu(true);
        }
        else if (obj == questPanelButton)
        {
            OnQuestPanelToggled?.Invoke(true);
        }
        else
        {
            using (var iterator = activePortableExperienceItems.GetEnumerator())
            {
                while (iterator.MoveNext())
                {
                    if (iterator.Current.Value.mainButton == obj)
                    {
                        iterator.Current.Value.ShowContextMenu(true);
                        break;
                    }
                }
            }
        }

        SelectButton(obj);
    }
Пример #11
0
    private void OnWindowToggleOff(TaskbarButton obj)
    {
        if (obj == friendsButton)
        {
            OnFriendsToggleOff?.Invoke();
        }
        else if (obj == chatButton)
        {
            OnChatToggleOff?.Invoke();
        }

        if (AllButtonsToggledOff())
        {
            chatButton.SetToggleState(false, useCallback: false);
            controller.worldChatWindowHud.SetVisibility(true);
        }
    }
Пример #12
0
        void processLogic_OnLocationChanged(Win32Window window)
        {
            bool display = true;

            foreach (var item in flowPanel.Controls)
            {
                TaskbarButton button = item as TaskbarButton;
                if (button == null)
                {
                    continue;
                }

                SecondDisplayProcess proc = button.Tag as SecondDisplayProcess;
                if (proc == null)
                {
                    continue;
                }

                if (Native.IsFullScreen(proc.Handle, CurrentScreen.Bounds))
                {
                    display = false;
                    break;
                }
            }

            if (this.Visible && !display)
            {
                this.Hide();
                this.IsHidden = true;
                DisplayStartMenu();
            }
            else if (!this.Visible && display)
            {
                this.Show();
                this.IsHidden = false;
                DisplayStartMenu();
            }

            // remote desktop window shows in primary taskbar after restoring from full screen - we need to hide it again
            if (!TaskbarPropertiesManager.Instance.Properties.MirrorButtons && flowPanel.ButtonExists(window))
            {
                WindowManager.Instance.ReDeleteTab(window.Handle.ToInt32());
            }
        }
    public void SelectButton(TaskbarButton obj)
    {
        var taskbarButtonList = GetButtonList();

        foreach (var btn in taskbarButtonList)
        {
            if (btn != obj)
            {
                // We let the use of the chat and friends windows while we are using the explore at the same time
                if ((btn == exploreButton && (obj == chatButton || obj == friendsButton || obj is ChatHeadButton)) ||
                    ((btn == chatButton || btn == friendsButton || btn is ChatHeadButton) && obj == exploreButton))
                {
                    continue;
                }

                btn.SetToggleState(false, useCallback: true);
            }
        }
    }
Пример #14
0
        public void ForceHide()
        {
            if (SystemMenuProxy.IsOpening)
            {
                return;
            }

            _closeForm.Hide();

            base.Hide();
            if (_button != null)
            {
                OnCustomLeave(null, TooltipEventArgs.From(_button));

                ShowLivePreview(_button, false);
            }
            _button = null;
            _doHide = false;
        }
Пример #15
0
        void tsmiUnpin_Click(object sender, System.EventArgs e)
        {
            var           menu   = sender as ToolStripMenuItem;
            var           strip  = menu.Owner as ContextMenuStrip;
            TaskbarButton button = strip.SourceControl as TaskbarButton;

            if (button != null)
            {
                SecondDisplayProcess proc = button.Tag as SecondDisplayProcess;

                var pa = PinnedManager.Instance.Unpin(ProcessUtil.GetProcessByWindowHandle(proc.Handle));
                flowPanel.RemovePinnedButton(pa);
            }
            else
            {
                var app = (strip.SourceControl as TaskbarPinnedButton).Tag as PinnedApp;

                PinnedManager.Instance.Unpin(app);
                flowPanel.RemovePinnedButton(app);
            }
        }
Пример #16
0
        private void ShowLivePreview(TaskbarButton button, bool show)
        {
            if (!ShowPreview())
            {
                return;
            }

            if (show)
            {
                SecondDisplayProcess proc = button.Tag as SecondDisplayProcess;
                AeroDecorator.Instance.LivePreview(proc.Handle, true);
                this.BringToFront();
                this._closeForm.BringToFront();
            }
            else
            {
                _delayedActionPreview.Cancel();
                SecondDisplayProcess proc = _button.Tag as SecondDisplayProcess;
                AeroDecorator.Instance.LivePreview(proc.Handle, false);
            }
        }
Пример #17
0
 private void OnToggleOn(TaskbarButton head)
 {
     OnHeadToggleOn?.Invoke(head);
 }
Пример #18
0
 public static TooltipEventArgs From(TaskbarButton button)
 {
     return(new TooltipEventArgs {
         Button = button
     });
 }
Пример #19
0
 public void RemoveButton(TaskbarButton taskbarButton)
 {
     Destroy(taskbarButton.gameObject);
 }
Пример #20
0
 private void ChatHeadsGroup_OnHeadClose(TaskbarButton obj)
 {
     privateChatWindowHud.SetVisibility(false);
 }
Пример #21
0
        private void processMenu_Opening(object sender, CancelEventArgs e)
        {
            if (tooltipManager.ToolTipWindow.Visible)
            {
                tooltipManager.ToolTipWindow.ForceHide();
            }

            ContextMenuStrip  menu       = sender as ContextMenuStrip;
            BaseTaskbarButton baseButton = menu.SourceControl as BaseTaskbarButton;

            baseButton.Hover = true;

            if (menu.SourceControl is TaskbarButton)
            {
                TaskbarButton button = menu.SourceControl as TaskbarButton;

                SecondDisplayProcess proc = button.Tag as SecondDisplayProcess;
                tsmiLaunch.Image = proc.SmallIcon.ConvertToBitmap(false);

                Process       p      = ProcessUtil.GetProcessByWindowHandle(proc.Handle);
                ProcessModule module = p.MainModule;
                if (module != null)
                {
                    string fileDescription = System.Diagnostics.FileVersionInfo.GetVersionInfo(module.FileName).FileDescription;
                    tsmiLaunch.Text = string.IsNullOrEmpty(fileDescription) ? (module.FileName ?? p.MainWindowTitle) : fileDescription.Clamp(Constants.MaxProgramNameLength);
                    tsmiLaunch.Tag  = new ProcessFullPath {
                        FileName = module.FileName, Arguments = ProcessUtil.GetCommandLineArguments(module.ModuleName)
                    };
                    tsmiLaunch.Visible = true;

                    if (PinnedManager.Instance.IsPinned(p))
                    {
                        tsmiPin.Visible   = false;
                        tsmiUnpin.Visible = true;
                    }
                    else
                    {
                        tsmiPin.Visible   = true;
                        tsmiUnpin.Visible = false;
                    }
                }
                else
                {
                    tsmiLaunch.Visible = false;
                    tsmiPin.Visible    = false;
                    tsmiUnpin.Visible  = false;
                }

                tsmiCloseWindow.Visible = true;
            }
            else
            {
                TaskbarPinnedButton pinnedButton = menu.SourceControl as TaskbarPinnedButton;
                PinnedApp           app          = pinnedButton.Tag as PinnedApp;

                tsmiCloseWindow.Visible = false;
                tsmiLaunch.Image        = app.Icon.ResizeBitmap(ButtonConstants.SmallIconSize, ButtonConstants.SmallIconSize);
                tsmiLaunch.Text         = string.IsNullOrEmpty(app.Name) ? "Unknown application" : app.Name.Clamp(Constants.MaxProgramNameLength);
                tsmiLaunch.Tag          = new ProcessFullPath {
                    FileName = app.Path, Arguments = app.Arguments
                };
                tsmiLaunch.Visible = !string.IsNullOrEmpty(app.Path);

                if (PinnedManager.Instance.IsPinned(app))
                {
                    tsmiPin.Visible   = false;
                    tsmiUnpin.Visible = true;
                }
                else
                {
                    tsmiPin.Visible   = true;
                    tsmiUnpin.Visible = false;
                }
            }
        }
Пример #22
0
        public void Show(TaskbarButton button)
        {
            CancelHide();

            PanelHover = true;
            if (button == _button)
            {
                return;
            }

            SecondDisplayProcess proc = button.Tag as SecondDisplayProcess;

            _button = button;

            if (_thumbnail != null)
            {
                _thumbnail.Dispose();
                _thumbnail = null;
            }

            CalculateBounds(proc);

            this.StartPosition = FormStartPosition.Manual;
            Rectangle parentBounds    = button.Parent.RectangleToScreen(button.Bounds);
            Screen    buttonScreen    = proc.Screen;
            var       taskbarLocation = TaskbarPropertiesManager.Instance.Properties.GetTaskbarLocation(buttonScreen.DeviceName);

            if (taskbarLocation == Native.ABEdge.Top ||
                taskbarLocation == Native.ABEdge.Bottom)
            {
                int x = (parentBounds.Left + parentBounds.Width / 2) - this.Width / 2;
                if (x < buttonScreen.WorkingArea.Left)
                {
                    x = buttonScreen.WorkingArea.Left;
                }
                if (x + this.Width > buttonScreen.WorkingArea.Right)
                {
                    x = buttonScreen.WorkingArea.Right - this.Width;
                }

                int y = taskbarLocation == Native.ABEdge.Bottom ? (parentBounds.Top - this.Height) : parentBounds.Bottom;
                this.Location = new Point(x, y);
            }
            else
            {
                int x = taskbarLocation == Native.ABEdge.Left ? parentBounds.Right : (parentBounds.Left - this.Width);
                int y = (parentBounds.Top + parentBounds.Height / 2) - this.Height / 2;
                if (y < buttonScreen.WorkingArea.Top)
                {
                    y = buttonScreen.WorkingArea.Top;
                }
                if (y + this.Height > buttonScreen.WorkingArea.Bottom)
                {
                    y = buttonScreen.WorkingArea.Bottom - this.Height;
                }
                this.Location = new Point(x, y);
            }

            _buttonRectangle = new Rectangle(panelTitle.Width - ThumbnailConstants.IconMargin - ThumbnailConstants.CloseButWidth,
                                             10, ThumbnailConstants.CloseButWidth, ThumbnailConstants.CloseButWidth);
            if (this.Visible)
            {
                this.Refresh();
            }
            else
            {
                this.Visible = true;
            }

            _closeForm.Show();

            Point location = panelTitle.PointToScreen(new Point(panelTitle.Width - ThumbnailConstants.IconMargin - ThumbnailConstants.CloseButWidth, 10));

            _closeForm.Left = location.X;
            _closeForm.Top  = location.Y;
            _closeForm.Draw(DualMonitor.Properties.Resources.close);

            ShowDefaultTooltip();
        }