2017-09-12 14:32:34 +02:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
2017-09-14 12:36:48 +02:00
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
|
using System.IO;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
using System.Linq;
|
2017-09-14 12:36:48 +02:00
|
|
|
|
using System.Net;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
using System.Text;
|
2017-09-20 11:46:00 +02:00
|
|
|
|
using System.Text.RegularExpressions;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
using System.Threading;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using System.Windows;
|
|
|
|
|
|
using System.Windows.Controls;
|
|
|
|
|
|
using System.Windows.Controls.Primitives;
|
|
|
|
|
|
using System.Windows.Data;
|
|
|
|
|
|
using System.Windows.Documents;
|
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
|
using System.Windows.Media;
|
|
|
|
|
|
using System.Windows.Media.Imaging;
|
2017-10-06 12:08:05 +02:00
|
|
|
|
using System.Windows.Media.TextFormatting;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
using System.Windows.Navigation;
|
|
|
|
|
|
using System.Windows.Shapes;
|
|
|
|
|
|
using System.Windows.Threading;
|
2017-09-15 09:49:32 +02:00
|
|
|
|
using BeWo.View;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
using ChatController.ChatKlassen;
|
|
|
|
|
|
using ChatController.HauptKlassen;
|
|
|
|
|
|
using ChatController.Klassen;
|
2017-09-14 12:36:48 +02:00
|
|
|
|
using Path = System.IO.Path;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
|
|
|
|
|
namespace ChatController
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Interaktionslogik für ChatMainWindow.xaml
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public partial class ChatMainControl : UserControl
|
|
|
|
|
|
{
|
2017-11-09 12:20:03 +01:00
|
|
|
|
#region Vokabeln
|
2017-09-12 14:32:34 +02:00
|
|
|
|
private Chat _chat;
|
|
|
|
|
|
private AktuellerKontakt _aktuellerKontakt;
|
|
|
|
|
|
|
|
|
|
|
|
private bool isChatBoxOnFocus = false;
|
|
|
|
|
|
|
|
|
|
|
|
private ChatEmojiiControl _emojiView;
|
|
|
|
|
|
|
|
|
|
|
|
private IOrderedEnumerable<KontaktMessageBuilder> _Orderedmessagelist;
|
|
|
|
|
|
private IOrderedEnumerable<KontaktlistBuilder> _kontaktlist;
|
2017-11-09 12:20:03 +01:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
private ChatDatenUebergabe _chatDaten;
|
|
|
|
|
|
|
|
|
|
|
|
private bool scrollPrueferAktivieren = false;
|
|
|
|
|
|
|
|
|
|
|
|
public Thread newThread;
|
|
|
|
|
|
public bool threadBool = true;
|
|
|
|
|
|
|
|
|
|
|
|
public Thread AlleKontakteThread;
|
|
|
|
|
|
public bool AlleNachrichtenThreadBool = true;
|
|
|
|
|
|
private double? AlleNachrichtenCount = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Dictionary<String, Action<string>> menuItemName2Callback = new Dictionary<string, Action<string>>();
|
2017-09-14 12:36:48 +02:00
|
|
|
|
|
2017-10-06 12:08:05 +02:00
|
|
|
|
public delegate void CloseDelegate();
|
|
|
|
|
|
|
|
|
|
|
|
public event CloseDelegate OnClose;
|
2017-10-18 10:09:20 +02:00
|
|
|
|
|
|
|
|
|
|
private bool _isDesktopVersion = true;
|
2017-10-06 12:08:05 +02:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
public ChatMainControl()
|
|
|
|
|
|
{
|
2017-10-18 14:32:00 +02:00
|
|
|
|
InitializeComponent();
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void InitMitChatdaten(ChatDatenUebergabe cdu)
|
|
|
|
|
|
{
|
|
|
|
|
|
_chatDaten = cdu;
|
|
|
|
|
|
_chat = new Chat(cdu);
|
|
|
|
|
|
|
|
|
|
|
|
_kontaktlist = _chat.GroupklassenInChatKontakteUmwandler();
|
|
|
|
|
|
|
|
|
|
|
|
Clientlist.ItemsSource = _kontaktlist;
|
2017-09-14 12:36:48 +02:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(Clientlist.ItemsSource);
|
2017-09-14 12:36:48 +02:00
|
|
|
|
view.Filter = UserFilter;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
|
|
|
|
|
HorcheAlleGruppenNachrichten();
|
2017-10-18 14:32:00 +02:00
|
|
|
|
LeseMessageInfoAusDatei();
|
2017-11-07 11:56:29 +01:00
|
|
|
|
|
|
|
|
|
|
Clientlist.Items.Refresh();
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
2017-09-15 09:49:32 +02:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
public AktuellerKontakt GetAktuellenKontakt()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (AktChatUser != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
var kontakt = (AktuellerKontakt) AktChatUser.Items[0];
|
|
|
|
|
|
|
|
|
|
|
|
if (kontakt.CustomerPersonOid == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return kontakt;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public List<KontaktMessageBuilder> GetSelectedMessages()
|
|
|
|
|
|
{
|
|
|
|
|
|
List<KontaktMessageBuilder> itemListe = new List<KontaktMessageBuilder>();
|
|
|
|
|
|
|
|
|
|
|
|
foreach (Object selecteditem in Chat.SelectedItems)
|
|
|
|
|
|
{
|
|
|
|
|
|
KontaktMessageBuilder Item = selecteditem as KontaktMessageBuilder;
|
|
|
|
|
|
|
|
|
|
|
|
//if (Item.MessagePersonOid == 0)
|
|
|
|
|
|
//{
|
|
|
|
|
|
itemListe.Add(Item);
|
|
|
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(itemListe.Count > 0) {
|
|
|
|
|
|
|
|
|
|
|
|
return itemListe;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-24 11:39:59 +02:00
|
|
|
|
#region Style setter für ownChatDesktop Version
|
2017-10-06 12:08:05 +02:00
|
|
|
|
public void SetzteStyleAufNull()
|
|
|
|
|
|
{
|
|
|
|
|
|
EmojiButton.Style = null;
|
|
|
|
|
|
MediaButton.Style = null;
|
|
|
|
|
|
ReloadGruppen.Visibility = Visibility.Visible;
|
2017-10-18 10:09:20 +02:00
|
|
|
|
_isDesktopVersion = false;
|
2017-10-06 12:08:05 +02:00
|
|
|
|
}
|
2017-10-20 14:41:03 +02:00
|
|
|
|
#endregion
|
2017-10-06 12:08:05 +02:00
|
|
|
|
|
2017-10-20 14:41:03 +02:00
|
|
|
|
#region Synconisation Veranlassen für Bewoplaner
|
2017-10-06 12:08:05 +02:00
|
|
|
|
public void SynchronisationVeranlassen()
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
bool doSync = true;
|
|
|
|
|
|
|
|
|
|
|
|
do
|
|
|
|
|
|
{
|
|
|
|
|
|
doSync = _chat.DoSynchronisation(_chatDaten.ApiKey, _chatDaten.Kundennummer);
|
|
|
|
|
|
|
2017-10-20 07:34:26 +02:00
|
|
|
|
if (doSync)
|
2017-11-09 12:20:03 +01:00
|
|
|
|
{
|
|
|
|
|
|
SpeichereMessageInfoInDatei();
|
2017-10-06 12:08:05 +02:00
|
|
|
|
var aktuelleGruppen = _chat.GruppenAktuallisieren();
|
|
|
|
|
|
|
|
|
|
|
|
var x = _chat.GroupklassenAktuallisieren(aktuelleGruppen);
|
|
|
|
|
|
|
|
|
|
|
|
_kontaktlist = x;
|
2017-11-09 12:20:03 +01:00
|
|
|
|
|
|
|
|
|
|
LeseMessageInfoAusDatei();
|
2017-10-06 12:08:05 +02:00
|
|
|
|
|
|
|
|
|
|
Dispatcher.BeginInvoke(
|
|
|
|
|
|
DispatcherPriority.Normal,
|
|
|
|
|
|
(Action) delegate
|
|
|
|
|
|
{
|
2017-10-24 11:39:59 +02:00
|
|
|
|
//CollectionViewSource.GetDefaultView(Clientlist.Items).Refresh();
|
|
|
|
|
|
Clientlist.Items.Refresh();
|
2017-10-06 12:08:05 +02:00
|
|
|
|
});
|
2017-10-20 14:41:03 +02:00
|
|
|
|
|
2017-10-06 12:08:05 +02:00
|
|
|
|
Thread.Sleep(TimeSpan.FromMinutes(5));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} while (doSync);
|
|
|
|
|
|
|
|
|
|
|
|
//sobald nicht mehr in der Schleife dann Close weil dann Sync false
|
|
|
|
|
|
if (OnClose != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
OnClose();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("Ein Fehler bei der Synchronisation ist aufgetreten.\nFehler:\n" + e.Message, "Fehler",MessageBoxButton.OK);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-10-20 14:41:03 +02:00
|
|
|
|
#endregion
|
2017-10-06 12:08:05 +02:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
#region Lade KontaktDaten und Lade sie in den Chat
|
|
|
|
|
|
private void AktChatUser_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
_chat.ShowKontaktPicture(_aktuellerKontakt);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void Clientlist_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
|
|
|
|
{
|
2017-09-15 09:49:32 +02:00
|
|
|
|
if(Clientlist.SelectedItem != null)
|
|
|
|
|
|
{
|
2017-11-10 11:41:09 +01:00
|
|
|
|
// StartWaiting();
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
|
|
|
|
|
Cursor = Cursors.Wait;
|
2017-11-10 11:41:09 +01:00
|
|
|
|
scrollPrueferAktivieren = false;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
Chat.ItemsSource = null;
|
|
|
|
|
|
|
|
|
|
|
|
AktChatUser.Items.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
var kontakt = (KontaktlistBuilder)Clientlist.SelectedItem;
|
|
|
|
|
|
|
|
|
|
|
|
if(kontakt.SetzeGelesen == 1) {
|
|
|
|
|
|
kontakt.SetzeGelesen = 0;
|
|
|
|
|
|
|
|
|
|
|
|
Clientlist.Items.Refresh();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var aktuellerKontakt = new AktuellerKontakt(kontakt);
|
|
|
|
|
|
|
|
|
|
|
|
AktChatUser.Items.Add(aktuellerKontakt);
|
|
|
|
|
|
_aktuellerKontakt = aktuellerKontakt;
|
|
|
|
|
|
|
2017-11-10 11:41:09 +01:00
|
|
|
|
var x = _chat.LadeChatNachrichtenVomKontakt(aktuellerKontakt);
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
|
|
|
|
|
Chat.ItemsSource = x;
|
|
|
|
|
|
|
|
|
|
|
|
Chat.Items.MoveCurrentToLast();
|
|
|
|
|
|
Chat.ScrollIntoView(Chat.Items.CurrentItem);
|
2017-11-10 11:41:09 +01:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
Chat.ContextMenu = _chat.ErstelleKontextMenue();
|
|
|
|
|
|
SetContextHandler();
|
|
|
|
|
|
scrollPrueferAktivieren = true;
|
2017-11-10 11:41:09 +01:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
HorcheAktivNachNachrichten();
|
|
|
|
|
|
Cursor = Cursors.Arrow;
|
2017-09-15 09:49:32 +02:00
|
|
|
|
|
2017-11-10 11:41:09 +01:00
|
|
|
|
// EndWaiting();
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-09-18 13:07:37 +02:00
|
|
|
|
#endregion
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-09-18 13:07:37 +02:00
|
|
|
|
#region Context Menue
|
2017-09-14 12:36:48 +02:00
|
|
|
|
//ab Hier Kontext Menü
|
2017-09-12 14:32:34 +02:00
|
|
|
|
private void SetContextHandler()
|
|
|
|
|
|
{
|
|
|
|
|
|
var contextItems = Chat.ContextMenu.Items;
|
2017-09-18 13:07:37 +02:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
foreach (var menuItemText in menuItemName2Callback.Keys)
|
|
|
|
|
|
{
|
|
|
|
|
|
var cb = menuItemName2Callback[menuItemText];
|
|
|
|
|
|
|
|
|
|
|
|
MenuItem item = new MenuItem();
|
|
|
|
|
|
|
|
|
|
|
|
item.Click += (s, e2) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
cb(menuItemText);
|
|
|
|
|
|
};
|
|
|
|
|
|
item.Header = menuItemText;
|
|
|
|
|
|
|
|
|
|
|
|
contextItems.Add(item);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var item2 = (MenuItem)contextItems[0];
|
2017-09-18 13:07:37 +02:00
|
|
|
|
item2.Click += Item2OnClick; // umbenenen in Speichern unter
|
2017-09-12 14:32:34 +02:00
|
|
|
|
var item3 = (MenuItem)contextItems[1];
|
2017-09-18 13:07:37 +02:00
|
|
|
|
item3.Click += Item3OnClick; //Umbenenen in Einfügen
|
|
|
|
|
|
|
|
|
|
|
|
// neu und vor Einfügen setzen und anpassen
|
|
|
|
|
|
var item4 = (MenuItem) contextItems[2];
|
|
|
|
|
|
item4.Click += Item4OnClick; //Umbenenen in Kopieren
|
|
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public delegate void ContextDelegate();
|
|
|
|
|
|
|
|
|
|
|
|
public event ContextDelegate CreateNewContextItems;
|
2017-09-18 13:07:37 +02:00
|
|
|
|
|
2017-09-14 12:36:48 +02:00
|
|
|
|
private void Item2OnClick(object sender, RoutedEventArgs routedEventArgs)
|
2017-09-12 14:32:34 +02:00
|
|
|
|
{
|
2017-09-14 12:36:48 +02:00
|
|
|
|
foreach (var items in Chat.SelectedItems)
|
|
|
|
|
|
{
|
|
|
|
|
|
var item = (KontaktMessageBuilder)items;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-09-14 12:36:48 +02:00
|
|
|
|
_chat.SpeichernUnterFunkion(item);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-09-14 12:36:48 +02:00
|
|
|
|
private void Item3OnClick(object sender, RoutedEventArgs routedEventArgs)
|
|
|
|
|
|
{
|
|
|
|
|
|
var kontakt = (AktuellerKontakt)AktChatUser.Items[0];
|
2017-10-20 14:41:03 +02:00
|
|
|
|
_chat.Einfuegen(kontakt.GroupId,this);
|
2017-09-18 13:07:37 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void Item4OnClick(object sender, RoutedEventArgs routedEventArgs)
|
|
|
|
|
|
{
|
|
|
|
|
|
string chatmessages = "";
|
|
|
|
|
|
foreach (var items in Chat.SelectedItems)
|
|
|
|
|
|
{
|
|
|
|
|
|
var item = (KontaktMessageBuilder)items;
|
|
|
|
|
|
|
|
|
|
|
|
chatmessages += item.UserMessage + "\n";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(!chatmessages.Equals(""))
|
|
|
|
|
|
_chat.Kopieren(chatmessages, 1);
|
2017-09-14 12:36:48 +02:00
|
|
|
|
}
|
2017-09-18 13:07:37 +02:00
|
|
|
|
|
2017-09-14 12:36:48 +02:00
|
|
|
|
private void Chat_OnContextMenuOpening(object sender, ContextMenuEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
var chatItems = Chat.SelectedItems;
|
|
|
|
|
|
|
|
|
|
|
|
if (chatItems.Count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var items in chatItems)
|
|
|
|
|
|
{
|
|
|
|
|
|
var item = items as KontaktMessageBuilder;
|
|
|
|
|
|
if (item != null && item.ImageSources != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
var contextItems = Chat.ContextMenu.Items;
|
|
|
|
|
|
var ContextItemSpeichernUnter = (MenuItem)contextItems[0];
|
|
|
|
|
|
ContextItemSpeichernUnter.Visibility = Visibility.Visible;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
var contextItems = Chat.ContextMenu.Items;
|
|
|
|
|
|
var ContextItemSpeichernUnter = (MenuItem)contextItems[0];
|
|
|
|
|
|
ContextItemSpeichernUnter.Visibility = Visibility.Collapsed;
|
|
|
|
|
|
}
|
2017-09-18 13:07:37 +02:00
|
|
|
|
|
|
|
|
|
|
if (item.ImageSources == null && item.Dokpfad == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
var contextItems = Chat.ContextMenu.Items;
|
|
|
|
|
|
var ContextItemSpeichernUnter = (MenuItem) contextItems[2];
|
|
|
|
|
|
ContextItemSpeichernUnter.Visibility = Visibility.Visible;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
var contextItems = Chat.ContextMenu.Items;
|
|
|
|
|
|
var ContextItemSpeichernUnter = (MenuItem)contextItems[2];
|
|
|
|
|
|
ContextItemSpeichernUnter.Visibility = Visibility.Collapsed;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-09-14 12:36:48 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
//Schalte speichern unter Aus
|
|
|
|
|
|
var contextItems = Chat.ContextMenu.Items;
|
|
|
|
|
|
var ContextItemSpeichernUnter = (MenuItem)contextItems[0];
|
|
|
|
|
|
ContextItemSpeichernUnter.Visibility = Visibility.Collapsed;
|
|
|
|
|
|
}
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
|
|
|
|
|
|
2017-09-14 12:36:48 +02:00
|
|
|
|
//prüfe ob was in dem Speicher vorhanden ist //Einfügen
|
|
|
|
|
|
var d = System.Windows.Forms.Clipboard.GetDataObject();
|
2017-09-18 13:07:37 +02:00
|
|
|
|
|
|
|
|
|
|
if (d.GetDataPresent(DataFormats.FileDrop))
|
2017-09-14 12:36:48 +02:00
|
|
|
|
{
|
|
|
|
|
|
var contextItems = Chat.ContextMenu.Items;
|
|
|
|
|
|
var ContextItemSpeichernUnter = (MenuItem)contextItems[1];
|
|
|
|
|
|
ContextItemSpeichernUnter.Visibility = Visibility.Visible;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (d.GetDataPresent(DataFormats.Text))
|
|
|
|
|
|
{
|
|
|
|
|
|
var contextItems = Chat.ContextMenu.Items;
|
|
|
|
|
|
var ContextItemSpeichernUnter = (MenuItem)contextItems[1];
|
|
|
|
|
|
ContextItemSpeichernUnter.Visibility = Visibility.Visible;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (d.GetDataPresent(DataFormats.Bitmap))
|
|
|
|
|
|
{
|
|
|
|
|
|
var contextItems = Chat.ContextMenu.Items;
|
|
|
|
|
|
var ContextItemSpeichernUnter = (MenuItem)contextItems[1];
|
|
|
|
|
|
ContextItemSpeichernUnter.Visibility = Visibility.Visible;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
var contextItems = Chat.ContextMenu.Items;
|
|
|
|
|
|
var ContextItemSpeichernUnter = (MenuItem)contextItems[1];
|
|
|
|
|
|
ContextItemSpeichernUnter.Visibility = Visibility.Collapsed;
|
2017-09-18 13:07:37 +02:00
|
|
|
|
}
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-09-15 09:49:32 +02:00
|
|
|
|
//prüfe ob dokumentation erlaubt
|
2017-09-14 12:36:48 +02:00
|
|
|
|
var kontakt = (AktuellerKontakt)AktChatUser.Items[0];
|
2017-09-18 13:07:37 +02:00
|
|
|
|
if (kontakt.CustomerPersonOid == null && Chat.ContextMenu.Items.Count > 3)
|
2017-09-12 14:32:34 +02:00
|
|
|
|
{
|
2017-09-14 12:36:48 +02:00
|
|
|
|
var contextItems = Chat.ContextMenu.Items;
|
2017-09-18 13:07:37 +02:00
|
|
|
|
var ContextItemSpeichernUnter = (MenuItem)contextItems[3];
|
2017-09-14 12:36:48 +02:00
|
|
|
|
ContextItemSpeichernUnter.Visibility = Visibility.Collapsed;
|
|
|
|
|
|
}
|
2017-09-18 13:07:37 +02:00
|
|
|
|
else if (Chat.ContextMenu.Items.Count > 3)
|
2017-09-15 09:49:32 +02:00
|
|
|
|
{
|
|
|
|
|
|
var contextItems = Chat.ContextMenu.Items;
|
2017-09-18 13:07:37 +02:00
|
|
|
|
var ContextItemSpeichernUnter = (MenuItem)contextItems[3];
|
2017-09-15 09:49:32 +02:00
|
|
|
|
ContextItemSpeichernUnter.Visibility = Visibility.Visible;
|
|
|
|
|
|
}
|
2017-09-18 13:07:37 +02:00
|
|
|
|
|
2017-09-15 09:49:32 +02:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-09-14 12:36:48 +02:00
|
|
|
|
if (Chat.ContextMenu.Items.Count == 0)
|
|
|
|
|
|
{
|
2017-09-18 13:07:37 +02:00
|
|
|
|
Chat.ContextMenu.Visibility = Visibility.Collapsed;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
2017-09-14 12:36:48 +02:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2017-09-14 12:36:48 +02:00
|
|
|
|
public void AddContextMenu(string menuItemText, Action<string> callBackAction)
|
2017-09-12 14:32:34 +02:00
|
|
|
|
{
|
2017-09-14 12:36:48 +02:00
|
|
|
|
if (!menuItemName2Callback.ContainsKey(menuItemText))
|
|
|
|
|
|
{
|
|
|
|
|
|
menuItemName2Callback.Add(menuItemText, callBackAction);
|
|
|
|
|
|
}
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Sende Media Nachrichten
|
|
|
|
|
|
private void MediaButton_OnClick(object sender, RoutedEventArgs e)
|
|
|
|
|
|
{
|
2017-09-14 12:36:48 +02:00
|
|
|
|
if (AktChatUser.Items.Count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
var kontakt = (AktuellerKontakt) AktChatUser.Items[0];
|
2017-10-20 14:41:03 +02:00
|
|
|
|
|
|
|
|
|
|
var medium = _chat.HoleMedium();
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-10-20 14:41:03 +02:00
|
|
|
|
if(medium != null) {
|
|
|
|
|
|
_chat.AddeMediumDerNachrichtView(medium);
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-10-20 14:41:03 +02:00
|
|
|
|
CollectionViewSource.GetDefaultView(Chat.ItemsSource).Refresh();
|
|
|
|
|
|
Chat.Items.MoveCurrentToLast();
|
|
|
|
|
|
Chat.ScrollIntoView(Chat.Items.CurrentItem);
|
|
|
|
|
|
|
|
|
|
|
|
_chat.SendeMediumAnKontakt(kontakt,medium);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2017-09-14 12:36:48 +02:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("Bitte einen Kontakt auswählen!","Fehler",MessageBoxButton.OK);
|
|
|
|
|
|
}
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Sende Normale Nachrichten
|
|
|
|
|
|
private void SendButton_OnClick(object sender, RoutedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!AktChatUser.Items.IsEmpty && !Chatbox.Text.Equals("") && isChatBoxOnFocus)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!Chatbox.Text.Equals(""))
|
|
|
|
|
|
{
|
|
|
|
|
|
var kontakt = (AktuellerKontakt)AktChatUser.Items[0];
|
2017-10-20 14:41:03 +02:00
|
|
|
|
|
|
|
|
|
|
_chat.AddeNachrichtDerView(Chatbox.Text);
|
|
|
|
|
|
|
|
|
|
|
|
CollectionViewSource.GetDefaultView(Chat.ItemsSource).Refresh();
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
|
|
|
|
|
Chat.Items.MoveCurrentToLast();
|
|
|
|
|
|
Chat.ScrollIntoView(Chat.Items.CurrentItem);
|
2017-10-20 14:41:03 +02:00
|
|
|
|
|
|
|
|
|
|
_chat.SendMessage(Chatbox.Text, kontakt.GroupId);
|
2017-10-24 11:39:59 +02:00
|
|
|
|
|
2017-10-20 14:41:03 +02:00
|
|
|
|
Chatbox.Text = "";
|
|
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
if (Chatbox.Text.Equals(""))
|
|
|
|
|
|
{
|
|
|
|
|
|
Chatbox.Text = "Nachricht schreiben";
|
|
|
|
|
|
Chatbox.Foreground = new SolidColorBrush(Colors.DarkGray);
|
|
|
|
|
|
isChatBoxOnFocus = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (AktChatUser.Items.IsEmpty)
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("Bitte wählen Sie einen Chatpartner aus.", "Fehler", MessageBoxButton.OK);
|
|
|
|
|
|
if (Chatbox.Text.Equals(""))
|
|
|
|
|
|
{
|
|
|
|
|
|
Chatbox.Text = "Nachricht schreiben";
|
|
|
|
|
|
Chatbox.Foreground = new SolidColorBrush(Colors.DarkGray);
|
|
|
|
|
|
isChatBoxOnFocus = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (Chatbox.Text.Equals(""))
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("Sie können keine lehre Nachricht verschicken.", "Fehler", MessageBoxButton.OK);
|
|
|
|
|
|
if (Chatbox.Text.Equals(""))
|
|
|
|
|
|
{
|
|
|
|
|
|
Chatbox.Text = "Nachricht schreiben";
|
|
|
|
|
|
Chatbox.Foreground = new SolidColorBrush(Colors.DarkGray);
|
|
|
|
|
|
isChatBoxOnFocus = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void Chatbox_OnGotFocus(object sender, RoutedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Chatbox.Text.Equals("Nachricht schreiben"))
|
|
|
|
|
|
{
|
|
|
|
|
|
Chatbox.Text = "";
|
|
|
|
|
|
Chatbox.Foreground = new SolidColorBrush(Colors.Black);
|
|
|
|
|
|
isChatBoxOnFocus = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//hier bereich wie Dokumentieren
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void Chatbox_OnKeyDownHandler(object sender, KeyEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
if (e.Key == Key.Return)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!AktChatUser.Items.IsEmpty && !Chatbox.Text.Equals(""))
|
|
|
|
|
|
{
|
|
|
|
|
|
var kontakt = (AktuellerKontakt)AktChatUser.Items[0];
|
2017-10-20 14:41:03 +02:00
|
|
|
|
|
|
|
|
|
|
_chat.AddeNachrichtDerView(Chatbox.Text);
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-10-20 14:41:03 +02:00
|
|
|
|
CollectionViewSource.GetDefaultView(Chat.ItemsSource).Refresh();
|
|
|
|
|
|
Chat.Items.MoveCurrentToLast();
|
|
|
|
|
|
Chat.ScrollIntoView(Chat.Items.CurrentItem);
|
|
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
_chat.SendMessage(Chatbox.Text, kontakt.GroupId);
|
2017-10-24 11:39:59 +02:00
|
|
|
|
|
2017-11-09 12:20:03 +01:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
Chatbox.Text = "";
|
2017-10-20 14:41:03 +02:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (AktChatUser.Items.IsEmpty)
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("Bitte wählen Sie einen Chatpartner aus.", "Fehler", MessageBoxButton.OK);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (Chatbox.Text.Equals(""))
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("Sie können keine lehre Nachricht verschicken.", "Fehler", MessageBoxButton.OK);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ed)
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("Beim Senden einer Nachricht ist ein Fehler aufgetreten. " + ed.Message + "\n" + ed.StackTrace, "Fehler", MessageBoxButton.OK);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-10-24 11:39:59 +02:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Add Emoji To ChatBox
|
|
|
|
|
|
public delegate void EmojiiDelegate(Button x);
|
|
|
|
|
|
|
|
|
|
|
|
public event EmojiiDelegate OnEmojii;
|
|
|
|
|
|
|
|
|
|
|
|
private void EmojiButton_OnClick(object sender, RoutedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
//hier wie bei login
|
|
|
|
|
|
if (OnEmojii != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
OnEmojii(EmojiButton);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Nachladen weiterer Chat Nachrichten
|
|
|
|
|
|
private void Chat_OnScrollChanged(object sender, ScrollChangedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
List<ScrollBar> scrollBarList = GetVisualChildCollection<ScrollBar>(Chat);
|
|
|
|
|
|
foreach (ScrollBar scrollBar in scrollBarList)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (scrollBar.Orientation == Orientation.Horizontal)
|
|
|
|
|
|
{
|
|
|
|
|
|
scrollBar.ValueChanged += HorizontalScrollbarChanged;
|
|
|
|
|
|
scrollPrueferAktivieren = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
scrollBar.ValueChanged += VerticalScrollbarChanged;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void VerticalScrollbarChanged(object sender, RoutedPropertyChangedEventArgs<double> routedPropertyChangedEventArgs)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (scrollPrueferAktivieren == true)
|
|
|
|
|
|
{
|
|
|
|
|
|
var x = (ScrollBar) sender;
|
|
|
|
|
|
|
|
|
|
|
|
if (x.Value > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
//nix
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
2017-09-15 09:49:32 +02:00
|
|
|
|
{
|
|
|
|
|
|
Cursor = Cursors.Wait;
|
|
|
|
|
|
//StartWaiting();
|
2017-09-12 14:32:34 +02:00
|
|
|
|
scrollPrueferAktivieren = false;
|
|
|
|
|
|
|
|
|
|
|
|
Chat.Items.MoveCurrentToFirst();
|
|
|
|
|
|
KontaktMessageBuilder item = Chat.Items.CurrentItem as KontaktMessageBuilder;
|
|
|
|
|
|
|
|
|
|
|
|
Chat.ItemsSource = null;
|
|
|
|
|
|
|
|
|
|
|
|
var kontakt = (KontaktlistBuilder)Clientlist.SelectedItem;
|
|
|
|
|
|
|
|
|
|
|
|
var xy = _chat.LadeWeiterNachrichten(kontakt);
|
|
|
|
|
|
|
|
|
|
|
|
Chat.ItemsSource = xy;
|
|
|
|
|
|
|
2017-09-15 09:49:32 +02:00
|
|
|
|
Chat.ScrollIntoView(item);
|
|
|
|
|
|
//EndWaiting();
|
|
|
|
|
|
Cursor = Cursors.Arrow;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void HorizontalScrollbarChanged(object sender, RoutedPropertyChangedEventArgs<double> routedPropertyChangedEventArgs)
|
|
|
|
|
|
{
|
|
|
|
|
|
//nix
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#region Get Scollbar von listbox
|
|
|
|
|
|
private static List<T> GetVisualChildCollection<T>(object parent) where T : Visual
|
|
|
|
|
|
{
|
|
|
|
|
|
List<T> visualCollection = new List<T>();
|
|
|
|
|
|
GetVisualChildCollection(parent as DependencyObject, visualCollection);
|
|
|
|
|
|
return visualCollection;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static void GetVisualChildCollection<T>(DependencyObject parent, List<T> visualCollection) where T : Visual
|
|
|
|
|
|
{
|
|
|
|
|
|
int count = VisualTreeHelper.GetChildrenCount(parent);
|
|
|
|
|
|
for (int i = 0; i < count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
DependencyObject child = VisualTreeHelper.GetChild(parent, i);
|
|
|
|
|
|
if (child is T)
|
|
|
|
|
|
{
|
|
|
|
|
|
visualCollection.Add(child as T);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (child != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
GetVisualChildCollection(child, visualCollection);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Funktion Nachrichten Listener
|
|
|
|
|
|
|
|
|
|
|
|
private void HorcheAktivNachNachrichten()
|
|
|
|
|
|
{
|
|
|
|
|
|
threadBool = false;
|
|
|
|
|
|
|
|
|
|
|
|
if (newThread != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
newThread.Join();
|
|
|
|
|
|
newThread = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var kontakt = (AktuellerKontakt)AktChatUser.Items[0];
|
|
|
|
|
|
|
|
|
|
|
|
//thred besser verwalten
|
|
|
|
|
|
newThread = new Thread(DoWork);
|
|
|
|
|
|
newThread.IsBackground = true;
|
|
|
|
|
|
newThread.Start(kontakt);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void DoWork(object o)
|
|
|
|
|
|
{
|
|
|
|
|
|
threadBool = true;
|
|
|
|
|
|
|
|
|
|
|
|
bool _schaueNachMs = false;
|
|
|
|
|
|
|
|
|
|
|
|
var kontakt = (AktuellerKontakt) o;
|
|
|
|
|
|
while (true)
|
|
|
|
|
|
{
|
|
|
|
|
|
_schaueNachMs = _chat.SchaueNachNeuenNachrichten(kontakt);
|
|
|
|
|
|
|
|
|
|
|
|
if (_schaueNachMs == true)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
this.Dispatcher.BeginInvoke(
|
|
|
|
|
|
DispatcherPriority.Background,
|
|
|
|
|
|
(Action)delegate
|
|
|
|
|
|
{
|
|
|
|
|
|
if(kontakt != null) {
|
2017-10-20 14:41:03 +02:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
var x = _chat.LadeChatNachrichtenVomKontakt(kontakt);
|
|
|
|
|
|
|
2017-10-20 14:41:03 +02:00
|
|
|
|
CollectionViewSource.GetDefaultView(Chat.ItemsSource).Refresh();
|
|
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
Chat.Items.MoveCurrentToLast();
|
|
|
|
|
|
Chat.ScrollIntoView(Chat.Items.CurrentItem);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
_schaueNachMs = false;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (threadBool == false)
|
|
|
|
|
|
{
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-20 14:41:03 +02:00
|
|
|
|
//Task.Delay(2000);
|
|
|
|
|
|
Thread.Sleep(2000);
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Für alle Nachrichten Count Listener
|
|
|
|
|
|
private void HorcheAlleGruppenNachrichten()
|
|
|
|
|
|
{
|
|
|
|
|
|
AlleKontakteThread = new Thread(DoWorkAlleNachrichten);
|
|
|
|
|
|
AlleKontakteThread.IsBackground = true;
|
|
|
|
|
|
AlleKontakteThread.Start();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void DoWorkAlleNachrichten()
|
|
|
|
|
|
{
|
|
|
|
|
|
while (true)
|
2017-10-24 11:39:59 +02:00
|
|
|
|
{
|
|
|
|
|
|
var x = _chat.SchaueNachAllenMessageCounts();
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-10-24 11:39:59 +02:00
|
|
|
|
if (x > 0)
|
2017-09-12 14:32:34 +02:00
|
|
|
|
{
|
|
|
|
|
|
this.Dispatcher.BeginInvoke(
|
|
|
|
|
|
DispatcherPriority.Background,
|
|
|
|
|
|
(Action)delegate
|
|
|
|
|
|
{
|
|
|
|
|
|
var alist = _chat.NeueGroupklassenKontakte();
|
|
|
|
|
|
|
2017-10-24 11:39:59 +02:00
|
|
|
|
AktuellerKontakt aktuellerKontakt = null;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-10-24 11:39:59 +02:00
|
|
|
|
if (AktChatUser.HasItems)
|
2017-09-12 14:32:34 +02:00
|
|
|
|
{
|
2017-10-24 11:39:59 +02:00
|
|
|
|
aktuellerKontakt = (AktuellerKontakt) AktChatUser.Items[0];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var liste in _kontaktlist)
|
2017-09-12 14:32:34 +02:00
|
|
|
|
{
|
2017-10-24 11:39:59 +02:00
|
|
|
|
foreach (var neu in alist)
|
2017-09-12 14:32:34 +02:00
|
|
|
|
{
|
2017-10-24 11:39:59 +02:00
|
|
|
|
if (liste.GroupId == neu.GroupId)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!liste.ReceiveMs.Equals(neu.ReceiveMs)) {
|
2017-09-15 11:23:03 +02:00
|
|
|
|
|
2017-10-24 11:39:59 +02:00
|
|
|
|
liste.ReceiveMs = neu.ReceiveMs;
|
|
|
|
|
|
liste.TimeStamp = neu.TimeStamp;
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-10-24 11:39:59 +02:00
|
|
|
|
if (aktuellerKontakt != null && neu.GroupId == aktuellerKontakt.GroupId)
|
|
|
|
|
|
{
|
|
|
|
|
|
liste.SetzeGelesen = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
liste.SetzeGelesen = 1;
|
|
|
|
|
|
}
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-10-24 11:39:59 +02:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-10-24 11:39:59 +02:00
|
|
|
|
Clientlist.Items.Refresh();
|
|
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
});
|
2017-10-24 11:39:59 +02:00
|
|
|
|
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (AlleNachrichtenThreadBool == false)
|
|
|
|
|
|
{
|
|
|
|
|
|
break;
|
2017-10-24 11:39:59 +02:00
|
|
|
|
}
|
2017-09-12 14:32:34 +02:00
|
|
|
|
|
2017-10-24 11:39:59 +02:00
|
|
|
|
Thread.Sleep(5000);
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Suche Nach Person
|
|
|
|
|
|
|
|
|
|
|
|
private void Suche_OnTextChanged(object sender, TextChangedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
CollectionViewSource.GetDefaultView(Clientlist.ItemsSource).Refresh();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private bool UserFilter(object item)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (String.IsNullOrEmpty(Suche.Text))
|
|
|
|
|
|
return true;
|
|
|
|
|
|
else
|
|
|
|
|
|
return ((item as KontaktlistBuilder).Name.IndexOf(Suche.Text, StringComparison.OrdinalIgnoreCase) >= 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
2017-09-14 12:36:48 +02:00
|
|
|
|
|
2017-09-15 09:49:32 +02:00
|
|
|
|
#region Zeige Erhaltene Daten per doppelclick An In Dem Fall Bilder Zurzeit
|
2017-09-14 12:36:48 +02:00
|
|
|
|
|
|
|
|
|
|
private void Chat_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
|
|
|
|
{
|
2017-10-20 07:34:26 +02:00
|
|
|
|
Cursor = Cursors.Wait;
|
|
|
|
|
|
StartWaiting();
|
2017-09-14 12:36:48 +02:00
|
|
|
|
var chatItems = Chat.SelectedItems;
|
|
|
|
|
|
|
2017-10-20 07:34:26 +02:00
|
|
|
|
if (chatItems.Count > 0)
|
|
|
|
|
|
{
|
2017-09-14 12:36:48 +02:00
|
|
|
|
foreach (var items in chatItems)
|
|
|
|
|
|
{
|
|
|
|
|
|
var item = items as KontaktMessageBuilder;
|
|
|
|
|
|
|
|
|
|
|
|
if (item != null && item.ImageSources != null)
|
2017-11-06 07:16:43 +01:00
|
|
|
|
{
|
|
|
|
|
|
_chat.ShowPicture(item);
|
2017-09-14 12:36:48 +02:00
|
|
|
|
}
|
2017-11-06 07:16:43 +01:00
|
|
|
|
else if(item != null && item.Dokpfad != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
var filename = Path.GetFileName(item.Dokpfad.ToString());
|
|
|
|
|
|
LoadDokument(item.Dokpfad.ToString(), filename);
|
|
|
|
|
|
}
|
2017-09-14 12:36:48 +02:00
|
|
|
|
}
|
2017-11-06 07:16:43 +01:00
|
|
|
|
|
|
|
|
|
|
EndWaiting();
|
|
|
|
|
|
Cursor = Cursors.Arrow;
|
2017-09-14 12:36:48 +02:00
|
|
|
|
}
|
2017-10-20 07:34:26 +02:00
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
EndWaiting();
|
|
|
|
|
|
Cursor = Cursors.Arrow;
|
2017-11-06 07:16:43 +01:00
|
|
|
|
}
|
2017-09-14 12:36:48 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Lade Dokument Herunter und Zeige es an
|
|
|
|
|
|
private void OpenDokument_OnClick(object sender, RoutedEventArgs e)
|
2017-11-06 07:16:43 +01:00
|
|
|
|
{
|
|
|
|
|
|
OpenDocument(sender);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OpenDocument(object sender)
|
2017-09-14 12:36:48 +02:00
|
|
|
|
{
|
2017-09-15 11:23:03 +02:00
|
|
|
|
Cursor = Cursors.Wait;
|
2017-11-06 07:16:43 +01:00
|
|
|
|
|
2017-09-14 12:36:48 +02:00
|
|
|
|
var btn = sender as System.Windows.Controls.Button;
|
|
|
|
|
|
|
|
|
|
|
|
if (btn.Tag != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
var link = btn.Tag;
|
|
|
|
|
|
|
|
|
|
|
|
var filename = Path.GetFileName(link.ToString());
|
|
|
|
|
|
|
2017-11-06 07:16:43 +01:00
|
|
|
|
LoadDokument(link.ToString(), filename);
|
2017-09-14 12:36:48 +02:00
|
|
|
|
}
|
2017-09-15 11:23:03 +02:00
|
|
|
|
|
|
|
|
|
|
Cursor = Cursors.Arrow;
|
2017-09-14 12:36:48 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void LoadDokument(string link, String filename)
|
|
|
|
|
|
{
|
|
|
|
|
|
string path = @"c:\temp\" + filename;
|
|
|
|
|
|
|
|
|
|
|
|
if (!File.Exists(path))
|
|
|
|
|
|
{
|
|
|
|
|
|
using (WebClient webClient = new WebClient())
|
|
|
|
|
|
{
|
|
|
|
|
|
webClient.DownloadFile(link, path);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (File.Exists(path))
|
|
|
|
|
|
{
|
|
|
|
|
|
Process.Start(path);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
Process.Start(path);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
2017-09-15 09:49:32 +02:00
|
|
|
|
#region Wait Layer
|
|
|
|
|
|
|
|
|
|
|
|
private ChatControlWaitLayer _waitLayer = null;
|
|
|
|
|
|
|
|
|
|
|
|
public void StartWaiting()
|
|
|
|
|
|
{
|
|
|
|
|
|
Dispatcher.BeginInvoke(DispatcherPriority.Background, (Action)StartWaitingImmediately);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void StartWaitingImmediately()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_waitLayer == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
_waitLayer = new ChatControlWaitLayer();
|
|
|
|
|
|
//Grid.SetColumnSpan(_waitLayer, 3);
|
|
|
|
|
|
Grid.SetRowSpan(_waitLayer, 3);
|
|
|
|
|
|
GridRechts.Children.Add(_waitLayer);
|
|
|
|
|
|
Panel.SetZIndex(_waitLayer, int.MaxValue);
|
|
|
|
|
|
_waitLayer.RefreshChatUI();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void EndWaiting()
|
|
|
|
|
|
{
|
|
|
|
|
|
Dispatcher.BeginInvoke(
|
|
|
|
|
|
DispatcherPriority.Background,
|
|
|
|
|
|
(Action)delegate
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_waitLayer != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
GridRechts.Children.Remove(_waitLayer);
|
|
|
|
|
|
_waitLayer = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
2017-09-20 11:46:00 +02:00
|
|
|
|
#region link request
|
|
|
|
|
|
private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
Process.Start(e.Uri.ToString());
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
2017-10-06 12:08:05 +02:00
|
|
|
|
#region ReloadGruppen (For Stand Alone version)
|
|
|
|
|
|
private void ButtonReloadGruppen_OnClick(object sender, RoutedEventArgs e)
|
2017-10-24 11:39:59 +02:00
|
|
|
|
{
|
2017-10-06 12:08:05 +02:00
|
|
|
|
DoSynchro();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void DoSynchro()
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
Cursor = Cursors.Wait;
|
|
|
|
|
|
|
2017-10-24 11:39:59 +02:00
|
|
|
|
SpeichereMessageInfoInDatei();
|
|
|
|
|
|
|
2017-10-20 07:34:26 +02:00
|
|
|
|
var aktuelleGruppen = _chat.GruppenAktuallisieren();
|
2017-10-18 10:09:20 +02:00
|
|
|
|
|
2017-10-20 07:34:26 +02:00
|
|
|
|
var x = _chat.GroupklassenAktuallisieren(aktuelleGruppen);
|
2017-10-18 10:09:20 +02:00
|
|
|
|
|
2017-10-24 11:39:59 +02:00
|
|
|
|
_kontaktlist = x;
|
|
|
|
|
|
|
2017-10-20 07:34:26 +02:00
|
|
|
|
LeseMessageInfoAusDatei();
|
2017-10-24 11:39:59 +02:00
|
|
|
|
|
|
|
|
|
|
Clientlist.Items.Refresh();
|
|
|
|
|
|
|
2017-10-20 07:34:26 +02:00
|
|
|
|
Cursor = Cursors.Arrow;
|
2017-10-06 12:08:05 +02:00
|
|
|
|
}
|
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("Ein Fehler bei der Synchronisation ist aufgetreten.\nFehler:\n" + e.Message, "Fehler", MessageBoxButton.OK);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
2017-11-09 12:20:03 +01:00
|
|
|
|
|
|
|
|
|
|
#region speichern sowie lesen der MessageSyncDatei / stylezwecke (OwnChat only)
|
2017-10-18 14:32:00 +02:00
|
|
|
|
public void SpeichereMessageInfoInDatei()
|
|
|
|
|
|
{
|
|
|
|
|
|
List<KontaktlistBuilder> aa = new List<KontaktlistBuilder>();
|
|
|
|
|
|
foreach (var kontakt in _kontaktlist)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(kontakt.SetzeGelesen == 0 && !kontakt.ReceiveMs.Equals("")) {
|
|
|
|
|
|
aa.Add(kontakt);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(aa.Count>0)
|
|
|
|
|
|
_chat.SpeichereTimeStampsInDatei(aa);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void LeseMessageInfoAusDatei()
|
|
|
|
|
|
{
|
|
|
|
|
|
List<KontaktlistBuilder> aa = new List<KontaktlistBuilder>();
|
|
|
|
|
|
foreach (var kontakt in _kontaktlist)
|
|
|
|
|
|
{
|
|
|
|
|
|
aa.Add(kontakt);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var liste = _chat.PruefeTimeStampsBeiStart(aa);
|
|
|
|
|
|
|
|
|
|
|
|
if(liste != null) {
|
|
|
|
|
|
foreach (var kon in _kontaktlist)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var item in liste)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (kon.GroupId == item.Key)
|
|
|
|
|
|
{
|
|
|
|
|
|
kon.SetzeGelesen = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-11-09 12:20:03 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Speichern Und LEsen Der MesageSyncDatei (Bewoplaner only)
|
|
|
|
|
|
|
|
|
|
|
|
public List<KontaktlistBuilder> UebergebeMessageInfoDatenFuerDb()
|
|
|
|
|
|
{
|
|
|
|
|
|
List < KontaktlistBuilder > aa = new List<KontaktlistBuilder>();
|
2017-11-07 11:56:29 +01:00
|
|
|
|
|
2017-11-09 12:20:03 +01:00
|
|
|
|
Clientlist.Items.Refresh();
|
2017-11-07 11:56:29 +01:00
|
|
|
|
|
2017-11-09 12:20:03 +01:00
|
|
|
|
foreach (var item in Clientlist.Items)
|
|
|
|
|
|
{
|
|
|
|
|
|
var kontakt = item as KontaktlistBuilder;
|
|
|
|
|
|
|
|
|
|
|
|
if (kontakt != null && kontakt.SetzeGelesen == 0 && !kontakt.ReceiveMs.Equals(""))
|
|
|
|
|
|
{
|
|
|
|
|
|
aa.Add(kontakt);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return aa;
|
2017-10-18 14:32:00 +02:00
|
|
|
|
}
|
2017-11-09 12:20:03 +01:00
|
|
|
|
|
|
|
|
|
|
public void ErhalteMessageInfoVonDb(Dictionary<long,DateTime> liste)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (liste != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var kon in _kontaktlist)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var item in liste)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (kon.GroupId == item.Key)
|
|
|
|
|
|
{
|
|
|
|
|
|
kon.SetzeGelesen = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-10-18 14:32:00 +02:00
|
|
|
|
#endregion
|
2017-09-12 14:32:34 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|