private void ExcludeFiles(IResource folder) { try { ResourceProxy proxy = new ResourceProxy(folder); proxy.BeginUpdate(); proxy.DeleteProp(_ftm.propLastModified); proxy.SetProp(FileProxy._propFileType, "Folder"); proxy.EndUpdateAsync(); string directory = folder.GetPropText(FileProxy._propDirectory); foreach (IResource child in folder.GetLinksTo(null, FileProxy._propParentFolder).ValidResources) { if (child.Type != FileProxy._folderResourceType) { if (child.GetPropText(FileProxy._propDirectory) != directory) { new ResourceProxy(child).SetProp(FileProxy._propDirectory, directory); } // do not delete permanent resource linked with any other resource, not only parent folder if (child.GetLinkTypeIds().Length == 1) { DeleteResource(child); } } } FileProxy.UpdateFoldersTreePane(folder); } catch (InvalidResourceIdException) {} catch (ResourceDeletedException) {} }
public static void RemoveFromSync(IResource contact, string newEntryID) { ResourceProxy proxy = new ResourceProxy(contact); proxy.BeginUpdate(); proxy.SetProp(PROP.EntryID, newEntryID); proxy.SetProp("UserCreated", true); proxy.EndUpdateAsync(); }
protected override void SetArticleNumbersRange(ref int firstArticle, ref int lastArticle) { int headersCount2Get = GetHeadersCount(); int currentLastArticle = _group.LastArticle; // first time last article is not set if (currentLastArticle == 0) { currentLastArticle = lastArticle - headersCount2Get; if (currentLastArticle < firstArticle - 1) { currentLastArticle = firstArticle - 1; } } else { if (firstArticle > currentLastArticle) { currentLastArticle = firstArticle - 1; } else if (_group.FirstArticle > lastArticle) { ResourceProxy proxy = new ResourceProxy(_group.Resource); proxy.BeginUpdate(); try { proxy.DeleteProp(NntpPlugin._propFirstArticle); proxy.DeleteProp(NntpPlugin._propLastArticle); } finally { proxy.EndUpdateAsync(); } } } if (headersCount2Get < lastArticle - currentLastArticle) { lastArticle = currentLastArticle + headersCount2Get; firstArticle = currentLastArticle + 1; } else { headersCount2Get = lastArticle - currentLastArticle; if (headersCount2Get <= 0) { lastArticle = 0; } else { firstArticle = currentLastArticle + 1; } } }
public static void RemoveFromSync(IResource contact, bool removeEntryID) { ResourceProxy proxy = new ResourceProxy(contact); proxy.AsyncPriority = JobPriority.Immediate; proxy.BeginUpdate(); if (removeEntryID) { proxy.DeleteProp(PROP.EntryID); } proxy.SetProp("UserCreated", true); proxy.EndUpdateAsync(); }
public void Sync(RemoteField itemJira) { ResourceProxy proxy = new ResourceProxy(Resource, AsyncPriority); proxy.BeginUpdate(); proxy.SetProp(Core.Props.Name, itemJira.name); if (Async) { proxy.EndUpdateAsync(); } else { proxy.EndUpdate(); } }
protected override void Execute() { if (_resource.Id != -1 && _resource.GetIntProp(Props.EnclosureDownloadingState) != DownloadState.NotDownloaded) { // Determine if we want update some of the resource properties (create proxy for that) int nTotalLength = GetLength(); bool bUpdateState = _resource.GetIntProp(Props.EnclosureDownloadingState) != DownloadState.InProgress; bool bUpdateLength = ((nTotalLength > 0) && (nTotalLength != _resource.GetIntProp(Props.EnclosureSize))); if ((bUpdateState) || (bUpdateLength)) { ResourceProxy proxy = new ResourceProxy(_resource); proxy.BeginUpdate(); if (bUpdateState) { proxy.SetProp(Props.EnclosureDownloadingState, DownloadState.InProgress); } if (bUpdateLength) { proxy.SetProp(Props.EnclosureSize, nTotalLength + _startPosition); } proxy.EndUpdateAsync(); } // Check if the downloaded size should be updated // As we take the actual size from the disc file, not from the property, its accuracy is not needed; overwrite the property only if the percent value changes, as it's used only for the percentage display if (nTotalLength > 0) // The total-size info is available (if it's not, we do not have the percentage anyway) { int nSize = GetDownloadedSize(); // Size we've downloaded int nOldSize = _resource.GetIntProp(Props.EnclosureDownloadedSize); // The prev size property value if ((nSize * 100 / nTotalLength) != (nOldSize * 100 / nTotalLength)) // Percentage has changed, should write a new value { Core.UserInterfaceAP.QueueJob("Update Enclosure Downloaded Size", new UpdateDownloadedSizeDelegate(UpdateDownloadedSize), nSize); // Schedulle to the UI AP so that it merges the too-frequent updates for enclosures that download too fast, that reduces flicker } } // Do the download step base.Execute(); } else { InvokeAfterWait(null, null); new ResourceProxy(_resource).SetProp(Props.EnclosureDownloadingState, DownloadState.NotDownloaded); _queued = false; EnclosureDownloadManager.DownloadNextEnclosure(); } }
public void Sync(RemoteUser itemJira) { ResourceProxy proxy = new ResourceProxy(Resource, AsyncPriority); proxy.BeginUpdate(); proxy.SetProp(Core.Props.Name, itemJira.name); proxy.SetProp(Props.FullName, itemJira.fullname); proxy.SetProp(Props.Email, itemJira.email); if (Async) { proxy.EndUpdateAsync(); } else { proxy.EndUpdate(); } }
public void Sync(RemoteStatus itemJira) { ResourceProxy proxy = new ResourceProxy(Resource, AsyncPriority); proxy.BeginUpdate(); proxy.SetProp(Core.Props.Name, itemJira.name); proxy.SetProp(Core.Props.LongBody, itemJira.description); proxy.SetProp(Props.IconUri, itemJira.icon); if (Async) { proxy.EndUpdateAsync(); } else { proxy.EndUpdate(); } }
private void UpdateAttachments() { _tracer.Trace("prepare UpdateAttachments"); IResourceList attachments = Core.ResourceStore.FindResourcesWithProp(null, PROP.AttachmentIndex); int count = attachments.Count; int processed = 0; UpdateProgress(processed, count); int ticks = System.Environment.TickCount; foreach (IResource attach in attachments.ValidResources) { try { IEAttach attachment = new OutlookAttachment(attach).OpenAttach(); if (attachment == null) { continue; } using ( attachment ) { string contentID = attachment.GetStringProp(MAPIConst.PR_ATTACH_CONTENT_ID); int attachNum = attachment.GetLongProp(MAPIConst.PR_ATTACH_NUM); int attachMethod = attachment.GetLongProp(MAPIConst.PR_ATTACH_METHOD); ResourceProxy resAttach = new ResourceProxy(attach); resAttach.BeginUpdate(); resAttach.SetProp(CommonProps.ContentId, contentID); resAttach.SetProp(PROP.PR_ATTACH_NUM, attachNum); resAttach.SetProp(PROP.AttachMethod, attachMethod); resAttach.EndUpdateAsync(); } } catch {} ++processed; if (System.Environment.TickCount - ticks > 250) { ticks = System.Environment.TickCount; UpdateProgress(processed, count); } } }
public override void Save() { ResourceProxy proxy = new ResourceProxy(_fragment); proxy.BeginUpdate(); proxy.SetProp(Core.Props.Subject, _edtName.Text); if (_edtAnnotation.Text.Trim().Length > 0) { proxy.SetProp(Core.Props.Annotation, _edtAnnotation.Text); } else { proxy.DeleteProp(Core.Props.Annotation); } proxy.EndUpdateAsync(); // Save size Core.SettingStore.WriteInt("Clippings", "AnnotationEditWindowHeight", _panelAnnotation.Height); Core.SettingStore.WriteBool("Clippings", "OpenAfterSave", _chkOpenAfterSave.Checked); }
public void Save(IResource contact) { ResourceProxy proxy = new ResourceProxy(contact); proxy.BeginUpdate(); try { proxy.AsyncPriority = JobPriority.Immediate; for (int i = 0; i < _emailsList.Items.Count; ++i) { ListViewItem item = _emailsList.Items[i]; IResource account = (IResource)Core.ResourceAP.RunUniqueJob( new FindOrCreateEmailAccountDelegate(Core.ContactManager.FindOrCreateEmailAccount), item.Text); proxy.AddLink(Core.ContactManager.Props.LinkEmailAcct, account); _originalAccounts.Remove(item.Text); if (item.SubItems[1].Text == DefltMarker) { proxy.SetProp(ContactManager._propDefaultAccount, account); } new ResourceProxy(account).SetProp(Core.ContactManager.Props.PersonalAccount, _isStartupMode || item.Checked); } // Delete links to those accounts which were originally // connected to the contact and did not keep their place in // the list (were removed or renamed). foreach (HashSet.Entry e in _originalAccounts) { IResource accnt = Core.ResourceStore.FindUniqueResource( "EmailAccount", Core.ContactManager.Props.EmailAddress, e.Key); if (accnt != null) { Core.ResourceAP.RunUniqueJob(new SplitDelegate(HardRemoveAccountFromContact), accnt, contact); } } } finally { proxy.EndUpdateAsync(); } }
public void Sync(RemoteProject projectJira) { // Sync the project itself ResourceProxy proxy = new ResourceProxy(Resource, AsyncPriority); proxy.BeginUpdate(); proxy.SetProp(Props.Key, projectJira.key); proxy.SetProp(Core.Props.LongBody, projectJira.description); proxy.SetProp(Core.Props.Name, projectJira.name); proxy.SetProp(Props.ProjectUri, projectJira.projectUrl); proxy.SetProp(Props.Uri, projectJira.url); if (Async) { proxy.EndUpdateAsync(); } else { proxy.EndUpdate(); } // Sync the components SyncComponents(); }
private void EnumerateFiles(IResource folder) { try { DateTime lastUpdated = folder.GetDateProp(_ftm.propLastModified); string directory = folder.GetPropText(FileProxy._propDirectory); FileInfo[] fileInfos = IOTools.GetFiles(directory); if (fileInfos != null) { DateTime updated = DateTime.Now; HashMap fileNames = null; /** * at first create missing resources */ if (fileInfos.Length > 0) { fileNames = new HashMap(fileInfos.Length / 2); foreach (FileInfo fileInfo in fileInfos) { fileNames[IOTools.GetName(fileInfo)] = fileInfo; if (IOTools.GetLastWriteTime(fileInfo) > lastUpdated && (_indexHidden || (IOTools.GetAttributes(fileInfo) & FileAttributes.Hidden) == 0)) { FindOrCreateFile(fileInfo, false); } } } /** * then remove obsolete resources */ foreach (IResource child in folder.GetLinksTo(null, FileProxy._propParentFolder).ValidResources) { if (child.Type == FileProxy._folderResourceType) { if (!Directory.Exists(child.GetPropText(FileProxy._propDirectory))) { DeleteResource(child); } } else { if (child.GetPropText(FileProxy._propDirectory) != directory) { new ResourceProxy(child).SetProp(FileProxy._propDirectory, directory); } string name = child.GetPropText(Core.Props.Name); HashMap.Entry E = (fileNames == null) ? null : fileNames.GetEntry(name); /** * check if file exists */ if (E == null) { DeleteResource(child); } else { /** * if exists, check its atributes */ FileInfo fileInfo = (FileInfo)E.Value; if (fileInfo == null || (!_indexHidden && (IOTools.GetAttributes(fileInfo) & FileAttributes.Hidden) != 0)) { DeleteResource(child); } } } } ResourceProxy proxy = new ResourceProxy(folder); proxy.BeginUpdate(); proxy.SetProp(_ftm.propLastModified, updated); proxy.SetProp(FileProxy._propFileType, "Folder"); proxy.EndUpdateAsync(); FileProxy.UpdateFoldersTreePane(folder); } } catch (InvalidResourceIdException) {} catch (ResourceDeletedException) {} }