Exemple #1
0
 /// <summary>
 /// Sets the virtual container. This overwrite the <see cref="Content" /> list member.
 /// Content must by VirtualContainer!
 /// </summary>
 /// <param name="level">The level.</param>
 /// <param name="hiIndex">Index of the higher level virtual container (VC-4).</param>
 /// <param name="lowIndex">Index of the lower level virtual container.</param>
 /// <param name="content">The content. Virtual Container</param>
 /// <returns>
 /// True - success, False - fail
 /// </returns>
 public bool SetVirtualContainer(VirtualContainerLevel level, int hiIndex, int?lowIndex, IContent content)
 {
     if (VirtualContainer.isVirtualContainer(content))
     {
         VirtualContainer contentVC = (VirtualContainer)content;
         if (level == contentVC.Level && this.CalculateFreeSpace() >= Frame.ContainerSpaceConverter(level))
         {
             if (level == VirtualContainerLevel.VC4)
             {
                 if (this.Content.Count >= hiIndex + 1)
                 {
                     this.Content[hiIndex] = content;
                     return(true);
                 }
                 else
                 {
                     return(false);
                 }
             }
             else
             {
                 //int higherIndex = GetHigherContainerIndex(level, index);
                 if (this.Content.Count >= hiIndex + 1 && lowIndex != null)
                 {
                     int      lowerIndex           = (int)lowIndex;
                     IContent tempVirtualContainer = this.Content[hiIndex];
                     if (VirtualContainer.isVirtualContainer(tempVirtualContainer) && ((VirtualContainer)tempVirtualContainer).TryAddContainer(level, lowerIndex))
                     {
                         ((VirtualContainer)tempVirtualContainer).SetVirtualContainerAtIndex(level, lowerIndex, content);
                     }
                     else if (tempVirtualContainer == null) //Frame does not have VC4 to keep lower virtual container levels
                     {
                         this.Content[hiIndex] = new VirtualContainer(VirtualContainerLevel.VC4);
                         tempVirtualContainer  = this.Content[hiIndex];
                         ((VirtualContainer)tempVirtualContainer).SetVirtualContainerAtIndex(level, lowerIndex, content);
                     }
                     return(true);
                 }
                 else
                 {
                     return(false);
                 }
             }
         }
         else
         {
             return(false);
         }
     }
     return(false);
 }