mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Arsenal - Add option to show live search results (#9354)
* Arsenal - Add option to show live search results * use onEditChanged * Update fnc_onKeyDown.sqf * Update fnc_onKeyDown.sqf * update script_components * skip animate on live search
This commit is contained in:
parent
f452d6633e
commit
3c8cff75d8
@ -45,6 +45,8 @@ PREP(handleLoadoutsSearchbar);
|
|||||||
PREP(handleMouse);
|
PREP(handleMouse);
|
||||||
PREP(handleScrollWheel);
|
PREP(handleScrollWheel);
|
||||||
PREP(handleSearchbar);
|
PREP(handleSearchbar);
|
||||||
|
PREP(handleSearchInputChanged);
|
||||||
|
PREP(handleSearchModeToggle);
|
||||||
PREP(handleStats);
|
PREP(handleStats);
|
||||||
PREP(initBox);
|
PREP(initBox);
|
||||||
PREP(itemInfo);
|
PREP(itemInfo);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Arsenal display <DISPLAY>
|
* 0: Arsenal display <DISPLAY>
|
||||||
* 1: Tab control <CONTROL>
|
* 1: Tab control <CONTROL>
|
||||||
* 2: Animate panel refresh <BOOL>
|
* 2: Animate panel refresh <BOOL> (default: true)
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
|
28
addons/arsenal/functions/fnc_handleSearchInputChanged.sqf
Normal file
28
addons/arsenal/functions/fnc_handleSearchInputChanged.sqf
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#include "..\script_component.hpp"
|
||||||
|
#include "..\defines.hpp"
|
||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Handles user input in the search text boxes
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Search text input (left or right) <CONTROL>
|
||||||
|
* 1: Text <STRING>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
|
||||||
|
params ["_ctrl", "_newText"];
|
||||||
|
|
||||||
|
if (!GVAR(liveUpdateSearch)) exitWith {};
|
||||||
|
|
||||||
|
private _display = ctrlParent _ctrl;
|
||||||
|
|
||||||
|
if (GVAR(leftSearchbarFocus)) then {
|
||||||
|
[_display, _display displayCtrl IDC_leftSearchbar, false] call FUNC(handleSearchBar);
|
||||||
|
};
|
||||||
|
if (GVAR(rightSearchbarFocus)) then {
|
||||||
|
[_display, _display displayCtrl IDC_rightSearchbar, false] call FUNC(handleSearchBar);
|
||||||
|
};
|
30
addons/arsenal/functions/fnc_handleSearchModeToggle.sqf
Normal file
30
addons/arsenal/functions/fnc_handleSearchModeToggle.sqf
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#include "..\script_component.hpp"
|
||||||
|
#include "..\defines.hpp"
|
||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Handles mouse clicks on search button to toggle live results
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Search button (left or right) <CONTROL>
|
||||||
|
* 1: Mouse Button <NUMBER>
|
||||||
|
* 2: Not used
|
||||||
|
* 3: Not used
|
||||||
|
* 4: Not used
|
||||||
|
* 5: Ctrl Button <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
|
||||||
|
params ["_ctrl", "_mouseButton", "", "", "", "_keyCtrl"];
|
||||||
|
|
||||||
|
if ((!_keyCtrl)) exitWith {}; // Ignore if not CTRL + Click
|
||||||
|
|
||||||
|
GVAR(liveUpdateSearch) = !GVAR(liveUpdateSearch);
|
||||||
|
|
||||||
|
private _display = ctrlParent _ctrl;
|
||||||
|
private _color = if (GVAR(liveUpdateSearch)) then { [0,1,0,0.5] } else { [0,0,0,0.5] };
|
||||||
|
(_display displayCtrl IDC_leftSearchbarButton) ctrlSetBackgroundColor _color;
|
||||||
|
(_display displayCtrl IDC_rightSearchbarButton) ctrlSetBackgroundColor _color;
|
@ -7,6 +7,7 @@
|
|||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Arsenal display <DISPLAY>
|
* 0: Arsenal display <DISPLAY>
|
||||||
* 1: Searchbar control <CONTROL>
|
* 1: Searchbar control <CONTROL>
|
||||||
|
* 2: Animate panel refresh <BOOL> (default: true)
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
@ -14,7 +15,7 @@
|
|||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_display", "_control"];
|
params ["_display", "_control", ["_animate", true]];
|
||||||
|
|
||||||
// Have to use toLower here and displayName to handle non-ANSI characters
|
// Have to use toLower here and displayName to handle non-ANSI characters
|
||||||
private _searchString = toLower ctrlText _control;
|
private _searchString = toLower ctrlText _control;
|
||||||
@ -28,7 +29,7 @@ if (_searchString != "") then {
|
|||||||
if ((ctrlIDC _control) == IDC_rightSearchbar) then {
|
if ((ctrlIDC _control) == IDC_rightSearchbar) then {
|
||||||
// Don't refill if there is no need
|
// Don't refill if there is no need
|
||||||
if (GVAR(lastSearchTextRight) != "" && {(_searchString find GVAR(lastSearchTextRight)) != 0}) then {
|
if (GVAR(lastSearchTextRight) != "" && {(_searchString find GVAR(lastSearchTextRight)) != 0}) then {
|
||||||
[_display, _display displayCtrl GVAR(currentRightPanel)] call FUNC(fillRightPanel);
|
[_display, _display displayCtrl GVAR(currentRightPanel), _animate] call FUNC(fillRightPanel);
|
||||||
};
|
};
|
||||||
|
|
||||||
GVAR(lastSearchTextRight) = _searchString;
|
GVAR(lastSearchTextRight) = _searchString;
|
||||||
@ -127,7 +128,7 @@ if ((ctrlIDC _control) == IDC_rightSearchbar) then {
|
|||||||
// Left panel search bar
|
// Left panel search bar
|
||||||
// Don't refill if there is no need
|
// Don't refill if there is no need
|
||||||
if (GVAR(lastSearchTextLeft) != "" && {(_searchString find GVAR(lastSearchTextLeft)) != 0}) then {
|
if (GVAR(lastSearchTextLeft) != "" && {(_searchString find GVAR(lastSearchTextLeft)) != 0}) then {
|
||||||
[_display, _display displayCtrl GVAR(currentLeftPanel)] call FUNC(fillLeftPanel);
|
[_display, _display displayCtrl GVAR(currentLeftPanel), _animate] call FUNC(fillLeftPanel);
|
||||||
};
|
};
|
||||||
|
|
||||||
GVAR(lastSearchTextLeft) = _searchString;
|
GVAR(lastSearchTextLeft) = _searchString;
|
||||||
|
@ -104,6 +104,7 @@ GVAR(currentLeftPanel) = nil;
|
|||||||
GVAR(currentRightPanel) = nil;
|
GVAR(currentRightPanel) = nil;
|
||||||
GVAR(leftSearchbarFocus) = nil;
|
GVAR(leftSearchbarFocus) = nil;
|
||||||
GVAR(rightSearchbarFocus) = nil;
|
GVAR(rightSearchbarFocus) = nil;
|
||||||
|
GVAR(liveUpdateSearch) = nil;
|
||||||
GVAR(shiftState) = nil;
|
GVAR(shiftState) = nil;
|
||||||
GVAR(leftTabFocus) = nil;
|
GVAR(leftTabFocus) = nil;
|
||||||
GVAR(rightTabFocus) = nil;
|
GVAR(rightTabFocus) = nil;
|
||||||
|
@ -230,6 +230,7 @@ GVAR(currentLeftPanel) = nil;
|
|||||||
GVAR(currentRightPanel) = nil;
|
GVAR(currentRightPanel) = nil;
|
||||||
GVAR(leftSearchbarFocus) = false;
|
GVAR(leftSearchbarFocus) = false;
|
||||||
GVAR(rightSearchbarFocus) = false;
|
GVAR(rightSearchbarFocus) = false;
|
||||||
|
GVAR(liveUpdateSearch) = false;
|
||||||
GVAR(leftTabFocus) = false;
|
GVAR(leftTabFocus) = false;
|
||||||
GVAR(rightTabFocus) = false;
|
GVAR(rightTabFocus) = false;
|
||||||
GVAR(rightTabLnBFocus) = false;
|
GVAR(rightTabLnBFocus) = false;
|
||||||
|
@ -1644,5 +1644,8 @@
|
|||||||
<Korean>모든 아이템을 표시하거나 즐겨찾기를 표시할 때 전환합니다\nShift 키를 누른 상태에서 두 번 클릭하여 아이템을 추가하거나 제거합니다.</Korean>
|
<Korean>모든 아이템을 표시하거나 즐겨찾기를 표시할 때 전환합니다\nShift 키를 누른 상태에서 두 번 클릭하여 아이템을 추가하거나 제거합니다.</Korean>
|
||||||
<French>Change entre l'affichage de tous les éléments ou de vos favoris.\nDouble-cliquez en maintenant la touche Maj enfoncée pour ajouter ou supprimer un élément.</French>
|
<French>Change entre l'affichage de tous les éléments ou de vos favoris.\nDouble-cliquez en maintenant la touche Maj enfoncée pour ajouter ou supprimer un élément.</French>
|
||||||
</Key>
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Arsenal_buttonSearchTooltip">
|
||||||
|
<English>Search\nCTRL + Click to enable live results</English>
|
||||||
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -638,6 +638,7 @@ class GVAR(display) {
|
|||||||
onSetFocus = QUOTE(GVAR(leftSearchbarFocus) = true);
|
onSetFocus = QUOTE(GVAR(leftSearchbarFocus) = true);
|
||||||
onKillFocus = QUOTE(GVAR(leftSearchbarFocus) = false);
|
onKillFocus = QUOTE(GVAR(leftSearchbarFocus) = false);
|
||||||
onMouseButtonClick = QUOTE([ARR_3(ctrlParent (_this select 0), _this select 0, _this select 1)] call FUNC(clearSearchbar));
|
onMouseButtonClick = QUOTE([ARR_3(ctrlParent (_this select 0), _this select 0, _this select 1)] call FUNC(clearSearchbar));
|
||||||
|
onEditChanged = QUOTE(call FUNC(handleSearchInputChanged));
|
||||||
x = QUOTE(safezoneX + 13 * GRID_W);
|
x = QUOTE(safezoneX + 13 * GRID_W);
|
||||||
y = QUOTE(safezoneY + 1.8 * GRID_H);
|
y = QUOTE(safezoneY + 1.8 * GRID_H);
|
||||||
w = QUOTE(74 * GRID_W);
|
w = QUOTE(74 * GRID_W);
|
||||||
@ -647,8 +648,10 @@ class GVAR(display) {
|
|||||||
class leftSearchbarButton: ctrlButtonPicture {
|
class leftSearchbarButton: ctrlButtonPicture {
|
||||||
idc = IDC_leftSearchbarButton;
|
idc = IDC_leftSearchbarButton;
|
||||||
text = "\a3\Ui_f\data\GUI\RscCommon\RscButtonSearch\search_start_ca.paa";
|
text = "\a3\Ui_f\data\GUI\RscCommon\RscButtonSearch\search_start_ca.paa";
|
||||||
|
tooltip = CSTRING(buttonSearchTooltip);
|
||||||
colorBackground[] = {0,0,0,0.5};
|
colorBackground[] = {0,0,0,0.5};
|
||||||
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), ctrlParent (_this select 0) displayCtrl IDC_leftSearchbar)] call FUNC(handleSearchbar));
|
onButtonClick = QUOTE([ARR_2(ctrlParent (_this select 0), ctrlParent (_this select 0) displayCtrl IDC_leftSearchbar)] call FUNC(handleSearchbar));
|
||||||
|
onMouseButtonDown = QUOTE(call FUNC(handleSearchModeToggle));
|
||||||
x = QUOTE(safezoneX + 87 * GRID_W);
|
x = QUOTE(safezoneX + 87 * GRID_W);
|
||||||
y = QUOTE(safezoneY + 1.8 * GRID_H);
|
y = QUOTE(safezoneY + 1.8 * GRID_H);
|
||||||
w = QUOTE(6 * GRID_W);
|
w = QUOTE(6 * GRID_W);
|
||||||
|
Loading…
Reference in New Issue
Block a user