protected void StarCore() { var previousSelection = new List <Message>(SelectedMessages); // Contains instance copies of messages, this will be the old data // before the do is applied. var messagesCopy = SelectedMessages .Select(m => m.DuckCopy <Message>()) .ToList(); #region Do action Action doAction = delegate { foreach (var message in SelectedMessages.ToList()) { if (SelectedMessage.IsStarred) { SelectedMessage.SetUnstarred(); } else { SelectedMessage.SetStarred(); } } viewFilter.UpdateCurrentViewAsync(); flipper.Delay(); }; #endregion #region Undo action Action undoAction = delegate { foreach (var message in previousSelection) { // Get old message from copied data Message message1 = message; var oldMessage = messagesCopy.Single(m => m.MessageId == message1.MessageId); // Reverts the previous action message.IsStarred = oldMessage.IsStarred; message.TargetMessageState = oldMessage.TargetMessageState; AsyncUpdateQueue.Enqueue(message); } // We cannot use the IEditableObject appraoch here because the conversation in question // probably might not be in view anymore. So instead we will refresh the whole view. viewFilter.RebuildCurrentViewAsync(); }; #endregion ClientState.Current.UndoManager.Execute(new HistoryAction(doAction, undoAction)); }
public void Delete(bool deleteConversations) { // Contains the same references as in SelectedMessages, // these references can change when un-doing so keep a snapshot around var previousSelection = deleteConversations ? SelectedMessages.SelectMany(m => m.Conversation.Messages) .Distinct() // Select all messages from selected conversations .ToList() : new List <Message>(SelectedMessages); // Contains instance copies of messages, this will be the old data // before the do is applied. var messagesCopy = previousSelection .Select(m => m.DuckCopy <Message>()) .ToList(); #region Do action Action doAction = delegate { foreach (var message in previousSelection) { message.MarkDeleted(); } viewFilter.UpdateCurrentViewAsync(); flipper.Delay(); }; #endregion #region Undo action Action undoAction = delegate { foreach (var message in previousSelection) { // Get old message from copied data Message message1 = message; var oldMessage = messagesCopy.Single(m => m.MessageId == message1.MessageId); message.IsRead = oldMessage.IsRead; message.TargetMessageState = oldMessage.TargetMessageState; message.MessageFolder = oldMessage.MessageFolder; AsyncUpdateQueue.Enqueue(message); } // We cannot use the IEditableObject appraoch here because the conversation in question // probably might not be in view anymore. So instead we will refresh the whole view. viewFilter.RebuildCurrentViewAsync(); }; #endregion ClientState.Current.UndoManager.Execute(new HistoryAction(doAction, undoAction)); }
public void RemoveLabel(Label label) { var previousSelection = new List <Message>( SelectedMessages.SelectMany(m => m.Conversation.Messages) .Distinct()); // Contains instance copies of messages, this will be the old data // before the do is applied. var messagesCopy = previousSelection .Select(m => m.DuckCopy <Message>()) .ToList(); #region Do action Action doAction = delegate { foreach (var message in SelectedMessages.ToList()) { message.RemoveLabel(label); } viewFilter.UpdateCurrentViewAsync(); flipper.Delay(); }; #endregion #region Undo action Action undoAction = delegate { foreach (var message in previousSelection) { // Get old message from copied data Message message1 = message; var oldMessage = messagesCopy.Single(m => m.MessageId == message1.MessageId); // Reverts the previous action message.Labels = oldMessage.Labels; message.LabelsList.Replace(oldMessage.LabelsList); message.SendLabels = oldMessage.SendLabels; AsyncUpdateQueue.Enqueue(message); } // We cannot use the IEditableObject appraoch here because the conversation in question // probably might not be in view anymore. So instead we will refresh the whole view. viewFilter.RebuildCurrentViewAsync(); }; #endregion ClientState.Current.UndoManager.Execute(new HistoryAction(doAction, undoAction)); EventBroker.Publish(AppEvents.MessageLabelsUpdated, this); }
private void MessagesForwardExecute() { var messages = SelectedMessages.OfType <TLMessage>().Where(x => x.Id != 0).OrderBy(x => x.Id).ToList(); if (messages.Count > 0) { SelectionMode = ListViewSelectionMode.None; App.InMemoryState.ForwardMessages = new List <TLMessage>(messages); NavigationService.GoBackAt(0); } }
public void Handle(DialogRemovedEventArgs args) { if (With == args.Dialog.With) { Execute.BeginOnUIThread(() => { Messages.Clear(); SelectedMessages.Clear(); SelectionMode = Windows.UI.Xaml.Controls.ListViewSelectionMode.None; }); } }
internal Task MarkSelectionAsNotSeenAsync() { var messages = SelectedMessages.ToArray(); return(Task.Run(() => { var tasks = messages .Where(x => x.IsSeen) .GroupBy(x => x.Mailbox) .Select(x => x.Key.MarkAsNotSeenAsync(x.ToArray())); Task.WhenAll(tasks); })); }
private void MessagesForwardExecute() { var messages = SelectedMessages.OfType <TLMessage>().Where(x => x.Id != 0).OrderBy(x => x.Id).ToList(); if (messages.Count > 0) { SelectionMode = ListViewSelectionMode.None; App.InMemoryState.ForwardMessages = new List <TLMessage>(messages); NavigationService.GoBackAt(0); } //_stateService.ForwardMessages = Messages.Where(x => x.IsSelected).ToList(); //_stateService.ForwardMessages.Reverse(); //SelectionMode = Windows.UI.Xaml.Controls.ListViewSelectionMode.None; //NavigationService.GoBack(); }
private async void OnMessageSelectionReceived(EventPattern <object> obj) { Application.Current.AssertUIThread(); ClearPreviewArea(); var message = SelectedMessages.FirstOrDefault(); if (message == null) { return; } try { await RefreshMessageSelectionAsync(message); } catch (Exception ex) { Logger.Error(ex); } }
internal async Task RestoreSelectedMessagesAsync() { try { var messages = SelectedMessages.ToArray(); var accountGroups = messages.GroupBy(x => x.Mailbox.Account).ToArray(); foreach (var accountGroup in accountGroups) { var trash = accountGroup.Key.GetTrashMailbox(); if (trash == null) { throw new InvalidOperationException("Trash must not be null."); } var mailboxGroups = accountGroup.GroupBy(x => x.Mailbox).ToArray(); foreach (var mailboxGroup in mailboxGroups) { var groupedMessages = mailboxGroup.ToArray(); await mailboxGroup.Key.RestoreMessagesAsync(groupedMessages); } } } catch (Exception ex) { Logger.Error(ex); } }
void MonitorTick(object sender, MonitorEventArgs e) { if (Usuario == null) { return; } try { Monitor.TimerInterval = 20; Monitor.CallbackArgument = DateTime.UtcNow.ToString(); var count = 0; if (SelectedEntidades.Count > 0) { foreach (var entidad in SelectedEntidades) { var style = GetMarkerStyle(entidad); AddMarker(entidad, style); count++; if (SelectedEntidades.Count == 1) { Monitor.SetCenter(entidad.ReferenciaGeografica.Latitude, entidad.ReferenciaGeografica.Longitude); } } if (SelectedMessages.Count > 0) { var selectedDispositivos = SelectedEntidades.Select(entidad => entidad.Dispositivo).ToList(); var popups = SharedPositions.GetNewPopupsM2M(selectedDispositivos, DAOFactory) .Where(p => SelectedMessages.Contains(p.CodigoMensaje)); var sonidos = new List <string>(); var lastMsg = LastMessage; var newPopups = 0; foreach (var popup in popups) { if (popup.Id > lastMsg) { Monitor.AddCallbackScript("AddEvent('" + GetMessageM2M(popup) + "');"); if (!string.IsNullOrEmpty(popup.Sound) && !sonidos.Contains(Config.Directory.SoundsDir + popup.Sound)) { sonidos.Add(Config.Directory.SoundsDir + popup.Sound); } LastMessage = Math.Max(popup.Id, LastMessage); newPopups++; } } if (sonidos.Count > 0) { Monitor.AddCallbackScript("enqueueSounds(['" + string.Join("','", sonidos.ToArray()) + "']);"); } if (newPopups > 0) { Monitor.AddCallbackScript("if(!PopupPanelOpen)ShowEvents();"); } } } // Inserto un script personalizado que muestra un mensaje en pantalla Monitor.AddCallbackScript(string.Format("$get('{0}').innerHTML = '{1}';", lblInfo.ClientID, string.Format(CultureManager.GetSystemMessage("ONLINE_UPDATED_POSITIONS"), count, DateTime.UtcNow.ToDisplayDateTime().ToString("HH:mm:ss")))); } catch (Exception ex) { // Inserto un script personalizado que muestra el error en pantalla Monitor.AddCallbackScript(string.Format("$get('{0}').innerHTML = '{1}';", lblInfo.ClientID, ex.Message)); } Monitor.AddCallbackScript("lastUpdate = new Date();"); }
private void ExecutedRequestStoryCommand(object sender, ExecutedRoutedEventArgs e) { SelectedMessages.Where(n => n.Story.IsEmpty()).ForEach(m => NewsProvider.RequestNewsStory(m.ToNews())); }
private void CanExecuteRequestStoryCommand(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = NewsProvider != null && SelectedMessages.Any(n => n.Story.IsEmpty()); }