VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "CSubject"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
'programmed by ShareVB
'gestion du sujet d'un mail pour les extensions non ascii (par exe : iso-8859-1)

Option Explicit
Option Compare Text

Private Declare Function quoted_printable_encoded_size_from_string Lib "MIMECode.dll" Alias "_quoted_printable_encoded_size@4" (ByVal src As String) As Long
Private Declare Function quoted_printable_encode_from_string Lib "MIMECode.dll" Alias "_quoted_printable_encode@8" (ByVal dest As String, ByVal src As String) As Long

'variables locales de stockage des valeurs de propriétés
Private mvarSubject As String 'copie locale
Private mvarcharset As String 'copie locale

'==================================================
'propriétés
'==================================================

Public Property Let charset(ByVal vData As String)
Attribute charset.VB_HelpID = 256
'utilisé lors de l'affectation d'une valeur à la propriété, du coté gauche de l'affectation.
'Syntax: X.charset = 5
    mvarcharset = vData
End Property
Public Property Get charset() As String
'utilisé lors de la lecture de la valeur de la propriété, du coté droit de l'instruction.
'Syntax: Debug.Print X.charset
    charset = mvarcharset
End Property

Public Property Let Subject(ByVal vData As String)
Attribute Subject.VB_HelpID = 254
'utilisé lors de l'affectation d'une valeur à la propriété, du coté gauche de l'affectation.
'Syntax: X.Subject = 5
    mvarSubject = vData
End Property
Public Property Get Subject() As String
'utilisé lors de la lecture de la valeur de la propriété, du coté droit de l'instruction.
'Syntax: Debug.Print X.Subject
    Subject = mvarSubject
End Property

'==================================================
'méthodes privées
'==================================================

Private Function EncodeQPToString(sz As String) As String
Dim l As Long
EncodeQPToString = Space(quoted_printable_encoded_size_from_string(sz))
l = quoted_printable_encode_from_string(EncodeQPToString, sz)
EncodeQPToString = Mid$(EncodeQPToString, 1, l)
End Function

'==================================================
'méthodes publiques
'==================================================

Public Sub Parse(szSubject As String)
mvarSubject = szSubject
End Sub

Public Function Make() As String
If mvarcharset <> "us-ascii" Then
    Make = "=?" & mvarcharset & "?Q?" & EncodeQPToString(mvarSubject) & "?="
Else
    Make = mvarSubject
End If
End Function

'==================================================
'constructeur
'==================================================

Private Sub Class_Initialize()
mvarcharset = "us-ascii"
End Sub
