U
    c&ej-:  ã                   @   s¼   d dl Z d dlmZmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z  d dl!m"Z"m#Z# G dd„ deƒZ$dS )	é    N)ÚDictÚList)ÚQActionÚQPaletteÚQColorÚQFont)ÚQt)ÚQApplicationÚQMainWindowÚQPushButtonÚQWidgetÚQVBoxLayoutÚQHBoxLayoutÚQListWidgetÚQListWidgetItemÚQTextBrowserÚQLabelÚQMessageBoxÚQToolBarÚ	QSplitterÚQTreeWidgetÚQTreeWidgetItemÚ
QTabWidgetÚQWidgetItemÚQFrameÚ
QStatusBarÚQAbstractItemViewÚQDialogButtonBox)ÚEmailÚemailsc                       s  e Zd Z‡ fdd„Zddœdd„Zddœdd„Zedd	œd
d„Zeddœdd„Z	e
dd	œdd„Zeedœdd„Zddœdd„Zddœdd„Zeddœdd„Zddœdd„Zddœdd„Zddœdd„Zddœd d!„Zddœd"d#„Zddœd$d%„Zddœd&d'„Z‡  ZS )(ÚEmailAppc                    sÎ   t ƒ  ¡  |  d¡ |  dd¡ d| _|  ¡  |  ¡ | _tdƒ| _	| j	 
d¡ | j	 tj¡ | j	 dddd¡ tƒ | _| j tj¡ | j | j	¡ | j | j¡ |  ¡  |  ¡  |  ¡  d| _d| _d	| _d S )
NzMail Simulatori°  iî  ÚPosteingangu   ðŸŒ�zSie sind derzeit onlineé   r   F)ÚsuperÚ__init__ÚsetWindowTitleÚresizeÚcurrent_folderÚcreate_layoutÚ	statusBarZ
status_barr   Zonline_labelÚ
setToolTipÚsetAttributer   ÚWA_HoverÚsetContentsMarginsÚ
link_labelÚsetTextInteractionFlagsÚTextSelectableByMouseÚ	addWidgetÚload_folderÚ
load_mailsÚapply_styleÚtotal_sortedÚcorrect_sortedÚ	evaluated©Úself©Ú	__class__© ú9/Users/marv/Desktop/EMail-Simulation 2/skripts/MailGUI.pyr$      s(    



zEmailApp.__init__N)Úreturnc                 C   s>  t ƒ }t|ƒ}| dddd¡ | d¡ t ƒ }| d¡ t|ƒ}| dddd¡ | d¡ t ƒ }| d¡ | dd¡ t|ƒ}| dddd¡ tdƒ}| 	d¡ | 
d	¡ | |¡ | ¡  t ƒ }| d
¡ | dd¡ t|ƒ}	|	 dddd¡ |	 d¡ tdƒ| _| j d¡ | j ¡ }
|
 d¡ | j |
¡ tdƒ| _| j d¡ |	 | j¡ |	 | j¡ |	 ¡  t ƒ }| d¡ t|ƒ}| dddd¡ tdƒ}tdƒ}tdƒ}tdƒ}tdƒ}| 	d¡ | 	d¡ | 	d¡ | 	d¡ | 	d¡ | 
d	¡ | 
d	¡ |j | j¡ |j | j¡ |j | j¡ | ¡  | |¡ | |¡ | |¡ | |¡ | |¡ | |¡ | |d¡ | |¡ tƒ }| d¡ | tj¡ | tj¡ | d¡ ttjƒ}| dddd¡ t ƒ | _!| j! "d¡ | j! #d¡ | j! $d ¡ | j! %tj&¡ | j!j' | j(¡ t)ƒ | _*| j* $d!¡ | j* %tj&¡ | j* +d¡ | j* ,tj-¡ t.D ]>}t/|j0› d"|j1› d"|j2› �ƒ}| 3tj4|¡ | j* 5|¡ �qV| j*j' | j6¡ t ƒ }t|ƒ}| dddd¡ | d¡ td#ƒ| _7| j7 d$¡ | j7 8tj9¡ td%ƒ| _:| j: d&¡ | j: 8tj9¡ t;ƒ | _<| j< =d¡ | j< >d'¡ | j< ?d	¡ | j< =d	¡ | j<j@ | jA¡ | j<jB d(d)„ ¡ tƒ | _C| jC d*¡ | jC 8tj9¡ | jC dddd¡ | jC D¡  | | j!¡ | | j*¡ | |¡ | Ed d!d+g¡ | |¡ | |¡ | |¡ | | j7¡ | | j:¡ | | j<d¡ | | jC¡ |  F|¡ d S ),Nr   é-   ZTop_bar_left_widgetéØ   é   é   zNeue E-Mail erstellenu.   Eine neue Nachricht verfassen (nicht mÃ¶glich)FZTop_bar_middle_widgeti4  é   z    PosteingangÚfolder_titleTz    0 E-MailsÚfolder_countZTop_bar_right_widgetZ	AntwortenZWeiterleitenZArchivierenZ	Markierenu   LÃ¶schenu'   Dem Absender antworten (nicht mÃ¶glich)u-   Diese Nachricht weiterleiten (nicht mÃ¶glich)zDiese Nachricht archivierenzDiese Nachricht markierenu   Diese Nachricht lÃ¶schené   Útop_bar_lineé   éÈ   i,  Ú
õ   Keine Nachricht ausgewÃ¤hltÚ
mail_labelÚ Ú	mail_metau   WÃ¤hle eine E-Mail aus.c                 S   s   d S ©Nr<   )Ú_r<   r<   r=   Ú<lambda>Ë   ó    z(EmailApp.create_layout.<locals>.<lambda>Úattachment_labeli¼  )Gr   r   r-   Ú
setSpacingÚsetFixedHeightr   ÚsetObjectNameÚsetFixedSizer   r*   Ú
setEnabledr1   Ú
addStretchr   rD   ÚfontÚsetBoldÚsetFontrE   ÚclickedÚconnectÚarchiv_mailÚ	mark_mailÚdelete_mailr   ÚsetFrameShapeÚHLineÚsetFrameShadowÚPlainr   r   Ú
Horizontalr   Úfolder_treeÚsetHeaderHiddenÚsetIndentationÚsetFixedWidthÚsetHorizontalScrollBarPolicyÚScrollBarAlwaysOffÚitemClickedÚselect_folderr   Ú	mail_listÚsetWordWrapÚsetTextElideModeÚ
ElideRightr   r   Úsender_nameÚsubjectÚ	timestampÚsetDataÚUserRoleÚaddItemÚselect_mailrL   r/   r0   rN   r   Ú	mail_bodyÚsetOpenExternalLinksÚsetHtmlÚsetOpenLinksÚhighlightedÚshow_hover_urlÚanchorClickedrS   ÚhideÚsetSizesÚsetCentralWidget)r9   Zcentral_widgetZmain_layoutZtop_bar_widgetZtop_barZleft_widgetZleft_layoutZbutton_sendZmiddle_widgetZmiddle_layoutrZ   Zright_widgetZright_layoutZbutton_answerZbutton_forwardZbutton_archivZbutton_markZbutton_deleterG   ÚsplitterÚmailÚitemZmailbox_containerZmailbox_layoutr<   r<   r=   r(   3   sô    






























ÿ


	




zEmailApp.create_layoutc              	   C   s,   t dddd��}|  | ¡ ¡ W 5 Q R X d S )Nzskripts/style.qssÚrzutf-8)Úencoding)ÚopenÚsetStyleSheetÚread)r9   Úfiler<   r<   r=   r4   ì   s    zEmailApp.apply_style)r†   r>   c                 C   s   |  dtj¡| _|  ¡  d S )Nr   )Údatar   rw   r'   r3   )r9   r†   r<   r<   r=   rn   ñ   s    zEmailApp.select_folder)r…   r>   c                 C   s~   | j  |j¡ | j d|j› d|j› d|j› �¡ | j d|j	› d�¡ |j
}|rp| j d|› �¡ | j ¡  n
| j ¡  d S )NzVon: z <z>
z\
            <html>
            <body style='color:black; font-size:15px;'>
                z(
            </body>
            </html>u    ðŸ“Ž Anhang: )rL   ÚsetTextrt   rN   rs   Úsenderru   rz   r|   ÚbodyÚ
attachmentrS   Úshowr�   )r9   r…   r‘   r<   r<   r=   Ú	show_mailõ   s    $ý
zEmailApp.show_mailc                 C   s0   |  tj¡}d|_| |  |¡¡ |  |¡ d S )NT)r�   r   rw   r‹   rŽ   Úformat_mailr“   )r9   r†   r…   r<   r<   r=   ry   	  s    zEmailApp.select_mailc                 C   s,   |j s
dnd}|› |j› d|j› d|j› �S )Nu   â—� rM   rJ   )r‹   rs   rt   ru   )r9   r…   Zunread_markerr<   r<   r=   r”     s    zEmailApp.format_mailc                    s    ˆ j  ¡  ‡ fdd„tD ƒ}|D ],}tˆ  |¡ƒ}| tj|¡ ˆ j  |¡ q ˆ j	 
dˆ j› �¡ t|ƒ}|dkrˆˆ j 
d|› d�¡ nˆ j 
d|› d�¡ d S )Nc                    s   g | ]}|j ˆ jkr|‘qS r<   )Úfolderr'   )Ú.0r…   r8   r<   r=   Ú
<listcomp>  s      z'EmailApp.load_mails.<locals>.<listcomp>z    rF   z E-Mailz E-Mails)ro   Úclearr   r   r”   rv   r   rw   rx   rD   rŽ   r'   ÚlenrE   )r9   Zvisible_mailsr…   r†   Úcountr<   r8   r=   r3     s    
zEmailApp.load_mailsc                 C   sf   | j  ¡  dddddg}|D ]D\}}t|gƒ}| dtj|¡ | j  |¡ || jkr| j  |¡ qd S )N)u   ðŸ“¥ Posteingangr!   )u   ðŸ“¤ GesendetZGesendet)u   â­�ï¸� MarkiertÚMarkiert)u   ðŸ�›ï¸� ArchivÚArchiv)u   ðŸ—‘ï¸� PapierkorbÚ
Papierkorbr   )	rg   r˜   r   rv   r   rw   ÚaddTopLevelItemr'   ÚsetCurrentItem)r9   ZfoldersÚlabelÚnamer†   r<   r<   r=   r2   (  s    
û

zEmailApp.load_folder)Útarget_folderr>   c                 C   st   | j  ¡ }|d krd S | tj¡}|jdkr:|  jd7  _|j|krR|  jd7  _||_|  	¡  |  
¡  |  ¡  d S )Nr!   rF   )ro   ÚcurrentItemr�   r   rw   r•   r5   Zreal_folderr6   r3   Úreload_mailÚcheck_evaluate)r9   r¢   r†   r…   r<   r<   r=   Ú	move_mail:  s    


zEmailApp.move_mailc                 C   s   |   d¡ d S )Nrœ   ©r¦   r8   r<   r<   r=   r_   M  s    zEmailApp.archiv_mailc                 C   s   |   d¡ d S )Nr›   r§   r8   r<   r<   r=   r`   P  s    zEmailApp.mark_mailc                 C   s   |   d¡ d S )Nr�   r§   r8   r<   r<   r=   ra   S  s    zEmailApp.delete_mailc                 C   s^   | j  ¡ dkr,| j  d¡ |  | j  ¡ ¡ n.| j d¡ | j d¡ | j 	d¡ | j
 ¡  d S )Nr   rK   rM   )ro   rš   ÚsetCurrentRowry   r£   rL   rŽ   rN   rz   r|   rS   r�   r8   r<   r<   r=   r¤   V  s    zEmailApp.reload_mailc                 C   s2   dd„ t D ƒ}t|ƒdkr.| js.d| _|  ¡  d S )Nc                 S   s   g | ]}|j d kr|‘qS )r!   )r•   )r–   Úmr<   r<   r=   r—   b  s     
 z+EmailApp.check_evaluate.<locals>.<listcomp>r   T)r   r™   r7   Úshow_results)r9   Zposteingang_mailsr<   r<   r=   r¥   a  s    zEmailApp.check_evaluatec                 C   s²   t | ƒ}| d¡ | tj¡ | j| jkrBd| j› d| j› d�}nd| j› d| j› d�}| |¡ | dt j	¡}| dt j
¡}| t¡}| d¡ | ¡  | ¡ |kr®td	ƒ d S )
NZ
Auswertunguù  
                <h3> Auswertung </h3>
                
                <div style="font-weight: normal;">
                <p align="justify">
                Dein Opa bedankt sich bei dir und bearbeitet die markierten Mails. Doch nach einigen Tagen passiert etwas Seltsames. Es stellt sich raus, dass du mindestens eine Nachricht markiert hast, obwohl sie nicht echt war. Dein Opa und du seid auf (einen) TÃ¤uschungsversuch(e) reingefallen, wodurch Kriminelle nun seine Zugangsdaten haben.
                </p>
                <p align="justify">
                Aber alles gut! Das war nur ein Test. Aber du hast gesehen, wie schnell es passieren kann.
                </p>
                <br>
                <p align="center">
                Es wurden <b>z</b> von <b>zw</b> E-Mails wurden korrekt sortiert.
                </p>
                <br>
                </div>
                us  
                <h3> Auswertung </h3>
                <div style="font-weight: normal;">
                Dein Opa bedankt sich bei dir. Und noch besser: einige Tage spÃ¤ter schaut sich deine Mama nochmal das Postfach an und sieht, dass unter den gelÃ¶schten Mails TÃ¤uschungsversuche waren. HÃ¤tte dein Opa diese beantwortet, hÃ¤tten Kriminelle seine Zugangsdaten erhalten kÃ¶nnen.
                </p>
                <p align="justify">
                Doch du hast alles erfolgreich erkannt und gelÃ¶scht. Sehr gut!
                </p> 
                <br>
                <p align="center">
                Es wurden <b>u   ZurÃ¼ck zum PostfachzProgramm beendenTr   )r   r%   ÚsetTextFormatr   ÚRichTextr6   r5   rŽ   Ú	addButtonÚ
RejectRoleÚ
AcceptRoleÚ	findChildr   ÚsetCenterButtonsÚexecÚclickedButtonÚexit)r9   ÚmsgÚtextZ	button_okZ
button_endZ
button_boxr<   r<   r=   rª   h  s0    
ôôÿ
ö
öÿ


zEmailApp.show_resultsc                 C   s(   |  ¡ r| j ¡  n| j | ¡ ¡ d S rO   )ÚisEmptyr.   r˜   rŽ   ÚtoString)r9   Úurlr<   r<   r=   r   ¢  s    zEmailApp.show_hover_url)Ú__name__Ú
__module__Ú__qualname__r$   r(   r4   r   rn   r   r“   r   ry   Ústrr”   r3   r2   r¦   r_   r`   ra   r¤   r¥   rª   r   Ú__classcell__r<   r<   r:   r=   r       s$   " ::r    )%ÚsysÚtypingr   r   ÚPySide6.QtGuir   r   r   r   ÚPySide6.QtCorer   ÚPySide6.QtWidgetsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zskripts.mailsr   r   r    r<   r<   r<   r=   Ú<module>   s   \