====== QHiMDTransfer ====== ===== Premise ===== QHiMDTransfer is supposed to be a simple clone of the Mac OS X software "HiMD Music Transfer for Mac 2.0". The reason for using Qt is that it allows an application to be compiled and run on any platform supporting Qt, including Linux, *BSD, Solaris, Mac OS X and Windows. QHiMDTransfer uses the libraries libnetmd and libhimd to communicate with the walkman devices. The preferred tool for designing the graphical user interface and the program code of QHiMDTransfer is "Qt Creator 1.0" using "Qt 4.5.x" on Linux. Both can be obtained from [[http://qtsoftware.com]]. ===== Specifications ===== The application should have the following features: * Button bar at the top (toolbar) with all important functions (Copy to HiMD, Copy from HiMD, Delete from HiMD, Rename on HiMD, Format/Erase HiMD, Help) * regarding multi-threading with Qt, see c't magazin 15/2009, p. 186ff; [[http://www.heise.de/ct/09/15/links/186.shtml|h2rename]]; the application shown demonstrates multi-threading * Two list-views, the left representing a directory view on the computer, the right representing a view of the music tracks on the HiMD * File Browsing can be done with the FileBrowser object in Qt, see [[http://doc.trolltech.com/qq/qq09-file-browser.html]] or TreeView [[http://sector.ynet.sk/qt4-tutorial/dnd.html]], [[http://wiki.qtcentre.org/index.php?title=Extended_Dir_View_example]], [[http://www.greyc.ensicaen.fr/ensicaen/Docs/Qt4/itemviews-dirview.html]] (supplied with Qt, in the examples folder) * Thats the perfect treeview example: [[http://www.codeproject.com/KB/cross-platform/Qt4WithKDevelop.aspx?display=Print]] - allows to display Track, Artist and Group-Name; right column could display codec (ATRAC3, MP3, PCM); also compare treeview in Sonicstage: {{:sonicstage.jpg?500|}} * Support for reading MP3s in Unicode and converting them to the format in the HiMD container (probably some Windows codepage for FAT16) * display diskname and diskid in the status-bar * display each group in treewidget with different background colors (green/white/green/white/...) * renaming of groups and tracks * deleting of tracks/groups Advanced features: * Format HiMD * Possibility to move tracks within the list-view * Play back tracks from the HiMD over the computer speakers (dropped) * Use ffmpeg-codecs to convert uploaded tracks into other formats, e.g. ATRAC-SP into WAV ===== Screenshots ===== Linux/Fedora Rawhide screenshot as of 02.06.2010: {{:qhimdtransfer_06022010.png?500}} Linux/Ubuntu screenshot as of 02.02.2010: {{:qhimd-100202.png?500}} MacOS screenshot as of 21.10.2009: {{:qhimdtransfer_mac_102109.png?500}} Screenshot as of 19.10.2009, featuring progress bars and new layout with filebrowser. {{:qhimd_10192009.png?500}} Screenshot showing a recent version as of 07.10.2009 with status dialog after upload: {{:qhimdtransfer_uploadstatus.jpg?500}} Screenshot of updated GUI running on GNOME/X11/GNU/Linux: {{:qhimdtransfer6.jpg?500}} Screenshot of main application window, running on GNOME/X11/GNU/Linux: {{:qhimdtransfer.jpg?500}} Screenshot of track listing window, running on GNOME/X11/GNU/Linux: {{:qhimdtransfer3.jpg?500}} Screenshot of track listing window, running on Mac OS X Leopard: {{:qhimdtransfermac.png?500}} ===== Icons ===== The icons can easily be made with Inkscape [[http://www.inkscape.org]]. The following figures for the icons are suggested: * Connect: An USB-Plug * Download to MD: A MiniDisc with a green arrow directed downwards * Upload from MD: A MiniDisc with a red arrow directed upwards * Delete selected: A trashcan icon * Rename selected: An icon of some text being edited (a few characters with a cursor) * Format: A MiniDisc with a red "X" * Add group: a folder icon with a "+" * Help: A question mark * About: A copyright-sign * Quit: An exit-door Numinos has created an icon set for the buttons above: [[http://users.physik.fu-berlin.de/~glaubitz/linux-minidisc/program-icons.tar.gz]] ===== About Dialog ===== The about dialog could need some sprucing-up. Comparing to the one of pidgin, which has a good design standard, our dialog looks quite boring and somewhat inconsistent. Also, the information within it doesn't need to be translated. The new dialog should contain: * all people listed in [[Contributors]], sorted by their contribution * contact information (IRC channel, mail addresses, mailing list URL, website, ...) * version information of the current build from git The following screenshot compares the about dialog from QHiMDTransfer with the one from the current version of pidgin: {{:about-dialog.png?500|}} ===== libhimd ===== libhimd will provide functionality to communicate with HiMD devices by accessing the files stored on the minidisc, so it works without special priviledges and also on images. For MPEG audio tracks this approach has been proven to be enough, and it is suspected that is also works for LPCM tracks. The source code is structured into the following files * himd.c - Main library code providing functions on the top level himd object * encryption.c - All the stuff related to cryptography and key determination * mdstream.c - Functions to read/write audio streams in the atdataXX.hma file * trackindex.c - Functionality to encode/decode track metadata [[http://users.physik.fu-berlin.de/~glaubitz/linux-minidisc/libhimd_uploadtest.zip]] - An MP3 transfered onto a MiniDisc with SonicStage and then uploaded with libhimd again. ===== Links ===== * [[http://doc.trolltech.com/4.5/deployment-mac.html]] - Deploying Qt apps on MacOSX