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