Example #1
0
        /// <summary>
        /// Save current day-chunk arrangement if there are changes
        /// </summary>
        public void SaveChunks(bool force = false)
        {
            if (!force && !VM.Chunks.Any(c => c.IsDirty))
            {
                return;
            }
            var gday = Globals.DayChunks.Days.FirstOrDefault(d => d.Date == Date);

            if (gday == null)
            {
                gday = new MultiDayChunkSet.DayChunkSet {
                    Date = Date
                }; Globals.DayChunks.Days.Add(gday);
            }
            bool isFirst = true;

            gday.Chunks.Clear();
            foreach (var c in VM.Chunks)
            {
                c.IsDirty = false;
                long[] boxIds = null;
                if (!isFirst)
                {
                    boxIds = c.Items.Select(i => i.Persistent.Box.RowId).ToArray();
                }
                gday.Chunks.Add(new MultiDayChunkSet.Chunk {
                    Title = c.Title, BoxIds = boxIds
                });
                isFirst = false;
            }
            Globals.UI.SaveDayChunks();
        }
Example #2
0
 /// <summary>
 /// loose hashing algorithm to detect changes in a set of displayable data
 /// </summary>
 static int HashContent(List <AgendaEntry> agendaItems, MultiDayChunkSet.DayChunkSet chunkList)
 {
     if (chunkList == null || agendaItems == null)
     {
         return(0);
     }
     unchecked
     {
         int hash = 0;
         foreach (var a in agendaItems)
         {
             hash += (int)a.Box.RowId + a.Box.Title.GetHashCode() + a.Box.BoxTime.GetHashCode();
         }
         foreach (var c in chunkList.Chunks)
         {
             int titleHash = c.Title.GetHashCode();
             hash += titleHash;
             if (c.BoxIds != null && c.BoxIds.Length > 0)
             {
                 hash += (int)c.BoxIds.Sum(id => id + titleHash);
             }
         }
         hash += chunkList.Date.GetHashCode();
         return(hash);
     }
 }