Add an Infotext to the login screen. This modifies lib/widget/label.*!
parent
204eba3c3d
commit
f23a94d644
|
@ -50,6 +50,47 @@ W_LABEL::W_LABEL(W_LABINIT const *init)
|
|||
if (init->pText)
|
||||
{
|
||||
sstrcpy(aText, init->pText);
|
||||
|
||||
// Limit the wordwrap feature to
|
||||
// widgets using "labelDisplay" as output function.
|
||||
if (init->pDisplay == labelDisplay)
|
||||
{
|
||||
iV_SetFont(FontID);
|
||||
QStringList words = QString(init->pText).split(" ");
|
||||
QStringList line;
|
||||
unsigned int wsize, lsize = 0;
|
||||
foreach(const QString &word, words)
|
||||
{
|
||||
wsize = iV_GetTextWidth(word.toUtf8().constData());
|
||||
if (lsize + wsize >= width)
|
||||
{
|
||||
if (line.isEmpty())
|
||||
{
|
||||
// Let iv_DrawText handle to long lines.
|
||||
lines << word;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Append current line and create a new one with that word.
|
||||
lines << line.join(" ");
|
||||
line.clear();
|
||||
line << word;
|
||||
lsize = wsize;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
line << word;
|
||||
lsize += wsize;
|
||||
}
|
||||
}
|
||||
if (!line.isEmpty())
|
||||
{
|
||||
lines << line.join(" ");
|
||||
}
|
||||
|
||||
lines = lines;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -91,7 +132,7 @@ void labelFree(W_LABEL *psWidget)
|
|||
/* label display function */
|
||||
void labelDisplay(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pColours)
|
||||
{
|
||||
SDWORD fx,fy, fw;
|
||||
unsigned int fx,fy, fw;
|
||||
W_LABEL *psLabel;
|
||||
enum iV_fonts FontID;
|
||||
|
||||
|
@ -100,22 +141,30 @@ void labelDisplay(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pC
|
|||
|
||||
iV_SetFont(FontID);
|
||||
iV_SetTextColour(pColours[WCOL_TEXT]);
|
||||
if (psLabel->style & WLAB_ALIGNCENTRE)
|
||||
|
||||
// Draw each line.
|
||||
int i = 0;
|
||||
foreach(const QString &line, psLabel->lines)
|
||||
{
|
||||
fw = iV_GetTextWidth(psLabel->aText);
|
||||
fx = xOffset + psLabel->x + (psLabel->width - fw) / 2;
|
||||
if (psLabel->style & WLAB_ALIGNCENTRE)
|
||||
{
|
||||
fx = xOffset + psLabel->x + (psLabel->width - iV_GetTextWidth(line.toUtf8().constData())) / 2;
|
||||
}
|
||||
else if (psLabel->style & WLAB_ALIGNRIGHT)
|
||||
{
|
||||
fw = iV_GetTextWidth(line.toUtf8().constData());
|
||||
fx = xOffset + psLabel->x + psLabel->width - fw;
|
||||
}
|
||||
else
|
||||
{
|
||||
fx = xOffset + psLabel->x;
|
||||
}
|
||||
|
||||
fy = yOffset + psLabel->y + (psLabel->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase() + (iV_GetTextLineSize() * i);
|
||||
iV_DrawText(line.toUtf8().constData(),fx,fy);
|
||||
|
||||
i++;
|
||||
}
|
||||
else if (psLabel->style & WLAB_ALIGNRIGHT)
|
||||
{
|
||||
fw = iV_GetTextWidth(psLabel->aText);
|
||||
fx = xOffset + psLabel->x + psLabel->width - fw;
|
||||
}
|
||||
else
|
||||
{
|
||||
fx = xOffset + psLabel->x;
|
||||
}
|
||||
fy = yOffset + psLabel->y + (psLabel->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase();
|
||||
iV_DrawText(psLabel->aText,fx,fy);
|
||||
}
|
||||
|
||||
/* Respond to a mouse moving over a label */
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
#ifndef __INCLUDED_LIB_WIDGET_LABEL_H__
|
||||
#define __INCLUDED_LIB_WIDGET_LABEL_H__
|
||||
|
||||
#include <QtCore/QStringList>
|
||||
|
||||
#include "widget.h"
|
||||
#include "widgbase.h"
|
||||
#include "lib/ivis_opengl/textdraw.h"
|
||||
|
@ -33,6 +35,7 @@ struct W_LABEL : public WIDGET
|
|||
W_LABEL(W_LABINIT const *init);
|
||||
|
||||
char aText[WIDG_MAXSTR]; // Text on the label
|
||||
QStringList lines; // Text parsed to list on init.
|
||||
enum iV_fonts FontID;
|
||||
const char *pTip; // The tool tip for the button
|
||||
};
|
||||
|
|
100
src/multiint.cpp
100
src/multiint.cpp
|
@ -1252,8 +1252,8 @@ void startGameFind(void)
|
|||
sFormInit.style = WFORM_PLAIN;
|
||||
sFormInit.x = FRONTEND_BOTFORMX+40;
|
||||
sFormInit.y = 160;
|
||||
sFormInit.width = FRONTEND_TOPFORMW-100;
|
||||
sFormInit.height = FRONTEND_TOPFORMH+80;
|
||||
sFormInit.width = 300;
|
||||
sFormInit.height = FRONTEND_TOPFORMH+120;
|
||||
sFormInit.pDisplay = intOpenPlainForm;
|
||||
// sFormInit.disableChildren = true;
|
||||
widgAddForm(psWScreen, &sFormInit);
|
||||
|
@ -1261,58 +1261,66 @@ void startGameFind(void)
|
|||
addSideText(CON_LOGIN_SIDETEXT, FRONTEND_SIDEX+65, FRONTEND_SIDEY-10, _("LOBBY LOGIN"));
|
||||
|
||||
// Draw username label
|
||||
W_LABINIT sLoginUserLabInit;
|
||||
sLoginUserLabInit.formID = FRONTEND_LOGINFORM;
|
||||
sLoginUserLabInit.id = CON_LOGIN_USER_LABEL;
|
||||
sLoginUserLabInit.style = WLAB_ALIGNCENTRE;
|
||||
sLoginUserLabInit.x = 50;
|
||||
sLoginUserLabInit.y = 50; // 215
|
||||
sLoginUserLabInit.width = CON_SETTINGSWIDTH;
|
||||
sLoginUserLabInit.height = 20;
|
||||
sLoginUserLabInit.pText = _("Username:");
|
||||
sLoginUserLabInit.pDisplay = showPasswordLabel;
|
||||
widgAddLabel(psWScreen, &sLoginUserLabInit);
|
||||
sLabInit.formID = FRONTEND_LOGINFORM;
|
||||
sLabInit.id = CON_LOGIN_USER_LABEL;
|
||||
sLabInit.style = WLAB_ALIGNCENTRE;
|
||||
sLabInit.x = 50;
|
||||
sLabInit.y = 50;
|
||||
sLabInit.width = 200;
|
||||
sLabInit.height = 20;
|
||||
sLabInit.pText = _("Username:");
|
||||
sLabInit.pDisplay = showPasswordLabel;
|
||||
widgAddLabel(psWScreen, &sLabInit);
|
||||
|
||||
// Draw username entry box
|
||||
W_EDBINIT sLoginUserEdInit;
|
||||
sLoginUserEdInit.formID = FRONTEND_LOGINFORM;
|
||||
sLoginUserEdInit.id = CON_LOGIN_USER;
|
||||
sLoginUserEdInit.x = 50;
|
||||
sLoginUserEdInit.y = 55;
|
||||
sLoginUserEdInit.width = 280;
|
||||
sLoginUserEdInit.height = 20;
|
||||
sLoginUserEdInit.pText = lobbyUser.toUtf8().constData();
|
||||
sLoginUserEdInit.pBoxDisplay = displayPasswordEditBox;
|
||||
widgAddEditBox(psWScreen, &sLoginUserEdInit);
|
||||
sEdInit.formID = FRONTEND_LOGINFORM;
|
||||
sEdInit.id = CON_LOGIN_USER;
|
||||
sEdInit.x = 50;
|
||||
sEdInit.y = 55;
|
||||
sEdInit.width = 200;
|
||||
sEdInit.height = 20;
|
||||
sEdInit.pText = lobbyUser.toUtf8().constData();
|
||||
sEdInit.pBoxDisplay = displayPasswordEditBox;
|
||||
widgAddEditBox(psWScreen, &sEdInit);
|
||||
|
||||
// Draw password label
|
||||
W_LABINIT sLoginPassLabInit;
|
||||
sLoginPassLabInit.formID = FRONTEND_LOGINFORM;
|
||||
sLoginPassLabInit.id = CON_LOGIN_PASS_LABEL;
|
||||
sLoginPassLabInit.style = WLAB_ALIGNCENTRE;
|
||||
sLoginPassLabInit.x = 50;
|
||||
sLoginPassLabInit.y = 110;
|
||||
sLoginPassLabInit.width = CON_SETTINGSWIDTH;
|
||||
sLoginPassLabInit.height = 20;
|
||||
sLoginPassLabInit.pText = _("Password:");
|
||||
sLoginPassLabInit.pDisplay = showPasswordLabel;
|
||||
widgAddLabel(psWScreen, &sLoginPassLabInit);
|
||||
sLabInit.formID = FRONTEND_LOGINFORM;
|
||||
sLabInit.id = CON_LOGIN_PASS_LABEL;
|
||||
sLabInit.style = WLAB_ALIGNCENTRE;
|
||||
sLabInit.x = 50;
|
||||
sLabInit.y = 110;
|
||||
sLabInit.width = 200;
|
||||
sLabInit.height = 20;
|
||||
sLabInit.pText = _("Password:");
|
||||
sLabInit.pDisplay = showPasswordLabel;
|
||||
widgAddLabel(psWScreen, &sLabInit);
|
||||
|
||||
// Draw password entry box
|
||||
W_EDBINIT sLoginPassEdInit;
|
||||
sLoginPassEdInit.formID = FRONTEND_LOGINFORM;
|
||||
sLoginPassEdInit.id = CON_LOGIN_PASS;
|
||||
sLoginPassEdInit.x = 50;
|
||||
sLoginPassEdInit.y = 115;
|
||||
sLoginPassEdInit.width = 280;
|
||||
sLoginPassEdInit.height = 20;
|
||||
sLoginPassEdInit.pText = "";
|
||||
sLoginPassEdInit.pBoxDisplay = displayPasswordEditBox;
|
||||
widgAddEditBox(psWScreen, &sLoginPassEdInit);
|
||||
sEdInit.formID = FRONTEND_LOGINFORM;
|
||||
sEdInit.id = CON_LOGIN_PASS;
|
||||
sEdInit.x = 50;
|
||||
sEdInit.y = 115;
|
||||
sEdInit.width = 200;
|
||||
sEdInit.height = 20;
|
||||
sEdInit.pText = "";
|
||||
sEdInit.pBoxDisplay = displayPasswordEditBox;
|
||||
widgAddEditBox(psWScreen, &sEdInit);
|
||||
|
||||
addMultiBut(psWScreen, FRONTEND_LOGINFORM,CON_LOGIN_NO,50,160,MULTIOP_OKW,MULTIOP_OKH,
|
||||
// Info Text
|
||||
sLabInit.formID = FRONTEND_LOGINFORM;
|
||||
sLabInit.id = CON_LOGIN_INFOTEXT;
|
||||
sLabInit.style = WLAB_ALIGNLEFT;
|
||||
sLabInit.x = 30;
|
||||
sLabInit.y = 150;
|
||||
sLabInit.width = 300 - (30*2);
|
||||
sLabInit.height = 20;
|
||||
sLabInit.pText = _("Use your wz2100.net credentials here.");
|
||||
sLabInit.pDisplay = labelDisplay;
|
||||
widgAddLabel(psWScreen, &sLabInit);
|
||||
|
||||
addMultiBut(psWScreen, FRONTEND_LOGINFORM,CON_LOGIN_NO,50,210,MULTIOP_OKW,MULTIOP_OKH,
|
||||
_("Cancel"),IMAGE_NO,IMAGE_NO,true);
|
||||
addMultiBut(psWScreen, FRONTEND_LOGINFORM,CON_LOGIN_YES,295,160,MULTIOP_OKW,MULTIOP_OKH,
|
||||
addMultiBut(psWScreen, FRONTEND_LOGINFORM,CON_LOGIN_YES,210,210,MULTIOP_OKW,MULTIOP_OKH,
|
||||
_("OK"),IMAGE_OK,IMAGE_OK,true);
|
||||
|
||||
// Now hide it.
|
||||
|
|
|
@ -116,6 +116,7 @@ void loadMapPreview(bool hideInterface);
|
|||
#define CON_LOGIN_USER_LABEL 10154
|
||||
#define CON_LOGIN_PASS_LABEL 10155
|
||||
#define CON_LOGIN_SIDETEXT 10156
|
||||
#define CON_LOGIN_INFOTEXT 10157
|
||||
|
||||
|
||||
// ////////////////////////////////////////////////////////////////
|
||||
|
|
Loading…
Reference in New Issue