Exemple #1
0
 //-------------------------------------------
 private void AddToDicImages(CCustomizableListItem item, CCacheImage cache)
 {
     m_dicItemToImage[item] = cache;
     if (m_dicItemToImage.Count > m_nMaxImagesInCache)
     {
         //Supprime l'image la plus vieille
         DateTime?dt = null;
         KeyValuePair <CCustomizableListItem, CCacheImage>?toDelete = null;
         foreach (KeyValuePair <CCustomizableListItem, CCacheImage> kv in m_dicItemToImage)
         {
             if (dt == null || kv.Value.LastAcces < dt.Value)
             {
                 toDelete = kv;
                 dt       = kv.Value.LastAcces;
             }
         }
         if (toDelete != null)
         {
             if (toDelete.Value.Value.Image != null)
             {
                 toDelete.Value.Value.Image.Dispose();
             }
             m_dicItemToImage.Remove(toDelete.Value.Key);
         }
     }
 }
Exemple #2
0
 //-------------------------------------------
 public void RefreshItem(CCustomizableListItem item)
 {
     if (item != null)
     {
         lock (typeof(CLockerImages))
         {
             CCacheImage cache = null;
             if (m_dicItemToImage.TryGetValue(item, out cache))
             {
                 if (cache.Image != null)
                 {
                     cache.Image.Dispose();
                 }
                 m_dicItemToImage.Remove(item);
             }
         }
     }
 }
Exemple #3
0
 //-------------------------------------------
 public Image GetImage(CCustomizableListItem item, bool bKeepItemEnCours)
 {
     if (item == null)
     {
         return(null);
     }
     lock (typeof(CLockerImages))
     {
         CCacheImage cache = null;
         if (m_dicItemToImage.TryGetValue(item, out cache))
         {
             if (cache.Image.Size == new Size(m_controle.Size.Width, item.Height != null?item.Height.Value : m_controle.Height))
             {
                 cache.LastAcces = DateTime.Now;
                 return(cache.Image);
             }
             else
             {
                 cache = null;
             }
         }
         if (cache == null)
         {
             cache = new CCacheImage();
             if (m_controle != null)
             {
                 bool bOldEnEdition = m_bControlEnEdition;
                 m_bControlEnEdition = false;
                 cache.Image         = m_controle.CreateImage(item, bKeepItemEnCours);
                 m_bControlEnEdition = bOldEnEdition;
                 if (cache.Image != null)
                 {
                     AddToDicImages(item, cache);
                     return(cache.Image);
                 }
             }
         }
     }
     return(null);
 }