Ejemplo n.º 1
0
        private ObservableCollection<Folder> InitializeFolders()
        {
            // get the default folders and enqueue an operation to insert each one of them and their subitems
            var folders = new ObservableCollection<Folder>(UserConstants.DefaultFolders(null));
            foreach (var folder in folders)
            {
                string queueName = folder.Name.StartsWith("$") ? RequestQueue.SystemQueue : RequestQueue.UserQueue;
                FolderDictionary.Add(folder.ID, folder);
                RequestQueue.EnqueueRequestRecord(queueName,
                    new RequestQueue.RequestRecord() { ReqType = RequestQueue.RequestRecord.RequestType.Insert, Body = folder, ID = folder.ID, IsDefaultObject = true });

                foreach (var item in folder.Items)
                {
                    RequestQueue.EnqueueRequestRecord(queueName,
                        new RequestQueue.RequestRecord() { ReqType = RequestQueue.RequestRecord.RequestType.Insert, Body = item, ID = item.ID, IsDefaultObject = true });

                }
                StorageHelper.WriteFolder(folder);
            }

            // extract the $Client folder and handle it specially
            var cf = folders.Single(f => f.Name == SystemEntities.Client);
            folders.Remove(cf);
            ClientFolder = cf;
            // extract the $PhoneClient folder and handle it specially
            var pcf = folders.Single(f => f.Name == SystemEntities.PhoneClient);
            folders.Remove(pcf);
            PhoneClientFolder = pcf;

            // initialize the SelectedCount for a few default folders and lists
            /*
            foreach (var folder in folders)
            {
                if (folder.Name == UserEntities.People ||
                    folder.Name == UserEntities.Places)
                {
                    ListMetadataHelper.IncrementListSelectedCount(pcf, folder);
                    continue;
                }
                foreach (var item in folder.Items)
                {
                    if (item.Name == UserEntities.Tasks ||
                        item.Name == UserEntities.Groceries)
                    {
                        ListMetadataHelper.IncrementListSelectedCount(pcf, item);
                        continue;
                    }
                }                
            }
            */

            return folders;
        }
Ejemplo n.º 2
0
        public void EraseAllData()
        {
            foreach (var tl in Folders)
                StorageHelper.DeleteFolder(tl);
            StorageHelper.WriteConstants(null);
            StorageHelper.WriteDefaultFolderID(null);
            StorageHelper.WriteItemTypes(null);
            StorageHelper.WriteTags(null);
            StorageHelper.WriteFolders(null);
            StorageHelper.WriteUserCredentials(null);
            RequestQueue.DeleteQueue(RequestQueue.UserQueue);
            RequestQueue.DeleteQueue(RequestQueue.SystemQueue);

            IsDataLoaded = false;
            LastNetworkOperationStatus = false;
            if (FolderDictionary != null)
                FolderDictionary.Clear();

            LoadData();
        }
Ejemplo n.º 3
0
        private void GetUserDataCallback(User user)
        {
            // trace callback
            TraceHelper.AddMessage(String.Format("Finished Get User Data: {0}", constants == null ? "null" : "success"));

            if (user != null)
            {
                // reset and save the user credentials
                user.Synced = true;
                User = user;

                // reset the user's item types (which will also add the user's ItemTypes to the system ItemType list)
                UserItemTypes = user.ItemTypes;

                // reset and save the user's tags
                Tags = user.Tags;

                // find the $Client folder and handle it specially
                Folder cf = null;
                if (user.Folders.Any(f => f.Name == SystemEntities.Client))
                {
                    cf = user.Folders.First(f => f.Name == SystemEntities.Client);
                    user.Folders.Remove(cf);
                }

                // find the $PhoneClient folder and handle it specially
                Folder pcf = null;
                if (user.Folders.Any(f => f.Name == SystemEntities.PhoneClient))
                {
                    pcf = user.Folders.First(f => f.Name == SystemEntities.PhoneClient);
                    user.Folders.Remove(pcf);
                }

                // reset and save the user's folders
                Folders = user.Folders;

                // remove existing folders
                foreach (Folder f in FolderDictionary.Values)
                    StorageHelper.DeleteFolder(f);
                FolderDictionary.Clear();

                // store the folders individually
                foreach (Folder f in folders)
                {                    
                    // store the folder in the dictionary
                    FolderDictionary[f.ID] = f;

                    // create the tags collection (client-only property)
                    foreach (Item i in f.Items)
                        i.CreateTags(tags);

                    // save the folder in its own isolated storage file
                    StorageHelper.WriteFolder(f);
                }

                // store the $Client folder
                if (cf != null)
                    ClientFolder = cf;
                // store the $PhoneClient folder
                if (pcf != null)
                    PhoneClientFolder = pcf;
            }

            // invoke the SyncComplete event handler if it was set
            if (SyncComplete != null)
                SyncComplete(this, new SyncCompleteEventArgs(SyncCompleteArg));
        }