xref: /MusicPlayer2/MusicPlayer2/IconMgr.h (revision 1a8d5ccb38b2ee7450c829cc228de953b4b773ae)
1*1a8d5ccbSlrisora #pragma once
2*1a8d5ccbSlrisora class IconMgr
3*1a8d5ccbSlrisora {
4*1a8d5ccbSlrisora public:
5*1a8d5ccbSlrisora     IconMgr();
6*1a8d5ccbSlrisora     virtual ~IconMgr();
7*1a8d5ccbSlrisora 
8*1a8d5ccbSlrisora     enum IconType
9*1a8d5ccbSlrisora     {
10*1a8d5ccbSlrisora         IT_App,                     // 应用图标
11*1a8d5ccbSlrisora         IT_Stop,                    // 停止
12*1a8d5ccbSlrisora         IT_Play,                    // 播放
13*1a8d5ccbSlrisora         IT_Pause,                   // 暂停
14*1a8d5ccbSlrisora         IT_Play_Pause,              // 播放/暂停
15*1a8d5ccbSlrisora         IT_Previous,                // 上一曲
16*1a8d5ccbSlrisora         IT_Next,                    // 下一曲
17*1a8d5ccbSlrisora         IT_Favorite_On,             // 添加到我喜欢的音乐(空心♥)
18*1a8d5ccbSlrisora         IT_Favorite_Off,            // 从我喜欢的音乐移除(实心♥)
19*1a8d5ccbSlrisora         IT_Media_Lib,               // 媒体库
20*1a8d5ccbSlrisora         IT_Playlist,                // 播放列表
21*1a8d5ccbSlrisora 
22*1a8d5ccbSlrisora         IT_Menu,                    // 菜单
23*1a8d5ccbSlrisora         IT_Full_Screen_On,          // 进入全屏
24*1a8d5ccbSlrisora         IT_Full_Screen_Off,         // 退出全屏
25*1a8d5ccbSlrisora         IT_Minimize,                // 最小化
26*1a8d5ccbSlrisora         IT_Maxmize_On,              // 进入最大化
27*1a8d5ccbSlrisora         IT_Maxmize_Off,             // 退出最大化
28*1a8d5ccbSlrisora         IT_Close,                   // 关闭
29*1a8d5ccbSlrisora 
30*1a8d5ccbSlrisora         IT_Play_Order,              // 顺序播放
31*1a8d5ccbSlrisora         IT_Loop_Playlist,           // 列表循环
32*1a8d5ccbSlrisora         IT_loop_track,              // 单曲循环
33*1a8d5ccbSlrisora         IT_Play_Shuffle,            // 无序播放
34*1a8d5ccbSlrisora         IT_Play_Random,             // 随机播放
35*1a8d5ccbSlrisora         IT_Play_Track,              // 单曲播放
36*1a8d5ccbSlrisora         IT_Setting,                 // 设置
37*1a8d5ccbSlrisora         IT_Equalizer,               // 均衡器
38*1a8d5ccbSlrisora         IT_Skin,                    // 切换界面(皮肤)
39*1a8d5ccbSlrisora         IT_Mini_On,                 // 进入迷你模式
40*1a8d5ccbSlrisora         IT_Mini_Off,                // 退出迷你模式
41*1a8d5ccbSlrisora         IT_Info,                    // 曲目信息
42*1a8d5ccbSlrisora         IT_Find,                    // 查找歌曲
43*1a8d5ccbSlrisora         IT_Dark_Mode_On,            // 进入深色模式(月亮)
44*1a8d5ccbSlrisora         IT_Dark_Mode_Off,           // 退出深色模式(太阳)
45*1a8d5ccbSlrisora         IT_Volume0,                 // 音量: 静音
46*1a8d5ccbSlrisora         IT_Volume1,                 // 音量: )
47*1a8d5ccbSlrisora         IT_Volume2,                 // 音量: ))
48*1a8d5ccbSlrisora         IT_Volume3,                 // 音量: )))
49*1a8d5ccbSlrisora         IT_Switch_Display,          // 切换显示(xml界面堆栈元素)
50*1a8d5ccbSlrisora 
51*1a8d5ccbSlrisora         IT_Folder,                  // 文件夹
52*1a8d5ccbSlrisora         IT_Lyric,                   // 歌词
53*1a8d5ccbSlrisora         IT_Playlist_Dock,           // 停靠播放列表/视图
54*1a8d5ccbSlrisora         IT_Help,                    // 帮助
55*1a8d5ccbSlrisora 
56*1a8d5ccbSlrisora         IT_Locate,                  // 定位
57*1a8d5ccbSlrisora 
58*1a8d5ccbSlrisora         IT_Triangle_Left,           // 向左三角形
59*1a8d5ccbSlrisora         IT_Triangle_Up,             // 向上三角形
60*1a8d5ccbSlrisora         IT_Triangle_Right,          // 向右三角形
61*1a8d5ccbSlrisora         IT_Triangle_Down,           // 向下三角形
62*1a8d5ccbSlrisora 
63*1a8d5ccbSlrisora         IT_NO_ICON,
64*1a8d5ccbSlrisora     };
65*1a8d5ccbSlrisora 
66*1a8d5ccbSlrisora     enum IconStyle
67*1a8d5ccbSlrisora     {
68*1a8d5ccbSlrisora         IS_Auto,
69*1a8d5ccbSlrisora         IS_OutlinedDark,            // 深色的图标(浅色模式用)
70*1a8d5ccbSlrisora         IS_OutlinedLight,           // 浅色的图标(深色模式用)
71*1a8d5ccbSlrisora         IS_Filled,
72*1a8d5ccbSlrisora         IS_Color,
73*1a8d5ccbSlrisora     };
74*1a8d5ccbSlrisora 
75*1a8d5ccbSlrisora     enum IconSize
76*1a8d5ccbSlrisora     {
77*1a8d5ccbSlrisora         IS_Default,                 // SM_CXICON * SM_CYICON
78*1a8d5ccbSlrisora         IS_DPI_16,
79*1a8d5ccbSlrisora         IS_DPI_16_Full_Screen,
80*1a8d5ccbSlrisora         IS_DPI_20,
81*1a8d5ccbSlrisora         IS_DPI_20_Full_Screen,
82*1a8d5ccbSlrisora         IS_DPI_32,
83*1a8d5ccbSlrisora         IS_DPI_32_Full_Screen,
84*1a8d5ccbSlrisora         IS_ORG_512,
85*1a8d5ccbSlrisora     };
86*1a8d5ccbSlrisora 
87*1a8d5ccbSlrisora     HICON GetHICON(IconType type, IconStyle style = IS_Auto, IconSize size = IS_DPI_16);
88*1a8d5ccbSlrisora 
89*1a8d5ccbSlrisora     static CSize GetIconSize(IconSize size);
90*1a8d5ccbSlrisora 
91*1a8d5ccbSlrisora private:
92*1a8d5ccbSlrisora 
93*1a8d5ccbSlrisora     int MakeKey(IconType type, IconStyle style, IconSize size)
94*1a8d5ccbSlrisora     {
95*1a8d5ccbSlrisora         ASSERT(style < 10 && size < 10);
96*1a8d5ccbSlrisora         return type * 100 + style * 10 + size;
97*1a8d5ccbSlrisora     }
98*1a8d5ccbSlrisora     std::tuple<UINT, UINT, UINT, UINT> GetIconID(IconType type);
99*1a8d5ccbSlrisora 
100*1a8d5ccbSlrisora     std::map<int, HICON> m_icon_map;
101*1a8d5ccbSlrisora };
102*1a8d5ccbSlrisora 
103