使用soui开发的mbc,只支持windows版本
w1146869587
2022-01-24 0408576e9da10015ffa9da0079b8c985113ce4b3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#pragma once
 
#include <helper/SAdapterBase.h>
#include "IFontAdapterCallback.h"
 
class CFontFaceAdapter : public SAdapterBase
{
public:
 
    
private:
    SArray<SStringT> m_arrFontFace;
    IFontFaceAdapterCallback* m_pCB;
 
public:
    CFontFaceAdapter(IFontFaceAdapterCallback* pCB){
        m_pCB = pCB;
    }
    ~CFontFaceAdapter(){}
 
    virtual int getCount()
    {
        return m_arrFontFace.GetCount();
    }
 
    virtual void getView(int position, SWindow * pItem, pugi::xml_node xmlTemplate)
    {
        if (pItem->GetChildrenCount() == 0)
            pItem->InitFromXml(xmlTemplate);
 
        SWindow* pFontFace = pItem->FindChildByID(1);
        SStringT wstrSelSize = m_arrFontFace.GetAt(position).m_strFontFace;
        pFontFace->SetWindowText(wstrSelSize);
 
        pItem->SetUserData(position);
        pItem->GetEventSet()->subscribeEvent(EventItemPanelClick::EventID, Subscriber(&CFontFaceAdapter::OnItemClick, this));
    }
 
    SStringT getItemDesc(int position)
    {
        return m_arrFontFace.GetAt(position).m_strFontFace;
    }
 
    bool OnItemClick(EventArgs *pEvt)
    {
        EventItemPanelClick* pEvt_ItemPanel = sobj_cast<EventItemPanelClick>(pEvt);
        SASSERT(pEvt_ItemPanel);
        SWindow* pPanel = sobj_cast<SWindow>(pEvt_ItemPanel->sender);
        SOUI::CPoint pt(GET_X_LPARAM(pEvt_ItemPanel->lParam), GET_Y_LPARAM(pEvt_ItemPanel->lParam));
        SWND swnd = pPanel->SwndFromPoint(pt, FALSE);
        SWindow *pClicked = NULL;
        if (swnd)
        {
            pClicked = SWindowMgr::GetWindow(swnd);
        }
 
        int nIndex = pPanel->GetUserData();
        m_pCB->OnClickFontFaceItem(nIndex,GetFontFace(nIndex));
 
        return true;
    }
 
    fontFace getItem(int position)
    {
        SASSERT(position >= 0 && position < (int)m_arrFontFace.GetCount());
        return m_arrFontFace[position];
    }
 
    void AddFontFace(const SStringT& strFontFace)
    {
        if (L"" != strFontFace)
        {
            fontFace fontFace;
            fontFace.m_strFontFace = strFontFace;
            m_arrFontFace.Add(fontFace);
            this->notifyDataSetChanged();
        }
    }
    SStringT GetFontFace(int position)
    {
        SASSERT(position >= 0 && position < (int)m_arrFontFace.GetCount());
        return m_arrFontFace[position].m_strFontFace;
    }
};