@@ -37,6 +37,7 @@ CSettings::CSettings ( void )
37
37
m_iMaxAnisotropic = g_pDeviceState->AdapterState .MaxAnisotropicSetting ;
38
38
m_pWindow = NULL ;
39
39
m_bBrowserListsChanged = false ;
40
+ m_bBrowserListsLoadEnabled = false ;
40
41
CreateGUI ();
41
42
42
43
// Disable progress animation if required
@@ -59,7 +60,7 @@ void CSettings::CreateGUI ( void )
59
60
if ( m_pWindow )
60
61
DestroyGUI ();
61
62
62
- CGUITab *pTabMultiplayer, *pTabVideo, *pTabAudio, *pTabBinds, *pTabControls, *pTabInterface, *pTabBrowser, * pTabAdvanced;
63
+ CGUITab *pTabMultiplayer, *pTabVideo, *pTabAudio, *pTabBinds, *pTabControls, *pTabInterface, *pTabAdvanced;
63
64
CGUI *pManager = g_pCore->GetGUI ();
64
65
65
66
// Init
@@ -114,14 +115,15 @@ void CSettings::CreateGUI ( void )
114
115
m_pTabs = reinterpret_cast < CGUITabPanel* > ( pManager->CreateTabPanel ( m_pWindow ) );
115
116
m_pTabs->SetPosition ( tabPanelPosition );
116
117
m_pTabs->SetSize ( tabPanelSize );
118
+ m_pTabs->SetSelectionHandler ( GUI_CALLBACK ( &CSettings::OnTabChanged, this ) );
117
119
118
120
pTabMultiplayer = m_pTabs->CreateTab ( _ (" Multiplayer" ) );
119
121
pTabVideo = m_pTabs->CreateTab ( _ (" Video" ) );
120
122
pTabAudio = m_pTabs->CreateTab ( _ (" Audio" ) );
121
123
pTabBinds = m_pTabs->CreateTab ( _ (" Binds" ) );
122
124
pTabControls = m_pTabs->CreateTab ( _ (" Controls" ) );
123
125
pTabInterface = m_pTabs->CreateTab ( _ (" Interface" ) );
124
- pTabBrowser = m_pTabs->CreateTab ( _ (" Web Browser" ) );
126
+ m_pTabBrowser = m_pTabs->CreateTab ( _ (" Web Browser" ) );
125
127
pTabAdvanced = m_pTabs->CreateTab ( _ (" Advanced" ) );
126
128
127
129
// Create buttons
@@ -1133,73 +1135,73 @@ void CSettings::CreateGUI ( void )
1133
1135
/* *
1134
1136
* Webbrowser tab
1135
1137
**/
1136
- m_pLabelBrowserGeneral = reinterpret_cast < CGUILabel* > ( pManager->CreateLabel ( pTabBrowser , _ (" General" ) ) );
1138
+ m_pLabelBrowserGeneral = reinterpret_cast < CGUILabel* > ( pManager->CreateLabel ( m_pTabBrowser , _ (" General" ) ) );
1137
1139
m_pLabelBrowserGeneral->SetPosition ( CVector2D ( 10 .0f , 12 .0f ) );
1138
1140
m_pLabelBrowserGeneral->GetPosition ( vecTemp );
1139
1141
m_pLabelBrowserGeneral->AutoSize ( NULL , 5 .0f );
1140
1142
m_pLabelBrowserGeneral->SetFont ( " default-bold-small" );
1141
1143
1142
- m_pCheckBoxRemoteBrowser = reinterpret_cast < CGUICheckBox* > ( pManager->CreateCheckBox ( pTabBrowser , _ (" Enable remote websites" ), true ) );
1144
+ m_pCheckBoxRemoteBrowser = reinterpret_cast < CGUICheckBox* > ( pManager->CreateCheckBox ( m_pTabBrowser , _ (" Enable remote websites" ), true ) );
1143
1145
m_pCheckBoxRemoteBrowser->SetPosition ( CVector2D ( vecTemp.fX , vecTemp.fY + 29 .0f ) );
1144
1146
m_pCheckBoxRemoteBrowser->GetPosition ( vecTemp );
1145
1147
m_pCheckBoxRemoteBrowser->AutoSize ( NULL , 20 .0f );
1146
1148
1147
- m_pCheckBoxRemoteJavascript = reinterpret_cast < CGUICheckBox* > ( pManager->CreateCheckBox ( pTabBrowser , _ (" Enable Javascript on remote websites" ), true ) );
1149
+ m_pCheckBoxRemoteJavascript = reinterpret_cast < CGUICheckBox* > ( pManager->CreateCheckBox ( m_pTabBrowser , _ (" Enable Javascript on remote websites" ), true ) );
1148
1150
m_pCheckBoxRemoteJavascript->SetPosition ( CVector2D ( vecTemp.fX , vecTemp.fY + 25 .0f ) );
1149
1151
m_pCheckBoxRemoteJavascript->GetPosition ( vecTemp );
1150
1152
m_pCheckBoxRemoteJavascript->AutoSize ( NULL , 20 .0f );
1151
1153
1152
- m_pLabelBrowserCustomBlacklist = reinterpret_cast < CGUILabel* > ( pManager->CreateLabel ( pTabBrowser , _ (" Custom blacklist" ) ) );
1154
+ m_pLabelBrowserCustomBlacklist = reinterpret_cast < CGUILabel* > ( pManager->CreateLabel ( m_pTabBrowser , _ (" Custom blacklist" ) ) );
1153
1155
m_pLabelBrowserCustomBlacklist->SetPosition ( CVector2D ( vecTemp.fX , vecTemp.fY + 30 .0f ) );
1154
1156
m_pLabelBrowserCustomBlacklist->GetPosition ( vecTemp );
1155
1157
m_pLabelBrowserCustomBlacklist->AutoSize ( NULL , 5 .0f );
1156
1158
m_pLabelBrowserCustomBlacklist->SetFont ( " default-bold-small" );
1157
1159
1158
- m_pEditBrowserBlacklistAdd = reinterpret_cast < CGUIEdit* > ( pManager->CreateEdit ( pTabBrowser ) );
1160
+ m_pEditBrowserBlacklistAdd = reinterpret_cast < CGUIEdit* > ( pManager->CreateEdit ( m_pTabBrowser ) );
1159
1161
m_pEditBrowserBlacklistAdd->SetPosition ( CVector2D ( vecTemp.fX , vecTemp.fY + 25 .0f ) );
1160
1162
m_pEditBrowserBlacklistAdd->GetPosition ( vecTemp );
1161
1163
m_pEditBrowserBlacklistAdd->SetSize ( CVector2D ( 191 .0f , 22 .0f ) );
1162
1164
m_pEditBrowserBlacklistAdd->SetText ( _ (" Enter a domain e.g. google.com" ) );
1163
1165
1164
- m_pButtonBrowserBlacklistAdd = reinterpret_cast < CGUIButton* > ( pManager->CreateButton ( pTabBrowser , _ (" Block" ) ) );
1166
+ m_pButtonBrowserBlacklistAdd = reinterpret_cast < CGUIButton* > ( pManager->CreateButton ( m_pTabBrowser , _ (" Block" ) ) );
1165
1167
m_pButtonBrowserBlacklistAdd->SetPosition ( CVector2D ( vecTemp.fX + m_pEditBrowserBlacklistAdd->GetSize ().fX + 2 .0f , vecTemp.fY ) );
1166
1168
m_pButtonBrowserBlacklistAdd->SetSize ( CVector2D ( 64 .0f , 22 .0f ) );
1167
1169
1168
- m_pGridBrowserBlacklist = reinterpret_cast < CGUIGridList* > ( pManager->CreateGridList ( pTabBrowser ) );
1170
+ m_pGridBrowserBlacklist = reinterpret_cast < CGUIGridList* > ( pManager->CreateGridList ( m_pTabBrowser ) );
1169
1171
m_pGridBrowserBlacklist->SetPosition ( CVector2D ( vecTemp.fX , vecTemp.fY + 32 .0f ) );
1170
1172
m_pGridBrowserBlacklist->GetPosition ( vecTemp );
1171
1173
m_pGridBrowserBlacklist->SetSize ( CVector2D ( 256 .0f , 150 .0f ) );
1172
1174
m_pGridBrowserBlacklist->AddColumn ( _ (" Domain" ), 0 .9f );
1173
1175
1174
- m_pButtonBrowserBlacklistRemove = reinterpret_cast < CGUIButton* > ( pManager->CreateButton ( pTabBrowser , _ (" Remove domain" ) ) );
1176
+ m_pButtonBrowserBlacklistRemove = reinterpret_cast < CGUIButton* > ( pManager->CreateButton ( m_pTabBrowser , _ (" Remove domain" ) ) );
1175
1177
m_pButtonBrowserBlacklistRemove->SetPosition ( CVector2D ( vecTemp.fX , vecTemp.fY + m_pGridBrowserBlacklist->GetSize ().fY + 5 .0f ) );
1176
1178
m_pButtonBrowserBlacklistRemove->SetSize ( CVector2D ( 140 .0f , 22 .0f ) );
1177
1179
1178
1180
m_pLabelBrowserCustomBlacklist->GetPosition ( vecTemp ); // Reset vecTemp
1179
1181
1180
- m_pLabelBrowserCustomWhitelist = reinterpret_cast < CGUILabel* > ( pManager->CreateLabel ( pTabBrowser , _ (" Custom whitelist" ) ) );
1182
+ m_pLabelBrowserCustomWhitelist = reinterpret_cast < CGUILabel* > ( pManager->CreateLabel ( m_pTabBrowser , _ (" Custom whitelist" ) ) );
1181
1183
m_pLabelBrowserCustomWhitelist->SetPosition ( CVector2D ( 292 .0f , vecTemp.fY ) );
1182
1184
m_pLabelBrowserCustomWhitelist->GetPosition ( vecTemp );
1183
1185
m_pLabelBrowserCustomWhitelist->AutoSize ( NULL , 5 .0f );
1184
1186
m_pLabelBrowserCustomWhitelist->SetFont ( " default-bold-small" );
1185
1187
1186
- m_pEditBrowserWhitelistAdd = reinterpret_cast < CGUIEdit* > ( pManager->CreateEdit ( pTabBrowser ) );
1188
+ m_pEditBrowserWhitelistAdd = reinterpret_cast < CGUIEdit* > ( pManager->CreateEdit ( m_pTabBrowser ) );
1187
1189
m_pEditBrowserWhitelistAdd->SetPosition ( CVector2D ( vecTemp.fX , vecTemp.fY + 25 .0f ) );
1188
1190
m_pEditBrowserWhitelistAdd->GetPosition ( vecTemp );
1189
1191
m_pEditBrowserWhitelistAdd->SetSize ( CVector2D ( 191 .0f , 22 .0f ) );
1190
1192
m_pEditBrowserWhitelistAdd->SetText ( _ (" Enter a domain e.g. google.com" ) );
1191
1193
1192
- m_pButtonBrowserWhitelistAdd = reinterpret_cast < CGUIButton* > ( pManager->CreateButton ( pTabBrowser , _ (" Allow" ) ) );
1194
+ m_pButtonBrowserWhitelistAdd = reinterpret_cast < CGUIButton* > ( pManager->CreateButton ( m_pTabBrowser , _ (" Allow" ) ) );
1193
1195
m_pButtonBrowserWhitelistAdd->SetPosition ( CVector2D ( vecTemp.fX + m_pEditBrowserWhitelistAdd->GetSize ().fX + 2 .0f , vecTemp.fY ) );
1194
1196
m_pButtonBrowserWhitelistAdd->SetSize ( CVector2D ( 64 .0f , 22 .0f ) );
1195
1197
1196
- m_pGridBrowserWhitelist = reinterpret_cast < CGUIGridList* > ( pManager->CreateGridList ( pTabBrowser ) );
1198
+ m_pGridBrowserWhitelist = reinterpret_cast < CGUIGridList* > ( pManager->CreateGridList ( m_pTabBrowser ) );
1197
1199
m_pGridBrowserWhitelist->SetPosition ( CVector2D ( vecTemp.fX , vecTemp.fY + 32 .0f ) );
1198
1200
m_pGridBrowserWhitelist->GetPosition ( vecTemp );
1199
1201
m_pGridBrowserWhitelist->SetSize ( CVector2D ( 256 .0f , 150 .0f ) );
1200
1202
m_pGridBrowserWhitelist->AddColumn ( _ (" Domain" ), 0 .9f );
1201
1203
1202
- m_pButtonBrowserWhitelistRemove = reinterpret_cast < CGUIButton* > ( pManager->CreateButton ( pTabBrowser , _ (" Remove domain" ) ) );
1204
+ m_pButtonBrowserWhitelistRemove = reinterpret_cast < CGUIButton* > ( pManager->CreateButton ( m_pTabBrowser , _ (" Remove domain" ) ) );
1203
1205
m_pButtonBrowserWhitelistRemove->SetPosition ( CVector2D ( vecTemp.fX , vecTemp.fY + m_pGridBrowserWhitelist->GetSize ().fY + 5 .0f ) );
1204
1206
m_pButtonBrowserWhitelistRemove->SetSize ( CVector2D ( 140 .0f , 22 .0f ) );
1205
1207
@@ -2902,20 +2904,38 @@ void CSettings::LoadData ( void )
2902
2904
CVARS_GET ( " browser_remote_websites" , bVar ); m_pCheckBoxRemoteBrowser->SetSelected ( bVar );
2903
2905
CVARS_GET ( " browser_remote_javascript" , bVar ); m_pCheckBoxRemoteJavascript->SetSelected ( bVar );
2904
2906
2907
+ ReloadBrowserLists ();
2908
+ }
2909
+
2910
+ void CSettings::ReloadBrowserLists ( void )
2911
+ {
2905
2912
m_pGridBrowserBlacklist->Clear ();
2906
2913
m_pGridBrowserWhitelist->Clear ();
2907
2914
m_bBrowserListsChanged = false ;
2915
+ if ( m_bBrowserListsLoadEnabled )
2916
+ {
2917
+ auto pWebCore = g_pCore->GetWebCore ();
2918
+ std::vector<std::pair<SString, bool >> customBlacklist;
2919
+ pWebCore->GetFilterEntriesByType ( customBlacklist, eWebFilterType::WEBFILTER_USER );
2920
+ for ( std::vector<std::pair<SString, bool >>::iterator iter = customBlacklist.begin (); iter != customBlacklist.end (); ++iter )
2921
+ {
2922
+ if ( iter->second == false )
2923
+ m_pGridBrowserBlacklist->SetItemText ( m_pGridBrowserBlacklist->AddRow (), 1 , iter->first );
2924
+ else
2925
+ m_pGridBrowserWhitelist->SetItemText ( m_pGridBrowserWhitelist->AddRow (), 1 , iter->first );
2926
+ }
2927
+ }
2928
+ }
2908
2929
2909
- auto pWebCore = g_pCore->GetWebCore ();
2910
- std::vector<std::pair<SString, bool >> customBlacklist;
2911
- pWebCore->GetFilterEntriesByType ( customBlacklist, eWebFilterType::WEBFILTER_USER );
2912
- for ( std::vector<std::pair<SString, bool >>::iterator iter = customBlacklist.begin (); iter != customBlacklist.end (); ++iter )
2930
+ bool CSettings::OnTabChanged ( CGUIElement* pElement )
2931
+ {
2932
+ if ( pElement == m_pTabBrowser && !m_bBrowserListsLoadEnabled )
2913
2933
{
2914
- if ( iter->second == false )
2915
- m_pGridBrowserBlacklist->SetItemText ( m_pGridBrowserBlacklist->AddRow (), 1 , iter->first );
2916
- else
2917
- m_pGridBrowserWhitelist->SetItemText ( m_pGridBrowserWhitelist->AddRow (), 1 , iter->first );
2934
+ // Load browser lists when tab is selected for the first time
2935
+ m_bBrowserListsLoadEnabled = true ;
2936
+ ReloadBrowserLists ();
2918
2937
}
2938
+ return true ;
2919
2939
}
2920
2940
2921
2941
void CSettings::SaveData ( void )
@@ -3212,23 +3232,26 @@ void CSettings::SaveData ( void )
3212
3232
CVARS_SET ( " browser_remote_javascript" , m_pCheckBoxRemoteJavascript->GetSelected () );
3213
3233
}
3214
3234
3215
- auto pWebCore = g_pCore->GetWebCore ();
3216
- std::vector<SString> customBlacklist;
3217
- for ( int i = 0 ; i < m_pGridBrowserBlacklist->GetRowCount (); ++i )
3235
+ if ( m_bBrowserListsLoadEnabled )
3218
3236
{
3219
- customBlacklist.push_back ( m_pGridBrowserBlacklist->GetItemText ( i, 1 ) );
3220
- }
3221
- pWebCore->WriteCustomList ( " customblacklist" , customBlacklist );
3237
+ auto pWebCore = g_pCore->GetWebCore ();
3238
+ std::vector<SString> customBlacklist;
3239
+ for ( int i = 0 ; i < m_pGridBrowserBlacklist->GetRowCount (); ++i )
3240
+ {
3241
+ customBlacklist.push_back ( m_pGridBrowserBlacklist->GetItemText ( i, 1 ) );
3242
+ }
3243
+ pWebCore->WriteCustomList ( " customblacklist" , customBlacklist );
3222
3244
3223
- std::vector<SString> customWhitelist;
3224
- for ( int i = 0 ; i < m_pGridBrowserWhitelist->GetRowCount (); ++i )
3225
- {
3226
- customWhitelist.push_back ( m_pGridBrowserWhitelist->GetItemText ( i, 1 ) );
3227
- }
3228
- pWebCore->WriteCustomList ( " customwhitelist" , customWhitelist );
3245
+ std::vector<SString> customWhitelist;
3246
+ for ( int i = 0 ; i < m_pGridBrowserWhitelist->GetRowCount (); ++i )
3247
+ {
3248
+ customWhitelist.push_back ( m_pGridBrowserWhitelist->GetItemText ( i, 1 ) );
3249
+ }
3250
+ pWebCore->WriteCustomList ( " customwhitelist" , customWhitelist );
3229
3251
3230
- if ( m_bBrowserListsChanged )
3231
- bBrowserSettingChanged = true ;
3252
+ if ( m_bBrowserListsChanged )
3253
+ bBrowserSettingChanged = true ;
3254
+ }
3232
3255
3233
3256
// Ensure CVARS ranges ok
3234
3257
CClientVariables::GetSingleton ().ValidateValues ();
0 commit comments