1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-06-29 13:27:46 +02:00

use API function for friend count instead of global var

This commit is contained in:
Jfreegman 2014-02-07 18:44:10 -05:00
parent da99d776df
commit 42cd80efe9
6 changed files with 18 additions and 17 deletions

View File

@ -99,7 +99,7 @@ static void chat_onAction(ToxWindow *self, Tox *m, int num, uint8_t *action, uin
alert_window(self, WINDOW_ALERT_1, true);
}
static void chat_onNickChange(ToxWindow *self, int num, uint8_t *nick, uint16_t len)
static void chat_onNickChange(ToxWindow *self, Tox *m, int num, uint8_t *nick, uint16_t len)
{
if (self->num != num)
return;

View File

@ -20,7 +20,6 @@ extern char *DATA_FILE;
extern ToxWindow *prompt;
static int max_friends_index = 0; /* marks the index of the last friend in friends array */
static int num_friends = 0;
static int num_selected = 0;
ToxicFriend friends[MAX_FRIENDS_NUM];
@ -40,7 +39,7 @@ static int index_name_cmp(const void *n1, const void *n2)
}
/* sorts friendlist_index first by connection status then alphabetically */
void sort_friendlist_index(void)
void sort_friendlist_index(Tox *m)
{
int i;
int n = 0;
@ -50,7 +49,7 @@ void sort_friendlist_index(void)
friendlist_index[n++] = friends[i].num;
}
qsort(friendlist_index, num_friends, sizeof(int), index_name_cmp);
qsort(friendlist_index, tox_count_friendlist(m), sizeof(int), index_name_cmp);
}
static void friendlist_onMessage(ToxWindow *self, Tox *m, int num, uint8_t *str, uint16_t len)
@ -83,10 +82,10 @@ static void friendlist_onConnectionChange(ToxWindow *self, Tox *m, int num, uint
return;
friends[num].online = status == 1 ? true : false;
sort_friendlist_index();
sort_friendlist_index(m);
}
static void friendlist_onNickChange(ToxWindow *self, int num, uint8_t *str, uint16_t len)
static void friendlist_onNickChange(ToxWindow *self, Tox *m, int num, uint8_t *str, uint16_t len)
{
if (len > TOX_MAX_NAME_LENGTH || num >= max_friends_index)
return;
@ -95,7 +94,7 @@ static void friendlist_onNickChange(ToxWindow *self, int num, uint8_t *str, uint
len = strlen(str) + 1;
memcpy(friends[num].name, str, len);
friends[num].namelength = len;
sort_friendlist_index();
sort_friendlist_index(m);
}
static void friendlist_onStatusChange(ToxWindow *self, Tox *m, int num, TOX_USERSTATUS status)
@ -139,13 +138,11 @@ static void friendlist_onFriendAdded(ToxWindow *self, Tox *m, int num, bool sort
friends[i].namelength = strlen(friends[i].name) + 1;
}
++num_friends;
if (i == max_friends_index)
++max_friends_index;
if (sort)
sort_friendlist_index();
sort_friendlist_index(m);
return;
}
@ -203,6 +200,8 @@ static void friendlist_onGroupInvite(ToxWindow *self, Tox *m, int num, uint8_t *
static void select_friend(ToxWindow *self, Tox *m, wint_t key)
{
int num_friends = tox_count_friendlist(m);
if (key == KEY_UP) {
if (--num_selected < 0)
num_selected = num_friends - 1;
@ -224,19 +223,20 @@ static void delete_friend(Tox *m, ToxWindow *self, int f_num, wint_t key)
}
max_friends_index = i;
--num_friends;
/* make sure num_selected stays within num_friends range */
int num_friends = tox_count_friendlist(m);
if (num_friends && num_selected == num_friends)
--num_selected;
sort_friendlist_index();
sort_friendlist_index(m);
store_data(m, DATA_FILE);
}
static void friendlist_onKey(ToxWindow *self, Tox *m, wint_t key)
{
if (num_friends == 0)
if (tox_count_friendlist(m) == 0)
return;
int f = friendlist_index[num_selected];
@ -273,6 +273,7 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m)
getmaxyx(self->window, y2, x2);
bool fix_statuses = x2 != self->x; /* true if window x axis has changed */
int num_friends = tox_count_friendlist(m);
wattron(self->window, COLOR_PAIR(CYAN));
wprintw(self->window, " Open a chat window with the");

View File

@ -22,6 +22,6 @@ void disable_chatwin(int f_num);
int get_friendnum(uint8_t *name);
/* sorts friendlist_index first by connection status then alphabetically */
void sort_friendlist_index(void);
void sort_friendlist_index(Tox *m);
#endif /* end of include guard: FRIENDLIST_H_53I41IM */

View File

@ -547,7 +547,7 @@ int main(int argc, char *argv[])
}
prompt_init_statusbar(prompt, m);
sort_friendlist_index();
sort_friendlist_index(m);
while (true) {
do_tox(m, prompt);

View File

@ -72,7 +72,7 @@ struct ToxWindow {
void(*onFriendAdded)(ToxWindow *, Tox *, int, bool);
void(*onConnectionChange)(ToxWindow *, Tox *, int, uint8_t);
void(*onMessage)(ToxWindow *, Tox *, int, uint8_t *, uint16_t);
void(*onNickChange)(ToxWindow *, int, uint8_t *, uint16_t);
void(*onNickChange)(ToxWindow *, Tox *, int, uint8_t *, uint16_t);
void(*onStatusChange)(ToxWindow *, Tox *, int, TOX_USERSTATUS);
void(*onStatusMessageChange)(ToxWindow *, int, uint8_t *, uint16_t);
void(*onAction)(ToxWindow *, Tox *, int, uint8_t *, uint16_t);

View File

@ -66,7 +66,7 @@ void on_nickchange(Tox *m, int friendnumber, uint8_t *string, uint16_t length, v
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onNickChange != NULL)
windows[i].onNickChange(&windows[i], friendnumber, string, length);
windows[i].onNickChange(&windows[i], m, friendnumber, string, length);
}
if (store_data(m, DATA_FILE))