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.Threading ;
using System.Windows ;
using System.Windows.Controls ;
using System.Windows.Data ;
2019-04-04 13:00:10 +02:00
using System.Windows.Forms ;
2017-09-12 14:32:34 +02:00
using System.Windows.Input ;
using System.Windows.Media ;
using System.Windows.Navigation ;
using System.Windows.Threading ;
2019-04-02 13:43:30 +02:00
2017-09-12 14:32:34 +02:00
using ChatController.ChatKlassen ;
using ChatController.HauptKlassen ;
using ChatController.Klassen ;
2019-04-04 13:00:10 +02:00
using ChatController.LoginKlassen ;
using ChatController.Utilities ;
using Button = System . Windows . Controls . Button ;
using Cursors = System . Windows . Input . Cursors ;
using DataFormats = System . Windows . DataFormats ;
using KeyEventArgs = System . Windows . Input . KeyEventArgs ;
using MenuItem = System . Windows . Controls . MenuItem ;
using MessageBox = System . Windows . MessageBox ;
using Orientation = System . Windows . Controls . Orientation ;
using Panel = System . Windows . Controls . Panel ;
2017-09-14 12:36:48 +02:00
using Path = System . IO . Path ;
2019-04-04 13:00:10 +02:00
using ScrollBar = System . Windows . Controls . Primitives . ScrollBar ;
2017-09-12 14:32:34 +02:00
namespace ChatController
{
2019-04-02 13:43:30 +02:00
public partial class ChatMainControl
2017-09-12 14:32:34 +02:00
{
2017-11-09 12:20:03 +01:00
#region Vokabeln
2019-04-02 13:43:30 +02:00
private Chat _Chat ;
private AktuellerKontakt _AktuellerKontakt ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
private bool _IsChatBoxOnFocus ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
private ChatEmojiiControl _EmojiView ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
private IOrderedEnumerable < ChatMessage > _OrderedMessages ;
2019-04-04 13:00:10 +02:00
private IOrderedEnumerable < Contact > _ContactList ;
2017-11-09 12:20:03 +01:00
2019-04-02 13:43:30 +02:00
private bool _ScrollPrueferAktivieren ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
private Thread _NewThread ;
2017-12-11 14:32:56 +01:00
public bool disableKontaktNachrichtenThread = true ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
private Thread _AlleKontakteThread ;
public bool _AlleNachrichtenThreadBool = true ;
private readonly List < string > _CreatedTempFiles = new List < string > ( ) ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
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
2019-04-02 13:43:30 +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-12-11 14:32:56 +01:00
ReloadGruppen . Visibility = Visibility . Collapsed ;
2017-09-12 14:32:34 +02:00
}
public void InitMitChatdaten ( ChatDatenUebergabe cdu )
{
2019-04-02 13:43:30 +02:00
_Chat = new Chat ( cdu ) ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
_ContactList = _Chat . GroupklassenInChatKontakteUmwandler ( ) ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
Clientlist . ItemsSource = _ContactList ;
2017-09-14 12:36:48 +02:00
2019-04-02 13:43:30 +02:00
var 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
2019-04-02 13:43:30 +02:00
public AktuellerKontakt GetCurrentContact ( )
2017-09-12 14:32:34 +02:00
{
2019-04-02 13:43:30 +02:00
var kontakt = ( AktuellerKontakt ) AktChatUserList ? . Items [ 0 ] ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
return kontakt ? . CustomerOid = = null ? null : kontakt ;
2017-09-12 14:32:34 +02:00
}
2017-12-11 14:32:56 +01:00
public List < ChatMessage > GetSelectedMessages ( )
2017-09-12 14:32:34 +02:00
{
2019-04-02 13:43:30 +02:00
var itemListe = new List < ChatMessage > ( ) ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
foreach ( var selectedItem in ChatListBox . SelectedItems )
2017-09-12 14:32:34 +02:00
{
2019-04-02 13:43:30 +02:00
var Item = selectedItem as ChatMessage ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
itemListe . Add ( Item ) ;
2017-09-12 14:32:34 +02:00
}
2019-04-02 13:43:30 +02:00
return itemListe . Count > 0 ? itemListe : null ;
2017-09-12 14:32:34 +02:00
}
2017-10-24 11:39:59 +02:00
#region Style setter für ownChatDesktop Version
2019-04-02 13:43:30 +02:00
public void ResetStyle ( )
2017-10-06 12:08:05 +02:00
{
EmojiButton . Style = null ;
MediaButton . Style = null ;
ReloadGruppen . Visibility = Visibility . Visible ;
2019-04-02 13:43:30 +02:00
_IsDesktopVersion = false ;
2017-10-06 12:08:05 +02:00
}
2017-10-20 14:41:03 +02:00
#endregion
2017-11-16 15:38:30 +01: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 )
{
2019-04-04 13:00:10 +02:00
_Chat . ShowProfilePicture ( _AktuellerKontakt ) ;
2017-09-12 14:32:34 +02:00
}
private void Clientlist_OnSelectionChanged ( object sender , SelectionChangedEventArgs e )
{
2017-09-15 09:49:32 +02:00
if ( Clientlist . SelectedItem ! = null )
{
2017-12-11 14:32:56 +01:00
disableKontaktNachrichtenThread = true ;
Cursor = Cursors . Wait ;
2019-04-02 13:43:30 +02:00
_ScrollPrueferAktivieren = false ;
2017-12-11 14:32:56 +01:00
ChatListBox . ItemsSource = null ;
2017-09-12 14:32:34 +02:00
2017-12-11 14:32:56 +01:00
AktChatUserList . Items . Clear ( ) ;
2017-09-12 14:32:34 +02:00
2019-04-04 13:00:10 +02:00
var kontakt = ( Contact ) Clientlist . SelectedItem ;
2017-09-12 14:32:34 +02:00
2019-04-04 13:00:10 +02:00
if ( kontakt . NumberOfReadMessages = = 1 ) {
kontakt . NumberOfReadMessages = 0 ;
2017-09-12 14:32:34 +02:00
Clientlist . Items . Refresh ( ) ;
}
var aktuellerKontakt = new AktuellerKontakt ( kontakt ) ;
2017-12-11 14:32:56 +01:00
AktChatUserList . Items . Add ( aktuellerKontakt ) ;
2019-04-02 13:43:30 +02:00
_AktuellerKontakt = aktuellerKontakt ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
var chatMessages = _Chat . LadeChatNachrichtenVomKontakt ( aktuellerKontakt ) ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
ChatListBox . ItemsSource = chatMessages ;
2017-12-18 18:22:13 +01:00
if ( VisualTreeHelper . GetChildrenCount ( ChatListBox ) > 0 )
{
2019-04-02 13:43:30 +02:00
var border = ( Border ) VisualTreeHelper . GetChild ( ChatListBox , 0 ) ;
var scrollViewer = ( ScrollViewer ) VisualTreeHelper . GetChild ( border , 0 ) ;
2017-12-18 18:22:13 +01:00
scrollViewer . ScrollToBottom ( ) ;
}
2019-04-02 13:43:30 +02:00
ChatListBox . ContextMenu = _Chat . ErstelleKontextMenue ( ) ;
2017-09-12 14:32:34 +02:00
SetContextHandler ( ) ;
2019-04-02 13:43:30 +02:00
_ScrollPrueferAktivieren = true ;
2017-11-10 11:41:09 +01:00
2017-09-12 14:32:34 +02:00
HorcheAktivNachNachrichten ( ) ;
Cursor = Cursors . Arrow ;
2017-12-18 18:22:13 +01:00
2017-12-11 14:32:56 +01:00
disableKontaktNachrichtenThread = false ;
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 ( )
{
2017-12-11 14:32:56 +01:00
var contextItems = ChatListBox . ContextMenu . Items ;
2017-09-18 13:07:37 +02:00
2019-04-02 13:43:30 +02:00
foreach ( var menuItemText in _MenuItemName2Callback . Keys )
2017-09-12 14:32:34 +02:00
{
2019-04-02 13:43:30 +02:00
var cb = _MenuItemName2Callback [ menuItemText ] ;
2017-09-12 14:32:34 +02:00
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-12-11 14:32:56 +01:00
foreach ( var items in ChatListBox . SelectedItems )
2017-09-14 12:36:48 +02:00
{
2017-12-11 14:32:56 +01:00
var item = ( ChatMessage ) items ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
_Chat . SpeichernUnterFunkion ( item ) ;
2017-09-14 12:36:48 +02:00
}
}
2017-09-12 14:32:34 +02:00
2017-09-14 12:36:48 +02:00
private void Item3OnClick ( object sender , RoutedEventArgs routedEventArgs )
{
2017-12-11 14:32:56 +01:00
var kontakt = ( AktuellerKontakt ) AktChatUserList . Items [ 0 ] ;
2019-04-02 13:43:30 +02:00
_Chat . Einfuegen ( kontakt . GroupId , this ) ;
2017-09-18 13:07:37 +02:00
}
private void Item4OnClick ( object sender , RoutedEventArgs routedEventArgs )
{
string chatmessages = "" ;
2017-12-11 14:32:56 +01:00
foreach ( var items in ChatListBox . SelectedItems )
2017-09-18 13:07:37 +02:00
{
2017-12-11 14:32:56 +01:00
var item = ( ChatMessage ) items ;
2017-09-18 13:07:37 +02:00
chatmessages + = item . UserMessage + "\n" ;
}
if ( ! chatmessages . Equals ( "" ) )
2019-04-02 13:43:30 +02:00
_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 )
{
2017-12-11 14:32:56 +01:00
var chatItems = ChatListBox . SelectedItems ;
2017-09-14 12:36:48 +02:00
if ( chatItems . Count > 0 )
{
foreach ( var items in chatItems )
{
2017-12-11 14:32:56 +01:00
var item = items as ChatMessage ;
2017-09-14 12:36:48 +02:00
if ( item ! = null & & item . ImageSources ! = null )
{
2017-12-11 14:32:56 +01:00
var contextItems = ChatListBox . ContextMenu . Items ;
2017-09-14 12:36:48 +02:00
var ContextItemSpeichernUnter = ( MenuItem ) contextItems [ 0 ] ;
ContextItemSpeichernUnter . Visibility = Visibility . Visible ;
}
else
{
2017-12-11 14:32:56 +01:00
var contextItems = ChatListBox . ContextMenu . Items ;
2017-09-14 12:36:48 +02:00
var ContextItemSpeichernUnter = ( MenuItem ) contextItems [ 0 ] ;
ContextItemSpeichernUnter . Visibility = Visibility . Collapsed ;
}
2017-09-18 13:07:37 +02:00
if ( item . ImageSources = = null & & item . Dokpfad = = null )
{
2017-12-11 14:32:56 +01:00
var contextItems = ChatListBox . ContextMenu . Items ;
2017-09-18 13:07:37 +02:00
var ContextItemSpeichernUnter = ( MenuItem ) contextItems [ 2 ] ;
ContextItemSpeichernUnter . Visibility = Visibility . Visible ;
}
else
{
2017-12-11 14:32:56 +01:00
var contextItems = ChatListBox . ContextMenu . Items ;
2017-09-18 13:07:37 +02:00
var ContextItemSpeichernUnter = ( MenuItem ) contextItems [ 2 ] ;
ContextItemSpeichernUnter . Visibility = Visibility . Collapsed ;
}
2017-09-14 12:36:48 +02:00
}
}
else
{
//Schalte speichern unter Aus
2017-12-11 14:32:56 +01:00
var contextItems = ChatListBox . ContextMenu . Items ;
2017-09-14 12:36:48 +02:00
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
{
2017-12-11 14:32:56 +01:00
var contextItems = ChatListBox . ContextMenu . Items ;
2017-09-14 12:36:48 +02:00
var ContextItemSpeichernUnter = ( MenuItem ) contextItems [ 1 ] ;
ContextItemSpeichernUnter . Visibility = Visibility . Visible ;
}
else if ( d . GetDataPresent ( DataFormats . Text ) )
{
2017-12-11 14:32:56 +01:00
var contextItems = ChatListBox . ContextMenu . Items ;
2017-09-14 12:36:48 +02:00
var ContextItemSpeichernUnter = ( MenuItem ) contextItems [ 1 ] ;
ContextItemSpeichernUnter . Visibility = Visibility . Visible ;
}
else if ( d . GetDataPresent ( DataFormats . Bitmap ) )
{
2017-12-11 14:32:56 +01:00
var contextItems = ChatListBox . ContextMenu . Items ;
2017-09-14 12:36:48 +02:00
var ContextItemSpeichernUnter = ( MenuItem ) contextItems [ 1 ] ;
ContextItemSpeichernUnter . Visibility = Visibility . Visible ;
}
else
{
2017-12-11 14:32:56 +01:00
var contextItems = ChatListBox . ContextMenu . Items ;
2017-09-14 12:36:48 +02:00
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-12-11 14:32:56 +01:00
var kontakt = ( AktuellerKontakt ) AktChatUserList . Items [ 0 ] ;
2017-12-18 18:22:13 +01:00
if ( kontakt . CustomerOid = = null & & ChatListBox . ContextMenu . Items . Count > 3 )
2017-09-12 14:32:34 +02:00
{
2017-12-11 14:32:56 +01:00
var contextItems = ChatListBox . 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-12-11 14:32:56 +01:00
else if ( ChatListBox . ContextMenu . Items . Count > 3 )
2017-09-15 09:49:32 +02:00
{
2017-12-11 14:32:56 +01:00
var contextItems = ChatListBox . 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-12-11 14:32:56 +01:00
if ( ChatListBox . ContextMenu . Items . Count = = 0 )
2017-09-14 12:36:48 +02:00
{
2017-12-11 14:32:56 +01:00
ChatListBox . 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
{
2019-04-02 13:43:30 +02:00
if ( ! _MenuItemName2Callback . ContainsKey ( menuItemText ) )
2017-09-14 12:36:48 +02:00
{
2019-04-02 13:43:30 +02:00
_MenuItemName2Callback . Add ( menuItemText , callBackAction ) ;
2017-09-14 12:36:48 +02:00
}
2017-09-12 14:32:34 +02:00
}
#endregion
#region Sende Media Nachrichten
private void MediaButton_OnClick ( object sender , RoutedEventArgs e )
{
2017-12-11 14:32:56 +01:00
if ( AktChatUserList . Items . Count > 0 )
2017-09-14 12:36:48 +02:00
{
2017-12-11 14:32:56 +01:00
var kontakt = ( AktuellerKontakt ) AktChatUserList . Items [ 0 ] ;
2017-10-20 14:41:03 +02:00
2019-04-02 13:43:30 +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 ) {
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
string convertetMedia = _Chat . ScaleImage ( medium , Path . GetExtension ( medium . ToUpperInvariant ( ) ) ) ;
2017-11-17 15:40:11 +01:00
if ( ! convertetMedia . Equals ( "" ) )
{
2019-04-02 13:43:30 +02:00
_Chat . AddeMediumDerNachrichtView ( convertetMedia , medium ) ;
2017-11-17 15:40:11 +01:00
2017-12-11 14:32:56 +01:00
CollectionViewSource . GetDefaultView ( ChatListBox . ItemsSource ) . Refresh ( ) ;
ChatListBox . Items . MoveCurrentToLast ( ) ;
ChatListBox . ScrollIntoView ( ChatListBox . Items . CurrentItem ) ;
2017-11-17 15:40:11 +01:00
2019-04-02 13:43:30 +02:00
_Chat . SendeMediumAnKontakt ( kontakt , convertetMedia , medium ) ;
2017-11-17 15:40:11 +01:00
2017-12-11 14:32:56 +01:00
if ( ! convertetMedia . Equals ( "" ) & & ! convertetMedia . Equals ( medium ) & & File . Exists ( convertetMedia ) )
2017-11-17 15:40:11 +01:00
{
File . Delete ( convertetMedia ) ;
}
}
else
{
2017-12-11 14:32:56 +01:00
MessageBox . Show ( "Die gewählte Datei ist zu groß!" , "Fehler" , MessageBoxButton . OK , MessageBoxImage . Exclamation ) ;
2017-11-17 15:40:11 +01:00
}
2017-10-20 14:41:03 +02:00
}
2017-09-14 12:36:48 +02:00
}
else
{
2017-12-11 14:32:56 +01:00
MessageBox . Show ( "Bitte wählen Sie einen Kontakt aus." , "ownChat" , MessageBoxButton . OK , MessageBoxImage . Information ) ;
2017-09-14 12:36:48 +02:00
}
2017-09-12 14:32:34 +02:00
}
#endregion
#region Sende Normale Nachrichten
private void SendButton_OnClick ( object sender , RoutedEventArgs e )
{
2019-04-02 13:43:30 +02:00
if ( ! AktChatUserList . Items . IsEmpty & & ! Chatbox . Text . Equals ( "" ) & & _IsChatBoxOnFocus )
2017-09-12 14:32:34 +02:00
{
if ( ! Chatbox . Text . Equals ( "" ) )
{
2017-12-11 14:32:56 +01:00
var kontakt = ( AktuellerKontakt ) AktChatUserList . Items [ 0 ] ;
2017-10-20 14:41:03 +02:00
2019-04-02 13:43:30 +02:00
_Chat . AddeNachrichtDerView ( Chatbox . Text ) ;
2017-10-20 14:41:03 +02:00
2017-12-11 14:32:56 +01:00
CollectionViewSource . GetDefaultView ( ChatListBox . ItemsSource ) . Refresh ( ) ;
ChatListBox . Items . MoveCurrentToLast ( ) ;
ChatListBox . ScrollIntoView ( ChatListBox . Items . CurrentItem ) ;
2017-10-20 14:41:03 +02:00
2019-04-02 13:43:30 +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 ) ;
2019-04-02 13:43:30 +02:00
_IsChatBoxOnFocus = false ;
2017-09-12 14:32:34 +02:00
}
}
}
else
{
2017-12-11 14:32:56 +01:00
if ( AktChatUserList . Items . IsEmpty )
2017-09-12 14:32:34 +02:00
{
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 ) ;
2019-04-02 13:43:30 +02:00
_IsChatBoxOnFocus = false ;
2017-09-12 14:32:34 +02:00
}
}
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 ) ;
2019-04-02 13:43:30 +02:00
_IsChatBoxOnFocus = false ;
2017-09-12 14:32:34 +02:00
}
}
}
}
private void Chatbox_OnGotFocus ( object sender , RoutedEventArgs e )
{
if ( Chatbox . Text . Equals ( "Nachricht schreiben" ) )
{
Chatbox . Text = "" ;
Chatbox . Foreground = new SolidColorBrush ( Colors . Black ) ;
2019-04-02 13:43:30 +02:00
_IsChatBoxOnFocus = true ;
2017-09-12 14:32:34 +02:00
}
//hier bereich wie Dokumentieren
}
private void Chatbox_OnKeyDownHandler ( object sender , KeyEventArgs e )
{
try
{
if ( e . Key = = Key . Return )
{
2017-12-11 14:32:56 +01:00
if ( ! AktChatUserList . Items . IsEmpty & & ! Chatbox . Text . Equals ( "" ) )
2017-09-12 14:32:34 +02:00
{
2017-12-11 14:32:56 +01:00
var kontakt = ( AktuellerKontakt ) AktChatUserList . Items [ 0 ] ;
2017-10-20 14:41:03 +02:00
2019-04-02 13:43:30 +02:00
_Chat . AddeNachrichtDerView ( Chatbox . Text ) ;
2017-09-12 14:32:34 +02:00
2017-12-11 14:32:56 +01:00
CollectionViewSource . GetDefaultView ( ChatListBox . ItemsSource ) . Refresh ( ) ;
ChatListBox . Items . MoveCurrentToLast ( ) ;
ChatListBox . ScrollIntoView ( ChatListBox . Items . CurrentItem ) ;
2017-10-20 14:41:03 +02:00
2019-04-02 13:43:30 +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
{
2017-12-11 14:32:56 +01:00
if ( AktChatUserList . Items . IsEmpty )
2017-09-12 14:32:34 +02:00
{
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 )
{
2017-12-11 14:32:56 +01:00
List < ScrollBar > scrollBarList = GetVisualChildCollection < ScrollBar > ( ChatListBox ) ;
2017-09-12 14:32:34 +02:00
foreach ( ScrollBar scrollBar in scrollBarList )
{
if ( scrollBar . Orientation = = Orientation . Horizontal )
{
scrollBar . ValueChanged + = HorizontalScrollbarChanged ;
2019-04-02 13:43:30 +02:00
_ScrollPrueferAktivieren = true ;
2017-09-12 14:32:34 +02:00
}
else
{
scrollBar . ValueChanged + = VerticalScrollbarChanged ;
}
}
}
private void VerticalScrollbarChanged ( object sender , RoutedPropertyChangedEventArgs < double > routedPropertyChangedEventArgs )
{
2019-04-02 13:43:30 +02:00
if ( _ScrollPrueferAktivieren = = true )
2017-09-12 14:32:34 +02:00
{
var x = ( ScrollBar ) sender ;
if ( x . Value > 0 )
{
//nix
}
else
2017-09-15 09:49:32 +02:00
{
Cursor = Cursors . Wait ;
//StartWaiting();
2019-04-02 13:43:30 +02:00
_ScrollPrueferAktivieren = false ;
2017-12-11 14:32:56 +01:00
ChatListBox . Items . MoveCurrentToFirst ( ) ;
ChatMessage item = ChatListBox . Items . CurrentItem as ChatMessage ;
ChatListBox . ItemsSource = null ;
2017-09-12 14:32:34 +02:00
2019-04-04 13:00:10 +02:00
var kontakt = ( Contact ) Clientlist . SelectedItem ;
2017-09-12 14:32:34 +02:00
2019-04-02 13:43:30 +02:00
var xy = _Chat . LadeWeiterNachrichten ( kontakt ) ;
2017-09-12 14:32:34 +02:00
2017-12-11 14:32:56 +01:00
ChatListBox . ItemsSource = xy ;
ChatListBox . ScrollIntoView ( item ) ;
2017-09-15 09:49:32 +02:00
//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 ( )
{
2019-04-02 13:43:30 +02:00
if ( _NewThread ! = null )
2017-09-12 14:32:34 +02:00
{
2019-04-02 13:43:30 +02:00
_NewThread . Join ( ) ;
_NewThread = null ;
2017-09-12 14:32:34 +02:00
}
2019-04-04 13:00:10 +02:00
var kontakt = ( AktuellerKontakt ) AktChatUserList . Items [ 0 ] ;
2017-09-12 14:32:34 +02:00
2019-04-04 13:00:10 +02:00
_NewThread = new Thread ( DoWork ) { IsBackground = true } ;
2019-04-02 13:43:30 +02:00
_NewThread . Start ( kontakt ) ;
2017-09-12 14:32:34 +02:00
}
private void DoWork ( object o )
{
2019-04-04 13:00:10 +02:00
var currentContact = ( AktuellerKontakt ) o ;
2017-09-12 14:32:34 +02:00
while ( true )
{
2017-12-18 18:22:13 +01:00
Thread . Sleep ( 2000 ) ;
2017-12-11 14:32:56 +01:00
if ( ! disableKontaktNachrichtenThread )
2017-09-12 14:32:34 +02:00
{
2019-04-04 13:00:10 +02:00
var hasNewMessages = _Chat . CheckIfNewMessagesExist ( currentContact ) ;
2017-12-11 14:32:56 +01:00
2019-04-04 13:00:10 +02:00
if ( hasNewMessages )
2017-09-12 14:32:34 +02:00
{
2019-04-04 13:00:10 +02:00
Utils . NotifyIcon . ShowBalloonTip ( Constants . NotificationTimeout , "ownChat" , $"Hat neue Nachrichten: {currentContact.Name}({currentContact.Contact.Name})" , ToolTipIcon . None ) ;
Dispatcher . BeginInvoke ( DispatcherPriority . Background ,
2017-12-11 14:32:56 +01:00
( Action ) delegate
{
2019-04-04 13:00:10 +02:00
_Chat . LadeChatNachrichtenVomKontakt ( currentContact ) ;
2017-12-11 14:32:56 +01:00
2019-04-04 13:00:10 +02:00
CollectionViewSource . GetDefaultView ( ChatListBox . ItemsSource ) . Refresh ( ) ;
2017-12-11 14:32:56 +01:00
2019-04-04 13:00:10 +02:00
ChatListBox . Items . MoveCurrentToLast ( ) ;
ChatListBox . ScrollIntoView ( ChatListBox . Items . CurrentItem ) ;
2017-12-11 14:32:56 +01:00
} ) ;
}
2017-09-12 14:32:34 +02:00
}
2017-12-11 14:32:56 +01:00
else
2017-09-12 14:32:34 +02:00
{
break ;
}
}
}
#endregion
#region Für alle Nachrichten Count Listener
private void HorcheAlleGruppenNachrichten ( )
{
2019-04-02 13:43:30 +02:00
_AlleKontakteThread = new Thread ( DoWorkAlleNachrichten ) ;
_AlleKontakteThread . IsBackground = true ;
_AlleKontakteThread . Start ( ) ;
2017-09-12 14:32:34 +02:00
}
private void DoWorkAlleNachrichten ( )
{
while ( true )
2017-10-24 11:39:59 +02:00
{
2019-04-02 13:43:30 +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
{
2019-04-02 13:43:30 +02:00
var alist = _Chat . NeueGroupklassenKontakte ( ) ;
2017-09-12 14:32:34 +02:00
2017-10-24 11:39:59 +02:00
AktuellerKontakt aktuellerKontakt = null ;
2017-09-12 14:32:34 +02:00
2017-12-11 14:32:56 +01:00
if ( AktChatUserList . HasItems )
2017-09-12 14:32:34 +02:00
{
2017-12-11 14:32:56 +01:00
aktuellerKontakt = ( AktuellerKontakt ) AktChatUserList . Items [ 0 ] ;
2017-10-24 11:39:59 +02:00
}
2019-04-02 13:43:30 +02:00
foreach ( var liste in _ContactList )
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 )
{
2019-04-04 13:00:10 +02:00
if ( ! liste . ReceivedMessage . Equals ( neu . ReceivedMessage ) ) {
2017-09-15 11:23:03 +02:00
2019-04-04 13:00:10 +02:00
liste . ReceivedMessage = neu . ReceivedMessage ;
2017-10-24 11:39:59 +02:00
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 )
{
2019-04-04 13:00:10 +02:00
liste . NumberOfReadMessages = 0 ;
2017-10-24 11:39:59 +02:00
}
else
{
2019-04-04 13:00:10 +02:00
liste . NumberOfReadMessages = 1 ;
2017-10-24 11:39:59 +02:00
}
2017-09-12 14:32:34 +02:00
}
}
2017-11-17 15:40:11 +01:00
//abchecken ob neue Groupid in liste vorhanden , wenn nicht dann adde neuen kontakt der liste hinzu
2019-04-02 13:43:30 +02:00
if ( ! _ContactList . Contains ( neu ) )
2017-11-17 15:40:11 +01:00
{
2019-04-02 13:43:30 +02:00
_ContactList . ToList ( ) . Add ( neu ) ;
2017-11-17 15:40:11 +01:00
}
}
//umgekert ist eine kontakt aus der liste nicht mehr in neu muss diese raus
if ( ! alist . Contains ( liste ) )
{
2019-04-02 13:43:30 +02:00
_ContactList . ToList ( ) . Remove ( liste ) ;
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
}
2019-04-02 13:43:30 +02:00
if ( _AlleNachrichtenThreadBool = = false )
2017-09-12 14:32:34 +02:00
{
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
2019-04-04 13:00:10 +02:00
return ( ( item as Contact ) . Name . IndexOf ( Suche . Text , StringComparison . OrdinalIgnoreCase ) > = 0 ) ;
2017-09-12 14:32:34 +02:00
}
#endregion
2017-09-14 12:36:48 +02:00
2017-12-11 14:32:56 +01:00
#region Zeige Erhaltene Daten per doppelclick An
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 ;
2017-12-18 18:22:13 +01:00
2017-12-11 14:32:56 +01:00
var chatItems = ChatListBox . SelectedItems ;
2017-09-14 12:36:48 +02:00
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 )
{
2017-12-11 14:32:56 +01:00
var item = items as ChatMessage ;
2017-09-14 12:36:48 +02:00
if ( item ! = null & & item . ImageSources ! = null )
2017-11-06 07:16:43 +01:00
{
2017-12-18 18:22:13 +01:00
StartWaiting ( ) ;
2019-04-02 13:43:30 +02:00
_Chat . ShowPicture ( item , EndWaiting ) ;
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
Cursor = Cursors . Arrow ;
2017-09-14 12:36:48 +02:00
}
2017-10-20 07:34:26 +02:00
else
{
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 )
2017-12-18 18:22:13 +01:00
{
try
2017-09-14 12:36:48 +02:00
{
2017-12-18 18:22:13 +01:00
StartWaiting ( ) ;
string path = Path . Combine ( Path . GetTempPath ( ) , filename ) ;
2019-04-02 13:43:30 +02:00
_CreatedTempFiles . Add ( path ) ;
2017-12-18 18:22:13 +01:00
if ( ! File . Exists ( path ) )
2017-09-14 12:36:48 +02:00
{
2017-12-18 18:22:13 +01:00
using ( WebClient webClient = new WebClient ( ) )
{
webClient . DownloadFile ( link , path ) ;
}
2017-09-14 12:36:48 +02:00
2017-12-18 18:22:13 +01:00
if ( File . Exists ( path ) )
{
Process . Start ( path ) ;
}
}
else
2017-09-14 12:36:48 +02:00
{
Process . Start ( path ) ;
}
}
2017-12-18 18:22:13 +01:00
catch ( Exception e )
2017-09-14 12:36:48 +02:00
{
2017-12-18 18:22:13 +01:00
}
finally
{
EndWaiting ( ) ;
}
2017-09-14 12:36:48 +02:00
}
#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 ( ) ;
2019-04-02 13:43:30 +02:00
var aktuelleGruppen = _Chat . GruppenAktuallisieren ( ) ;
2017-10-18 10:09:20 +02:00
2019-04-02 13:43:30 +02:00
var x = _Chat . GroupklassenAktuallisieren ( aktuelleGruppen ) ;
2017-10-18 10:09:20 +02:00
2019-04-02 13:43:30 +02:00
_ContactList = x ;
2017-10-24 11:39:59 +02:00
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 ) ;
}
}
2017-11-16 15:38:30 +01:00
#endregion
2017-12-11 14:32:56 +01:00
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 ( )
{
2019-04-04 13:00:10 +02:00
List < Contact > aa = new List < Contact > ( ) ;
2019-04-02 13:43:30 +02:00
foreach ( var kontakt in _ContactList )
2017-10-18 14:32:00 +02:00
{
2019-04-04 13:00:10 +02:00
if ( kontakt . NumberOfReadMessages = = 0 & & ! kontakt . ReceivedMessage . Equals ( "" ) ) {
2017-10-18 14:32:00 +02:00
aa . Add ( kontakt ) ;
}
}
if ( aa . Count > 0 )
2019-04-02 13:43:30 +02:00
_Chat . SpeichereTimeStampsInDatei ( aa ) ;
2017-10-18 14:32:00 +02:00
}
public void LeseMessageInfoAusDatei ( )
{
2019-04-04 13:00:10 +02:00
List < Contact > aa = new List < Contact > ( ) ;
2019-04-02 13:43:30 +02:00
foreach ( var kontakt in _ContactList )
2017-10-18 14:32:00 +02:00
{
aa . Add ( kontakt ) ;
}
2019-04-02 13:43:30 +02:00
var liste = _Chat . PruefeTimeStampsBeiStart ( aa ) ;
2017-10-18 14:32:00 +02:00
if ( liste ! = null ) {
2019-04-02 13:43:30 +02:00
foreach ( var kon in _ContactList )
2017-10-18 14:32:00 +02:00
{
foreach ( var item in liste )
{
if ( kon . GroupId = = item . Key )
{
2019-04-04 13:00:10 +02:00
kon . NumberOfReadMessages = 0 ;
2017-10-18 14:32:00 +02:00
}
}
}
2017-11-09 12:20:03 +01:00
}
}
#endregion
2017-11-16 15:38:30 +01:00
2017-11-09 12:20:03 +01:00
#region Speichern Und LEsen Der MesageSyncDatei ( Bewoplaner only )
2019-04-04 13:00:10 +02:00
public List < Contact > UebergebeMessageInfoDatenFuerDb ( )
2017-11-09 12:20:03 +01:00
{
2019-04-04 13:00:10 +02:00
List < Contact > aa = new List < Contact > ( ) ;
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 )
{
2019-04-04 13:00:10 +02:00
var kontakt = item as Contact ;
2017-11-09 12:20:03 +01:00
2019-04-04 13:00:10 +02:00
if ( kontakt ! = null & & kontakt . NumberOfReadMessages = = 0 & & ! kontakt . ReceivedMessage . Equals ( "" ) )
2017-11-09 12:20:03 +01:00
{
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 )
{
2019-04-02 13:43:30 +02:00
foreach ( var kon in _ContactList )
2017-11-09 12:20:03 +01:00
{
foreach ( var item in liste )
{
if ( kon . GroupId = = item . Key )
{
2019-04-04 13:00:10 +02:00
kon . NumberOfReadMessages = 0 ;
2017-11-09 12:20:03 +01:00
}
}
}
}
}
2017-12-11 14:32:56 +01:00
2017-10-18 14:32:00 +02:00
#endregion
2017-12-18 18:22:13 +01:00
public void DeleteTempFiles ( )
{
2019-04-02 13:43:30 +02:00
foreach ( var file in _CreatedTempFiles )
2017-12-18 18:22:13 +01:00
{
try
{
if ( File . Exists ( file ) )
2019-04-04 13:00:10 +02:00
{
2017-12-18 18:22:13 +01:00
File . Delete ( file ) ;
2019-04-04 13:00:10 +02:00
}
2017-12-18 18:22:13 +01:00
}
catch ( Exception e )
{
//ignore
}
}
}
2017-09-12 14:32:34 +02:00
}
}