diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 18:07:22 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 18:07:22 +0000 |
commit | c04dcc2e7d834218ef2d4194331e383402495ae1 (patch) | |
tree | 7333e38d10d75386e60f336b80c2443c1166031d /xbmc/games/dialogs/osd/DialogGameVideoRotation.cpp | |
parent | Initial commit. (diff) | |
download | kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.tar.xz kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.zip |
Adding upstream version 2:20.4+dfsg.upstream/2%20.4+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'xbmc/games/dialogs/osd/DialogGameVideoRotation.cpp')
-rw-r--r-- | xbmc/games/dialogs/osd/DialogGameVideoRotation.cpp | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/xbmc/games/dialogs/osd/DialogGameVideoRotation.cpp b/xbmc/games/dialogs/osd/DialogGameVideoRotation.cpp new file mode 100644 index 0000000..7037a6b --- /dev/null +++ b/xbmc/games/dialogs/osd/DialogGameVideoRotation.cpp @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#include "DialogGameVideoRotation.h" + +#include "FileItem.h" +#include "guilib/LocalizeStrings.h" +#include "guilib/WindowIDs.h" +#include "settings/GameSettings.h" +#include "settings/MediaSettings.h" +#include "utils/Variant.h" + +using namespace KODI; +using namespace GAME; + +CDialogGameVideoRotation::CDialogGameVideoRotation() + : CDialogGameVideoSelect(WINDOW_DIALOG_GAME_VIDEO_ROTATION) +{ +} + +std::string CDialogGameVideoRotation::GetHeading() +{ + return g_localizeStrings.Get(35227); // "Rotation" +} + +void CDialogGameVideoRotation::PreInit() +{ + m_rotations.clear(); + + // Present the user with clockwise rotation + m_rotations.push_back(0); + m_rotations.push_back(270); + m_rotations.push_back(180); + m_rotations.push_back(90); +} + +void CDialogGameVideoRotation::GetItems(CFileItemList& items) +{ + for (unsigned int rotation : m_rotations) + { + CFileItemPtr item = std::make_shared<CFileItem>(GetRotationLabel(rotation)); + item->SetProperty("game.videorotation", CVariant{rotation}); + items.Add(std::move(item)); + } +} + +void CDialogGameVideoRotation::OnItemFocus(unsigned int index) +{ + if (index < m_rotations.size()) + { + const unsigned int rotationDegCCW = m_rotations[index]; + + CGameSettings& gameSettings = CMediaSettings::GetInstance().GetCurrentGameSettings(); + if (gameSettings.RotationDegCCW() != rotationDegCCW) + { + gameSettings.SetRotationDegCCW(rotationDegCCW); + gameSettings.NotifyObservers(ObservableMessageSettingsChanged); + } + } +} + +unsigned int CDialogGameVideoRotation::GetFocusedItem() const +{ + CGameSettings& gameSettings = CMediaSettings::GetInstance().GetCurrentGameSettings(); + + for (unsigned int i = 0; i < m_rotations.size(); i++) + { + const unsigned int rotationDegCCW = m_rotations[i]; + if (rotationDegCCW == gameSettings.RotationDegCCW()) + return i; + } + + return 0; +} + +void CDialogGameVideoRotation::PostExit() +{ + m_rotations.clear(); +} + +bool CDialogGameVideoRotation::OnClickAction() +{ + Close(); + return true; +} + +std::string CDialogGameVideoRotation::GetRotationLabel(unsigned int rotationDegCCW) +{ + switch (rotationDegCCW) + { + case 0: + return g_localizeStrings.Get(35228); // 0 + case 90: + return g_localizeStrings.Get(35231); // 270 + case 180: + return g_localizeStrings.Get(35230); // 180 + case 270: + return g_localizeStrings.Get(35229); // 90 + default: + break; + } + + return ""; +} |