PageRenderTime 9ms CodeModel.GetById 1ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/xbmc/dialogs/GUIDialogNumeric.h

http://github.com/xbmc/xbmc
C Header | 82 lines | 61 code | 14 blank | 7 comment | 1 complexity | 5ff9f8fdb60af478f16d9a4a7d76ad08 MD5 | raw file
 1/*
 2 *  Copyright (C) 2005-2018 Team Kodi
 3 *  This file is part of Kodi - https://kodi.tv
 4 *
 5 *  SPDX-License-Identifier: GPL-2.0-or-later
 6 *  See LICENSES/README.md for more information.
 7 */
 8
 9#pragma once
10
11#include "XBDateTime.h"
12#include "guilib/GUIDialog.h"
13
14#include <cstdint>
15
16enum class InputVerificationResult
17{
18  CANCELED,
19  FAILED,
20  SUCCESS
21};
22
23class CGUIDialogNumeric :
24      public CGUIDialog
25{
26public:
27  enum INPUT_MODE { INPUT_TIME = 1, INPUT_DATE, INPUT_IP_ADDRESS, INPUT_PASSWORD, INPUT_NUMBER, INPUT_TIME_SECONDS };
28  CGUIDialogNumeric(void);
29  ~CGUIDialogNumeric(void) override;
30  bool OnMessage(CGUIMessage& message) override;
31  bool OnAction(const CAction &action) override;
32  bool OnBack(int actionID) override;
33  void FrameMove() override;
34
35  bool IsConfirmed() const;
36  bool IsCanceled() const;
37  bool IsInputHidden() const { return m_mode == INPUT_PASSWORD; };
38
39  static bool ShowAndVerifyNewPassword(std::string& strNewPassword);
40  static int ShowAndVerifyPassword(std::string& strPassword, const std::string& strHeading, int iRetries);
41  static InputVerificationResult ShowAndVerifyInput(std::string& strPassword, const std::string& strHeading, bool bGetUserInput);
42
43  void SetHeading(const std::string &strHeading);
44  void SetMode(INPUT_MODE mode, const KODI::TIME::SystemTime& initial);
45  void SetMode(INPUT_MODE mode, const std::string &initial);
46  KODI::TIME::SystemTime GetOutput() const;
47  std::string GetOutputString() const;
48
49  static bool ShowAndGetTime(KODI::TIME::SystemTime& time, const std::string& heading);
50  static bool ShowAndGetDate(KODI::TIME::SystemTime& date, const std::string& heading);
51  static bool ShowAndGetIPAddress(std::string &IPAddress, const std::string &heading);
52  static bool ShowAndGetNumber(std::string& strInput, const std::string &strHeading, unsigned int iAutoCloseTimeoutMs = 0, bool bSetHidden = false);
53  static bool ShowAndGetSeconds(std::string& timeString, const std::string &heading);
54
55protected:
56  void OnInitWindow() override;
57  void OnDeinitWindow(int nextWindowID) override;
58
59  void OnNumber(uint32_t num);
60  void VerifyDate(bool checkYear);
61  void OnNext();
62  void OnPrevious();
63  void OnBackSpace();
64  void OnOK();
65  void OnCancel();
66
67  void HandleInputIP(uint32_t num);
68  void HandleInputDate(uint32_t num);
69  void HandleInputSeconds(uint32_t num);
70  void HandleInputTime(uint32_t num);
71
72  bool m_bConfirmed;
73  bool m_bCanceled;
74
75  INPUT_MODE m_mode;                // the current input mode
76  KODI::TIME::SystemTime m_datetime; // for time and date modes
77  uint8_t m_ip[4];                  // for ip address mode
78  uint32_t m_block;             // for time, date, and IP methods.
79  uint32_t m_lastblock;
80  bool m_dirty;                     // true if the current block has been changed.
81  std::string m_number;              ///< for number or password input
82};