[videodb] remove unused seasons table from episode_view
[xbmc.git] / xbmc / dialogs / GUIDialogSlider.cpp
blob24209dfc9f8122ff812b2bf54fa4b4ea5a32cc42
1 /*
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.
7 */
9 #include "GUIDialogSlider.h"
11 #include "ServiceBroker.h"
12 #include "guilib/GUIComponent.h"
13 #include "guilib/GUISliderControl.h"
14 #include "guilib/GUIWindowManager.h"
15 #include "guilib/LocalizeStrings.h"
16 #include "input/actions/Action.h"
17 #include "input/actions/ActionIDs.h"
19 #define CONTROL_HEADING 10
20 #define CONTROL_SLIDER 11
21 #define CONTROL_LABEL 12
23 CGUIDialogSlider::CGUIDialogSlider(void)
24 : CGUIDialog(WINDOW_DIALOG_SLIDER, "DialogSlider.xml")
26 m_callback = NULL;
27 m_callbackData = NULL;
28 m_loadType = KEEP_IN_MEMORY;
31 CGUIDialogSlider::~CGUIDialogSlider(void) = default;
33 bool CGUIDialogSlider::OnAction(const CAction &action)
35 if (action.GetID() == ACTION_SELECT_ITEM)
37 Close();
38 return true;
40 return CGUIDialog::OnAction(action);
43 bool CGUIDialogSlider::OnMessage(CGUIMessage& message)
45 switch ( message.GetMessage() )
47 case GUI_MSG_CLICKED:
48 if (message.GetSenderId() == CONTROL_SLIDER)
50 CGUISliderControl *slider = dynamic_cast<CGUISliderControl *>(GetControl(CONTROL_SLIDER));
51 if (slider && m_callback)
53 m_callback->OnSliderChange(m_callbackData, slider);
54 SET_CONTROL_LABEL(CONTROL_LABEL, slider->GetDescription());
57 break;
58 case GUI_MSG_WINDOW_DEINIT:
59 m_callback = NULL;
60 m_callbackData = NULL;
61 break;
63 return CGUIDialog::OnMessage(message);
66 void CGUIDialogSlider::SetSlider(const std::string &label, float value, float min, float delta, float max, ISliderCallback *callback, void *callbackData)
68 SET_CONTROL_LABEL(CONTROL_HEADING, label);
69 CGUISliderControl *slider = dynamic_cast<CGUISliderControl *>(GetControl(CONTROL_SLIDER));
70 m_callback = callback;
71 m_callbackData = callbackData;
72 if (slider)
74 slider->SetType(SLIDER_CONTROL_TYPE_FLOAT);
75 slider->SetFloatRange(min, max);
76 slider->SetFloatInterval(delta);
77 slider->SetFloatValue(value);
78 if (m_callback)
80 m_callback->OnSliderChange(m_callbackData, slider);
81 SET_CONTROL_LABEL(CONTROL_LABEL, slider->GetDescription());
86 void CGUIDialogSlider::OnWindowLoaded()
88 // ensure our callbacks are NULL, incase we were loaded via some non-standard means
89 m_callback = NULL;
90 m_callbackData = NULL;
91 CGUIDialog::OnWindowLoaded();
94 void CGUIDialogSlider::SetModalityType(DialogModalityType type)
96 m_modalityType = type;
99 void CGUIDialogSlider::ShowAndGetInput(const std::string &label, float value, float min, float delta, float max, ISliderCallback *callback, void *callbackData)
101 // grab the slider dialog
102 CGUIDialogSlider *slider = CServiceBroker::GetGUI()->GetWindowManager().GetWindow<CGUIDialogSlider>(WINDOW_DIALOG_SLIDER);
103 if (!slider)
104 return;
106 // set the label and value
107 slider->Initialize();
108 slider->SetSlider(label, value, min, delta, max, callback, callbackData);
109 slider->SetModalityType(DialogModalityType::MODAL);
110 slider->Open();
113 void CGUIDialogSlider::Display(int label, float value, float min, float delta, float max, ISliderCallback *callback)
115 // grab the slider dialog
116 CGUIDialogSlider *slider = CServiceBroker::GetGUI()->GetWindowManager().GetWindow<CGUIDialogSlider>(WINDOW_DIALOG_SLIDER);
117 if (!slider)
118 return;
120 // set the label and value
121 slider->Initialize();
122 slider->SetAutoClose(1000);
123 slider->SetSlider(g_localizeStrings.Get(label), value, min, delta, max, callback, NULL);
124 slider->SetModalityType(DialogModalityType::MODELESS);
125 slider->Open();