Exemplo n.º 1
0
        void OnItemConflicting(object sender, SimpleSyncItemConflictingEventArgs e)
        {
            NotifyChange("Conflict found");
            switch (e.ConflictKind)
            {
            case ConcurrencyConflictKind.LocalDeleteRemoteUpdate:
                var data = (IFileDataRetriever)e.RemoteItemData;
                if (!data.FileData.IsDirectory)
                {
                    try
                    {
                        NotifyChange("Creating backup...");
                        api.BackupFile(data.FileData.RelativePath);
                    }
                    catch (ApplicationException ex)
                    {
                        NotifyError(ex);
                    }
                }
                e.SetResolutionAction(ConflictResolutionAction.SourceWins);
                NotifyChange("Remote won");
                break;

            case ConcurrencyConflictKind.LocalUpdateRemoteDelete:
                e.SetResolutionAction(ConflictResolutionAction.DestinationWins);
                NotifyChange("Local won");
                break;

            case ConcurrencyConflictKind.UpdateUpdate:
                IDictionary <uint, ItemField> expectedFields = (IDictionary <uint, ItemField>)e.LocalItem;
                string name = (string)expectedFields[ItemFields.CUSTOM_FIELD_NAME].Value;
                try
                {
                    NotifyChange("Creating backup...");
                    api.BackupFile(name);
                }
                catch (ApplicationException ex)
                {
                    NotifyError(ex);
                }
                e.SetResolutionAction(ConflictResolutionAction.SourceWins);
                NotifyChange("Remote won");
                break;
            }
        }
Exemplo n.º 2
0
        void OnItemConflicting(object sender, SimpleSyncItemConflictingEventArgs e)
        {
            NotifyChange("Conflict found");
            switch (e.ConflictKind)
            {
                case ConcurrencyConflictKind.LocalDeleteRemoteUpdate:
                    var data = (IFileDataRetriever)e.RemoteItemData;
                    if (!data.FileData.IsDirectory)
                    {
                        try
                        {
                            NotifyChange("Creating backup...");
                            api.BackupFile(data.FileData.RelativePath);
                        }
                        catch (ApplicationException ex)
                        {
                            NotifyError(ex);
                        }
                    }
                    e.SetResolutionAction(ConflictResolutionAction.SourceWins);
                    NotifyChange("Remote won");
                    break;
                case ConcurrencyConflictKind.LocalUpdateRemoteDelete:
                    e.SetResolutionAction(ConflictResolutionAction.DestinationWins);
                    NotifyChange("Local won");
                    break;
                case ConcurrencyConflictKind.UpdateUpdate:
                    IDictionary<uint, ItemField> expectedFields = (IDictionary<uint, ItemField>)e.LocalItem;
                    string name = (string)expectedFields[ItemFields.CUSTOM_FIELD_NAME].Value;
                    try
                    {
                        NotifyChange("Creating backup...");
                        api.BackupFile(name);
                    }
                    catch (ApplicationException ex)
                    {
                        NotifyError(ex);
                    }
                    e.SetResolutionAction(ConflictResolutionAction.SourceWins);
                    NotifyChange("Remote won");
                    break;
            }

        }