serverbrowsertabconsolepages.c 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801
  1. class ServerBrowserTabConsolePages extends ServerBrowserTab
  2. {
  3. private bool m_IsFilterChanged;
  4. private bool m_IsFilterFocused;
  5. protected bool m_MouseKeyboardControlled
  6. private Widget m_WidgetNavFilters;
  7. private Widget m_WidgetNavServers;
  8. protected Widget m_ButtonPageLeftImg;
  9. protected Widget m_ButtonPageRightImg;
  10. protected int m_PreviousPage;
  11. protected int m_TotalServersCount;
  12. protected int m_PageStartNum;
  13. protected int m_PageEndNum;
  14. protected int m_PagesCount;
  15. protected int m_ServersEstimateCount;
  16. protected int m_TimeLastServerRefresh;
  17. protected int m_TimeLastServerRefreshHoldButton;
  18. protected Widget m_PnlPagesPanel;
  19. protected TextWidget m_PnlPagesLoadingText;
  20. protected ref array<ref ServerBrowserEntry> m_ServerListEntiers;
  21. private bool m_IsDetailsFocused;
  22. protected override void Construct(Widget parent, ServerBrowserMenuNew menu, TabType type)
  23. {
  24. m_Root = GetGame().GetWorkspace().CreateWidgets("gui/layouts/new_ui/server_browser/xbox/server_browser_tab_console_pages.layout", parent);
  25. m_ServerListScroller = ScrollWidget.Cast( m_Root.FindAnyWidget("server_list_scroller"));
  26. m_ServerList = SpacerBaseWidget.Cast(m_ServerListScroller.FindAnyWidget("server_list_content"));
  27. m_ServerListScroller.VScrollToPos01(0);
  28. m_ServerListEntiers = new array<ref ServerBrowserEntry>;
  29. m_EntryWidgets = new map<string, ref ServerBrowserEntry>;
  30. m_EntriesSorted = new map<ESortType, ref array<ref GetServersResultRow>>;
  31. m_EntriesSorted[ESortType.HOST] = new array<ref GetServersResultRow>;
  32. m_EntriesSorted[ESortType.POPULATION] = new array<ref GetServersResultRow>;
  33. m_Menu = menu;
  34. m_TabType = type;
  35. m_FilterRoot = m_Root.FindAnyWidget("filters_root");
  36. m_FilterContent = m_Root.FindAnyWidget("filters_content");
  37. m_ApplyFilter = m_Root.FindAnyWidget("apply_filter_button");
  38. m_ResetFilters = m_Root.FindAnyWidget("reset_filter_button");
  39. m_RefreshList = m_Root.FindAnyWidget("refresh_list_button");
  40. m_FiltersChanged = m_Root.FindAnyWidget("unapplied_filters_notify");
  41. m_HostSort = m_Root.FindAnyWidget("server_list_content_header_host");
  42. m_TimeSort = m_Root.FindAnyWidget("server_list_content_header_time");
  43. m_PopulationSort = m_Root.FindAnyWidget("server_list_content_header_population");
  44. m_SlotsSort = m_Root.FindAnyWidget("server_list_content_header_slots");
  45. m_PingSort = m_Root.FindAnyWidget("server_list_content_header_ping");
  46. m_MapSort = m_Root.FindAnyWidget("server_list_content_header_map");
  47. m_FilterSearchText = m_Root.FindAnyWidget("search_name_button");
  48. m_FilterSearchTextBox = m_Root.FindAnyWidget("search_name_setting_option");
  49. m_LoadingText = TextWidget.Cast( m_Root.FindAnyWidget("loading_servers_info"));
  50. m_WidgetNavFilters = m_Root.FindAnyWidget("filters_root_nav_wrapper");
  51. m_WidgetNavServers = m_Root.FindAnyWidget("server_list_root_nav_wrapper");
  52. m_BtnPagePrev = ButtonWidget.Cast(m_Root.FindAnyWidget("servers_navigation_prev"));
  53. m_BtnPageNext = ButtonWidget.Cast(m_Root.FindAnyWidget("servers_navigation_next"));
  54. #ifdef PLATFORM_PS4
  55. m_ButtonPageLeftImg = m_Root.FindAnyWidget("servers_navigation_page_prev_icon_ps4");
  56. m_ButtonPageRightImg = m_Root.FindAnyWidget("servers_navigation_page_next_icon_ps4");
  57. m_Root.FindAnyWidget("servers_navigation_page_prev_icon_xbox").Show(false);
  58. m_Root.FindAnyWidget("servers_navigation_page_next_icon_xbox").Show(false);
  59. #else
  60. m_ButtonPageLeftImg = m_Root.FindAnyWidget("servers_navigation_page_prev_icon_xbox");
  61. m_ButtonPageRightImg = m_Root.FindAnyWidget("servers_navigation_page_next_icon_xbox");
  62. m_Root.FindAnyWidget("servers_navigation_page_prev_icon_ps4" ).Show(false);
  63. m_Root.FindAnyWidget("servers_navigation_page_next_icon_ps4" ).Show(false);
  64. #endif
  65. m_RightAreaHeaderText = TextWidget.Cast(m_Root.FindAnyWidget("right_area_header_text"));
  66. m_FilterRoot = m_Root.FindAnyWidget("filters_root");
  67. m_BtnShowDetails = ButtonWidget.Cast(m_Root.FindAnyWidget("show_details_button"));
  68. m_DetailsRoot = m_Root.FindAnyWidget("details_root");
  69. m_BtnShowFilters = ButtonWidget.Cast(m_Root.FindAnyWidget("show_filters_button"));
  70. ShowHideConsoleWidgets();
  71. m_Filters = new ServerBrowserFilterContainer(m_Root.FindAnyWidget("filters_content"), this);
  72. m_PnlPagesPanel = m_Root.FindAnyWidget( "servers_navigation_spacer" );
  73. m_PreviousPage = 1;
  74. SetCurrentPage(1);
  75. m_PnlPagesPanel.Show(true);
  76. m_LoadingFinished = true;
  77. m_Filters.OnSortChanged(m_Filters.m_SortingFilter.GetValue());
  78. UpdatePageButtons();
  79. m_Root.SetHandler(this);
  80. m_FilterSearchTextBox.SetHandler(this);
  81. GetGame().GetMission().GetOnInputDeviceChanged().Insert(OnInputDeviceChanged);
  82. OnInputDeviceChanged(GetGame().GetInput().GetCurrentInputDevice());
  83. m_Details = new ServerBrowserDetailsContainer(m_Root.FindAnyWidget("details_content"), this);
  84. }
  85. void ShowHideConsoleWidgets()
  86. {
  87. bool is_xbox = true;
  88. #ifdef PLATFORM_PS4
  89. is_xbox = false;
  90. #endif
  91. m_Root.FindAnyWidget( "filters_root_nav_img_lb_xbox" ).Show( is_xbox );
  92. m_Root.FindAnyWidget( "filters_root_nav_img_rb_xbox" ).Show( is_xbox );
  93. m_Root.FindAnyWidget( "server_list_root_nav_img_lb_xbox" ).Show( is_xbox );
  94. m_Root.FindAnyWidget( "server_list_root_nav_img_rb_xbox" ).Show( is_xbox );
  95. m_Root.FindAnyWidget( "filters_root_nav_img_l1_ps4" ).Show( !is_xbox );
  96. m_Root.FindAnyWidget( "filters_root_nav_img_r1_ps4" ).Show( !is_xbox );
  97. m_Root.FindAnyWidget( "server_list_root_nav_img_l1_ps4" ).Show( !is_xbox );
  98. m_Root.FindAnyWidget( "server_list_root_nav_img_r1_ps4" ).Show( !is_xbox );
  99. }
  100. protected void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
  101. {
  102. switch (pInputDeviceType)
  103. {
  104. case EInputDeviceType.CONTROLLER:
  105. ShowHideConsoleWidgets();
  106. UpdatePageButtons();
  107. m_WidgetNavFilters.Show(m_IsFilterFocused || m_IsDetailsFocused);
  108. if (m_TabType != TabType.FAVORITE)
  109. {
  110. m_WidgetNavServers.Show((!m_IsFilterFocused && !m_IsDetailsFocused));
  111. }
  112. m_BtnShowFilters.Show(false);
  113. m_BtnShowDetails.Show(false);
  114. m_RefreshList.Show(false);
  115. m_Root.FindAnyWidget("spacer2").Show(false);
  116. m_Root.FindAnyWidget("spacer5").Show(false);
  117. m_Menu.GetLayoutRoot().FindAnyWidget("play_panel_root").Show(false);
  118. m_Menu.GetLayoutRoot().FindAnyWidget("MouseAndKeyboardWarning").Show(false);
  119. m_MouseKeyboardControlled = false;
  120. break;
  121. default:
  122. if (GetGame().GetInput().IsEnabledMouseAndKeyboardEvenOnServer())
  123. {
  124. bool isFavoriteTab = m_TabType == TabType.FAVORITE;
  125. m_WidgetNavFilters.Show(false);
  126. m_WidgetNavServers.Show(false);
  127. m_ButtonPageLeftImg.Show(false);
  128. m_ButtonPageRightImg.Show(false);
  129. m_RefreshList.Show(true);
  130. m_BtnShowDetails.Show(!m_DetailsRoot.IsVisible());
  131. m_BtnShowFilters.Show(!isFavoriteTab);
  132. m_Root.FindAnyWidget("spacer").Show(!isFavoriteTab);
  133. m_Root.FindAnyWidget("spacer2").Show(true);
  134. m_Root.FindAnyWidget("spacer5").Show(!isFavoriteTab);
  135. m_Menu.GetLayoutRoot().FindAnyWidget("play_panel_root").Show(true);
  136. m_Menu.GetLayoutRoot().FindAnyWidget("MouseAndKeyboardWarning").Show(true);
  137. m_MouseKeyboardControlled = true;
  138. }
  139. break;
  140. }
  141. }
  142. override void OnLoadServersAsyncConsole( GetServersResult result_list, EBiosError error, string response )
  143. {
  144. if ( error != EBiosError.OK )
  145. {
  146. m_LoadingText.SetText( string.Format("Error: %1", ErrorModuleHandler.GetClientMessage(ErrorCategory.BIOSError, error)) );
  147. m_Menu.SetServersLoadingTab( TabType.NONE );
  148. m_LoadingFinished = true;
  149. SetFocusFilters();
  150. return;
  151. }
  152. m_PagesCount = result_list.m_Pages;
  153. m_TotalServersCount = result_list.m_NumServers;
  154. LoadEntries( result_list.m_Page, result_list.m_Results );
  155. OnLoadServersAsyncFinished();
  156. UpdatePageButtons();
  157. }
  158. void OnLoadServersAsyncFinished()
  159. {
  160. string msg = "#servers_found: " + m_TotalLoadedServers;
  161. if (m_TotalLoadedServers == 0)
  162. {
  163. msg = "#server_browser_tab_unable_to_get_server";
  164. }
  165. m_LoadingText.SetText(msg);
  166. m_LoadingFinished = true;
  167. m_Menu.SetServersLoadingTab(TabType.NONE);
  168. }
  169. protected void LoadEntries( int cur_page_index , GetServersResultRowArray page_entries )
  170. {
  171. int index = 0;
  172. ServerBrowserEntry entry;
  173. m_TotalLoadedServers = m_TotalServersCount;
  174. if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
  175. {
  176. return;
  177. }
  178. // only load servers if they correspond to current page
  179. if (cur_page_index != m_CurrentPageNum)
  180. {
  181. return;
  182. }
  183. if ( m_PagesCount && page_entries )
  184. {
  185. foreach ( GetServersResultRow result : page_entries )
  186. {
  187. if ( PassFilter( result ) )
  188. {
  189. string ipPort = result.GetIpPort();
  190. bool isFavorited = m_Menu.IsFavorited(ipPort);
  191. entry = GetServerEntryByIndex( index );
  192. entry.SetIsOnline(true);
  193. entry.FillInfo( result );
  194. entry.SetFavorite(isFavorited);
  195. entry.UpdateEntry();
  196. if (isFavorited && m_OnlineFavServers.Find(ipPort) == -1)
  197. {
  198. m_OnlineFavServers.Insert(ipPort);
  199. }
  200. m_EntryWidgets.Insert(ipPort, entry);
  201. m_EntriesSorted[m_SortType].Insert( result );
  202. index++;
  203. }
  204. if ( !m_Menu || m_Menu.GetServersLoadingTab() != m_TabType )
  205. {
  206. return;
  207. }
  208. }
  209. }
  210. LoadExtraEntries(index);
  211. m_ServerList.Update();
  212. }
  213. protected ServerBrowserEntry GetServerEntryByIndex( int index )
  214. {
  215. ServerBrowserEntry entry;
  216. if ( index >= 0 )
  217. {
  218. if ( index < m_ServerListEntiers.Count() )
  219. {
  220. entry = m_ServerListEntiers[index];
  221. }
  222. else
  223. {
  224. entry = new ServerBrowserEntry( m_ServerList, index, this );
  225. m_ServerListEntiers.Insert(entry);
  226. }
  227. }
  228. else
  229. {
  230. return null;
  231. }
  232. entry.Show( true );
  233. return entry;
  234. }
  235. override void OnFilterChanged()
  236. {
  237. m_IsFilterChanged = true;
  238. }
  239. bool CanRefreshServerList()
  240. {
  241. return m_LoadingFinished;
  242. }
  243. override void RefreshList()
  244. {
  245. for ( int i = 0; i < m_ServerListEntiers.Count(); i++ )
  246. {
  247. m_ServerListEntiers[i].Show(false);
  248. }
  249. for ( int j = 0; j < m_EntriesSorted.Count(); j++ )
  250. {
  251. array<ref GetServersResultRow> result_rows = m_EntriesSorted.GetElement(j);
  252. if ( result_rows )
  253. {
  254. result_rows.Clear();
  255. }
  256. }
  257. m_IsFilterChanged = false;
  258. m_Filters.SaveFilters();
  259. super.RefreshList();
  260. m_ServerListScroller.VScrollToPos01( 0 );
  261. m_LoadingText.SetText( "#dayz_game_loading" );
  262. }
  263. override void ResetFilters()
  264. {
  265. super.ResetFilters();
  266. m_IsFilterChanged = false;
  267. }
  268. override void ApplyFilters()
  269. {
  270. if ( m_IsFilterChanged )
  271. {
  272. SetCurrentPage(1);
  273. }
  274. m_IsFilterChanged = false;
  275. m_CurrentFilterInput = m_Filters.GetFilterOptionsConsoles();
  276. RefreshList();
  277. }
  278. override void PressA()
  279. {
  280. }
  281. override void PressX()
  282. {
  283. if ( (GetGame().GetTime() - m_TimeLastServerRefresh) > 1000 )
  284. {
  285. m_TimeLastServerRefresh = GetGame().GetTime();
  286. if ( m_IsFilterChanged)
  287. {
  288. SetCurrentPage(1);
  289. }
  290. m_OnlineFavServers.Clear();
  291. RefreshList();
  292. }
  293. }
  294. override void PressY()
  295. {
  296. SwitchRightAreaView();
  297. }
  298. override void PressThumbRight()
  299. {
  300. switch (m_SelectedPanel)
  301. {
  302. case SelectedPanel.BROWSER:
  303. {
  304. if (m_SelectedServer)
  305. {
  306. m_Menu.ServerListFocus(true, m_SelectedServer.ToggleFavorite());
  307. }
  308. break;
  309. }
  310. case SelectedPanel.FILTERS:
  311. {
  312. if (m_Filters)
  313. {
  314. m_Filters.ResetFilters();
  315. }
  316. break;
  317. }
  318. }
  319. }
  320. override void Left()
  321. {
  322. if (!m_IsFilterFocused && !m_IsDetailsFocused)
  323. {
  324. int curr_page = GetCurrentPage();
  325. m_PreviousPage = curr_page;
  326. if ( curr_page > 1 )
  327. {
  328. SetCurrentPage( curr_page - 1 );
  329. UpdatePageButtons();
  330. }
  331. }
  332. }
  333. override void LeftHold()
  334. {
  335. if (!m_IsFilterFocused && !m_IsDetailsFocused)
  336. {
  337. if ( (GetGame().GetTime() - m_TimeLastServerRefreshHoldButton) > 100 )
  338. {
  339. m_TimeLastServerRefreshHoldButton = GetGame().GetTime();
  340. Left();
  341. }
  342. }
  343. }
  344. override void LeftRelease()
  345. {
  346. if ( !m_IsFilterFocused && GetCurrentPage() != m_PreviousPage )
  347. {
  348. RefreshList();
  349. }
  350. }
  351. override void Right()
  352. {
  353. if (!m_IsFilterFocused && !m_IsDetailsFocused)
  354. {
  355. int curr_page = GetCurrentPage();
  356. m_PreviousPage = curr_page;
  357. if ( curr_page < m_PagesCount )
  358. {
  359. SetCurrentPage( curr_page + 1 );
  360. UpdatePageButtons();
  361. }
  362. }
  363. }
  364. override void RightHold()
  365. {
  366. if (!m_IsFilterFocused && !m_IsDetailsFocused)
  367. {
  368. if ( (GetGame().GetTime() - m_TimeLastServerRefreshHoldButton) > 100 )
  369. {
  370. m_TimeLastServerRefreshHoldButton = GetGame().GetTime();
  371. Right();
  372. }
  373. }
  374. }
  375. override void RightRelease()
  376. {
  377. if ((!m_IsFilterFocused && !m_IsDetailsFocused) && GetCurrentPage() != m_PreviousPage)
  378. {
  379. RefreshList();
  380. }
  381. }
  382. override void PressSholderLeft()
  383. {
  384. OnPressShoulder();
  385. }
  386. override void PressSholderRight()
  387. {
  388. OnPressShoulder();
  389. }
  390. override void OnPressShoulder()
  391. {
  392. if (m_TabType == TabType.FAVORITE)
  393. return;
  394. switch (m_SelectedPanel)
  395. {
  396. case SelectedPanel.BROWSER:
  397. {
  398. if (m_TabType == TabType.FAVORITE)
  399. {
  400. SwitchToDetails();
  401. }
  402. else
  403. {
  404. SwitchToFilters();
  405. }
  406. break;
  407. }
  408. case SelectedPanel.DETAILS:
  409. case SelectedPanel.FILTERS:
  410. {
  411. SetFocusServers();
  412. break;
  413. }
  414. }
  415. }
  416. override void Focus()
  417. {
  418. if (m_TabType == TabType.FAVORITE)
  419. {
  420. SetFocusServers();
  421. }
  422. else
  423. {
  424. SwitchToFilters(true);
  425. }
  426. }
  427. override void ShowServerDetails()
  428. {
  429. super.ShowServerDetails();
  430. if (m_TabType != TabType.FAVORITE)
  431. {
  432. m_FilterRoot.Show(false);
  433. m_BtnShowFilters.Show(m_MouseKeyboardControlled);
  434. }
  435. }
  436. void SetFocusFilters()
  437. {
  438. SetEnableFilters(true);
  439. SetEnableServers(false);
  440. // if loaded servers is 0, then hide Top navigation menu <Left / Right>
  441. if (!m_MouseKeyboardControlled)
  442. {
  443. m_WidgetNavFilters.Show(true);
  444. m_WidgetNavServers.Show(false);
  445. }
  446. m_Filters.Focus();
  447. m_IsFilterFocused = true;
  448. m_IsDetailsFocused = false;
  449. m_Menu.ShowAButton(true);
  450. UpdatePageButtons();
  451. m_SelectedPanel = SelectedPanel.FILTERS;
  452. }
  453. void SetFocusDetails()
  454. {
  455. SetEnableFilters(false);
  456. SetEnableServers(false);
  457. if (!m_MouseKeyboardControlled)
  458. {
  459. m_WidgetNavFilters.Show(true);
  460. m_WidgetNavServers.Show(false);
  461. }
  462. m_Details.Focus();
  463. m_IsDetailsFocused = true;
  464. m_IsFilterFocused = false;
  465. m_SelectedPanel = SelectedPanel.DETAILS;
  466. }
  467. void SetFocusServers()
  468. {
  469. SetEnableServers(true);
  470. SetEnableFilters(false);
  471. if (!m_MouseKeyboardControlled)
  472. {
  473. m_WidgetNavFilters.Show(false);
  474. if (m_TabType != TabType.FAVORITE)
  475. {
  476. m_WidgetNavServers.Show(true);
  477. }
  478. }
  479. array<ref GetServersResultRow> entries = m_EntriesSorted[m_SortType];
  480. if (entries && entries.Count() > 0)
  481. {
  482. string entryKey = entries.Get(0).GetIpPort();
  483. ServerBrowserEntry sbEntry = m_EntryWidgets.Get(entryKey);
  484. if (sbEntry)
  485. {
  486. sbEntry.Focus();
  487. }
  488. m_Menu.ShowAButton(true);
  489. m_Menu.UpdateAButtonLabel("#str_serverbrowserroot_toolbar_bg_consoletoolbar_connect_connecttext0");
  490. m_Menu.ShowThumbRButton(true);
  491. }
  492. else
  493. {
  494. SetFocus(null);
  495. m_Menu.ShowAButton(false);
  496. m_Menu.ShowThumbRButton(false);
  497. }
  498. m_IsFilterFocused = false;
  499. m_IsDetailsFocused = false;
  500. UpdatePageButtons();
  501. m_SelectedPanel = SelectedPanel.BROWSER;
  502. }
  503. void SetEnableFilters(bool enable)
  504. {
  505. Widget w_filters = m_Root.FindAnyWidget("filters_content");
  506. Widget w_content = m_Root.FindAnyWidget("server_list_scroller");
  507. w_content.Enable( !enable );
  508. if ( enable )
  509. {
  510. SetFocus( ButtonWidget.Cast(w_filters.FindWidget("sort_button")) );
  511. }
  512. }
  513. void SetEnableServers(bool enable)
  514. {
  515. Widget w_filters = m_Root.FindAnyWidget("filters_content");
  516. Widget w_content = m_Root.FindAnyWidget("server_list_scroller");
  517. w_content.Enable( enable );
  518. }
  519. void UpdatePageButtons()
  520. {
  521. TextWidget wgt_page_stat = TextWidget.Cast( m_Root.FindAnyWidget( "servers_navigation_page_status" ) );
  522. wgt_page_stat.SetText( GetCurrentPage().ToString() +" / "+ m_PagesCount.ToString() );
  523. if ( (!m_IsFilterFocused && !m_IsDetailsFocused) && (m_PagesCount > 1) && !m_MouseKeyboardControlled )
  524. {
  525. bool can_left = (GetCurrentPage() > 1);
  526. m_ButtonPageLeftImg.Show( can_left );
  527. m_BtnPagePrev.Show( can_left );
  528. bool can_right = (GetCurrentPage() < m_PagesCount);
  529. m_ButtonPageRightImg.Show( can_right );
  530. m_BtnPageNext.Show( can_right );
  531. }
  532. else
  533. {
  534. m_ButtonPageLeftImg.Show( false );
  535. m_BtnPagePrev.Show( false );
  536. m_ButtonPageRightImg.Show( false );
  537. m_BtnPageNext.Show( false );
  538. }
  539. }
  540. override bool OnClick(Widget w, int x, int y, int button)
  541. {
  542. super.OnClick(w, x, y, button);
  543. if (button == MouseState.LEFT)
  544. {
  545. if (w == m_ResetFilters)
  546. {
  547. ResetFilters();
  548. }
  549. else if (w == m_ApplyFilter)
  550. {
  551. ApplyFilters();
  552. return true;
  553. }
  554. else if (w == m_RefreshList)
  555. {
  556. if (m_Loading && !m_LoadingFinished)
  557. {
  558. PressX();
  559. }
  560. else
  561. {
  562. RefreshList();
  563. }
  564. return true;
  565. }
  566. else if (w == m_BtnPagePrev)
  567. {
  568. Left();
  569. return true;
  570. }
  571. else if (w == m_BtnPageNext)
  572. {
  573. Right();
  574. return true;
  575. }
  576. else if (w == m_BtnShowDetails)
  577. {
  578. SwitchToDetails();
  579. return true;
  580. }
  581. else if (w == m_BtnShowFilters)
  582. {
  583. SwitchToFilters();
  584. return true;
  585. }
  586. }
  587. return false;
  588. }
  589. //Coloring functions (Until WidgetStyles are useful)
  590. override void ColorHighlight( Widget w )
  591. {
  592. if ( !w )
  593. {
  594. return;
  595. }
  596. w.SetColor( ARGB( 255, 200, 0, 0) );
  597. }
  598. override void ColorNormal( Widget w )
  599. {
  600. if ( !w )
  601. {
  602. return
  603. }
  604. if ( (w.GetFlags() & WidgetFlags.IGNOREPOINTER) == WidgetFlags.IGNOREPOINTER )
  605. {
  606. return;
  607. }
  608. if ( w.IsInherited( ButtonWidget ) )
  609. {
  610. ButtonWidget button = ButtonWidget.Cast( w );
  611. button.SetTextColor( ARGB( 255, 255, 255, 255 ) );
  612. }
  613. else if ( !w.IsInherited( EditBoxWidget ) )
  614. {
  615. w.SetColor( ARGB( 0, 255, 255, 255 ) );
  616. }
  617. TextWidget text1 = TextWidget.Cast(w.FindAnyWidget( w.GetName() + "_text" ) );
  618. TextWidget text2 = TextWidget.Cast(w.FindAnyWidget( w.GetName() + "_text_1" ) );
  619. TextWidget text3 = TextWidget.Cast(w.FindAnyWidget( w.GetName() + "_label" ) );
  620. ImageWidget image = ImageWidget.Cast( w.FindAnyWidget( w.GetName() + "_image" ) );
  621. Widget option = Widget.Cast( w.FindAnyWidget( w.GetName() + "_option_wrapper" ) );
  622. if ( text1 )
  623. {
  624. text1.SetColor( ARGB( 255, 255, 255, 255 ) );
  625. }
  626. if ( text2 )
  627. {
  628. text2.SetColor( ARGB( 255, 255, 255, 255 ) );
  629. }
  630. if ( text3 )
  631. {
  632. text3.SetColor( ARGB( 255, 255, 255, 255 ) );
  633. w.SetAlpha(0);
  634. }
  635. if ( image )
  636. {
  637. image.SetColor( ARGB( 255, 255, 255, 255 ) );
  638. }
  639. if ( option )
  640. {
  641. option.SetColor( ARGB( 150, 255, 255, 255 ) );
  642. }
  643. }
  644. override void ColorDisable( Widget w )
  645. {
  646. #ifdef PLATFORM_WINDOWS
  647. SetFocus( null );
  648. #endif
  649. ButtonWidget button = ButtonWidget.Cast( w );
  650. if ( button )
  651. {
  652. button.SetTextColor( ColorManager.COLOR_DISABLED_TEXT );
  653. }
  654. }
  655. override void SwitchToDetails(bool focus = true)
  656. {
  657. ShowServerDetails();
  658. if (focus)
  659. SetFocusDetails();
  660. m_Menu.UpdateYButtonLabel("#STR_server_browser_menu_server_filters");
  661. m_RightAreaHeaderText.SetText("#STR_server_browser_menu_server_details");
  662. }
  663. override void SwitchToFilters(bool focus = true)
  664. {
  665. if (m_TabType == TabType.FAVORITE)
  666. return;
  667. m_FilterRoot.Show(true);
  668. m_BtnShowDetails.Show(m_MouseKeyboardControlled);
  669. m_DetailsRoot.Show(false);
  670. if (focus)
  671. SetFocusFilters();
  672. m_Menu.UpdateYButtonLabel("#server_details_header");
  673. m_RightAreaHeaderText.SetText("#STR_server_browser_menu_server_filters");
  674. }
  675. }