private void UpdateImageLists(bool bForce)
{
if(!bForce)
{
if(!m_docMgr.ActiveDatabase.UINeedsIconUpdate) return;
m_docMgr.ActiveDatabase.UINeedsIconUpdate = false;
}
int cx = DpiUtil.ScaleIntX(16);
int cy = DpiUtil.ScaleIntY(16);
// // foreach(Image img in m_ilClientIcons.Images) imgList.Images.Add(img);
// List<Image> lStdImages = new List<Image>();
// foreach(Image imgStd in m_ilClientIcons.Images)
// {
// // Plugins may supply DPI-scaled images by changing m_ilClientIcons
// bool bStd = (imgStd.Height == 16);
// lStdImages.Add(bStd ? DpiUtil.ScaleImage(imgStd, false) : imgStd);
// }
if(m_lStdClientImages == null)
{
ImageArchive arStd = new ImageArchive();
arStd.Load(DpiUtil.ScalingRequired ?
Properties.Resources.Images_Client_HighRes :
Properties.Resources.Images_Client_16);
m_lStdClientImages = arStd.GetImages(cx, cy, true);
}
// ImageList imgListCustom = UIUtil.BuildImageList(
// m_docMgr.ActiveDatabase.CustomIcons, cx, cy);
// foreach(Image imgCustom in imgListCustom.Images)
// imgList.Images.Add(imgCustom); // Breaks alpha partially
List<Image> lCustom = UIUtil.BuildImageListEx(
m_docMgr.ActiveDatabase.CustomIcons, cx, cy);
List<Image> lAll = new List<Image>(m_lStdClientImages);
lAll.AddRange(lCustom);
ImageList imgList = new ImageList();
imgList.ImageSize = new Size(cx, cy);
imgList.ColorDepth = ColorDepth.Depth32Bit;
imgList.Images.AddRange(lAll.ToArray());
Debug.Assert(imgList.Images.Count == ((int)PwIcon.Count + lCustom.Count));
m_ilCurrentIcons = imgList;
if(UIUtil.VistaStyleListsSupported)
{
m_tvGroups.ImageList = imgList;
m_lvEntries.SmallImageList = imgList;
}
else
{
ImageList imgSafe = UIUtil.ConvertImageList24(lAll,
cx, cy, AppDefs.ColorControlNormal);
m_tvGroups.ImageList = imgSafe; // TreeView doesn't fully support alpha on < Vista
m_lvEntries.SmallImageList = ((WinUtil.IsAtLeastWindowsVista ||
WinUtil.IsWindowsXP) ? imgList : imgSafe);
}
}