Skip to content

Commit 13c5844

Browse files
committed
删除了CTrafficMonitorDlg类中的m_font成员,绘制主窗口时使用CSkin类中的m_font成员作为字体;皮肤预览界面中的字体和用户设置的字体一致
1 parent 4f8bf97 commit 13c5844

File tree

9 files changed

+133
-146
lines changed

9 files changed

+133
-146
lines changed

TrafficMonitor/CommonData.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ struct FontInfo
128128
bool operator==(const FontInfo& a) const;
129129

130130
//创建一个CFont对象
131-
void Create(CFont& font, int dpi = 0)
131+
void Create(CFont& font, int dpi = 0) const
132132
{
133133
font.CreateFont(
134134
FontSizeToLfHeight(size, dpi), // nHeight

TrafficMonitor/SkinAutoAdaptSettingDlg.cpp

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@
1212

1313
IMPLEMENT_DYNAMIC(CSkinAutoAdaptSettingDlg, CBaseDialog)
1414

15-
CSkinAutoAdaptSettingDlg::CSkinAutoAdaptSettingDlg(const vector<wstring>& skins, CWnd* pParent /*=nullptr*/)
15+
CSkinAutoAdaptSettingDlg::CSkinAutoAdaptSettingDlg(CWnd* pParent /*=nullptr*/)
1616
: CBaseDialog(IDD_SKIN_AUTO_ADAPT_DLG, pParent)
17-
, m_skins(skins)
1817
{
1918

2019
}
@@ -23,16 +22,6 @@ CSkinAutoAdaptSettingDlg::~CSkinAutoAdaptSettingDlg()
2322
{
2423
}
2524

26-
int CSkinAutoAdaptSettingDlg::FindSkinIndex(const wstring& skin_name)
27-
{
28-
std::wstring _skin_name{ skin_name };
29-
CSkinManager::SkinNameNormalize(_skin_name);
30-
auto iter = std::find(m_skins.begin(), m_skins.end(), _skin_name);
31-
if (iter == m_skins.end())
32-
return 0;
33-
return iter - m_skins.begin();
34-
}
35-
3625
void CSkinAutoAdaptSettingDlg::DoDataExchange(CDataExchange* pDX)
3726
{
3827
CBaseDialog::DoDataExchange(pDX);
@@ -69,14 +58,14 @@ BOOL CSkinAutoAdaptSettingDlg::OnInitDialog()
6958
CBaseDialog::OnInitDialog();
7059

7160
//初始化下拉列表
72-
for (const auto& skin_name : m_skins)
61+
for (const auto& skin_name : CSkinManager::Instance().GetSkinNames())
7362
{
7463
m_dark_mode_skin_combo.AddString(skin_name.c_str());
7564
m_light_mode_skin_combo.AddString(skin_name.c_str());
7665
}
7766

78-
int dark_mode_skin = FindSkinIndex(theApp.m_cfg_data.skin_name_dark_mode);
79-
int light_mode_skin = FindSkinIndex(theApp.m_cfg_data.skin_name_light_mode);
67+
int dark_mode_skin = CSkinManager::Instance().FindSkinIndex(theApp.m_cfg_data.skin_name_dark_mode);
68+
int light_mode_skin = CSkinManager::Instance().FindSkinIndex(theApp.m_cfg_data.skin_name_light_mode);
8069
m_dark_mode_skin_combo.SetCurSel(dark_mode_skin);
8170
m_light_mode_skin_combo.SetCurSel(light_mode_skin);
8271

TrafficMonitor/SkinAutoAdaptSettingDlg.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class CSkinAutoAdaptSettingDlg : public CBaseDialog
99
DECLARE_DYNAMIC(CSkinAutoAdaptSettingDlg)
1010

1111
public:
12-
CSkinAutoAdaptSettingDlg(const vector<wstring>& skins, CWnd* pParent = nullptr); // 标准构造函数
12+
CSkinAutoAdaptSettingDlg(CWnd* pParent = nullptr); // 标准构造函数
1313
virtual ~CSkinAutoAdaptSettingDlg();
1414

1515
int GetDarkModeSkin() const { return m_dark_mode_skin; }
@@ -21,10 +21,6 @@ class CSkinAutoAdaptSettingDlg : public CBaseDialog
2121
#endif
2222

2323
private:
24-
int FindSkinIndex(const wstring& skin_name);
25-
26-
private:
27-
const vector<wstring>& m_skins;
2824
CComboBox m_dark_mode_skin_combo;
2925
CComboBox m_light_mode_skin_combo;
3026

TrafficMonitor/SkinDlg.cpp

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "SkinDlg.h"
77
#include "afxdialogex.h"
88
#include "SkinAutoAdaptSettingDlg.h"
9+
#include "SkinManager.h"
910

1011

1112
// CSkinDlg 对话框
@@ -57,7 +58,13 @@ void CSkinDlg::DoDataExchange(CDataExchange* pDX)
5758
void CSkinDlg::ShowPreview()
5859
{
5960
//载入布局数据
60-
m_skin_data.Load(m_skins[m_skin_selected]);
61+
m_skin_data.Load(CSkinManager::Instance().GetSkinName(m_skin_selected));
62+
//获取当前皮肤中用户更改字体
63+
SkinSettingData cur_skin_data;
64+
if (CSkinManager::Instance().GetSkinSettingDataByIndex(m_skin_selected, cur_skin_data))
65+
{
66+
m_skin_data.SetFont(cur_skin_data.font);
67+
}
6168
//获取预览区大小
6269
m_view->SetSize(m_skin_data.GetPreviewInfo().width, m_skin_data.GetPreviewInfo().height);
6370
//刷新预览图
@@ -112,7 +119,7 @@ BOOL CSkinDlg::OnInitDialog()
112119
SetIcon(theApp.GetMenuIcon(IDI_SKIN), FALSE); // 设置小图标
113120
//初始化选择框
114121
m_skin_list_box.SetItemHeight(0, DPI(18));
115-
for (const auto& skin_name : m_skins)
122+
for (const auto& skin_name : CSkinManager::Instance().GetSkinNames())
116123
{
117124
m_skin_list_box.AddString(skin_name.c_str());
118125
}
@@ -122,7 +129,6 @@ BOOL CSkinDlg::OnInitDialog()
122129
m_view->Create(NULL, NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL, CalculateViewRect(), this, 3000);
123130
m_view->InitialUpdate();
124131
m_view->SetSkinData(&m_skin_data);
125-
m_view->SetFont(m_pFont);
126132
m_view->ShowWindow(SW_SHOW);
127133

128134
//设置提示信息
@@ -179,15 +185,16 @@ afx_msg LRESULT CSkinDlg::OnLinkClicked(WPARAM wParam, LPARAM lParam)
179185

180186
void CSkinDlg::OnBnClickedSkinAutoAdaptButton()
181187
{
182-
CSkinAutoAdaptSettingDlg dlg(m_skins);
188+
CSkinAutoAdaptSettingDlg dlg;
189+
const auto& skins{ CSkinManager::Instance().GetSkinNames() };
183190
if (dlg.DoModal() == IDOK)
184191
{
185192
int dark_mode_skin = dlg.GetDarkModeSkin();
186193
int light_mode_skin = dlg.GetLightModeSkin();
187-
if (dark_mode_skin >= 0 && dark_mode_skin < static_cast<int>(m_skins.size()))
188-
theApp.m_cfg_data.skin_name_dark_mode = m_skins[dark_mode_skin];
189-
if (light_mode_skin >= 0 && light_mode_skin < static_cast<int>(m_skins.size()))
190-
theApp.m_cfg_data.skin_name_light_mode = m_skins[light_mode_skin];
194+
if (dark_mode_skin >= 0 && dark_mode_skin < static_cast<int>(skins.size()))
195+
theApp.m_cfg_data.skin_name_dark_mode = skins[dark_mode_skin];
196+
if (light_mode_skin >= 0 && light_mode_skin < static_cast<int>(skins.size()))
197+
theApp.m_cfg_data.skin_name_light_mode = skins[light_mode_skin];
191198
}
192199
}
193200

TrafficMonitor/SkinDlg.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ class CSkinDlg : public CBaseDialog
1616
CSkinDlg(CWnd* pParent = NULL); // 标准构造函数
1717
virtual ~CSkinDlg();
1818

19-
vector<wstring> m_skins; //皮肤文件的路径
2019
int m_skin_selected; //选择的皮肤
21-
CFont* m_pFont; //预览图的字体
2220

2321
// 对话框数据
2422
#ifdef AFX_DESIGN_TIME

0 commit comments

Comments
 (0)