Quantcast
Channel: VBForums - Visual Basic .NET
Viewing all articles
Browse latest Browse all 27554

VS 2010 Only show certain items on LV based on category text in file?

$
0
0
hi

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 Class

I've highlited what i rtried.....

any help...?

Viewing all articles
Browse latest Browse all 27554

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>