2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
9 #include "GUIDialogVideoOSD.h"
11 #include "GUIUserMessages.h"
12 #include "ServiceBroker.h"
13 #include "application/Application.h"
14 #include "guilib/GUIComponent.h"
15 #include "guilib/GUIWindowManager.h"
16 #include "guilib/WindowIDs.h"
17 #include "input/InputManager.h"
18 #include "input/actions/ActionIDs.h"
19 #include "settings/Settings.h"
20 #include "settings/SettingsComponent.h"
24 CGUIDialogVideoOSD::CGUIDialogVideoOSD(void)
25 : CGUIDialog(WINDOW_DIALOG_VIDEO_OSD
, "VideoOSD.xml")
27 m_loadType
= KEEP_IN_MEMORY
;
30 CGUIDialogVideoOSD::~CGUIDialogVideoOSD(void) = default;
32 void CGUIDialogVideoOSD::FrameMove()
36 // check for movement of mouse or a submenu open
37 if (CServiceBroker::GetInputManager().IsMouseActive()
38 || CServiceBroker::GetGUI()->GetWindowManager().IsWindowActive(WINDOW_DIALOG_AUDIO_OSD_SETTINGS
)
39 || CServiceBroker::GetGUI()->GetWindowManager().IsWindowActive(WINDOW_DIALOG_SUBTITLE_OSD_SETTINGS
)
40 || CServiceBroker::GetGUI()->GetWindowManager().IsWindowActive(WINDOW_DIALOG_VIDEO_OSD_SETTINGS
)
41 || CServiceBroker::GetGUI()->GetWindowManager().IsWindowActive(WINDOW_DIALOG_CMS_OSD_SETTINGS
)
42 || CServiceBroker::GetGUI()->GetWindowManager().IsWindowActive(WINDOW_DIALOG_VIDEO_BOOKMARKS
)
43 || CServiceBroker::GetGUI()->GetWindowManager().IsWindowActive(WINDOW_DIALOG_PVR_OSD_CHANNELS
)
44 || CServiceBroker::GetGUI()->GetWindowManager().IsWindowActive(WINDOW_DIALOG_PVR_CHANNEL_GUIDE
)
45 || CServiceBroker::GetGUI()->GetWindowManager().IsWindowActive(WINDOW_DIALOG_OSD_TELETEXT
))
46 // extend show time by original value
47 SetAutoClose(m_showDuration
);
49 CGUIDialog::FrameMove();
52 bool CGUIDialogVideoOSD::OnAction(const CAction
&action
)
54 if (action
.GetID() == ACTION_SHOW_OSD
)
60 return CGUIDialog::OnAction(action
);
63 EVENT_RESULT
CGUIDialogVideoOSD::OnMouseEvent(const CPoint
&point
, const CMouseEvent
&event
)
65 if (event
.m_id
== ACTION_MOUSE_WHEEL_UP
)
67 return g_application
.OnAction(CAction(ACTION_ANALOG_SEEK_FORWARD
, 0.5f
)) ? EVENT_RESULT_HANDLED
: EVENT_RESULT_UNHANDLED
;
69 if (event
.m_id
== ACTION_MOUSE_WHEEL_DOWN
)
71 return g_application
.OnAction(CAction(ACTION_ANALOG_SEEK_BACK
, 0.5f
)) ? EVENT_RESULT_HANDLED
: EVENT_RESULT_UNHANDLED
;
74 return CGUIDialog::OnMouseEvent(point
, event
);
77 bool CGUIDialogVideoOSD::OnMessage(CGUIMessage
& message
)
79 switch ( message
.GetMessage() )
81 case GUI_MSG_VIDEO_MENU_STARTED
:
83 // We have gone to the DVD menu, so close the OSD.
87 case GUI_MSG_WINDOW_DEINIT
: // fired when OSD is hidden
89 // Remove our subdialogs if visible
90 CGUIDialog
*pDialog
= CServiceBroker::GetGUI()->GetWindowManager().GetDialog(WINDOW_DIALOG_AUDIO_OSD_SETTINGS
);
91 if (pDialog
&& pDialog
->IsDialogRunning())
93 pDialog
= CServiceBroker::GetGUI()->GetWindowManager().GetDialog(WINDOW_DIALOG_SUBTITLE_OSD_SETTINGS
);
94 if (pDialog
&& pDialog
->IsDialogRunning())
99 return CGUIDialog::OnMessage(message
);