performance update

This commit is contained in:
Waldi
2017-10-20 14:41:03 +02:00
parent ea4c8b71ad
commit 9ba364280c
3 changed files with 180 additions and 88 deletions

View File

@@ -131,6 +131,7 @@ namespace ChatController
} }
} }
#region Styleetter für ownChatDesktop VErsion
public void SetzteStyleAufNull() public void SetzteStyleAufNull()
{ {
EmojiButton.Style = null; EmojiButton.Style = null;
@@ -138,7 +139,9 @@ namespace ChatController
ReloadGruppen.Visibility = Visibility.Visible; ReloadGruppen.Visibility = Visibility.Visible;
_isDesktopVersion = false; _isDesktopVersion = false;
} }
#endregion
#region Synconisation Veranlassen für Bewoplaner
public void SynchronisationVeranlassen() public void SynchronisationVeranlassen()
{ {
try try
@@ -161,13 +164,10 @@ namespace ChatController
DispatcherPriority.Normal, DispatcherPriority.Normal,
(Action) delegate (Action) delegate
{ {
Clientlist.Items.Refresh(); CollectionViewSource.GetDefaultView(Clientlist.Items).Refresh();
//Clientlist.Items.Refresh();
}); });
//this.Dispatch(delegate // hä ??
//{
// Clientlist.Items.Refresh();
//});
Thread.Sleep(TimeSpan.FromMinutes(5)); Thread.Sleep(TimeSpan.FromMinutes(5));
} }
@@ -184,6 +184,7 @@ namespace ChatController
MessageBox.Show("Ein Fehler bei der Synchronisation ist aufgetreten.\nFehler:\n" + e.Message, "Fehler",MessageBoxButton.OK); MessageBox.Show("Ein Fehler bei der Synchronisation ist aufgetreten.\nFehler:\n" + e.Message, "Fehler",MessageBoxButton.OK);
} }
} }
#endregion
#region Lade KontaktDaten und Lade sie in den Chat #region Lade KontaktDaten und Lade sie in den Chat
private void AktChatUser_OnMouseDoubleClick(object sender, MouseButtonEventArgs e) private void AktChatUser_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
@@ -286,7 +287,7 @@ namespace ChatController
private void Item3OnClick(object sender, RoutedEventArgs routedEventArgs) private void Item3OnClick(object sender, RoutedEventArgs routedEventArgs)
{ {
var kontakt = (AktuellerKontakt)AktChatUser.Items[0]; var kontakt = (AktuellerKontakt)AktChatUser.Items[0];
_chat.Einfuegen(kontakt.GroupId); _chat.Einfuegen(kontakt.GroupId,this);
} }
private void Item4OnClick(object sender, RoutedEventArgs routedEventArgs) private void Item4OnClick(object sender, RoutedEventArgs routedEventArgs)
@@ -417,14 +418,19 @@ namespace ChatController
if (AktChatUser.Items.Count > 0) if (AktChatUser.Items.Count > 0)
{ {
var kontakt = (AktuellerKontakt) AktChatUser.Items[0]; var kontakt = (AktuellerKontakt) AktChatUser.Items[0];
var medium = _chat.HoleMedium();
_chat.HoleUndSendeMediumAnKontakt(kontakt); if(medium != null) {
_chat.AddeMediumDerNachrichtView(medium);
Chat.ItemsSource = null; CollectionViewSource.GetDefaultView(Chat.ItemsSource).Refresh();
Chat.ItemsSource = _chat.LadeChatNachrichtenVomKontakt(kontakt); Chat.Items.MoveCurrentToLast();
Chat.ScrollIntoView(Chat.Items.CurrentItem);
Chat.Items.MoveCurrentToLast();
Chat.ScrollIntoView(Chat.Items.CurrentItem); _chat.SendeMediumAnKontakt(kontakt,medium);
}
} }
else else
{ {
@@ -441,20 +447,18 @@ namespace ChatController
if (!Chatbox.Text.Equals("")) if (!Chatbox.Text.Equals(""))
{ {
var kontakt = (AktuellerKontakt)AktChatUser.Items[0]; var kontakt = (AktuellerKontakt)AktChatUser.Items[0];
var text = Chatbox.Text; _chat.AddeNachrichtDerView(Chatbox.Text);
CollectionViewSource.GetDefaultView(Chat.ItemsSource).Refresh();
_chat.SendMessage(Chatbox.Text, kontakt.GroupId);
// neu performance versuch Adde
Chatbox.Text = "";
//Lade Nachrichten nach
Chat.Items.MoveCurrentToLast(); Chat.Items.MoveCurrentToLast();
Chat.ScrollIntoView(Chat.Items.CurrentItem); Chat.ScrollIntoView(Chat.Items.CurrentItem);
_chat.SendMessage(Chatbox.Text, kontakt.GroupId);
Chatbox.Text = "";
if (Chatbox.Text.Equals("")) if (Chatbox.Text.Equals(""))
{ {
Chatbox.Text = "Nachricht schreiben"; Chatbox.Text = "Nachricht schreiben";
@@ -512,16 +516,17 @@ namespace ChatController
if (!AktChatUser.Items.IsEmpty && !Chatbox.Text.Equals("")) if (!AktChatUser.Items.IsEmpty && !Chatbox.Text.Equals(""))
{ {
var kontakt = (AktuellerKontakt)AktChatUser.Items[0]; var kontakt = (AktuellerKontakt)AktChatUser.Items[0];
var text = Chatbox.Text; _chat.AddeNachrichtDerView(Chatbox.Text);
CollectionViewSource.GetDefaultView(Chat.ItemsSource).Refresh();
Chat.Items.MoveCurrentToLast();
Chat.ScrollIntoView(Chat.Items.CurrentItem);
_chat.SendMessage(Chatbox.Text, kontakt.GroupId); _chat.SendMessage(Chatbox.Text, kontakt.GroupId);
Chatbox.Text = ""; Chatbox.Text = "";
//lade Nachrichten nach
} }
else else
{ {
@@ -685,43 +690,14 @@ namespace ChatController
(Action)delegate (Action)delegate
{ {
if(kontakt != null) { if(kontakt != null) {
//neuer Aufruf villeicht nur von
//Cursor = Cursors.Wait;
Chat.ItemsSource = null;
//Wichtig Verbessern
var x = _chat.LadeChatNachrichtenVomKontakt(kontakt); var x = _chat.LadeChatNachrichtenVomKontakt(kontakt);
//foreach (var liste in _Orderedmessagelist)
//{
// foreach (var neu in alist)
// {
// if (liste.ChatMessageOid == neu.ChatMessageOid)
// {
// //_Orderedmessagelist.CreateOrderedEnumerable(neu,,true);
// //if (!liste.ReceiveMs.Equals(neu.ReceiveMs))
// //{
// // liste.ReceiveMs = neu.ReceiveMs;
// // liste.SetzeGelesen = 1;
// // //Vorher noch abfragen ob die id gleich den chat ist und dann nur wenn nicht zutrifft dann auf 1 setzen
// //}
// }
// }
//}
Chat.ItemsSource = x; CollectionViewSource.GetDefaultView(Chat.ItemsSource).Refresh();
//Cursor = Cursors.Arrow;
Chat.Items.MoveCurrentToLast(); Chat.Items.MoveCurrentToLast();
Chat.ScrollIntoView(Chat.Items.CurrentItem); Chat.ScrollIntoView(Chat.Items.CurrentItem);
} }
}); });
@@ -734,8 +710,8 @@ namespace ChatController
break; break;
} }
Task.Delay(2000); //Task.Delay(2000);
//Thread.Sleep(2000); Thread.Sleep(2000);
} }
} }
@@ -986,6 +962,7 @@ namespace ChatController
#endregion #endregion
//muss erweitert werden
#region speichern sowie lesen der MessageSyncDatei / stylezwecke #region speichern sowie lesen der MessageSyncDatei / stylezwecke
public void SpeichereMessageInfoInDatei() public void SpeichereMessageInfoInDatei()
{ {

View File

@@ -1,35 +1,27 @@
using System; using ChatController.ChatKlassen;
using ChatController.Klassen;
using Newtonsoft.Json;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Linq.Expressions;
using System.Net; using System.Net;
using System.Net.Http; using System.Net.Http;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks;
using System.Web;
using System.Windows; using System.Windows;
using System.Windows.Controls;
using System.Windows.Data; using System.Windows.Data;
using System.Windows.Forms; using System.Windows.Forms;
using System.Windows.Controls;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Media.Imaging; using System.Windows.Media.Imaging;
using ChatController.ChatKlassen;
using ChatController.Klassen;
using Newtonsoft.Json;
using Application = System.Windows.Forms.Application; using Application = System.Windows.Forms.Application;
using Clipboard = System.Windows.Forms.Clipboard; using Clipboard = System.Windows.Forms.Clipboard;
using ContextMenu = System.Windows.Controls.ContextMenu; using ContextMenu = System.Windows.Controls.ContextMenu;
using Cursor = System.Windows.Input.Cursor;
using DataFormats = System.Windows.Forms.DataFormats; using DataFormats = System.Windows.Forms.DataFormats;
using Image = System.Windows.Controls.Image; using Image = System.Windows.Controls.Image;
using MenuItem = System.Windows.Forms.MenuItem;
using MessageBox = System.Windows.MessageBox; using MessageBox = System.Windows.MessageBox;
using Size = System.Drawing.Size; using Size = System.Drawing.Size;
@@ -732,6 +724,22 @@ namespace ChatController.HauptKlassen
#endregion #endregion
#region Sende Normale Message an Kontakt #region Sende Normale Message an Kontakt
public void AddeNachrichtDerView(string nachricht)
{
try
{
var ChatMessage = _userMessages.Response.Messages.Last();
var time =DateTime.Now;
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, nachricht,time.ToString("dd MMMM yyyy HH:mm:ss"), true, time));
}
catch (Exception e)
{
MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
}
}
private HttpWebRequest requesten; private HttpWebRequest requesten;
@@ -785,7 +793,7 @@ namespace ChatController.HauptKlassen
#region Sende Media Nachricht an Kontakt #region Sende Media Nachricht an Kontakt
public void HoleUndSendeMediumAnKontakt(AktuellerKontakt kontakt) public string HoleMedium()
{ {
try try
{ {
@@ -797,11 +805,98 @@ namespace ChatController.HauptKlassen
// openFileDialog1.Filter = "Office Dokumente |*.doc;*.xls;*.ppt;*.txt"; // openFileDialog1.Filter = "Office Dokumente |*.doc;*.xls;*.ppt;*.txt";
DialogResult result = openFileDialog1.ShowDialog(); DialogResult result = openFileDialog1.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK) if (result == System.Windows.Forms.DialogResult.OK)
{ {
VerarbeiteMedia(openFileDialog1.FileName,kontakt); return openFileDialog1.FileName;
} }
else
{
return null;
}
}
catch (Exception e)
{
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK);
return null;
}
}
public void AddeMediumDerNachrichtView(string file)
{
try
{
var ChatMessage = _userMessages.Response.Messages.Last();
var timeformated = DateTime.Now;
if (ImageExtensions.Contains(Path.GetExtension(file).ToUpperInvariant()))
{
BitmapImage logo = new BitmapImage();
logo.BeginInit();
logo.UriSource = new Uri(file);
logo.EndInit();
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, Path.GetFileName(file),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, logo,
timeformated, file));
}
else if (DokumentExtension.Contains(Path.GetExtension(file).ToUpperInvariant()))
{
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, Path.GetFileName(file),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true,file,
timeformated));
}
else
{
//MP4 und gifs und so unbehandelten dreck
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, Path.GetFileName(file),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, file,
timeformated));
}
}
catch (Exception e)
{
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK);
}
}
public void AddMediumContextDerNachrichtView(byte[] datei,string filename)
{
var ChatMessage = _userMessages.Response.Messages.Last();
var timeformated = DateTime.Now;
if (ImageExtensions.Contains(Path.GetExtension(filename).ToUpperInvariant()))
{
BitmapImage biImg = new BitmapImage();
MemoryStream ms = new MemoryStream(datei);
biImg.BeginInit();
biImg.StreamSource = ms;
biImg.EndInit();
ImageSource logo = biImg;
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, Path.GetFileName(filename),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, logo,
timeformated, filename));
}
else
{
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, Path.GetFileName(filename),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, filename,
timeformated));
}
}
public void SendeMediumAnKontakt(AktuellerKontakt kontakt,string file)
{
try
{
VerarbeiteMedia(file,kontakt);
} }
catch (Exception e) catch (Exception e)
{ {
@@ -819,9 +914,9 @@ namespace ChatController.HauptKlassen
string filename = Path.GetFileName(file); string filename = Path.GetFileName(file);
SendMediaMessage(filename, kontakt.GroupId, mdatei); SendMediaMessage(filename, kontakt.GroupId, mdatei);
//LoadKontakt();
} }
private static byte[] ReadFully(Stream stream) private static byte[] ReadFully(Stream stream)
@@ -997,7 +1092,7 @@ namespace ChatController.HauptKlassen
#endregion #endregion
#region Fuege Daten Bilder usw via DragAndDrop in den Chat / muss noch bearbeitet werden #region Fuege Daten Bilder usw via DragAndDrop in den Chat / muss noch bearbeitet werden
public void Einfuegen(long groupOid) public void Einfuegen(long groupOid, ChatMainControl chatMainControl)
{ {
var d = System.Windows.Forms.Clipboard.GetDataObject(); var d = System.Windows.Forms.Clipboard.GetDataObject();
@@ -1016,9 +1111,16 @@ namespace ChatController.HauptKlassen
if (File.Exists(fileList[0])) if (File.Exists(fileList[0]))
{ {
filename = Path.GetFileName(fileList[0]); filename = Path.GetFileName(fileList[0]);
//file = File.OpenRead(fileList[0]);
byte[] myBinary = File.ReadAllBytes(fileList[0]); byte[] myBinary = File.ReadAllBytes(fileList[0]);
AddMediumContextDerNachrichtView(myBinary,filename);
CollectionViewSource.GetDefaultView(chatMainControl.Chat.ItemsSource).Refresh();
chatMainControl.Chat.Items.MoveCurrentToLast();
chatMainControl.Chat.ScrollIntoView(chatMainControl.Chat.Items.CurrentItem);
SendMediaMessage(filename, groupOid, myBinary); SendMediaMessage(filename, groupOid, myBinary);
} }
@@ -1033,7 +1135,14 @@ namespace ChatController.HauptKlassen
if (d.GetDataPresent(DataFormats.Text)) if (d.GetDataPresent(DataFormats.Text))
{ {
string text = (string)d.GetData(DataFormats.StringFormat); string text = (string)d.GetData(DataFormats.StringFormat);
AddeNachrichtDerView(text);
CollectionViewSource.GetDefaultView(chatMainControl.Chat.ItemsSource).Refresh();
chatMainControl.Chat.Items.MoveCurrentToLast();
chatMainControl.Chat.ScrollIntoView(chatMainControl.Chat.Items.CurrentItem);
SendMessage(text, groupOid); SendMessage(text, groupOid);
} }
else else
@@ -1045,6 +1154,13 @@ namespace ChatController.HauptKlassen
System.Drawing.Image img = pic; System.Drawing.Image img = pic;
AddMediumContextDerNachrichtView(ImageToByteArray(img),bildname);
CollectionViewSource.GetDefaultView(chatMainControl.Chat.ItemsSource).Refresh();
chatMainControl.Chat.Items.MoveCurrentToLast();
chatMainControl.Chat.ScrollIntoView(chatMainControl.Chat.Items.CurrentItem);
SendMediaMessage(bildname,groupOid, ImageToByteArray(img)); SendMediaMessage(bildname,groupOid, ImageToByteArray(img));
} }
else else
@@ -1394,7 +1510,6 @@ namespace ChatController.HauptKlassen
} }
#endregion #endregion
//unter konstruktion
#region pruefe letzten Konversations timestamp für design element #region pruefe letzten Konversations timestamp für design element
public Dictionary<int, DateTime> PruefeTimeStampsBeiStart(List<KontaktlistBuilder> kontaktliste) public Dictionary<int, DateTime> PruefeTimeStampsBeiStart(List<KontaktlistBuilder> kontaktliste)

View File

@@ -174,7 +174,7 @@ namespace ChatController.HauptKlassen
{ {
try try
{ {
var endurl = _url + "/api/user/login"; //loginwithchatcode var endurl = _url + "/api/user/loginwithchatcode";
string postdaten = ""; string postdaten = "";