SendRequestDlg.cpp
上传用户:zslianheng
上传日期:2013-04-03
资源大小:946k
文件大小:4k
源码类别:

Linux/Unix编程

开发平台:

Visual C++

  1. /***************************************************************************
  2.  *                                                                         *
  3.  *   This program is free software; you can redistribute it and/or modify  *
  4.  *   it under the terms of the GNU General Public License as published by  *
  5.  *   the Free Software Foundation; either version 2 of the License, or     *
  6.  *   (at your option) any later version.                                   *
  7.  *                                                                         *
  8.  *   copyright            : (C) 2002 by Zhang Yong                         *
  9.  *   email                : z-yong163@163.com                              *
  10.  ***************************************************************************/
  11. // SendRequestDlg.cpp : implementation file
  12. //
  13. #include "stdafx.h"
  14. #include "myicq.h"
  15. #include "SendRequestDlg.h"
  16. #include "icqlink.h"
  17. #include "tcpsession.h"
  18. #include "icqplugin.h"
  19. #ifdef _DEBUG
  20. #define new DEBUG_NEW
  21. #undef THIS_FILE
  22. static char THIS_FILE[] = __FILE__;
  23. #endif
  24. #define IDT_ANIM 1001
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CSendRequestDlg dialog
  27. CSendRequestDlg::CSendRequestDlg(const char *name, IcqContact *c, CWnd* pParent /*=NULL*/)
  28. : CMyDlg(CSendRequestDlg::IDD, pParent), IcqWindow(WIN_SEND_REQUEST, c->uin)
  29. {
  30. //{{AFX_DATA_INIT(CSendRequestDlg)
  31. m_text = _T("");
  32. //}}AFX_DATA_INIT
  33. isSend = TRUE;
  34. sessionName = name;
  35. contact = c;
  36. init();
  37. }
  38. CSendRequestDlg::CSendRequestDlg(IcqMsg *msg, CWnd *pParent)
  39. : CMyDlg(CSendRequestDlg::IDD, pParent), IcqWindow(WIN_SEND_REQUEST, msg->uin)
  40. {
  41. TextInStream in(msg->text.c_str());
  42. string name, text;
  43. in >> name >> text >> port;
  44. isSend = FALSE;
  45. sessionName = name.c_str();
  46. contact = icqLink->findContact(uin);
  47. m_text = text.c_str();
  48. init();
  49. }
  50. void CSendRequestDlg::init()
  51. {
  52. frame = 0;
  53. m_nick = contact->nick.c_str();
  54. m_uin.Format("%lu", uin);
  55. }
  56. void CSendRequestDlg::onAck(uint32 seq)
  57. {
  58. DestroyWindow();
  59. }
  60. void CSendRequestDlg::DoDataExchange(CDataExchange* pDX)
  61. {
  62. CMyDlg::DoDataExchange(pDX);
  63. //{{AFX_DATA_MAP(CSendRequestDlg)
  64. DDX_Control(pDX, IDC_TEXT, m_textEdit);
  65. DDX_Control(pDX, IDC_PIC, m_faceButton);
  66. DDX_Text(pDX, IDC_NICK, m_nick);
  67. DDX_Text(pDX, IDC_UIN, m_uin);
  68. DDX_Text(pDX, IDC_TEXT, m_text);
  69. //}}AFX_DATA_MAP
  70. }
  71. BEGIN_MESSAGE_MAP(CSendRequestDlg, CMyDlg)
  72. //{{AFX_MSG_MAP(CSendRequestDlg)
  73. ON_WM_TIMER()
  74. //}}AFX_MSG_MAP
  75. END_MESSAGE_MAP()
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CSendRequestDlg message handlers
  78. BOOL CSendRequestDlg::OnInitDialog() 
  79. {
  80. CMyDlg::OnInitDialog();
  81. string name;
  82. HICON icon = NULL;
  83. IcqPlugin *p = PluginFactory::getPlugin(string(sessionName));
  84. if (p->type == ICQ_PLUGIN_NET)
  85. icon = (HICON) ((NetPlugin *) p)->getNameIcon(name);
  86. else if (p->type == ICQ_PLUGIN_EXE) {
  87. icon = (HICON) ((ExePlugin *) p)->icon;
  88. name = ((ExePlugin *) p)->locName;
  89. }
  90. CString str;
  91. GetWindowText(str);
  92. str += " ---- ";
  93. str += name.c_str();
  94. SetWindowText(str);
  95. if (icon)
  96. SetIcon(icon, FALSE);
  97. int i = getApp()->getImageIndex(contact->face);
  98. m_faceButton.SetIcon(getApp()->largeImageList.ExtractIcon(i));
  99. if (!isSend) {
  100. CString str;
  101. str.LoadString(IDS_ACCEPT_REQ);
  102. SetDlgItemText(IDOK, str);
  103. m_textEdit.SetReadOnly();
  104. }
  105. return TRUE;  // return TRUE unless you set the focus to a control
  106.               // EXCEPTION: OCX Property Pages should return FALSE
  107. }
  108. void CSendRequestDlg::OnOK() 
  109. {
  110. if (isSend) {
  111. UpdateData();
  112. seq = icqLink->sendTcpRequest(sessionName, contact, m_text);
  113. GetDlgItem(IDOK)->EnableWindow(FALSE);
  114. GetDlgItem(IDC_TEXT)->EnableWindow(FALSE);
  115. SetTimer(IDT_ANIM, 500, NULL);
  116. } else {
  117. icqLink->acceptTcpRequest(sessionName, contact, port);
  118. CMyDlg::OnOK();
  119. }
  120. }
  121. void CSendRequestDlg::OnTimer(UINT nIDEvent) 
  122. {
  123. if (nIDEvent == IDT_ANIM) {
  124. frame ^= 1;
  125. int i = getApp()->getImageIndex(contact->face, frame ? STATUS_AWAY : STATUS_ONLINE);
  126. m_faceButton.SetIcon(getApp()->largeImageList.ExtractIcon(i));
  127. } else
  128. CMyDlg::OnTimer(nIDEvent);
  129. }