Projektdateien hinzufügen.

This commit is contained in:
BuildTools 2023-11-23 19:34:52 +01:00
parent 35ad331302
commit 676717cfbf
40 changed files with 16317 additions and 0 deletions

25
UltraStarSongPicker.sln Normal file
View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30717.126
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "UltraStarSongPicker", "UltraStarSongPicker\UltraStarSongPicker.vbproj", "{5360AAE3-11B2-47D7-A5BA-9C768918D167}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5360AAE3-11B2-47D7-A5BA-9C768918D167}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5360AAE3-11B2-47D7-A5BA-9C768918D167}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5360AAE3-11B2-47D7-A5BA-9C768918D167}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5360AAE3-11B2-47D7-A5BA-9C768918D167}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E71264D8-B793-43E8-9DA3-129C11700073}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="UltraStarSongPicker.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<userSettings>
<UltraStarSongPicker.My.MySettings>
<setting name="FavDir" serializeAs="String">
<value />
</setting>
</UltraStarSongPicker.My.MySettings>
</userSettings>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@ -0,0 +1,38 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
'HINWEIS: Diese Datei wird automatisch generiert und darf nicht direkt bearbeitet werden. Wenn Sie Änderungen vornehmen möchten
' oder in dieser Datei Buildfehler auftreten, wechseln Sie zum Projekt-Designer.
' (Wechseln Sie dazu zu den Projekteigenschaften, oder doppelklicken Sie auf den Knoten "Mein Projekt" im
' Projektmappen-Explorer). Nehmen Sie auf der Registerkarte "Anwendung" entsprechende Änderungen vor.
'
Partial Friend Class MyApplication
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = false
Me.EnableVisualStyles = true
Me.SaveMySettingsOnExit = true
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.UltraStarSongPicker.frmMain
End Sub
End Class
End Namespace

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>true</MySubMain>
<MainForm>frmMain</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' Allgemeine Informationen über eine Assembly werden über die folgenden
' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
' die einer Assembly zugeordnet sind.
' Werte der Assemblyattribute überprüfen
<Assembly: AssemblyTitle("UltraStarSongPicker")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("UltraStarSongPicker")>
<Assembly: AssemblyCopyright("Copyright © CK 2023")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'Die folgende GUID wird für die typelib-ID verwendet, wenn dieses Projekt für COM verfügbar gemacht wird.
<Assembly: Guid("366cff89-45bb-487a-810c-330e3d4c504a")>
' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
'
' Hauptversion
' Nebenversion
' Buildnummer
' Revision
'
' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
' indem Sie "*" wie unten gezeigt eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.3.0.0")>

View File

@ -0,0 +1,103 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary>
''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("UltraStarSongPicker.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property changeview() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("changeview", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property documentpdf() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("documentpdf", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property properties() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("properties", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property save() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("save", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
End Module
End Namespace

View File

@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="documentpdf" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\documentpdf.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="changeview" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\changeview.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="properties" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\properties.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="save" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\save.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
</root>

View File

@ -0,0 +1,85 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.2.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "Automatische My.Settings-Speicherfunktion"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("")> _
Public Property FavDir() As String
Get
Return CType(Me("FavDir"),String)
End Get
Set
Me("FavDir") = value
End Set
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.UltraStarSongPicker.My.MySettings
Get
Return Global.UltraStarSongPicker.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="My" GeneratedClassName="MySettings" UseMySettingsClassName="true">
<Profiles />
<Settings>
<Setting Name="FavDir" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

View File

@ -0,0 +1,4 @@
DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@ -0,0 +1,3 @@
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@ -0,0 +1,19 @@
<?xml version='1.0' encoding='UTF-8'?>
<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32">
<style type="text/css">
.Yellow{fill:#FFB115;}
.Red{fill:#D11C1C;}
.Blue{fill:#1177D7;}
.Green{fill:#039C23;}
.Black{fill:#727272;}
.White{fill:#FFFFFF;}
.st0{opacity:0.5;}
.st1{display:none;}
.st2{display:inline;fill:#039C23;}
.st3{display:inline;fill:#D11C1C;}
.st4{display:inline;fill:#727272;}
</style>
<g id="ChangeView">
<path d="M24.5,7.5C22.3,5.3,19.3,4,16,4C10.1,4,5.1,8.3,4.2,14h4.1c0.9-3.4,4-6,7.7-6c2.2,0,4.2,0.9,5.6,2.4L18,14 h5.7h4.1H28V4L24.5,7.5z M16,24c-2.2,0-4.2-0.9-5.6-2.4L14,18H8.2h-4H4v10l3.5-3.5C9.7,26.7,12.7,28,16,28c5.9,0,10.8-4.3,11.8-10 h-4.1C22.8,21.4,19.7,24,16,24z" class="Blue" />
</g>
</svg>

View File

@ -0,0 +1,16 @@
<?xml version='1.0' encoding='UTF-8'?>
<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32">
<style type="text/css">
.Yellow{fill:#FFB115;}
.Red{fill:#D11C1C;}
.Blue{fill:#1177D7;}
.Green{fill:#039C23;}
.Black{fill:#727272;}
.White{fill:#FFFFFF;}
.st0{opacity:0.75;}
</style>
<g id="DocumentPDF">
<path d="M22,24v4H2V2h14v5c0,0.6,0.4,1,1,1h5v4h2V7l-7-7H1C0.4,0,0,0.4,0,1v28c0,0.6,0.4,1,1,1h22c0.6,0,1-0.4,1-1 v-5H22z" class="Black" />
<path d="M19.2,16c0.3,0.5,0.4,1.1,0.4,1.9c0,0.9-0.2,1.5-0.5,2c-0.3,0.5-0.7,0.7-1.3,0.7h-0.6v-5.3h0.6 C18.4,15.3,18.9,15.6,19.2,16z M12.1,15.3h-0.5v2.6h0.5c0.7,0,1.1-0.4,1.1-1.3c0-0.4-0.1-0.8-0.3-1C12.6,15.4,12.4,15.3,12.1,15.3z M30,12v12H6V12H30z M14.8,16.5c0-0.8-0.2-1.5-0.6-1.9c-0.4-0.4-1-0.7-1.8-0.7H10v8h1.6v-2.7h0.6c0.8,0,1.4-0.3,1.9-0.8 C14.5,18,14.8,17.3,14.8,16.5z M21.2,17.9c0-2.6-1.1-3.9-3.4-3.9h-2.1v8h2.2c1.1,0,1.9-0.4,2.5-1.1C20.9,20.2,21.2,19.2,21.2,17.9z M26,14h-3.7v8h1.6v-3.1h2v-1.3h-2v-2.2H26V14z" class="Red" />
</g>
</svg>

View File

@ -0,0 +1,17 @@
<?xml version='1.0' encoding='UTF-8'?>
<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32">
<style type="text/css">
.Black{fill:#727272;}
.Yellow{fill:#FFB115;}
.Blue{fill:#1177D7;}
.Green{fill:#039C23;}
.Red{fill:#D11C1C;}
.White{fill:#FFFFFF;}
.st0{opacity:0.75;}
.st1{opacity:0.5;}
.st2{opacity:0.25;}
</style>
<g id="Properties">
<path d="M30,18v-4l-4.4-0.7c-0.2-0.8-0.5-1.5-0.9-2.1l2.6-3.6l-2.8-2.8l-3.6,2.6c-0.7-0.4-1.4-0.7-2.1-0.9L18,2h-4 l-0.7,4.4c-0.8,0.2-1.5,0.5-2.1,0.9L7.5,4.7L4.7,7.5l2.6,3.6c-0.4,0.7-0.7,1.4-0.9,2.1L2,14v4l4.4,0.7c0.2,0.8,0.5,1.5,0.9,2.1 l-2.6,3.6l2.8,2.8l3.6-2.6c0.7,0.4,1.4,0.7,2.1,0.9L14,30h4l0.7-4.4c0.8-0.2,1.5-0.5,2.1-0.9l3.6,2.6l2.8-2.8l-2.6-3.6 c0.4-0.7,0.7-1.4,0.9-2.1L30,18z M16,20c-2.2,0-4-1.8-4-4c0-2.2,1.8-4,4-4s4,1.8,4,4C20,18.2,18.2,20,16,20z" class="Blue" />
</g>
</svg>

View File

@ -0,0 +1,16 @@
<?xml version='1.0' encoding='UTF-8'?>
<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32">
<style type="text/css">
.Black{fill:#737374;}
.Yellow{fill:#FCB01B;}
.Green{fill:#129C49;}
.Blue{fill:#387CB7;}
.Red{fill:#D02127;}
.White{fill:#FFFFFF;}
.st0{opacity:0.5;}
.st1{opacity:0.75;}
.st2{opacity:0.25;}
.st3{display:none;fill:#737374;}
</style>
<path d="M27,4h-3v10H8V4H5C4.4,4,4,4.4,4,5v22c0,0.6,0.4,1,1,1h22c0.6,0,1-0.4,1-1V5C28,4.4,27.6,4,27,4z M24,24H8v-6 h16V24z M10,4v8h10V4H10z M14,10h-2V6h2V10z" class="Black" />
</svg>

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

View File

@ -0,0 +1,298 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{5360AAE3-11B2-47D7-A5BA-9C768918D167}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>UltraStarSongPicker.My.MyApplication</StartupObject>
<RootNamespace>UltraStarSongPicker</RootNamespace>
<AssemblyName>UltraStarSongPicker</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>
</DocumentationFile>
<NoWarn>
</NoWarn>
<WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>none</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>
</DocumentationFile>
<NoWarn>
</NoWarn>
<WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>On</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Sora-Meliae-Matrilineare-Apps-gnome-music.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Charts.v22.1.Core, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.Desktop.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.DataAccess.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Drawing.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Data.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Office.v22.1.Core, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Pdf.v22.1.Core, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.PivotGrid.v22.1.Core, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v22.1.Core, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.RichEdit.v22.1.Core, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v22.1.Export, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Sparkline.v22.1.Core, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Utils.v22.1.UI, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Xpo.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraBars.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraCharts.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraEditors.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraGauges.v22.1.Core, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraGrid.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraLayout.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraPrinting.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraReports.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v22.1.Extensions, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.117.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\lib\net46\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.EF6, Version=1.0.117.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.EF6.1.0.117.0\lib\net46\System.Data.SQLite.EF6.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.Linq, Version=1.0.117.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.Linq.1.0.117.0\lib\net46\System.Data.SQLite.Linq.dll</HintPath>
</Reference>
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="clsDB.vb" />
<Compile Include="clsFileFunctions.vb" />
<Compile Include="clsSong.vb" />
<Compile Include="ctrlAudioVideoPlayer.Designer.vb">
<DependentUpon>ctrlAudioVideoPlayer.vb</DependentUpon>
</Compile>
<Compile Include="ctrlAudioVideoPlayer.vb">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="frmErrorList.Designer.vb">
<DependentUpon>frmErrorList.vb</DependentUpon>
</Compile>
<Compile Include="frmErrorList.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmMain.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmMain.Designer.vb">
<DependentUpon>frmMain.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="frmSettings.Designer.vb">
<DependentUpon>frmSettings.vb</DependentUpon>
</Compile>
<Compile Include="frmSettings.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="repFavoritesList.Designer.vb">
<DependentUpon>repFavoritesList.vb</DependentUpon>
</Compile>
<Compile Include="repFavoritesList.vb">
<SubType>Component</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="ctrlAudioVideoPlayer.resx">
<DependentUpon>ctrlAudioVideoPlayer.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmErrorList.resx">
<DependentUpon>frmErrorList.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmMain.resx">
<DependentUpon>frmMain.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSettings.resx">
<DependentUpon>frmSettings.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\licenses.licx" />
<EmbeddedResource Include="My Project\Resources.resx">
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<SubType>Designer</SubType>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="repFavoritesList.resx">
<DependentUpon>repFavoritesList.vb</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Content Include="database.db">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="Resources\save.svg" />
<None Include="Resources\properties.svg" />
<None Include="Resources\documentpdf.svg" />
<None Include="Resources\changeview.svg" />
<Content Include="Sora-Meliae-Matrilineare-Apps-gnome-music.ico" />
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<COMReference Include="AxWMPLib">
<Guid>{6BF52A50-394A-11D3-B153-00C04F79FAA6}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>aximp</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
<COMReference Include="WMPLib">
<Guid>{6BF52A50-394A-11D3-B153-00C04F79FAA6}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 und x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
<Error Condition="!Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets'))" />
</Target>
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
<Import Project="..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
</Project>

View File

@ -0,0 +1,248 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{5360AAE3-11B2-47D7-A5BA-9C768918D167}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>UltraStarSongPicker.My.MyApplication</StartupObject>
<RootNamespace>UltraStarSongPicker</RootNamespace>
<AssemblyName>UltraStarSongPicker</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>
</DocumentationFile>
<NoWarn>
</NoWarn>
<WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>none</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>
</DocumentationFile>
<NoWarn>
</NoWarn>
<WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>On</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Sora-Meliae-Matrilineare-Apps-gnome-music.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.Desktop.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Data.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Printing.v20.2.Core, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Utils.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraBars.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraEditors.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraGrid.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraLayout.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraPrinting.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.117.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\lib\net46\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.EF6, Version=1.0.117.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.EF6.1.0.117.0\lib\net46\System.Data.SQLite.EF6.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.Linq, Version=1.0.117.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.Linq.1.0.117.0\lib\net46\System.Data.SQLite.Linq.dll</HintPath>
</Reference>
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="clsDB.vb" />
<Compile Include="clsSong.vb" />
<Compile Include="frmMain.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmMain.Designer.vb">
<DependentUpon>frmMain.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="frmSettings.Designer.vb">
<DependentUpon>frmSettings.vb</DependentUpon>
</Compile>
<Compile Include="frmSettings.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="frmMain.resx">
<DependentUpon>frmMain.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSettings.resx">
<DependentUpon>frmSettings.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\licenses.licx" />
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Content Include="database.db">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Sora-Meliae-Matrilineare-Apps-gnome-music.ico" />
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<COMReference Include="AxWMPLib">
<Guid>{6BF52A50-394A-11D3-B153-00C04F79FAA6}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>aximp</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
<COMReference Include="WMPLib">
<Guid>{6BF52A50-394A-11D3-B153-00C04F79FAA6}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 und x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
<Error Condition="!Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets'))" />
</Target>
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
<Import Project="..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
</Project>

View File

@ -0,0 +1,14 @@
Imports System.Data.SQLite
Public Class DB
Public Shared Function getConnection() As SQLiteConnection
Dim csb As New SQLiteConnectionStringBuilder
With csb
.DataSource = $"{Application.StartupPath}\database.db"
.Version = 3
End With
Return New SQLiteConnection(csb.ConnectionString, True)
End Function
End Class

View File

@ -0,0 +1,24 @@
Imports System.IO
Friend Class FileFunctions
Friend Shared Sub CopyDirectory(ByVal sourceDir As String, ByVal destinationDir As String, Optional ByVal recursive As Boolean = True)
Dim dir = New DirectoryInfo(sourceDir)
If Not dir.Exists Then Throw New DirectoryNotFoundException($"Source directory not found: {dir.FullName}")
Dim dirs As DirectoryInfo() = dir.GetDirectories()
Directory.CreateDirectory(destinationDir)
For Each file As FileInfo In dir.GetFiles()
Dim targetFilePath As String = Path.Combine(destinationDir, file.Name)
file.CopyTo(targetFilePath, True)
Next
If recursive Then
For Each subDir As DirectoryInfo In dirs
Dim newDestinationDir As String = Path.Combine(destinationDir, subDir.Name)
CopyDirectory(subDir.FullName, newDestinationDir, True)
Next
End If
End Sub
End Class

View File

@ -0,0 +1,160 @@
Imports System.Globalization
Public Class Song
'Songinfos aus Datei
Public Property Artist As String
Public Property Title As String
Public Property Genre As String
Public Property Language As String
Public Property Year As Integer
Public Property Previewstart As Decimal
Public Property BPM As Integer
Public Property GAP As Integer
Public Property Songfilename As String
Public Property CoverFilename As String
Public Property VideoFilename As String
Public Property SongInfos As New Dictionary(Of String, String)
'Weitere Properties
Public Property ID As Integer
Public Property RootDir As String
Public Property SubDirectory As String
Public Property IsFavorite As Boolean
Public Property InfoFile As String
Public Property HasError As Boolean
Public Property ErrorText As String
Public Property ExistsInFavDir As Boolean
Public ReadOnly Property SongInfoCount As Integer
Get
Return SongInfos.Count
End Get
End Property
Public ReadOnly Property FullPath As String
Get
Return RootDir & SubDirectory & "\"
End Get
End Property
Public ReadOnly Property Songfile As String
Get
Return FullPath & Songfilename
End Get
End Property
Public ReadOnly Property Coverfile As String
Get
Return FullPath & CoverFilename
End Get
End Property
Public ReadOnly Property Videofile As String
Get
Return FullPath & VideoFilename
End Get
End Property
Public ReadOnly Property ParentFolderName As String
'Gibt den übergeordneten Ordnernamen zurück, in dem sich der Pfad befindet
Get
Dim t As String = FullPath
If t.EndsWith("\") Then
t = t.Substring(0, t.Length - 1)
End If
t = t.Substring(0, t.LastIndexOf("\"))
Return IO.Path.GetFileName(t)
End Get
End Property
Public ReadOnly Property FolderName As String
'Gibt den übergeordneten Ordnernamen zurück, in dem sich der Pfad befindet
Get
Dim t As String = FullPath
If t.EndsWith("\") Then
t = t.Substring(0, t.Length - 1)
End If
Return IO.Path.GetFileName(t)
End Get
End Property
Public Sub ReadInfoFile()
Try
Dim line As String
Using sr As New IO.StreamReader(InfoFile, System.Text.Encoding.Default)
Do Until sr.EndOfStream
line = sr.ReadLine
If line.StartsWith("#") Then
AddSongInfo(line)
ElseIf line.Trim.Length > 0 Then 'Startet nicht mit # und ist auch keine Leerzeile, das heißt jetzt fängt wohl der Lyrics-Part an
Exit Do
End If
Loop
sr.Close()
End Using
Catch ex As IO.DirectoryNotFoundException
''Ggf Dateiname zu lang
ErrorText = "Dateiname zu lang"
HasError = True
End Try
End Sub
Private Sub AddSongInfo(infoline As String)
'#TITLE:Not Myself Tonight
'#ARTIST:Christina Aguilera
'#LANGUAGE:English
'#GENRE:Pop
'#YEAR:2010
'#MP3:Christina Aguilera - Not Myself Tonight (Duett).mp3
'#COVER:Christina Aguilera - Not Myself Tonight (Duett)[CO].jpg
'#VIDEO:Christina Aguilera - Not Myself Tonight (Duett).mp4
'#PREVIEWSTART:25,250
'#BPM:240
'#GAP:25000
Dim field, value As String
If infoline.StartsWith("#") AndAlso infoline.Contains(":") Then
field = infoline.Substring(1, infoline.IndexOf(":") - 1).Trim
value = infoline.Substring(infoline.IndexOf(":") + 1).Trim
Select Case field.ToUpper
Case "TITLE"
Title = value
Case "ARTIST"
Artist = value
Case "YEAR"
Year = CInt(value)
Case "MP3"
Songfilename = value
Case "COVER"
CoverFilename = value
Case "VIDEO"
VideoFilename = value
Case "LANGUAGE"
Language = value
Case "GENRE"
Genre = value
Case "PREVIEWSTART"
If value.Contains(",") Then
Decimal.TryParse(value, NumberStyles.Number, New CultureInfo("de-DE"), Previewstart)
Else
Decimal.TryParse(value, NumberStyles.Number, New CultureInfo("en-US"), Previewstart)
End If
Case "BPM"
BPM = CInt(value)
Case "GAP"
GAP = CInt(value)
Case Else
If SongInfos.ContainsKey(field) Then
Dim newvalue = SongInfos(field)
newvalue = $"{newvalue},{value}"
SongInfos(field) = newvalue
Else
SongInfos.Add(field, value)
End If
End Select
End If
End Sub
End Class

View File

@ -0,0 +1,103 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class AudioVideoPlayer
Inherits System.Windows.Forms.UserControl
'UserControl überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(AudioVideoPlayer))
Me.lblSongArtist = New DevExpress.XtraEditors.LabelControl()
Me.lblSongTitle = New DevExpress.XtraEditors.LabelControl()
Me.axVideo = New AxWMPLib.AxWindowsMediaPlayer()
Me.axAudio = New AxWMPLib.AxWindowsMediaPlayer()
CType(Me.axVideo, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.axAudio, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'lblSongArtist
'
Me.lblSongArtist.Appearance.Font = New System.Drawing.Font("Arial", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.lblSongArtist.Appearance.ForeColor = System.Drawing.Color.Gray
Me.lblSongArtist.Appearance.Options.UseFont = True
Me.lblSongArtist.Appearance.Options.UseForeColor = True
Me.lblSongArtist.Appearance.Options.UseTextOptions = True
Me.lblSongArtist.Appearance.TextOptions.Trimming = DevExpress.Utils.Trimming.EllipsisCharacter
Me.lblSongArtist.Appearance.TextOptions.WordWrap = DevExpress.Utils.WordWrap.NoWrap
Me.lblSongArtist.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.Vertical
Me.lblSongArtist.Dock = System.Windows.Forms.DockStyle.Top
Me.lblSongArtist.Location = New System.Drawing.Point(0, 27)
Me.lblSongArtist.Name = "lblSongArtist"
Me.lblSongArtist.Size = New System.Drawing.Size(518, 22)
Me.lblSongArtist.TabIndex = 7
Me.lblSongArtist.Text = "<Artist>"
'
'lblSongTitle
'
Me.lblSongTitle.Appearance.Font = New System.Drawing.Font("Arial", 18.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.lblSongTitle.Appearance.Options.UseFont = True
Me.lblSongTitle.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.Vertical
Me.lblSongTitle.Dock = System.Windows.Forms.DockStyle.Top
Me.lblSongTitle.Location = New System.Drawing.Point(0, 0)
Me.lblSongTitle.Name = "lblSongTitle"
Me.lblSongTitle.Size = New System.Drawing.Size(518, 27)
Me.lblSongTitle.TabIndex = 8
Me.lblSongTitle.Text = "<Title>"
'
'axVideo
'
Me.axVideo.Dock = System.Windows.Forms.DockStyle.Fill
Me.axVideo.Enabled = True
Me.axVideo.Location = New System.Drawing.Point(0, 0)
Me.axVideo.Name = "axVideo"
Me.axVideo.OcxState = CType(resources.GetObject("axVideo.OcxState"), System.Windows.Forms.AxHost.State)
Me.axVideo.Size = New System.Drawing.Size(518, 345)
Me.axVideo.TabIndex = 5
'
'axAudio
'
Me.axAudio.Dock = System.Windows.Forms.DockStyle.Bottom
Me.axAudio.Enabled = True
Me.axAudio.Location = New System.Drawing.Point(0, 345)
Me.axAudio.Name = "axAudio"
Me.axAudio.OcxState = CType(resources.GetObject("axAudio.OcxState"), System.Windows.Forms.AxHost.State)
Me.axAudio.Size = New System.Drawing.Size(518, 47)
Me.axAudio.TabIndex = 6
'
'ctrlAudioVideoPlayer
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.Controls.Add(Me.lblSongArtist)
Me.Controls.Add(Me.lblSongTitle)
Me.Controls.Add(Me.axVideo)
Me.Controls.Add(Me.axAudio)
Me.Name = "ctrlAudioVideoPlayer"
Me.Size = New System.Drawing.Size(518, 392)
CType(Me.axVideo, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.axAudio, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
Friend WithEvents lblSongArtist As DevExpress.XtraEditors.LabelControl
Friend WithEvents lblSongTitle As DevExpress.XtraEditors.LabelControl
Friend WithEvents axVideo As AxWMPLib.AxWindowsMediaPlayer
Friend WithEvents axAudio As AxWMPLib.AxWindowsMediaPlayer
End Class

View File

@ -0,0 +1,142 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="axVideo.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAtwAAAAIB
AAAAAQAAAAAAAAAAAAAAAKIAAAAAAwAACAAAAAAABQAAAAAAAADwPwMAAAAAAAUAAAAAAAAAAAAIAAIA
AAAAAAMAAQAAAAsA//8DAAAAAAALAP//CAACAAAAAAADADIAAAALAAAACAAKAAAAbgBvAG4AZQAAAAsA
AAALAAAACwD//wsA//8LAAAACAACAAAAAAAIAAIAAAAAAAgAAgAAAAAACAACAAAAAAALAAAAlC0AAMgw
AAAL
</value>
</data>
<data name="axAudio.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAtwAAAAIB
AAAAAQAAAAAAAAAAAAAAAKIAAAAAAwAACAAAAAAABQAAAAAAAADwPwMAAAAAAAUAAAAAAAAAAAAIAAIA
AAAAAAMAAQAAAAsA//8DAAAAAAALAP//CAACAAAAAAADADIAAAALAAAACAAKAAAAZgB1AGwAbAAAAAsA
AAALAAAACwD//wsA//8LAAAACAACAAAAAAAIAAIAAAAAAAgAAgAAAAAACAACAAAAAAALAAAANCgAANwE
AAAL
</value>
</data>
</root>

View File

@ -0,0 +1,76 @@
Imports System.IO
Imports AxWMPLib
Friend Class AudioVideoPlayer
Private Sub AudioVideoPlayer_Load(sender As Object, e As EventArgs) Handles Me.Load
lblSongArtist.Text = Nothing
lblSongTitle.Text = Nothing
If DesignMode = False Then
axVideo.uiMode = "none"
axVideo.settings.volume = 0
End If
End Sub
Private Sub axAudio_PlayStateChange(sender As Object, e As _WMPOCXEvents_PlayStateChangeEvent) Handles axAudio.PlayStateChange
With axVideo.Ctlcontrols
Select Case e.newState
Case 0 ' Undefined
Case 1 ' Stopped
.stop()
Case 2 ' Paused
.pause()
Case 3 ' Playing
.play()
Case 4 ' ScanForward
.currentPosition = axAudio.Ctlcontrols.currentPosition
Case 5 ' ScanReverse
.currentPosition = axAudio.Ctlcontrols.currentPosition
Case 6 ' Buffering
.pause()
Case 7 ' Waiting
.pause()
Case 8 ' MediaEnded
.stop()
Case 9 ' Transitioning
Case 10 ' Ready
Case 11 ' Reconnecting
Case 12 ' Last
Case Else
End Select
End With
End Sub
Private Sub axMediaPlayer_PositionChange(sender As Object, e As _WMPOCXEvents_PositionChangeEvent) Handles axAudio.PositionChange
axVideo.Ctlcontrols.currentPosition = axAudio.Ctlcontrols.currentPosition
End Sub
Friend Sub Play(song As Song)
If File.Exists(song.Videofile) Then
axVideo.URL = song.Videofile
axAudio.URL = song.Songfile
ElseIf File.Exists(song.Songfile) Then
axVideo.URL = Nothing
axAudio.URL = song.Songfile
Else
Exit Sub
End If
lblSongArtist.Text = song.Artist
lblSongTitle.Text = song.Title
axAudio.Ctlcontrols.currentPosition = song.Previewstart
End Sub
Friend Sub [Stop]()
axVideo.URL = Nothing
axAudio.URL = Nothing
End Sub
End Class

Binary file not shown.

View File

@ -0,0 +1,102 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmErrorList
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.txtErrors = New DevExpress.XtraEditors.MemoEdit()
Me.lblErrorTitle = New DevExpress.XtraEditors.LabelControl()
Me.panBottom = New DevExpress.XtraEditors.PanelControl()
Me.btnOK = New DevExpress.XtraEditors.SimpleButton()
CType(Me.txtErrors.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.panBottom, System.ComponentModel.ISupportInitialize).BeginInit()
Me.panBottom.SuspendLayout()
Me.SuspendLayout()
'
'txtErrors
'
Me.txtErrors.Dock = System.Windows.Forms.DockStyle.Fill
Me.txtErrors.Location = New System.Drawing.Point(0, 36)
Me.txtErrors.Name = "txtErrors"
Me.txtErrors.Properties.ReadOnly = True
Me.txtErrors.Size = New System.Drawing.Size(682, 386)
Me.txtErrors.TabIndex = 1
'
'lblErrorTitle
'
Me.lblErrorTitle.Appearance.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.lblErrorTitle.Appearance.ForeColor = System.Drawing.Color.Red
Me.lblErrorTitle.Appearance.Options.UseFont = True
Me.lblErrorTitle.Appearance.Options.UseForeColor = True
Me.lblErrorTitle.Appearance.Options.UseTextOptions = True
Me.lblErrorTitle.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center
Me.lblErrorTitle.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center
Me.lblErrorTitle.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.Vertical
Me.lblErrorTitle.Dock = System.Windows.Forms.DockStyle.Top
Me.lblErrorTitle.Location = New System.Drawing.Point(0, 0)
Me.lblErrorTitle.Name = "lblErrorTitle"
Me.lblErrorTitle.Padding = New System.Windows.Forms.Padding(10)
Me.lblErrorTitle.Size = New System.Drawing.Size(682, 36)
Me.lblErrorTitle.TabIndex = 1
Me.lblErrorTitle.Text = "Beim Ausführen der Aktion sind ein oder mehrere Fehler aufgetreten:"
'
'panBottom
'
Me.panBottom.Controls.Add(Me.btnOK)
Me.panBottom.Dock = System.Windows.Forms.DockStyle.Bottom
Me.panBottom.Location = New System.Drawing.Point(0, 422)
Me.panBottom.Name = "panBottom"
Me.panBottom.Size = New System.Drawing.Size(682, 41)
Me.panBottom.TabIndex = 2
'
'btnOK
'
Me.btnOK.Anchor = System.Windows.Forms.AnchorStyles.Bottom
Me.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK
Me.btnOK.Location = New System.Drawing.Point(291, 6)
Me.btnOK.Name = "btnOK"
Me.btnOK.Size = New System.Drawing.Size(101, 23)
Me.btnOK.TabIndex = 0
Me.btnOK.Text = "OK"
'
'frmErrorList
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(682, 463)
Me.Controls.Add(Me.txtErrors)
Me.Controls.Add(Me.lblErrorTitle)
Me.Controls.Add(Me.panBottom)
Me.Name = "frmErrorList"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
Me.Text = "Aufgetretene Fehler"
CType(Me.txtErrors.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.panBottom, System.ComponentModel.ISupportInitialize).EndInit()
Me.panBottom.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
Friend WithEvents txtErrors As DevExpress.XtraEditors.MemoEdit
Friend WithEvents lblErrorTitle As DevExpress.XtraEditors.LabelControl
Friend WithEvents panBottom As DevExpress.XtraEditors.PanelControl
Friend WithEvents btnOK As DevExpress.XtraEditors.SimpleButton
End Class

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,18 @@
Public Class frmErrorList
Dim ErrorList As List(Of String)
Public Sub New(errorlist As List(Of String))
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
Me.ErrorList = errorlist
End Sub
Private Sub frmErrorList_Load(sender As Object, e As EventArgs) Handles MyBase.Load
txtErrors.Text = String.Join(vbCrLf, ErrorList.ToArray)
txtErrors.DeselectAll()
End Sub
End Class

327
UltraStarSongPicker/frmMain.Designer.vb generated Normal file
View File

@ -0,0 +1,327 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class frmMain
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain))
Me.rcMain = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.btnSettings = New DevExpress.XtraBars.BarButtonItem()
Me.btnReread = New DevExpress.XtraBars.BarButtonItem()
Me.btnSave = New DevExpress.XtraBars.BarButtonItem()
Me.btnPrint = New DevExpress.XtraBars.BarButtonItem()
Me.rpGeneral = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.rpgGeneral = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.rpgManagement = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.grdSongs = New DevExpress.XtraGrid.GridControl()
Me.cmsSongs = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.menOpenFolder = New System.Windows.Forms.ToolStripMenuItem()
Me.menCopy = New System.Windows.Forms.ToolStripMenuItem()
Me.grdvSongs = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.splMain = New DevExpress.XtraEditors.SplitContainerControl()
Me.prgMain = New DevExpress.XtraWaitForm.ProgressPanel()
Me.splSongInfo = New DevExpress.XtraEditors.SplitContainerControl()
Me.avPlayer = New UltraStarSongPicker.AudioVideoPlayer()
Me.grdSongInfos = New DevExpress.XtraGrid.GridControl()
Me.grdvSongInfos = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.SFD = New System.Windows.Forms.SaveFileDialog()
CType(Me.rcMain, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.grdSongs, System.ComponentModel.ISupportInitialize).BeginInit()
Me.cmsSongs.SuspendLayout()
CType(Me.grdvSongs, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.splMain, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.splMain.Panel1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.splMain.Panel1.SuspendLayout()
CType(Me.splMain.Panel2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.splMain.Panel2.SuspendLayout()
Me.splMain.SuspendLayout()
CType(Me.splSongInfo, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.splSongInfo.Panel1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.splSongInfo.Panel1.SuspendLayout()
CType(Me.splSongInfo.Panel2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.splSongInfo.Panel2.SuspendLayout()
Me.splSongInfo.SuspendLayout()
CType(Me.grdSongInfos, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.grdvSongInfos, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'rcMain
'
Me.rcMain.ExpandCollapseItem.Id = 0
Me.rcMain.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.rcMain.ExpandCollapseItem, Me.rcMain.SearchEditItem, Me.btnSettings, Me.btnReread, Me.btnSave, Me.btnPrint})
Me.rcMain.Location = New System.Drawing.Point(0, 0)
Me.rcMain.MaxItemId = 5
Me.rcMain.Name = "rcMain"
Me.rcMain.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.rpGeneral})
Me.rcMain.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
Me.rcMain.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.ShowOnMultiplePages
Me.rcMain.Size = New System.Drawing.Size(1115, 100)
Me.rcMain.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Hidden
'
'btnSettings
'
Me.btnSettings.Caption = "Einstellungen"
Me.btnSettings.Id = 1
Me.btnSettings.ImageOptions.SvgImage = Global.UltraStarSongPicker.My.Resources.Resources.properties
Me.btnSettings.Name = "btnSettings"
'
'btnReread
'
Me.btnReread.Caption = "Ordner neu einlesen"
Me.btnReread.Id = 2
Me.btnReread.ImageOptions.SvgImage = Global.UltraStarSongPicker.My.Resources.Resources.changeview
Me.btnReread.Name = "btnReread"
'
'btnSave
'
Me.btnSave.Caption = "Änderungen speichern"
Me.btnSave.Id = 3
Me.btnSave.ImageOptions.SvgImage = Global.UltraStarSongPicker.My.Resources.Resources.save
Me.btnSave.Name = "btnSave"
Me.btnSave.RibbonStyle = CType(((DevExpress.XtraBars.Ribbon.RibbonItemStyles.Large Or DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText) _
Or DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithoutText), DevExpress.XtraBars.Ribbon.RibbonItemStyles)
'
'btnPrint
'
Me.btnPrint.Caption = "Songliste erstellen"
Me.btnPrint.Id = 4
Me.btnPrint.ImageOptions.SvgImage = Global.UltraStarSongPicker.My.Resources.Resources.documentpdf
Me.btnPrint.Name = "btnPrint"
Me.btnPrint.RibbonStyle = CType(((DevExpress.XtraBars.Ribbon.RibbonItemStyles.Large Or DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText) _
Or DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithoutText), DevExpress.XtraBars.Ribbon.RibbonItemStyles)
'
'rpGeneral
'
Me.rpGeneral.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.rpgGeneral, Me.rpgManagement})
Me.rpGeneral.Name = "rpGeneral"
Me.rpGeneral.Text = "Allgemein"
'
'rpgGeneral
'
Me.rpgGeneral.ItemLinks.Add(Me.btnSave)
Me.rpgGeneral.ItemLinks.Add(Me.btnPrint)
Me.rpgGeneral.Name = "rpgGeneral"
Me.rpgGeneral.Text = "Allgemein"
'
'rpgManagement
'
Me.rpgManagement.ItemLinks.Add(Me.btnReread)
Me.rpgManagement.ItemLinks.Add(Me.btnSettings)
Me.rpgManagement.Name = "rpgManagement"
Me.rpgManagement.Text = "Verwaltung"
'
'grdSongs
'
Me.grdSongs.ContextMenuStrip = Me.cmsSongs
Me.grdSongs.Dock = System.Windows.Forms.DockStyle.Fill
Me.grdSongs.EmbeddedNavigator.Buttons.Append.Visible = False
Me.grdSongs.EmbeddedNavigator.Buttons.CancelEdit.Visible = False
Me.grdSongs.EmbeddedNavigator.Buttons.Edit.Visible = False
Me.grdSongs.EmbeddedNavigator.Buttons.EndEdit.Visible = False
Me.grdSongs.EmbeddedNavigator.Buttons.First.Visible = False
Me.grdSongs.EmbeddedNavigator.Buttons.Last.Visible = False
Me.grdSongs.EmbeddedNavigator.Buttons.Next.Visible = False
Me.grdSongs.EmbeddedNavigator.Buttons.NextPage.Visible = False
Me.grdSongs.EmbeddedNavigator.Buttons.Prev.Visible = False
Me.grdSongs.EmbeddedNavigator.Buttons.PrevPage.Visible = False
Me.grdSongs.EmbeddedNavigator.Buttons.Remove.Visible = False
Me.grdSongs.EmbeddedNavigator.TextStringFormat = "Song {0} von {1}"
Me.grdSongs.Location = New System.Drawing.Point(0, 0)
Me.grdSongs.MainView = Me.grdvSongs
Me.grdSongs.MenuManager = Me.rcMain
Me.grdSongs.Name = "grdSongs"
Me.grdSongs.Size = New System.Drawing.Size(655, 603)
Me.grdSongs.TabIndex = 1
Me.grdSongs.UseEmbeddedNavigator = True
Me.grdSongs.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.grdvSongs})
'
'cmsSongs
'
Me.cmsSongs.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.menOpenFolder, Me.menCopy})
Me.cmsSongs.Name = "cmsSongs"
Me.cmsSongs.Size = New System.Drawing.Size(213, 48)
'
'menOpenFolder
'
Me.menOpenFolder.Name = "menOpenFolder"
Me.menOpenFolder.Size = New System.Drawing.Size(212, 22)
Me.menOpenFolder.Text = "Ordner im Explorer öffnen"
'
'menCopy
'
Me.menCopy.Name = "menCopy"
Me.menCopy.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys)
Me.menCopy.Size = New System.Drawing.Size(212, 22)
Me.menCopy.Text = "Kopieren"
'
'grdvSongs
'
Me.grdvSongs.GridControl = Me.grdSongs
Me.grdvSongs.Name = "grdvSongs"
Me.grdvSongs.OptionsBehavior.AutoExpandAllGroups = True
Me.grdvSongs.OptionsFind.AlwaysVisible = True
Me.grdvSongs.OptionsSelection.MultiSelect = True
'
'splMain
'
Me.splMain.Dock = System.Windows.Forms.DockStyle.Fill
Me.splMain.FixedPanel = DevExpress.XtraEditors.SplitFixedPanel.Panel2
Me.splMain.Location = New System.Drawing.Point(0, 100)
Me.splMain.Name = "splMain"
'
'splMain.Panel1
'
Me.splMain.Panel1.Controls.Add(Me.prgMain)
Me.splMain.Panel1.Controls.Add(Me.grdSongs)
Me.splMain.Panel1.Text = "Panel1"
'
'splMain.Panel2
'
Me.splMain.Panel2.Controls.Add(Me.splSongInfo)
Me.splMain.Panel2.Text = "Panel2"
Me.splMain.Size = New System.Drawing.Size(1115, 603)
Me.splMain.SplitterPosition = 450
Me.splMain.TabIndex = 3
'
'prgMain
'
Me.prgMain.Anchor = System.Windows.Forms.AnchorStyles.None
Me.prgMain.Appearance.BackColor = System.Drawing.Color.Transparent
Me.prgMain.Appearance.Options.UseBackColor = True
Me.prgMain.Caption = ""
Me.prgMain.Location = New System.Drawing.Point(204, 268)
Me.prgMain.Name = "prgMain"
Me.prgMain.Size = New System.Drawing.Size(246, 66)
Me.prgMain.TabIndex = 2
Me.prgMain.Visible = False
'
'splSongInfo
'
Me.splSongInfo.Dock = System.Windows.Forms.DockStyle.Fill
Me.splSongInfo.FixedPanel = DevExpress.XtraEditors.SplitFixedPanel.Panel2
Me.splSongInfo.Horizontal = False
Me.splSongInfo.Location = New System.Drawing.Point(0, 0)
Me.splSongInfo.Name = "splSongInfo"
'
'splSongInfo.Panel1
'
Me.splSongInfo.Panel1.Controls.Add(Me.avPlayer)
Me.splSongInfo.Panel1.Text = "Panel1"
'
'splSongInfo.Panel2
'
Me.splSongInfo.Panel2.Controls.Add(Me.grdSongInfos)
Me.splSongInfo.Panel2.Text = "Panel2"
Me.splSongInfo.Size = New System.Drawing.Size(450, 603)
Me.splSongInfo.SplitterPosition = 201
Me.splSongInfo.TabIndex = 5
'
'avPlayer
'
Me.avPlayer.Dock = System.Windows.Forms.DockStyle.Fill
Me.avPlayer.Location = New System.Drawing.Point(0, 0)
Me.avPlayer.Name = "avPlayer"
Me.avPlayer.Size = New System.Drawing.Size(450, 392)
Me.avPlayer.TabIndex = 0
'
'grdSongInfos
'
Me.grdSongInfos.Dock = System.Windows.Forms.DockStyle.Fill
Me.grdSongInfos.Location = New System.Drawing.Point(0, 0)
Me.grdSongInfos.MainView = Me.grdvSongInfos
Me.grdSongInfos.MenuManager = Me.rcMain
Me.grdSongInfos.Name = "grdSongInfos"
Me.grdSongInfos.Size = New System.Drawing.Size(450, 201)
Me.grdSongInfos.TabIndex = 2
Me.grdSongInfos.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.grdvSongInfos})
'
'grdvSongInfos
'
Me.grdvSongInfos.GridControl = Me.grdSongInfos
Me.grdvSongInfos.Name = "grdvSongInfos"
Me.grdvSongInfos.OptionsBehavior.Editable = False
Me.grdvSongInfos.OptionsView.ShowColumnHeaders = False
Me.grdvSongInfos.OptionsView.ShowGroupPanel = False
Me.grdvSongInfos.OptionsView.ShowIndicator = False
Me.grdvSongInfos.OptionsView.ShowViewCaption = True
Me.grdvSongInfos.ViewCaption = "Songinfos"
'
'SFD
'
Me.SFD.FileName = "Songliste.pdf"
Me.SFD.Filter = "PDF-Dateien (*.pdf)|*.pdf|Alle Dateien (*.*)|*.*"
'
'frmMain
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1115, 703)
Me.Controls.Add(Me.splMain)
Me.Controls.Add(Me.rcMain)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "frmMain"
Me.Text = "Ultrastar Songlistpicker"
Me.WindowState = System.Windows.Forms.FormWindowState.Maximized
CType(Me.rcMain, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.grdSongs, System.ComponentModel.ISupportInitialize).EndInit()
Me.cmsSongs.ResumeLayout(False)
CType(Me.grdvSongs, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.splMain.Panel1, System.ComponentModel.ISupportInitialize).EndInit()
Me.splMain.Panel1.ResumeLayout(False)
CType(Me.splMain.Panel2, System.ComponentModel.ISupportInitialize).EndInit()
Me.splMain.Panel2.ResumeLayout(False)
CType(Me.splMain, System.ComponentModel.ISupportInitialize).EndInit()
Me.splMain.ResumeLayout(False)
CType(Me.splSongInfo.Panel1, System.ComponentModel.ISupportInitialize).EndInit()
Me.splSongInfo.Panel1.ResumeLayout(False)
CType(Me.splSongInfo.Panel2, System.ComponentModel.ISupportInitialize).EndInit()
Me.splSongInfo.Panel2.ResumeLayout(False)
CType(Me.splSongInfo, System.ComponentModel.ISupportInitialize).EndInit()
Me.splSongInfo.ResumeLayout(False)
CType(Me.grdSongInfos, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.grdvSongInfos, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents rcMain As DevExpress.XtraBars.Ribbon.RibbonControl
Friend WithEvents rpGeneral As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents rpgGeneral As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents grdSongs As DevExpress.XtraGrid.GridControl
Friend WithEvents grdvSongs As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents btnSettings As DevExpress.XtraBars.BarButtonItem
Friend WithEvents btnReread As DevExpress.XtraBars.BarButtonItem
Friend WithEvents splMain As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents prgMain As DevExpress.XtraWaitForm.ProgressPanel
Friend WithEvents grdSongInfos As DevExpress.XtraGrid.GridControl
Friend WithEvents grdvSongInfos As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents cmsSongs As ContextMenuStrip
Friend WithEvents menCopy As ToolStripMenuItem
Friend WithEvents menOpenFolder As ToolStripMenuItem
Friend WithEvents splSongInfo As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents avPlayer As AudioVideoPlayer
Friend WithEvents btnSave As DevExpress.XtraBars.BarButtonItem
Friend WithEvents btnPrint As DevExpress.XtraBars.BarButtonItem
Friend WithEvents rpgManagement As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents SFD As SaveFileDialog
End Class

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,528 @@
Imports System.ComponentModel
Imports System.Data.Common
Imports System.Data.SQLite
Imports System.IO
Imports AxWMPLib
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraGrid.Views.Base
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraGrid.Views.Grid.ViewInfo
Imports DevExpress.XtraReports.UI
Public Class frmMain
Public Property Songs As New List(Of Song)
Dim ErrorMsgs As New List(Of String)
Event ReadProgress(Caption As String, Description As String)
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
prepareGrid()
GetSongsFromDB()
End Sub
Private Sub prepareGrid()
grdSongs.DataSource = Songs
grdvSongs.PopulateColumns()
With grdvSongs
.OptionsBehavior.Editable = True
For Each col As GridColumn In grdvSongs.Columns
col.OptionsColumn.AllowEdit = False
Next
.Columns(NameOf(Song.IsFavorite)).OptionsColumn.AllowEdit = True
.Columns(NameOf(Song.ID)).Visible = False
.Columns(NameOf(Song.SongInfos)).Visible = False
.Columns(NameOf(Song.Coverfile)).Visible = False
.Columns(NameOf(Song.Songfile)).Visible = False
.Columns(NameOf(Song.Videofile)).Visible = False
.Columns(NameOf(Song.HasError)).Visible = False
.Columns(NameOf(Song.ErrorText)).Visible = False
.Columns(NameOf(Song.RootDir)).Visible = False
.Columns(NameOf(Song.SubDirectory)).Visible = False
.Columns(NameOf(Song.InfoFile)).Visible = False
'.Columns(NameOf(Song.Language)).Visible = False
'.Columns(NameOf(Song.Genre)).Visible = False
.Columns(NameOf(Song.BPM)).Visible = False
.Columns(NameOf(Song.GAP)).Visible = False
.Columns(NameOf(Song.Previewstart)).Visible = False
.Columns(NameOf(Song.FullPath)).Visible = False
.Columns(NameOf(Song.FolderName)).Visible = False
.Columns(NameOf(Song.ExistsInFavDir)).Visible = False
.Columns(NameOf(Song.Songfilename)).Visible = False
.Columns(NameOf(Song.VideoFilename)).Visible = False
.Columns(NameOf(Song.CoverFilename)).Visible = False
.Columns(NameOf(Song.Artist)).SortIndex = 0
.Columns(NameOf(Song.Artist)).Caption = "Künstler"
.Columns(NameOf(Song.Title)).SortIndex = 1
.Columns(NameOf(Song.Title)).Caption = "Titel"
.Columns(NameOf(Song.ParentFolderName)).SortIndex = 2
.Columns(NameOf(Song.ParentFolderName)).Caption = "Ordnername"
.Columns(NameOf(Song.Language)).Caption = "Sprache"
.Columns(NameOf(Song.Year)).Caption = "Jahr"
.Columns(NameOf(Song.IsFavorite)).Caption = "Favorit"
.Columns(NameOf(Song.IsFavorite)).VisibleIndex = 0
.Columns(NameOf(Song.SongInfoCount)).Visible = False
' .Columns(NameOf(Song.ParentFolderName)).GroupIndex = 0
grdvSongs.ActiveFilter.Add(.Columns(NameOf(Song.HasError)), New ColumnFilterInfo($"[{NameOf(Song.HasError)}] = FALSE"))
Dim rule As GridFormatRule
rule = New GridFormatRule With {
.Column = grdvSongs.Columns(NameOf(Song.IsFavorite)),
.ApplyToRow = True,
.Rule = New DevExpress.XtraEditors.FormatConditionRuleValue With {
.Condition = DevExpress.XtraEditors.FormatCondition.Equal,
.Value1 = True
}
}
rule.RuleCast(Of DevExpress.XtraEditors.FormatConditionRuleValue).Appearance.BackColor = Color.LightYellow
grdvSongs.FormatRules.Add(rule)
rule = New GridFormatRule With {
.Column = grdvSongs.Columns(NameOf(Song.ExistsInFavDir)),
.ApplyToRow = True,
.Rule = New DevExpress.XtraEditors.FormatConditionRuleValue With {
.Condition = DevExpress.XtraEditors.FormatCondition.Equal,
.Value1 = True
}
}
rule.RuleCast(Of DevExpress.XtraEditors.FormatConditionRuleValue).Appearance.BackColor = Color.LightGreen
grdvSongs.FormatRules.Add(rule)
End With
End Sub
Private Sub btnSettings_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnSettings.ItemClick
Dim frm As New frmSettings
frm.ShowDialog()
End Sub
Private Sub btnReread_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnReread.ItemClick
RereadFolders()
End Sub
Private Async Sub GetSongsFromDB()
grdvSongs.BeginDataUpdate()
Dim con = DB.getConnection
Dim cmd As New SQLiteCommand(Nothing, con)
Dim reader As DbDataReader
Await con.OpenAsync
cmd.CommandText = "SELECT * FROM t_songs"
reader = Await cmd.ExecuteReaderAsync
Songs.Clear()
Dim s As Song
Do While Await reader.ReadAsync
s = New Song
s.ID = CInt(reader("S_ID"))
s.RootDir = CStr(reader("S_Path"))
s.SubDirectory = CStr(reader("S_Subpath"))
s.Artist = TryCast(reader("S_Info_Artist"), String)
s.Title = TryCast(reader("S_Info_Title"), String)
s.Year = CInt(reader("S_Info_Year"))
s.Language = TryCast(reader("S_Info_Language"), String)
s.Genre = TryCast(reader("S_Info_Genre"), String)
s.Previewstart = CDec(reader("S_Info_Previewstart"))
s.BPM = CInt(reader("S_Info_BPM"))
s.GAP = CInt(reader("S_Info_GAP"))
s.IsFavorite = CBool(reader("S_Favorite"))
s.InfoFile = TryCast(reader("S_File_Info"), String)
s.Songfilename = TryCast(reader("S_File_Song"), String)
s.CoverFilename = TryCast(reader("S_File_Cover"), String)
s.VideoFilename = TryCast(reader("S_File_Video"), String)
s.SongInfos = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Dictionary(Of String, String))(TryCast(reader("S_Info_Additional"), String))
Songs.Add(s)
'ToDo:Songinfos laden (oder erst beim Anklicken des Liedes)
Loop
reader.Close()
con.Close()
CheckFavorites()
grdvSongs.EndDataUpdate()
grdvSongs.BestFitColumns()
End Sub
Private Async Sub RereadFolders()
Dim con = DB.getConnection
Dim cmd As New SQLiteCommand(Nothing, con)
Dim reader As DbDataReader
Dim Pfade As New List(Of String)
'Pfade aus Datenbank auslesen
Await con.OpenAsync()
cmd.CommandText = "SELECT p_path FROM t_paths ORDER BY p_path"
reader = Await cmd.ExecuteReaderAsync
Do While Await reader.ReadAsync
Pfade.Add(CStr(reader("p_path")))
Loop
con.Close()
'Ordner auslesen
prgMain.Visible = True
Await Task.Run(Sub() ImportSongsToDB(Pfade))
prgMain.Visible = False
ErrorMsgs.Clear()
If Pfade.Count = 0 Then
ErrorMsgs.Add("Es sind keine Pfade hinterlegt.")
End If
If ErrorMsgs.Count > 0 Then
MessageBox.Show(String.Join(vbCrLf, ErrorMsgs), Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
GetSongsFromDB()
End Sub
Private Sub ImportSongsToDB(Pfade As List(Of String))
Dim FavDirExists As Boolean = Directory.Exists(My.Settings.FavDir)
Dim FavDir As String = My.Settings.FavDir
If FavDir.EndsWith("\") = False Then FavDir &= "\"
Dim songinfofiles() As String
Dim duetinfofiles() As String
Dim song As Song
Dim songsread As UInt64
Dim templist As New List(Of Song)
For Each pfad As String In Pfade
If Directory.Exists(pfad) Then
For Each ordner As String In Directory.GetDirectories(pfad, "*", SearchOption.AllDirectories)
'ordner = Einzelne liederordner
If Directory.GetFiles(ordner, "*.mp3").Count > 0 Then 'Wenn es sich um einen Ordner handelt, der einen Song enthält (und nicht irgendein übergeordneter Ordner ist)
songinfofiles = Directory.GetFiles(ordner, "*.txt")
duetinfofiles = Directory.GetFiles(ordner, "*.txd")
song = New Song
song.RootDir = pfad & "\"
song.SubDirectory = ordner.Substring(pfad.Length + 1)
If songinfofiles.Count = 0 AndAlso duetinfofiles.Count = 0 Then
song.ErrorText = $"{songinfofiles.Count} Textdateien gefunden"
song.HasError = True
Else
If songinfofiles.Count > 0 Then
song.InfoFile = songinfofiles.FirstOrDefault
Else
song.InfoFile = duetinfofiles.FirstOrDefault
End If
song.ReadInfoFile()
End If
If FavDirExists Then song.IsFavorite = Directory.Exists(FavDir & song.FolderName)
templist.Add(song)
End If
songsread += CType(1, UInt64)
RaiseEvent ReadProgress("Songs werden eingelesen...", $"{songsread} Songs")
Next
Else
ErrorMsgs.Add($"Der Pfad {pfad} existiert nicht oder konnte nicht gelesen werden.")
End If
Next
SaveSongsInDB(templist)
End Sub
Private Sub CheckFavorites()
Dim FavDir As String = My.Settings.FavDir
If FavDir.EndsWith("\") = False Then FavDir &= "\"
If Directory.Exists(FavDir) Then
For Each s As Song In Songs
If Directory.Exists(FavDir & s.FolderName) Then
s.ExistsInFavDir = True
Else
s.ExistsInFavDir = False
End If
Next
Else
For Each s As Song In Songs
s.ExistsInFavDir = False
Next
End If
End Sub
Private Sub ReadSongFolder_Progress(Caption As String, Description As String) Handles Me.ReadProgress
prgMain.Invoke(Sub()
prgMain.Caption = Caption
prgMain.Description = Description
End Sub)
End Sub
Private Async Sub SaveSongsInDB(songs As List(Of Song))
Dim con = DB.getConnection
Dim cmd As New SQLiteCommand(Nothing, con)
With cmd.Parameters
.Add("@path", DbType.String)
.Add("@subpath", DbType.String)
.Add("@artist", DbType.String)
.Add("@title", DbType.String)
.Add("@year", DbType.Int32)
.Add("@language", DbType.String)
.Add("@genre", DbType.String)
.Add("@previewstart", DbType.Double)
.Add("@bpm", DbType.Int32)
.Add("@gap", DbType.Int32)
.Add("@additional", DbType.String)
.Add("@favorite", DbType.Boolean)
.Add("@fileinfo", DbType.String)
.Add("@filesong", DbType.String)
.Add("@filecover", DbType.String)
.Add("@filevideo", DbType.String)
End With
Await con.OpenAsync()
cmd.CommandText = "DELETE FROM t_songs"
Await cmd.ExecuteNonQueryAsync()
cmd.CommandText = "INSERT INTO t_songs (
S_Path,
S_Subpath,
S_Info_Artist,
S_Info_Title,
S_Info_Year,
S_Info_Language,
S_Info_Genre,
S_Info_Previewstart,
S_Info_BPM,
S_Info_GAP,
S_Info_Additional,
S_Favorite,
S_File_Info,
S_File_Song,
S_File_Cover,
S_File_Video
) VALUES (
@path,
@subpath,
@artist,
@title,
@year,
@language,
@genre,
@previewstart,
@bpm,
@gap,
@additional,
@favorite,
@fileinfo,
@filesong,
@filecover,
@filevideo
)"
For Each s As Song In songs
cmd.Parameters("@path").Value = s.RootDir
cmd.Parameters("@subpath").Value = s.SubDirectory
cmd.Parameters("@artist").Value = s.Artist
cmd.Parameters("@title").Value = s.Title
cmd.Parameters("@year").Value = s.Year
cmd.Parameters("@language").Value = s.Language
cmd.Parameters("@genre").Value = s.Genre
cmd.Parameters("@previewstart").Value = s.Previewstart
cmd.Parameters("@bpm").Value = s.BPM
cmd.Parameters("@gap").Value = s.GAP
cmd.Parameters("@additional").Value = Newtonsoft.Json.JsonConvert.SerializeObject(s.SongInfos)
cmd.Parameters("@favorite").Value = s.IsFavorite
cmd.Parameters("@fileinfo").Value = s.InfoFile
cmd.Parameters("@filesong").Value = s.Songfilename
cmd.Parameters("@filecover").Value = s.CoverFilename
cmd.Parameters("@filevideo").Value = s.VideoFilename
Await cmd.ExecuteNonQueryAsync()
Next
con.Close()
End Sub
Private Sub grdvSongs_RowClick(sender As Object, e As RowClickEventArgs) Handles grdvSongs.RowClick
If e.Clicks = 2 AndAlso e.Button = MouseButtons.Left Then
Dim s As Song = CType(grdvSongs.GetFocusedRow, Song)
avPlayer.Play(s)
End If
End Sub
Private Sub grdvSongs_FocusedRowChanged(sender As Object, e As FocusedRowChangedEventArgs) Handles grdvSongs.FocusedRowChanged
Dim s As Song = TryCast(grdvSongs.GetFocusedRow, Song)
If s Is Nothing Then
grdSongInfos.DataSource = Nothing
Exit Sub
End If
If s.SongInfos Is Nothing Then
grdSongInfos.DataSource = Nothing
Else
grdSongInfos.DataSource = s.SongInfos
grdvSongInfos.PopulateColumns()
End If
End Sub
Private Sub menCopy_Click(sender As Object, e As EventArgs) Handles menCopy.Click
Dim pfade As New Specialized.StringCollection
For Each rh As Integer In grdvSongs.GetSelectedRows
pfade.Add(CStr(grdvSongs.GetRowCellValue(rh, NameOf(Song.FullPath))))
Next
Dim datas As New DataObject
datas.SetFileDropList(pfade)
Clipboard.SetDataObject(datas)
End Sub
Private Sub menOpenFolder_Click(sender As Object, e As EventArgs) Handles menOpenFolder.Click
Dim pfad As String = CStr(grdvSongs.GetRowCellValue(grdvSongs.FocusedRowHandle, NameOf(Song.FullPath)))
If pfad IsNot Nothing AndAlso Directory.Exists(pfad) Then
Process.Start("explorer.exe", pfad)
End If
End Sub
Private downHitInfo As GridHitInfo = Nothing
Private Sub grdvSongs_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles grdvSongs.MouseDown
Dim view As GridView = TryCast(sender, GridView)
downHitInfo = Nothing
Dim hitInfo As GridHitInfo = view.CalcHitInfo(New Point(e.X, e.Y))
If Control.ModifierKeys <> Keys.None Then
Return
End If
If e.Button = MouseButtons.Left AndAlso hitInfo.InRow AndAlso hitInfo.RowHandle <> GridControl.NewItemRowHandle Then
downHitInfo = hitInfo
End If
End Sub
Private Sub grdvSongs_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles grdvSongs.MouseMove
Dim view As GridView = TryCast(sender, GridView)
If e.Button = MouseButtons.Left AndAlso downHitInfo IsNot Nothing Then
Dim dragSize As Size = SystemInformation.DragSize
Dim dragRect As New Rectangle(New Point(downHitInfo.HitPoint.X - dragSize.Width \ 2, downHitInfo.HitPoint.Y - dragSize.Height \ 2), dragSize)
If (Not dragRect.Contains(New Point(e.X, e.Y))) Then
Dim pfade As New Specialized.StringCollection
For Each rh As Integer In grdvSongs.GetSelectedRows
pfade.Add(CStr(grdvSongs.GetRowCellValue(rh, NameOf(Song.FullPath))))
Next
Dim datas As New DataObject
datas.SetFileDropList(pfade)
'view.GridControl.DoDragDrop(downHitInfo, DragDropEffects.All)
view.GridControl.DoDragDrop(datas, DragDropEffects.Copy)
downHitInfo = Nothing
End If
End If
End Sub
Private Sub cmsSongs_Opening(sender As Object, e As CancelEventArgs) Handles cmsSongs.Opening
Dim hi As GridHitInfo = grdvSongs.CalcHitInfo(grdSongs.PointToClient(Cursor.Position))
If hi.InRow = False Then
e.Cancel = True
End If
End Sub
Private Async Sub btnSave_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnSave.ItemClick
grdvSongs.CloseEditor()
Dim FavDir = My.Settings.FavDir
Dim ToAddToFavs As List(Of Song) = Songs.Where(Function(s) s.IsFavorite = True AndAlso s.ExistsInFavDir = False).ToList
Dim ToDeleteFromFavs As List(Of Song) = Songs.Where(Function(s) s.IsFavorite = False AndAlso s.ExistsInFavDir = True).ToList
If ToDeleteFromFavs.Count > 0 Then
If MessageBox.Show($"Sind Sie sicher, dass Sie {ToDeleteFromFavs.Count} Lieder aus dem Favoritenverzeichnis entfernen möchten?{vbCrLf}Diese werden nicht in die ursprünglichen Verzeichnisse kopiert, daher sollten Sie ggf. sicherstellen ob diese Songs noch in den ursprünglichen Verzeichnissen vorhanden sind.{vbCrLf}{vbCrLf}Möchten Sie fortfahren?", "Löschen von Favoriten", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) <> DialogResult.Yes Then
Exit Sub
End If
End If
grdvSongs.BeginDataUpdate()
prgMain.Visible = True
Await Task.Run(Sub() SyncFavDir(Songs))
prgMain.Visible = False
grdvSongs.EndDataUpdate()
End Sub
Private Async Sub SyncFavDir(songlist As List(Of Song))
Dim ToAddToFavs As List(Of Song) = songlist.Where(Function(s) s.IsFavorite = True AndAlso s.ExistsInFavDir = False).ToList
Dim ToDeleteFromFavs As List(Of Song) = songlist.Where(Function(s) s.IsFavorite = False AndAlso s.ExistsInFavDir = True).ToList
Dim FavDir = My.Settings.FavDir
Dim errors As New List(Of String)
Dim con As SQLiteConnection = DB.getConnection
Dim cmd As New SQLiteCommand(Nothing, con)
cmd.Parameters.Add("@id", DbType.Int32)
cmd.Parameters.Add("@favorite", DbType.Boolean)
cmd.CommandText = "UPDATE t_songs SET S_Favorite = @favorite WHERE S_ID = @id"
Await con.OpenAsync
'Favoriten, die noch nicht im FavDir existieren, setzen
Dim songcount As Integer = 1
For Each song In ToAddToFavs
RaiseEvent ReadProgress("Aktualisiere Favoriten...", $"{songcount}\{ToAddToFavs.Count} Songs kopiert")
Dim targetdir As String = FavDir & "\" & song.FolderName
Try
'In Favoriten hinzufügen, auch wenn kopieren fehlschlägt
cmd.Parameters("@id").Value = song.ID
cmd.Parameters("@favorite").Value = song.IsFavorite
Await cmd.ExecuteNonQueryAsync()
FileFunctions.CopyDirectory(song.FullPath, targetdir)
Catch ex As Exception
errors.Add($"Kopieren von '{song.FolderName}' ins Favoritenverzeichnis fehlgeschlagen:{vbCrLf} -> {ex.Message}")
End Try
If Directory.Exists(targetdir) Then
song.ExistsInFavDir = True
End If
songcount += 1
Next
'Favoriten, die keine Favoriten mehr sind, entfernen
songcount = 1
For Each song In ToDeleteFromFavs
RaiseEvent ReadProgress("Aktualisiere Favoriten...", $"{songcount}\{ToDeleteFromFavs.Count} Songs entfernt")
Dim targetdir As String = FavDir & "\" & song.FolderName
Try
'Von Favoriten entfernen, auch wenn löschen fehlschlägt.
cmd.Parameters("@id").Value = song.ID
cmd.Parameters("@favorite").Value = song.IsFavorite
Await cmd.ExecuteNonQueryAsync
Directory.Delete(targetdir, True)
Catch ex As Exception
errors.Add($"Löschen von '{song.FolderName}' aus dem Favoritenverzeichnis fehlgeschlagen:{vbCrLf} -> {ex.Message}")
End Try
If Directory.Exists(targetdir) = False Then song.ExistsInFavDir = False
songcount += 1
Next
con.Close()
If errors.Count > 0 Then
Me.Invoke(Sub()
Dim frm As New frmErrorList(errors)
frm.ShowDialog()
End Sub)
End If
End Sub
Private Sub btnPrint_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnPrint.ItemClick
If Songs.LongCount(Function(s) s.ExistsInFavDir = False AndAlso s.IsFavorite = True) > 0 Then
End If
Dim rep As New repFavoritesList
rep.DataSource = Songs.Where(Function(s) s.ExistsInFavDir = True)
If SFD.ShowDialog = DialogResult.OK Then
Try
rep.ExportToPdf(SFD.FileName)
Catch ex As Exception
MessageBox.Show($"Die Datei konnte nicht gespeichert werden: {ex.Message}", "Fehler beim Speichern der Datei", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
If File.Exists(SFD.FileName) Then
Try
Process.Start(SFD.FileName)
Catch ex As Exception
MessageBox.Show($"Die Datei konnte nicht geöffnet werden: {ex.Message}", "Fehler beim Öffnen der Datei", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
End If
'rep.ShowPreview()
End Sub
Private Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
avPlayer.Stop()
End Sub
End Class

View File

@ -0,0 +1,204 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmSettings
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmSettings))
Me.lstPaths = New DevExpress.XtraEditors.ListBoxControl()
Me.rcMain = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.btnSave = New DevExpress.XtraBars.BarButtonItem()
Me.btnPathAdd = New DevExpress.XtraBars.BarButtonItem()
Me.btnPathDelete = New DevExpress.XtraBars.BarButtonItem()
Me.rpGeneral = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.rpgGeneral = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.rpgPaths = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.grpPaths = New DevExpress.XtraEditors.GroupControl()
Me.FBD = New System.Windows.Forms.FolderBrowserDialog()
Me.grpGeneral = New DevExpress.XtraEditors.GroupControl()
Me.btnFavDir = New DevExpress.XtraEditors.SimpleButton()
Me.lblFavDir = New DevExpress.XtraEditors.LabelControl()
Me.txtFavDir = New DevExpress.XtraEditors.TextEdit()
CType(Me.lstPaths, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.rcMain, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.grpPaths, System.ComponentModel.ISupportInitialize).BeginInit()
Me.grpPaths.SuspendLayout()
CType(Me.grpGeneral, System.ComponentModel.ISupportInitialize).BeginInit()
Me.grpGeneral.SuspendLayout()
CType(Me.txtFavDir.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'lstPaths
'
Me.lstPaths.Dock = System.Windows.Forms.DockStyle.Fill
Me.lstPaths.Location = New System.Drawing.Point(2, 23)
Me.lstPaths.Name = "lstPaths"
Me.lstPaths.Size = New System.Drawing.Size(430, 284)
Me.lstPaths.TabIndex = 0
'
'rcMain
'
Me.rcMain.DrawGroupCaptions = DevExpress.Utils.DefaultBoolean.[False]
Me.rcMain.ExpandCollapseItem.Id = 0
Me.rcMain.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.rcMain.ExpandCollapseItem, Me.rcMain.SearchEditItem, Me.btnSave, Me.btnPathAdd, Me.btnPathDelete})
Me.rcMain.Location = New System.Drawing.Point(0, 0)
Me.rcMain.MaxItemId = 4
Me.rcMain.Name = "rcMain"
Me.rcMain.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.rpGeneral})
Me.rcMain.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
Me.rcMain.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.ShowOnMultiplePages
Me.rcMain.Size = New System.Drawing.Size(458, 83)
Me.rcMain.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Hidden
'
'btnSave
'
Me.btnSave.Caption = "Änderungen speichern"
Me.btnSave.Id = 1
Me.btnSave.ImageOptions.SvgImage = CType(resources.GetObject("btnSave.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.btnSave.Name = "btnSave"
'
'btnPathAdd
'
Me.btnPathAdd.Caption = "Pfad hinzufügen"
Me.btnPathAdd.Id = 2
Me.btnPathAdd.Name = "btnPathAdd"
'
'btnPathDelete
'
Me.btnPathDelete.Caption = "Pfad löschen"
Me.btnPathDelete.Id = 3
Me.btnPathDelete.Name = "btnPathDelete"
'
'rpGeneral
'
Me.rpGeneral.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.rpgGeneral, Me.rpgPaths})
Me.rpGeneral.Name = "rpGeneral"
Me.rpGeneral.Text = "Allgemein"
'
'rpgGeneral
'
Me.rpgGeneral.ItemLinks.Add(Me.btnSave)
Me.rpgGeneral.Name = "rpgGeneral"
Me.rpgGeneral.Text = "Allgemein"
'
'rpgPaths
'
Me.rpgPaths.ItemLinks.Add(Me.btnPathAdd)
Me.rpgPaths.ItemLinks.Add(Me.btnPathDelete)
Me.rpgPaths.Name = "rpgPaths"
Me.rpgPaths.Text = "Pfade"
'
'grpPaths
'
Me.grpPaths.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.grpPaths.Controls.Add(Me.lstPaths)
Me.grpPaths.Location = New System.Drawing.Point(12, 153)
Me.grpPaths.Name = "grpPaths"
Me.grpPaths.Size = New System.Drawing.Size(434, 309)
Me.grpPaths.TabIndex = 2
Me.grpPaths.Text = "Pfade"
'
'FBD
'
Me.FBD.RootFolder = System.Environment.SpecialFolder.MyComputer
Me.FBD.ShowNewFolderButton = False
'
'grpGeneral
'
Me.grpGeneral.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.grpGeneral.Controls.Add(Me.btnFavDir)
Me.grpGeneral.Controls.Add(Me.lblFavDir)
Me.grpGeneral.Controls.Add(Me.txtFavDir)
Me.grpGeneral.Location = New System.Drawing.Point(12, 89)
Me.grpGeneral.Name = "grpGeneral"
Me.grpGeneral.Size = New System.Drawing.Size(434, 58)
Me.grpGeneral.TabIndex = 3
Me.grpGeneral.Text = "Allgemein"
'
'btnFavDir
'
Me.btnFavDir.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.btnFavDir.Location = New System.Drawing.Point(334, 26)
Me.btnFavDir.Name = "btnFavDir"
Me.btnFavDir.Size = New System.Drawing.Size(95, 23)
Me.btnFavDir.TabIndex = 2
Me.btnFavDir.Text = "Durchsuchen..."
'
'lblFavDir
'
Me.lblFavDir.Location = New System.Drawing.Point(5, 31)
Me.lblFavDir.Name = "lblFavDir"
Me.lblFavDir.Size = New System.Drawing.Size(99, 13)
Me.lblFavDir.TabIndex = 1
Me.lblFavDir.Text = "Favoritenverzeichnis"
'
'txtFavDir
'
Me.txtFavDir.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.txtFavDir.Location = New System.Drawing.Point(127, 28)
Me.txtFavDir.MenuManager = Me.rcMain
Me.txtFavDir.Name = "txtFavDir"
Me.txtFavDir.Size = New System.Drawing.Size(201, 20)
Me.txtFavDir.TabIndex = 0
'
'frmSettings
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(458, 474)
Me.Controls.Add(Me.grpGeneral)
Me.Controls.Add(Me.grpPaths)
Me.Controls.Add(Me.rcMain)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "frmSettings"
Me.Text = "Einstellungen"
CType(Me.lstPaths, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.rcMain, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.grpPaths, System.ComponentModel.ISupportInitialize).EndInit()
Me.grpPaths.ResumeLayout(False)
CType(Me.grpGeneral, System.ComponentModel.ISupportInitialize).EndInit()
Me.grpGeneral.ResumeLayout(False)
Me.grpGeneral.PerformLayout()
CType(Me.txtFavDir.Properties, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents lstPaths As DevExpress.XtraEditors.ListBoxControl
Friend WithEvents rcMain As DevExpress.XtraBars.Ribbon.RibbonControl
Friend WithEvents rpGeneral As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents rpgGeneral As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents grpPaths As DevExpress.XtraEditors.GroupControl
Friend WithEvents btnSave As DevExpress.XtraBars.BarButtonItem
Friend WithEvents btnPathAdd As DevExpress.XtraBars.BarButtonItem
Friend WithEvents btnPathDelete As DevExpress.XtraBars.BarButtonItem
Friend WithEvents rpgPaths As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents FBD As FolderBrowserDialog
Friend WithEvents grpGeneral As DevExpress.XtraEditors.GroupControl
Friend WithEvents lblFavDir As DevExpress.XtraEditors.LabelControl
Friend WithEvents txtFavDir As DevExpress.XtraEditors.TextEdit
Friend WithEvents btnFavDir As DevExpress.XtraEditors.SimpleButton
End Class

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,101 @@
Imports System.Data.SQLite
Public Class frmSettings
Dim ToAdd As New List(Of String)
Dim ToDelete As New List(Of String)
Private Sub frmSettings_Load(sender As Object, e As EventArgs) Handles MyBase.Load
LoadSettings()
End Sub
Private Sub LoadSettings()
txtFavDir.Text = My.Settings.FavDir
fillPaths()
End Sub
Private Async Sub fillPaths()
Dim con = DB.getConnection
Dim cmd As New SqliteCommand(Nothing, con)
Dim reader As SQLiteDataReader
cmd.CommandText = "SELECT p_path FROM t_paths ORDER BY p_path"
Await con.OpenAsync()
reader = cmd.ExecuteReader
lstPaths.Items.Clear()
Do While Await reader.ReadAsync
lstPaths.Items.Add(CStr(reader("p_path")))
Loop
reader.Close()
con.Close()
End Sub
Private Sub btnPathAdd_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnPathAdd.ItemClick
If FBD.ShowDialog = DialogResult.OK Then
Dim pfad As String = FBD.SelectedPath
ToAdd.Add(pfad)
lstPaths.Items.Add(pfad)
End If
End Sub
Private Sub btnSave_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnSave.ItemClick
SaveSettings()
Me.DialogResult = DialogResult.OK
End Sub
Private Sub SaveSettings()
'Allgemein speichern
My.Settings.FavDir = txtFavDir.Text
My.Settings.Save()
'Pfade speichern
Dim con = DB.getConnection
Dim cmd As New SqliteCommand(Nothing, con)
cmd.Parameters.Add("@path", DbType.String)
con.OpenAsync()
cmd.CommandText = "INSERT INTO t_paths (p_path) VALUES (@path)"
For Each pfad As String In ToAdd
cmd.Parameters("@path").Value = pfad
cmd.ExecuteNonQuery()
Next
ToAdd.Clear()
cmd.CommandText = "DELETE FROM t_paths WHERE p_path = @path"
For Each pfad As String In ToDelete
cmd.Parameters("@path").Value = pfad
cmd.ExecuteNonQuery()
Next
ToDelete.Clear()
con.Close()
End Sub
Private Sub btnPathDelete_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnPathDelete.ItemClick
If lstPaths.SelectedItem IsNot Nothing Then
ToDelete.Add(CStr(lstPaths.SelectedItem))
lstPaths.Items.Remove(CStr(lstPaths.SelectedItem))
End If
End Sub
Private Sub frmSettings_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
If (ToAdd.Count + ToDelete.Count) > 0 Then
Dim ds = MessageBox.Show("Möchten Sie die Änderungen speichern?", Me.Text, MessageBoxButtons.YesNo)
If ds = DialogResult.Yes Then
SaveSettings()
Me.DialogResult = DialogResult.OK
ElseIf ds <> DialogResult.No Then
e.Cancel = True
End If
End If
End Sub
Private Sub btnUSDX_Click(sender As Object, e As EventArgs) Handles btnFavDir.Click
If FBD.ShowDialog = DialogResult.OK Then
txtFavDir.Text = FBD.SelectedPath
End If
End Sub
End Class

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.4.4" targetFramework="net472" />
<package id="Newtonsoft.Json" version="13.0.2" targetFramework="net48" />
<package id="Stub.System.Data.SQLite.Core.NetFramework" version="1.0.117.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Data.SQLite" version="1.0.117.0" targetFramework="net472" />
<package id="System.Data.SQLite.Core" version="1.0.117.0" targetFramework="net472" />
<package id="System.Data.SQLite.EF6" version="1.0.117.0" targetFramework="net472" />
<package id="System.Data.SQLite.Linq" version="1.0.117.0" targetFramework="net472" />
<package id="System.Memory" version="4.5.5" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" />
</packages>

View File

@ -0,0 +1,238 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Public Class repFavoritesList
Inherits DevExpress.XtraReports.UI.XtraReport
'XtraReport overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Designer
'It can be modified using the Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.TopMargin = New DevExpress.XtraReports.UI.TopMarginBand()
Me.BottomMargin = New DevExpress.XtraReports.UI.BottomMarginBand()
Me.Detail = New DevExpress.XtraReports.UI.DetailBand()
Me.XrTable1 = New DevExpress.XtraReports.UI.XRTable()
Me.XrTableRow1 = New DevExpress.XtraReports.UI.XRTableRow()
Me.XrTableCell1 = New DevExpress.XtraReports.UI.XRTableCell()
Me.XrTableCell2 = New DevExpress.XtraReports.UI.XRTableCell()
Me.XrTableCell3 = New DevExpress.XtraReports.UI.XRTableCell()
Me.XrTable2 = New DevExpress.XtraReports.UI.XRTable()
Me.XrTableRow2 = New DevExpress.XtraReports.UI.XRTableRow()
Me.XrTableCell4 = New DevExpress.XtraReports.UI.XRTableCell()
Me.XrTableCell5 = New DevExpress.XtraReports.UI.XRTableCell()
Me.XrTableCell6 = New DevExpress.XtraReports.UI.XRTableCell()
Me.PageHeader = New DevExpress.XtraReports.UI.PageHeaderBand()
Me.ObjectDataSource1 = New DevExpress.DataAccess.ObjectBinding.ObjectDataSource(Me.components)
Me.XrLabel1 = New DevExpress.XtraReports.UI.XRLabel()
Me.PageFooter = New DevExpress.XtraReports.UI.PageFooterBand()
Me.XrPageInfo1 = New DevExpress.XtraReports.UI.XRPageInfo()
CType(Me.XrTable1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.XrTable2, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ObjectDataSource1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me, System.ComponentModel.ISupportInitialize).BeginInit()
'
'TopMargin
'
Me.TopMargin.Dpi = 254.0!
Me.TopMargin.HeightF = 120.0!
Me.TopMargin.Name = "TopMargin"
'
'BottomMargin
'
Me.BottomMargin.Dpi = 254.0!
Me.BottomMargin.HeightF = 120.0!
Me.BottomMargin.Name = "BottomMargin"
'
'Detail
'
Me.Detail.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrTable1})
Me.Detail.Dpi = 254.0!
Me.Detail.HeightF = 63.5!
Me.Detail.Name = "Detail"
'
'XrTable1
'
Me.XrTable1.Dpi = 254.0!
Me.XrTable1.LocationFloat = New DevExpress.Utils.PointFloat(0!, 0!)
Me.XrTable1.Name = "XrTable1"
Me.XrTable1.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 96.0!)
Me.XrTable1.Rows.AddRange(New DevExpress.XtraReports.UI.XRTableRow() {Me.XrTableRow1})
Me.XrTable1.SizeF = New System.Drawing.SizeF(1592.0!, 63.5!)
'
'XrTableRow1
'
Me.XrTableRow1.Cells.AddRange(New DevExpress.XtraReports.UI.XRTableCell() {Me.XrTableCell1, Me.XrTableCell2, Me.XrTableCell3})
Me.XrTableRow1.Dpi = 254.0!
Me.XrTableRow1.Name = "XrTableRow1"
Me.XrTableRow1.Weight = 1.0R
'
'XrTableCell1
'
Me.XrTableCell1.Dpi = 254.0!
Me.XrTableCell1.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Artist]")})
Me.XrTableCell1.Multiline = True
Me.XrTableCell1.Name = "XrTableCell1"
Me.XrTableCell1.Text = "XrTableCell1"
Me.XrTableCell1.Weight = 1.0R
'
'XrTableCell2
'
Me.XrTableCell2.Dpi = 254.0!
Me.XrTableCell2.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Title]")})
Me.XrTableCell2.Multiline = True
Me.XrTableCell2.Name = "XrTableCell2"
Me.XrTableCell2.Text = "XrTableCell2"
Me.XrTableCell2.Weight = 1.4337711046688522R
'
'XrTableCell3
'
Me.XrTableCell3.CanShrink = True
Me.XrTableCell3.Dpi = 254.0!
Me.XrTableCell3.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Language]")})
Me.XrTableCell3.Name = "XrTableCell3"
Me.XrTableCell3.Text = "XrTableCell3"
Me.XrTableCell3.Weight = 0.56622889533114784R
'
'XrTable2
'
Me.XrTable2.AnchorVertical = DevExpress.XtraReports.UI.VerticalAnchorStyles.Bottom
Me.XrTable2.Dpi = 254.0!
Me.XrTable2.Font = New System.Drawing.Font("Arial", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrTable2.LocationFloat = New DevExpress.Utils.PointFloat(0!, 141.0!)
Me.XrTable2.Name = "XrTable2"
Me.XrTable2.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 96.0!)
Me.XrTable2.Rows.AddRange(New DevExpress.XtraReports.UI.XRTableRow() {Me.XrTableRow2})
Me.XrTable2.SizeF = New System.Drawing.SizeF(1592.0!, 63.5!)
Me.XrTable2.StylePriority.UseFont = False
'
'XrTableRow2
'
Me.XrTableRow2.Cells.AddRange(New DevExpress.XtraReports.UI.XRTableCell() {Me.XrTableCell4, Me.XrTableCell5, Me.XrTableCell6})
Me.XrTableRow2.Dpi = 254.0!
Me.XrTableRow2.Name = "XrTableRow2"
Me.XrTableRow2.Weight = 1.0R
'
'XrTableCell4
'
Me.XrTableCell4.CanGrow = False
Me.XrTableCell4.Dpi = 254.0!
Me.XrTableCell4.Multiline = True
Me.XrTableCell4.Name = "XrTableCell4"
Me.XrTableCell4.Text = "Künstler"
Me.XrTableCell4.Weight = 1.0R
'
'XrTableCell5
'
Me.XrTableCell5.CanGrow = False
Me.XrTableCell5.Dpi = 254.0!
Me.XrTableCell5.Multiline = True
Me.XrTableCell5.Name = "XrTableCell5"
Me.XrTableCell5.Text = "Titel"
Me.XrTableCell5.Weight = 1.4337704145728645R
'
'XrTableCell6
'
Me.XrTableCell6.CanGrow = False
Me.XrTableCell6.Dpi = 254.0!
Me.XrTableCell6.Multiline = True
Me.XrTableCell6.Name = "XrTableCell6"
Me.XrTableCell6.Text = "Sprache"
Me.XrTableCell6.Weight = 0.56622958542713564R
'
'PageHeader
'
Me.PageHeader.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrLabel1, Me.XrTable2})
Me.PageHeader.Dpi = 254.0!
Me.PageHeader.HeightF = 204.5!
Me.PageHeader.Name = "PageHeader"
'
'ObjectDataSource1
'
Me.ObjectDataSource1.DataMember = "Songs"
Me.ObjectDataSource1.DataSource = GetType(UltraStarSongPicker.frmMain)
Me.ObjectDataSource1.Name = "ObjectDataSource1"
'
'XrLabel1
'
Me.XrLabel1.Dpi = 254.0!
Me.XrLabel1.Font = New System.Drawing.Font("Arial", 24.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrLabel1.LocationFloat = New DevExpress.Utils.PointFloat(0!, 0!)
Me.XrLabel1.Multiline = True
Me.XrLabel1.Name = "XrLabel1"
Me.XrLabel1.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 96.0!)
Me.XrLabel1.SizeF = New System.Drawing.SizeF(1592.0!, 141.0!)
Me.XrLabel1.StylePriority.UseFont = False
Me.XrLabel1.Text = "Karaoke Songliste"
'
'PageFooter
'
Me.PageFooter.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrPageInfo1})
Me.PageFooter.Dpi = 254.0!
Me.PageFooter.HeightF = 58.42!
Me.PageFooter.Name = "PageFooter"
'
'XrPageInfo1
'
Me.XrPageInfo1.Dpi = 254.0!
Me.XrPageInfo1.Font = New System.Drawing.Font("Arial", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrPageInfo1.LocationFloat = New DevExpress.Utils.PointFloat(1338.0!, 0!)
Me.XrPageInfo1.Name = "XrPageInfo1"
Me.XrPageInfo1.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 96.0!)
Me.XrPageInfo1.SizeF = New System.Drawing.SizeF(254.0!, 58.42!)
Me.XrPageInfo1.StylePriority.UseFont = False
Me.XrPageInfo1.StylePriority.UseTextAlignment = False
Me.XrPageInfo1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.BottomRight
Me.XrPageInfo1.TextFormatString = "Seite {0}/{1}"
'
'repFavoritesList
'
Me.Bands.AddRange(New DevExpress.XtraReports.UI.Band() {Me.TopMargin, Me.BottomMargin, Me.Detail, Me.PageHeader, Me.PageFooter})
Me.ComponentStorage.AddRange(New System.ComponentModel.IComponent() {Me.ObjectDataSource1})
Me.DataSource = Me.ObjectDataSource1
Me.Dpi = 254.0!
Me.Font = New System.Drawing.Font("Arial", 9.75!)
Me.Margins = New System.Drawing.Printing.Margins(254, 254, 120, 120)
Me.PageHeight = 2970
Me.PageWidth = 2100
Me.PaperKind = System.Drawing.Printing.PaperKind.A4
Me.ReportUnit = DevExpress.XtraReports.UI.ReportUnit.TenthsOfAMillimeter
Me.SnapGridSize = 25.0!
Me.Version = "22.1"
CType(Me.XrTable1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.XrTable2, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.ObjectDataSource1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me, System.ComponentModel.ISupportInitialize).EndInit()
End Sub
Friend WithEvents TopMargin As DevExpress.XtraReports.UI.TopMarginBand
Friend WithEvents BottomMargin As DevExpress.XtraReports.UI.BottomMarginBand
Friend WithEvents Detail As DevExpress.XtraReports.UI.DetailBand
Friend WithEvents ObjectDataSource1 As DevExpress.DataAccess.ObjectBinding.ObjectDataSource
Friend WithEvents XrTable1 As DevExpress.XtraReports.UI.XRTable
Friend WithEvents XrTableRow1 As DevExpress.XtraReports.UI.XRTableRow
Friend WithEvents XrTableCell1 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents XrTableCell2 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents XrTableCell3 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents XrTable2 As DevExpress.XtraReports.UI.XRTable
Friend WithEvents XrTableRow2 As DevExpress.XtraReports.UI.XRTableRow
Friend WithEvents XrTableCell4 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents XrTableCell5 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents XrTableCell6 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents PageHeader As DevExpress.XtraReports.UI.PageHeaderBand
Friend WithEvents XrLabel1 As DevExpress.XtraReports.UI.XRLabel
Friend WithEvents PageFooter As DevExpress.XtraReports.UI.PageFooterBand
Friend WithEvents XrPageInfo1 As DevExpress.XtraReports.UI.XRPageInfo
End Class

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,3 @@
Public Class repFavoritesList
End Class