]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c
First working version of an editable Connect/Add-to-favorites feature
[divverent/nexuiz.git] / data / qcsrc / menu / nexuiz / dialog_multiplayer_join.c
1 #ifdef INTERFACE
2 CLASS(NexuizServerListTab) EXTENDS(NexuizTab)
3         METHOD(NexuizServerListTab, fill, void(entity))
4         ATTRIB(NexuizServerListTab, title, string, "Join")
5         ATTRIB(NexuizServerListTab, intendedWidth, float, 0.9)
6         ATTRIB(NexuizServerListTab, rows, float, 22)
7         ATTRIB(NexuizServerListTab, columns, float, 6.5)
8 ENDCLASS(NexuizServerListTab)
9 entity makeNexuizServerListTab();
10 void Join_Connect(entity btn, entity me);
11 void Join_AddToFavorites(entity btn, entity me);
12 #endif
13
14 #ifdef IMPLEMENTATION
15
16 entity makeNexuizServerListTab()
17 {
18         entity me;
19         me = spawnNexuizServerListTab();
20         me.configureDialog(me);
21         return me;
22 }
23 void fillNexuizServerListTab(entity me)
24 {
25         entity e, slist, btn;
26
27         slist  = makeNexuizServerList();
28
29         me.TR(me);
30                 me.TD(me, 1, 0.5, e = makeNexuizTextLabel(0, "Filter:"));
31                 me.TD(me, 1, 0.5, btn = makeNexuizButton("Clear", '0 0 0'));
32                         btn.onClick = InputBox_Clear_Click;
33                 me.TD(me, 1, me.columns - 2.5, e = makeNexuizInputBox(0, string_null));
34                         e.onChange = ServerList_Filter_Change;
35                         e.onChangeEntity = slist;
36                         btn.onClickEntity = e;
37                         slist.controlledTextbox = e;
38                 me.TD(me, 1, 0.5, e = makeNexuizCheckBox(0, "menu_slist_showempty", "Empty"));
39                         slist.filterShowEmpty = e.checked;
40                         e.onClickEntity = slist;
41                         e.onClick = ServerList_ShowEmpty_Click;
42                 me.TD(me, 1, 0.5, e = makeNexuizCheckBox(0, "menu_slist_showfull", "Full"));
43                         slist.filterShowFull = e.checked;
44                         e.onClickEntity = slist;
45                         e.onClick = ServerList_ShowFull_Click;
46                 me.TD(me, 1, 0.5, e = makeNexuizCheckBox(0, "net_slist_pause", "Pause"));
47
48         me.TR(me);
49                 me.TD(me, 1, 1, slist.sortButton1 = makeNexuizButton(string_null, '0 0 0'));
50                 me.TD(me, 1, 1, slist.sortButton2 = makeNexuizButton(string_null, '0 0 0'));
51                 me.TD(me, 1, 1, slist.sortButton3 = makeNexuizButton(string_null, '0 0 0'));
52                 me.TD(me, 1, 1, slist.sortButton4 = makeNexuizButton(string_null, '0 0 0'));
53                 me.TD(me, 1, 1, slist.sortButton5 = makeNexuizButton(string_null, '0 0 0'));
54         me.TR(me);
55                 me.TD(me, me.rows - 5, me.columns, slist);
56                 
57         me.gotoRC(me, me.rows - 3, 0);
58                 me.TD(me, 1, me.columns, e = makeNexuizButton("Join!", '0 0 0'));
59                         e.onClick = ServerList_Connect_Click;
60                         e.onClickEntity = slist;
61                         slist.connectButton = e;
62
63         me.TR(me);
64
65         me.TR(me);
66                 me.TD(me, 1, 1.8, e = makeNexuizTextLabel(0, "Address (Name or IP[:Port]):"));
67                 me.TD(me, 1, 0.5, btn = makeNexuizButton("Clear", '0 0 0'));
68                         btn.onClick = InputBox_Clear_Click;
69                 me.TD(me, 1, me.columns - 4.3, e = makeNexuizInputBox(0, string_null));
70                         btn.onClickEntity = e;
71                 me.TD(me, 1, 0.8, btn = makeNexuizButton("Connect", '0 0 0'));
72                         btn.onClick = Join_Connect;
73                         btn.onClickEntity = e;
74                 me.TD(me, 1, 1.2, btn = makeNexuizButton("Add to favorites", '0 0 0'));
75                         btn.onClick = Join_AddToFavorites;
76                         btn.onClickEntity = e;
77 }
78 void Join_Connect(entity btn, entity me)
79 {
80         if (me.text)
81         {
82                 localcmd("\nconnect \"", me.text, "\"\n");
83         }
84 }
85 void Join_AddToFavorites(entity btn, entity me)
86 {
87         ServerList_AddRemoveFavorites(me.text, true, true);
88 }
89 #endif