Move ip to str helper to utils, exit menu when selected + various fixes

This commit is contained in:
simon.kagstrom 2010-02-20 14:03:14 +00:00
parent 129bfe26e9
commit a610759cd0
4 changed files with 33 additions and 30 deletions

View File

@ -76,6 +76,7 @@ public:
TheC64->network_connection_type = CONNECT;
TheC64->network->ConnectToBroker();
}
Gui::gui->exitMenu();
break;
case 6:
printf("Send message NYI\n"); // FIXME! Send message

View File

@ -10,29 +10,6 @@
class NetworkUserView;
const char *ip_to_str(uint8 *ip_in)
{
char *out = (char *)xmalloc(24);
int ip[4];
for (int i = 0; i < 4; i++)
{
char tmp[3];
char *endp;
tmp[0] = ip_in[i * 2];
tmp[1] = ip_in[i * 2 + 1];
tmp[2] = '\0';
ip[i] = strtoul(tmp, &endp, 16);
panic_if (endp == (const char*)tmp,
"Could not convert ip to str.\n");
}
sprintf(out, "%d.%d.%d.%d", ip[3], ip[2], ip[1], ip[0]);
return out;
}
class PeerInfo
{
public:
@ -53,6 +30,7 @@ public:
{
SDL_FreeSurface(this->scr);
free((void*)this->name);
free((void*)this->hostname);
}
SDL_Surface *getScreenshot()
@ -193,14 +171,15 @@ public:
this->freePeers();
this->n_peers = peerList->n_peers;
messages = (const char **)xmalloc( (peerList->n_peers + 1) *
messages = (const char **)xmalloc( (peerList->n_peers + 2) *
sizeof(const char*));
this->peers = (PeerInfo**)xrealloc((void*)this->peers,
peerList->n_peers * sizeof(PeerInfo*));
messages[0] = (const char *)xstrdup("None");
for (unsigned i = 0; i < peerList->n_peers; i++)
{
messages[i] = (const char*)xstrdup((char*)ps->name);
messages[i + 1] = (const char*)xstrdup((char*)ps->name);
this->peers[i] = new PeerInfo(&peerList->peers[i]);
}
this->setText(messages);
@ -218,16 +197,15 @@ public:
}
else
TheC64->network->CancelPeerSelection();
Gui::gui->popView();
Gui::gui->exitMenu();
}
virtual void hoverCallback(int which)
{
panic_if(which >= (int)this->n_peers,
"Which is impossibly large: %d vs %d\n",
which, this->n_peers);
if (which <= 0 || which > (int)this->n_peers)
return;
this->infoBox->setPeerInfo(this->peers[which]);
this->infoBox->setPeerInfo(this->peers[which - 1]);
}
virtual void escapeCallback(int which)

View File

@ -320,3 +320,25 @@ void highlight_background(SDL_Surface *where, Font *font,
dst = (SDL_Rect){bg_x_end, bg_y_start, 0,0};
SDL_BlitSurface(bg_right, NULL, where, &dst);
}
const char *ip_to_str(uint8_t *ip_in)
{
char *out = (char *)xmalloc(24);
int ip[4];
for (int i = 0; i < 4; i++)
{
char tmp[3];
char *endp;
tmp[0] = ip_in[i * 2];
tmp[1] = ip_in[i * 2 + 1];
tmp[2] = '\0';
ip[i] = strtoul(tmp, &endp, 16);
panic_if (endp == (const char*)tmp,
"Could not convert ip to str.\n");
}
sprintf(out, "%d.%d.%d.%d", ip[3], ip[2], ip[1], ip[0]);
return out;
}

View File

@ -84,4 +84,6 @@ void highlight_background(SDL_Surface *where, Font *font,
SDL_Surface *bg_left, SDL_Surface *bg_middle, SDL_Surface *bg_right,
int x, int y, int w, int h);
const char *ip_to_str(uint8_t *ip_in);
#endif /* __UTILS_H__ */