2014-10-24 17:02:38 +00:00
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
using System.IO ;
using System.Windows.Forms ;
using Khendys.Controls ;
using SzNPProjects ;
using System.Net ;
namespace MSGer.tk
{
public partial class UserInfo
{
/ *
* 2014.03 . 07.
* Az ö sszes szükséges felhasználó szükséges adatai
* /
public static List < UserInfo > KnownUsers = new List < UserInfo > ( ) ; //2014.08.28.
public int UserID //Az egész rendszerben egyedi azonosítója
{
get ;
set ;
}
public int ListID //A listabeli azonosítója
{
get
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_listid" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_listid" , "-1" ) ;
return Int32 . Parse ( Storage . LoggedInSettings [ "userinfo_" + UserID + "_listid" ] ) ;
}
set
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_listid" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_listid" , "-1" ) ;
Storage . LoggedInSettings [ "userinfo_" + UserID + "_listid" ] = value . ToString ( ) ;
}
}
public string Name
{
get
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_name" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_name" , "" ) ;
return Storage . LoggedInSettings [ "userinfo_" + UserID + "_name" ] ;
}
set
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_name" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_name" , "" ) ;
Storage . LoggedInSettings [ "userinfo_" + UserID + "_name" ] = value ;
Update ( ) ;
}
}
public string Message
{
get
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_message" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_message" , "" ) ;
return Storage . LoggedInSettings [ "userinfo_" + UserID + "_message" ] ;
}
set
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_message" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_message" , "" ) ;
Storage . LoggedInSettings [ "userinfo_" + UserID + "_message" ] = value ;
Update ( ) ;
}
}
public int State
{
get
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_state" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_state" , "-1" ) ;
return Int32 . Parse ( Storage . LoggedInSettings [ "userinfo_" + UserID + "_state" ] ) ;
}
set
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_state" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_state" , "-1" ) ;
Storage . LoggedInSettings [ "userinfo_" + UserID + "_state" ] = value . ToString ( ) ;
Update ( ) ;
}
}
public string UserName
{
get
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_username" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_username" , "" ) ;
return Storage . LoggedInSettings [ "userinfo_" + UserID + "_username" ] ;
}
set
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_username" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_username" , "" ) ;
Storage . LoggedInSettings [ "userinfo_" + UserID + "_username" ] = value ;
Update ( ) ;
}
}
public string Email
{
get
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_email" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_email" , "" ) ;
return Storage . LoggedInSettings [ "userinfo_" + UserID + "_email" ] ;
}
set
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_email" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_email" , "" ) ;
Storage . LoggedInSettings [ "userinfo_" + UserID + "_email" ] = value ;
Update ( ) ;
}
}
public bool IsPartner
{
get
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_ispartner" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_ispartner" , "False" ) ;
return bool . Parse ( Storage . LoggedInSettings [ "userinfo_" + UserID + "_ispartner" ] ) ;
}
set
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_ispartner" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_ispartner" , "False" ) ;
Storage . LoggedInSettings [ "userinfo_" + UserID + "_ispartner" ] = value . ToString ( ) ;
Update ( ) ;
}
}
public int LastUpdate
{
get
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_lastupdate" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_lastupdate" , "0" ) ;
return Int32 . Parse ( Storage . LoggedInSettings [ "userinfo_" + UserID + "_lastupdate" ] ) ;
}
set
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_lastupdate" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_lastupdate" , "0" ) ;
Storage . LoggedInSettings [ "userinfo_" + UserID + "_lastupdate" ] = value . ToString ( ) ;
Update ( ) ;
}
}
public string LoginCode
{
get
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_logincode" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_logincode" , "0" ) ;
return Storage . LoggedInSettings [ "userinfo_" + UserID + "_logincode" ] ;
}
set
{
if ( ! Storage . LoggedInSettings . ContainsKey ( "userinfo_" + UserID + "_logincode" ) )
Storage . LoggedInSettings . Add ( "userinfo_" + UserID + "_logincode" , "0" ) ;
Storage . LoggedInSettings [ "userinfo_" + UserID + "_logincode" ] = value ;
Update ( ) ;
}
}
private static HashSet < IPEndPoint > ips = new HashSet < IPEndPoint > ( ) ;
public static HashSet < IPEndPoint > IPs
{
get
{
return ips ;
}
set
{
ips = value ;
}
}
private static List < IPEndPoint > bannedips = new List < IPEndPoint > ( ) ;
public static List < IPEndPoint > BannedIPs
{
get
{
return bannedips ;
}
set
{
bannedips = value ;
}
}
public static int BanTime { get ; set ; }
public UserInfo ( )
{
}
~ UserInfo ( ) //2014.10.09.
{
}
public int PicUpdateTime = 0 ;
public string GetImage ( )
{
string tmp = Path . GetTempPath ( ) ;
if ( ! Directory . Exists ( tmp + "\\MSGer.tk\\pictures" ) ) //2014.08.16. - Áthelyezve, hogy mindig létrehozza, ha kell, és letöltse a képeket
Directory . CreateDirectory ( tmp + "\\MSGer.tk\\pictures" ) ;
//2014.08.16. - A képeket azért nem menti felhasználónként, mert úgyis le tudja tölteni mindenkinek a képét szinte bárki, és amúgy is UserID-val van azonosítva
List < byte > sendb = new List < byte > ( ) ;
sendb . AddRange ( BitConverter . GetBytes ( CurrentUser . UserID ) ) ;
sendb . AddRange ( BitConverter . GetBytes ( UserID ) ) ;
sendb . AddRange ( BitConverter . GetBytes ( ( File . Exists ( tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png" ) ) ? PicUpdateTime : 0 ) ) ;
byte [ ] [ ] bytesb = Networking . SendUpdate ( Networking . UpdateType . GetImage , sendb . ToArray ( ) , false ) ;
if ( bytesb = = null | | bytesb . All ( entry = > entry . Length = = 0 ) ) //bytesb.All(...): 2014.09.01.
{
if ( File . Exists ( tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png" ) )
return tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png" ;
else
return "noimage.png" ;
}
bytesb = bytesb . Select ( entry = > Networking . ParsePacket ( entry ) . Data ) . ToArray ( ) ;
int [ ] picupdatetimes = bytesb . Select ( b = > BitConverter . ToInt32 ( b , 0 ) ) . ToArray ( ) ;
int maxIndex = Array . IndexOf < int > ( picupdatetimes , picupdatetimes . Max ( ) ) ;
byte [ ] bytes = bytesb [ maxIndex ] ; //Attól tölti le a képet, akinek a legfrissebb
if ( bytes [ 0 ] = = 0x00 ) //Nincs kép, vagy hiba történt
{
return "noimage.png" ;
}
else if ( bytes [ 0 ] = = 0x01 )
{
return tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png" ;
}
else
{ //Mentse el a képet
File . WriteAllBytes ( tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png" , bytes ) ;
return tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png" ; //2014.08.16.
}
}
public List < int > GetChatWindows ( )
{
List < int > retlist = new List < int > ( ) ;
for ( int x = 0 ; x < ChatForm . ChatWindows . Count ; x + + )
{
if ( ChatForm . ChatWindows [ x ] . ChatPartners . Contains ( UserID ) )
{
retlist . Add ( x ) ;
}
}
return retlist ;
}
public static void Load ( )
{
foreach ( var entry in Storage . LoggedInSettings )
{
string [ ] tmp = entry . Key . Split ( '_' ) ;
if ( tmp [ 0 ] ! = "userinfo" )
continue ;
var tmp2 = new UserInfo ( ) ;
tmp2 . UserID = Int32 . Parse ( tmp [ 1 ] ) ;
if ( ! IDIsInList ( KnownUsers , tmp2 . UserID ) )
KnownUsers . Add ( tmp2 ) ;
}
}
public static bool IDIsInList ( List < UserInfo > list , int userid )
{
return ( list . Count ( entry = > entry . UserID = = userid ) > 0 ) ; //2014.09.19.
}
public static UserInfo Select ( int userid )
{
try
{
return KnownUsers . Single ( entry = > entry . UserID = = userid ) ; //2014.09.19.
}
catch
{
return null ;
}
}
public static int GetUserIDFromListID ( int ListID )
{
for ( int i = 0 ; i < UserInfo . KnownUsers . Count ; i + + )
{
if ( UserInfo . KnownUsers [ i ] . IsPartner & & UserInfo . KnownUsers [ i ] . ListID = = ListID )
return UserInfo . KnownUsers [ i ] . UserID ;
}
return 0 ;
}
public static bool AutoUpdate { get ; set ; }
private Timer UpdateTimer = new Timer ( ) ; //2014.09.26. - Csak másodpercenként frissíti az ismerőslistát
public void Update ( )
{
if ( ! IsPartner | | ! AutoUpdate )
return ;
if ( ! UpdateTimer . Enabled )
{
UpdateTimer . Interval = 500 ;
UpdateTimer . Tick + = UpdateTimerTick ;
UpdateTimer . Start ( ) ;
}
}
private void UpdateTimerTick ( object sender , EventArgs e )
{
UpdateTimer . Stop ( ) ;
//Partnerlista frissítése
//2014.10.09.
string imgpath = this . GetImage ( ) ;
if ( ! ( imgpath ! = "noimage.png" | | File . Exists ( "noimage.png" ) ) ) //2014.03.13. - 2014.10.09.
{
imgpath = "" ;
MessageBox . Show ( Language . Translate ( "noimage_notfound" ) , Language . Translate ( "error" ) ) ;
}
string state = "" ;
if ( this . State = = 1 )
state = " (" + Language . Translate ( "menu_file_status_online" ) + ")" ;
else if ( this . State = = 2 )
state = " (" + Language . Translate ( "menu_file_status_busy" ) + ")" ;
else if ( this . State = = 3 )
state = " (" + Language . Translate ( "menu_file_status_away" ) + ")" ;
2014-10-24 17:48:59 +00:00
else
2014-10-24 17:02:38 +00:00
state = " (" + Language . Translate ( "offline" ) + ")" ;
string text = this . Name + state + "\n" + this . Message ;
if ( ListID = = - 1 )
{
int i ;
for ( i = 0 ; i < Program . MainF . contactList . Items . Count ; i + + )
{
if ( Program . MainF . contactList . Items [ i ] . SubItems [ 1 ] . Text = = "" )
{
break ;
}
}
ListID = i ;
}
//2014.10.09.
bool tmp = Program . MainF . contactList . AutoUpdate ;
Program . MainF . contactList . AutoUpdate = false ;
while ( Program . MainF . contactList . Items . Count < = ListID ) //Azt is adja hozzá, ami a kész listaelem lesz
{
var pictb = new PictureBox ( ) ;
pictb . SizeMode = PictureBoxSizeMode . Zoom ;
pictb . ImageLocation = imgpath ;
var listtext = new ExRichTextBox ( ) ;
listtext . Text = text ;
listtext = TextFormat . Parse ( listtext ) ;
Program . MainF . contactList . Items . Add ( new RichListViewItem ( new Control [ ] { pictb , listtext } ) ) ;
}
( ( PictureBox ) Program . MainF . contactList . Items [ ListID ] . SubItems [ 0 ] ) . ImageLocation = imgpath ;
Program . MainF . contactList . Items [ ListID ] . SubItems [ 1 ] . Text = text ;
Program . MainF . contactList . Items [ ListID ] . SubItems [ 1 ] = TextFormat . Parse ( ( ExRichTextBox ) Program . MainF . contactList . Items [ ListID ] . SubItems [ 1 ] ) ;
Program . MainF . contactList . AutoUpdate = tmp ;
}
}
}