64bit/Help: Difference between revisions

From kJams Wiki
Jump to navigation Jump to search
No edit summary
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Dock / Taskbar==
==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.
You will find a reference app, '''kJams 2''' (32bit). Run that and you'll see what we're trying to re-create in Qt. You'll also see Qt Creator, 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.


==General==
==General==
Line 7: Line 7:
After you have gotten preliminary database working, you'll want to turn on Music Stores. To do this, 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 the xml file between runs, and have that reflect when they next run). 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 (code already exists, must be checked and thoroughly tested). It is okay to lose song IDs if the user manually turns off stores, or throws out store xmls. 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.
After you have gotten preliminary database working, you'll want to turn on Music Stores. To do this, 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 the xml file between runs, and have that reflect when they next run). 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 (code already exists, must be checked and thoroughly tested). It is okay to lose song IDs if the user manually turns off stores, or throws out store xmls. 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.
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 (small)".  This is a small library (of real songs that you can play) 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==
==Qt Creator==
Line 15: Line 15:


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.
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.
When you run it will stop at the main() so you can poke around. Stepping into the constructor of CApp will enlighten you as to the startup process of the business logic of the application. feel free to remove this breakpoint.
==Qt Kit Updates==
==Qt Kit Updates==
When there is a Kit version update, follow these steps:
[[64bit/Help/Qt Update|separate page]] for that too
# run Qt Maintenance Tool, select "add or remove components"
# select the new kit version to add, DO NOT deselect the old kit version to uninstall
# complete the install
# Run Qt Creator
# go to Kit Settings
# rename the old kit to "64_old", rename the new kit to "64"
# Open the CFTest project and do these steps:
## copy the kit settings for debug / release from the old kit (right click->copy steps from another kit->64_old)
## build and run with new kit, ensure it works
## delete the auto-created build configs (debug, profile, release), and default deployment method
## delete the reference to the old kit settings under "Build & Run"
# open the kJams project, and do the same steps
# run Qt Maintenance Tool, select "add or remove components"
# now deselect (uncheck) the old kit, and uninstall it


==kJams Code Hints==
==Project Settings==
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.
[[64bit/Help/Qt Prefs|separate page]] for that


==Perforce==
==Perforce==
Line 54: Line 43:


==Mac==
==Mac==
DO NOT UPDATE to Catalina! The "Software Update" will urge you to update. RESIST!
Please DO do any security or Mojave-related updates.
There is no password to the user. If the OS asks for a password to do something, just press enter.
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).  
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.
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.
Qt compiler will say it requires at least version 10.14 of the platform SDK, but please ignore that, do not switch SDKs
==Parallels==
Before opening the VM for the first time, configure the "Hardware->CPU & Memory" to your computer. Use the maximum CPU & memory you can for your particular computer (stay in the green however)

Latest revision as of 22:10, 19 August 2020

Dock / Taskbar

You will find a reference app, kJams 2 (32bit). Run that and you'll see what we're trying to re-create in Qt. You'll also see Qt Creator, 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.

General

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, 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 the xml file between runs, and have that reflect when they next run). 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 (code already exists, must be checked and thoroughly tested). It is okay to lose song IDs if the user manually turns off stores, or throws out store xmls. 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 (small)". This is a small library (of real songs that you can play) 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.

When you run it will stop at the main() so you can poke around. Stepping into the constructor of CApp will enlighten you as to the startup process of the business logic of the application. feel free to remove this breakpoint.

Qt Kit Updates

separate page for that too

Project Settings

separate page for that

Perforce

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

If you need to update your p4 version, the command line client goes into /usr/local/bin

Windows

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.

Mac

DO NOT UPDATE to Catalina! The "Software Update" will urge you to update. RESIST!

Please DO do any security or Mojave-related updates.

There is no password to the user. If the OS asks for a password to do something, just press enter.

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.

Qt compiler will say it requires at least version 10.14 of the platform SDK, but please ignore that, do not switch SDKs

Parallels

Before opening the VM for the first time, configure the "Hardware->CPU & Memory" to your computer. Use the maximum CPU & memory you can for your particular computer (stay in the green however)