Пример #1
0
        private static Dictionary<PwGroup, UInt32> WriteGroups(Kdb3Manager mgr,
            PwGroup pgRoot)
        {
            Dictionary<PwGroup, UInt32> dictGroups = new Dictionary<PwGroup, uint>();

            uint uGroupIndex = 1;
            DateTime dtNeverExpire = Kdb3Manager.GetNeverExpireTime();

            GroupHandler gh = delegate(PwGroup pg)
            {
                if(pg == pgRoot) return true;

                Kdb3Group grp = new Kdb3Group();

                grp.GroupId = uGroupIndex;
                dictGroups[pg] = grp.GroupId;

                grp.ImageId = (uint)pg.IconId;
                grp.Name = pg.Name;
                grp.CreationTime.Set(pg.CreationTime);
                grp.LastModificationTime.Set(pg.LastModificationTime);
                grp.LastAccessTime.Set(pg.LastAccessTime);

                if(pg.Expires)
                    grp.ExpirationTime.Set(pg.ExpiryTime);
                else grp.ExpirationTime.Set(dtNeverExpire);

                grp.Level = (ushort)(pg.GetLevel() - 1);

                if(pg.IsExpanded) grp.Flags |= (uint)Kdb3GroupFlags.Expanded;

                if(!mgr.AddGroup(ref grp))
                {
                    Debug.Assert(false);
                    throw new InvalidOperationException();
                }

                ++uGroupIndex;
                return true;
            };

            pgRoot.TraverseTree(TraversalMethod.PreOrder, gh, null);
            Debug.Assert(dictGroups.Count == (int)(uGroupIndex - 1));
            return dictGroups;
        }
Пример #2
0
        private static void WriteGroup(PwGroup pg, PwGroup pgRoot, ref uint uGroupIndex,
            Dictionary<PwGroup, UInt32> dictGroups, DateTime dtNeverExpire,
            Kdb3Manager mgr, bool bForceLevel0)
        {
            if(pg == pgRoot) return;

            Kdb3Group grp = new Kdb3Group();

            grp.GroupId = uGroupIndex;
            dictGroups[pg] = grp.GroupId;

            grp.ImageId = (uint)pg.IconId;
            grp.Name = pg.Name;
            grp.CreationTime.Set(pg.CreationTime);
            grp.LastModificationTime.Set(pg.LastModificationTime);
            grp.LastAccessTime.Set(pg.LastAccessTime);

            if(pg.Expires)
                grp.ExpirationTime.Set(pg.ExpiryTime);
            else grp.ExpirationTime.Set(dtNeverExpire);

            grp.Level = (bForceLevel0 ? (ushort)0 : (ushort)(pg.GetLevel() - 1));

            if(pg.IsExpanded) grp.Flags |= (uint)Kdb3GroupFlags.Expanded;

            if(!mgr.AddGroup(ref grp))
            {
                Debug.Assert(false);
                throw new InvalidOperationException();
            }

            ++uGroupIndex;
        }