Anzeige von neuen Nachrichten und die Ladegeschwindigkeit von Konversationen verbessert

Aufgrund der Benutzung von Threads anstelle von Timern hat das Aufrufen der einzelnen Konversationen ca. 2 Sekunden gedauert.
Die Synchronisationsdatei enthält, ob die letzte Nachrichte bereits gelesen wurde, sodass man,
wenn man den Chat beendet bevor man eine neue Nachricht gelesen hat, diese nach dem erneuten Öffnen immer noch als neu angezeigt wird.

- Dateinamen verbessert
- Diverse Verbesserungen des Codes
This commit is contained in:
Lyndon
2019-05-14 13:37:20 +02:00
parent b82821d0c4
commit 3fbf8afe0d
25 changed files with 962 additions and 1131 deletions

View File

@@ -9,7 +9,7 @@ namespace ChatController.ChatKlassen
public class ChatMessage
{
//Chat-Ansicht
public ChatMessage(string username, string message, DateTime sendtime, bool isme)
public ChatMessage(string username, string message, DateTime sendtime, bool isme, long pGroupId)
{
Username = username;
UserMessage = message;
@@ -19,10 +19,12 @@ namespace ChatController.ChatKlassen
Farbgebung(isme);
VisibilityRegelung(IsHyperlink(message) ? "HyperlinkMessage" : "Message");
GroupId = pGroupId;
}
// Image-Ansicht
public ChatMessage(string username, string message, DateTime sendtime, bool isme, ImageSource image, string originalImage, string imageName)
public ChatMessage(string username, string message, DateTime sendtime, bool isme, ImageSource image, string originalImage, string imageName, long pGroupId)
{
Username = username;
UserMessage = message;
@@ -35,64 +37,49 @@ namespace ChatController.ChatKlassen
Farbgebung(isme);
VisibilityRegelung("Image");
}
//Image-PlaceHolder | wird nicht benutzt und wird nicht gebraucht ?
public ChatMessage(string username, string message, DateTime sendtime, bool isme, string originalImage, string imageName)
{
Username = username;
UserMessage = message;
SendTime = sendtime;
IsMyMessage = isme;
OriginalImage = originalImage;
OriginalImageName = imageName;
VisibilityRegelung("Image");
Farbgebung(isme);
VisibilityRegelung("Default_Image");
GroupId = pGroupId;
}
//Dokumenten-Ansicht
public ChatMessage(string username, string message, DateTime sendtime, string pSmallerImagePath, bool isme, string url)
public ChatMessage(string pUsername, string pMessageText, DateTime pSendTime, string pSmallerImagePath, bool pIsLoggedInUsersMessage, string pUrl, long pGroupId)
{
Username = username;
UserMessage = message;
SendTime = sendtime;
IsMyMessage = isme;
Username = pUsername;
UserMessage = pMessageText;
SendTime = pSendTime;
IsMyMessage = pIsLoggedInUsersMessage;
Dokpfad = url;
FilePath = pUrl;
Farbgebung(isme);
Farbgebung(pIsLoggedInUsersMessage);
Thumbnail = Utilities.Utils.CreateImageSourceFromPath(pSmallerImagePath);
VisibilityRegelung("Dokumente");
GroupId = pGroupId;
}
public ImageSource Thumbnail { get; }
#region Farbgebung
private void Farbgebung(bool isme)
{
if (isme)
{
ChatColor = new BrushConverter().ConvertFromString("#ff5e00") as SolidColorBrush;
Posi = "Right";
_farbeRechtsColor = new BrushConverter().ConvertFromString("#505050") as SolidColorBrush;
_farbeLinksColor = new BrushConverter().ConvertFromString("#505050") as SolidColorBrush;
}
else
{
ChatColor = new BrushConverter().ConvertFromString("#FFFFFF") as SolidColorBrush; //"#cccccc"
Posi = "Left";
_farbeRechtsColor = new BrushConverter().ConvertFromString("#505050") as SolidColorBrush;
_farbeLinksColor = new BrushConverter().ConvertFromString("#505050") as SolidColorBrush;
}
}
#endregion
#region Visibility Regelung
_farbeRechtsColor = new BrushConverter().ConvertFromString("#505050") as SolidColorBrush;
_farbeLinksColor = new BrushConverter().ConvertFromString("#505050") as SolidColorBrush;
}
private void VisibilityRegelung(string Ansicht)
{
switch (Ansicht)
@@ -141,9 +128,6 @@ namespace ChatController.ChatKlassen
break;
}
}
#endregion
#region Hyperlink Detection
private static readonly Regex UrlRegex = new Regex(@"(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~/|/)?(?#Username:Password)(?:\w+:\w+@)?(?#Subdomains)(?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(?#Port)(?::[\d]{1,5})?(?#Directories)(?:(?:(?:/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|/)+|\?|#)?(?#Query)(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?#Anchor)(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?");
@@ -186,10 +170,6 @@ namespace ChatController.ChatKlassen
return false;
}
#endregion
#region Variablen
public bool IsMyMessage { get; set; }
public string Username { get; }
public string UserMessage { get; }
@@ -210,7 +190,6 @@ namespace ChatController.ChatKlassen
public Visibility ChatVisibility { get; set; }
public Visibility HyperlinkVisibility { get; set; }
private Visibility _pictureVisibility;
public Visibility PictureVisibility
@@ -247,11 +226,10 @@ namespace ChatController.ChatKlassen
public Visibility DokumentVisibility { get; set; }
public ImageSource ImageSources { get; }
public object Dokpfad { get; }
public object FilePath { get; }
public long? ChatMessageOid { get; private set; }
//Farbe Links MEssageHeader
private Brush _farbeLinksColor;
public Brush FarbeLinksColor
{
@@ -264,7 +242,6 @@ namespace ChatController.ChatKlassen
}
}
//Farbe Rechts MessageHeader
private Brush _farbeRechtsColor;
public Brush FarbeRechtsColor
{
@@ -277,6 +254,8 @@ namespace ChatController.ChatKlassen
}
}
public long GroupId { get; }
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
@@ -284,6 +263,5 @@ namespace ChatController.ChatKlassen
var handler = PropertyChanged;
handler?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
}