Add alternative views in serverbrowser and improve favourites

Alternative views in the serverbrowser are implemented with use favourites.
Categories (names) of favourite servers, which will be displayed on the
views, have to be included in "serverbrowseraltviews" alias (accessible
in menu).
Switching between views is possible with use Alt + Mouse wheel and
Alt + Up/Down (or eventually "[" and "]", if they are dedicated keys
on your keyboard).

The commit also:
1. adds MATCH category to favourites;
2. shows category name in settings of favourites;
3. shows weights in serverbrowser instead of favourites image,
when showweights = 1;
4. cleans up some tabs.
This commit is contained in:
aurhat
2014-11-11 21:07:19 +01:00
parent 170f377262
commit b6a5418c24
4 changed files with 55 additions and 6 deletions
+6
View File
@@ -94,6 +94,12 @@ sbfavourite_MODE_alpha = 0
sbfavourite_MODE_weight = 1
sbfavourite_MODE_keys = "#42" // automatically add servers playing towel mode
addfavcategory MATCH
sbfavourite_MATCH_desc = "Preferred match servers"
sbfavourite_MATCH_alpha = 0
sbfavourite_MATCH_weight = 1
sbfavourite_MATCH_ignore = 1
addfavcategory SEARCH
sbfavourite_SEARCH_desc = "Server search result"
sbfavourite_SEARCH_tag = "\f9Result:"
+14 -5
View File
@@ -160,6 +160,7 @@ menuitem [Search for servers...] [ showmenu [search se
menuitem [F4: Edit favourites...] [ showmenu [edit favourites] ]
menuitem [F5: Update the serverlist from the masterserver] [ updatefrommaster 1; closemenu [serverbrowser help] ]
menuitem [F9: Get additional server information] [ showmenu serverinfo ]
menuitem [Edit alternative views in serverbrowser...] [ showmenu [serverbrowser alternative views] ]
menuitem [] -1
menuitem [Options:] -1
menuitemcheckbox [F6: Reverse the sort order:] "$serversortdir" [ serversortdir $arg1 ]
@@ -197,6 +198,8 @@ const addfavcatmenu [
menuitemvar (concatword "result $" sbfavourite_ $arg1 _desc " (concatword < s $" sbfavourite_ $arg1 _tag " r>)") (concatword "showmenu [favourites " $i "]")
]
newmenu (concat favourites $i)
menuitemvar ( concatword "concat " "Category name: " (c 2) (at (listfavcats) (- $i 1)) )
menuitem [] -1
menuitemtextinput [Tag: ] (concatword "result $" sbfavourite_ $arg1 _tag) (concatword sbfavourite_ $arg1 _tag " = $arg1") [] 15
menuitemtextinput [Description: ] (concatword "result $" sbfavourite_ $arg1 _desc) (concatword sbfavourite_ $arg1 _desc " = $arg1") [] 45
menuitem [] -1
@@ -215,10 +218,10 @@ const addfavcatmenu [
]
const addallfavcatmenus [
newmenu [serverbrowser help]
menuitem [] -1
menuitem [Keys to add/remove servers from categories:] -1
loop ii (listlen (listfavcats)) [ addfavcatmenu (at (listfavcats) $ii) ]
newmenu [serverbrowser help]
menuitem [] -1
menuitem [Keys to add/remove servers from categories:] -1
loop ii (listlen (listfavcats)) [ addfavcatmenu (at (listfavcats) $ii) ]
]
lastsearchname = []
@@ -229,11 +232,17 @@ menuitem " 2 [ Search ]" [ closemenu [search player]; searchnickname $la
menuinitselection 1
newmenu [search server]
menuitemtextinput [ Search for server: ] "result $sbfavourite_SEARCH_keys" [ sbfavourite_SEARCH_keys = $arg1 ]
menuitem " 2 [ Search ]" [ showonlyfavourites (addfavcategory SEARCH); showmenu server ] [ showonlyfavourites 0 ]
menuinitselection 1
newmenu [serverbrowser alternative views]
menuitem [Alt + Mouse wheel (Alt + Up/Down) toggles views in serverbrowser.] -1
menuitem [] -1
menuitemtextinput [Categories of favourites in alternative views: ] [getalias serverbrowseraltviews] [alias serverbrowseraltviews $arg1] [] 255
menuitem [(type just names of categories, and not tags).] -1
menuinitselection 2
newmenu getmap
menuitem [ This server is using a different version of this map...] -1
menuitem [] -1
+2
View File
@@ -1092,12 +1092,14 @@ bool menukey(int code, bool isdown, int unicode, SDLMod mod)
case SDLK_UP:
case SDL_AC_BUTTON_WHEELUP:
if(iskeypressed(SDLK_LCTRL)) return menukey(SDLK_LEFT, isdown, 0);
if(iskeypressed(SDLK_LALT)) return menukey(SDLK_RIGHTBRACKET, isdown, 0);
if(!curmenu->allowinput) return false;
menusel--;
break;
case SDLK_DOWN:
case SDL_AC_BUTTON_WHEELDOWN:
if(iskeypressed(SDLK_LCTRL)) return menukey(SDLK_RIGHT, isdown, 0);
if(iskeypressed(SDLK_LALT)) return menukey(SDLK_LEFTBRACKET, isdown, 0);
if(!curmenu->allowinput) return false;
menusel++;
break;
+33 -1
View File
@@ -877,6 +877,30 @@ const char *favcatcheck(serverinfo &si, const char *ckeys, char *autokeys = NULL
return res ? nkeys : NULL;
}
void serverbrowseralternativeviews(int shiftdirection)
{
const char *ckeys = getalias("serverbrowseraltviews");
if(!ckeys) return;
const char *sep = " \t\n\r";
char *keys = newstring(ckeys), *k = strtok(keys, sep);
vector<int> cats;
cats.add(0);
while(k)
{
loopv(favcats) if(!strcmp(favcats[i], k)) cats.add(i + 1);
k = strtok(NULL, sep);
}
delete[] keys;
if(cats.length())
{
loopv(cats)
{
if(cats[i] == showonlyfavourites) { showonlyfavourites = cats[(i + shiftdirection + cats.length()) % cats.length()]; return; }
}
}
showonlyfavourites = 0;
}
vector<const char *> favcattags;
bool assignserverfavourites()
@@ -1049,7 +1073,7 @@ void refreshservers(void *menu, bool init)
}
else
{
if(!hidefavicons && showfavtag && si.favcat > -1) favimage = getalias(favcatargname(favcats[si.favcat], FC_IMAGE));
if(!hidefavicons && !showweights && showfavtag && si.favcat > -1) favimage = getalias(favcatargname(favcats[si.favcat], FC_IMAGE));
filterrichtext(text, si.favcat > -1 && !favimage ? favcattags[si.favcat] : "");
if(showweights) concatformatstring(text, "(%d)", si.weight);
formatstring(si.full)(showfavtag ? (favimage ? "\t" : "\fs%s\fr\t") : "", text);
@@ -1189,6 +1213,14 @@ bool serverskey(void *menu, int code, bool isdown, int unicode)
serversort = (serversort+1) % NUMSERVSORT;
return true;
case SDLK_LEFTBRACKET:
serverbrowseralternativeviews(-1);
return true;
case SDLK_RIGHTBRACKET:
serverbrowseralternativeviews(1);
return true;
case SDLK_F5:
updatefrommaster(1);
return true;