diff --git a/src/core/core.vcxproj b/src/core/core.vcxproj
index 35e06f39d..c8dcc388a 100755
--- a/src/core/core.vcxproj
+++ b/src/core/core.vcxproj
@@ -126,6 +126,7 @@
+
diff --git a/src/core/core.vcxproj.filters b/src/core/core.vcxproj.filters
index 8900a9be6..c0b49bea5 100755
--- a/src/core/core.vcxproj.filters
+++ b/src/core/core.vcxproj.filters
@@ -264,5 +264,8 @@
src\library
+
+ src\library
+
\ No newline at end of file
diff --git a/src/core/library/LocalLibraryConstants.h b/src/core/library/LocalLibraryConstants.h
new file mode 100755
index 000000000..e7f2a844b
--- /dev/null
+++ b/src/core/library/LocalLibraryConstants.h
@@ -0,0 +1,156 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// License Agreement:
+//
+// The following are Copyright © 2008, Daniel Önnerby
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// * Neither the name of the author nor the names of other contributors may
+// be used to endorse or promote products derived from this software
+// without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#pragma once
+
+namespace musik { namespace core { namespace library { namespace constants {
+
+ namespace Track {
+ static const char* TABLE_NAME = "tracks";
+ static const char* ID = "id";
+ static const char* TRACK_NUM = "track";
+ static const char* BPM = "bpm";
+ static const char* DURATION = "duration";
+ static const char* FILESIZE = "filesize";
+ static const char* YEAR = "year";
+ static const char* DISPLAY_GENRE_ID = "visual_genre_id";
+ static const char* DISPLAY_ARTIST_ID = "visual_artist_id";
+ static const char* ALBUM_ID = "album_id";
+ static const char* RELATIVE_PATH_ID = "folder_id";
+ static const char* TITLE = "title";
+ static const char* FILENAME = "filename";
+ static const char* FILETIME = "filetime";
+ static const char* THUMBNAIL_ID = "thumbnail_id";
+ static const char* SORT_ORDER = "sort_order1";
+ static const char* PATH = "path"; /* not in DB; synthesized */
+ }
+
+ namespace Genres {
+ static const char* TABLE_NAME = "genres";
+ static const char* ID = "id";
+ static const char* NAME = "name";
+ static const char* AGGREGATED = "aggregated";
+ static const char* SORT_ORDER = "sort_order";
+ }
+
+ namespace TrackGenres {
+ static const char* TABLE_NAME = "track_genres";
+ static const char* ID = "id";
+ static const char* TRACK_ID = "track_id";
+ static const char* GENRE_ID = "genre_id";
+ }
+
+ namespace Artists {
+ static const char* TABLE_NAME = "artists";
+ static const char* ID = "id";
+ static const char* NAME = "name";
+ static const char* AGGREGATED = "aggregated";
+ static const char* SORT_ORDER = "sort_order";
+ }
+
+ namespace ArtistGenres {
+ static const char* TABLE_NAME = "artist_genres";
+ static const char* ID = "id";
+ static const char* TRACK_ID = "track_id";
+ static const char* GENRE_ID = "artist_id";
+ }
+
+ namespace Albums {
+ static const char* TABLE_NAME = "albums";
+ static const char* ID = "id";
+ static const char* NAME = "name";
+ static const char* THUMBNAIL_ID = "thumbnail_id";
+ static const char* SORT_ORDER = "sort_order";
+ }
+
+ namespace NormalizedKeys {
+ static const char* TABLE_NAME = "meta_keys";
+ static const char* ID = "id";
+ static const char* NAME = "name";
+ }
+
+ namespace NormalizedValues {
+ static const char* TABLE_NAME = "meta_values";
+ static const char* ID = "id";
+ static const char* KEY_ID = "meta_key_id";
+ static const char* SORT_ORDER = "sort_order";
+ static const char* CONTENT = "content";
+ }
+
+ namespace ExtendedTrackMetadata {
+ static const char* TABLE_NAME = "track_meta";
+ static const char* ID = "id";
+ static const char* TRACK_ID = "track_id";
+ static const char* VALUE_ID = "meta_value_id";
+ }
+
+ namespace Paths {
+ static const char* TABLE_NAME = "paths";
+ static const char* ID = "id";
+ static const char* PATH = "path";
+ }
+
+ namespace RelativePaths {
+ static const char* TABLE_NAME = "folders";
+ static const char* ID = "id";
+ static const char* NAME = "name";
+ static const char* RELATIVE_PATH = "relative_path";
+ static const char* PARENT_ID = "parent_id";
+ static const char* PATH_ID = "path_id";
+ }
+
+ namespace Thumbnails {
+ static const char* TABLE_NAME = "thumbnails";
+ static const char* ID = "id";
+ static const char* FILENAME = "filename";
+ static const char* FILESIZE = "filesize";
+ static const char* CHECKSUM = "checksum";
+ }
+
+ namespace Playlists {
+ static const char* TABLE_NAME = "playlists";
+ static const char* ID = "id";
+ static const char* NAME = "name";
+ }
+
+ namespace PlaylistTracks {
+ static const char* TABLE_NAME = "playlist_tracks";
+ static const char* TRACK_ID = "track_id";
+ static const char* PLAYLIST_ID = "playlist_id";
+ static const char* SORT_ORDER = "sort_order";
+ }
+
+} } } }
diff --git a/src/musikbox/musikbox.vcxproj.filters b/src/musikbox/musikbox.vcxproj.filters
index be7bd2c2a..2a2575eee 100755
--- a/src/musikbox/musikbox.vcxproj.filters
+++ b/src/musikbox/musikbox.vcxproj.filters
@@ -3,71 +3,41 @@
-
- curses
-
curses
- view
+ window
- view
+ window
- view
+ window
- view
-
-
- curses
-
-
- curses
+ window
- view
+ window
- view
+ window
curses
-
- curses
-
- view
+ window
- view
+ window
- view
-
-
- curses
-
-
- curses
-
-
- curses
-
-
- curses
+ window
- view
-
-
- curses
-
-
- curses
+ window
curses
@@ -81,38 +51,59 @@
query
+
+ curses\util
+
+
+ curses\util
+
+
+ curses\window
+
+
+ curses\window
+
+
+ curses\window
+
+
+ curses\window
+
+
+ curses\window
+
+
+ curses\window
+
+
+ curses\window
+
+
+ curses\window
+
-
- curses
-
curses
- view
+ window
- view
+ window
- view
+ window
- view
-
-
- curses
-
-
- curses
+ window
- view
+ window
- view
+ window
curses
@@ -120,41 +111,20 @@
curses
-
- curses
-
- view
+ window
curses
- view
+ window
- view
-
-
- curses
-
-
- curses
-
-
- curses
-
-
- curses
+ window
- view
-
-
- curses
-
-
- curses
+ window
curses
@@ -177,6 +147,36 @@
query
+
+ curses\util
+
+
+ curses\util
+
+
+ curses\window
+
+
+ curses\window
+
+
+ curses\window
+
+
+ curses\window
+
+
+ curses\window
+
+
+ curses\window
+
+
+ curses\window
+
+
+ curses\window
+
@@ -185,8 +185,14 @@
{8de1fc82-96fd-4871-a6b0-fed0d6b21aa1}
-
+
+ {c7d44e46-7435-49a2-a8fb-f304ad069a96}
+
+
{c1ada983-8f4e-4ac4-86be-fa6fdffec375}
+
+ {e225eaf8-808a-4550-96b6-d86e748bedab}
+
\ No newline at end of file