Files
OmagCUT/PhotoPageUC.xaml.vb
T
Dario Sassi b10b9cf18b OmagCUT 1.6i11 :
- in apri, importa e scegli immagine ora sono visualizzati anche i direttori nascosti.
2016-02-02 18:37:05 +00:00

155 lines
5.8 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports System.Runtime.InteropServices
Public Class PhotoPageUC
'Riferimento alla MainWindow
Private m_MainWindow As MainWindow = Application.Current.MainWindow
' Properties
Private m_sCurrDir As String = String.Empty
Private m_sCurrFile As String = String.Empty
Private m_bFileOk As Boolean = False
Private Sub PhotoPage_Initialized(sender As Object, e As EventArgs)
'Definizione del collegamento tra ItemList e ListBox1
FileListBox.ItemsSource = m_MainWindow.m_PhotoItemList
End Sub
Private Sub PhotoPage_Loaded(sender As Object, e As RoutedEventArgs)
' leggo direttorio corrente
GetPrivateProfileString(S_GENERAL, K_IMAGEDIR, "", m_sCurrDir, m_MainWindow.GetIniFile())
' lo carico
LoadCurrDir()
End Sub
Private Function LoadCurrDir() As Boolean
' se direttorio corrente non valido, carico l'elenco dei dischi
If String.IsNullOrWhiteSpace(m_sCurrDir) OrElse Not IO.Directory.Exists(m_sCurrDir) Then
Return LoadDisks()
End If
Dim TempPath As New Text.StringBuilder(260)
PathCompactPathEx(TempPath, m_sCurrDir, 28, 0)
' lo visualizzo
FilePathTxBl.Content = TempPath.ToString
' pulisco la lista
m_MainWindow.m_PhotoItemList.Clear()
' per risalire al direttorio padre
m_MainWindow.m_PhotoItemList.Add(New IconListBoxItem("..", 0))
' elenco dei sottodirettori
Dim DirInfo As New DirectoryInfo(m_sCurrDir)
Dim vDirI As DirectoryInfo() = DirInfo.GetDirectories("*")
Dim DirI As DirectoryInfo
For Each DirI In vDirI
' per saltare i link, troppo complessi da gestire
If (DirI.Attributes And FileAttributes.Hidden) <> FileAttributes.Hidden Or
(DirI.Attributes And FileAttributes.System) <> FileAttributes.System Then
m_MainWindow.m_PhotoItemList.Add(New IconListBoxItem(DirI.Name, 2))
End If
Next
' elenco dei file
Dim vFileI As FileInfo() = DirInfo.GetFiles()
Dim FileI As FileInfo
For Each FileI In vFileI
Dim sExt As String = Path.GetExtension(FileI.Name).ToUpper()
If sExt = ".JPG" Or sExt = ".PNG" Or sExt = ".BMP" Then
m_MainWindow.m_PhotoItemList.Add(New IconListBoxItem(FileI.Name, 3))
End If
Next
' pulisco la vista
PhotoImage.Source = Nothing
m_bFileOk = False
Return True
End Function
Private Function LoadDisks() As Boolean
' dir corrente vuoto
m_sCurrDir = ""
' lo visualizzo
FilePathTxBl.Content = m_sCurrDir
' pulisco la lista
m_MainWindow.m_PhotoItemList.Clear()
' elenco dei dischi
Dim vDriI As DriveInfo() = DriveInfo.GetDrives()
Dim DriI As DriveInfo
For Each DriI In vDriI
m_MainWindow.m_PhotoItemList.Add(New IconListBoxItem(DriI.Name, 1))
Next
' pulisco la vista
PhotoImage.Source = Nothing
m_bFileOk = False
Return True
End Function
Private Sub FileListBox_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles FileListBox.PreviewMouseUp
' Recupero item selezionato
If FileListBox.SelectedItems.Count() = 0 Then
Return
End If
Dim vItems As IconListBoxItem = FileListBox.SelectedItems(0)
' A seconda del tipo
Select Case vItems.PictureID
Case 0 ' Vai nel direttorio padre
m_sCurrDir = IO.Path.GetDirectoryName(m_sCurrDir)
m_sCurrFile = ""
LoadCurrDir()
Case 1 ' Vai nella radice del disco
m_sCurrDir = vItems.Name
m_sCurrFile = ""
LoadCurrDir()
Case 2 ' Vai nel sottodirettorio
m_sCurrDir = IO.Path.Combine(m_sCurrDir, vItems.Name)
m_sCurrFile = ""
LoadCurrDir()
Case 3 ' File
m_sCurrFile = vItems.Name
LoadCurrFile()
End Select
End Sub
Private Sub FileListBox_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles FileListBox.SelectionChanged
' Recupero item selezionato
If FileListBox.SelectedItems.Count() = 0 Then
Return
End If
Dim vItems As IconListBoxItem = FileListBox.SelectedItems(0)
' Gestisco solo aggiornamento visualizzazione file
If vItems.PictureID = 3 Then
m_sCurrFile = vItems.Name
LoadCurrFile()
End If
End Sub
Private Function LoadCurrFile() As Boolean
' Costruisco path completa del componente
Dim sPath = IO.Path.Combine(m_sCurrDir, m_sCurrFile)
' abilito bottone Ok
PhotoImage.Source = New System.Windows.Media.Imaging.BitmapImage(New Uri(sPath, UriKind.Absolute))
OkBtn.IsEnabled = True
m_bFileOk = True
Return True
End Function
Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
' Istruzioni per chiudere ImportPageUC e aprire CadCutPageUC
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_PhotoPage)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC)
' Lancio caricamento nuova foto
If m_bFileOk Then
m_MainWindow.m_CadCutPageUC.PostPhoto(m_sCurrDir & "\" & m_sCurrFile)
End If
End Sub
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click
' Istruzioni per chiudere ImportPageUC e aprire CadCutPageUC
m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_PhotoPage)
m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_CurrentProjectPageUC)
End Sub
Private Sub PhotoPage_Unloaded(sender As Object, e As RoutedEventArgs)
End Sub
End Class