1. Classes
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Chord_Reader.NewClasses
{
class Playlist
{
public int PlaylistID { get; set; }
public string Title { get; set; }
public List<Song> Song { get; set; }
public string Username { get; set; }
public Playlist(int playlistID, string title,string username)
{
PlaylistID = playlistID;
Title = title;
Username = username;
Song = new List<Song>();
}
public Playlist()
{
Song = new List<Song>();
}
public void AddSong(Song song)
{
Song.Add(song);
}
public void MoveSongUp(int i)
{
if (i > 0)
{
Song s = Song[i];
Song[i] = Song[i - 1];
Song[i - 1] = s;
}
}
public void MoveSongDown(int i)
{
if (i > 0 && i < Song.Count)
{
Song s = Song[i];
Song[i] = Song[i + 1];
Song[i + 1] = s;
}
}
}
}
2. using Chord_Reader.NewClasses;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Chord_Reader.NewClasses
{
class Song
{
public int SongID { get; set; }
public string Title { get; set; }
public string Artist { get; set; }
public string Album { get; set; }
public string Genre { get; set; }
public string Text { get; set; }
public string Mode { get; set; }
public string KeyOf { get; set; }
public string Username { get; set; }
public int Trans { get; set; }
public Song(int songID, string title, string artist, string album, string genre, string text, string keyOf, string
mode, string username)
{
SongID = songID;
Title = title;
Artist = artist;
Album = album;
Genre = genre;
Text = text;
Mode = mode;
KeyOf = keyOf;
Username = username;
Trans = 0;
}
public void Transpose(bool a)
{
if (a == false)
{
Text = Text.Replace("*B*", "+A#+");
Text = Text.Replace("*A#*", "+A+");
Text = Text.Replace("*A*", "+G#+");
Text = Text.Replace("*G#*", "+G+");
Text = Text.Replace("*G*", "+F#+");
Text = Text.Replace("*F#*", "+F+");
Text = Text.Replace("*F*", "+E+");
Text = Text.Replace("*E*", "+D#+");
Text = Text.Replace("*D#*", "+D+");
Text = Text.Replace("*D*", "+C#+");
Text = Text.Replace("*C#*", "+C+");
Text = Text.Replace("*C*", "+B+");
Text = Text.Replace("+", "*");
KeyOf = KeyOf.Replace("*B*", "+A#+");
KeyOf = KeyOf.Replace("*A#*", "+A+");
KeyOf = KeyOf.Replace("*A*", "+G#+");
KeyOf = KeyOf.Replace("*G#*", "+G+");
KeyOf = KeyOf.Replace("*G*", "+F#+");
KeyOf = KeyOf.Replace("*F#*", "+F+");
KeyOf = KeyOf.Replace("*F*", "+E+");
KeyOf = KeyOf.Replace("*E*", "+D#+");
KeyOf = KeyOf.Replace("*D#*", "+D+");
KeyOf = KeyOf.Replace("*D*", "+C#+");
KeyOf = KeyOf.Replace("*C#*", "+C+");
KeyOf = KeyOf.Replace("*C*", "+B+");
KeyOf = KeyOf.Replace("*Bm*", "+A#m+");
KeyOf = KeyOf.Replace("*A#m*", "+Am+");
KeyOf = KeyOf.Replace("*Am*", "+G#m+");
KeyOf = KeyOf.Replace("*G#m*", "+Gm+");
KeyOf = KeyOf.Replace("*Gm*", "+F#m+");
KeyOf = KeyOf.Replace("*F#m*", "+Fm+");
KeyOf = KeyOf.Replace("*Fm*", "+Em+");
KeyOf = KeyOf.Replace("*Em*", "+D#m+");
KeyOf = KeyOf.Replace("*D#*", "+Dm+");
KeyOf = KeyOf.Replace("*Dm*", "+C#m+");
4. using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Chord_Reader.NewClasses
{
class User
{
public int UserID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Username { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public User(int userID, string firstName, string lastName, string username, string email, string password)
{
UserID = userID;
FirstName = firstName;
LastName = lastName;
Username = username;
Email = email;
Password = password;
}
}
}
5. MAIN FORM
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using System.Data.SqlClient;
using Chord_Reader.NewClasses;
using Chord_Reader.Properties;
namespace Chord_Reader
{
public partial class Main_form : OfficeForm
{
public Main_form()
{
InitializeComponent();
}
#region SQL Declare
SqlConnection con = new SqlConnection("Data Source=.SQLEXPRESS;
AttachDbFilename=C:ProgramDataLiveChordPlayerChordLivePlayer.mdf; Connect Timeout=30; User Instance=True; integrated
security=true");
SqlDataAdapter returnVal;
DataTable dt;
SqlCommand cmd;
string query;
#endregion
#region Object Declare
List<Song> songs = new List<Song>();
List<Song> plSongs = new List<Song>();
List<Playlist> playlists = new List<Playlist>();
User CurrentUser;
#endregion
#region LOAD
private void Main_form_Load(object sender, EventArgs e)
{
SQL("SELECT * FROM Songs");
if (dt.Rows.Count != 0)
{
foreach (DataRow d in dt.Rows)
{
songs.Add(new Song(Int32.Parse(d[0].ToString()), d[1].ToString(), d[2].ToString(), d[3].ToString(),
d[4].ToString(), d[5].ToString(), d[6].ToString(), d[7].ToString(), d[8].ToString()));
ReaderList_lbx.Items.Add(d[1].ToString());
}
}
SQL("SELECT * FROM PlSongs");
if (dt.Rows.Count != 0)
{
foreach (DataRow d in dt.Rows)
{
plSongs.Add(new Song(Int32.Parse(d[0].ToString()), d[1].ToString(), d[2].ToString(), d[3].ToString(),
d[4].ToString(), d[5].ToString(), d[6].ToString(), d[7].ToString(), d[8].ToString()));
}
}
SQL("SELECT * FROM Playlists");
if (dt.Rows.Count != 0)
{
foreach (DataRow d in dt.Rows)
{
playlists.Add(new Playlist(Int32.Parse(d[0].ToString()), d[1].ToString(), d[2].ToString()));
}
foreach (Playlist p in playlists)
{
SelectPlaylist_cbx.Items.Add(p.Title);
Playlist_lbx.Items.Add(p.Title);
SQL("SELECT songID FROM Songlists WHERE playlistID='" + p.PlaylistID.ToString() + "' ORDER BY
orderID");
if (dt.Rows.Count != 0)
8. Main_pnl.Visible = true;
foreach (Song s in songs)
{
if (ReaderList_lbx.SelectedItems.Count > 0)
{
if (s.Title == ReaderList_lbx.SelectedItems[0].Text)
{
ReaderText_tbx.Text = "";
List<string> list = new List<string>(s.Text.Split(new string[] { "rn" },
StringSplitOptions.RemoveEmptyEntries));
foreach(string str in list)
{
if (str.Contains("*"))
{
ReaderText_tbx.SelectionColor = Color.Maroon;
ReaderText_tbx.SelectionFont = new System.Drawing.Font("Arial Rounded MT Bold", 12);
}
else
{
ReaderText_tbx.SelectionColor = Color.Black;
}
ReaderText_tbx.AppendText(str.Replace("*", "") + "rn");
}
TransMinus_btn.Enabled = true;
TransPlus_btn.Enabled = true;
Trans_lbl.Enabled = true;
if (s.Trans > 0)
Trans_lbl.Text = "+" + s.Trans.ToString();
else
Trans_lbl.Text = s.Trans.ToString();
Title_lbl.Text = s.Title;
Album_lbl.Text = "Album: " + s.Album;
KeyOf_lbl.Text = s.KeyOf.Replace("*", "");
Artist_lbl.Text = s.Artist;
CreatedBy_lbl.Text = "Created by: " + s.Username;
}
}
}
}
private void AddLive_btn_Click(object sender, EventArgs e)
{
if (SelectPlaylist_cbx.Text != "")
{
foreach (Song s in songs)
{
foreach (Playlist p in playlists)
{
if (ReaderList_lbx.SelectedItems.Count > 0)
{
if (s.Title == ReaderList_lbx.SelectedItems[0].Text && p.Title == SelectPlaylist_cbx.Text)
{
if (string.Compare(p.Username, CurrentUser.Username) == -1)
{
SQL("INSERT INTO PlSongs(title, artist, album, genre, text, keyOf, mode, username)
VALUES('" + s.Title + "', '" + s.Artist + "', '" + s.Album + "', '" + s.Genre + "', '" + s.Text + "', '" + s.KeyOf + "',
'False', '" + CurrentUser.Username + "')");
SQL("SELECT * FROM Songlists WHERE songID=" + s.SongID.ToString() + " AND
playlistID='" + p.PlaylistID.ToString() + "'");
if (dt.Rows.Count != 0)
{
MessageBox.Show("Song is already in this playlist!");
}
else
{
SQL("SELECT songID FROM PlSongs WHERE title='" + s.Title + "' AND username='" +
CurrentUser.Username + "'");
p.AddSong(s);
int z = Int32.Parse(dt.Rows[0][0].ToString());
SQL("INSERT INTO Songlists(songID, playlistID, orderID) VALUES('" + z + "', '" +
p.PlaylistID + "', '" + p.Song.Count + "')");
MessageBox.Show("Song Added!");
}
}
else MessageBox.Show("You are not allowed to add song to another user's playlist!");
}
9. }
}
}
}
else MessageBox.Show("Select playlist to add song!");
}
private void Search_tbx_TextChanged(object sender, EventArgs e)
{
string value = Search_tbx.Text.ToLower();
ReaderList_lbx.Items.Clear();
foreach (Song s in songs)
{
ReaderList_lbx.Items.Add(s.Title);
}
foreach (ListViewItem it in ReaderList_lbx.Items)
{
if (it.Text.ToLower().StartsWith(value) == false)
{
it.Remove();
}
}
}
private void TransMinus_btn_Click(object sender, EventArgs e)
{
foreach (Song s in songs)
{
if (ReaderList_lbx.SelectedItems.Count > 0)
{
if (s.Title == ReaderList_lbx.SelectedItems[0].Text)
{
s.Transpose(false);
string temp = s.KeyOf;
KeyOf_lbl.Text = temp.Replace("*", "");
ReaderText_tbx.Text = "";
List<string> list = new List<string>(s.Text.Split(new string[] { "rn" },
StringSplitOptions.RemoveEmptyEntries));
foreach (string str in list)
{
if (str.Contains("*"))
{
ReaderText_tbx.SelectionColor = Color.Maroon;
ReaderText_tbx.SelectionFont = new System.Drawing.Font("Arial Rounded MT Bold", 12);
}
else
{
ReaderText_tbx.SelectionColor = Color.Black;
}
ReaderText_tbx.AppendText(str.Replace("*", "") + "rn");
}
if (s.Trans > 0)
Trans_lbl.Text = "+" + s.Trans.ToString();
else
Trans_lbl.Text = s.Trans.ToString();
}
}
}
}
private void TransPlus_btn_Click(object sender, EventArgs e)
{
foreach (Song s in songs)
{
if (ReaderList_lbx.SelectedItems.Count > 0)
{
if (s.Title == ReaderList_lbx.SelectedItems[0].Text)
{
s.Transpose(true);
string temp = s.KeyOf;
KeyOf_lbl.Text = temp.Replace("*", "");
ReaderText_tbx.Text = "";
List<string> list = new List<string>(s.Text.Split(new string[] { "rn" },
StringSplitOptions.RemoveEmptyEntries));
foreach (string str in list)
{
if (str.Contains("*"))
10. {
ReaderText_tbx.SelectionColor = Color.Maroon;
ReaderText_tbx.SelectionFont = new System.Drawing.Font("Arial Rounded MT Bold", 12);
}
else
{
ReaderText_tbx.SelectionColor = Color.Black;
}
ReaderText_tbx.AppendText(str.Replace("*", "") + "rn");
}
if (s.Trans > 0)
Trans_lbl.Text = "+" + s.Trans.ToString();
else
Trans_lbl.Text = s.Trans.ToString();
}
}
}
}
#endregion
#region LIVE PLAYER
private void NewPlaylist_btn_Click(object sender, EventArgs e)
{
if (PlaylistTitle_tbx.Text != "")
{
SQL("SELECT * FROM Playlists WHERE title='" + Title_tbx.Text + "'");
if (dt.Rows.Count != 0)
{
MessageBox.Show("Playlists already exists!");
}
else
{
SQL("INSERT INTO Playlists(title, username) VALUES('" + PlaylistTitle_tbx.Text + "', '" +
CurrentUser.Username + "')");
MessageBox.Show("Playlist Created!");
SQL("SELECT * FROM Playlists WHERE title='" + PlaylistTitle_tbx.Text + "'");
playlists.Add(new Playlist(Int32.Parse(dt.Rows[0][0].ToString()), dt.Rows[0][1].ToString(),
dt.Rows[0][2].ToString()));
int plNum = playlists.Count();
SelectPlaylist_cbx.Items.Add(playlists[plNum - 1].Title);
Playlist_lbx.Items.Add(playlists[plNum - 1].Title);
PlaylistTitle_tbx.Text = "";
}
}
else
{
MessageBox.Show("Fill all fields!");
}
}
private void Playlist_lbx_SelectedIndexChanged(object sender, EventArgs e)
{
if (Playlist_lbx.SelectedItems.Count > 0)
{
foreach (Playlist p in playlists)
{
if (p.Title == Playlist_lbx.SelectedItems[0].Text)
{
PlaylistSong_lbx.Enabled = true;
PlaylistSong_lbx.Clear();
PlaylistTitle_lbx.Text = p.Title;
foreach (Song s in p.Song)
{
PlaylistSong_lbx.Items.Add(s.Title);
}
}
}
}
}
private void SearchPlaylist_tbx_TextChanged(object sender, EventArgs e)
{
string value = SearchPlaylist_tbx.Text.ToLower();
Playlist_lbx.Items.Clear();
foreach (Playlist p in playlists)
{
Playlist_lbx.Items.Add(p.Title);
}
11. foreach (ListViewItem it in Playlist_lbx.Items)
{
if (it.Text.ToLower().StartsWith(value) == false)
{
it.Remove();
}
}
}
private void Play_btn_Click(object sender, EventArgs e)
{
if (Playlist_lbx.SelectedItems.Count > 0)
{
foreach (Playlist p in playlists)
{
if (p.Title == Playlist_lbx.SelectedItems[0].Text)
{
Live f = new Live(p.PlaylistID);
f.WindowState = FormWindowState.Maximized;
f.ShowDialog();
}
}
}
else
MessageBox.Show("Chose Playlist you want to play!");
}
#endregion
private void SQL(string a)
{
con.Open();
query = a;
cmd = new SqlCommand(query, con);
returnVal = new SqlDataAdapter(query, con);
dt = new DataTable();
returnVal.Fill(dt);
con.Close();
}
}
}
12. Live Form
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using System.Data.SqlClient;
using Chord_Reader.NewClasses;
using Chord_Reader.Properties;
namespace Chord_Reader
{
public partial class Live : OfficeForm
{
int id;
public Live(int ID)
{
InitializeComponent();
id = ID;
}
#region Object Declare
Playlist CurrPlaylist;
List<Song> songs = new List<Song>();
int x = 0;
#endregion
#region SQL Declare
SqlConnection con = new SqlConnection("Data Source=.SQLEXPRESS;
AttachDbFilename=C:ProgramDataLiveChordPlayerChordLivePlayer.mdf; Connect Timeout=30; User Instance=True; integrated
security=true");
SqlDataAdapter returnVal;
DataTable dt;
SqlCommand cmd;
string query;
#endregion
private void Live_Load(object sender, EventArgs e)
{
SQL("SELECT * FROM PlSongs");
if (dt.Rows.Count != 0)
{
foreach (DataRow d in dt.Rows)
{
songs.Add(new Song(Int32.Parse(d[0].ToString()), d[1].ToString(), d[2].ToString(), d[3].ToString(),
d[4].ToString(), d[5].ToString(), d[6].ToString(), d[7].ToString(), d[8].ToString()));
}
}
SQL("SELECT * FROM Playlists WHERE playlistID='" + id + "'");
if (dt.Rows.Count != 0)
{
foreach (DataRow d in dt.Rows)
{
CurrPlaylist = new Playlist(Int32.Parse(d[0].ToString()), d[1].ToString(), d[2].ToString());
}
SQL("SELECT songID FROM Songlists WHERE playlistID='" + CurrPlaylist.PlaylistID.ToString() + "' ORDER BY
orderID");
if (dt.Rows.Count != 0)
{
foreach (DataRow d in dt.Rows)
{
foreach (Song s in songs)
{
if (s.SongID == Int32.Parse(d[0].ToString()))
{
CurrPlaylist.AddSong(s);
}
}
}
}
}