// ---------------------------- FOR GUI USES ---------------------------- // /// <summary> /// This method takes user's choices of sorting and filters and updates the messages screen following this. /// </summary> /// <param name="Operations">The operation to make on certain list.</param> public void refresh(string[] filters, bool checkTime, ISort sorter, bool ascending) { _ascending = ascending; if (!(filters[0] == "")) { msgHandler.addGroupFilter(filters[0]); } if (!(filters[1] == "")) { msgHandler.addNicknameFilter(filters[1]); } if (!checkTime) { messages.Clear(); } retrieveMessages(checkTime); messages = sorter.DoAction(messages); MessageConvertor msgConvertor = new MessageConvertor(); List <ReadOnlyMessage> newReadOnlyList = new List <ReadOnlyMessage>(); foreach (Message msg in messages) { ReadOnlyMessage roMsg = msgConvertor.convertToReadOnly(msg); newReadOnlyList.Add(roMsg); } messagesToPrint = newReadOnlyList; }
/// <summary> /// updates the message list after messages retrieved /// </summary> /// <param name="msgs"></param> /// <param name="clear"></param> /// <returns></returns> private bool updateMessages(List <IMessage> msgs, bool clear) { bool ans = false; if (msgs == null) { return(false); } MessageConvertor messageConvertor = new MessageConvertor(); foreach (IMessage msg in msgs) { Message tMsg = messageConvertor.convertToMessage(msg); if (tMsg == null) { continue; } removeMessage(); if (clear) { messages.Add(tMsg); ans = true; } else if (!messages.Contains(tMsg)) { messages.Add(tMsg); ans = true; } } return(ans); }
/// <summary> /// sends message from the logged in user. connects between presentation layer and User class /// </summary> /// <param name="message"></param> /// <returns></returns> public void send(string message) { try { Message msg = loggedinUser.send(message, url, DateTime.Now); //send the message to the server address if (msg != null) { removeMessage(); MessageConvertor msgConvertor = new MessageConvertor(); IMessage imsg = msgConvertor.convertToIMessage(msg); // res = msgConvertor.convertToReadOnly(msg); msgHandler.sendMessage(imsg);//save the message into the storage file logger.logInfoMessage("The message were delivered successfully"); } } catch { } }
/// <summary> /// this method is called in case of editing exist message request is made by the user /// </summary> /// <param name="oldMessage">the message to edit</param> /// <param name="updatedBody">the updated content</param> public void update(ReadOnlyMessage oldMessage, string updatedBody) { try { //check its legal to edit this message if (!oldMessage.nickname.Equals(loggedinUser.nickName)) { logger.logWarnMessage("Failed to edit a message which does not belong to the connected user"); } else { _dateTime = DateTime.UtcNow; MessageConvertor mc = new MessageConvertor(); Message message = mc.convertFromReadOnlyToMessage(oldMessage); messages.Remove(message); message.updateBody(updatedBody); message.updateDate(_dateTime); IMessage imsg = mc.convertToIMessage(message); msgHandler.updateMessage(imsg);//save the message into the storage file logger.logInfoMessage("The message were edited successfully"); } } catch {} }