#region /* ----------------------------------------------------------------------- * * * Copyright 2011-2012 GRNET S.A. All rights reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * 1. Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * The views and conclusions contained in the software and * documentation are those of the authors and should not be * interpreted as representing official policies, either expressed * or implied, of GRNET S.A. * * ----------------------------------------------------------------------- */ #endregion using System.Collections.Generic; using System.Diagnostics; using System.IO; using Pithos.Interfaces; using Pithos.Network; namespace Pithos.Core { public interface IStatusNotification { void NotifyChange(string status,TraceLevel level=TraceLevel.Info); void NotifyChangedFile(string filePath); void NotifyAccount(AccountInfo policy); void NotifyConflicts(IEnumerable conflictFiles, string message); void NotifyForFiles(IEnumerable files, string message,TraceLevel level); void Notify(Notification notification); void SetPithosStatus(PithosStatus status); void SetPithosStatus(PithosStatus localSyncing, string format); //Notifier GetNotifier(Notification startNotification, Notification endNotification); Notifier GetNotifier(string startMessage, string endMessage,bool isActive=true,params object[] args); } public class Notification { public TraceLevel Level { get; set; } public string Title { get; set; } public string Message { get; set; } public Notification() { Level=TraceLevel.Info; Title = ""; Message = ""; } } public class StatusNotification:Notification { public StatusNotification(string title) { Level = TraceLevel.Info; Title = title; } } public class ProgressNotification:Notification { public string FileName { get; set; } public long Block { get; set; } public int TotalBlocks { get; set; } public long FileSize { get; set; } public string Action { get; set; } public int BlockPercentage { get; set; } public ProgressNotification(string fileName, string action, long block, int blockPercentage,int totalBlocks, long fileSize) { FileName = fileName; Block = block; TotalBlocks = totalBlocks; FileSize = fileSize; Action = action; BlockPercentage = blockPercentage; } } public class Notification:Notification { public T Data { get; set; } } public class FilesNotification:Notification> { } public class PollNotification:Notification { public PollNotification() { Level=TraceLevel.Verbose; Title = "Pithos"; Message = "Polling"; } } public class CloudNotification:Notification { } public class CloudDeleteNotification:CloudNotification { } public class ExpirationNotification:Notification { public ExpirationNotification(AccountSettings account) { Data = account; Level = TraceLevel.Error; Title = "Account key expired"; Message = string.Format("Please renew the key for the account {0} from the Preferences page", account.AccountName); } } }