1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
/*
* Copyright (C) 2016-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 "ViewModeSettings.h"
#include "cores/VideoSettings.h"
#include "guilib/LocalizeStrings.h"
#include "settings/lib/SettingDefinitions.h"
struct ViewModeProperties
{
int stringIndex;
int viewMode;
bool hideFromQuickCycle = false;
bool hideFromList = false;
};
#define HIDE_ITEM true
/** The list of all the view modes along with their properties
*/
static const ViewModeProperties viewModes[] =
{
{ 630, ViewModeNormal },
{ 631, ViewModeZoom },
{ 39008, ViewModeZoom120Width },
{ 39009, ViewModeZoom110Width },
{ 632, ViewModeStretch4x3 },
{ 633, ViewModeWideZoom },
{ 634, ViewModeStretch16x9 },
{ 644, ViewModeStretch16x9Nonlin, HIDE_ITEM, HIDE_ITEM },
{ 635, ViewModeOriginal },
{ 636, ViewModeCustom, HIDE_ITEM }
};
#define NUMBER_OF_VIEW_MODES (sizeof(viewModes) / sizeof(viewModes[0]))
/** Gets the index of a view mode
*
* @param viewMode The view mode
* @return The index of the view mode in the viewModes array
*/
static int GetViewModeIndex(int viewMode)
{
size_t i;
// Find the current view mode
for (i = 0; i < NUMBER_OF_VIEW_MODES; i++)
{
if (viewModes[i].viewMode == viewMode)
return i;
}
return 0; // An invalid view mode will always return the first view mode
}
/** Gets the next view mode for quick cycling through the modes
*
* @param viewMode The current view mode
* @return The next view mode
*/
int CViewModeSettings::GetNextQuickCycleViewMode(int viewMode)
{
// Find the next quick cycle view mode
for (size_t i = GetViewModeIndex(viewMode) + 1; i < NUMBER_OF_VIEW_MODES; i++)
{
if (!viewModes[i].hideFromQuickCycle)
return viewModes[i].viewMode;
}
return ViewModeNormal;
}
/** Gets the string index for the view mode
*
* @param viewMode The current view mode
* @return The string index
*/
int CViewModeSettings::GetViewModeStringIndex(int viewMode)
{
return viewModes[GetViewModeIndex(viewMode)].stringIndex;
}
/** Fills the list with all visible view modes
*/
void CViewModeSettings::ViewModesFiller(const std::shared_ptr<const CSetting>& setting,
std::vector<IntegerSettingOption>& list,
int& current,
void* data)
{
// Add all appropriate view modes to the list control
for (const auto &item : viewModes)
{
if (!item.hideFromList)
list.emplace_back(g_localizeStrings.Get(item.stringIndex), item.viewMode);
}
}
|