Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports System.IO
- Imports System.IO.Compression
- Public Class BackUp
- Const FichierIni As String = "BackUp.ini"
- Const LignesFichierIni As Integer = 5
- Const CleSauvegardePath As String = "SauvegardePath"
- Const CleTempSauvegarde As String = "TempSauvegarde"
- Const ClePaths As String = "Paths"
- Dim ListePath(0) As String
- Dim NombreSauvegarde As Integer = 0
- Private Sub BackUp_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- LabelStatut.Text = "Prêt"
- Me.TimerSauvegarde.Interval = Me.IntervalleSauvegarde.Value * 60000
- RecupereInfosFichierIni()
- VerificationPourSauvegarde()
- If Me.BtnCommencer.Enabled = True Then
- Me.BtnArreter.Enabled = False
- End If
- If ListDossiers.Items.Count - 1 > 0 Then
- If ListDossiers.Items.Item(ListDossiers.Items.Count - 1) = "" Then
- ListDossiers.Items.RemoveAt(ListDossiers.Items.Count - 1)
- End If
- End If
- If ListSauvegarde.SelectedItems.Count = 0 Then
- BtnSupprimerSauvegarde.Enabled = False
- BtnExtraire.Enabled = False
- BtnCopierVers.Enabled = False
- BtnRestaurer.Enabled = False
- End If
- ListSauvegarde.Columns.Add("", 20)
- ListSauvegarde.Columns.Add("Date", 66)
- ListSauvegarde.Columns.Add("Heure", 43)
- ListSauvegarde.Columns.Add("Path", 203)
- Dim InfoAjouter = New System.Windows.Forms.ToolTip()
- InfoAjouter.SetToolTip(Me.BtnAjouter, "Ajouter un nouveau dossier à la liste des dossiers à sauvegarder")
- Dim InfoSupprimer = New System.Windows.Forms.ToolTip()
- InfoSupprimer.SetToolTip(Me.BtnSupprimer, "Supprimer le dossier sélectionné de la liste des dossiers à sauvegarder")
- Dim InfoSuppressionPathSauvegarde = New System.Windows.Forms.ToolTip()
- InfoSuppressionPathSauvegarde.SetToolTip(Me.SuppressionPathSauvegarde, "Réinitialise le dossier de sauvegarde")
- Dim InfoIntervalle = New System.Windows.Forms.ToolTip()
- InfoIntervalle.SetToolTip(Me.IntervalleSauvegarde, "Déterminer l'intervalle entre deux sauvegardes")
- Dim InfoSauvegardeConfig = New System.Windows.Forms.ToolTip()
- InfoSauvegardeConfig.SetToolTip(Me.BtnSauvegardeConfig, "Sauvegarder la configuration")
- Dim InfoCommencer = New System.Windows.Forms.ToolTip()
- InfoCommencer.SetToolTip(Me.BtnCommencer, "Commencer la sauvegarde automatique")
- Dim InfoArreter = New System.Windows.Forms.ToolTip()
- InfoArreter.SetToolTip(Me.BtnArreter, "Arrêter la sauvegarde automatique")
- Dim InfoSauvegardeManu = New System.Windows.Forms.ToolTip()
- InfoSauvegardeManu.SetToolTip(Me.BtnSauvegardeManuelle, "Effectuer une sauvegarde manuelle")
- Dim InfoToutSelect = New System.Windows.Forms.ToolTip()
- InfoToutSelect.SetToolTip(Me.CheckSelection, "Sélectionne / Désélectionne toutes les sauvegardes effectuées")
- Dim InfoSupprimerSauvegarde = New System.Windows.Forms.ToolTip()
- InfoSupprimerSauvegarde.SetToolTip(Me.BtnSupprimerSauvegarde, "Supprimer la ou les sauvegarde(s) sélectionnées de la liste et de l'ordinateur")
- Dim InfoExtraire = New System.Windows.Forms.ToolTip()
- InfoExtraire.SetToolTip(Me.BtnExtraire, "Extraie la ou les sauvegarde(s) sélectionnées")
- Dim InfoCopierVers = New System.Windows.Forms.ToolTip()
- InfoCopierVers.SetToolTip(Me.BtnCopierVers, "Copie la ou les sauvegarde(s) sélectionnées vers un dossier sélectionné")
- Dim InfoRestaurer = New System.Windows.Forms.ToolTip()
- InfoRestaurer.SetToolTip(Me.BtnRestaurer, "Restaure la sauvegarde sélectionné")
- If My.Settings.DemarrageTimer = True Then
- Commencer()
- End If
- For x As Integer = 0 To 10
- Sauvegarde()
- Next
- If My.Settings.SauvegardeLancement = True Then
- Sauvegarde()
- End If
- End Sub
- Private Sub BackUp_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
- If My.Settings.ArrierePlan = True Then
- Me.Visible = False
- End If
- End Sub
- Private Sub BtnAjouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAjouter.Click
- If Me.DialogueDossier.ShowDialog() Then
- For x As Integer = 0 To ListDossiers.Items.Count - 1
- If Me.DialogueDossier.SelectedPath = ListDossiers.Items.Item(x) Then
- MsgBox("Le dossier sélectionné est déjà présent dans la liste", MsgBoxStyle.Information, "BackUp - Information")
- Exit Sub
- End If
- Next
- Me.ListDossiers.Items.Add(Me.DialogueDossier.SelectedPath)
- End If
- VerificationPourSauvegarde()
- End Sub
- Private Sub BtnSupprimer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSupprimer.Click
- If Not Me.ListDossiers.SelectedItem Is Nothing Then
- Me.ListDossiers.Items.Remove(Me.ListDossiers.SelectedItem)
- Else
- MsgBox("Sélectionnez un dossier à supprimer !", MsgBoxStyle.Information, "Erreur")
- End If
- VerificationPourSauvegarde()
- End Sub
- Private Sub PathSauvegarde_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles PathSauvegarde.Click
- If Me.DialogueDossier.ShowDialog() Then
- Me.PathSauvegarde.Text = DialogueDossier.SelectedPath
- End If
- End Sub
- Private Sub TimerSauvegarde_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerSauvegarde.Tick
- Sauvegarde()
- End Sub
- Private Sub BtnSauvegardeConfig_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSauvegardeConfig.Click
- SauvegardeFichierIni()
- End Sub
- Private Sub BtnSauvegardeManuelle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSauvegardeManuelle.Click
- Sauvegarde()
- End Sub
- Sub SauvegardeFichierIni()
- Try
- If Me.PathSauvegarde.Text = "" Then
- MsgBox("Veuillez sélectionner un dossier de sauvegarde !", MsgBoxStyle.Information, "Erreur")
- ElseIf Not Directory.Exists(Me.PathSauvegarde.Text) Then
- MsgBox("Dossier de sauvegarde invalide !", MsgBoxStyle.Critical, "Erreur")
- Else
- File.WriteAllLines(FichierIni, CreeStructureFichierIni(Me.PathSauvegarde.Text, Me.IntervalleSauvegarde.Value, Me.ListDossiers.Items))
- End If
- Catch ex As Exception
- MsgBox("Une erreur est survenue lors de la sauvegarde du fichier de configration !", MsgBoxStyle.Critical, "Erreur")
- End Try
- End Sub
- Function CreeStructureFichierIni(ByVal SauvegardePath As String, ByVal TempsSauvegarde As Integer, ByVal PathsASauvegarde As ListBox.ObjectCollection) As String()
- Dim FichierIni(LignesFichierIni + PathsASauvegarde.Count) As String
- FichierIni(0) = "; Fichier de configuration de BackUp"
- FichierIni(1) = "[Configuration]"
- FichierIni(2) = CleSauvegardePath & "=" & SauvegardePath
- FichierIni(3) = CleTempSauvegarde & "=" & TempsSauvegarde
- FichierIni(4) = ""
- FichierIni(5) = "[Paths]"
- Dim Compteur As Integer = LignesFichierIni
- For Each Path As String In PathsASauvegarde
- Compteur += 1
- FichierIni(Compteur) = ClePaths & Compteur - LignesFichierIni & "=" & Path
- Next
- Return FichierIni
- End Function
- Function RecupereCleFichierIni(ByVal Cle As String) As String
- Try
- For Each Ligne As String In File.ReadAllLines(FichierIni)
- If Ligne.Split("=")(0) = Cle Then
- Return Ligne.Split("=")(1)
- End If
- Next
- Catch ex As Exception
- MsgBox("Une erreur est survenue lors de la récupération des clés du fichier de configuration !", MsgBoxStyle.Critical, "Erreur")
- End Try
- Return ""
- End Function
- Function RecupereInfosFichierIni() As Boolean
- Try
- If File.Exists(FichierIni) Then
- Dim SauvegardePath As String = RecupereCleFichierIni(CleSauvegardePath)
- Dim TempSauvegarde As String = RecupereCleFichierIni(CleTempSauvegarde)
- Dim Paths(100) As String
- Dim i As Integer = 0
- Do
- i += 1
- Paths(i - 1) = RecupereCleFichierIni(ClePaths & i)
- Loop While Paths(i - 1) <> ""
- If (SauvegardePath <> "") And (TempSauvegarde <> "") And (i - 1 > 0) Then
- Me.PathSauvegarde.Text = SauvegardePath
- Me.IntervalleSauvegarde.Value = TempSauvegarde
- Me.ListDossiers.Items.Clear()
- For j As Integer = 0 To i - 1
- Me.ListDossiers.Items.Add(Paths(j))
- Next
- Else
- MsgBox("Le fichier " & FichierIni & " est corrompu, utilisation des paramètres par défaut", MsgBoxStyle.Information, "BackUp - Information")
- Return False
- End If
- Else
- MsgBox("Le fichier " & FichierIni & " n'a pas été trouvé, utilisation des paramètres par défaut", MsgBoxStyle.Information, "BackUp - Information")
- Return False
- End If
- Catch ex As Exception
- MsgBox("Une erreur est survenue lors de la récupération des informations du fichier de configuration !", MsgBoxStyle.Critical, "Erreur")
- End Try
- Return True
- End Function
- Sub Sauvegarde()
- Try
- If Directory.Exists(Me.PathSauvegarde.Text) Then
- LabelStatut.Text = "Sauvegarde en cours ..."
- Me.Refresh()
- If Me.PathSauvegarde.Text.EndsWith("\") Then
- Me.PathSauvegarde.Text.Trim("\")
- End If
- Dim DossierSauvegarde As String = Me.PathSauvegarde.Text & "\Sauvegarde du " & Date.Now.ToShortDateString.Replace("/", "-") & " a " & Date.Now.ToShortTimeString.Replace(":", "h")
- Dim PathZip As String = Me.PathSauvegarde.Text & "\Sauvegarde du " & Date.Now.ToShortDateString.Replace("/", "-") & " a " & Date.Now.ToShortTimeString.Replace(":", "h") & ".zip"
- If Not Directory.Exists(DossierSauvegarde) And Not File.Exists(PathZip) Then
- Directory.CreateDirectory(DossierSauvegarde)
- For Each PathASauvegarde As String In ListDossiers.Items
- If Directory.Exists(PathASauvegarde) Then
- CopieDossier(New DirectoryInfo(PathASauvegarde), New DirectoryInfo(DossierSauvegarde & "\" & Path.GetFileName(PathASauvegarde)))
- End If
- Next
- Dim Tableau As String() = New String(3) {}
- Dim NouvItem As ListViewItem
- Tableau(0) = ""
- Tableau(1) = Date.Now.ToShortDateString.Replace("/", "-")
- Tableau(2) = Date.Now.ToShortTimeString.Replace(":", "h")
- Tableau(3) = PathZip
- NouvItem = New ListViewItem(Tableau)
- ListSauvegarde.Items.Add(NouvItem)
- ListSauvegarde.Columns(3).Width = -2
- ListePath(NombreSauvegarde) = PathZip
- Array.Resize(ListePath, ListePath.Length + 1)
- NombreSauvegarde += 1
- ZipFile.CreateFromDirectory(DossierSauvegarde, PathZip)
- Directory.Delete(DossierSauvegarde, True)
- If My.Settings.Notification = True Then
- IconNotification.BalloonTipIcon = ToolTipIcon.Info
- IconNotification.BalloonTipTitle = "Nouvelle sauvegarde"
- IconNotification.BalloonTipText = "Une nouvelle sauvegarde a été effectuée"
- IconNotification.Visible = True
- IconNotification.ShowBalloonTip(1000)
- End If
- End If
- Else
- MsgBox("Sauvegarde échouée : le dossier de sauvegarde est invalide, veuillez le redéfinir !", MsgBoxStyle.Critical, "Erreur")
- End If
- Catch ex As Exception
- MsgBox("Une erreur est survenue lors de l'opération de sauvegarde !", MsgBoxStyle.Critical, "Erreur")
- End Try
- LabelStatut.Text = "Prêt"
- End Sub
- Sub CopieDossier(ByVal DossierSource As DirectoryInfo, ByVal DossierDesination As DirectoryInfo)
- Try
- DossierDesination.Create()
- For Each Fichier As FileInfo In DossierSource.GetFiles()
- Fichier.CopyTo(Path.Combine(DossierDesination.FullName, Fichier.Name))
- Next
- For Each SousRepertoire As DirectoryInfo In DossierSource.GetDirectories()
- CopieDossier(SousRepertoire, DossierDesination.CreateSubdirectory(SousRepertoire.Name))
- Next
- Catch ex As Exception
- MsgBox("Une erreur est survenue lors de la copie des dossiers !", MsgBoxStyle.Critical, "Erreur")
- End Try
- End Sub
- Sub Commencer()
- Me.TimerSauvegarde.Enabled = True
- Me.BtnCommencer.Enabled = False
- Me.BtnArreter.Enabled = True
- Me.GrpDossiers.Enabled = False
- Me.GrpConfig.Enabled = False
- End Sub
- Sub Arreter()
- Me.TimerSauvegarde.Enabled = False
- Me.BtnArreter.Enabled = False
- Me.BtnCommencer.Enabled = True
- Me.GrpDossiers.Enabled = True
- Me.GrpConfig.Enabled = True
- End Sub
- Sub VerificationPourSauvegarde()
- If ListDossiers.Items.Count = 0 Or PathSauvegarde.Text = "" Then
- BtnCommencer.Enabled = False
- Else
- BtnCommencer.Enabled = True
- End If
- End Sub
- Private Sub BtnCommencer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCommencer.Click
- Commencer()
- If My.Settings.SauvegardeDebutAuto = True Then
- Sauvegarde()
- End If
- End Sub
- Private Sub BtnArreter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnArreter.Click
- Arreter()
- If My.Settings.SauvegardeFinAuto = True Then
- Sauvegarde()
- End If
- End Sub
- Private Sub CheckSelection_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckSelection.CheckedChanged
- If CheckSelection.Checked = True Then
- For n As Integer = 0 To ListSauvegarde.Items.Count - 1
- ListSauvegarde.Items.Item(n).Checked = True
- Next
- Else
- For n As Integer = 0 To ListSauvegarde.Items.Count - 1
- ListSauvegarde.Items.Item(n).Checked = False
- Next
- End If
- End Sub
- Private Sub ListSauvegarde_ItemChecked(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckedEventArgs) Handles ListSauvegarde.ItemChecked
- Dim NombreItemSelect As Integer = ListSauvegarde.CheckedItems.Count
- If NombreItemSelect = 0 Then
- BtnSupprimerSauvegarde.Enabled = False
- BtnExtraire.Enabled = False
- BtnCopierVers.Enabled = False
- BtnRestaurer.Enabled = False
- ElseIf NombreItemSelect = 1 Then
- BtnSupprimerSauvegarde.Enabled = True
- BtnExtraire.Enabled = True
- BtnCopierVers.Enabled = True
- BtnRestaurer.Enabled = True
- ElseIf NombreItemSelect = ListSauvegarde.Items.Count Then
- CheckSelection.Checked = True
- Else
- BtnSupprimerSauvegarde.Enabled = True
- BtnExtraire.Enabled = True
- BtnCopierVers.Enabled = True
- BtnRestaurer.Enabled = False
- End If
- End Sub
- Private Sub TimerRefresh_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerRefresh.Tick
- For x As Integer = ListSauvegarde.Items.Count - 1 To 0 Step -1
- If Not File.Exists(ListePath(x)) Then
- ListSauvegarde.Items.RemoveAt(x)
- End If
- Next
- End Sub
- Private Sub PathSauvegarde_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles PathSauvegarde.MouseHover
- Dim InfoDossierSauvegarde = New System.Windows.Forms.ToolTip()
- InfoDossierSauvegarde.SetToolTip(Me.PathSauvegarde, "Sélectionner le dossier de sauvegarde")
- End Sub
- Private Sub IconNotification_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles IconNotification.MouseClick
- If My.Settings.ArrierePlan = True Then
- If e.Button = MouseButtons.Left Then
- If Me.Visible = True Then
- Me.Visible = False
- Else
- Me.Visible = True
- End If
- End If
- End If
- End Sub
- Private Sub OptionCommencer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionCommencer.Click
- Commencer()
- End Sub
- Private Sub OptionArreter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionArreter.Click
- Arreter()
- End Sub
- Private Sub OptionSauvegardeManu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionSauvegardeManu.Click
- Sauvegarde()
- End Sub
- Private Sub OptionQuitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionQuitter.Click
- Me.Close()
- End Sub
- Private Sub OptionTopCommencer_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionTopCommencer.Click
- Commencer()
- End Sub
- Private Sub OptionTopArreter_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionTopArreter.Click
- Arreter()
- End Sub
- Private Sub OptionTopSauvegardeManu_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionTopSauvegardeManu.Click
- Sauvegarde()
- End Sub
- Private Sub OptionTopQuitter_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionTopQuitter.Click
- Me.Close()
- End Sub
- Private Sub OptionReinitialiserConfig_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionReinitialiserConfig.Click
- Dim ConfirmationReinitialisation As MsgBoxResult = MsgBox("Etes-vous sûr de vouloir réinitialiser la configuration de BackUp ?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "BackUp - Réinitialisation")
- If ConfirmationReinitialisation = MsgBoxResult.Yes Then
- File.Delete(FichierIni)
- ListDossiers.Items.Clear()
- PathSauvegarde.Text = ""
- IntervalleSauvegarde.Value = 1
- End If
- End Sub
- Private Sub OptionTopPreferences_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionTopPreferences.Click
- Preferences.ShowDialog()
- End Sub
- Private Sub PathSauvegarde_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PathSauvegarde.TextChanged
- VerificationPourSauvegarde()
- End Sub
- Private Sub SuppressionPathSauvegarde_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SuppressionPathSauvegarde.Click
- PathSauvegarde.Text = ""
- End Sub
- Private Sub ListDossiers_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListDossiers.DragEnter
- e.Effect = DragDropEffects.All
- End Sub
- Private Sub ListDossiers_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListDossiers.DragDrop
- Try
- Dim Tableau As Array = CType(e.Data.GetData(DataFormats.FileDrop), Array)
- For n As Integer = 0 To Tableau.Length - 1
- Dim path As String = TryCast(Tableau.GetValue(n), String)
- If Directory.Exists(path) Then
- For x As Integer = 0 To ListDossiers.Items.Count - 1
- If path = ListDossiers.Items.Item(x) Then
- MsgBox("Le dossier sélectionné est déjà présent dans la liste", MsgBoxStyle.Information, "BackUp - Information")
- Exit Sub
- End If
- Next
- ListDossiers.Items.Add(path)
- End If
- Next
- Catch ex As Exception
- MsgBox("Une erreur est survenue lors de l'ajout du dossier, il ne sera pas ajouté à la liste des dossiers à sauvegarder", MsgBoxStyle.Critical, "Erreur")
- End Try
- End Sub
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement