From kJams Wiki
Jump to: navigation, search

Dock / Taskbar

You will find a reference app, kJams Pro. Run that and you'll see what we're trying to re-create in Qt. Qt Creator, and Perforce (P4V), and the command line (terminal or cmd.exe). I've also included the Qt Maintanance Tool, just in case an important update comes out during the time you're working on the project. Also preinstalled is the TeamViewer app so we can do screen sharing in case i need to poke around on your VM or show you how to do something.


Do not run the reference app and the app you're building at the same time, as they access the same database, and you could cause corruption.

After you have gotten preliminary database working, you'll want to turn on Music Stores. To do this, run the reference app, then go to kJams->preferences->stores, and check the box above the three music stores, then quit and re-run the app. It will then ask to download the music stores. Note these may or may NOT be shown in the Library playlist. Even if they are, they should not be stored within the Library database, or if they are, then they should auto-purge if you run kJams and the corresponding music store's xml file is gone (ie: the user should be free to delete it between runs). Also, when a music store gets an update, it must be done in such a way that new meta data for an existing song updates the existing song, that no NEW song (with a new ID) is generated. It is okay to lose song IDs if the user manually does this, or if they turn off a music store. A song who's ID is in a music store that is turned off is expected to "just disappear" from all playlists. It's fine to require a restart of the app for this.

In the file system, in your user's Music folder, is the kJams folder. Inside that you'll see "kJams Library" which is a shortcut / alias (henceforth called "alias"). The existing alias points to "kJams Library (current)". This is a small library (of real songs that you can play in the reference app) to get you started with some data. Later when you're ready to test importing a very large library, delete this alias, and make a new alias from "kJams Library (monster)". Rename the alias to be only "kJams Library", then launch kJams, which should now pick up the monster library.

Qt Creator

When you open Qt Creator, you'll see 2 pre-installed "sessions":

First is "CFTest", the app does unit-tests for CoreFoundation (CFLite / CFNetwork). This is useful if you happen to need to work on CF for some reason (you probably won't, but if you're not completely familiar with CF, this will really help you understand what it is capable of). This comes with debug and release configurations.

Second is "kJams" itself. kJams can build three editions: Lite, Pro, and 2, in increasing order of "more features", ie: 2 has more features than Pro, which has more features than Lite. Each edition comes in debug and release configs. You'll be working on "2 debug". You should be able to immediately "press play" to run the app.


Open the file "kj_main.cpp" and look for "main(". Step through that, especially the construction of the CApp object, to see all the initialization that kJams does, including loading the existing (non-sql) database.


The Perforce application is already set up for you. I'll send you your user's password. You can just "break locks" when editing files, and later tell P4 to open them for edit using the command line. The commands for that are:

p4 diff -se "//depot/kJams/..." | p4 -x - edit;
p4 diff -se "//depot/CF/..." | p4 -x - edit;
p4 diff -se "//depot/CFTest/..." | p4 -x - edit;

If you edit something in one of those subtrees, you only need to issue the command for that one subtree. On the mac, you can just type "oemf" (open for edit modified files) and it will issue all three for you.

Never check in any ".pro.user" files, and be aware that you'll get messages like "must resolve #xx before submitting", which you can safely ignore.

Please coordinate with me before you to check in any .pri files


When the kJams reference app auto updates, the installer may be caught by your antivirus, you may have to turn off antivirus or white list the kJams installer.


In the Dock, the kJams app on the far right is the reference (32bit) app. The one just to its left is the app you're building (it can run but only shows a shell). On the left next to Finder is an app called PathFinder, which is a "power user's version of Finder", i find it useful for chmod'ing using a GUI.