512 lines
15 KiB
C++
512 lines
15 KiB
C++
//---------------------------------------------------------------------------
|
|
|
|
#pragma hdrstop
|
|
|
|
#include "ShowUserInfoPanel.h"
|
|
#include "GlobalUnit.h"
|
|
#include "ImgCopperFormUnit.h"
|
|
//---------------------------------------------------------------------------
|
|
#pragma package(smart_init)
|
|
|
|
#define BORDER_COLOR TColor(RGB(100, 108, 119))
|
|
#define BK_COLOR TColor(RGB(39, 42, 47))
|
|
#define SEPARATOR_COLOR TColor(RGB(152, 154, 156))
|
|
#define FONT_COLOR TColor(RGB(152, 154, 156))
|
|
#define FONT_COLOR_HI TColor(RGB(255, 255, 255))
|
|
|
|
#define VIPHEIGHT 24
|
|
#define SHOWHEIGHT 190
|
|
//---------------------------------------------------------------------------
|
|
const static String LabelStr[] = {
|
|
L"唱作音符数",
|
|
L"魅力值",
|
|
L"粉丝数",
|
|
L"歌曲数",
|
|
L"空间未读消息",
|
|
L"注销",
|
|
L"个人空间"
|
|
};
|
|
const static TPoint FrameRoute[] = {
|
|
TPoint(0, 5),
|
|
TPoint(225, 5),
|
|
TPoint(230, 0),
|
|
TPoint(235, 5),
|
|
TPoint(250, 5),
|
|
TPoint(250, SHOWHEIGHT),
|
|
TPoint(0, SHOWHEIGHT)
|
|
};
|
|
const static String ResStr[] = {
|
|
L"UserInfo_Coin",
|
|
L"UserInfo_Pops",
|
|
L"UserInfo_Fans",
|
|
L"UserInfo_Music",
|
|
L"UserInfo_Zone",
|
|
L"UserInfo_Icon",
|
|
};
|
|
//---------------------------------------------------------------------------
|
|
__fastcall TShowUserInfo::TShowUserInfo(TComponent *Owner)
|
|
: TWinControl(Owner)
|
|
{
|
|
Parent = Application->MainForm;
|
|
|
|
ApplicationEvents = new TApplicationEvents(Application->MainForm);
|
|
ApplicationEvents->OnMessage = DoHandleMessage;
|
|
|
|
// FBalance = 0;
|
|
// FPops = 0;
|
|
// FFans = 0;
|
|
// FSongs = 0;
|
|
|
|
m_ImageList = new TList();
|
|
m_ValueList = new TList();
|
|
|
|
TLabel *Label = new TLabel(this);
|
|
//Label->Color =
|
|
Label->Transparent = true;
|
|
Label->Top = 102;//+VIPHEIGHT;
|
|
Label->Left = 50;// + 25;
|
|
Label->Width = 100;
|
|
Label->WordWrap = false;
|
|
Label->AutoSize = false;
|
|
Label->Font->Color = FONT_COLOR;
|
|
Label->Font->Size = g_szFont10;
|
|
Label->Alignment = taCenter;
|
|
Label->Caption = "";
|
|
Label->Parent = this;
|
|
Label->ShowHint = true;
|
|
Label->EllipsisPosition = epEndEllipsis;
|
|
Label->OnMouseEnter = DoLabelMouseEnter;
|
|
Label->OnMouseLeave = DoLabelMouseLeave;
|
|
Label->Cursor = crHandPoint;
|
|
Label->OnClick = DoObjectClick;
|
|
m_ValueList->Add(Label);
|
|
|
|
TPngImage *pngImage = new TPngImage();
|
|
pngImage->LoadFromResourceName(int(HInstance), ResStr[5]);
|
|
|
|
m_UserIcon = new TImage(this);
|
|
m_UserIcon->Picture->Graphic = pngImage;
|
|
m_UserIcon->Width = 64;
|
|
m_UserIcon->Height = 64;
|
|
m_UserIcon->Left = 68;// + 25;
|
|
m_UserIcon->Top = 30;
|
|
m_UserIcon->ShowHint = true;
|
|
m_UserIcon->Hint = "";
|
|
m_UserIcon->Parent = this;
|
|
// m_UserIcon->AutoSize = false;
|
|
// m_UserIcon->Center = true;
|
|
m_UserIcon->Stretch = true;
|
|
m_UserIcon->Cursor = crHandPoint;
|
|
m_UserIcon->OnClick = DoObjectClick;
|
|
|
|
m_imgVip = new TImage(this);
|
|
m_imgVip->Width = 35;
|
|
m_imgVip->Height = VIPHEIGHT - 8;
|
|
m_imgVip->Top = 30 + 2; //m_UserIcon->Top+m_UserIcon->Height+10;
|
|
m_imgVip->Left = 132 + 15;//(Width-m_imgVip->Width)/2;
|
|
m_imgVip->Parent = this;
|
|
m_imgVip->OnClick = DoObjectClick;
|
|
m_imgVip->Stretch = true;
|
|
m_imgVip->Cursor = crHandPoint;
|
|
m_imgVip->ShowHint = true;
|
|
|
|
TPngImage *pImgVip = new TPngImage();
|
|
// m_imgVip->Visible = false;
|
|
if(-1==g_infoUser.accountInfo.vipPeriod){
|
|
pImgVip->LoadFromResourceName(int(HInstance), L"vipForever");
|
|
m_imgVip->Hint = L"终身VIP会员";
|
|
|
|
}else if( 0==g_infoUser.accountInfo.vipPeriod ) {
|
|
pImgVip->LoadFromResourceName(int(HInstance), L"vipNone");
|
|
m_imgVip->Hint = L"点击成为VIP会员\n成为VIP之后请重新登录";
|
|
}else {
|
|
pImgVip->LoadFromResourceName(int(HInstance), L"vipTimer");
|
|
String strDay = L"VIP权限剩余";
|
|
int nDay = g_infoUser.accountInfo.vipPeriod/(60*60*24);
|
|
int nAdd = g_infoUser.accountInfo.vipPeriod%(60*60*24)==0?0:1;
|
|
strDay += IntToStr(nDay+nAdd);
|
|
strDay += L"天\n点击延期,之后请重新登录";
|
|
m_imgVip->Hint = strDay;
|
|
}
|
|
m_imgVip->Picture->Assign(pImgVip);
|
|
SAFE_DELETE(pImgVip)
|
|
|
|
// for(int i = 0; i < 4; i++)
|
|
{
|
|
TPngImage *png = new TPngImage();
|
|
png->LoadFromResourceName(int(HInstance), ResStr[0]);
|
|
|
|
TImage *Image = new TImage(this);
|
|
Image->Picture->Graphic = png;
|
|
Image->Top = 60+16;//125+VIPHEIGHT;
|
|
Image->Left = 132 + 10;//23 + i * 60;
|
|
Image->Width = 20;
|
|
Image->Height = 16;
|
|
Image->Parent = this;
|
|
Image->Stretch = true;
|
|
Image->ShowHint = true;
|
|
Image->Hint = "唱作音符数\n点击充值兑换,之后请重新登录";
|
|
Image->Cursor = crHandPoint;
|
|
Image->OnClick = DoObjectClick;
|
|
m_ImageList->Add(Image);
|
|
|
|
Label = new TLabel(this);
|
|
Label->Transparent = true;
|
|
Label->Top = 60 +16;//155+VIPHEIGHT;
|
|
Label->Left = 132 + 30 + 2; //5 + i * 60;
|
|
Label->Width = 60;
|
|
Label->WordWrap = false;
|
|
Label->AutoSize = false;
|
|
Label->EllipsisPosition = epEndEllipsis;
|
|
Label->Font->Color = clYellow;
|
|
Label->Font->Name = g_strTxtFontName;
|
|
Label->Font->Size = g_szFont11;
|
|
Label->Alignment = taLeftJustify;
|
|
Label->Caption = IntToStr(g_infoUser.accountInfo.balance);
|
|
Label->Parent = this;
|
|
Label->OnMouseEnter = DoLabelMouseEnter;
|
|
Label->OnMouseLeave = DoLabelMouseLeave;
|
|
Label->Cursor = crHandPoint;
|
|
Label->OnClick = DoObjectClick;
|
|
Label->Hint = "唱作音符数\n点击充值兑换,之后请重新登录";
|
|
Label->ShowHint = true;
|
|
m_ValueList->Add(Label);
|
|
}
|
|
|
|
m_LogoutBtn = new TTextButton(this);
|
|
m_LogoutBtn->Width = 60;
|
|
m_LogoutBtn->Text = LabelStr[5];
|
|
m_LogoutBtn->Top = 125+VIPHEIGHT;
|
|
m_LogoutBtn->Left = 95;// + 25;
|
|
m_LogoutBtn->Parent = this;
|
|
m_LogoutBtn->ShowHint = true;
|
|
m_LogoutBtn->Hint = "退出登录";
|
|
m_LogoutBtn->FontSize = g_szFont9;
|
|
m_LogoutBtn->OnClick = DoObjectClick;
|
|
|
|
|
|
// m_ZoneBtn = new TTextButton(this);
|
|
// m_ZoneBtn->Width = 60;
|
|
// m_ZoneBtn->Text = LabelStr[6];
|
|
// m_ZoneBtn->Top = 190+VIPHEIGHT;
|
|
// m_ZoneBtn->Left = 105 + 25;
|
|
// m_ZoneBtn->Parent = this;
|
|
// m_ZoneBtn->FontSize = g_szFont9;
|
|
// m_ZoneBtn->OnClick = DoButtonClick;
|
|
|
|
SetTransparent( this );
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
__fastcall TShowUserInfo::~TShowUserInfo()
|
|
{
|
|
if(m_ImageList){
|
|
m_ImageList->Clear();
|
|
delete m_ImageList;
|
|
m_ImageList = NULL;
|
|
}
|
|
if(m_ValueList){
|
|
m_ValueList->Clear();
|
|
delete m_ValueList;
|
|
m_ValueList = NULL;
|
|
}
|
|
if(m_LogoutBtn){
|
|
delete m_LogoutBtn;
|
|
m_LogoutBtn = NULL;
|
|
}
|
|
// if(m_ZoneBtn){
|
|
// delete m_ZoneBtn;
|
|
// m_ZoneBtn = NULL;
|
|
// }
|
|
if(ApplicationEvents){
|
|
delete ApplicationEvents;
|
|
ApplicationEvents = NULL;
|
|
}
|
|
|
|
if(m_imgVip){
|
|
delete m_imgVip;
|
|
m_imgVip = NULL;
|
|
}
|
|
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TShowUserInfo::CreateParams(TCreateParams &Params)
|
|
{
|
|
TWinControl::CreateParams(Params);
|
|
|
|
Params.Style = 0;
|
|
Params.Style = WS_POPUP;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TShowUserInfo::CreateWnd()
|
|
{
|
|
Width = 250;
|
|
Height = SHOWHEIGHT;
|
|
|
|
TWinControl::CreateWnd();
|
|
|
|
HRGN hRgn;
|
|
hRgn = CreatePolygonRgn(FrameRoute,7, ALTERNATE);
|
|
SetWindowRgn(Handle, hRgn, true);
|
|
DeleteObject(hRgn);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TShowUserInfo::DoObjectClick(TObject *Sender)
|
|
{
|
|
if(Sender == m_LogoutBtn)
|
|
m_ModalResult = 1;
|
|
else if(Sender == m_UserIcon || Sender == m_ValueList->Items[0])
|
|
m_ModalResult = 2;
|
|
else if(Sender == m_imgVip )
|
|
m_ModalResult = 3;
|
|
else if(Sender == m_ValueList->Items[1] || Sender==m_ImageList->Items[0])
|
|
m_ModalResult = 4;
|
|
|
|
Hide();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TShowUserInfo::DoHandleMessage(MSG &Msg, bool &Handled)
|
|
{
|
|
if(Msg.message == WM_NCLBUTTONDOWN || Msg.message == WM_NCRBUTTONDOWN)
|
|
{
|
|
m_ModalResult = -1;
|
|
Hide();
|
|
}
|
|
if(Msg.message == WM_LBUTTONDOWN || Msg.message == WM_RBUTTONDOWN)
|
|
{
|
|
if(Msg.hwnd != Handle)
|
|
{
|
|
m_ModalResult = -1;
|
|
}
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TShowUserInfo::DoLabelMouseEnter(TObject *Sender)
|
|
{
|
|
((TLabel *)Sender)->Font->Color = FONT_COLOR_HI;
|
|
((TLabel *)Sender)->Font->Style = TFontStyles()<<fsUnderline;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TShowUserInfo::DoLabelMouseLeave(TObject *Sender)
|
|
{
|
|
((TLabel *)Sender)->Font->Color = FONT_COLOR;
|
|
((TLabel *)Sender)->Font->Style = TFontStyles();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TShowUserInfo::SetUserName(String Value)
|
|
{
|
|
if(FUserName != Value) {
|
|
FUserName = Value;
|
|
((TLabel *)m_ValueList->Items[0])->Caption = Value;
|
|
|
|
String strHint = "用户名:";
|
|
strHint += g_infoUser.strUserName;
|
|
strHint += "\n昵 称:";
|
|
strHint += g_infoUser.strNickName;
|
|
strHint += "\n音符数:";
|
|
strHint += IntToStr(g_infoUser.accountInfo.balance);
|
|
strHint += "\n\n点击查看详情";
|
|
m_UserIcon->Hint = strHint;
|
|
|
|
((TLabel *)m_ValueList->Items[0])->Hint = strHint;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
//void __fastcall TShowUserInfo::SetBalance(int Value)
|
|
//{
|
|
// if(FBalance != Value) {
|
|
// FBalance = Value;
|
|
// ((TLabel *)m_ValueList->Items[1])->Caption = IntToStr(Value);
|
|
// }
|
|
//}
|
|
////---------------------------------------------------------------------------
|
|
//void __fastcall TShowUserInfo::SetPops(int Value)
|
|
//{
|
|
// if(FPops != Value) {
|
|
// FPops = Value;
|
|
// ((TLabel *)m_ValueList->Items[2])->Caption = IntToStr(Value);
|
|
// }
|
|
//}
|
|
////---------------------------------------------------------------------------
|
|
//void __fastcall TShowUserInfo::SetFans(int Value)
|
|
//{
|
|
// if(FFans != Value) {
|
|
// FFans = Value;
|
|
// ((TLabel *)m_ValueList->Items[3])->Caption = IntToStr(Value);
|
|
// }
|
|
//}
|
|
////---------------------------------------------------------------------------
|
|
//void __fastcall TShowUserInfo::SetSongs(int Value)
|
|
//{
|
|
// if(FSongs != Value) {
|
|
// FSongs = Value;
|
|
// ((TLabel *)m_ValueList->Items[4])->Caption = IntToStr(Value);
|
|
// }
|
|
//}
|
|
////---------------------------------------------------------------------------
|
|
//void __fastcall TShowUserInfo::SetZones(int Value)
|
|
//{
|
|
// if(FZones != Value){
|
|
// FZones = Value;
|
|
// ((TLabel *)m_ValueList->Items[5])->Caption = IntToStr(Value);
|
|
// }
|
|
//}
|
|
////---------------------------------------------------------------------------
|
|
int __fastcall TShowUserInfo::ShowModal()
|
|
{
|
|
Application->ModalStarted();
|
|
|
|
m_bakActiveWnd = GetActiveWindow();
|
|
|
|
TWinControl::Show();
|
|
|
|
String nickName = String(g_infoUser.strNickName);
|
|
|
|
if(nickName.IsEmpty()) {
|
|
UserName = String(g_infoUser.strUserName);//L"ID:" + IntToStr(g_infoUser.accountInfo.ID);
|
|
}
|
|
else {
|
|
UserName = nickName;
|
|
}
|
|
|
|
// Balance = g_infoUser.accountInfo.balance;
|
|
// Pops = g_infoUser.accountInfo.pops;
|
|
// Fans = g_infoUser.accountInfo.fans;
|
|
// Songs = g_infoUser.accountInfo.songs;
|
|
// Zones = f_CS_GetNewNoticeNum( g_infoUser.accountInfo.ID );
|
|
|
|
String strHeaderPath = g_strUserPath.c_str();
|
|
strHeaderPath += L"header\\";
|
|
|
|
String strIconFile = strHeaderPath + g_infoUser.strIconFile;
|
|
if( FileExists( strIconFile ) ) {
|
|
GetPic(strIconFile, true);
|
|
m_UserIcon->Picture->LoadFromFile( strIconFile );
|
|
}
|
|
|
|
m_ModalResult = 0;
|
|
|
|
m_IsActive = false;
|
|
SendMessage(Handle, WM_ACTIVATE, WA_ACTIVE, 0);
|
|
m_IsActive = true;
|
|
|
|
while(m_ModalResult == 0) {
|
|
Application->HandleMessage();
|
|
|
|
if(Application->Terminated)
|
|
m_ModalResult = -1;
|
|
}
|
|
|
|
TWinControl::Hide();
|
|
|
|
SetActiveWindow(m_bakActiveWnd);
|
|
|
|
Application->ModalFinished();
|
|
|
|
return m_ModalResult;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TShowUserInfo::WMEraseBkgnd(TWMEraseBkgnd &Message)
|
|
{
|
|
TCanvas *canvas = new TCanvas();
|
|
canvas->Handle = Message.DC;
|
|
/* 绘制背景 */
|
|
canvas->Brush->Color = BK_COLOR;
|
|
canvas->FillRect(GetClientRect());
|
|
/* 绘制边框 */
|
|
canvas->Pen->Color = BORDER_COLOR;
|
|
canvas->MoveTo(FrameRoute[0].X, FrameRoute[0].Y);
|
|
canvas->LineTo(FrameRoute[1].X, FrameRoute[1].Y);
|
|
canvas->MoveTo(FrameRoute[1].X, FrameRoute[1].Y);
|
|
canvas->LineTo(FrameRoute[2].X, FrameRoute[2].Y);
|
|
canvas->MoveTo(FrameRoute[2].X, FrameRoute[2].Y);
|
|
canvas->LineTo(FrameRoute[3].X, FrameRoute[3].Y);
|
|
canvas->MoveTo(FrameRoute[3].X, FrameRoute[3].Y);
|
|
canvas->LineTo(FrameRoute[4].X-1, FrameRoute[4].Y);
|
|
canvas->MoveTo(FrameRoute[4].X-1, FrameRoute[4].Y);
|
|
canvas->LineTo(FrameRoute[5].X-1, FrameRoute[5].Y-1);
|
|
canvas->MoveTo(FrameRoute[5].X-1, FrameRoute[5].Y-1);
|
|
canvas->LineTo(FrameRoute[6].X, FrameRoute[6].Y-1);
|
|
canvas->MoveTo(FrameRoute[6].X, FrameRoute[6].Y-1);
|
|
canvas->LineTo(FrameRoute[0].X, FrameRoute[0].Y);
|
|
/* 绘制分割线 */
|
|
canvas->Pen->Color = SEPARATOR_COLOR;
|
|
canvas->MoveTo(10, 108+VIPHEIGHT);
|
|
canvas->LineTo(240, 108+VIPHEIGHT);
|
|
|
|
delete canvas;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TShowUserInfo::WMKillFocus(TMessage &Message)
|
|
{
|
|
if(m_IsActive && m_ModalResult == 0)
|
|
m_ModalResult = -1;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TShowUserInfo::WMPaint(TWMPaint &Message)
|
|
{
|
|
PaintHandler(Message);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
//void __fastcall TShowUserInfo::UserIconClick(TObject *Sender)
|
|
//{
|
|
// m_ModalResult = 2;
|
|
// Hide();
|
|
//
|
|
// String strHeaderPath = g_strUserPath.c_str();
|
|
// strHeaderPath += L"header\\";
|
|
//
|
|
// String strIconFile = strHeaderPath + g_infoUser.strIconFile;
|
|
// if( !FileExists( strIconFile ) )
|
|
// strIconFile = strHeaderPath + L"default.jpg";
|
|
// GetPic(strIconFile, true);
|
|
//
|
|
// TPicture *pPic = new TPicture();
|
|
// pPic->LoadFromFile( strIconFile );
|
|
//
|
|
// TImgCopperForm *pTImgCopperForm = new TImgCopperForm(this, TRect(0, 0, 90, 90), pPic);
|
|
// pTImgCopperForm->Caption = L"编辑头像";
|
|
// pTImgCopperForm->Width = 260;
|
|
// pTImgCopperForm->Height = 300;
|
|
//
|
|
// if( mrOk==pTImgCopperForm->ShowModal() ) {
|
|
//
|
|
// bool bUploadUsrIcon = false;
|
|
// if( NULL==g_pTThreadHttpPostUsrIcon ) {
|
|
//
|
|
// bUploadUsrIcon = true;
|
|
//
|
|
// }else if( !g_pTThreadHttpPostUsrIcon->Started ||
|
|
// (g_pTThreadHttpPostUsrIcon->Started && g_pTThreadHttpPostUsrIcon->Finished) )
|
|
// {
|
|
// bUploadUsrIcon = true;
|
|
// }
|
|
//
|
|
// if( bUploadUsrIcon ){
|
|
//
|
|
// SAFE_DELETE(g_pTThreadHttpPostUsrIcon)
|
|
// g_pTThreadHttpPostUsrIcon
|
|
// = new TThreadHttpPostUsrIcon(true, this,
|
|
// pTImgCopperForm->m_strCopperPath);
|
|
// g_pTThreadHttpPostUsrIcon->Priority = tpIdle;
|
|
// g_pTThreadHttpPostUsrIcon->Start();
|
|
// }
|
|
// }
|
|
//
|
|
// SAFE_DELETE(pTImgCopperForm);
|
|
// SAFE_DELETE(pPic);
|
|
//}
|
|
//---------------------------------------------------------------------------
|
|
|
|
//void __fastcall TShowUserInfo::VIPClick(TObject *Sender)
|
|
//{
|
|
// char strURL[256];
|
|
// f_CS_GetWebPageURL( URL_VIPMEMBER, strURL );
|
|
// String urlVIP = strURL;
|
|
// if( urlVIP.Length() ) {
|
|
// ShellExecute(Handle, NULL, urlVIP.c_str(), NULL, NULL, SW_SHOWNORMAL);
|
|
// }
|
|
//}
|
|
////---------------------------------------------------------------------------
|