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

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. // OptionPluginDlg.cpp : implementation file
  12. //
  13. #include "stdafx.h"
  14. #include "myicq.h"
  15. #include "OptionPluginDlg.h"
  16. #include "icqplugin.h"
  17. #ifdef _DEBUG
  18. #define new DEBUG_NEW
  19. #undef THIS_FILE
  20. static char THIS_FILE[] = __FILE__;
  21. #endif
  22. /////////////////////////////////////////////////////////////////////////////
  23. // COptionPluginDlg property page
  24. IMPLEMENT_DYNCREATE(COptionPluginDlg, CPropertyPage)
  25. COptionPluginDlg::COptionPluginDlg() : CPropertyPage(COptionPluginDlg::IDD)
  26. {
  27. //{{AFX_DATA_INIT(COptionPluginDlg)
  28. //}}AFX_DATA_INIT
  29. }
  30. COptionPluginDlg::~COptionPluginDlg()
  31. {
  32. }
  33. void COptionPluginDlg::DoDataExchange(CDataExchange* pDX)
  34. {
  35. CPropertyPage::DoDataExchange(pDX);
  36. //{{AFX_DATA_MAP(COptionPluginDlg)
  37. DDX_Control(pDX, IDC_PLUGIN_LIST, m_pluginList);
  38. //}}AFX_DATA_MAP
  39. }
  40. BEGIN_MESSAGE_MAP(COptionPluginDlg, CPropertyPage)
  41. //{{AFX_MSG_MAP(COptionPluginDlg)
  42. ON_BN_CLICKED(IDC_CONFIG, OnConfig)
  43. ON_BN_CLICKED(IDC_ABOUT, OnAbout)
  44. //}}AFX_MSG_MAP
  45. END_MESSAGE_MAP()
  46. /////////////////////////////////////////////////////////////////////////////
  47. // COptionPluginDlg message handlers
  48. BOOL COptionPluginDlg::OnInitDialog() 
  49. {
  50. CPropertyPage::OnInitDialog();
  51. PtrList &l = PluginFactory::getPluginList();
  52. imageList.Create(32, 32, ILC_MASK, l.size(), 0);
  53. m_pluginList.SetImageList(&imageList, LVSIL_NORMAL);
  54. PtrList::iterator it;
  55. int i = 0;
  56. for (it = l.begin(); it != l.end(); ++it) {
  57. IcqPlugin *plugin = (IcqPlugin *) *it;
  58. if (plugin->type == ICQ_PLUGIN_TOY) {
  59. NetPlugin *p = (NetPlugin *) plugin;
  60. string name;
  61. HICON icon = (HICON) p->getNameIcon(name);
  62. int image = imageList.Add(icon);
  63. int item = m_pluginList.InsertItem(i++, name.c_str(), image);
  64. m_pluginList.SetItemData(item, (DWORD) p);
  65. }
  66. }
  67. return TRUE;  // return TRUE unless you set the focus to a control
  68.               // EXCEPTION: OCX Property Pages should return FALSE
  69. }
  70. void COptionPluginDlg::OnConfig() 
  71. {
  72. POSITION pos = m_pluginList.GetFirstSelectedItemPosition();
  73. if (pos) {
  74. int i = m_pluginList.GetNextSelectedItem(pos);
  75. ToyPlugin *p = (ToyPlugin *) m_pluginList.GetItemData(i);
  76. if (p->configure)
  77. p->configure(getApp()->getProfile(p->name.c_str()));
  78. }
  79. }
  80. void COptionPluginDlg::OnAbout() 
  81. {
  82. POSITION pos = m_pluginList.GetFirstSelectedItemPosition();
  83. if (pos) {
  84. int i = m_pluginList.GetNextSelectedItem(pos);
  85. ToyPlugin *p = (ToyPlugin *) m_pluginList.GetItemData(i);
  86. if (p->about)
  87. p->about();
  88. }
  89. }