| 1167 | } |
| 1168 | |
| 1169 | bool serverskey(void *menu, int code, bool isdown) |
| 1170 | { |
| 1171 | int fk[] = { SDLK_1, SDLK_2, SDLK_3, SDLK_4, SDLK_5, SDLK_6, SDLK_7, SDLK_8, SDLK_9, SDLK_0 }, gogetem = 1; |
| 1172 | if(!isdown) return false; |
| 1173 | loopi(sizeof(fk)/sizeof(fk[0])) if(code == fk[i] && favcats.inrange(i)) |
| 1174 | { |
| 1175 | int sel = ((gmenu *)menu)->menusel; |
| 1176 | loopvj(servers) if(menu && (servers[j]->menuline_from <= sel && servers[j]->menuline_to > sel)) |
| 1177 | { |
| 1178 | string ak; ak[0] = '\0'; |
| 1179 | const char *keyalias = favcatargname(favcats[i], FC_KEYS), *key = getalias(keyalias), *rest = favcatcheck(*servers[j], key, ak), *desc = getalias(favcatargname(favcats[i], FC_DESC)); |
| 1180 | if(!desc) desc = ""; |
| 1181 | if(*ak) |
| 1182 | { // server was automatically added to this favourite group, don't remove |
| 1183 | conoutf("server \"\fs%s\fr\" is in category '\fs%s\fr' because of key '%s', please remove manually", servers[j]->sdesc, desc, ak); |
| 1184 | } |
| 1185 | else if(rest) |
| 1186 | { // remove from favourite group |
| 1187 | conoutf("removing server \"\fs%s\fr\" from favourites category '\fs%s\fr' (rest '%s')", servers[j]->sdesc, desc, rest); |
| 1188 | alias(keyalias, rest); |
| 1189 | } |
| 1190 | else |
| 1191 | { // add IP:port to group |
| 1192 | defformatstring(text)("%s:%d", servers[j]->name, servers[j]->port); |
| 1193 | if(key && *key) |
| 1194 | { |
| 1195 | char *newkey = newstring(key, strlen(text) + 1 + strlen(key)); |
| 1196 | strcat(newkey, " "); |
| 1197 | strcat(newkey, text); |
| 1198 | alias(keyalias, newkey); |
| 1199 | delete[] newkey; |
| 1200 | } |
| 1201 | else alias(keyalias, text); |
| 1202 | conoutf("adding server \"\fs%s\fr\" to favourites category '\fs%s\fr' (new '%s')", servers[j]->sdesc, desc, getalias(keyalias)); |
| 1203 | } |
| 1204 | return true; |
| 1205 | } |
| 1206 | } |
| 1207 | switch(code) |
| 1208 | { |
| 1209 | case SDLK_LEFT: |
| 1210 | serversort = (serversort+NUMSERVSORT-1) % NUMSERVSORT; |
| 1211 | return true; |
| 1212 | |
| 1213 | case SDLK_RIGHT: |
| 1214 | serversort = (serversort+1) % NUMSERVSORT; |
| 1215 | return true; |
| 1216 | |
| 1217 | case SDLK_LEFTBRACKET: |
| 1218 | serverbrowseralternativeviews(-1); |
| 1219 | return true; |
| 1220 | |
| 1221 | case SDLK_RIGHTBRACKET: |
| 1222 | serverbrowseralternativeviews(1); |
| 1223 | return true; |
| 1224 | |
| 1225 | case SDLK_F5: |
| 1226 | updatefrommaster(&gogetem); |
nothing calls this directly
no test coverage detected