hi
i want to show only LV items if the category text in file matches nscombobox1.text..... here's my code:
I've highlited what i rtried.....
any help...?
i want to show only LV items if the category text in file matches nscombobox1.text..... here's my code:
Code:
Imports System, System.Xml, System.Collections.Generic
Imports System.ComponentModel, System.Data, System.Drawing, System.Text
Imports System.Windows.Forms, System.IO
Public Class SelectPrograms
'App Name : Post Install
'Author : Chris Reynolds (Chris2k)
'Creation Date : 26th March 2013
Public Shared Ver As String = "v1.3.1"
Public Shared programs As Dictionary(Of Integer, program) = New Dictionary(Of Integer, program)
Dim autoStart As Integer
Dim highestIO As Integer = 0
Dim F As Form = FindForm()
#Region "Dropdown menu"
Private Sub MenuDrop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuDrop.Click
Menu1.Show(MenuDrop, 0, MenuDrop.Height)
End Sub
Private Sub CheckItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckItem.Click
If chkSelect.Checked = True Then
chkSelect.Checked = False
For i = 0 To AppsList.Items.Length - 1
AppsList.CheckBoxChecked(i) = False
Next
Else
chkSelect.Checked = True
For i = 0 To AppsList.Items.Length - 1
AppsList.CheckBoxChecked(i) = True
Next
End If
End Sub
Private Sub TickerItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TickerItem.Click
chkStopTicker.Checked = True
chkStopTicker.Enabled = False
Ticker.Enabled = False
End Sub
Private Sub EditorItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EditorItem.Click
Editor.Show()
End Sub
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
F.Close()
End Sub
Private Sub MinimizeItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MinimizeItem.Click
F.WindowState = FormWindowState.Minimized
End Sub
#End Region
#Region "Read the XML file"
Public Shared XMLFile As String = "Install.xml"
Public Sub ReadFile()
If Not IO.Directory.Exists(Application.StartupPath + "\Install\") Then
IO.Directory.CreateDirectory(Application.StartupPath + "\Install\")
End If
Dim installOrder As Integer = 0
Dim document As XmlReader = New XmlTextReader(XMLFile) 'create a new xmltextreader object, this is the object that we will loop and will be used to read the xml file...
If IO.File.Exists(XMLFile) Then
While (document.Read())
Try
Dim type = document.NodeType
If (type = XmlNodeType.Element) Then 'if node type was element
If document.Name = "Order" Then
installOrder = CInt(document.ReadElementContentAsInt)
If installOrder > highestIO Then highestIO = installOrder
programs.Add(installOrder, New program)
ElseIf document.Name = "Name" Then
programs(installOrder).name = document.ReadInnerXml.ToString()
ElseIf document.Name = "Description" Then
programs(installOrder).desc = document.ReadInnerXml.ToString()
ElseIf document.Name = "File" Then
programs(installOrder).exepath = document.ReadInnerXml.ToString()
ElseIf document.Name = "Forced" Then
If document.ReadInnerXml.ToString = "True" Then
programs(installOrder).forceInstall = "True"
Else
programs(installOrder).forceInstall = "False"
End If
ElseIf document.Name = "URL" Then
programs(installOrder).url = document.ReadInnerXml.ToString()
ElseIf document.Name = "Snap" Then
programs(installOrder).screenshot = document.ReadInnerXml.ToString()
ElseIf document.Name = "Category" Then
programs(installOrder).category = document.ReadInnerXml.ToString()
End If
End If
Catch ex As Exception
End Try
End While
End If
End Sub
Public Function getFileSize(ByVal path As String) As String
Dim sizes() As String = New String() {"Bytes", "KiB", "MB", "GB"}
Dim len = My.Computer.FileSystem.GetFileInfo(path).Length
Dim order As Integer = 0
While ((len >= 1024) AndAlso (order < sizes.Length))
order = (order + 1)
len = CLng((len / 1024))
End While
Return String.Format("{0:0.##} {1}", len, sizes(order))
End Function
#End Region
#Region "Add info to temporary LV"
Dim cOrder As Integer = 0
Public Sub AddtoLV()
Do While (cOrder < (highestIO + 1))
Try
If Not programs.ContainsKey(cOrder) Then
Continue Do
End If
Dim program As program = programs(cOrder)
If Not (program) Is Nothing AndAlso program.name.Length > 0 Then
If IO.File.Exists(program.exepath) Then
Dim appData As ListViewItem = New ListViewItem(program.name)
appData.SubItems.Add(program.desc)
appData.SubItems.Add(getFileSize(program.exepath))
appData.SubItems.Add(program.exepath)
appData.SubItems.Add(program.url)
appData.SubItems.Add(program.screenshot)
appData.SubItems.Add(program.forceInstall)
appData.SubItems.Add(program.category)
appData.Checked = True
ListView1.Items.Add(appData)
Else
'"Installer file for program '" + (program.name + "' could not be found!"
End If
Else
'"Failed to load program from order: " + (cOrder + "..!"
End If
Catch ex As Exception
Finally
cOrder = (cOrder + 1)
End Try
Loop
End Sub
#End Region
#Region "Settings"
Public Sub Settings()
If Setup.TickerOnOff.Checked = True Then
chkStopTicker.Visible = True
autoStart = CInt(Setup.txtTickerSecs.Text)
Else
chkStopTicker.Visible = False
autoStart = 0
End If
If Setup.ToggleMI.Checked = True Then
chkMiniInstaller.Visible = True
Else
chkMiniInstaller.Visible = False
End If
End Sub
#End Region
#Region "Fade Setting"
Sub FormFade(ByVal FType As String)
Select Case FType
Case "in"
Dim FadeCount As Integer
For FadeCount = 10 To 75 Step 10
Me.Opacity = FadeCount / 100
Me.Refresh()
Threading.Thread.Sleep(50)
Next
Case "out"
Dim FadeCount As Integer
For FadeCount = 75 To 10 Step -10
Me.Opacity = FadeCount / 100
Me.Refresh()
Threading.Thread.Sleep(50)
Next
End Select
Me.Opacity = 95.9
End Sub
#End Region
Private Sub SelectPrograms_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Text = "Post Install " + Ver
Me.NsTheme.Text = "Post Install " + Ver
FormFade("in")
Settings()
ReadFile()
AddtoLV()
For Each App As ListViewItem In ListView1.Items
AppsList.AddItem(App.Text,
(App.SubItems(1).Text),
(App.SubItems(2).Text),
(App.SubItems(3).Text),
(App.SubItems(4).Text),
(App.SubItems(5).Text),
(App.SubItems(6).Text),
(App.SubItems(7).Text))
Next
For i = 0 To AppsList.Items.Length - 1
AppsList.CheckBoxChecked(i) = True
Dim subItems = AppsList.SubItems(i)
If subItems(5).Text = "True" Then
AppsList.CheckBoxEnabled(i) = False
End If
Next
Dim line() As String = Split(Setup.txtCategories.Text, vbCrLf) '~~~ Split the lines and store it in a String array
For i = 2 To UBound(line) '~~~ Loop through the array
NsComboBox1.Items.AddRange(line) '~~~ and add each item(ie. line) to the combobox
Next
NsComboBox1.SelectedIndex = 0
Version.Text = Ver
btnStart.Text = "Start installing (" & AppsList.CheckedItemsCount.ToString() & " / " & AppsList.Items.Length.ToString & " applications)"
End Sub
Private Sub SelectPrograms_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
FormFade("out")
End Sub
Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
If AppsList.CheckedItemsCount > 0 Then
Me.Hide()
InstallPrograms.Show() '//Load in the form and install checked apps.
Else
NSMessageBox.ShowOk("Nothing selected to install!", "")
End If
End Sub
Private Sub Ticker_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ticker.Tick
If autoStart > 0 Then
autoStart -= 1
chkStopTicker.Text = "Stop ticking (" + autoStart.ToString & " Secs Remaining!)"
chkStopTicker.Refresh()
ElseIf autoStart = 0 Then
Ticker.Stop()
chkStopTicker.Enabled = False
'Label2.Text = "We're gonna install now..."
Me.Hide()
InstallPrograms.Show()
End If
End Sub
Private Sub AppsList_CheckedChanged(ByVal sender As Object) Handles AppsList.CheckedChanged
Me.btnStart.Text = "Start installing (" & AppsList.CheckedItemsCount.ToString() & " / " & AppsList.ItemsCount.ToString() & " applications)"
btnStart.Refresh()
End Sub
Private Sub AppsList_SelectedIndexChanged(ByVal Index As Integer) Handles AppsList.SelectedIndexChanged
Dim selectedItems = Me.AppsList.SelectedItems
If selectedItems.Length > 0 Then
Dim sb As New StringBuilder
Dim format As String = "{0}" & Environment.NewLine +
"Size: {1}" & Environment.NewLine & Environment.NewLine &
"Description: {2}" & Environment.NewLine &
"Support URL: {3}"
For Each sItem In selectedItems
sb.AppendLine(String.Format(format,
sItem.Text,
sItem.SubItems(1).Text,
sItem.SubItems(0).Text,
sItem.SubItems(3).Text)) 'App Name, Description, Size, Support URL...
Me.Screenshot.Image = Image.FromFile(sItem.SubItems(4).Text)
Next
lblDcription.Text = sb.ToString
End If
End Sub
Private Sub chkStopTicker_CheckedChanged(ByVal sender As Object) Handles chkStopTicker.CheckedChanged
If chkStopTicker.Checked = True Then
Ticker.Stop()
Ticker.Enabled = False
chkStopTicker.Enabled = False
Else
Ticker.Start()
End If
End Sub
Private Sub Label1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblDcription.SizeChanged
Label2.Top = lblDcription.Height
End Sub
Private Sub NsvScrollBar1_Scroll(ByVal sender As System.Object) Handles NsvScrollBar1.Scroll
Panel.VerticalScroll.Value = NsvScrollBar1.Value
End Sub
'Private Sub NsComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NsComboBox1.SelectedIndexChanged
'If AppsList.ItemsCount > 0 Then
' Dim program As program = programs(cOrder)
' If Not NsComboBox1.Text = program.category Then
' '~~~ Hide the item....
' AppsList.ItemsClear()
' End If
'End If
'End Sub
End Class
Public Class program
Public order As Integer = 0
Public name As String = ""
Public desc As String = ""
Public exepath As String = ""
Public screenshot As String = ""
Public filesize As Integer
Public forceInstall As String = ""
Public url As String = ""
Public category As String = ""
Public Sub New()
MyBase.New()
End Sub
End Classany help...?