diff -Nru cdcat-1.01b/Authors cdcat-1.2/Authors --- cdcat-1.01b/Authors 2005-11-05 14:56:22.000000000 +0000 +++ cdcat-1.2/Authors 2010-11-24 08:11:08.000000000 +0000 @@ -20,8 +20,6 @@ cz Czech Vlada vladovi@atlas.cz pl Polish Techno techno@punkt.pl it Italian Dario Cavallaro fornito@blue999.ath.cx -fr French Guilhem Panaget guilhem.panaget@free.fr -sr Serbian Marko Djordjevic marko.homoludens@gmail.com And many people who send me translations and patches! diff -Nru cdcat-1.01b/ChangeLog cdcat-1.2/ChangeLog --- cdcat-1.01b/ChangeLog 2005-11-05 14:47:29.000000000 +0000 +++ cdcat-1.2/ChangeLog 2011-03-08 08:04:16.000000000 +0000 @@ -1,225 +1,191 @@ +08. Mar 2011 Christoph Thielecke + - version changed to 1.2 -Release 1.02b -~~~~~~~~~~~~~~~~~~~ - - Serbian translation - -Release 1.01 -~~~~~~~~~~~~~~~~~~~ - - Apply a patch on tparser.cpp (by Techno) which correct the detected time of avi. - - Eliminate a seg.fault when click on an empty result after search - - Read System & Hidden files too. (Apply a patch from Eduard Bloch) - -Release 1.0 -~~~~~~~~~~~~~~~~~~~ - - Italian translation - - Fixed working of import dialog "Create New Database" option. - - Fixed a seg fault possibility around the import dialog. - (when choose cancel at the database creating) - - Make the avi parser more paranaid (fix seg.fault. with some broken avi) - - Added include file to fix compiling on MacOS - -Release 0.99c (beta) -~~~~~~~~~~~~~~~~~~~ - - French translation - -Release 0.99b (beta) -~~~~~~~~~~~~~~~~~~~ - - Indonesian translation - - Fix getMediaFileNode,getDirectoryNode bug - -Release 0.99 (beta) -~~~~~~~~~~~~~~~~~~~ - - Keep the sorting state after directory change - - Fix CD/DVD Volume name read problem under linux (Again...) - /Some occasion the name was not read/ - - Portugal translation - -Release 0.98 (beta) -~~~~~~~~~~~~~~~~~~~ - - Now The seraching is working on the media and media comments too. - (When I started the cdcat decided not to search in media - and media's comment becouse they are at the top level - and can see without searching, but since I store complete film DVDs - as media I realized it is necessary...) - - Possibility to change color theme of the comment area. - - Some special pop-up menu assistance to fill borrow dialog. - You don't have to type the borrower name again if the table contain it already. - - Catalog link node. You can make a special node which point to a catalog, - and if you hit enter on it the pointed database automatically load. - Usefull to make a "start database" - WARNING: DATABASE WITH LINK IS NOT FULLY PLATFORM INDEPENTENT ! - (reason the hcf's path. Tipp: use relative directory names ) - - If you are top level (browse media and calatalog links instead files and directories) - the Size column shows the media serial number. You can sorting by media number this way. - - New WhereIsIt XML import possibility - - New date format - - Better HTML export style. (Generate smaller file) - - Fix the history list: not appended same files - - Now the keyboard shortcuts are shown in the upper menu. - (Changed the style of handling the keys too) - - Autosave possibility (see the config panel) - - Changed some icons... - - Fix a potentially seg.fault in mp3-tag-v2 reader - - Fix devicename reading from fstab - - Fix some other little bug - -Release 0.97 (beta) -~~~~~~~~~~~~~~~~~~~ - - You can maintain your media borrowing informations. - Now cdcat can memorize the name of borrowers and show - a red X at the top-right corner of the comment window - if the media is borrowed actually. - The borrowing informations can be set from the upper menu - and pop-up menu too - - DVD & CD detection on Linux systems. (Apply a patch from Eduard Bloch) - - Accept a command line parameter as starting database - - Now the datafile stores a version info. - + The cdcat warn you if you open unknown (newer) datafile version. - - Made some english language fix. (and some new bug... ;-) ) - - Now you can query the size of the full catalog witch clicking "node size" on - the catalog name in directory tree browser. - - Cdcat can read avi technical information with a plugin written by Techno - -Release 0.96 (beta) -~~~~~~~~~~~~~~~~~~~ - - Cdcat can read the mp3 bitrate, freq, time and stereo type as comment - (It can be disabled) - - Read mp3-tag version 2! - - You can configure which version of TAG is the default - - gtktalog XML import. - - Fix setPointSize, endless loop crash. - - Shows the icons of dialogs - - Fixing CSV export style. (It's not the best, but better :-) ) - - More scaleable html export - - Fixed import dialog's layout problem - - The add-dialog's Ok button got the initial focus. - - Updated hungarian translation - - Updated spanish translation - - Updated german translation - - Updated czech translation - -Release 0.95 (beta) -~~~~~~~~~~~~~~~~~~~ - - Changed the icons of export/import - - Some language fix - - Updated German Translation - -Release 0.94 (beta) -~~~~~~~~~~~~~~~~~~ - - Added possibility to store content of the specified files - according to wildcards (eg: *.nfo or *.diz ) - up to a size limit you want. (max 128 kByte) - - You can search in the file content - - You can save the file content - - Now you can configure the readable items (tag,content) - from the Media addition dialog too - - Added sorting option of the file browser panel. - - The directory browser now follow the file browser - - Added possibility to edit comment from the popup menu - - The comment edit button is enabled only if you can edit a comment - - Fixed parent element on the comment window (in case ..) - - Fixed some element focus (..) bug - - Removed some memory lack - - Fixed the history save crash - - Updated CZ translation - - On the exit event the program do not exit if you would like to save your - database but you cound't. (to be safer :)) - - Added possibility to Seach in the current directory by pressing CTRL+S or ALT+S - -Release 0.93 (beta) -~~~~~~~~~~~~~~~~~~ - - Try do not crash if the xml file is bad. - And write some info about the error. - - The mouse cursor changing on the comment area when it's possible to scroll. - - Make the program icon under Win32 - - Using of own font size can now be disabled - - UI fixes: search dialog - - Config load improved - - History added - - History size added - - Storing window size and position - - German Translation updated - - New info dialog - - Win32: Language selection in config dialog - /scans the existing translation in ".\lang" / - - Now you can move the progress-window by the mouse. - - Added pop up menus. - - Fix the serial number 99 limit. - - Save the options of find dialog - - Added media renumbering option - - The parts of main-window are now resizeable, and save the positions to - the config file. - -Release 0.92 (beta) -~~~~~~~~~~~~~~~~~~ - - The add dialog read the CD VOLUME NAME as media name if the type == CD and - the selected directory in the dirlist is match with the configed cdrom directory. - - ! Changed the place of translation files on linux - The new place is: /usr/local/share/cdcat/translations/ - - Fix focus problem in the middle box of main window. - - Fix in import function - - Fix double new dialog during import - - Fix Crissi's email address :) - - Now the mount/eject function can be used under all version of QT - - The mount/eject now work only if the scannable directory - is equal to the cdrompath directory (which can be set in configdialog) - - Improve waiting dialog visibility. - Now the hearth is really drum /don't flicker/ if the cdcat is alive ;-) - - Changed cdcat.pro - - Translation fixes. - - Write a TRANSLATORS_README file. - - Fix find-result focus problem. - - Spanish translation (by Jorge) - - Czech translation (by Vlada) - -Release 0.91 (beta) -~~~~~~~~~~~~~~~~~~ - - - CSV Import possibility /e.g: from gtktalog / ( by Crissi ) - - Doesn't fix the font type anymore, you can select the pint size. - - Make many dialog resizeable - - The node size option now more informative - - Do automount & eject if you enable it in config/ only Linux and Qt.V.>=3.X.X / - ( by Crissi ) - - You can specify the path of cdrom so if you'd like to - scan a CD | DVD the adddialog automatically select the directory. - ( by Crissi ) - - German translation ( by Crissi ) - - Some fixes around the size of text labels - - Gui fixes in commentwidget - +07. Mar 2011 Christoph Thielecke + - speedup parsing a little bit -Release 0.9 (beta) -~~~~~~~~~~~~~~~~~~ - - You can scoll the contents of the comment window - (The yellow one right side) - with the mouse. Yust press the mouse button and drag the text. - - Do autoscroll in the middle box if the current item doesn't visible. - - The "hearth" doesn't take controll over the windows system, - and don't stays on top. (was a bit flustrating ? ;-) ) - - Placed the rnx_nolang.ts file, to easy begin the translation to any language. - - The project has own homepage (http://cdcat.sourceforge.net) Thanks for the sf! - Updated it in the help... - -Release 0.8 (beta) -~~~~~~~~~~~~~~~~~~ - - I make some help... - - Make the code nicer ;-) - - Gui text fixes. - - Translation fixes. - -Release 0.7 (beta) -~~~~~~~~~~~~~~~~~~ - - - Hungarian translation - - Added option of saving in nicer XML format - (you can disable it in the config dialog) - - Added node size option - - Some crash fix. - - If the file is symlink write it to the comment - - Added media sorting option - -Release 0.6 (beta) -~~~~~~~~~~~~~~~~~~ - First release +06. Mar 2011 Christoph Thielecke + - import report generated advanced disk dialog fixed if file type was not given + +05. Mar 2011 Christoph Thielecke + - restore normal cursor on save new created catalog fixed + - empty media name if auto mount is disabled fixed + +23. Feb 2011 Christoph Thielecke + - scan cdrom path if not automount fixed + +21. Feb 2011 Christoph Thielecke + - context menu option for changing media type added + - save as now adds history item + +10. Feb 2011 Christoph Thielecke + - unsharp search option in find dialog added + +05. Feb 2011 Christoph Thielecke + - crash caused divide by zero fixed + +04. Feb 2011 Christoph Thielecke + - advanced disk catalog import info added + - csv import added (WhereIsIt, see README_IMPORT for details) + - jump to selected item in find dialog fixed + - dont open export dialog if no catalog is open + - xml export added + +03. Feb 2011 Christoph Thielecke + - reading utfs encoding fixed + - possibility for cancel searching added + - possibility for cancel openening catalog added + - made extra colum for size at result listview at search dialog + - sizes of busy dialog adjusted + - file archivist catalog import added (thanks to martin brunner) + - csv import added (Advanced Disk Catalog) + - displaying units fixed + +02. Feb 2011 Christoph Thielecke + - qmake project file order changed (workaround for qmake bug) + - development/release information in info dialog + - unit translation fixes + - use better description on search button at find dialog + - initial defaults for search options (start date, end date, min size, max size) set to disabled + - initial defaults for search options (min size type, max size type) set to MiB + - initial defaults for search options (min size, max size) set to 1, 10 + - set cursor to busy cursor at save, saveas, open and add actions + - process events if nessary at open catalog + - workaround for displaying rubberband again + - show edit category menu entry in context menu + - display node path in comment/category edit + - show category button hidden + - to_dcutf8 now uses QString + - use simple search by default + +01. Feb 2011 Christoph Thielecke + - csv import added (Advanced File Organizer) + +31. Jan 2011 Christoph Thielecke + - csv import added (VisualCD) + - file filter at import dialog fixed + - csv import added (VVV (Virtual Volumes View)) + +30. Jan 2011 Christoph Thielecke + - remember start/end date in find dialog + - double deletion fixed + - support for category (catalog, media, files/dirs) added + - comment at csv import fixed + - gtktalog xml import fixed + +29. Jan 2011 Christoph Thielecke + - remember last search pattern added + - searching min size/max size added + +28. Jan 2011 Christoph Thielecke + - option for displaying progressed file at scanning directory tree added + - remember last media type in adddialog + - ok/cancel button moved to buttom in config dialog + - busydialog auto resize to optimal size made + - displaying wait text at scanning added + +27. Jan 2011 Christoph Thielecke + - progressbar at busydialog on loading/parsing file added + - display more informative text in busydialog on loading/parsing file + - made unit in node sizedialog translateable + - q3textstream by qtextstream replaced + - q3textbrowser by qtextbrowser replaced + - reading catalog file enhanced + - saving special chars fixed + - option for saving catalogs always in UTF8 added (disabling keeps old encoding) + - searching fixed + +26. Jan 2011 Christoph Thielecke + - support for importing comment and category at Kat-CeDe and Disclib added + - progressbar at csv import fixed + - q3textstream replaced by qtextstream at import + - q3progressdialog replaced by qprogressdialog at import + - language selector at preferencesdialog at osx added + +25. Jan 2011 Christoph Thielecke + - csv import added (Disclib) + - dont give a error message if same name at rename dialog + - dont give a error message if same number at renumber dialog + - use last used path for directory at export + - generate standard html header + - us utf8 as encoding at html export + - display export date in report + - media number, mp3tag and borrow information can be exported now + - csv export allows now to select fields for export + - crash at searching fixed + +24. Jan 2011 Christoph Thielecke + - scanning cdrom/dvd if no cdrom path is set fixed (win32) + - wrong translation fixed (thanks to Thomas Nehrenheim) + - csv import added (Kat-CeDe) + - media number/name at comment widget moved below type + - do automatic linebreak in comment widget if comment has oversized lines (>40 chars) + - display size units correctly (Kib, Mib, ...) + - made size units translateable + - workaround for displaying rubberband again (win32) + - scanning non cdrom fixed (linux) + - displaying error message if cd/dvd could not mounted (linux) + +22. Jan 2011 Christoph Thielecke + - save last dir on open catalog + - use qt4 filedialogs + - use qxmlsimplereader instead of expat for xml import + - import datetime for media fixed + +21. Jan 2011 Christoph Thielecke + - detect uncompressed file size added + - test for enough memory at catalog reading added + - read file in chunks instead of in one + - use qxmlsimplereader instead of expat for catalog parsing + +20. Jan 2011 Christoph Thielecke + - cdrom/dvd volume name at win32 fixed + - option "detect cdrom/dvd media name after mount" at win32 removed (not nessary) + - set default value for cdrom device + +19. Jan 2011 Christoph Thielecke + - pcre replaced by QRegExp + - version adjusted + - parsing date fixed (missing old format2 added: "Apr.12 15:43 2001" + - searching date added (start, end, start+end) + - option "detect cdrom/dvd media name after mount" added + +17. Jan 2011 Christoph Thielecke + - option for debug output on console added + - string converstion on save fixed + +16. Jan 2011 Christoph Thielecke + - xml encoding detection added + - save new catalog in UTF8 + - current author in about dialog changed + - translation update + +28. Nov 2010 Christoph Thielecke + - support for (dead) symbolic links and system files improved (thanks to Bernard Valentin) + +28. Nov 2010 Christoph Thielecke + - parsing avi header fixed (thanks to Niels Horn) + +25. Nov 2010 Christoph Thielecke + - allow "<", ">" and '"' in comments (thanks to Niels Horn) + - crash if clicking on the "catalog" in the left panel fixed (thanks to Niels Horn) + - format dates with leading zero (thanks to Niels Horn) + - typos fixed (thanks to Niels Horn) + - translations updated + - compile fix for qt < 4.6.0 added + +25. Nov 2010 Christoph Thielecke + - fixed wrong encoding on reading + - crash when adding new media fixed (thanks to Bernard Valentin) + +24. Nov 2010 Christoph Thielecke + - ChangeLog added + - double click on folder at display view fixed (thanks to Niels Horn) + - details are not shown for an item when clicking on it fixed (thanks to Niels Horn) + - segfault at saving catalog fixed + - win32 fixes (thanks to noragen) + - string termination correction at mp3tag (based on patch from debian (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=358929)) + - patch for fixing gzip -> xml conversion applied (based on patch from gentoo (http://bugs.gentoo.org/show_bug.cgi?id=48826)) + - help dialog converted to qt4 ui + - patch for import old date-format added (thanks to Niels Horn) diff -Nru cdcat-1.01b/CVS/Entries cdcat-1.2/CVS/Entries --- cdcat-1.01b/CVS/Entries 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -D diff -Nru cdcat-1.01b/CVS/Repository cdcat-1.2/CVS/Repository --- cdcat-1.01b/CVS/Repository 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -cdcat diff -Nru cdcat-1.01b/CVS/Root cdcat-1.2/CVS/Root --- cdcat-1.01b/CVS/Root 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/CVS/Root 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -:ext:hyperr@cvs.cdcat.sf.net:/cvsroot/cdcat diff -Nru cdcat-1.01b/debian/cdcat.desktop cdcat-1.2/debian/cdcat.desktop --- cdcat-1.01b/debian/cdcat.desktop 1970-01-01 00:00:00.000000000 +0000 +++ cdcat-1.2/debian/cdcat.desktop 2011-04-30 15:25:44.000000000 +0000 @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Application +Name=CdCat +Exec=cdcat +Icon=cdcat +Categories=Qt;KDE;Utility;X-KDE-Utilities-File;System;Archiving; +StartupNotify=false +NoDisplay=false +Terminal=false +Comment=Disk and data archive management tool +Comment[de]=Verwaltung fĂźr Datendisks und Archive diff -Nru cdcat-1.01b/debian/cdcat.docs cdcat-1.2/debian/cdcat.docs --- cdcat-1.01b/debian/cdcat.docs 1970-01-01 00:00:00.000000000 +0000 +++ cdcat-1.2/debian/cdcat.docs 2011-04-30 15:25:44.000000000 +0000 @@ -0,0 +1,7 @@ +README +README_IMPORT +README_IMPORT.DE +README_IMPORT.HU +TODO +Authors +TRANSLATORS_README diff -Nru cdcat-1.01b/debian/cdcat.install cdcat-1.2/debian/cdcat.install --- cdcat-1.01b/debian/cdcat.install 1970-01-01 00:00:00.000000000 +0000 +++ cdcat-1.2/debian/cdcat.install 2011-04-30 15:25:44.000000000 +0000 @@ -0,0 +1,3 @@ +usr/bin +debian/cdcat.xpm usr/share/cdcat +src/lang/*.qm usr/share/cdcat/translations diff -Nru cdcat-1.01b/debian/cdcat.xpm cdcat-1.2/debian/cdcat.xpm --- cdcat-1.01b/debian/cdcat.xpm 1970-01-01 00:00:00.000000000 +0000 +++ cdcat-1.2/debian/cdcat.xpm 2011-04-30 15:25:44.000000000 +0000 @@ -0,0 +1,196 @@ +/* XPM */ +static char *cdcat[] = { +/* columns rows colors chars-per-pixel */ +"16 15 175 2", +" c #75302F", +". c #8F3A3B", +"X c #9A3837", +"o c #A43D3D", +"O c #F32D2F", +"+ c #E03E3E", +"@ c #FA3535", +"# c #F83738", +"$ c #FC3738", +"% c #F13A3A", +"& c #FE3D3E", +"* c #B24949", +"= c #BF4948", +"- c #B56767", +"; c #CC4040", +": c #D44F4F", +"> c #FE4545", +", c #FD4647", +"< c #FE4747", +"1 c #FD4748", +"2 c #F74A4A", +"3 c #F84848", +"4 c #FC4949", +"5 c #FD4A4B", +"6 c #FE4A4A", +"7 c #FE4A4B", +"8 c #FE4B4B", +"9 c #FE4D4C", +"0 c #FE5352", +"q c #FE5353", +"w c #FB5756", +"e c #FE5757", +"r c #FE5857", +"t c #FE5959", +"y c #FE5A59", +"u c #FE5C5C", +"i c #FE5C5D", +"p c #DA5463", +"a c #DB5F62", +"s c #DE6062", +"d c #FE6161", +"f c #FE6363", +"g c #FE6565", +"h c #FE6665", +"j c #FE6969", +"k c #FE6A6A", +"l c #FA6C6B", +"z c #FE6D6D", +"x c #FE7171", +"c c #FE7373", +"v c #FE7374", +"b c #FE7475", +"n c #FE7777", +"m c #FE7979", +"M c #FE7B7C", +"N c #FE7E7E", +"B c #E67886", +"V c #E47C8D", +"C c #C28B9F", +"Z c #F78282", +"A c #FE8181", +"S c #FE8383", +"D c #FE8484", +"F c #FE8586", +"G c #FE8988", +"H c #FE8A89", +"J c #FE8F8F", +"K c #FE9292", +"L c #FE9393", +"P c #FD9595", +"I c #FE9A9A", +"U c #FE9B9B", +"Y c #FE9C9C", +"T c #DD90A4", +"R c #DBA2A7", +"E c #FEA1A1", +"W c #FEA2A3", +"Q c #FEA3A4", +"! c #FEA4A5", +"~ c #FEA7A7", +"^ c #FEA8A9", +"/ c #FEABAB", +"( c #FEACAB", +") c #FEADAE", +"_ c #FEAFAE", +"` c #EAAAB5", +"' c #EDB0B2", +"] c #FBB0B1", +"[ c #FEB3B3", +"{ c #FEB4B4", +"} c #FEB7B7", +"| c #FEB7B8", +" . c #FEB9B9", +".. c #FEBABA", +"X. c #FEBDBF", +"o. c #B2AACB", +"O. c #ABB7D9", +"+. c #B6BEE1", +"@. c #A6B9F3", +"#. c #A8BCF4", +"$. c #CFB8D6", +"%. c #BCC2DB", +"&. c #ADC1F7", +"*. c #B4C3F3", +"=. c #B2C3F5", +"-. c #B5C6F5", +";. c #B5C6F6", +":. c #BECDF7", +">. c #B7CBFB", +",. c #BACAFA", +"<. c #DACBDE", +"1. c #ECCACA", +"2. c #F0C0C2", +"3. c #FEC4C4", +"4. c #FEC6C6", +"5. c #FEC7C7", +"6. c #F1CDCD", +"7. c #F3CECE", +"8. c #FEC8C9", +"9. c #FEC9CA", +"0. c #FECFCF", +"q. c #EDCFD2", +"w. c #F6D2D2", +"e. c #FED2D0", +"r. c #FED2D2", +"t. c #FED3D3", +"y. c #FEDBDB", +"u. c #FEDDDE", +"i. c #C1CBEA", +"p. c #C7D1EE", +"a. c #CBD3EC", +"s. c #D0D6EE", +"d. c #D6D6EC", +"f. c #DCDEEE", +"g. c #CCD6F5", +"h. c #C3D2F8", +"j. c #CAD6F8", +"k. c #CED9F9", +"l. c #CCD8FD", +"z. c #D2DDF9", +"x. c #D8E0F7", +"c. c #DCE1F4", +"v. c #D1E4FF", +"b. c #D2E6FF", +"n. c #D9E2F9", +"m. c #DAE5FB", +"M. c #DEE6FD", +"N. c #FEE0E0", +"B. c #FEE2E2", +"V. c #F3E6E9", +"C. c #FEEDED", +"Z. c #E2E9FB", +"A. c #E3EAFC", +"S. c #E9EEFF", +"D. c #EEF2FD", +"F. c #EFF2FD", +"G. c #EFF3FD", +"H. c #ECF4FF", +"J. c #F1F4FC", +"K. c #F3F5FC", +"L. c #F3F5FD", +"P. c #F3F5FE", +"I. c #F4F7FD", +"U. c #F8F8FB", +"Y. c #FBFBFD", +"T. c #F8F9FE", +"R. c #FBFBFE", +"E. c #FBFDFF", +"W. c #FCFCFF", +"Q. c #FDFDFF", +"!. c #FDFEFF", +"~. c #FEFEFF", +"^. c #FFFEFF", +"/. c #FFFFFF", +"(. c None", +/* pixels */ +"(.(.(.(.(.(.(.(.q.V.N.e.' s (.(.", +"(.(.7.7.w.1.R 2.C.B.0.X.[ P a (.", +"(.] ~ / ..5.t.u.y.t.4.} / Y l (.", +"Z N G Y ) ..4.8.4.4...) I x 8 > ", +"w b F L E ( [ } } } Q H j 8 @ > ", +"1 k b F K Y E ~ I J m f e 8 @ > ", +"O u g x M A F S ` *.p.a.T > > = ", +"+ 8 u g z x n r H.F.j.W.Y.<.p (.", +"- % 0 t f g r d.!.!.A.Y.E.,.o.(.", +"(.; > 9 0 r t v.n.I.F.c.z.#.@.(.", +"(.(.= 2 > 1 8 v.-.k.l.V +.h.&.(.", +"(.(.(.* 3 & # $.=.-.M.i.f.A.h.O.", +"(.(.(.(.o : # 8 ,.m.!.P.F.!.I.%.", +"(.(.(.(.(.(.X # B K.!.Y.z.W.U.(.", +"(.(.(.(.(.(.(. . C S.P.g.s.(.(." +}; diff -Nru cdcat-1.01b/debian/changelog cdcat-1.2/debian/changelog --- cdcat-1.01b/debian/changelog 2011-04-30 15:25:43.000000000 +0000 +++ cdcat-1.2/debian/changelog 2011-04-30 15:25:44.000000000 +0000 @@ -1,3 +1,19 @@ +cdcat (1.2-1) unstable; urgency=low + + * New upstream release (closes: #604505) + * added cdcat.desktop (closes: #496097) + + -- Eduard Bloch Wed, 23 Mar 2011 08:38:48 +0100 + +cdcat (1.01b+1.1beta4-1) experimental; urgency=low + + * New upstream beta release + + using qt4 (closes: #604505) + * using new style menu entry location (closes: #496097) + * disabling strip call with nostrip in DEB_BUILD_OPTIONS (closes: #436617) + + -- Eduard Bloch Thu, 10 Feb 2011 21:10:51 +0100 + cdcat (1.01b-2) unstable; urgency=low * mp3tag_string_termination.dpatch by arno: diff -Nru cdcat-1.01b/debian/compat cdcat-1.2/debian/compat --- cdcat-1.01b/debian/compat 2011-04-30 15:25:43.000000000 +0000 +++ cdcat-1.2/debian/compat 2011-04-30 15:25:44.000000000 +0000 @@ -1 +1 @@ -4 +7 diff -Nru cdcat-1.01b/debian/control cdcat-1.2/debian/control --- cdcat-1.01b/debian/control 2011-04-30 15:25:43.000000000 +0000 +++ cdcat-1.2/debian/control 2011-04-30 15:25:44.000000000 +0000 @@ -2,8 +2,8 @@ Section: x11 Priority: optional Maintainer: Eduard Bloch -Build-Depends: debhelper (>= 4.0.0), qt3-dev-tools, libqt3-mt-dev, libpcre3-dev, libexpat1-dev, dpatch -Standards-Version: 3.7.2 +Build-Depends: debhelper (>= 7), qt4-qmake, libqt4-dev, libpcre3-dev, libexpat1-dev, dpatch, zlib1g-dev +Standards-Version: 3.9.1 Package: cdcat Architecture: any diff -Nru cdcat-1.01b/debian/copyright cdcat-1.2/debian/copyright --- cdcat-1.01b/debian/copyright 2011-04-30 15:25:43.000000000 +0000 +++ cdcat-1.2/debian/copyright 2011-04-30 15:25:44.000000000 +0000 @@ -3,10 +3,14 @@ It was downloaded from http://cdcat.sourceforge.net/ -Upstream Author: Peter Deak +Upstream Authors: Peter Deak , Christoph Thielecke , Piotr "|TEcHNO|" Lewandowski Copyright: + 2003-2006 Peter Deak + 2003,2010-2011 Christoph Thielecke + 2004 Piotr "|TEcHNO|" Lewandowski + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or diff -Nru cdcat-1.01b/debian/dirs cdcat-1.2/debian/dirs --- cdcat-1.01b/debian/dirs 2011-04-30 15:25:43.000000000 +0000 +++ cdcat-1.2/debian/dirs 2011-04-30 15:25:44.000000000 +0000 @@ -1,2 +1,5 @@ usr/bin usr/share/cdcat/translations +usr/share/doc/cdcat +usr/share/applications +usr/share/icons diff -Nru cdcat-1.01b/debian/docs cdcat-1.2/debian/docs --- cdcat-1.01b/debian/docs 2011-04-30 15:25:43.000000000 +0000 +++ cdcat-1.2/debian/docs 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -README -README_IMPORT -README_IMPORT.DE -README_IMPORT.HU -TODO diff -Nru cdcat-1.01b/debian/menu cdcat-1.2/debian/menu --- cdcat-1.01b/debian/menu 2011-04-30 15:25:43.000000000 +0000 +++ cdcat-1.2/debian/menu 2011-04-30 15:25:44.000000000 +0000 @@ -1,3 +1,3 @@ -?package(cdcat):needs="x11" section="Apps/Tools" \ - title="CdCat" command="/usr/bin/cdcat" hints="Media,manage,CD,DVD" \ - longtitle="media catalog program" +?package(cdcat):needs="x11" section="Applications/File Management" \ + title="CdCat" command="/usr/bin/cdcat" hints="Media,manage,CD,DVD,BD" \ + longtitle="Media catalog program" icon="/usr/share/cdcat/cdcat.xpm" diff -Nru cdcat-1.01b/debian/patches/00list cdcat-1.2/debian/patches/00list --- cdcat-1.01b/debian/patches/00list 2011-04-30 15:25:43.000000000 +0000 +++ cdcat-1.2/debian/patches/00list 2011-04-30 15:25:44.000000000 +0000 @@ -1,3 +1,3 @@ #qdir_hidden_scan -mp3tag_string_termination -g++-4.1_fix +#mp3tag_string_termination +#g++-4.1_fix diff -Nru cdcat-1.01b/debian/rules cdcat-1.2/debian/rules --- cdcat-1.01b/debian/rules 2011-04-30 15:25:43.000000000 +0000 +++ cdcat-1.2/debian/rules 2011-04-30 15:25:44.000000000 +0000 @@ -17,28 +17,32 @@ else CFLAGS += -O2 endif + ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - INSTALL_PROGRAM += -s + STRIP=strip +else + STRIP=true endif +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + MAKEFLAGS += -j$(NUMJOBS) +endif + + configure: configure-stamp configure-stamp: dh_testdir # Add here commands to configure the package. - cd src && qmake-qt3 cdcat.pro - perl -pe "s!usr.local!usr!" -i src/Makefile + cd src && qmake-qt4 cdcat.pro + perl -pe s/usr.local/usr/g -i src/Makefile touch configure-stamp - build: build-stamp build-stamp: configure-stamp patch-stamp dh_testdir - - # Add here commands to compile the package. - cd src && $(MAKE) - #/usr/bin/docbook-to-man debian/cdcat.sgml > cdcat.1 - + cd src && $(MAKE) $(MAKEFLAGS) && lrelease-qt4 cdcat.pro touch build-stamp clean: unpatch @@ -55,13 +59,10 @@ install: build dh_testdir dh_testroot - dh_clean -k + dh_prep dh_installdirs - # Add here commands to install the package into debian/cdcat. - cd src && $(MAKE) install INSTALL_ROOT=$(CURDIR)/debian/cdcat - rm -f debian/cdcat/usr/share/cdcat/COPYING - + cd src && $(MAKE) install INSTALL_ROOT=$(CURDIR)/debian/tmp STRIP=$(STRIP) # Build architecture-independent files here. binary-indep: build install @@ -71,7 +72,10 @@ binary-arch: build install dh_testdir dh_testroot + dh_install dh_installchangelogs ChangeLog + cp debian/cdcat.desktop debian/cdcat/usr/share/applications + cp cdcat.png debian/cdcat/usr/share/icons dh_installdocs dh_installman debian/cdcat.1 dh_link @@ -79,6 +83,7 @@ dh_compress dh_fixperms dh_installmenu + -dh_icons dh_installdeb dh_shlibdeps dh_gencontrol diff -Nru cdcat-1.01b/KDE/cdcat.desktop cdcat-1.2/KDE/cdcat.desktop --- cdcat-1.01b/KDE/cdcat.desktop 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/KDE/cdcat.desktop 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -# KDE Config File -[Desktop Entry] -Type=Application -Exec=cdcat -Icon=/usr/local/share/cdcat/cdcat.png -GenericName[pt]=Catalogador -GenericName[hu]=Katalogizáló -Comment[pt]=Um programa de catalogaçăo -Comment[hu]=Media katalogizáló program -Terminal=false -Name=Hyper's CdCatalog -MimeType=application/x-k3b -X-KDE-NativeMimeType=application/x-k3b -Categories=KDE;Application;AudioVideo;DiscBurning; diff -Nru cdcat-1.01b/KDE/cdcat.desktop.new cdcat-1.2/KDE/cdcat.desktop.new --- cdcat-1.01b/KDE/cdcat.desktop.new 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/KDE/cdcat.desktop.new 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Application -Version=1.0 -Encoding=UTF-8 -Name=CdCat -GenericName=Hyper's CD Catalogizer -Icon=cdcat.png -TryExec=cdcat -Exec=cdcat -Terminal=false -MimeType=application/x-hcf -Categories=Database \ No newline at end of file diff -Nru cdcat-1.01b/KDE/Makefile cdcat-1.2/KDE/Makefile --- cdcat-1.01b/KDE/Makefile 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/KDE/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - -install: - cp x-hcf.xml /usr/share/mime/packages/ - update-mime-database - cp cdcat.desktop /usr/share/applications - cp cdcat.png /usr/share/icons \ No newline at end of file diff -Nru cdcat-1.01b/KDE/x-hcf.desktop cdcat-1.2/KDE/x-hcf.desktop --- cdcat-1.01b/KDE/x-hcf.desktop 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/KDE/x-hcf.desktop 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -# KDE Config File -[Desktop Entry] -Encoding=UTF-8 -MimeType=application/x-hcf -Comment=Hyper's CdCatalog -Comment[pt]=Catálogo do Hyper's CdCatalog -Comment[hu]=Hyper CD Katalógusa -Icon=/usr/local/share/cdcat/cdcat.png -Type=MimeType -Patterns=*.hcf; -X-KDE-AutoEmbed=false -[Property::X-KDE-NativeExtension] -Type=QString -Value=.hcf diff -Nru cdcat-1.01b/KDE/x-hcf.xml cdcat-1.2/KDE/x-hcf.xml --- cdcat-1.01b/KDE/x-hcf.xml 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/KDE/x-hcf.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - CdCat Catalog - Catálogo CdCat - cdcat.desktop - diff -Nru cdcat-1.01b/README_IMPORT cdcat-1.2/README_IMPORT --- cdcat-1.01b/README_IMPORT 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/README_IMPORT 2011-03-06 10:13:20.000000000 +0000 @@ -1,5 +1,8 @@ -This document discibes how to import your gtktalog database into cdcat. +This document descibes how to import catalogs from other catalog programs into cdcat. + +Gtktalog +====== ------------------------------------------------------------------------- Now you can import it much easier as in history. Simply create a report in gtktalog (DESELECT information and select xml as type, catalog.xml as filename). @@ -44,8 +47,133 @@ after a while (depends on your database) you will see you catalog in cdcat. press the save toolbutton to save your cdcat catalog. - -greeings - -Crissi +WhereIsIt? +======== +Export - csv - classical + + +Kat-DeCe +======= +Select Edit - Output, then set the following options: + + +Target: + - File: test.csv + - Header [x] +What: + - All media (*) + +How: + - Database (.CSV) [x] + +Information: + - Location/Number [x] + - Media name [x] + - File/directory name [x] + - Extension [x] + - Length [x] + - Date [x] + - Path [x] + - comment [x] + - Manufacturer [x] + - Distributor [x] + - Order number [x] + - Price [x] + - Change date [x] + - Media info [x] + - category [x] + - free space [ ] + +Disklib +===== + +Library - export + +File name: test.csv +Fields: + [x] Name + [x] Volume + [x] FilePath + [x] Path + [x] Size + [x] VolumeSerial + [x] Date + [x] Type + [x] Category + [x] Comments + [x] Location + +Options: + Seperator: * + [ ] Unindent subfields + textqualifier: " + Size in: Bytes + [ ] Level + [ ] Archive contents + [x] Export as line + [ ] Folder only + [x] Display all properties + +Advanced Disk Catalog +================== +File - Export - Database + Target [CSV file (for MS Excel)] + Volume [All disks] + Category [All categories] + Objects [Files and folders] + Export fields + [x] Volume + [x] File/folder name + [x] Rel. path + [x] Full path + [x] File/folder size + [x] file/folder date + [x] file/folder time + [x] Category + [x] Level + [x] Comments + [x] Files inside + [x] File type + File name: export.csv + Comments: [As is...] + Comments field size: 4096 + [ ] Skip items with empty Comments + + +WhereIsIt (CSV) +============= +Application - Report generator - Report generator wizard + +Step1 (Select report type): + (*) prefinied reports + "All files in catalog matching certain file mask" + +Step2: (Enter File mask): + Mask: *.* + +Step3: (Select range): + Check all + +Step 4 (Export settings): + Report title: change to what you want + Report destination: (*) Export: [CSV text file] + Export settings: + Seperator: ; + Report Layout options: + (*) Print data on list 'as is', no sorting + Report columns + [x] File, Folder or Disk + [x] Ext + [x] Item Size + [x] Item Date + [x] Location + [x] Media Type + [x] Folder + [x] Category + [x] Description + [x] Disk # + [x] Item Time + [x] CRC + [x] Tag + [x] Disk Location diff -Nru cdcat-1.01b/README_IMPORT.DE cdcat-1.2/README_IMPORT.DE --- cdcat-1.01b/README_IMPORT.DE 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/README_IMPORT.DE 2011-02-04 12:11:44.000000000 +0000 @@ -1,5 +1,8 @@ -Dieses Dokument beschreibt, wie man eine Datenbank von Gtktalog in CdCat importiert, +Dieses Dokument beschreibt, wie man eine Datenbank von anderen Katalogprogrammen in CdCat importiert. + +Gtktalog +====== --------------------------------------------------------- Nun kann man viel einfacher als früher den Import durchführen: @@ -29,9 +32,136 @@ Importieren klicken Fertig! - ---------------------------------------------------------- - - -Crissi ;) +WhereIsIt? +======== +Export - csv - klassisch + + +Kat-DeCe +======= +Bearbeiten - Ausgeben auswählen, dann die folgenden Option setzen: + + +Ziel: + - datei: test.csv + - header [x] +Was: + - alle Medien (*) + +Wie: + - Datenbank (.CSV) [x] + +Information: + - Ort/Nummer [x] + - Medium Name [x] + - Datei/verzeichnisname [x] + - Erweiterung [x] + - Länge [x] + - Datum [x] + - Pfad [x] + - Kommentar [x] + - Hersteller [x] + - Lieferant [x] + - Bestellnummer [x] + - Preis [x] + - Änderungsdatum [x] + - Medium-Info [x] + - Kategorie [x] + - freier Speicher [ ] + + +Disclib +===== + +Bibliothek - exportieren + +Dateiname: test.csv +Felder: + [x] Name + [x] Volume + [x] FilePath + [x] Path + [x] Size + [x] VolumeSerial + [x] Date + [x] Type + [x] Category + [x] Comments + [x] Location + +Optionen: + Trenner: * + [ ] Unindent Unterfelder + Text-Qualifizierer: " + Größe in: Bytes + [ ] Ebene + [ ] Archive contents + [x] Als Zeile exportieren + [ ] Nur Ordner + [x] Zeige alle Eigenschaften + + + +Advanced Disk Catalog +================== +File - Export - Database + Target [CSV file (for MS Excel)] + Volume [All disks] + Category [All categories] + Objects [Files and folders] + Export fields + [x] Volume + [x] File/folder name + [x] Rel. path + [x] Full path + [x] File/folder size + [x] file/folder data + [x] file/folder time + [x] Category + [x] Level + [x] Comments + [x] Files inside + [x] File type + File name: export.csv + Comments: [As is...] + Comments field size: 4096 + [ ] Skip items with empty Comments + + +WhereIsIt (CSV) +============= +Application - Report generator - Report generator wizard + +Step1 (Select report type): + (*) prefinied reports + "All files in catalog matching certain file mask" + +Step2: (Enter File mask): + Mask: *.* + +Step3: (Select range): + Check all + +Step 4 (Export settings): + Report title: change to what you want + Report destination: (*) Export: [CSV text file] + Export settings: + Seperator: ; + Report Layout options: + (*) Print data on list 'as is', no sorting + Report columns + [x] File, Folder or Disk + [x] Ext + [x] Item Size + [x] Item Date + [x] Location + [x] Media Type + [x] Folder + [x] Category + [x] Description + [x] Disk # + [x] Item Time + [x] CRC + [x] Tag + [x] Disk Location diff -Nru cdcat-1.01b/README_IMPORT.HU cdcat-1.2/README_IMPORT.HU --- cdcat-1.01b/README_IMPORT.HU 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/README_IMPORT.HU 2011-02-04 12:11:44.000000000 +0000 @@ -20,6 +20,8 @@ ---------------------------------------------------------------------------- +Gtktalog +======= Ha csv fájlból szeretnál importálni a következőképp járj el: Előszöris a soroknak így kell kinézniük: @@ -54,7 +56,135 @@ Ezek után ajánlatos az adatbázist elmenteni. -Udv! - -Crissi & Hyper +WhereIsIt? +======== +Export - csv - classical + + +Kat-DeCe +======= +Select Edit - Output, then set the following options: + + +Target: + - File: test.csv + - Header [x] +What: + - All media (*) + +How: + - Database (.CSV) [x] + +Information: + - Location/Number [x] + - Media name [x] + - File/directory name [x] + - Extension [x] + - Length [x] + - Date [x] + - Path [x] + - comment [x] + - Manufacturer [x] + - Distributor [x] + - Order number [x] + - Price [x] + - Change date [x] + - Media info [x] + - category [x] + - free space [ ] + +Disklib +===== + +Library - export + +File name: test.csv +Fields: + [x] Name + [x] Volume + [x] FilePath + [x] Path + [x] Size + [x] VolumeSerial + [x] Date + [x] Type + [x] Category + [x] Comments + [x] Location + +Options: + Seperator: * + [ ] Unindent subfields + textqualifier: " + Size in: Bytes + [ ] Level + [ ] Archive contents + [x] Export as line + [ ] Folder only + [x] Display all properties + + +Advanced Disk Catalog +================== +File - Export - Database + Target [CSV file (for MS Excel)] + Volume [All disks] + Category [All categories] + Objects [Files and folders] + Export fields + [x] Volume + [x] File/folder name + [x] Rel. path + [x] Full path + [x] File/folder size + [x] file/folder data + [x] file/folder time + [x] Category + [x] Level + [x] Comments + [x] Files inside + [x] File type + File name: export.csv + Comments: [As is...] + Comments field size: 4096 + [ ] Skip items with empty Comments + + + +WhereIsIt (CSV) +============= +Application - Report generator - Report generator wizard + +Step1 (Select report type): + (*) prefinied reports + "All files in catalog matching certain file mask" + +Step2: (Enter File mask): + Mask: *.* + +Step3: (Select range): + Check all + +Step 4 (Export settings): + Report title: change to what you want + Report destination: (*) Export: [CSV text file] + Export settings: + Seperator: ; + Report Layout options: + (*) Print data on list 'as is', no sorting + Report columns + [x] File, Folder or Disk + [x] Ext + [x] Item Size + [x] Item Date + [x] Location + [x] Media Type + [x] Folder + [x] Category + [x] Description + [x] Disk # + [x] Item Time + [x] CRC + [x] Tag + [x] Disk Location diff -Nru cdcat-1.01b/Scripts/cdcat-datefix.pl cdcat-1.2/Scripts/cdcat-datefix.pl --- cdcat-1.01b/Scripts/cdcat-datefix.pl 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/Scripts/cdcat-datefix.pl 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -#!/usr/bin/perl -w - -# 2004-07-23 -# Marko Crnic -# http://www.nymphomatic.org/~paranoid/ -# -# Fix date format in .hcf files (gzipped xml). -# .hcf is used by CdCat (http://cdcat.sf.net). - -use Compress::Zlib ; - -($a, $b) = @ARGV; - -if(!$a || !$b) -{ - print "Usage: $0 infile.hcf outfile.hcf\n"; - exit 1; -} - -$gz = gzopen("$a", "rb"); -$out = gzopen("$b", "wb"); - -while($gz->gzreadline($lajna)) -{ - if($lajna =~ /time="(.*)\.(.*) (\d+):(\d+) (\d{4})"/) - { - $hr = $3; - $mn = $4; - if($3 < 10) { $hr = "0$3"; } - if($4 < 10) { $mn = "0$4"; } - $lajna =~ s/time="(.*)\.(.*) (\d+):(\d+) (\d{4})"/time="$1 $2 $hr:$mn $5"/; - } - $out->gzwrite($lajna); -} - -$out->gzclose(); -$gz->gzclose(); diff -Nru cdcat-1.01b/Scripts/parse_translations.pl cdcat-1.2/Scripts/parse_translations.pl --- cdcat-1.01b/Scripts/parse_translations.pl 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/Scripts/parse_translations.pl 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -#!/usr/bin/perl -w - -# Usage: ./parse_translations.pl file.ts - -# This script opens file given as agrument (ment for .ts files -# from linguist, but name does not matter) and prints -# out all translations. It is very usefull when -# checking final work. - -# TIP: redirect output like this: -# ./parse_translations.pl file.ts | sort | uniq > check.txt -# and open in OpenOffice (or whatever editor with spellcheck) -# Yes, let program look for mistakes instead of us :] - -# This code hopes it will be usefull for you -# Author: Adam ZAK, adam.zak@ynet.sk - -$pocet_arg = $#ARGV + 1; - -if ($pocet_arg != 1) { - print "Usage: ./parse_translations.pl FILENAME\n"; - exit; -} - -$arg = $ARGV[0]; - -open(IN,"<","$arg") or die("Error: Unable to open file '$arg'\n"); - -$obsah = ""; - -while ($line = ) { - $obsah .= $line; -} - -while ($obsah =~ /\(.*?)\<\/translation\>/sig) { - print $1 . "\n"; -} diff -Nru cdcat-1.01b/src/adddialog.cpp cdcat-1.2/src/adddialog.cpp --- cdcat-1.01b/src/adddialog.cpp 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/adddialog.cpp 2011-03-08 07:58:49.000000000 +0000 @@ -1,495 +1,673 @@ -/**************************************************************************** - Hyper's CD Catalog - A multiplatform qt and xml based catalog program - - Author : Peter Deak (hyperr@freemail.hu) - License : GPL - Copyright : (C) 2003 Peter Deak -****************************************************************************/ - -#include "adddialog.h" -#include "guibase.h" -#include "dbase.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "dirview.h" -#include "icons.h" -#include "mainwidget.h" -#include "config.h" -#include "misc.h" -#include "selreadable.h" - - -addDialog::addDialog(GuiSlave *c, QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, fl ) -{ - int i; - - caller = c; - if ( !name ) - setName( "addDialog" ); - setIcon(*get_t_add_icon()); - - setSizeGripEnabled(TRUE); - addDialogLayout = new QGridLayout( this, 1, 1, 11, 6, "addDialogLayout"); - - layout10 = new QVBoxLayout( 0, 0, 6, "layout10"); - - layout9 = new QHBoxLayout( 0, 0, 6, "layout9"); - - layout8 = new QVBoxLayout( 0, 0, 6, "layout8"); - - textLabel6 = new QLabel( this, "textLabel6" ); - layout8->addWidget( textLabel6 ); - - dirView = new DirectoryView( this,0); - dirView->resize(190,210); - dirView->setGeometry( QRect( 10, 40, 190, 210 ) ); - dirView->setCaption(tr("Directory Browser")); - - - layout8->addWidget( dirView ); - layout9->addLayout( layout8 ); - - layout7 = new QVBoxLayout( 0, 0, 6, "layout7"); - - textLabel1 = new QLabel( this, "textLabel1" ); - layout7->addWidget( textLabel1 ); - - leName = new QLineEdit( this, "leName" ); - layout7->addWidget( leName ); - - layout2 = new QHBoxLayout( 0, 0, 6, "layout2"); - - textLabel2 = new QLabel( this, "textLabel2" ); - layout2->addWidget( textLabel2 ); - - sbNumber = new QSpinBox(0,50000,1, this, "sbNumber" ); - layout2->addWidget( sbNumber ); - layout7->addLayout( layout2 ); - - layout3 = new QHBoxLayout( 0, 0, 6, "layout3"); - - textLabel4 = new QLabel( this, "textLabel4" ); - layout3->addWidget( textLabel4 ); - - cbType = new QComboBox( FALSE, this, "cbType" ); - layout3->addWidget( cbType ); - layout7->addLayout( layout3 ); - - layout4 = new QHBoxLayout( 0, 0, 6, "layout4"); - - textLabel5 = new QLabel( this, "textLabel5" ); - layout4->addWidget( textLabel5 ); - - leOwner = new QLineEdit( this, "leOwner" ); - layout4->addWidget( leOwner ); - layout7->addLayout( layout4 ); - - layout5 = new QGridLayout( 0, 1, 1, 0, 6, "layout5"); - - textLabel3 = new QLabel( this, "textLabel3" ); - - layout5->addWidget( textLabel3, 0, 0 ); - - teComm = new QMultiLineEdit( this, "teComm" ); - - layout5->addMultiCellWidget( teComm, 0, 1, 1, 1 ); - QSpacerItem* spacer = new QSpacerItem( 20, 60, QSizePolicy::Minimum, QSizePolicy::Expanding ); - layout5->addItem( spacer, 1, 0 ); - layout7->addLayout( layout5 ); - - buttonPli = new QPushButton(this,"buttonReadable"); - layout7->addWidget( buttonPli ); - - layout9->addLayout( layout7 ); - layout10->addLayout( layout9 ); - - layout1 = new QHBoxLayout( 0, 0, 6, "layout1"); - QSpacerItem* spacer_2 = new QSpacerItem( 90, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout1->addItem( spacer_2 ); - - buttonOK = new QPushButton( this, "buttonOk" ); - buttonOK->setMinimumWidth(100); - layout1->addWidget( buttonOK ); - - buttonCancel = new QPushButton( this, "buttonCancel" ); - buttonCancel->setMinimumWidth(100); - layout1->addWidget( buttonCancel ); - QSpacerItem* spacer_3 = new QSpacerItem( 110, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout1->addItem( spacer_3 ); - layout10->addLayout( layout1 ); - - addDialogLayout->addLayout( layout10, 0, 0 ); - languageChange(); - resize( QSize(454, 350).expandedTo(minimumSizeHint()) ); - - connect(buttonOK,SIGNAL(clicked()),this,SLOT(bOk())); - connect(buttonCancel,SIGNAL(clicked()),this,SLOT(bCan())); - - connect(buttonPli,SIGNAL(clicked()),this,SLOT(sread())); - - connect(dirView,SIGNAL(folderSelected(const QString &)),this,SLOT(setMediaName(const QString &))); - - - for(i=1;!caller->isIdentical(i);i++); - sbNumber->setValue(i); - - volumename = 1; //so, the next line will set up the name - setMediaName(" "); - - - if (cbType->currentItem()+1 == CD || cbType->currentItem()+1 == DVD) - { - dirView->setDir(((CdCatMainWidget *)parent)->cconfig->cdrompath); - dirView->sDir=((CdCatMainWidget *)parent)->cconfig->cdrompath; - setMediaName(((CdCatMainWidget *)parent)->cconfig->cdrompath); - } - buttonOK->setFocus(); -} - -int addDialog::sread() - { - SelReadable *sr = new SelReadable(caller->mainw->cconfig,this,"pluginsconf",true); - sr->exec(); - delete sr; - return 0; - } - - -/* - * Destroys the object and frees any allocated resources - */ -addDialog::~addDialog() -{ - // no need to delete child widgets, Qt does it all for us -} - -/* - * Sets the strings of the subwidgets using the current - * language. - */ - -void addDialog::languageChange() -{ - setCaption( tr( "Add Media to the Database" ) ); - textLabel6->setText( tr( "Choose a directory to scan:" ) ); - textLabel1->setText( tr( "Media Name:" ) ); - textLabel2->setText( tr( "Serial number of Media:" ) ); - textLabel5->setText( tr( "Owner:" ) ); - textLabel4->setText( tr( "Type:" ) ); - textLabel3->setText( tr( "Comment:" ) ); - buttonCancel->setText( tr( "Cancel" ) ); - buttonOK->setText( tr( "OK / Scan" ) ); - buttonPli->setText(tr("Select readable items")); - cbType->clear(); - cbType->insertItem( *get_m_cd_icon(), tr( "CD" ) ); - cbType->insertItem( *get_m_dvd_icon(), tr( "DVD" ) ); - cbType->insertItem( *get_m_hdd_icon(), tr( "HardDisc" ) ); - cbType->insertItem( *get_m_floppy_icon(), tr( "Floppy" ) ); - cbType->insertItem( *get_m_net_icon(), tr( "NetworkPlace" ) ); - cbType->insertItem( *get_m_flash_icon(), tr( "FlashDrive" ) ); - cbType->insertItem( *get_m_other_icon(), tr( "OtherDevice" ) ); -// cbType->setCurrentText(tr( "CD" )); // default -} - -int addDialog::setMediaName(const QString & ds) - { - QString tm; - -#ifdef _WIN32 - QDir confdir ((caller->mainw->cconfig->cdrompath).lower()); - QDir selected(ds.lower()); -#else - QDir confdir (caller->mainw->cconfig->cdrompath); - QDir selected(ds); -#endif - - QApplication::setOverrideCursor(waitCursor); - - if ( (cbType->currentItem()+1 == CD) && - (confdir == selected ) && - !(tm = getCDName(caller->mainw->cconfig->cdrompath)).isEmpty() ) - { - leName->setText(tm); - -#ifndef _WIN32 - // also set the media type to DVD if needed - if(diskIsDVD(caller->mainw->cconfig->cdrompath)) - cbType->setCurrentItem(DVD - 1); - else - cbType->setCurrentItem(CD - 1); -#endif - volumename = 1; - } - else - { - if(volumename == 1) - { - volumename = 0; - tm =tr("New Disk %1").arg(sbNumber->value()); - leName->setText(tm); - } - } - QApplication::restoreOverrideCursor(); - return 0; - } - -int addDialog::bOk(void) - { - if((leName->text()).isEmpty()) - { - QMessageBox::warning(this,tr("Error:"),tr("You must be fill the \"Name\" field!"),tr("Ok"),0); - return 0; - } - - if((leName->text()).startsWith("@")) - { - QMessageBox::warning(this,tr("Error:"),tr("The media name can't begin with the \"@\" character!"),tr("Ok"),0); - return 0; - } - - if(!caller->isIdentical(leName->text())) - { - QMessageBox::warning(this,tr("Error:"),tr("The Media Name must be unique! Please change it!") - ,tr("Ok"),0); - return 0; - } - if(!caller->isIdentical(sbNumber->value())) - { - QMessageBox::warning(this,tr("Error:"),tr("The Value of Serial Number must be unique! Please change it!") - ,tr("Ok"),0); - return 0; - } - - if(dirView->sDir.isEmpty()) - { - QMessageBox::warning(this,tr("Error:"),tr("You haven't selected a directory! Please select one!") - ,tr("Ok"),0); - return 0; - } - - OK = 1; - type = cbType->currentItem()+1; - serial = sbNumber->value(); - dName = leName->text(); - dOwner = leOwner->text(); - dComm = teComm->text(); - dDir = dirView->sDir; - - close(); - return 0; - } - -int addDialog::bCan(void) - { - OK = 0; - close(); - return 0; - } - - -/**************************************************************************/ - -PWw::PWw(QWidget *parent,QApplication *qapp) : QWidget(parent,"PleaseWaitBox", -#ifdef QT_NO_COMPAT - WType_Dialog | WStyle_Customize | WStyle_NoBorder | WShowModal -#else - WType_Modal | WStyle_Customize | WStyle_NoBorder -#endif - ) - { - int i; - QFont ownf; - refreshTime = 100; - appl=qapp; - setMinimumSize(80,68); - setMaximumSize(80,68); - - setGeometry(parent->x()+((parent->width()-80)/2), - parent->y()+((parent->height()-68)/2), - 80, - 68); - - /* Calculate the necesary font size*/ - QFontMetrics *fm=NULL; - ownf = font(); - i=15; - do - { - i--; - ownf.setPointSize(i); - if(fm != NULL) delete fm; - fm = new QFontMetrics(ownf); - if(i<4) break; - } - while(fm->width(tr("Please Wait...")) > (width()-5) ); - begintext = (width() - fm->width(tr("Please Wait..."))) / 2; - - if(fm != NULL) delete fm; - setFont(ownf); - - /*Get the firt value of the timer*/ - t=QTime::currentTime(); - s=0; - show(); - } - -void PWw::end(void) - { - close(); - } - -void PWw::step(void) - { - QTime tt; - tt=QTime::currentTime(); - if(t.msecsTo(tt) < refreshTime) return; - t = tt; - - if(!isActiveWindow()) - show(); - - repaint(); - - if(appl != NULL) - appl->processEvents(); - } - -void PWw::paintEvent(QPaintEvent *e) - { - QPainter p(this); - - p.setClipping(FALSE); - p.drawRect(1,1,78,66); - p.drawText(begintext,18,tr("Please Wait...")); - p.drawPixmap(20,25,*(get_anim(s))); - - p.flush(); - if(++s==5) s=0; - } - -void PWw::mousePressEvent(QMouseEvent *me) - { - lastx = me->x(); - lasty = me->y(); - } - -void PWw::mouseMoveEvent(QMouseEvent *me) - { - move(me->globalX()-lastx,me->globalY()-lasty); - } - -void progress(PWw *p) - { - if(p != NULL) - p->step(); - } - -/**************************************************************************/ - -AddLnk::AddLnk(QWidget *parent) - : QDialog(parent,"addlnkdialog",true) - { - setName( "addlnkdialog" ); - setIcon(*get_p_icon()); - - setSizeGripEnabled(TRUE); - - vbox = new QVBoxLayout(this,5,5); - - - hbox1 = new QHBoxLayout(0,5,5); - hbox2 = new QHBoxLayout(0,5,5); - - label = new QLabel( this, "textLabel6" ); - - fname = new QLineEdit( this, "FnameLineedit"); - bselect = new QPushButton (this,"SelectFname"); - bselect->setText("..."); - bselect->setMaximumWidth(30); - - hbox1->addWidget(fname); - hbox1->addWidget(bselect); - - buttonOk = new QPushButton (this,"bok"); - buttonOk->setMinimumWidth(80); - buttonCancel = new QPushButton (this,"bcan"); - buttonCancel->setMinimumWidth(80); - - hbox2->addStretch(); - hbox2->addWidget(buttonOk); - hbox2->addWidget(buttonCancel); - hbox2->addStretch(); - - vbox->addWidget( label ); - vbox->addLayout( hbox1 ); - vbox->addStretch(); - vbox->addLayout( hbox2 ); - resize(350,100); - languageChange(); - - connect(buttonOk,SIGNAL(clicked()),this,SLOT(sok())); - connect(buttonCancel,SIGNAL(clicked()),this,SLOT(scancel())); - connect(bselect,SIGNAL(clicked()),this,SLOT(sselect())); - ok = false; - } - - -void AddLnk::languageChange() -{ - setCaption( tr( "Add a \"Catalog Link\" to the database" ) ); - label->setText( tr( "Location of the .hcf file:" ) ); - - buttonCancel->setText( tr( "Cancel" ) ); - buttonOk->setText( tr( "Ok" ) ); -} - -int AddLnk::sok(void) - { - ok = true; - close(); - return 0; - } - -int AddLnk::scancel(void) - { - ok = false; - close(); - return 0; - } - -int AddLnk::sselect(void) - { - QString fn; - - fn = QFileDialog::getOpenFileName(NULL,tr("CdCat databases (*.hcf )"),this,"openlnfiled",tr("Open a file...")); - if(fn.isEmpty()) return 0; - - fname->setText(fn); - return 0; - } - +/**************************************************************************** + Hyper's CD Catalog + A multiplatform qt and xml based catalog program + + Author : Peter Deak (hyperr@freemail.hu) + License : GPL + Copyright : (C) 2003 Peter Deak +****************************************************************************/ + +#include "adddialog.h" +#include "guibase.h" +#include "dbase.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//Added by qt3to4: +#include +#include +#include +#include +#include + +#include + +#include "dirview.h" +#include "icons.h" +#include "mainwidget.h" +#include "config.h" +#include "misc.h" +#include "selreadable.h" + +addDialog::addDialog ( GuiSlave *c, QWidget* parent, const char* name, bool modal, Qt::WFlags fl ) + : QDialog ( parent, name, modal, fl ) { + int i; + + caller = c; + if ( !name ) + setName ( "addDialog" ); + setIcon ( *get_t_add_icon() ); + + setSizeGripEnabled ( TRUE ); + addDialogLayout = new Q3GridLayout ( this, 1, 1, 11, 6, "addDialogLayout" ); + + layout10 = new Q3VBoxLayout ( 0, 0, 6, "layout10" ); + + layout9 = new Q3HBoxLayout ( 0, 0, 6, "layout9" ); + + layout8 = new Q3VBoxLayout ( 0, 0, 6, "layout8" ); + + textLabel6 = new QLabel ( this, "textLabel6" ); + layout8->addWidget ( textLabel6 ); + + dirView = new DirectoryView ( this, "mydirview" ); + dirView->resize ( 190,210 ); + dirView->setGeometry ( QRect ( 10, 40, 190, 210 ) ); + dirView->setCaption ( tr ( "Directory Browser" ) ); + + layout8->addWidget ( dirView ); + + layout9->addLayout ( layout8 ); + + layout7 = new Q3VBoxLayout ( 0, 0, 6, "layout7" ); + + textLabel1 = new QLabel ( this, "textLabel1" ); + layout7->addWidget ( textLabel1 ); + +#ifndef _WIN32 + cbAutoDetectAtMount = new QCheckBox ( this, "cbAutoDetectAtMount" ); + layout7->addWidget ( cbAutoDetectAtMount ); +#endif + + leName = new QLineEdit ( this, "leName" ); + layout7->addWidget ( leName ); + + layout2 = new Q3HBoxLayout ( 0, 0, 6, "layout2" ); + + textLabel2 = new QLabel ( this, "textLabel2" ); + layout2->addWidget ( textLabel2 ); + + sbNumber = new QSpinBox ( 0,50000,1, this, "sbNumber" ); + layout2->addWidget ( sbNumber ); + layout7->addLayout ( layout2 ); + + layout3 = new Q3HBoxLayout ( 0, 0, 6, "layout3" ); + + textLabel4 = new QLabel ( this, "textLabel4" ); + layout3->addWidget ( textLabel4 ); + + cbType = new QComboBox ( FALSE, this, "cbType" ); + layout3->addWidget ( cbType ); + layout7->addLayout ( layout3 ); + + layout4 = new Q3HBoxLayout ( 0, 0, 6, "layout4" ); + + textLabel5 = new QLabel ( this, "textLabel5" ); + layout4->addWidget ( textLabel5 ); + + leOwner = new QLineEdit ( this, "leOwner" ); + layout4->addWidget ( leOwner ); + layout7->addLayout ( layout4 ); + + layout11 = new Q3HBoxLayout ( 0, 0, 6, "layout11" ); + + textLabelCategory = new QLabel ( this, "textLabelCategory" ); + layout11->addWidget ( textLabelCategory ); + + leCategory = new QLineEdit ( this, "leCategory" ); + layout11->addWidget ( leCategory ); + layout7->addLayout ( layout11 ); + + layout5 = new Q3GridLayout ( 0, 1, 1, 0, 6, "layout5" ); + + textLabel3 = new QLabel ( this, "textLabel3" ); + + layout5->addWidget ( textLabel3, 0, 0 ); + + teComm = new Q3MultiLineEdit ( this, "teComm" ); + + layout5->addMultiCellWidget ( teComm, 0, 1, 1, 1 ); + QSpacerItem* spacer = new QSpacerItem ( 20, 60, QSizePolicy::Minimum, QSizePolicy::Expanding ); + layout5->addItem ( spacer, 1, 0 ); + layout7->addLayout ( layout5 ); + + buttonPli = new QPushButton ( this,"buttonReadable" ); + layout7->addWidget ( buttonPli ); + + layout9->addLayout ( layout7 ); + layout10->addLayout ( layout9 ); + + layout1 = new Q3HBoxLayout ( 0, 0, 6, "layout1" ); + QSpacerItem* spacer_2 = new QSpacerItem ( 90, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout1->addItem ( spacer_2 ); + + buttonOK = new QPushButton ( this, "buttonOk" ); + buttonOK->setMinimumWidth ( 100 ); + layout1->addWidget ( buttonOK ); + + buttonCancel = new QPushButton ( this, "buttonCancel" ); + buttonCancel->setMinimumWidth ( 100 ); + layout1->addWidget ( buttonCancel ); + QSpacerItem* spacer_3 = new QSpacerItem ( 110, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout1->addItem ( spacer_3 ); + layout10->addLayout ( layout1 ); + + addDialogLayout->addLayout ( layout10, 0, 0 ); + languageChange(); + resize ( QSize ( 454, 350 ).expandedTo ( minimumSizeHint() ) ); + + connect ( buttonOK, SIGNAL ( clicked() ), this, SLOT ( bOk() ) ); + connect ( buttonCancel, SIGNAL ( clicked() ), this, SLOT ( bCan() ) ); + connect ( buttonPli, SIGNAL ( clicked() ), this, SLOT ( sread() ) ); + connect ( dirView, SIGNAL ( folderSelected ( const QString & ) ), this, SLOT ( setMediaName ( const QString & ) ) ); + connect ( cbType, SIGNAL ( activated(int)), this, SLOT ( cbTypeToggeled(int ) ) ); + +#ifndef _WIN32 + connect ( cbAutoDetectAtMount, SIGNAL ( clicked() ), this, SLOT ( autoDetectAtMountToggled()) ); +#endif + + for ( i=1;!caller->isIdentical ( i );i++ ) { }; + sbNumber->setValue ( i ); + + volumename = 1; //so, the next line will set up the name + setMediaName ( " " ); + + type = caller->mainw->cconfig->lastMediaType; + cbType->setCurrentIndex(caller->mainw->cconfig->lastMediaType-1); + + if ( cbType->currentItem() +1 == CD || cbType->currentItem() +1 == DVD ) { + dirView->setDir ( ( ( CdCatMainWidget * ) parent )->cconfig->cdrompath ); + dirView->sDir= ( ( CdCatMainWidget * ) parent )->cconfig->cdrompath; + setMediaName ( ( ( CdCatMainWidget * ) parent )->cconfig->cdrompath ); + } + buttonOK->setFocus(); +} + +int addDialog::sread() { + SelReadable *sr = new SelReadable ( caller->mainw->cconfig,this,"pluginsconf",true ); + sr->exec(); + delete sr; + return 0; +} + + +/* + * Destroys the object and frees any allocated resources + */ +addDialog::~addDialog() { + // no need to delete child widgets, Qt does it all for us +} + +/* + * Sets the strings of the subwidgets using the current + * language. + */ + +void addDialog::languageChange() { + setCaption ( tr ( "Add Media to the Database" ) ); + textLabel6->setText ( tr ( "Choose a directory to scan:" ) ); + textLabel1->setText ( tr ( "Media Name:" ) ); + textLabel2->setText ( tr ( "Serial number of Media:" ) ); + textLabel5->setText ( tr ( "Owner:" ) ); + textLabelCategory->setText ( tr ( "Category:" ) ); + textLabel4->setText ( tr ( "Type:" ) ); + textLabel3->setText ( tr ( "Comment:" ) ); + buttonCancel->setText ( tr ( "Cancel" ) ); + buttonOK->setText ( tr ( "OK / Scan" ) ); + buttonPli->setText ( tr ( "Select readable items" ) ); +#ifndef _WIN32 + cbAutoDetectAtMount->setText( tr("detect CDCROM/DVD media name after mount")); +#endif + cbType->clear(); + cbType->insertItem ( *get_m_cd_icon(), tr ( "CD" ) ); + cbType->insertItem ( *get_m_dvd_icon(), tr ( "DVD" ) ); + cbType->insertItem ( *get_m_hdd_icon(), tr ( "HardDisc" ) ); + cbType->insertItem ( *get_m_floppy_icon(), tr ( "Floppy" ) ); + cbType->insertItem ( *get_m_net_icon(), tr ( "NetworkPlace" ) ); + cbType->insertItem ( *get_m_flash_icon(), tr ( "FlashDrive" ) ); + cbType->insertItem ( *get_m_other_icon(), tr ( "OtherDevice" ) ); +// cbType->setCurrentText(tr( "CD" )); // default +} + +int addDialog::setMediaName ( const QString & ds ) { + QString tm; + +#ifdef _WIN32 + QDir confdir ( ( caller->mainw->cconfig->cdrompath ).lower() ); + QDir selected ( ds.lower() ); +#else + QDir confdir ( caller->mainw->cconfig->cdrompath ); + QDir selected ( ds ); +#endif + + QApplication::setOverrideCursor ( Qt::waitCursor ); + +#ifndef _WIN32 + if ( ( cbType->currentItem() +1 == CD ) && ( confdir == selected )) { + tm = getCDName ( caller->mainw->cconfig->cdrompath ); + } + if ( ( cbType->currentItem() +1 == CD ) && + ( confdir == selected ) && + ! ( tm.isEmpty() )) { +#endif +#ifdef _WIN32 + if ( ( cbType->currentItem() +1 == CD ) && ( confdir == selected )) { + if (!caller->mainw->cconfig->cdrompath.replace("/", "\\" ).isEmpty()) { + tm = getCDName ( caller->mainw->cconfig->cdrompath.replace("/", "\\" )); + } + } + else { + //QMessageBox::warning ( ( QWidget * ) this,tr ( "Warning:" ),tr ( "Trying selected drive name" ) ); + tm = getCDName (dirView->sDir.replace("/", "\\" )); + } + + + if (!tm.isEmpty()) { +#endif + + leName->setText ( tm ); + +#ifndef _WIN32 + // also set the media type to DVD if needed + if ( diskIsDVD ( caller->mainw->cconfig->cdrompath ) ) + cbType->setCurrentItem ( DVD - 1 ); + else + cbType->setCurrentItem ( CD - 1 ); +#endif + volumename = 1; + } else { + if ( volumename == 1 ) { + volumename = 0; + tm =tr ( "New Disk %1" ).arg ( sbNumber->value() ); + leName->setText ( tm ); + } + } + QApplication::restoreOverrideCursor(); + return 0; +} + +int addDialog::bOk ( void ) { + if ( ( leName->text() ).isEmpty() ) { + QMessageBox::warning ( ( QWidget * ) this,tr ( "Error:" ),tr ( "You must be fill the \"Name\" field!" ) ); + return 0; + } + + if ( ( leName->text() ).startsWith ( "@" ) ) { + QMessageBox::warning ( ( QWidget * ) this,tr ( "Error:" ),tr ( "The media name can't begin with the \"@\" character!" ) ); + return 0; + } + + if ( !caller->isIdentical ( leName->text() ) ) { + QMessageBox::warning ( ( QWidget * ) this,tr ( "Error:" ),tr ( "The Media Name must be unique! Please change it!" ) ); + return 0; + } + if ( !caller->isIdentical ( sbNumber->value() ) ) { + QMessageBox::warning ( ( QWidget * ) this,tr ( "Error:" ),tr ( "The Value of Serial Number must be unique! Please change it!" ) ); + return 0; + } + + if ( dirView->sDir.isEmpty() ) { + QMessageBox::warning ( ( QWidget * ) this,tr ( "Error:" ),tr ( "You haven't selected a directory! Please select one!" ) ); + return 0; + } + + OK = 1; + type = cbType->currentItem() +1; + serial = sbNumber->value(); + dName = leName->text(); + dOwner = leOwner->text(); + dComm = teComm->text(); + dCategory = leCategory->text(); + dDir = dirView->sDir; + + + close(); + return 0; +} + +int addDialog::bCan ( void ) { + OK = 0; + close(); + return 0; +} + + + +void addDialog::autoDetectAtMountToggled() { +#ifndef _WIN32 + if (cbAutoDetectAtMount->isChecked()) + leName->setEnabled(false); + else + leName->setEnabled(true); +#endif +} + +void addDialog::cbTypeToggeled(int type) { + if(caller->mainw->cconfig->lastMediaType != cbType->currentItem() +1) { +// std::cerr << "mediatype changed from " << caller->mainw->cconfig->lastMediaType << " to " << cbType->currentItem() +1 << std::endl; + caller->mainw->cconfig->lastMediaType = cbType->currentItem() +1; + caller->mainw->cconfig->writeConfig(); + } +} + + +/**************************************************************************/ + +PWw::PWw ( QWidget *parent,QApplication *qapp, bool showProgress, long long int steps, QString progresstext, bool showCancel ) : QWidget ( parent,"PleaseWaitBox", +#ifdef QT_NO_COMPAT + Qt::WType_Dialog | Qt::WStyle_Customize | Qt::WStyle_NoBorder | Qt::WShowModal +#else + Qt::WType_Modal | Qt::WStyle_Customize | Qt::WStyle_NoBorder +#endif + ) { + int i; + QFont ownf; + refreshTime = 250; + appl=qapp; + this->showProgress = showProgress; + this->showCancel = showCancel; + doCancel=false; + this->steps = steps; + if(!progresstext.isEmpty()) + this->progresstext = progresstext; + else + this->progresstext = DataBase::tr ( "Please Wait..." ); + + + baseheight=50; + if(showProgress) + baseheight+=40; + + if (showCancel) + baseheight+=50; + + mywidth=160; + myheight = baseheight; + + /* Calculate the necesary font size*/ + QFontMetrics *fm=NULL; + ownf = font(); + i=10; +// do { +// i--; +// ownf.setPointSize ( i ); +// if ( fm != NULL ) delete fm; +// fm = new QFontMetrics ( ownf ); +// if ( i<10 ) break; +// } while ( fm->width ( this->progresstext ) > ( width()-5 ) ); + + ownf.setPointSize ( i ); + fm = new QFontMetrics ( ownf ); + mywidth = (fm->width ( this->progresstext ))+10; + myheight = fm->height()+baseheight; + fontheight = fm->height(); + + if(showCancel) { + myheight += fm->height()+10; + begincanceltext = mywidth/2- fm->width ( tr("Cancel") )/2; + } + +// std::cerr << "mywidth: " << mywidth << std::endl; + + + setMinimumSize ( 10, myheight ); + setMaximumSize ( mywidth, myheight ); + + setGeometry ( parent->x() + ( ( parent->width()-mywidth ) /2 ), + parent->y() + ( ( parent->height()-myheight ) /2 ), + mywidth, myheight ); + + begintext = 5; + + if ( fm != NULL ) delete fm; + setFont ( ownf ); + + + anim_list = get_anim_list(); + + /*Get the firt value of the timer*/ + t=QTime::currentTime(); + s=0; + show(); +} + +void PWw::end ( void ) { + close(); +} + +void PWw::setProgressText ( QString progresstext ){ + int i; + QFont ownf; + if(!progresstext.isEmpty()) + this->progresstext = progresstext; + + /* Calculate the necesary font size*/ + QFontMetrics *fm=NULL; + ownf = font(); + i=10; +// do { +// i--; +// ownf.setPointSize ( i ); +// if ( fm != NULL ) delete fm; +// fm = new QFontMetrics ( ownf ); +// if ( i<4 ) break; +// } while ( fm->width ( this->progresstext ) > ( width()-5 ) ); + + ownf.setPointSize ( i ); + fm = new QFontMetrics ( ownf ); + fontheight = fm->height(); + baseheight=30; + if(showProgress) + baseheight+=40; + + mywidth = (fm->width ( progresstext ))+10; + myheight = fm->height()+baseheight; + + + if(showCancel) { + myheight += fontheight+10; + begincanceltext = mywidth/2- fm->width ( tr("Cancel") )/2; +// std::cerr << "setCancel!" << std::endl; + } + + begintext = 5; + + if ( fm != NULL ) delete fm; + setFont ( ownf ); + + if( width() != mywidth) { + hide(); + setMinimumSize ( mywidth, myheight ); + setMaximumSize ( mywidth, myheight ); + setGeometry ( x(), y(), mywidth, myheight ); + show(); + } +} + +void PWw::setCancel(bool showCancel) +{ + this->showCancel = showCancel; + setProgressText(this->progresstext); +} + +void PWw::step ( long long int progress_step ) { + QTime tt; + tt=QTime::currentTime(); + + if ( appl != NULL ) + if (appl->hasPendingEvents()) + appl->processEvents(); + + if ( t.msecsTo ( tt ) < refreshTime ) return; + t = tt; + + if(showProgress) + this->progress_step=progress_step; + + if ( !isActiveWindow() ) + show(); + repaint(); + + +} + +void PWw::paintEvent ( QPaintEvent *e ) { + QPainter p ( this ); + p.setClipping ( FALSE ); + int borderless_width = mywidth-4; +#if (QT_VERSION >= QT_VERSION_CHECK(4, 6, 0)) // needs Qt 4.6.0 or better + p.beginNativePainting(); +#endif + p.drawRect ( 1,1, borderless_width, myheight-2 ); + p.drawText ( begintext,18, progresstext ); + + QPixmap pm = anim_list.at(s); + p.drawPixmap ( (mywidth/2)-(pm.width()/2), 25, pm ); + int buttom_offset=fontheight+pm.height()+15; + + if(showProgress) { + p.setPen(QPen(QColor().black())); + p.drawRect(1, buttom_offset-1, mywidth-4, 15); + int percent = 0; + int steps_hundered = (steps/100); +// std::cerr << progress_step << "/"<< steps << " steps/100: " << (steps/100) << std::endl; + if (steps_hundered != 0) + percent = progress_step/(steps/100); + p.setBrush(QBrush(Qt::blue)); + p.drawRect(2, buttom_offset, (borderless_width-4)*percent/100, 14); + + // std::cerr << progress_step << "/"<< steps << " p: " << percent << "%" << std::endl; + } + if(showCancel) { + buttom_offset += 30; + p.setBrush(QBrush(Qt::NoBrush)); + p.drawText (begincanceltext, buttom_offset, DataBase::tr("Cancel") ); + } + + +#if (QT_VERSION >= QT_VERSION_CHECK(4, 6, 0)) // needs Qt 4.6.0 or better + p.endNativePainting(); +#endif + + if ( ++s==5 ) s=0; + +} + +void PWw::mousePressEvent ( QMouseEvent *me ) { + lastx = me->x(); + lasty = me->y(); + if(showCancel) { + int buttom_offset = myheight-15; + if (lastx > 0 && lastx < mywidth && lasty > buttom_offset && lasty < buttom_offset+16) { +// std::cerr << "cancel clicked!" << std::endl; + emit cancelReceivedByUser(true); + } + } +} + +void PWw::mouseMoveEvent ( QMouseEvent *me ) { + move ( me->globalX()-lastx,me->globalY()-lasty ); +} + +void PWw::doCancelReceived(bool){ + doCancel = true; +} + +void progress ( PWw *p, long long int progress_step ) { + if ( p != NULL ) + p->step(progress_step); +} + + +/**************************************************************************/ + +AddLnk::AddLnk (GuiSlave *c, QWidget *parent ) + : QDialog ( parent,"addlnkdialog",true ) { + + caller = c; + setName ( "addlnkdialog" ); + setIcon ( *get_p_icon() ); + + setSizeGripEnabled ( TRUE ); + + vbox = new Q3VBoxLayout ( this,5,5 ); + + + hbox1 = new Q3HBoxLayout ( 0,5,5 ); + hbox2 = new Q3HBoxLayout ( 0,5,5 ); + + label = new QLabel ( this, "textLabel6" ); + + fname = new QLineEdit ( this, "FnameLineedit" ); + bselect = new QPushButton ( this,"SelectFname" ); + bselect->setText ( "..." ); + bselect->setMaximumWidth ( 30 ); + + hbox1->addWidget ( fname ); + hbox1->addWidget ( bselect ); + + buttonOk = new QPushButton ( this,"bok" ); + buttonOk->setMinimumWidth ( 80 ); + buttonCancel = new QPushButton ( this,"bcan" ); + buttonCancel->setMinimumWidth ( 80 ); + + hbox2->addStretch(); + hbox2->addWidget ( buttonOk ); + hbox2->addWidget ( buttonCancel ); + hbox2->addStretch(); + + vbox->addWidget ( label ); + vbox->addLayout ( hbox1 ); + vbox->addStretch(); + vbox->addLayout ( hbox2 ); + resize ( 350,100 ); + languageChange(); + + connect ( buttonOk,SIGNAL ( clicked() ),this,SLOT ( sok() ) ); + connect ( buttonCancel,SIGNAL ( clicked() ),this,SLOT ( scancel() ) ); + connect ( bselect,SIGNAL ( clicked() ),this,SLOT ( sselect() ) ); + ok = false; +} + + +void AddLnk::languageChange() { + setCaption ( tr ( "Add a \"Catalog Link\" to the database" ) ); + label->setText ( tr ( "Location of the .hcf file:" ) ); + + buttonCancel->setText ( tr ( "Cancel" ) ); + buttonOk->setText ( tr ( "Ok" ) ); +} + +int AddLnk::sok ( void ) { + ok = true; + close(); + return 0; +} + +int AddLnk::scancel ( void ) { + ok = false; + close(); + return 0; +} + +int AddLnk::sselect ( void ) { + QString fn; + fn = QFileDialog::getOpenFileName(0, tr ( "Open a file..." ), caller->mainw->cconfig->lastDir, tr ( "CdCat databases (*.hcf )" )); + if ( fn.isEmpty() ) return 0; + + fname->setText ( fn ); + return 0; +} + diff -Nru cdcat-1.01b/src/adddialog.h cdcat-1.2/src/adddialog.h --- cdcat-1.01b/src/adddialog.h 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/adddialog.h 2011-02-03 11:42:55.000000000 +0000 @@ -14,30 +14,39 @@ #include #include #include - -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; +#include +//Added by qt3to4: +#include +#include +#include +#include +#include +#include +#include + +class Q3VBoxLayout; +class Q3HBoxLayout; +class Q3GridLayout; class QComboBox; class QLabel; class QLineEdit; -class QListView; -class QListViewItem; +class Q3ListView; +class Q3ListViewItem; class QPushButton; class QSpinBox; -class QMultiLineEdit; +class Q3MultiLineEdit; +class QCheckbox; class DirectoryView; class GuiSlave; class QApplication; class DataBase; -class addDialog : public QDialog -{ +class addDialog : public QDialog { Q_OBJECT public: - - addDialog(GuiSlave *c,QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); + + addDialog ( GuiSlave *c,QWidget* parent = 0, const char* name = 0, bool modal = FALSE, Qt::WFlags fl = 0 ); ~addDialog(); int volumename; @@ -49,34 +58,43 @@ QLabel* textLabel5; QLabel* textLabel4; QLabel* textLabel3; + QLabel* textLabelCategory; QPushButton* buttonCancel; QPushButton* buttonOK; QPushButton* buttonPli; - QMultiLineEdit *teComm; + Q3MultiLineEdit *teComm; QLineEdit* leOwner; + QLineEdit* leCategory; QComboBox* cbType; QSpinBox* sbNumber; QLineEdit* leName; DirectoryView* dirView; +#ifndef _WIN32 + QCheckBox *cbAutoDetectAtMount; +#endif protected: - QGridLayout* addDialogLayout; - QVBoxLayout* layout10; - QHBoxLayout* layout9; - QVBoxLayout* layout8; - QVBoxLayout* layout7; - QHBoxLayout* layout2; - QHBoxLayout* layout3; - QHBoxLayout* layout4; - QGridLayout* layout5; - QHBoxLayout* layout1; + Q3GridLayout* addDialogLayout; + Q3VBoxLayout* layout10; + Q3HBoxLayout* layout11; + Q3VBoxLayout* layout12; + Q3HBoxLayout* layout9; + Q3VBoxLayout* layout8; + Q3VBoxLayout* layout7; + Q3HBoxLayout* layout2; + Q3HBoxLayout* layout3; + Q3HBoxLayout* layout4; + Q3GridLayout* layout5; + Q3HBoxLayout* layout1; protected slots: virtual void languageChange(); int bOk(); int bCan(); int sread(); - int setMediaName(const QString & ds); + int setMediaName ( const QString & ds ); + void autoDetectAtMountToggled(); + void cbTypeToggeled(int type); private: QPixmap image0; @@ -91,64 +109,88 @@ int OK; int type; int serial; - QString dComm,dName,dOwner,dDir; + QString dComm,dName,dOwner,dDir, dCategory; + +}; + + +class PWw : public QWidget { +Q_OBJECT +public: + int lastx,lasty; + int s; + int refreshTime; + QApplication *appl; + PWw ( QWidget *parent,QApplication *qapp = NULL, bool showProgress=false, long long int steps=0, QString progresstext="", bool showCancel=false ); + int begintext; + int begincanceltext; + int myheight; + int mywidth; + int baseheight; + int fontheight; + bool showProgress; + bool doCancel; + long long int steps; + long long int progress_step; + QString progresstext; + + void setProgressText ( QString progresstext ); + void setCancel(bool showCancel); + void step ( long long int progress_step=0 ); + void end ( void ); + +signals: + void cancelReceivedByUser(bool state); + +protected: + QTime t; + QList anim_list; + void paintEvent ( QPaintEvent *pe ); + void mouseMoveEvent ( QMouseEvent *me ); + void mousePressEvent ( QMouseEvent *me ); + +private: + bool showCancel; + + +public slots: + void doCancelReceived(bool); }; +void progress ( PWw *p, long long int progress_step=0 ); -class PWw : public QWidget - { - Q_OBJECT - public: - int lastx,lasty; - int s; - int refreshTime; - QApplication *appl; - PWw(QWidget *parent,QApplication *qapp = NULL); - int begintext; - - void step(void); - void end (void); - - protected: - - QTime t; - void paintEvent(QPaintEvent *pe); - void mouseMoveEvent(QMouseEvent *me); - void mousePressEvent(QMouseEvent *me); - }; - -void progress(PWw *p); - - -class AddLnk : public QDialog - { - Q_OBJECT - - public: - AddLnk(QWidget *parent); - - bool ok; - QLineEdit *fname; - QPushButton *bselect; - QPushButton *buttonOk; - QPushButton *buttonCancel; - QLabel *label; - - QVBoxLayout *vbox; - - QHBoxLayout *hbox1; - QHBoxLayout *hbox2; - - public slots: - - int sselect(void); - int sok(void); - int scancel(void); + +class AddLnk : public QDialog { + Q_OBJECT + +public: + AddLnk ( GuiSlave *c, QWidget *parent ); + + bool ok; + QLineEdit *fname; + QPushButton *bselect; + QPushButton *buttonOk; + QPushButton *buttonCancel; + QLabel *label; + + Q3VBoxLayout *vbox; + + Q3HBoxLayout *hbox1; + Q3HBoxLayout *hbox2; + +public slots: + + int sselect ( void ); + int sok ( void ); + int scancel ( void ); protected slots: virtual void languageChange(); - - }; + +protected: + GuiSlave *caller; + +}; #endif // ADDDIALOG_H diff -Nru cdcat-1.01b/src/borrow.cpp cdcat-1.2/src/borrow.cpp --- cdcat-1.01b/src/borrow.cpp 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/borrow.cpp 2010-11-24 08:11:08.000000000 +0000 @@ -1,107 +1,106 @@ /**************************************************************************** Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak ****************************************************************************/ - + #include "borrow.h" #include "icons.h" -#include "recode.h" #include "dbase.h" #include "cdcat.h" #include #include #include -#include +#include #include #include #include #include -#include +#include #include -#include +#include #include #include #include +//Added by qt3to4: +#include +#include char *buff=NULL; -borrowDialog::borrowDialog(QString mname,QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, fl ) +borrowDialog::borrowDialog ( QString mname,QWidget* parent, const char* name, bool modal, Qt::WFlags fl ) + : QDialog ( parent, name, modal, fl ) { - ok = 0; + ok = 0; if ( !name ) - setName( "borrowDialog" ); - setSizeGripEnabled( TRUE ); - setIcon(*get_t_sborrow_icon()); - - borrowDialogLayout = new QVBoxLayout( this, 11, 6, "borrowDialogLayout"); - - textLabel = new QLabel( this, "textLabel" ); - borrowDialogLayout->addWidget( textLabel ); - - leWho = new QLineEdit( this, "leWho" ); - borrowDialogLayout->addWidget( leWho ); - QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); - borrowDialogLayout->addItem( spacer ); - - layout4 = new QHBoxLayout( 0, 0, 6, "layout4"); - QSpacerItem* spacer_2 = new QSpacerItem( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout4->addItem( spacer_2 ); - - buttonOk = new QPushButton( this, "buttonOk" ); - buttonOk->setMinimumSize( QSize( 80, 0 ) ); - layout4->addWidget( buttonOk ); - - buttonCancel = new QPushButton( this, "buttonCancel" ); - buttonCancel->setMinimumSize( QSize( 80, 0 ) ); - layout4->addWidget( buttonCancel ); - QSpacerItem* spacer_3 = new QSpacerItem( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout4->addItem( spacer_3 ); - borrowDialogLayout->addLayout( layout4 ); + setName ( "borrowDialog" ); + setSizeGripEnabled ( TRUE ); + setIcon ( *get_t_sborrow_icon() ); + + borrowDialogLayout = new Q3VBoxLayout ( this, 11, 6, "borrowDialogLayout" ); + + textLabel = new QLabel ( this, "textLabel" ); + borrowDialogLayout->addWidget ( textLabel ); + + leWho = new QLineEdit ( this, "leWho" ); + borrowDialogLayout->addWidget ( leWho ); + QSpacerItem* spacer = new QSpacerItem ( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); + borrowDialogLayout->addItem ( spacer ); + + layout4 = new Q3HBoxLayout ( 0, 0, 6, "layout4" ); + QSpacerItem* spacer_2 = new QSpacerItem ( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout4->addItem ( spacer_2 ); + + buttonOk = new QPushButton ( this, "buttonOk" ); + buttonOk->setMinimumSize ( QSize ( 80, 0 ) ); + layout4->addWidget ( buttonOk ); + + buttonCancel = new QPushButton ( this, "buttonCancel" ); + buttonCancel->setMinimumSize ( QSize ( 80, 0 ) ); + layout4->addWidget ( buttonCancel ); + QSpacerItem* spacer_3 = new QSpacerItem ( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout4->addItem ( spacer_3 ); + borrowDialogLayout->addLayout ( layout4 ); languageChange(); - resize( QSize(421, 113).expandedTo(minimumSizeHint()) ); - - - textLabel->setText( tr( "I borrow the \"%1\" named media to:" ).arg(mname) ); - - connect(buttonOk,SIGNAL(clicked()),this,SLOT(sok())); - connect(buttonCancel,SIGNAL(clicked()),this,SLOT(scancel())); - - - -} - -int borrowDialog::sok(void) - { - ok = 1; - if((leWho->text()).isEmpty()) - m = tr("unknown"); - else - m = leWho->text(); - close(); - return 0; - } - - -int borrowDialog::scancel(void) - { - ok = 0; - close(); - return 0; + resize ( QSize ( 421, 113 ).expandedTo ( minimumSizeHint() ) ); + + + textLabel->setText ( tr ( "I borrow the \"%1\" named media to:" ).arg ( mname ) ); - } + connect ( buttonOk,SIGNAL ( clicked() ),this,SLOT ( sok() ) ); + connect ( buttonCancel,SIGNAL ( clicked() ),this,SLOT ( scancel() ) ); + + + +} + +int borrowDialog::sok ( void ) { + ok = 1; + if ( ( leWho->text() ).isEmpty() ) + m = tr ( "unknown" ); + else + m = leWho->text(); + close(); + return 0; +} + + +int borrowDialog::scancel ( void ) { + ok = 0; + close(); + return 0; + +} /* * Destroys the object and frees any allocated resources */ -borrowDialog::~borrowDialog() -{ +borrowDialog::~borrowDialog() { // no need to delete child widgets, Qt does it all for us } @@ -109,98 +108,96 @@ * Sets the strings of the subwidgets using the current * language. */ -void borrowDialog::languageChange() -{ - setCaption( tr( "Borrowing..." ) ); - textLabel->setText( tr( "I borrow the \"\" named media to:" ) ); - buttonOk->setText( tr( "Ok" ) ); - buttonCancel->setText( tr( "Cancel" ) ); +void borrowDialog::languageChange() { + setCaption ( tr ( "Borrowing..." ) ); + textLabel->setText ( tr ( "I borrow the \"\" named media to:" ) ); + buttonOk->setText ( tr ( "Ok" ) ); + buttonCancel->setText ( tr ( "Cancel" ) ); } /**************************************************************************** -** CLASS borrowingDialog +** CLASS borrowingDialog ****************************************************************************/ -borrowingDialog::borrowingDialog(DataBase *dbp,QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, fl ) +borrowingDialog::borrowingDialog ( DataBase *dbp,QWidget* parent, const char* name, bool modal, Qt::WFlags fl ) + : QDialog ( parent, name, modal, fl ) { last_row_clicked = -1; ch = 0; db = dbp; if ( !name ) - setName( "borrowingDialog" ); - setSizeGripEnabled( TRUE ); - setIcon(*get_m_borrow_icon()); - borrowingDialogLayout = new QVBoxLayout( this, 11, 6, "borrowingDialogLayout"); - - layout1 = new QHBoxLayout( 0, 0, 6, "layout1"); - QSpacerItem* spacer = new QSpacerItem( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout1->addItem( spacer ); - - textLabel = new QLabel( this, "textLabel" ); - layout1->addWidget( textLabel ); - QSpacerItem* spacer_2 = new QSpacerItem( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout1->addItem( spacer_2 ); - borrowingDialogLayout->addLayout( layout1 ); - QSpacerItem* spacer_3 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Fixed ); - borrowingDialogLayout->addItem( spacer_3 ); - - layout3 = new QHBoxLayout( 0, 0, 6, "layout3"); - - cbOnlyBorrowed = new QCheckBox( this, "cbOnlyBorrowed" ); - layout3->addWidget( cbOnlyBorrowed ); - QSpacerItem* spacer_4 = new QSpacerItem( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout3->addItem( spacer_4 ); - - buttonClear = new QPushButton( this, "buttonClear" ); - layout3->addWidget( buttonClear ); - borrowingDialogLayout->addLayout( layout3 ); - - table = new QTable( this, "table" ); - - borrowingDialogLayout->addWidget( table ); - - layout4 = new QHBoxLayout( 0, 0, 6, "layout4"); - QSpacerItem* spacer_5 = new QSpacerItem( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout4->addItem( spacer_5 ); - - buttonOk = new QPushButton( this, "buttonOk" ); - buttonOk->setMinimumSize( QSize( 80, 0 ) ); - layout4->addWidget( buttonOk ); + setName ( "borrowingDialog" ); + setSizeGripEnabled ( TRUE ); + setIcon ( *get_m_borrow_icon() ); + borrowingDialogLayout = new Q3VBoxLayout ( this, 11, 6, "borrowingDialogLayout" ); + + layout1 = new Q3HBoxLayout ( 0, 0, 6, "layout1" ); + QSpacerItem* spacer = new QSpacerItem ( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout1->addItem ( spacer ); + + textLabel = new QLabel ( this, "textLabel" ); + layout1->addWidget ( textLabel ); + QSpacerItem* spacer_2 = new QSpacerItem ( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout1->addItem ( spacer_2 ); + borrowingDialogLayout->addLayout ( layout1 ); + QSpacerItem* spacer_3 = new QSpacerItem ( 20, 20, QSizePolicy::Minimum, QSizePolicy::Fixed ); + borrowingDialogLayout->addItem ( spacer_3 ); + + layout3 = new Q3HBoxLayout ( 0, 0, 6, "layout3" ); + + cbOnlyBorrowed = new QCheckBox ( this, "cbOnlyBorrowed" ); + layout3->addWidget ( cbOnlyBorrowed ); + QSpacerItem* spacer_4 = new QSpacerItem ( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout3->addItem ( spacer_4 ); + + buttonClear = new QPushButton ( this, "buttonClear" ); + layout3->addWidget ( buttonClear ); + borrowingDialogLayout->addLayout ( layout3 ); + + table = new Q3Table ( this, "table" ); + + borrowingDialogLayout->addWidget ( table ); + + layout4 = new Q3HBoxLayout ( 0, 0, 6, "layout4" ); + QSpacerItem* spacer_5 = new QSpacerItem ( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout4->addItem ( spacer_5 ); + + buttonOk = new QPushButton ( this, "buttonOk" ); + buttonOk->setMinimumSize ( QSize ( 80, 0 ) ); + layout4->addWidget ( buttonOk ); //buttonCancel = new QPushButton( this, "buttonCancel" ); //buttonCancel->setMinimumSize( QSize( 80, 0 ) ); //layout4->addWidget( buttonCancel ); - QSpacerItem* spacer_6 = new QSpacerItem( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout4->addItem( spacer_6 ); - borrowingDialogLayout->addLayout( layout4 ); - table->setFocusPolicy( QTable::ClickFocus ); + QSpacerItem* spacer_6 = new QSpacerItem ( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout4->addItem ( spacer_6 ); + borrowingDialogLayout->addLayout ( layout4 ); + table->setFocusPolicy ( Qt::ClickFocus ); languageChange(); - - resize( QSize(497, 341).expandedTo(minimumSizeHint()) ); - - connect(buttonOk,SIGNAL(clicked()),this,SLOT(sok())); - //connect(buttonCancel,SIGNAL(clicked()),this,SLOT(scancel())); - - connect(table,SIGNAL(valueChanged(int,int)),this,SLOT(schanged(int,int))); - connect(cbOnlyBorrowed,SIGNAL(clicked()),this,SLOT(sonlyb())); - connect(buttonClear,SIGNAL(clicked()),this,SLOT(sclear())); - - connect( table, SIGNAL( clicked(int,int,int,const QPoint&) ), table, SLOT( setFocus() ) ); + + resize ( QSize ( 497, 341 ).expandedTo ( minimumSizeHint() ) ); + + connect ( buttonOk,SIGNAL ( clicked() ),this,SLOT ( sok() ) ); + //connect(buttonCancel,SIGNAL(clicked()),this,SLOT(scancel())); + + connect ( table,SIGNAL ( valueChanged ( int,int ) ),this,SLOT ( schanged ( int,int ) ) ); + connect ( cbOnlyBorrowed,SIGNAL ( clicked() ),this,SLOT ( sonlyb() ) ); + connect ( buttonClear,SIGNAL ( clicked() ),this,SLOT ( sclear() ) ); + + connect ( table, SIGNAL ( clicked ( int,int,int,const QPoint& ) ), table, SLOT ( setFocus() ) ); // connect(table,SIGNAL(clicked(int,int,int,const QPoint&)),this,SLOT(click(int,int,int,const QPoint&))); - connect(table,SIGNAL(contextMenuRequested(int,int,const QPoint&)),this,SLOT(click(int,int,const QPoint&))); + connect ( table,SIGNAL ( contextMenuRequested ( int,int,const QPoint& ) ),this,SLOT ( click ( int,int,const QPoint& ) ) ); filltable(); } /* * Destroys the object and frees any allocated resources */ -borrowingDialog::~borrowingDialog() -{ +borrowingDialog::~borrowingDialog() { // no need to delete child widgets, Qt does it all for us } @@ -208,266 +205,226 @@ * Sets the strings of the subwidgets using the current * language. */ -void borrowingDialog::languageChange() -{ - setCaption( tr( "Borrowing info..." ) ); - textLabel->setText( tr( "Media borrowing info:" ) ); - cbOnlyBorrowed->setText( tr( "Show only borrowed items" ) ); - buttonClear->setText( tr( "Clear all borrowing info" ) ); - table->horizontalHeader()->setLabel( 0, tr( "Media" ) ); - table->horizontalHeader()->setLabel( 1, tr( "Borrowed" ) ); - table->horizontalHeader()->setLabel( 2, tr( "where is it now?" ) ); +void borrowingDialog::languageChange() { + setCaption ( tr ( "Borrowing info..." ) ); + textLabel->setText ( tr ( "Media borrowing info:" ) ); + cbOnlyBorrowed->setText ( tr ( "Show only borrowed items" ) ); + buttonClear->setText ( tr ( "Clear all borrowing info" ) ); + table->horizontalHeader()->setLabel ( 0, tr ( "Media" ) ); + table->horizontalHeader()->setLabel ( 1, tr ( "Borrowed" ) ); + table->horizontalHeader()->setLabel ( 2, tr ( "where is it now?" ) ); - buttonOk->setText( tr( "Ok" ) ); + buttonOk->setText ( tr ( "Ok" ) ); //buttonCancel->setText( tr( "Cancel" ) ); } -int borrowingDialog::sok() -{ - if(ch) - sstore(); - close(); - return 0; +int borrowingDialog::sok() { + if ( ch ) + sstore(); + close(); + return 0; } -int borrowingDialog::scancel() -{ - close(); - return 0; +int borrowingDialog::scancel() { + close(); + return 0; } -int borrowingDialog::filltable() -{ - if(db == NULL) return 0; +int borrowingDialog::filltable() { + if ( db == NULL ) return 0; + + int i=0; + int num=0; + Node *tmp=NULL; + + for ( i=0;inumRows();i++ ) { + table->clearCell ( i,0 ); + table->clearCell ( i,1 ); + table->clearCell ( i,2 ); + } + + table->setNumRows ( 0 ); + + table->setNumCols ( 3 ); + table->horizontalHeader()->setLabel ( 0 , tr ( "Media" ) ); + table->horizontalHeader()->setLabel ( 1 , tr ( "Borrowed" ) ); + table->horizontalHeader()->setLabel ( 2 , tr ( "where is it now?" ) ); - int i=0; - int num=0; - Node *tmp=NULL; - - for(i=0;inumRows();i++) - { - table->clearCell(i,0); - table->clearCell(i,1); - table->clearCell(i,2); - } - - table->setNumRows( 0 ); - - table->setNumCols( 3 ); - table->horizontalHeader()->setLabel( 0 , tr( "Media" ) ); - table->horizontalHeader()->setLabel( 1 , tr( "Borrowed" ) ); - table->horizontalHeader()->setLabel( 2 , tr( "where is it now?" ) ); - - table->setNumRows( table->numRows() + 1 ); - table->verticalHeader()->setLabel( table->numRows() - 1, tr( "0" ) ); - - tmp = (db->getRootNode())->child; - for(num=0;tmp != NULL;tmp=tmp->next) - { - if(tmp->type != HC_MEDIA) //This is not a media node - continue; - - if(cbOnlyBorrowed->isChecked() && ((DBMedia *)(tmp->data))->borrowing == NULL) - continue; - - table->setNumRows( num + 1 ); - table->verticalHeader()->setLabel( num, QString("%1").arg(num + 1)); - - table->setItem(num,0,new QTableItem(table,QTableItem::Never,tmp->getNameOf())); - - table->setItem(num,1,new QTableItem(table,QTableItem::OnTyping, - ((DBMedia *)(tmp->data))->borrowing == NULL ? tr("No") : tr("Yes"))); - - if(((DBMedia *)(tmp->data))->borrowing == NULL) - table->setItem(num,2,new QTableItem(table,QTableItem::OnTyping,"")); - else - table->setItem(num,2,new QTableItem(table,QTableItem::OnTyping,((DBMedia *)(tmp->data))->borrowing)); - - table->updateCell(num,0); - table->updateCell(num,1); - table->updateCell(num,2); - - num++; - } - - table->setSorting( FALSE ); - table->setSelectionMode( QTable::NoSelection ); - - - return 0; + table->setNumRows ( table->numRows() + 1 ); + table->verticalHeader()->setLabel ( table->numRows() - 1, tr ( "0" ) ); + + tmp = ( db->getRootNode() )->child; + for ( num=0;tmp != NULL;tmp=tmp->next ) { + if ( tmp->type != HC_MEDIA ) //This is not a media node + continue; + + if ( cbOnlyBorrowed->isChecked() && ( ( DBMedia * ) ( tmp->data ) )->borrowing.isEmpty() ) + continue; + + table->setNumRows ( num + 1 ); + table->verticalHeader()->setLabel ( num, QString ( "%1" ).arg ( num + 1 ) ); + + table->setItem ( num,0,new Q3TableItem ( table,Q3TableItem::Never,tmp->getNameOf() ) ); + + table->setItem ( num,1,new Q3TableItem ( table,Q3TableItem::OnTyping, + ( ( DBMedia * ) ( tmp->data ) )->borrowing.isEmpty() ? tr ( "No" ) : tr ( "Yes" ) ) ); + + if ( ( ( DBMedia * ) ( tmp->data ) )->borrowing.isEmpty() ) + table->setItem ( num,2,new Q3TableItem ( table,Q3TableItem::OnTyping,"" ) ); + else + table->setItem ( num,2,new Q3TableItem ( table,Q3TableItem::OnTyping, ( ( DBMedia * ) ( tmp->data ) )->borrowing ) ); + + table->updateCell ( num,0 ); + table->updateCell ( num,1 ); + table->updateCell ( num,2 ); + + num++; + } + + table->setSorting ( FALSE ); + table->setSelectionMode ( Q3Table::NoSelection ); + + + return 0; } -int borrowingDialog::schanged(int row,int col) -{ - QString newv; - ch = 1; - - newv=table->text(row,col); - - if(col == 1) //Yes or No - { - if(newv.lower() == tr("Yes").lower() || newv.lower() == tr("No").lower()) - { - if(newv.lower() == tr("No").lower()) - { - table->setText(row,1,tr("No")); - table->setText(row,2,""); - } - else //Yes - { - table->setText(row,1,tr("Yes")); - if(table->text(row,2).isEmpty()) - table->setText(row,2,tr("unknown")); - } - } - else - { - QMessageBox::warning(this,tr("Error"),tr("Set \"Yes\" or \"No\" !")); - if(table->text(row,2).isEmpty()) - table->setText(row,1,tr("No")); - else - table->setText(row,1,tr("Yes")); - } - } - - if(col == 2) //Man name, or place - { - if(newv.isEmpty()) - table->setText(row,1,tr("No")); - else - table->setText(row,1,tr("Yes")); - - } - - return 0; +int borrowingDialog::schanged ( int row,int col ) { + QString newv; + ch = 1; + + newv=table->text ( row,col ); + + if ( col == 1 ) { //Yes or No + if ( newv.lower() == tr ( "Yes" ).lower() || newv.lower() == tr ( "No" ).lower() ) { + if ( newv.lower() == tr ( "No" ).lower() ) { + table->setText ( row,1,tr ( "No" ) ); + table->setText ( row,2,"" ); + } else { //Yes + table->setText ( row,1,tr ( "Yes" ) ); + if ( table->text ( row,2 ).isEmpty() ) + table->setText ( row,2,tr ( "unknown" ) ); + } + } else { + QMessageBox::warning ( this,tr ( "Error" ),tr ( "Set \"Yes\" or \"No\" !" ) ); + if ( table->text ( row,2 ).isEmpty() ) + table->setText ( row,1,tr ( "No" ) ); + else + table->setText ( row,1,tr ( "Yes" ) ); + } + } + + if ( col == 2 ) { //Man name, or place + if ( newv.isEmpty() ) + table->setText ( row,1,tr ( "No" ) ); + else + table->setText ( row,1,tr ( "Yes" ) ); + + } + + return 0; } -int borrowingDialog::sonlyb(void) -{ - - if(ch) - if(0==QMessageBox::warning(this,tr("Warning"),tr("Do you save the changes?"),tr("Yes"),tr("No"))) - { - sstore(); - } - - filltable(); - return 0; -} - -int borrowingDialog::sstore(void) - { - Node *tmp=(db->getRootNode())->child; - int i; - int isborrowed; - - tmp->touchDB(); - for(;tmp != NULL;tmp=tmp->next) - { - if(tmp->type != HC_MEDIA) //This is not a media node. - continue; - - isborrowed = 0; - for(i=0;inumRows();i++) - if(QString(tmp->getNameOf()) == table->text(i,0) && - (table->text(i,1)).lower() == tr("Yes").lower()) - { - isborrowed = 1; - if(((DBMedia *)(tmp->data))->borrowing != NULL) - { - delete ((DBMedia *)(tmp->data))->borrowing; - ((DBMedia *)(tmp->data))->borrowing = NULL; - } - ((DBMedia *)(tmp->data))->borrowing = mstr(recode((char *)(const char *)table->text(i,2),&buff)); - } - - if(!isborrowed) - { - if(((DBMedia *)(tmp->data))->borrowing != NULL) - { - delete ((DBMedia *)(tmp->data))->borrowing; - ((DBMedia *)(tmp->data))->borrowing = NULL; - } - } - } - - ch = 0; - return 0; - } - -int borrowingDialog::sclear(void) - { - if(0==QMessageBox::warning(this,tr("Warning"),tr("Are you sure want to clear all borrow?"),tr("Yes"),tr("No"))) - { - Node *tmp=(db->getRootNode())->child; - +int borrowingDialog::sonlyb ( void ) { + + if ( ch ) + if ( 0==QMessageBox::warning ( this,tr ( "Warning" ),tr ( "Do you save the changes?" ),tr ( "Yes" ),tr ( "No" ) ) ) { + sstore(); + } + + filltable(); + return 0; +} + +int borrowingDialog::sstore ( void ) { + Node *tmp= ( db->getRootNode() )->child; + int i; + int isborrowed; + tmp->touchDB(); - for(;tmp != NULL;tmp=tmp->next) - { - if(tmp->type != HC_MEDIA) //This is not a media node. - continue; - - if(((DBMedia *)(tmp->data))->borrowing != NULL) - { - delete ((DBMedia *)(tmp->data))->borrowing; - ((DBMedia *)(tmp->data))->borrowing = NULL; - } - } - filltable(); - } - return 0; - } - -int borrowingDialog::click(int row,int col,const QPoint& mousePos) - { - int i,j,b=0; - QString s; - if(/*button != 2 ||*/ col != 2) return 0; - - QPopupMenu *pm = new QPopupMenu(this,"bpm"); - QPopupMenu *pma = new QPopupMenu(this,"bpma"); - pm->insertItem(tr("I got it back!"),this,SLOT(click_clr())); - pm->insertItem(tr("<< "),pma); - - - for(i=0;inumRows();i++) - { - s = table->text(i,2); - b = 0; - if(s.isEmpty()) continue; - for(j=i-1;j>=0;j--) - { - if(s == table->text(j,2)) b=1; - } - if(!b) - { - pma->insertItem(s,i); - } - } - - connect(pma,SIGNAL(activated(int)),this,SLOT(click_set(int))); - last_row_clicked = row; - pm->exec(mousePos); - return 0; - } - -int borrowingDialog::click_clr(void) - { - table->setText(last_row_clicked,2,""); - table->setText(last_row_clicked,1,tr("No")); - ch=1; - return 0; - } - -int borrowingDialog::click_set(int a) - { - table->setText(last_row_clicked,2,table->text(a,2)); - table->setText(last_row_clicked,1,tr("Yes")); - ch=1; - return 0; - } + for ( ;tmp != NULL;tmp=tmp->next ) { + if ( tmp->type != HC_MEDIA ) //This is not a media node. + continue; + + isborrowed = 0; + for ( i=0;inumRows();i++ ) + if ( tmp->getNameOf() == table->text ( i,0 ) && + ( table->text ( i,1 ) ).lower() == tr ( "Yes" ).lower() ) { + isborrowed = 1; + if ( ! ( ( ( DBMedia * ) ( tmp->data ) )->borrowing.isEmpty() ) ) + ( ( DBMedia * ) ( tmp->data ) )->borrowing = "" ; + ( ( DBMedia * ) ( tmp->data ) )->borrowing = table->text ( i,2 ); + } + + if ( !isborrowed ) + if ( ! ( ( ( DBMedia * ) ( tmp->data ) )->borrowing.isEmpty() ) ) + ( ( DBMedia * ) ( tmp->data ) )->borrowing = "" ; + } + + ch = 0; + return 0; +} + +int borrowingDialog::sclear ( void ) { + if ( 0==QMessageBox::warning ( this,tr ( "Warning" ),tr ( "Are you sure want to clear all borrow?" ),tr ( "Yes" ),tr ( "No" ) ) ) { + Node *tmp= ( db->getRootNode() )->child; + + tmp->touchDB(); + for ( ;tmp != NULL;tmp=tmp->next ) { + if ( tmp->type != HC_MEDIA ) //This is not a media node. + continue; + + if ( ! ( ( ( DBMedia * ) ( tmp->data ) )->borrowing.isEmpty() ) ) + ( ( DBMedia * ) ( tmp->data ) )->borrowing = ""; + } + filltable(); + } + return 0; +} + +int borrowingDialog::click ( int row,int col,const QPoint& mousePos ) { + int i,j,b=0; + QString s; + if ( /*button != 2 ||*/ col != 2 ) return 0; + + Q3PopupMenu *pm = new Q3PopupMenu ( this,"bpm" ); + Q3PopupMenu *pma = new Q3PopupMenu ( this,"bpma" ); + pm->insertItem ( tr ( "I got it back!" ),this,SLOT ( click_clr() ) ); + pm->insertItem ( tr ( "<< " ),pma ); + + + for ( i=0;inumRows();i++ ) { + s = table->text ( i,2 ); + b = 0; + if ( s.isEmpty() ) continue; + for ( j=i-1;j>=0;j-- ) { + if ( s == table->text ( j,2 ) ) b=1; + } + if ( !b ) { + pma->insertItem ( s,i ); + } + } + + connect ( pma,SIGNAL ( activated ( int ) ),this,SLOT ( click_set ( int ) ) ); + last_row_clicked = row; + pm->exec ( mousePos ); + return 0; +} + +int borrowingDialog::click_clr ( void ) { + table->setText ( last_row_clicked,2,"" ); + table->setText ( last_row_clicked,1,tr ( "No" ) ); + ch=1; + return 0; +} + +int borrowingDialog::click_set ( int a ) { + table->setText ( last_row_clicked,2,table->text ( a,2 ) ); + table->setText ( last_row_clicked,1,tr ( "Yes" ) ); + ch=1; + return 0; +} diff -Nru cdcat-1.01b/src/borrow.h cdcat-1.2/src/borrow.h --- cdcat-1.01b/src/borrow.h 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/borrow.h 2010-11-24 08:11:08.000000000 +0000 @@ -6,33 +6,37 @@ License : GPL Copyright : (C) 2003 Peter Deak ****************************************************************************/ - + #ifndef BORROW_H #define BORROW_H #include #include +//Added by qt3to4: +#include +#include +#include +#include class QCheckBox; -class QTable; -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; +class Q3Table; +class Q3VBoxLayout; +class Q3HBoxLayout; +class Q3GridLayout; class QLabel; class QLineEdit; class QPushButton; class DataBase; class QPoint; -class borrowDialog : public QDialog -{ +class borrowDialog : public QDialog { Q_OBJECT public: QString m; int ok; - borrowDialog(QString mname,QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); + borrowDialog ( QString mname,QWidget* parent = 0, const char* name = 0, bool modal = FALSE, Qt::WFlags fl = 0 ); ~borrowDialog(); QLabel* textLabel; @@ -42,56 +46,55 @@ protected: - QVBoxLayout* borrowDialogLayout; - QHBoxLayout* layout4; + Q3VBoxLayout* borrowDialogLayout; + Q3HBoxLayout* layout4; protected slots: - int sok(void); - int scancel(void); + int sok ( void ); + int scancel ( void ); virtual void languageChange(); - + }; //=============================================================== -class borrowingDialog : public QDialog -{ +class borrowingDialog : public QDialog { Q_OBJECT public: int ch; - borrowingDialog(DataBase *dbp, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); + borrowingDialog ( DataBase *dbp, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, Qt::WFlags fl = 0 ); ~borrowingDialog(); DataBase *db; QLabel* textLabel; QCheckBox* cbOnlyBorrowed; QPushButton* buttonClear; - QTable* table; + Q3Table* table; QPushButton* buttonOk; QPushButton* buttonCancel; + int last_row_clicked; public slots: - int last_row_clicked; - int sok(void); - int scancel(void); - int sclear(void); - int filltable(void); - int schanged(int row,int col); - int sonlyb(); - int sstore(); - int click(int row,int col,const QPoint & mousePos); - int click_set(int a); - int click_clr(void); - + int sok ( void ); + int scancel ( void ); + int sclear ( void ); + int filltable ( void ); + int schanged ( int row,int col ); + int sonlyb(); + int sstore(); + int click ( int row,int col,const QPoint & mousePos ); + int click_set ( int a ); + int click_clr ( void ); + protected: - QVBoxLayout* borrowingDialogLayout; - QHBoxLayout* layout1; - QHBoxLayout* layout3; - QHBoxLayout* layout4; + Q3VBoxLayout* borrowingDialogLayout; + Q3HBoxLayout* layout1; + Q3HBoxLayout* layout3; + Q3HBoxLayout* layout4; protected slots: virtual void languageChange(); diff -Nru cdcat-1.01b/src/build_translations_mac.sh cdcat-1.2/src/build_translations_mac.sh --- cdcat-1.01b/src/build_translations_mac.sh 1970-01-01 00:00:00.000000000 +0000 +++ cdcat-1.2/src/build_translations_mac.sh 2011-01-30 16:56:17.000000000 +0000 @@ -0,0 +1,8 @@ +#!/bin/sh +files=$(find . -type f -name '*.ts') +for f in $files; do + f2=$(echo $f |sed -e 's/ts$/qm/g') + echo "$0: $f to $f2" + lrelease -silent -qm $f2 $f + cp $f2 ./cdcat.app/Contents/MacOS/lang/ +done diff -Nru cdcat-1.01b/src/cdcat.cpp cdcat-1.2/src/cdcat.cpp --- cdcat-1.01b/src/cdcat.cpp 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/cdcat.cpp 2011-01-17 10:39:02.000000000 +0000 @@ -17,10 +17,11 @@ #include #include #include +//Added by qt3to4: +#include #include "dbase.h" #include "cdcat.h" -#include "config.h" #include "mainwidget.h" #include "icons.h" @@ -29,173 +30,160 @@ using namespace std; -int main( int argi, char **argc ) - { - QApplication app( argi, argc ); - CdCatConfig *cconfig = new CdCatConfig();; - QTranslator *translator = 0; - int font_size = 8; - - if(argi > 1) - cconfig->setParameter(argc[1]); - - if ( cconfig->readConfig() == 0 ) - font_size = cconfig->fsize; - else - cconfig->writeConfig(); +bool* init_debug_info() { + if (DEBUG_INFO_ENABLED == NULL) + DEBUG_INFO_ENABLED = new bool(); + return DEBUG_INFO_ENABLED; +} + +int main ( int argi, char **argc ) { + QApplication app ( argi, argc ); + CdCatConfig *cconfig = new CdCatConfig(); + QTranslator *translator = 0; + int font_size = 8; + + if ( argi > 1 ) + cconfig->setParameter ( argc[1] ); + + if ( cconfig->readConfig() == 0 ) + font_size = cconfig->fsize; + else + cconfig->writeConfig(); + + DEBUG_INFO_ENABLED = init_debug_info(); + *DEBUG_INFO_ENABLED = cconfig->debug_info_enabled; + if (*DEBUG_INFO_ENABLED) + cerr << qPrintable(QString("DEBUG_INFO_ENABLED: true")) << endl; + else + cerr << qPrintable(QString("DEBUG_INFO_ENABLED: false")) << endl; - QFont *font = new QFont(); - font->setPointSize( font_size ); + QFont *font = new QFont(); + font->setPointSize ( font_size ); #ifdef _WIN32 - QString langpath( applicationDirPath(argc) + "/lang/cdcat_" ); - langpath += cconfig->lang; - langpath += ".qm"; + QString langpath ( applicationDirPath ( argc ) + "/lang/cdcat_" ); + langpath += cconfig->lang; + langpath += ".qm"; #else - QPtrList translation_paths; - //translation_paths = new QPtrList (); - translation_paths.setAutoDelete( TRUE ); // the list owns the objects - QString locale = QTextCodec::locale(); - QString locale2 = locale.left( 2 ); - QString prefix = applicationDirPath(argc).left( applicationDirPath(argc).length() - 4 ) + "/"; // /usr/local/bin -> /usr/local - translation_paths.append( new QString( prefix + "share/cdcat/translations" ) ); - translation_paths.append( new QString( applicationDirPath( argc ) + "/lang" ) ); - translation_paths.append( new QString( prefix + "share/locale/" + locale + "/LC_MESSAGES" ) ); - translation_paths.append( new QString( prefix + "share/locale/" + locale2 + "/LC_MESSAGES" ) ); - - QString langpath; - - for ( uint i = 0; i < translation_paths.count(); ++i ) - { - //cerr <<"path: " << *translation_paths.at(i) << endl; - QFileInfo info( *translation_paths.at( i ) + "/cdcat_" + locale + ".qm" ); - if ( info.exists() ) - { - // cerr << "file " + *translation_paths.at( i ) + "/cdcat_" + locale + ".qm" + " does exist!" << endl; - langpath = *translation_paths.at( i ) + "/cdcat_" + locale + ".qm"; - } - else - { - // cerr << "file " + *translation_paths.at( i ) + "/cdcat_" + locale + ".qm" + " does NOT exist!" << endl; - QFileInfo info2( *translation_paths.at( i ) + "/cdcat_" + locale2 + ".qm" ); - if ( info2.exists() ) - { - // cerr << "file " + *translation_paths.at( i ) + "/cdcat_" + locale2 + ".qm" + " does exist!" << endl; - langpath = *translation_paths.at( i ) + "/cdcat_" + locale2 + ".qm"; - } - } + Q3PtrList translation_paths; + //translation_paths = new QPtrList (); + translation_paths.setAutoDelete ( TRUE ); // the list owns the objects + QString locale = QTextCodec::locale(); + QString locale2 = locale.left ( 2 ); + QString prefix = applicationDirPath ( argc ).left ( applicationDirPath ( argc ).length() - 4 ) + "/"; // /usr/local/bin -> /usr/local + translation_paths.append ( new QString ( prefix + "share/cdcat/translations" ) ); + translation_paths.append ( new QString ( applicationDirPath ( argc ) + "/lang" ) ); + translation_paths.append ( new QString ( prefix + "share/locale/" + locale + "/LC_MESSAGES" ) ); + translation_paths.append ( new QString ( prefix + "share/locale/" + locale2 + "/LC_MESSAGES" ) ); + + QString langpath; + + for ( uint i = 0; i < translation_paths.count(); ++i ) { + //cerr <<"path: " << *translation_paths.at(i) << endl; + QFileInfo info ( *translation_paths.at ( i ) + "/cdcat_" + locale + ".qm" ); + if ( info.exists() ) { + // cerr << "file " + *translation_paths.at( i ) + "/cdcat_" + locale + ".qm" + " does exist!" << endl; + langpath = *translation_paths.at ( i ) + "/cdcat_" + locale + ".qm"; + } else { + // cerr << "file " + *translation_paths.at( i ) + "/cdcat_" + locale + ".qm" + " does NOT exist!" << endl; + QFileInfo info2 ( *translation_paths.at ( i ) + "/cdcat_" + locale2 + ".qm" ); + if ( info2.exists() ) { + // cerr << "file " + *translation_paths.at( i ) + "/cdcat_" + locale2 + ".qm" + " does exist!" << endl; + langpath = *translation_paths.at ( i ) + "/cdcat_" + locale2 + ".qm"; + } + } - } + } #endif - if ( translator ) - { - app.removeTranslator( translator ); - delete translator; - } - - translator = new QTranslator( 0 ); - - if ( !langpath.isEmpty() ) - { - //cerr << "using language file " << langpath << endl; - translator->load( langpath, "." ); - app.installTranslator( translator ); - } - - init_icon_base(); - - CdCatMainWidget *mw = new CdCatMainWidget ( cconfig, &app, 0, "MainWindow" ); - - cconfig->defaultfont = new QFont( app.font() ); - if ( cconfig->ownfont ) - app.setFont( *font, TRUE ); - - app.setMainWidget( mw ); - - mw->show(); - app.exec(); - delete mw; - app.quit(); - return 0; //unreachable code - - } //End of main(); Exit. - - -char *mstr( const char *imp ) { - char * x; - if ( imp == NULL ) - return NULL; - x = new char[ strlen( imp ) + 1 ]; - strcpy( x, imp ); - return x; + if ( translator ) { + app.removeTranslator ( translator ); + delete translator; + } + + translator = new QTranslator ( 0 ); + + if ( !langpath.isEmpty() ) { + //cerr << "using language file " << langpath << endl; + translator->load ( langpath, "." ); + app.installTranslator ( translator ); + } + + init_icon_base(); + + CdCatMainWidget *mw = new CdCatMainWidget ( cconfig, &app, 0, "MainWindow" ); + + cconfig->defaultfont = new QFont ( app.font() ); + if ( cconfig->ownfont ) + app.setFont ( *font, TRUE ); + + app.setMainWidget ( mw ); + + mw->show(); + return app.exec(); } +char *mstr ( const char *imp ) { + char * x; + if ( imp == NULL ) + return NULL; + x = new char[ strlen ( imp ) + 1 ]; + strcpy ( x, imp ); + return x; +} -QString applicationFilePath( char **argc ) -{ +QString applicationFilePath ( char **argc ) { #ifdef Q_WS_WIN - return QDir::cleanDirPath( QFile::decodeName( "cdcat" ) ); + return QDir::cleanDirPath ( QFile::decodeName ( "cdcat" ) ); #else - QString absPath; - QString tmp( argc[ 0 ] ); - if ( tmp.startsWith( "/" ) ) - { - /* - If argv0 starts with a slash, it is already an absolute - file path. - */ - absPath = tmp; - } - else if ( tmp.find( '/' ) != -1 ) - { - /* - If argv0 contains one or more slashes, it is a file path - relative to the current directory. - */ - absPath = QDir::current().absFilePath( tmp ); - } - else - { - /* - Otherwise, the file path has to be determined using the - PATH environment variable. - */ - char *pEnv = getenv( "PATH" ); - QStringList paths( QStringList::split( QChar( ':' ), pEnv ) ); - QStringList::const_iterator p = paths.begin(); - while ( p != paths.end() ) - { - QString candidate = QDir::current().absFilePath( *p + "/" + tmp ); - if ( QFile::exists( candidate ) ) - { - absPath = candidate; - break; - } - ++p; - } - } - - absPath = QDir::cleanDirPath( absPath ); - if ( QFile::exists( absPath ) ) - { - // return resolveSymlinks( absPath ); - return absPath; - } - else - { - return QString::null; - } + QString absPath; + QString tmp ( argc[ 0 ] ); + if ( tmp.startsWith ( "/" ) ) { + /* + If argv0 starts with a slash, it is already an absolute + file path. + */ + absPath = tmp; + } else if ( tmp.find ( '/' ) != -1 ) { + /* + If argv0 contains one or more slashes, it is a file path + relative to the current directory. + */ + absPath = QDir::current().absFilePath ( tmp ); + } else { + /* + Otherwise, the file path has to be determined using the + PATH environment variable. + */ + char *pEnv = getenv ( "PATH" ); + QStringList paths ( QStringList::split ( QChar ( ':' ), pEnv ) ); + QStringList::const_iterator p = paths.begin(); + while ( p != paths.end() ) { + QString candidate = QDir::current().absFilePath ( *p + "/" + tmp ); + if ( QFile::exists ( candidate ) ) { + absPath = candidate; + break; + } + ++p; + } + } + + absPath = QDir::cleanDirPath ( absPath ); + if ( QFile::exists ( absPath ) ) { + // return resolveSymlinks( absPath ); + return absPath; + } else { + return QString::null; + } #endif } -QString applicationDirPath( char **argc ) - { - return QFileInfo( applicationFilePath(argc) ).dirPath(); - } +QString applicationDirPath ( char **argc ) { + return QFileInfo ( applicationFilePath ( argc ) ).dirPath(); +} diff -Nru cdcat-1.01b/src/cdcat_debug.pro cdcat-1.2/src/cdcat_debug.pro --- cdcat-1.01b/src/cdcat_debug.pro 1970-01-01 00:00:00.000000000 +0000 +++ cdcat-1.2/src/cdcat_debug.pro 2011-02-10 11:08:23.000000000 +0000 @@ -0,0 +1,114 @@ +VERSION = 0.99 +FORMS = help.ui +TARGET = cdcat +TRANSLATIONS = lang/cdcat_hu.ts \ + lang/cdcat_de.ts \ + lang/cdcat_es.ts \ + lang/cdcat_cz.ts \ + lang/cdcat_pl.ts \ + lang/cdcat_sk.ts \ + lang/cdcat_el.ts \ + lang/cdcat_id.ts \ + lang/cdcat_pt.ts \ + lang/start/cdcat_nolang.ts + +translations.files += lang/cdcat_de.qm \ + lang/cdcat_es.qm \ + lang/cdcat_cz.qm \ + lang/cdcat_pl.qm \ + lang/cdcat_el.qm \ + lang/cdcat_sk.qm \ + lang/cdcat_pt.qm \ + lang/cdcat_id.qm \ + lang/cdcat_hu.qm +HEADERS = adddialog.h\ + cdcat.h \ + commwidget.h \ + config.h \ + dbase.h \ + dirview.h \ + find.h \ + guibase.h \ + hdirview.h \ + mainwidget.h \ + mp3tag.h \ + newdbdialog.h \ + import.h \ + importdialog.h \ + wdbfile.h \ + icons.h \ + info.h \ + exportcdcatdb.h \ + showcontent.h \ + selreadable.h \ + borrow.h \ + tparser.h \ + colorsettings.h \ + misc.h \ + dmetaph.h +SOURCES = adddialog.cpp \ + cdcat.cpp \ + commwidget.cpp \ + config.cpp \ + dbase.cpp \ + dirview.cpp \ + find.cpp \ + guibase.cpp \ + hdirview.cpp \ + icons.cpp \ + import.cpp \ + importdialog.cpp \ + mainwidget.cpp \ + mp3tag.cpp \ + newdbdialog.cpp \ + wdbfile.cpp \ + info.cpp \ + exportcdcatdb.cpp \ + showcontent.cpp \ + selreadable.cpp \ + colorsettings.cpp \ + borrow.cpp \ + tparser.cpp \ + misc.cpp \ + dmetaph.cpp + +# unix:system(lrelease cdcat.pro) + +# win32:system(lrelease cdcat.pro) + +PRECOMPILED_HEADER = cdcat_pch.h + +precompile_header:!isEmpty(PRECOMPILED_HEADER) { + DEFINES += USING_PCH + CONFIG += precompile_header + } + +CONFIG += qt debug +MOC_DIR = moc_files/ +OBJECTS_DIR = obj_files/ +unix:LIBS += -lz +win32:LIBS += "c:\zlib\lib\libz.a" + +win32:INCLUDEPATH += c:\Expat\Source\lib c:\zlib\include c:\pcre\include" + + +unix:distfiles.files += ../README_CSV_IMPORT ../Authors ../README ../ChangeLog \ + ../COPYING ../TRANSLATORS_README ../cdcat.png +unix:distfiles.path = /usr/local/share/cdcat +unix:target.path += /usr/local/bin +unix:translations.path += /usr/local/share/cdcat/translations + + +win32:distfiles.files += ..\README_CSV_IMPORT ..\Authors ..\README ..\ChangeLog \ + ..\COPYING ..\TRANSLATORS_README ..\cdcat.ico ..\cdcat.png +win32:target.path += c:\program files\cdcat +win32:translations.path += c:\program files\cdcat +win32:distfiles.path +=c:\program files\cdcat +INSTALLS += target translations distfiles + +QT += xml + +#The following line was inserted by qt3to4 +QT += qt3support +CONFIG += uic + diff -Nru cdcat-1.01b/src/cdcat.h cdcat-1.2/src/cdcat.h --- cdcat-1.01b/src/cdcat.h 2005-11-05 14:48:20.000000000 +0000 +++ cdcat-1.2/src/cdcat.h 2011-03-08 08:21:50.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** - Hyper's CD Catalog + Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -10,24 +10,31 @@ #ifndef CDCAT_CDCAT #define CDCAT_CDCAT - // CdCat version text: -#define VERSION "1.01b" +#include "config.h" + +#define IS_RELEASE + + +// CdCat version text: - // Datafile version: - // The known versions listed in guibase.cpp - checkversion ! -#define DVERS "1.4" +#define VERSION "UNICODE 1.2" - // CdCat homepage location: -#define HOMEPAGE "http://cdcat.sf.net" - // + help.ui + +// Datafile version: +// The known versions listed in guibase.cpp - checkversion ! +#define DVERS "2.0" + +// CdCat homepage location: +#define HOMEPAGE "http://cdcat.sf.net" +// + help.ui - class QString; - -char * mstr (const char *imp); -QString applicationDirPath (char **argc); -QString applicationFilePath (char **argc); +char * mstr ( const char *imp ); +QString applicationDirPath ( char **argc ); +QString applicationFilePath ( char **argc ); + +bool * init_debug_info(); #endif diff -Nru cdcat-1.01b/src/cdcat_pch.h cdcat-1.2/src/cdcat_pch.h --- cdcat-1.01b/src/cdcat_pch.h 1970-01-01 00:00:00.000000000 +0000 +++ cdcat-1.2/src/cdcat_pch.h 2011-02-03 12:53:41.000000000 +0000 @@ -0,0 +1,122 @@ + // Add C includes here + +#if defined __cplusplus + // Add C++ includes here +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif \ No newline at end of file diff -Nru cdcat-1.01b/src/cdcat.pro cdcat-1.2/src/cdcat.pro --- cdcat-1.01b/src/cdcat.pro 2005-11-05 14:01:33.000000000 +0000 +++ cdcat-1.2/src/cdcat.pro 2011-02-10 11:08:23.000000000 +0000 @@ -1,103 +1,114 @@ -VERSION = 1.0 -HEADERS = adddialog.h\ - cdcat.h \ - commwidget.h \ - config.h \ - dbase.h \ - dirview.h \ - find.h \ - guibase.h \ - hdirview.h \ - mainwidget.h \ - mp3tag.h \ - newdbdialog.h \ - recode.h \ - import.h \ - importdialog.h \ - wdbfile.h \ - icons.h \ - info.h \ - exportcdcatdb.h \ - showcontent.h \ - selreadable.h \ - borrow.h \ - tparser.h \ - colorsettings.h \ - misc.h -SOURCES = adddialog.cpp \ - cdcat.cpp \ - commwidget.cpp \ - config.cpp \ - dbase.cpp \ - dirview.cpp \ - find.cpp \ - guibase.cpp \ - hdirview.cpp \ - icons.cpp \ - import.cpp \ - importdialog.cpp \ - mainwidget.cpp \ - mp3tag.cpp \ - newdbdialog.cpp \ - recode.cpp \ - wdbfile.cpp \ - info.cpp \ - exportcdcatdb.cpp \ - showcontent.cpp \ - selreadable.cpp \ - colorsettings.cpp \ - borrow.cpp \ - tparser.cpp \ - misc.cpp - - unix:system(lrelease cdcat.pro) - - win32:system(lrelease cdcat.pro) - -MOC_DIR = moc_files/ -OBJECTS_DIR = obj_files/ -unix:LIBS += -lpcre -lz -lexpat -INTERFACES = help.ui -TARGET = cdcat -TRANSLATIONS = lang/cdcat_hu.ts \ - lang/cdcat_de.ts \ - lang/cdcat_es.ts \ - lang/cdcat_cz.ts \ - lang/cdcat_pl.ts \ - lang/cdcat_sk.ts \ - lang/cdcat_el.ts \ - lang/cdcat_pt.ts \ - lang/cdcat_id.ts \ - lang/cdcat_it.ts \ - lang/cdcat_fr.ts \ - lang/cdcat_sr.ts \ - lang/start/cdcat_nolang.ts - -translations.files += lang/cdcat_de.qm \ - lang/cdcat_es.qm \ - lang/cdcat_cz.qm \ - lang/cdcat_pl.qm \ - lang/cdcat_el.qm \ - lang/cdcat_sk.qm \ - lang/cdcat_pt.qm \ - lang/cdcat_id.qm \ - lang/cdcat_fr.qm \ - lang/cdcat_it.qm \ - lang/cdcat_sr.qm \ - lang/cdcat_hu.qm - -unix:distfiles.files += ../README_CSV_IMPORT ../Authors ../README ../ChangeLog \ - ../COPYING ../TRANSLATORS_README ../cdcat.png -unix:distfiles.path = /usr/local/share/cdcat -unix:target.path += /usr/local/bin -unix:translations.path += /usr/local/share/cdcat/translations - - -win32:distfiles.files += ..\README_CSV_IMPORT ..\Authors ..\README ..\ChangeLog \ - ..\COPYING ..\TRANSLATORS_README ..\cdcat.ico ..\cdcat.png -win32:target.path += c:\program files\cdcat -win32:translations.path += c:\program files\cdcat -win32:distfiles.path +=c:\program files\cdcat -INSTALLS += target translations distfiles - - +VERSION = 1.1 +TRANSLATIONS = lang/cdcat_hu.ts \ + lang/cdcat_de.ts \ + lang/cdcat_es.ts \ + lang/cdcat_cz.ts \ + lang/cdcat_pl.ts \ + lang/cdcat_sk.ts \ + lang/cdcat_el.ts \ + lang/cdcat_id.ts \ + lang/cdcat_pt.ts \ + lang/start/cdcat_nolang.ts + +translations.files += lang/cdcat_de.qm \ + lang/cdcat_es.qm \ + lang/cdcat_cz.qm \ + lang/cdcat_pl.qm \ + lang/cdcat_el.qm \ + lang/cdcat_sk.qm \ + lang/cdcat_pt.qm \ + lang/cdcat_id.qm \ + lang/cdcat_hu.qm +HEADERS = adddialog.h\ + cdcat.h \ + commwidget.h \ + config.h \ + dbase.h \ + dirview.h \ + find.h \ + guibase.h \ + hdirview.h \ + mainwidget.h \ + mp3tag.h \ + newdbdialog.h \ + import.h \ + importdialog.h \ + wdbfile.h \ + icons.h \ + info.h \ + exportcdcatdb.h \ + showcontent.h \ + selreadable.h \ + borrow.h \ + tparser.h \ + colorsettings.h \ + misc.h \ + dmetaph.h +SOURCES = adddialog.cpp \ + cdcat.cpp \ + commwidget.cpp \ + config.cpp \ + dbase.cpp \ + dirview.cpp \ + find.cpp \ + guibase.cpp \ + hdirview.cpp \ + icons.cpp \ + import.cpp \ + importdialog.cpp \ + mainwidget.cpp \ + mp3tag.cpp \ + newdbdialog.cpp \ + wdbfile.cpp \ + info.cpp \ + exportcdcatdb.cpp \ + showcontent.cpp \ + selreadable.cpp \ + colorsettings.cpp \ + borrow.cpp \ + tparser.cpp \ + misc.cpp \ + dmetaph.cpp + +PRECOMPILED_HEADER = cdcat_pch.h + +precompile_header:!isEmpty(PRECOMPILED_HEADER) { + DEFINES += USING_PCH + CONFIG += precompile_header + } + + +CONFIG += qt xml release +MOC_DIR = moc_files/ +OBJECTS_DIR = obj_files/ +#unix:LIBS += -lpcre -lz -lexpat +#win32:LIBS += "c:\Expat\Bin\libexpat.lib" "c:\zlib\lib\libz.a" "c:\pcre\lib\libpcre.dll.a" +unix:LIBS += -lz +win32:LIBS += "c:\zlib\lib\libz.a" + +win32:INCLUDEPATH += c:\Expat\Source\lib c:\zlib\include c:\pcre\include" + +FORMS = help.ui +TARGET = cdcat + + +unix:distfiles.files += ../README_CSV_IMPORT ../Authors ../README ../ChangeLog \ + ../COPYING ../TRANSLATORS_README ../cdcat.png +unix:distfiles.path = /usr/local/share/cdcat +unix:target.path += /usr/local/bin +unix:translations.path += /usr/local/share/cdcat/translations + + +win32:distfiles.files += ..\README_CSV_IMPORT ..\Authors ..\README ..\ChangeLog \ + ..\COPYING ..\TRANSLATORS_README ..\cdcat.ico ..\cdcat.png +win32:target.path += c:\program files\cdcat +win32:translations.path += c:\program files\cdcat +win32:distfiles.path +=c:\program files\cdcat +INSTALLS += target translations distfiles + +QT += xml + +#The following line was inserted by qt3to4 +QT += qt3support +CONFIG += uic + diff -Nru cdcat-1.01b/src/colorsettings.cpp cdcat-1.2/src/colorsettings.cpp --- cdcat-1.01b/src/colorsettings.cpp 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/colorsettings.cpp 2010-11-26 13:49:32.000000000 +0000 @@ -11,208 +11,208 @@ #include #include -#include -#include +#include +#include #include #include #include #include #include -#include +#include #include #include #include #include +//Added by qt3to4: +#include +#include +#include #include "icons.h" -ColorPreview::ColorPreview(QWidget *parent) -: QFrame(parent,"cpv") - { - c = QColor(0,0,0); - } - -ColorSchemePreview::ColorSchemePreview(QWidget *parent) -: QFrame(parent,"cspv") - { - setMinimumHeight(75); - - ts = QColor(0,0,0); - td = QColor(0,0,0); - bg = QColor(0,0,0); - fr = QColor(0,0,0); - } - -void ColorPreview::updColor(void) - { - repaint(); - } - -void ColorSchemePreview::updColor(void) - { - repaint(); - } - - -void ColorPreview::paintEvent( QPaintEvent *event) - { - QPainter p(this); - p.fillRect(0,0,width(),height(),c); - p.flush(); - } - -void ColorSchemePreview::paintEvent( QPaintEvent *event) - { - QPainter p(this); - p.setPen(fr); - p.fillRect(10,10,width()-20,height()-20,bg); - p.drawRect(10,10,width()-20,height()-20); - p.setClipRect(10,10,width()-20,height()-20); - - p.setPen(ts); - p.drawText(20,30,tr("Title:")); - p.setPen(td); - p.drawText(25,50,tr("Road To Hell")); - p.setPen(fr); - p.drawLine(10,65,width()-11,65); - - p.flush(); - - } - +ColorPreview::ColorPreview ( QWidget *parent ) + : Q3Frame ( parent,"cpv" ) { + c = QColor ( 0,0,0 ); +} + +ColorSchemePreview::ColorSchemePreview ( QWidget *parent ) + : Q3Frame ( parent,"cspv" ) { + setMinimumHeight ( 75 ); + + ts = QColor ( 0,0,0 ); + td = QColor ( 0,0,0 ); + bg = QColor ( 0,0,0 ); + fr = QColor ( 0,0,0 ); +} +void ColorPreview::updColor ( void ) { + repaint(); +} + +void ColorSchemePreview::updColor ( void ) { + repaint(); +} + + +void ColorPreview::paintEvent ( QPaintEvent *event ) { + QPainter p ( this ); + p.fillRect ( 0,0,width(),height(),c ); +#if (QT_VERSION >= QT_VERSION_CHECK(4, 6, 0)) // needs Qt 4.6.0 or better + p.beginNativePainting(); +#endif +} + +void ColorSchemePreview::paintEvent ( QPaintEvent *event ) { + QPainter p ( this ); + p.setPen ( fr ); + p.fillRect ( 10,10,width()-20,height()-20,bg ); + p.drawRect ( 10,10,width()-20,height()-20 ); + p.setClipRect ( 10,10,width()-20,height()-20 ); + + p.setPen ( ts ); + p.drawText ( 20,30,tr ( "Title:" ) ); + p.setPen ( td ); + p.drawText ( 25,50,tr ( "Road To Hell" ) ); + p.setPen ( fr ); + + p.drawLine ( 10,65,width()-11,65 ); + +#if (QT_VERSION >= QT_VERSION_CHECK(4, 6, 0)) // needs Qt 4.6.0 or better + p.beginNativePainting(); +#endif +} -ColorSettings::ColorSettings(CdCatConfig *cfgp, QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, fl ) -{ + + +ColorSettings::ColorSettings ( CdCatConfig *cfgp, QWidget* parent, const char* name, bool modal, Qt::WFlags fl ) + : QDialog ( parent, name, modal, fl ) { if ( !name ) - setName( "ColorSettings" ); - - cfg=cfgp; - setIcon( *get_t_colorconfig_icon() ); - setSizeGripEnabled( TRUE ); - ColorSettingsLayout = new QVBoxLayout( this, 11, 6, "ColorSettingsLayout"); - - preview = new ColorSchemePreview( this ); - preview->setFrameShape( QFrame::StyledPanel ); - preview->setFrameShadow( QFrame::Raised ); - ColorSettingsLayout->addWidget( preview ); - - itemselector = new QComboBox( FALSE, this, "itemselector" ); - ColorSettingsLayout->addWidget( itemselector ); - - layout14 = new QHBoxLayout( 0, 0, 6, "layout14"); - - groupBox1 = new QGroupBox( this, "groupBox1" ); - groupBox1->setColumnLayout(0, Qt::Vertical ); - groupBox1->layout()->setSpacing( 6 ); - groupBox1->layout()->setMargin( 11 ); - groupBox1Layout = new QHBoxLayout( groupBox1->layout() ); - groupBox1Layout->setAlignment( Qt::AlignTop ); - - layout4 = new QVBoxLayout( 0, 0, 6, "layout4"); - - layout1 = new QHBoxLayout( 0, 0, 6, "rspin"); - - textLabel1 = new QLabel( groupBox1, "textLabel1" ); - layout1->addWidget( textLabel1 ); - - rspin = new QSpinBox( groupBox1, "spinBox1" ); - layout1->addWidget( rspin ); - layout4->addLayout( layout1 ); - - layout2 = new QHBoxLayout( 0, 0, 6, "layout2"); - - textLabel1_2 = new QLabel( groupBox1, "textLabel1_2" ); - layout2->addWidget( textLabel1_2 ); - - gspin = new QSpinBox( groupBox1, "gspin" ); - layout2->addWidget( gspin ); - layout4->addLayout( layout2 ); - - layout3 = new QHBoxLayout( 0, 0, 6, "layout3"); - - textLabel1_3 = new QLabel( groupBox1, "textLabel1_3" ); - layout3->addWidget( textLabel1_3 ); - - bspin = new QSpinBox( groupBox1, "bspin" ); - layout3->addWidget( bspin ); - layout4->addLayout( layout3 ); - groupBox1Layout->addLayout( layout4 ); - - colorpreview = new ColorPreview( groupBox1 ); - colorpreview->setMinimumSize( QSize( 40, 0 ) ); - colorpreview->setMaximumSize( QSize( 40, 32767 ) ); - colorpreview->setFrameShape( QFrame::StyledPanel ); - colorpreview->setFrameShadow( QFrame::Raised ); - groupBox1Layout->addWidget( colorpreview ); - layout14->addWidget( groupBox1 ); - - layout13 = new QVBoxLayout( 0, 0, 6, "layout13"); - QSpacerItem* spacer = new QSpacerItem( 20, 16, QSizePolicy::Minimum, QSizePolicy::Fixed ); - layout13->addItem( spacer ); - - layout11 = new QHBoxLayout( 0, 0, 6, "layout11"); - QSpacerItem* spacer_2 = new QSpacerItem( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout11->addItem( spacer_2 ); - - layout9 = new QVBoxLayout( 0, 0, 6, "layout9"); - - buttonOk = new QPushButton( this, "buttonOk" ); - buttonOk->setMinimumSize( QSize( 100, 0 ) ); - layout9->addWidget( buttonOk ); - - buttonCancel = new QPushButton( this, "buttonCancel" ); - buttonCancel->setMinimumSize( QSize( 100, 0 ) ); - layout9->addWidget( buttonCancel ); - layout11->addLayout( layout9 ); - QSpacerItem* spacer_3 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout11->addItem( spacer_3 ); - layout13->addLayout( layout11 ); - layout14->addLayout( layout13 ); - ColorSettingsLayout->addLayout( layout14 ); + setName ( "ColorSettings" ); + + cfg=cfgp; + setIcon ( *get_t_colorconfig_icon() ); + setSizeGripEnabled ( TRUE ); + ColorSettingsLayout = new Q3VBoxLayout ( this, 11, 6, "ColorSettingsLayout" ); + + preview = new ColorSchemePreview ( this ); + preview->setFrameShape ( Q3Frame::StyledPanel ); + preview->setFrameShadow ( Q3Frame::Raised ); + ColorSettingsLayout->addWidget ( preview ); + + itemselector = new QComboBox ( FALSE, this, "itemselector" ); + ColorSettingsLayout->addWidget ( itemselector ); + + layout14 = new Q3HBoxLayout ( 0, 0, 6, "layout14" ); + + groupBox1 = new Q3GroupBox ( this, "groupBox1" ); + groupBox1->setColumnLayout ( 0, Qt::Vertical ); + groupBox1->layout()->setSpacing ( 6 ); + groupBox1->layout()->setMargin ( 11 ); + groupBox1Layout = new Q3HBoxLayout ( groupBox1->layout() ); + groupBox1Layout->setAlignment ( Qt::AlignTop ); + + layout4 = new Q3VBoxLayout ( 0, 0, 6, "layout4" ); + + layout1 = new Q3HBoxLayout ( 0, 0, 6, "rspin" ); + + textLabel1 = new QLabel ( groupBox1, "textLabel1" ); + layout1->addWidget ( textLabel1 ); + + rspin = new QSpinBox ( groupBox1, "spinBox1" ); + layout1->addWidget ( rspin ); + layout4->addLayout ( layout1 ); + + layout2 = new Q3HBoxLayout ( 0, 0, 6, "layout2" ); + + textLabel1_2 = new QLabel ( groupBox1, "textLabel1_2" ); + layout2->addWidget ( textLabel1_2 ); + + gspin = new QSpinBox ( groupBox1, "gspin" ); + layout2->addWidget ( gspin ); + layout4->addLayout ( layout2 ); + + layout3 = new Q3HBoxLayout ( 0, 0, 6, "layout3" ); + + textLabel1_3 = new QLabel ( groupBox1, "textLabel1_3" ); + layout3->addWidget ( textLabel1_3 ); + + bspin = new QSpinBox ( groupBox1, "bspin" ); + layout3->addWidget ( bspin ); + layout4->addLayout ( layout3 ); + groupBox1Layout->addLayout ( layout4 ); + + colorpreview = new ColorPreview ( groupBox1 ); + colorpreview->setMinimumSize ( QSize ( 40, 0 ) ); + colorpreview->setMaximumSize ( QSize ( 40, 32767 ) ); + colorpreview->setFrameShape ( Q3Frame::StyledPanel ); + colorpreview->setFrameShadow ( Q3Frame::Raised ); + groupBox1Layout->addWidget ( colorpreview ); + layout14->addWidget ( groupBox1 ); + + layout13 = new Q3VBoxLayout ( 0, 0, 6, "layout13" ); + QSpacerItem* spacer = new QSpacerItem ( 20, 16, QSizePolicy::Minimum, QSizePolicy::Fixed ); + layout13->addItem ( spacer ); + + layout11 = new Q3HBoxLayout ( 0, 0, 6, "layout11" ); + QSpacerItem* spacer_2 = new QSpacerItem ( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout11->addItem ( spacer_2 ); + + layout9 = new Q3VBoxLayout ( 0, 0, 6, "layout9" ); + + buttonOk = new QPushButton ( this, "buttonOk" ); + buttonOk->setMinimumSize ( QSize ( 100, 0 ) ); + layout9->addWidget ( buttonOk ); + + buttonCancel = new QPushButton ( this, "buttonCancel" ); + buttonCancel->setMinimumSize ( QSize ( 100, 0 ) ); + layout9->addWidget ( buttonCancel ); + layout11->addLayout ( layout9 ); + QSpacerItem* spacer_3 = new QSpacerItem ( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout11->addItem ( spacer_3 ); + layout13->addLayout ( layout11 ); + layout14->addLayout ( layout13 ); + ColorSettingsLayout->addLayout ( layout14 ); languageChange(); - resize( QSize(429, 324).expandedTo(minimumSizeHint()) ); - - - rspin->setMaxValue(255); - gspin->setMaxValue(255); - bspin->setMaxValue(255); - - rspin->setLineStep(10); - gspin->setLineStep(10); - bspin->setLineStep(10); - - itemselector->setCurrentItem(0); - + resize ( QSize ( 429, 324 ).expandedTo ( minimumSizeHint() ) ); + + + rspin->setMaxValue ( 255 ); + gspin->setMaxValue ( 255 ); + bspin->setMaxValue ( 255 ); + + rspin->setLineStep ( 10 ); + gspin->setLineStep ( 10 ); + bspin->setLineStep ( 10 ); + + itemselector->setCurrentItem ( 0 ); + bg= *cfg->comm_bg; ts= *cfg->comm_stext; td= *cfg->comm_vtext; fr= *cfg->comm_fr; - changedcurr(3); - changedcurr(2); - changedcurr(1); - changedcurr(0); - change(); - - connect(rspin,SIGNAL(valueChanged(int)),this,SLOT(changedr(int))); - connect(gspin,SIGNAL(valueChanged(int)),this,SLOT(changedg(int))); - connect(bspin,SIGNAL(valueChanged(int)),this,SLOT(changedb(int))); - - connect(itemselector,SIGNAL(activated(int)),this,SLOT(changedcurr(int))); - - connect(buttonOk,SIGNAL(clicked()),this,SLOT(sok())); - connect(buttonCancel,SIGNAL(clicked()),this,SLOT(scancel())); + changedcurr ( 3 ); + changedcurr ( 2 ); + changedcurr ( 1 ); + changedcurr ( 0 ); + change(); + + connect ( rspin,SIGNAL ( valueChanged ( int ) ),this,SLOT ( changedr ( int ) ) ); + connect ( gspin,SIGNAL ( valueChanged ( int ) ),this,SLOT ( changedg ( int ) ) ); + connect ( bspin,SIGNAL ( valueChanged ( int ) ),this,SLOT ( changedb ( int ) ) ); + + connect ( itemselector,SIGNAL ( activated ( int ) ),this,SLOT ( changedcurr ( int ) ) ); + + connect ( buttonOk,SIGNAL ( clicked() ),this,SLOT ( sok() ) ); + connect ( buttonCancel,SIGNAL ( clicked() ),this,SLOT ( scancel() ) ); } /* * Destroys the object and frees any allocated resources */ -ColorSettings::~ColorSettings() -{ +ColorSettings::~ColorSettings() { // no need to delete child widgets, Qt does it all for us } @@ -221,121 +221,108 @@ * Sets the strings of the subwidgets using the current * language. */ -void ColorSettings::languageChange() -{ - setCaption( tr( "ColorSettings" ) ); +void ColorSettings::languageChange() { + setCaption ( tr ( "ColorSettings" ) ); itemselector->clear(); - itemselector->insertItem( tr( "Comment area background and the file higlighting line" ) ); - itemselector->insertItem( tr( "Frame of comment area" ) ); - itemselector->insertItem( tr( "Comment window static text (Program text)" ) ); - itemselector->insertItem( tr( "Comment window variable text (Data)" ) ); - groupBox1->setTitle( tr( "color" ) ); - textLabel1->setText( tr( "Red:" ) ); - textLabel1_2->setText( tr( "Green:" ) ); - textLabel1_3->setText( tr( "Blue:" ) ); - buttonOk->setText( tr( "Ok" ) ); - buttonCancel->setText( tr( "Cancel" ) ); -} - -int ColorSettings::changedcurr(int v) - { - int r=0,g=0,b=0; - current = v; - - switch(current) - { + itemselector->insertItem ( tr ( "Comment area background and the file higlighting line" ) ); + itemselector->insertItem ( tr ( "Frame of comment area" ) ); + itemselector->insertItem ( tr ( "Comment window static text (Program text)" ) ); + itemselector->insertItem ( tr ( "Comment window variable text (Data)" ) ); + groupBox1->setTitle ( tr ( "color" ) ); + textLabel1->setText ( tr ( "Red:" ) ); + textLabel1_2->setText ( tr ( "Green:" ) ); + textLabel1_3->setText ( tr ( "Blue:" ) ); + buttonOk->setText ( tr ( "Ok" ) ); + buttonCancel->setText ( tr ( "Cancel" ) ); +} + +int ColorSettings::changedcurr ( int v ) { + int r=0,g=0,b=0; + current = v; + + switch ( current ) { case 0: r=bg.red(); g=bg.green(); b=bg.blue(); break; case 1: r=fr.red(); g=fr.green(); b=fr.blue(); break; case 2: r=ts.red(); g=ts.green(); b=ts.blue(); break; case 3: r=td.red(); g=td.green(); b=td.blue(); break; - }; - - rspin->setValue(r); - gspin->setValue(g); - bspin->setValue(b); - change(); - return 0; - } - -int ColorSettings::changedr(int v) - { - int r=0,g=0,b=0; - switch(current) - { - case 0: r=bg.red(); g=bg.green(); b=bg.blue(); bg.setRgb(v,g,b); break; - case 1: r=fr.red(); g=fr.green(); b=fr.blue(); fr.setRgb(v,g,b); break; - case 2: r=ts.red(); g=ts.green(); b=ts.blue(); ts.setRgb(v,g,b); break; - case 3: r=td.red(); g=td.green(); b=td.blue(); td.setRgb(v,g,b); break; - }; - change(); - return 0; - } - -int ColorSettings::changedg(int v) - { - int r=0,g=0,b=0; - switch(current) - { - case 0: r=bg.red(); g=bg.green(); b=bg.blue(); bg.setRgb(r,v,b); break; - case 1: r=fr.red(); g=fr.green(); b=fr.blue(); fr.setRgb(r,v,b); break; - case 2: r=ts.red(); g=ts.green(); b=ts.blue(); ts.setRgb(r,v,b); break; - case 3: r=td.red(); g=td.green(); b=td.blue(); td.setRgb(r,v,b); break; - }; - change(); - return 0; - } - -int ColorSettings::changedb(int v) - { - int r=0,g=0,b=0; - switch(current) - { - case 0: r=bg.red(); g=bg.green(); b=bg.blue(); bg.setRgb(r,g,v); break; - case 1: r=fr.red(); g=fr.green(); b=fr.blue(); fr.setRgb(r,g,v); break; - case 2: r=ts.red(); g=ts.green(); b=ts.blue(); ts.setRgb(r,g,v); break; - case 3: r=td.red(); g=td.green(); b=td.blue(); td.setRgb(r,g,v); break; - }; - change(); - return 0; - } - - -int ColorSettings::change(void) - { - switch(current) - { + }; + + rspin->setValue ( r ); + gspin->setValue ( g ); + bspin->setValue ( b ); + change(); + return 0; +} + +int ColorSettings::changedr ( int v ) { + int r=0,g=0,b=0; + switch ( current ) { + case 0: r=bg.red(); g=bg.green(); b=bg.blue(); bg.setRgb ( v,g,b ); break; + case 1: r=fr.red(); g=fr.green(); b=fr.blue(); fr.setRgb ( v,g,b ); break; + case 2: r=ts.red(); g=ts.green(); b=ts.blue(); ts.setRgb ( v,g,b ); break; + case 3: r=td.red(); g=td.green(); b=td.blue(); td.setRgb ( v,g,b ); break; + }; + change(); + return 0; +} + +int ColorSettings::changedg ( int v ) { + int r=0,g=0,b=0; + switch ( current ) { + case 0: r=bg.red(); g=bg.green(); b=bg.blue(); bg.setRgb ( r,v,b ); break; + case 1: r=fr.red(); g=fr.green(); b=fr.blue(); fr.setRgb ( r,v,b ); break; + case 2: r=ts.red(); g=ts.green(); b=ts.blue(); ts.setRgb ( r,v,b ); break; + case 3: r=td.red(); g=td.green(); b=td.blue(); td.setRgb ( r,v,b ); break; + }; + change(); + return 0; +} + +int ColorSettings::changedb ( int v ) { + int r=0,g=0,b=0; + switch ( current ) { + case 0: r=bg.red(); g=bg.green(); b=bg.blue(); bg.setRgb ( r,g,v ); break; + case 1: r=fr.red(); g=fr.green(); b=fr.blue(); fr.setRgb ( r,g,v ); break; + case 2: r=ts.red(); g=ts.green(); b=ts.blue(); ts.setRgb ( r,g,v ); break; + case 3: r=td.red(); g=td.green(); b=td.blue(); td.setRgb ( r,g,v ); break; + }; + change(); + return 0; +} + + +int ColorSettings::change ( void ) { + switch ( current ) { case 0: colorpreview->c=bg; break; case 1: colorpreview->c=fr; break; case 2: colorpreview->c=ts; break; case 3: colorpreview->c=td; break; - }; + }; + + colorpreview->updColor(); + + preview->bg=bg; + preview->ts=ts; + preview->td=td; + preview->fr=fr; + preview->updColor(); - colorpreview->updColor(); - - preview->bg=bg; - preview->ts=ts; - preview->td=td; - preview->fr=fr; - preview->updColor(); - - return 0; - } - -int ColorSettings::sok(void) - { - *cfg->comm_bg = bg; - *cfg->comm_stext = ts; - *cfg->comm_vtext = td; - *cfg->comm_fr = fr; - cfg->writeConfig(); - close(); - return 0; - } - -int ColorSettings::scancel(void) - { - close(); - return 0; - } + return 0; +} + +int ColorSettings::sok ( void ) { + *cfg->comm_bg = bg; + *cfg->comm_stext = ts; + *cfg->comm_vtext = td; + *cfg->comm_fr = fr; + cfg->writeConfig(); + close(); + return 0; +} + +int ColorSettings::scancel ( void ) { + close(); + return 0; +} diff -Nru cdcat-1.01b/src/colorsettings.h cdcat-1.2/src/colorsettings.h --- cdcat-1.01b/src/colorsettings.h 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/colorsettings.h 2010-11-24 08:11:08.000000000 +0000 @@ -13,52 +13,55 @@ #include #include #include -#include +#include +//Added by qt3to4: +#include +#include +#include +#include +#include #include "config.h" -class QVBoxLayout; +class Q3VBoxLayout; class QColor; -class QHBoxLayout; -class QGridLayout; +class Q3HBoxLayout; +class Q3GridLayout; class QComboBox; -class QGroupBox; +class Q3GroupBox; class QLabel; class QPushButton; class QSpinBox; class QPaintEvent; -class ColorPreview : public QFrame - { - Q_OBJECT - - public: - QColor c; - ColorPreview(QWidget *parent); - void updColor(void); - - protected: - void paintEvent( QPaintEvent *event); - - }; - -class ColorSchemePreview : public QFrame - { - Q_OBJECT - - public: - QColor bg,ts,td,fr; - ColorSchemePreview(QWidget *parent); - void updColor(void); - - protected: - void paintEvent( QPaintEvent *event); +class ColorPreview : public Q3Frame { + Q_OBJECT + +public: + QColor c; + ColorPreview ( QWidget *parent ); + void updColor ( void ); + +protected: + void paintEvent ( QPaintEvent *event ); - }; - +}; -class ColorSettings : public QDialog -{ +class ColorSchemePreview : public Q3Frame { + Q_OBJECT + +public: + QColor bg,ts,td,fr; + ColorSchemePreview ( QWidget *parent ); + void updColor ( void ); + +protected: + void paintEvent ( QPaintEvent *event ); + +}; + + +class ColorSettings : public QDialog { Q_OBJECT public: @@ -66,13 +69,13 @@ QColor bg,ts,td,fr; int current; - ColorSettings(CdCatConfig *cfgp, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); + ColorSettings ( CdCatConfig *cfgp, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, Qt::WFlags fl = 0 ); ~ColorSettings(); - + ColorSchemePreview* preview; QComboBox* itemselector; - QGroupBox* groupBox1; + Q3GroupBox* groupBox1; QLabel* textLabel1; QSpinBox* rspin; QLabel* textLabel1_2; @@ -84,16 +87,16 @@ QPushButton* buttonCancel; protected: - QVBoxLayout* ColorSettingsLayout; - QHBoxLayout* layout14; - QHBoxLayout* groupBox1Layout; - QVBoxLayout* layout4; - QHBoxLayout* layout1; - QHBoxLayout* layout2; - QHBoxLayout* layout3; - QVBoxLayout* layout13; - QHBoxLayout* layout11; - QVBoxLayout* layout9; + Q3VBoxLayout* ColorSettingsLayout; + Q3HBoxLayout* layout14; + Q3HBoxLayout* groupBox1Layout; + Q3VBoxLayout* layout4; + Q3HBoxLayout* layout1; + Q3HBoxLayout* layout2; + Q3HBoxLayout* layout3; + Q3VBoxLayout* layout13; + Q3HBoxLayout* layout11; + Q3VBoxLayout* layout9; protected slots: virtual void languageChange(); @@ -101,15 +104,15 @@ QPixmap image0; public slots: - int changedr(int v); - int changedg(int v); - int changedb(int v); - int changedcurr(int v); - - int change(void); - - int sok(void); - int scancel(void); + int changedr ( int v ); + int changedg ( int v ); + int changedb ( int v ); + int changedcurr ( int v ); + + int change ( void ); + + int sok ( void ); + int scancel ( void ); }; diff -Nru cdcat-1.01b/src/commwidget.cpp cdcat-1.2/src/commwidget.cpp --- cdcat-1.01b/src/commwidget.cpp 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/commwidget.cpp 2011-02-04 11:26:32.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** - Hyper's CD Catalog + Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -16,419 +16,560 @@ #include #include #include -#include +#include #include #include -#include - +#include +#include +#include +//Added by qt3to4: +#include +#include +#include +#include +#include +#include +#include +#include #include "dbase.h" #include "cdcat.h" #include "wdbfile.h" -#include "recode.h" #include "config.h" #include "icons.h" #include "mainwidget.h" #include "showcontent.h" +#include +using namespace std; + + + + int cshow = 1; char *abuff=NULL; -HQToolButton::HQToolButton(QWidget *parent) - : QToolButton(parent,"Button") - { - setMaximumSize( 30,30 ); - setText( QString::null ); - } +HQToolButton::HQToolButton ( QWidget *parent ) + : QToolButton ( parent,"Button" ) { + setMaximumSize ( 30,30 ); + setText ( QString::null ); +} -void HQToolButton::enterEvent(QEvent *e) - { - QApplication::setOverrideCursor(arrowCursor); - } - -void HQToolButton::leaveEvent(QEvent *e) - { - QApplication::setOverrideCursor(PointingHandCursor); - } +void HQToolButton::enterEvent ( QEvent *e ) { + QApplication::setOverrideCursor ( Qt::arrowCursor ); +} -CommentWidget::CommentWidget(CdCatConfig * cc,QApplication *appl,QWidget *parent,const char *name,WFlags fl) - : QWidget(parent,name,fl) - { - if(!name) - setName("CommentWidget"); - - cconfig = cc; - app = appl; - ox = mx = 0; - ox = my = 0; - mode = 0; - act = NULL; - setMinimumSize(70,70); - - ButtonContent = new HQToolButton( this ); - ButtonContent->setPixmap( *get_t_showc_icon() ); - ButtonContent->setGeometry(55,height()-45,30,30); - QToolTip::add( ButtonContent, tr( "Shows the content of the file." ) ); - - ButtonEdit = new HQToolButton( this ); - ButtonEdit->setPixmap( *get_t_comment_icon() ); - ButtonEdit->setGeometry(20,height()-45,30,30); - QToolTip::add( ButtonEdit , tr( "Edit and refresh the actual comment page." ) ); +void HQToolButton::leaveEvent ( QEvent *e ) { + QApplication::setOverrideCursor ( Qt::PointingHandCursor ); +} - connect(ButtonEdit,SIGNAL(clicked()),this,SLOT(editC())); - connect(ButtonContent,SIGNAL(clicked()),this,SLOT(showC())); - } +CommentWidget::CommentWidget ( CdCatConfig * cc,QApplication *appl,QWidget *parent,const char *name, Qt::WFlags fl) + : QWidget ( parent,name,fl ) { + if ( !name ) + setName ( "CommentWidget" ); -void CommentWidget::enterEvent(QEvent *e) - { - QApplication::setOverrideCursor(PointingHandCursor); - } - -void CommentWidget::leaveEvent(QEvent *e) - { - QApplication::setOverrideCursor(arrowCursor); - } - -void CommentWidget::mouseMoveEvent(QMouseEvent *me) - { - mx -= ox - me->x(); - my -= oy - me->y(); - ox = me->x(); - oy = me->y(); - repaint(); - } + cconfig = cc; + app = appl; + ox = mx = 0; + ox = my = 0; + mode = 0; + act = NULL; + setMinimumSize ( 70,70 ); + + ButtonContent = new HQToolButton ( this ); + ButtonContent->setPixmap ( *get_t_showc_icon() ); + ButtonContent->setGeometry ( 55,height()-45,30,30 ); + QToolTip::add ( ButtonContent, tr ( "Shows the content of the file." ) ); + + ButtonEdit = new HQToolButton ( this ); + ButtonEdit->setPixmap ( *get_t_comment_icon() ); + ButtonEdit->setGeometry ( 20,height()-45,30,30 ); + QToolTip::add ( ButtonEdit , tr ( "Edit and refresh the actual comment page." ) ); + +// ButtonCategory = new HQToolButton ( this ); +// ButtonCategory->setPixmap ( *get_t_showc_icon() ); +// ButtonCategory->setGeometry ( 120,height()-45,30,30 ); +// QToolTip::add ( ButtonCategory , tr ( "Show the actual category page." ) ); + + ButtonCategoryEdit = new HQToolButton ( this ); + ButtonCategoryEdit->setPixmap ( *get_t_comment_icon() ); + ButtonCategoryEdit->setGeometry ( 85,height()-45,30,30 ); + QToolTip::add ( ButtonCategoryEdit , tr ( "Edit and refresh the actual category page." ) ); + + connect ( ButtonEdit,SIGNAL ( clicked() ),this,SLOT ( editC() ) ); +// connect ( ButtonCategory,SIGNAL ( clicked() ),this,SLOT ( showCategory()) ); + connect ( ButtonCategoryEdit,SIGNAL ( clicked() ),this,SLOT ( editCategory()) ); + connect ( ButtonContent,SIGNAL ( clicked() ),this,SLOT ( showC() ) ); -void CommentWidget::mousePressEvent(QMouseEvent *me) - { - ox = me->x(); - oy = me->y(); - mx = 0; - my = 0; - repaint(); - } -void CommentWidget::mouseReleaseEvent(QMouseEvent *me) - { - ox = mx = 0; - oy = my = 0; - repaint(); - } - -void CommentWidget::paintEvent(QPaintEvent *pe) - { - char *text = new char[2048]; - char lin[256]; - QPainter p(this); - int w=25,i,j; - Node *tmp; - QFontMetrics fm(app->font()); - int pixelsHigh = fm.height(); - int ispace=1; - bool need_showc_button=false; - - pixelsHigh-=1; //I think it was too big... - - p.setPen(*cconfig->comm_fr); - p.fillRect(10,10,width()-20,height()-20,*cconfig->comm_bg/*QColor(255,229,28)*/); - p.drawRect(10,10,width()-20,height()-20); - p.setClipRect(10,10,width()-20,height()-20); - - /*the .. case */ - if(act != NULL) - { - ButtonEdit->setEnabled(true); - - if(mode) - { - p.setPen(*cconfig->comm_stext); - p.drawText(mx+15,my+w,tr("Upper container! (..)")); - w+=pixelsHigh+10; - } - /*name*/ - p.setPen(*cconfig->comm_stext); - p.drawText(mx+15,my+w,tr("Name:")); w+=pixelsHigh; - sprintf(text," %s",act->getNameOf()); - p.setPen(*cconfig->comm_vtext); - p.drawText(mx+15,my+w,text); w+=pixelsHigh+ispace; - /*type*/ - p.setPen(*cconfig->comm_stext); - p.drawText(mx+15,my+w,tr("Type:")); w+=pixelsHigh; - switch(act->type) - { - case HC_CATALOG : strcpy(text,(const char *)tr(" CdCat Catalog root")); break; - case HC_CATLNK : strcpy(text,(const char *)tr(" Link to a CdCat catalog")); break; - case HC_DIRECTORY: strcpy(text,(const char *)tr(" Directory")); break; - case HC_FILE : strcpy(text,(const char *)tr(" File")); break; - case HC_MEDIA : sprintf(text," %s (%s)",(const char *)tr("Media"),getMType(((DBMedia *)(act->data))->type)); - break; - } - p.setPen(*cconfig->comm_vtext); - p.drawText(mx+15,my+w,text); w+=pixelsHigh+ispace; - /*if file->size*/ - if(act->type == HC_FILE) - { - p.setPen(*cconfig->comm_stext); - p.drawText(mx+15,my+w,tr("Size:")); w+=pixelsHigh; - sprintf(text," %.2f %s",((DBFile *)(act->data))->size - ,getSType(((DBFile *)(act->data))->sizeType)); - p.setPen(*cconfig->comm_vtext); - p.drawText(mx+15,my+w,text); w+=pixelsHigh+ispace; - } - - /*if catlnkfile->location*/ - if(act->type == HC_CATLNK) - { - p.setPen(*cconfig->comm_stext); - p.drawText(mx+15,my+w,tr("Location:")); w+=pixelsHigh; - p.setPen(*cconfig->comm_vtext); - sprintf(text," %s",((DBCatLnk *)(act->data))->location); - p.drawText(mx+15,my+w,text); w+=pixelsHigh+ispace; - } - - if(act->type != HC_CATLNK) - { - /*mod.time*/ - p.setPen(*cconfig->comm_stext); - p.drawText(mx+15,my+w,tr("Last modification:")); w+=pixelsHigh; - switch(act->type) - { - case HC_CATALOG : sprintf(text," %s",((DBCatalog *)(act->data))->modification);break; - case HC_DIRECTORY: sprintf(text," %s",((DBDirectory *)(act->data))->modification);break; - case HC_FILE : sprintf(text," %s",((DBFile *)(act->data))->modification);break; - case HC_MEDIA : sprintf(text," %s",((DBMedia *)(act->data))->modification);break; - } - p.setPen(*cconfig->comm_vtext); - p.drawText(mx+15,my+w,text); w+=pixelsHigh+ispace; - /*owner*/ - p.setPen(*cconfig->comm_stext); - p.drawText(mx+15,my+w,tr("Owner:")); w+=pixelsHigh; - tmp=act; - while(tmp !=NULL && tmp->type != HC_MEDIA && tmp->type != HC_CATALOG) - tmp=tmp->parent; - if(tmp==NULL) sprintf(text,(const char *)tr("Unknown")); - if(tmp->type==HC_CATALOG) - sprintf(text," %s",((DBCatalog *)(tmp->data))->owner); - if(tmp->type==HC_MEDIA) - sprintf(text," %s",((DBMedia *)(tmp->data))->owner); - - p.setPen(*cconfig->comm_vtext); - p.drawText(mx+15,my+w,text); w+=pixelsHigh+ispace; - - - /*media*/ - - p.setPen(*cconfig->comm_stext); - p.drawText(mx+15,my+w,tr("Media (number/name):")); w+=pixelsHigh; - tmp=act; - while(tmp !=NULL && tmp->type != HC_MEDIA && tmp->type != HC_CATALOG) - tmp=tmp->parent; - if(tmp==NULL) - sprintf(text,tr("Unknown")); - if(tmp->type==HC_CATALOG) - sprintf(text," %s",((DBCatalog *)(tmp->data))->name); - if(tmp->type==HC_MEDIA) - sprintf(text," %d / %s",((DBMedia *)(tmp->data))->number,((DBMedia *)(tmp->data))->name); - if(((DBMedia *)(tmp->data))->borrowing != NULL) - { - p.setPen(QPen(QColor(red),2)); - p.drawLine(width()-24,14,width()-14,24); - p.drawLine(width()-14,14,width()-24,24); - - } - p.setPen(QPen(*cconfig->comm_vtext,1)); - p.drawText(mx+15,my+w,text); w+=pixelsHigh+ispace; +} + +void CommentWidget::enterEvent ( QEvent *e ) { + QApplication::setOverrideCursor ( Qt::PointingHandCursor ); +} + +void CommentWidget::leaveEvent ( QEvent *e ) { + QApplication::setOverrideCursor ( Qt::arrowCursor ); +} + +void CommentWidget::mouseMoveEvent ( QMouseEvent *me ) { + mx -= ox - me->x(); + my -= oy - me->y(); + ox = me->x(); + oy = me->y(); + repaint(); +} + +void CommentWidget::mousePressEvent ( QMouseEvent *me ) { + ox = me->x(); + oy = me->y(); + mx = 0; + my = 0; + repaint(); +} + +void CommentWidget::mouseReleaseEvent ( QMouseEvent *me ) { + ox = mx = 0; + oy = my = 0; + repaint(); +} + +void CommentWidget::paintEvent ( QPaintEvent *pe ) { +//cerr <<"paintEvent"<font() ); + int pixelsHigh = fm.height(); + int ispace=1; + bool need_showc_button=false; + + pixelsHigh-=1; //I think it was too big... + + p.setPen ( *cconfig->comm_fr ); + p.fillRect ( 10,10,width()-20,height()-20,*cconfig->comm_bg/*QColor(255,229,28)*/ ); + p.drawRect ( 10,10,width()-20,height()-20 ); + p.setClipRect ( 10,10,width()-20,height()-20 ); + + /*the .. case */ + if ( act != NULL ) { + ButtonEdit->setEnabled ( true ); + + if ( mode ) { + p.setPen ( *cconfig->comm_stext ); + p.drawText ( mx+15,my+w,tr ( "Upper container! (..)" ) ); + w+=pixelsHigh+10; } - /*file properties*/ - if(act->type == HC_FILE && ((DBFile *)(act->data))->prop != NULL) //File props: - { - tmp=((DBFile *)(act->data))->prop; - while(tmp != NULL) - { - /*mp3tag*/ - if(tmp->type == HC_MP3TAG) - { - p.setPen(*cconfig->comm_fr); - p.drawLine(12,my+w-11,width()-12,my+w-11); - p.setPen(*cconfig->comm_stext); - p.drawText(mx+12,my+w,tr("Mp3-Tag:")); w+=pixelsHigh; - p.drawText(mx+12,my+w,tr("(Art/Tit/Alb/Year/Comm)")); w+=pixelsHigh+2; - p.setPen(*cconfig->comm_vtext); - p.drawText(mx+20,my+w,((DBMp3Tag *)(tmp->data))->artist); w+=pixelsHigh; - p.drawText(mx+20,my+w,((DBMp3Tag *)(tmp->data))->title); w+=pixelsHigh; - p.drawText(mx+20,my+w,((DBMp3Tag *)(tmp->data))->album); w+=pixelsHigh; - p.drawText(mx+20,my+w,((DBMp3Tag *)(tmp->data))->year ); w+=pixelsHigh; - p.drawText(mx+20,my+w,((DBMp3Tag *)(tmp->data))->comment); w+=pixelsHigh+2; - } - tmp = tmp->next; - } - } - p.setPen(*cconfig->comm_fr); - p.drawLine(12,my+w-pixelsHigh,width()-12,my+w-pixelsHigh); - p.setPen(*cconfig->comm_stext); - w++; - p.drawText(mx+15,my+w,tr("Comment:")); w+=pixelsHigh; - switch(act->type) - { - case HC_CATALOG : - if(((DBCatalog *)(act->data))->comment == NULL) strcpy(text,""); - else sprintf(text,"%s",((DBCatalog *)(act->data))->comment); break; + + /*name*/ + p.setPen ( *cconfig->comm_stext ); + p.drawText ( mx+15,my+w,tr ( "Name:" ) ); + w+=pixelsHigh; + text=act->getNameOf(); + text.prepend ( " " ); + p.setPen ( *cconfig->comm_vtext ); + p.drawText ( mx+15,my+w,text ); + w+=pixelsHigh+ispace; + + /*media*/ + p.setPen ( *cconfig->comm_stext ); + p.drawText ( mx+15,my+w,tr ( "At media (number/name):" ) ); + w+=pixelsHigh; + tmp=act; + while ( tmp !=NULL && tmp->type != HC_MEDIA && tmp->type != HC_CATALOG ) + tmp=tmp->parent; + text=" "; + if ( tmp==NULL ) + text+=tr ( "Unknown" ); + if ( tmp->type==HC_CATALOG ) + text+= ( ( DBCatalog * ) ( tmp->data ) )->name; + if ( tmp->type==HC_MEDIA ) { + text+= QString().setNum ( ( ( DBMedia * ) ( tmp->data ) )->number ) + " / " + ( ( DBMedia * ) ( tmp->data ) )->name; + if ( ! ( ( ( DBMedia * ) ( tmp->data ) )->borrowing.isEmpty() ) ) { + p.setPen ( QPen ( QColor ( Qt::red ),2 ) ); + p.drawLine ( width()-24,14,width()-14,24 ); + p.drawLine ( width()-14,14,width()-24,24 ); + } + } + p.setPen ( QPen ( *cconfig->comm_vtext,1 ) ); + p.drawText ( mx+15,my+w,text ); + w+=pixelsHigh+ispace; + + /*type*/ + p.setPen ( *cconfig->comm_stext ); + p.drawText ( mx+15,my+w,tr ( "Type:" ) ); + w+=pixelsHigh; + switch ( act->type ) { + case HC_CATALOG : + text=tr ( " CdCat Catalog root" ); + break; + case HC_CATLNK : + text=tr ( " Link to a CdCat catalog" ); + break; + case HC_DIRECTORY: + text=tr ( " Directory" ); + break; + case HC_FILE : + text=tr ( " File" ); + break; + case HC_MEDIA : + text=QString ( " " ) + tr ( "Media" ) + QString ( "" ).sprintf ( " (%s)",getMType ( ( ( DBMedia * ) ( act->data ) )->type ) ); + break; + } + p.setPen ( *cconfig->comm_vtext ); + p.drawText ( mx+15,my+w,text ); + w+=pixelsHigh+ispace; + + + + /*if file->size*/ + if ( act->type == HC_FILE ) { + p.setPen ( *cconfig->comm_stext ); + p.drawText ( mx+15,my+w,tr ( "Size:" ) ); + w+=pixelsHigh; + text.sprintf ( " %.2f ", ( ( DBFile * ) ( act->data ) )->size); + text+=QString(getSType ( ( ( DBFile * ) ( act->data ) )->sizeType, true )); + p.setPen ( *cconfig->comm_vtext ); + p.drawText ( mx+15,my+w,text ); + w+=pixelsHigh+ispace; + } + + /*if catlnkfile->location*/ + if ( act->type == HC_CATLNK ) { + p.setPen ( *cconfig->comm_stext ); + p.drawText ( mx+15,my+w,tr ( "Location:" ) ); + w+=pixelsHigh; + p.setPen ( *cconfig->comm_vtext ); + text.sprintf ( " %s", ( ( DBCatLnk * ) ( act->data ) )->location ); + p.drawText ( mx+15,my+w,text ); + w+=pixelsHigh+ispace; + } + + if ( act->type != HC_CATLNK ) { + /*mod.time*/ + + p.setPen ( *cconfig->comm_stext ); + p.drawText ( mx+15,my+w,tr ( "Last modification:" ) ); + w+=pixelsHigh; + switch ( act->type ) { + case HC_CATALOG : + mod = ( ( DBCatalog * ) ( act->data ) )->modification; + break; case HC_DIRECTORY: - if(((DBDirectory *)(act->data))->comment == NULL) strcpy(text,""); - else sprintf(text,"%s",((DBDirectory *)(act->data))->comment); break; + mod = ( ( DBDirectory * ) ( act->data ) )->modification; + break; case HC_FILE : - if(((DBFile *)(act->data))->comment == NULL) strcpy(text,""); - else sprintf(text,"%s",((DBFile *)(act->data))->comment); break; + mod = ( ( DBFile * ) ( act->data ) )->modification; + break; case HC_MEDIA : - if(((DBMedia *)(act->data))->comment == NULL) strcpy(text,""); - else sprintf(text,"%s",((DBMedia *)(act->data))->comment); break; - case HC_CATLNK : - if(((DBCatLnk *)(act->data))->comment == NULL) strcpy(text,""); - else sprintf(text,"%s",((DBCatLnk *)(act->data))->comment); break; - } - p.setPen(*cconfig->comm_vtext); - for(i=0,j=0;i<= (int)strlen(text);) - { - if((text[i] == '#') || (text[i] == '\0')) - { - lin[j] = '\0'; - p.drawText(mx+20,my+w,lin); w+=pixelsHigh; - j=0; i++; - } - else - { - lin[j]=text[i]; - j++; i++; - } - } - - /*Content button stuff*/ - if(act->type == HC_FILE && ((DBFile *)(act->data))->prop != NULL) - { - tmp=((DBFile *)(act->data))->prop; - while(tmp != NULL) - { - if(tmp->type == HC_CONTENT) - { - need_showc_button = true; - } - tmp = tmp->next; - } - } - /*others...*/ - } - else - { - ButtonEdit->setEnabled(false); - p.setPen(*cconfig->comm_stext); - sprintf(text,(const char *)tr("There is no selected element.")); - p.setPen(*cconfig->comm_vtext); - p.drawText(mx+15,my+25,text); - } - - - if(!need_showc_button ) - { - ButtonContent->setEnabled(false); - //disconnect - } - - if(need_showc_button ) - { - ButtonContent->setEnabled(true); - //connect - } - ButtonContent->show(); - ButtonEdit->show(); - p.flush(); - delete [] text; + mod = ( ( DBMedia * ) ( act->data ) )->modification; + break; + } + + //sprintf(text," %s",((DBMedia *)(act->data))->modification);break; + text = date_to_str ( mod ); + + p.setPen ( *cconfig->comm_vtext ); + p.drawText ( mx+15,my+w,text ); + w+=pixelsHigh+ispace; + /*owner*/ + p.setPen ( *cconfig->comm_stext ); + p.drawText ( mx+15,my+w,tr ( "Owner:" ) ); + w+=pixelsHigh; + tmp=act; + while ( tmp !=NULL && tmp->type != HC_MEDIA && tmp->type != HC_CATALOG ) + tmp=tmp->parent; + text=" "; + if ( tmp==NULL ) text=tr ( "Unknown" ); + if ( tmp->type==HC_CATALOG ) + text+= ( ( DBCatalog * ) ( tmp->data ) )->owner; + if ( tmp->type==HC_MEDIA ) + text+= ( ( DBMedia * ) ( tmp->data ) )->owner; + + p.setPen ( *cconfig->comm_vtext ); + p.drawText ( mx+15,my+w,text ); + w+=pixelsHigh+ispace; + + + + } + /*file properties*/ + if ( act->type == HC_FILE && ( ( DBFile * ) ( act->data ) )->prop != NULL ) { //File props: + tmp= ( ( DBFile * ) ( act->data ) )->prop; + while ( tmp != NULL ) { + /*mp3tag*/ + if ( tmp->type == HC_MP3TAG ) { + p.setPen ( *cconfig->comm_fr ); + p.drawLine ( 12,my+w-11,width()-12,my+w-11 ); + p.setPen ( *cconfig->comm_stext ); + p.drawText ( mx+12,my+w,tr ( "Mp3-Tag:" ) ); + w+=pixelsHigh; + p.drawText ( mx+12,my+w,tr ( "(Art/Tit/Alb/Year/Comm)" ) ); + w+=pixelsHigh+2; + p.setPen ( *cconfig->comm_vtext ); + p.drawText ( mx+20,my+w, ( ( DBMp3Tag * ) ( tmp->data ) )->artist ); + w+=pixelsHigh; + p.drawText ( mx+20,my+w, ( ( DBMp3Tag * ) ( tmp->data ) )->title ); + w+=pixelsHigh; + p.drawText ( mx+20,my+w, ( ( DBMp3Tag * ) ( tmp->data ) )->album ); + w+=pixelsHigh; + p.drawText ( mx+20,my+w, ( ( DBMp3Tag * ) ( tmp->data ) )->year ); + w+=pixelsHigh; + p.drawText ( mx+20,my+w, ( ( DBMp3Tag * ) ( tmp->data ) )->comment ); + w+=pixelsHigh+2; + } + tmp = tmp->next; + } + } + p.setPen ( *cconfig->comm_fr ); + p.drawLine ( 12,my+w-pixelsHigh,width()-12,my+w-pixelsHigh ); + p.setPen ( *cconfig->comm_stext ); + w++; + p.drawText ( mx+15,my+w,tr ( "Comment:" ) ); + w+=pixelsHigh; + switch ( act->type ) { + case HC_CATALOG : + text= ( ( DBCatalog * ) ( act->data ) )->comment; + break; + case HC_DIRECTORY: + text= ( ( DBDirectory * ) ( act->data ) )->comment; + break; + case HC_FILE : + text= ( ( DBFile * ) ( act->data ) )->comment; + break; + case HC_MEDIA : + text= ( ( DBMedia * ) ( act->data ) )->comment; + break; + case HC_CATLNK : + text= ( ( DBCatLnk * ) ( act->data ) )->comment; + break; + } + p.setPen ( *cconfig->comm_vtext ); + + textList = QStringList::split ( QRegExp ( "#|\n|\r\n" ),text,TRUE ); + for ( QStringList::Iterator it=textList.begin(); it != textList.end();++it ) { + int max_comment_len = 20; + int stringlen = (*it).size(); + if(stringlen > max_comment_len) { +// cerr << "oversized comment line (" << stringlen <<"): " << qPrintable(*it) << endl; + int curlen=0; + QStringList textList2; + for (int curidx=0;curidx < stringlen;curidx++) { + if(curlen == max_comment_len) { + textList2.append((*it).mid(curidx-max_comment_len, curidx)); +// cerr << "added sub comment line (" << (*it).mid(curidx-max_comment_len, curidx).length() <<"): " << qPrintable((*it).mid(curidx-max_comment_len, curidx)) << endl; + curlen =0; + } + curlen++; + } + for ( QStringList::Iterator it2=textList2.begin(); it2 != textList2.end();++it2 ) { + p.drawText ( mx+20,my+w, ( *it2 ) ); + w+=pixelsHigh; + } + } + else { +// cerr << "undersized comment line (" << stringlen <<"): " << qPrintable(*it) << endl; + p.drawText ( mx+20,my+w, ( *it ) ); + w+=pixelsHigh; + } + } + w+=pixelsHigh+2; + p.setPen ( *cconfig->comm_fr ); + p.drawLine ( 12,my+w-pixelsHigh,width()-12,my+w-pixelsHigh ); + p.setPen ( *cconfig->comm_stext ); + w++; + p.drawText ( mx+15,my+w,tr ( "Category:" ) ); + w+=pixelsHigh; + switch ( act->type ) { + case HC_CATALOG : + text= ( ( DBCatalog * ) ( act->data ) )->category; + break; + case HC_DIRECTORY: + text= ( ( DBDirectory * ) ( act->data ) )->category; + break; + case HC_FILE : + text= ( ( DBFile * ) ( act->data ) )->category; + break; + case HC_MEDIA : + text= ( ( DBMedia * ) ( act->data ) )->category; + break; + case HC_CATLNK : + text= ( ( DBCatLnk * ) ( act->data ) )->category; + break; + } + p.setPen ( *cconfig->comm_vtext ); + + textList = QStringList::split ( QRegExp ( "#|\n|\r\n" ),text,TRUE ); + for ( QStringList::Iterator it=textList.begin(); it != textList.end();++it ) { + int max_category_len = 20; + int stringlen = (*it).size(); + if(stringlen > max_category_len) { +// cerr << "oversized category line (" << stringlen <<"): " << qPrintable(*it) << endl; + int curlen=0; + QStringList textList2; + for (int curidx=0;curidx < stringlen;curidx++) { + if(curlen == max_category_len) { + textList2.append((*it).mid(curidx-max_category_len, curidx)); +// cerr << "added sub category line (" << (*it).mid(curidx-max_category_len, curidx).length() <<"): " << qPrintable((*it).mid(curidx-max_category_len, curidx)) << endl; + curlen =0; + } + curlen++; + } + for ( QStringList::Iterator it2=textList2.begin(); it2 != textList2.end();++it2 ) { + p.drawText ( mx+20,my+w, ( *it2 ) ); + w+=pixelsHigh; + } + } + else { +// cerr << "undersized category line (" << stringlen <<"): " << qPrintable(*it) << endl; + p.drawText ( mx+20,my+w, ( *it ) ); + w+=pixelsHigh; + } + + } + + + /*Content button stuff*/ + if ( act->type == HC_FILE && ( ( DBFile * ) ( act->data ) )->prop != NULL ) { + tmp= ( ( DBFile * ) ( act->data ) )->prop; + while ( tmp != NULL ) { + if ( tmp->type == HC_CONTENT ) { + need_showc_button = true; + } + tmp = tmp->next; + } + } + /*others...*/ + } else { + ButtonEdit->setEnabled ( false ); + p.setPen ( *cconfig->comm_stext ); + p.setPen ( *cconfig->comm_vtext ); + p.drawText ( mx+15,my+25,tr ( "There is no selected element." ) ); } -void CommentWidget::resizeEvent(QResizeEvent *re) - { - ButtonEdit ->setGeometry(20,((re->size()).height())-45,30,30); - ButtonContent->setGeometry(55,((re->size()).height())-45,30,30); + + if ( !need_showc_button ) { + ButtonContent->setEnabled ( false ); + //disconnect } -void CommentWidget::showNode(Node *node,int mod) - { - act = node; - mode = mod; - repaint(); + if ( need_showc_button ) { + ButtonContent->setEnabled ( true ); + //connect } + ButtonContent->show(); + ButtonEdit->show(); +#if (QT_VERSION >= QT_VERSION_CHECK(4, 6, 0)) // needs Qt 4.6.0 or better + p.beginNativePainting(); +#endif + + //delete text; +//cerr <<"paintEvent-end"<setGeometry ( 20, ( ( re->size() ).height() )-45,30,30 ); + ButtonContent->setGeometry ( 55, ( ( re->size() ).height() )-45,30,30 ); + ButtonCategoryEdit->setGeometry ( 85, ( ( re->size() ).height() )-45,30,30 ); +// ButtonCategory->setGeometry ( 120, ( ( re->size() ).height() )-45,30,30 ); +} + +void CommentWidget::showNode ( Node *node,int mod ) { + act = node; + mode = mod; + repaint(); +} + +int CommentWidget::editC ( void ) { + editNodeComment ( act,this ); + emit touchdb(); + repaint(); + return 0; +} -int CommentWidget::editC(void) - { - editNodeComment(act,this); - emit touchdb(); - repaint(); - return 0; - } - -int CommentWidget::showC(void) - { - ShowContent *sc = new ShowContent(act,this,"showcw",true); - sc->exec(); - emit touchdb(); - repaint(); - delete sc; - return 0; - } +int CommentWidget::showC ( void ) { + ShowContent *sc = new ShowContent ( act, false, this,"showcw",true ); + sc->exec(); + emit touchdb(); + repaint(); + delete sc; + return 0; +} + + +int CommentWidget::editCategory ( void ) { + editNodeComment ( act,this, false ); + emit touchdb(); + repaint(); + return 0; +} + +int CommentWidget::showCategory ( void ) { + ShowContent *sc = new ShowContent ( act, true,this,"showcw",true ); + sc->exec(); + emit touchdb(); + repaint(); + delete sc; + return 0; +} /****************************************************************************************/ -commentEdit::commentEdit(QString cc, QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, fl ) +commentEdit::commentEdit ( QString cc, QWidget* parent, const char* name, bool modal, bool isCommentEdit, Qt::WFlags fl) + : QDialog ( parent, name, modal, fl ) { OK=0; + this->isCommentEdit = isCommentEdit; if ( !name ) - setName( "commentEdit" ); - setIcon(*get_t_comment_icon()); + setName ( "commentEdit" ); + setIcon ( *get_t_comment_icon() ); + setBaseSize ( QSize ( 300, 150 ) ); + setSizeGripEnabled ( TRUE ); + CommentEditBaseLayout = new Q3GridLayout ( this, 1, 1, 11, 6, "CommentEditBaseLayout" ); + + layout5 = new Q3VBoxLayout ( 0, 0, 6, "layout5" ); + + teComm = new Q3MultiLineEdit ( this, "teComm" ); + layout5->addWidget ( teComm ); + + layout4 = new Q3HBoxLayout ( 0, 0, 6, "layout4" ); + QSpacerItem* spacer = new QSpacerItem ( 130, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout4->addItem ( spacer ); + + buttonOk = new QPushButton ( this, "buttonOk" ); + buttonOk->setMinimumSize ( QSize ( 80, 0 ) ); + buttonOk->setAutoDefault ( TRUE ); + buttonOk->setDefault ( TRUE ); + layout4->addWidget ( buttonOk ); + + buttonCancel = new QPushButton ( this, "buttonCancel" ); + buttonCancel->setMinimumSize ( QSize ( 80, 0 ) ); + buttonCancel->setAutoDefault ( TRUE ); + layout4->addWidget ( buttonCancel ); + QSpacerItem* spacer_2 = new QSpacerItem ( 120, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout4->addItem ( spacer_2 ); + layout5->addLayout ( layout4 ); - setBaseSize( QSize( 300, 150 ) ); - setSizeGripEnabled( TRUE ); - CommentEditBaseLayout = new QGridLayout( this, 1, 1, 11, 6, "CommentEditBaseLayout"); - - layout5 = new QVBoxLayout( 0, 0, 6, "layout5"); - - teComm = new QMultiLineEdit( this, "teComm" ); - layout5->addWidget( teComm ); - - layout4 = new QHBoxLayout( 0, 0, 6, "layout4"); - QSpacerItem* spacer = new QSpacerItem( 130, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout4->addItem( spacer ); - - buttonOk = new QPushButton( this, "buttonOk" ); - buttonOk->setMinimumSize( QSize( 80, 0 ) ); - buttonOk->setAutoDefault( TRUE ); - buttonOk->setDefault( TRUE ); - layout4->addWidget( buttonOk ); - - buttonCancel = new QPushButton( this, "buttonCancel" ); - buttonCancel->setMinimumSize( QSize( 80, 0 ) ); - buttonCancel->setAutoDefault( TRUE ); - layout4->addWidget( buttonCancel ); - QSpacerItem* spacer_2 = new QSpacerItem( 120, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout4->addItem( spacer_2 ); - layout5->addLayout( layout4 ); - - CommentEditBaseLayout->addLayout( layout5, 0, 0 ); + CommentEditBaseLayout->addLayout ( layout5, 0, 0 ); languageChange(); - resize( QSize(275, 199).expandedTo(minimumSizeHint()) ); + resize ( QSize ( 600, 199 ).expandedTo ( minimumSizeHint() ) ); // signals and slots connections - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( pushOk() ) ); - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( pushCancel() ) ); - - teComm->setText(recode2((const char *)cc)); + connect ( buttonOk, SIGNAL ( clicked() ), this, SLOT ( pushOk() ) ); + connect ( buttonCancel, SIGNAL ( clicked() ), this, SLOT ( pushCancel() ) ); + + teComm->setText ( cc.replace ( QRegExp ( "#" ),"\n" ) ); } /* * Destroys the object and frees any allocated resources */ -commentEdit::~commentEdit() -{ +commentEdit::~commentEdit() { // no need to delete child widgets, Qt does it all for us } @@ -436,93 +577,145 @@ * Sets the strings of the subwidgets using the current * language. */ -void commentEdit::languageChange() -{ - setCaption( tr( "Edit Comment" ) ); - buttonCancel->setText( tr( "Cancel" ) ); - buttonOk->setText( tr( "OK" ) ); -} - -int commentEdit::pushOk(void) - { - OK = 1; - newc = teComm->text(); - close(); - return 0; - } - -int commentEdit::pushCancel(void) - { - OK = 0; - close(); - return 0; - } - -int editNodeComment(Node *node,QWidget *parent) - { - commentEdit *ce; - char o[1024]; - - if(node == NULL) return 0; - - switch(node->type) - { - case HC_CATALOG : - if(((DBCatalog *)(node->data))->comment == NULL) strcpy(o,""); - else sprintf(o,"%s",((DBCatalog *)(node->data))->comment); break; - case HC_DIRECTORY: - if(((DBDirectory *)(node->data))->comment == NULL) strcpy(o,""); - else sprintf(o,"%s",((DBDirectory *)(node->data))->comment); break; - case HC_FILE : - if(((DBFile *)(node->data))->comment == NULL) strcpy(o,""); - else sprintf(o,"%s",((DBFile *)(node->data))->comment); break; - case HC_MEDIA : - if(((DBMedia *)(node->data))->comment == NULL) strcpy(o,""); - else sprintf(o,"%s",((DBMedia *)(node->data))->comment); break; - case HC_CATLNK : - if(((DBCatLnk *)(node->data))->comment == NULL) strcpy(o,""); - else sprintf(o,"%s",((DBCatLnk *)(node->data))->comment); break; - - } - - ce = new commentEdit(o,parent,"commentEdit",true); - - ce->exec(); - - if(ce->OK == 0) return 0; - switch(node->type) - { - case HC_CATALOG : - if(((DBCatalog *)(node->data))->comment != NULL) - delete [] ((DBCatalog *)(node->data))->comment; - ((DBCatalog *)(node->data))->comment=mstr(recode((char *)((const char *)ce->newc),&abuff)); - break; - - case HC_DIRECTORY: - if(((DBDirectory *)(node->data))->comment != NULL) - delete [] ((DBDirectory *)(node->data))->comment; - ((DBDirectory *)(node->data))->comment=mstr(recode((char *)((const char *)ce->newc),&abuff)); - break; - - case HC_FILE : - if(((DBFile *)(node->data))->comment != NULL) - delete [] ((DBFile *)(node->data))->comment; - ((DBFile *)(node->data))->comment=mstr(recode((char *)((const char *)ce->newc),&abuff)); - break; - - case HC_MEDIA : - if(((DBMedia *)(node->data))->comment != NULL) - delete [] ((DBMedia *)(node->data))->comment; - ((DBMedia *)(node->data))->comment=mstr(recode((char *)((const char *)ce->newc),&abuff)); - break; - case HC_CATLNK : - if(((DBCatLnk *)(node->data))->comment != NULL) - delete [] ((DBCatLnk *)(node->data))->comment; - ((DBCatLnk *)(node->data))->comment=mstr(recode((char *)((const char *)ce->newc),&abuff)); - break; - } - node->touchDB(); - return 0; - } - +void commentEdit::languageChange() { + if(isCommentEdit) + setCaption ( tr ( "Edit comment of" ) ); + else + setCaption ( tr ( "Edit category of" ) ); + buttonCancel->setText ( tr ( "Cancel" ) ); + buttonOk->setText ( tr ( "OK" ) ); +} + +int commentEdit::pushOk ( void ) { + OK = 1; + newc = teComm->text(); + close(); + return 0; +} + +int commentEdit::pushCancel ( void ) { + OK = 0; + close(); + return 0; +} + +int editNodeComment ( Node *node,QWidget *parent, bool isCommentEdit ) { + commentEdit *ce; + QString o, n, newCaption; + + if ( node == NULL ) return 0; + + ce = new commentEdit ( o,parent,"commentEdit",true, isCommentEdit ); + if(isCommentEdit) { + switch ( node->type ) { + case HC_CATALOG : + o = ( ( DBCatalog * ) ( node->data ) )->comment; + newCaption = ce->caption()+" "+node->getFullPath(); + break; + case HC_DIRECTORY: + o = ( ( DBDirectory * ) ( node->data ) )->comment; + newCaption = ce->caption()+" "+node->getFullPath(); + break; + case HC_FILE : + o = ( ( DBFile * ) ( node->data ) )->comment; + newCaption = ce->caption()+" "+node->getFullPath(); + break; + case HC_MEDIA : + o = ( ( DBMedia * ) ( node->data ) )->comment; + newCaption = ce->caption()+" "+node->getFullPath(); + break; + case HC_CATLNK : + o = ( ( DBCatLnk * ) ( node->data ) )->comment; + newCaption = ce->caption()+" "+node->getFullPath(); + break; + } + } + else { + switch ( node->type ) { + case HC_CATALOG : + o = ( ( DBCatalog * ) ( node->data ) )->category; + newCaption = ce->caption()+" "+node->getFullPath(); + break; + case HC_DIRECTORY: + o = ( ( DBDirectory * ) ( node->data ) )->category; + newCaption = ce->caption()+" "+node->getFullPath(); + break; + case HC_FILE : + o = ( ( DBFile * ) ( node->data ) )->category; + newCaption = ce->caption()+" "+node->getFullPath(); + break; + case HC_MEDIA : + o = ( ( DBMedia * ) ( node->data ) )->category; + newCaption = ce->caption()+" "+node->getFullPath(); + break; + case HC_CATLNK : + o = ( ( DBCatLnk * ) ( node->data ) )->category; + newCaption = ce->caption()+" "+node->getFullPath(); + break; + } + } + + ce->setCaption(newCaption); + ce->exec(); + + if ( ce->OK == 0 ) return 0; + if(isCommentEdit) { + switch ( node->type ) { + case HC_CATALOG : + ( ( DBCatalog * ) ( node->data ) )->comment = + ( ce->newc ).replace ( QRegExp ( "\n" ),"#" ); + break; + + case HC_DIRECTORY: + ( ( DBDirectory * ) ( node->data ) )->comment = + ( ce->newc ).replace ( QRegExp ( "\n" ),"#" ); + break; + + case HC_FILE : + ( ( DBFile * ) ( node->data ) )->comment = + ( ce->newc ).replace ( QRegExp ( "\n" ),"#" ); + break; + + case HC_MEDIA : + ( ( DBMedia * ) ( node->data ) )->comment = + ( ce->newc ).replace ( QRegExp ( "\n" ),"#" ); + break; + + case HC_CATLNK : + ( ( DBCatLnk * ) ( node->data ) )->comment = + ( ce->newc ).replace ( QRegExp ( "\n" ),"#" ); + break; + } + } + else { + switch ( node->type ) { + case HC_CATALOG : + ( ( DBCatalog * ) ( node->data ) )->category = + ( ce->newc ).replace ( QRegExp ( "\n" ),"#" ); + break; + + case HC_DIRECTORY: + ( ( DBDirectory * ) ( node->data ) )->category = + ( ce->newc ).replace ( QRegExp ( "\n" ),"#" ); + break; + + case HC_FILE : + ( ( DBFile * ) ( node->data ) )->category = + ( ce->newc ).replace ( QRegExp ( "\n" ),"#" ); + break; + + case HC_MEDIA : + ( ( DBMedia * ) ( node->data ) )->category = + ( ce->newc ).replace ( QRegExp ( "\n" ),"#" ); + break; + + case HC_CATLNK : + ( ( DBCatLnk * ) ( node->data ) )->category = + ( ce->newc ).replace ( QRegExp ( "\n" ),"#" ); + break; + } + } + node->touchDB(); + return 0; +} diff -Nru cdcat-1.01b/src/commwidget.h cdcat-1.2/src/commwidget.h --- cdcat-1.01b/src/commwidget.h 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/commwidget.h 2011-01-30 15:23:01.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** - Hyper's CD Catalog + Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -15,76 +15,86 @@ #include #include #include - -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; +//Added by qt3to4: +#include +#include +#include +#include +#include +#include +#include +#include + +class Q3VBoxLayout; +class Q3HBoxLayout; +class Q3GridLayout; class QPaintEvent; class QPixmap; class Node; class QPushButton; -class QMultiLineEdit; +class Q3MultiLineEdit; class QEvent; class CdCatConfig; -int editNodeComment(Node *node,QWidget *parent); +int editNodeComment ( Node *node,QWidget *parent, bool isCommentEdit=true ); + +class HQToolButton : public QToolButton { +public: + HQToolButton ( QWidget *parent = 0 ); +protected: + void enterEvent ( QEvent *e ); + void leaveEvent ( QEvent *e ); +}; + +class CommentWidget : public QWidget { + Q_OBJECT + +public: + + CommentWidget ( CdCatConfig * cc,QApplication *appl,QWidget *parent=0,const char *name=0, Qt::WFlags fl=0 ); + + CdCatConfig * cconfig; + HQToolButton* ButtonEdit; + HQToolButton* ButtonCategory; + HQToolButton* ButtonCategoryEdit; + HQToolButton* ButtonContent; + void showNode ( Node *node,int mod ); + + + Node *act; + int mode; +signals: + void touchdb(); +protected: + void enterEvent ( QEvent *e ); + void leaveEvent ( QEvent *e ); + void paintEvent ( QPaintEvent *pe ); + void resizeEvent ( QResizeEvent *re ); + void mouseMoveEvent ( QMouseEvent *me ); + void mousePressEvent ( QMouseEvent *me ); + void mouseReleaseEvent ( QMouseEvent *me ); + +private: + int mx,my,ox,oy; + QPixmap image13; + QApplication *app; + +public slots: + int editC ( void ); + int showC ( void ); + int editCategory ( void ); + int showCategory ( void ); +}; -class HQToolButton : public QToolButton - { - public: - HQToolButton(QWidget *parent = 0); - protected: - void enterEvent(QEvent *e); - void leaveEvent(QEvent *e); - }; - -class CommentWidget : public QWidget - { - Q_OBJECT - - public: - - CommentWidget(CdCatConfig * cc,QApplication *appl,QWidget *parent=0,const char *name=0,WFlags fl=0); - - CdCatConfig * cconfig; - HQToolButton* ButtonEdit; - HQToolButton* ButtonContent; - void showNode(Node *node,int mod); - - - Node *act; - int mode; - signals: - void touchdb(); - protected: - void enterEvent(QEvent *e); - void leaveEvent(QEvent *e); - void paintEvent(QPaintEvent *pe); - void resizeEvent(QResizeEvent *re); - void mouseMoveEvent(QMouseEvent *me); - void mousePressEvent(QMouseEvent *me); - void mouseReleaseEvent(QMouseEvent *me); - - private: - int mx,my,ox,oy; - QPixmap image13; - QApplication *app; - - public slots: - int editC(void); - int showC(void); - }; - //------------------------------------------------------------------------------------- -class commentEdit : public QDialog -{ +class commentEdit : public QDialog { Q_OBJECT public: - commentEdit(QString cc,QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); + commentEdit ( QString cc,QWidget* parent = 0, const char* name = 0, bool modal = FALSE, bool isCommentEdit=true, Qt::WFlags fl = 0 ); ~commentEdit(); - QMultiLineEdit* teComm; + Q3MultiLineEdit* teComm; QPushButton* buttonOk; QPushButton* buttonCancel; @@ -93,14 +103,15 @@ virtual int pushCancel(); protected: - QGridLayout* CommentEditBaseLayout; - QVBoxLayout* layout5; - QHBoxLayout* layout4; + Q3GridLayout* CommentEditBaseLayout; + Q3VBoxLayout* layout5; + Q3HBoxLayout* layout4; public: - QString newc; + QString newc; int OK; - + bool isCommentEdit; + protected slots: virtual void languageChange(); }; diff -Nru cdcat-1.01b/src/config.cpp cdcat-1.2/src/config.cpp --- cdcat-1.01b/src/config.cpp 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/config.cpp 2011-02-10 11:08:23.000000000 +0000 @@ -21,13 +21,16 @@ #include #include #include -#include +#include #include #include #include -#include +#include #include #include +//Added by qt3to4: +#include +#include #include @@ -51,1095 +54,1325 @@ #define CONFIGFILE ".cdcatconf" #endif +using namespace std; +CdCatConfig::CdCatConfig ( void ) { -CdCatConfig::CdCatConfig(void) - { - - // The default values of config. - // If you delete the config file (or prats of file) - // the values will be set to these: - - startpar = false; - startfn = ""; - - ownfont = false; - fsize = 8; - historysize= 10; - autoload = false; - autoloadfn = ""; - nice = true; - cdrompath = ""; - hlist = 0; - autosave = false; - - readtag = true; - v1_over_v2 = false; - readinfo = true; - readcontent = false; - readcfiles = "*.nfo;*.diz"; - readclimit = 32*1024; - - readavii = true; - - find_cs = false; - find_em = false; - find_di = true; - find_fi = true; - find_co = true; - find_ct = true; - find_mco = true; - find_mar = true; - find_mti = true; - find_mal = true; - findX = 10; - findY = 10; - findWidth = 515; - findHeight = 365; - - mainP1 = 200; - mainP2 = 270; - mainP3 = 170; - - windowSize.setWidth(windowSize_width=640); - windowSize.setHeight(windowSize_height=480); - windowPos.setX(5); - windowPos.setY(5); - - comm_bg = new QColor(255,225,0); - comm_stext = new QColor(0,0,0); - comm_vtext = new QColor(10,10,255); - comm_fr = new QColor(0,0,0); - - linkf = true; +// The default values of config. +// If you delete the config file (or prats of file) +// the values will be set to these: - -#ifndef _WIN32 - mounteject = false; -#else - lang = "eng"; -#endif - - } + startpar = false; + startfn = ""; -void CdCatConfig::setParameter(char *par) - { - startpar = true; - startfn = par; - } - -int CdCatConfig::startProgram(DataBase **dbp,QWidget *mw) - { - QString loadablefile; - if(autoload) loadablefile = autoloadfn; - if(startpar) loadablefile = startfn; - - if(autoload || startpar) - { - if((*dbp) == NULL) - (*dbp) = new DataBase(); - - PWw *pww = new PWw(mw); - (*dbp)->pww = pww; - progress(pww); - if((*dbp)->openDB((char *)((const char *)loadablefile))) - { - (*dbp) = NULL; - QMessageBox::warning(mw,tr("Error during autoload..."), - startpar ? tr("I can't open the autoload catalog according the first command line parameter.\nCheck the file!\n") - : tr("I can't open the autoload catalog.\nCheck the file, or change the autoload option in the config dialog!\n"), - tr("Ok"),0); - } - progress(pww); - pww->end(); - if((*dbp) != NULL) - (*dbp)->pww = NULL; - delete pww; - } - return 0; - } - - - -int secv(const char *s,int i) - { - int v1,v2,v3; - - sscanf(s,"%d,%d,%d",&v1,&v2,&v3); - - if(i == 0) return v1; - if(i == 1) return v2; - if(i == 2) return v3; - return 0; - } - - -int CdCatConfig::readConfig(void) - { - int error = 0; + ownfont = false; + fsize = 8; + historysize= 10; + autoload = false; + autoloadfn = ""; + nice = true; + // set dummy #ifdef _WIN32 - QFile f(CONFIGFILE); + cdrompath = "D:/"; + lastDir = getenv("USER_PROFILE"); #else + cdrompath = "/dev/sr0"; + lastDir = getenv("HOME"); +#endif + + hlist.clear(); + autosave = false; + debug_info_enabled = false; + readtag = true; + v1_over_v2 = false; + readinfo = true; + readcontent = false; + readcfiles = "*.nfo;*.diz"; + readclimit = 32*1024; + lastMediaType = CD; + saveAlwaysCatalogInUtf8 = true; + showProgressedFileInStatus = true; + + readavii = true; + + find_cs = false; + find_em = true; + find_di = true; + find_fi = true; + find_co = true; + find_ct = true; + find_mco = true; + find_mar = true; + find_mti = true; + find_mal = true; + find_size_min = false; + find_size_max = false; + find_date_start = false; + find_date_end = false; + find_unsharp_search = false; + find_size_unit_min_val = 2; + find_size_unit_max_val = 2; + find_size_min_val = 1; + find_size_max_val = 10; + findX = 10; + findY = 10; + findWidth = 600; + findHeight = 500; + + mainP1 = 200; + mainP2 = 270; + mainP3 = 170; + + windowSize.setWidth ( windowSize_width=640 ); + windowSize.setHeight ( windowSize_height=480 ); + windowPos.setX ( 5 ); + windowPos.setY ( 5 ); + + comm_bg = new QColor ( 255,225,0 ); + comm_stext = new QColor ( 0,0,0 ); + comm_vtext = new QColor ( 10,10,255 ); + comm_fr = new QColor ( 0,0,0 ); - if(getenv("HOME") == NULL) - return 1; - QString tmp; - tmp+=getenv("HOME"); - tmp+="/"; - tmp+=QString(CONFIGFILE); - QFile f(tmp); -#endif - - QString msg; - if (f.open(IO_ReadOnly)) - { // file opened successfully - QTextStream t(&f); // use a text stream - - while (!t.eof()) - { - QString line; - line= t.readLine(); // line of text excluding '\n' - msg+=line; - msg+="\n"; - - if (!line.startsWith("#") && !line.isEmpty() && line.contains("=")) - { - int index = line.find('='); - QString var = (line.left(index)).stripWhiteSpace(); - QString val = (line.mid(index+1,line.length()-index)).stripWhiteSpace(); - - // QString info = "variable: "+var+", val: "+val; - // QMessageBox::information(0,"found",info); - - if (var=="font_size") - { - fsize = val.toInt(); - continue; - } - - if (var=="history_size") - { - historysize=val.toInt(); - continue; - } - - if(var=="history" ) - { - QString history=val; - if (!history.isEmpty()) - { - int idx=0; - int idx2=0; - while (idx2 > -1) - { - idx2 =history.find(';',idx); - if ((int)idx != (int)(history.length()-1)) - { - if (!(history.mid(idx,idx2-idx)).isEmpty()) - hlist.append (history.mid(idx,idx2-idx)); - } - idx=idx2+1; - } - while((int)hlist.count() > (int)historysize) - hlist.remove(hlist.begin()); - } - continue; - } // history - - if(var=="autoload") - { - if(val=="true") - autoload=true; - else - autoload=false; - continue; - } - - if(var=="autosave") - { - if(val=="true") - autosave=true; - else - autosave=false; - continue; - } - - if(var=="ownfont") - { - if(val=="true") - ownfont=true; - else - ownfont=false; - continue; - } - - if (var=="autoload_file") - { - autoloadfn=val; - continue; - } - - if(var=="niceformat") - { - if(val=="true") - nice=true; - else - nice=false; - continue; - } + linkf = true; - if (var=="cdrompath") - { - if(!val.isEmpty()) - cdrompath=val; - continue; - } #ifndef _WIN32 - - if(var=="mounteject") - { - if(val=="true") - mounteject=true; - else - mounteject=false; - continue; - } -#else - if(var=="lang") - { - lang = val; - continue; - } + mounteject = false; #endif - if (var=="windowSize_height") - { - windowSize_height = val.toInt(); - continue; - } - if (var=="windowSize_width") - { - windowSize_width = val.toInt(); - continue; - } - if (var=="windowPos_x") - { - windowPos.setX(val.toInt()); - continue; - } - if (var=="windowPos_y") - { - windowPos.setY(val.toInt()); - continue; - } +#ifdef _WIN32 + lang = "eng"; +#endif - if (var=="dirview_size") - { - mainP1 =val.toInt(); - continue; - } - if (var=="listview_size") - { - mainP2 =val.toInt(); - continue; - } - if (var=="commentview_size") - { - mainP3 =val.toInt(); - continue; - } +#ifdef Q_WS_MAC + lang = "eng"; +#endif +} - // Read the options of find dialog - if(var=="find_checkbox_casesens") - { - if(val=="true") - find_cs=true; - else - find_cs=false; - continue; - } - if(var=="find_checkbox_easymatch") - { - if(val=="true") - find_em=true; - else - find_em=false; - continue; - } - if(var=="find_checkbox_directory") - { - if(val=="true") - find_di=true; - else - find_di=false; - continue; - } - if(var=="find_checkbox_file") - { - if(val=="true") - find_fi=true; - else - find_fi=false; - continue; - } - if(var=="find_checkbox_comment") - { - if(val=="true") - find_co=true; - else - find_co=false; - continue; - } - if(var=="find_checkbox_content") - { - if(val=="true") - find_ct=true; - else - find_ct=false; - continue; - } - if(var=="find_checkbox_mp3artist") - { - if(val=="true") - find_mar=true; - else - find_mar=false; - continue; - } - if(var=="find_checkbox_mp3title") - { - if(val=="true") - find_mti=true; - else - find_mti=false; - continue; - } - if(var=="find_checkbox_mp3album") - { - if(val=="true") - find_mal=true; - else - find_mal=false; - continue; - } - if(var=="find_checkbox_mp3comment") - { - if(val=="true") - find_mco=true; - else - find_mco=false; - continue; - } +CdCatConfig::~CdCatConfig(void) { + DEBUG_INFO_ENABLED = init_debug_info(); + if (DEBUG_INFO_ENABLED != NULL) + delete DEBUG_INFO_ENABLED; +} - if (var=="findPos_x") - { - findX =val.toInt(); - continue; - } - if (var=="findPos_y") - { - findY =val.toInt(); - continue; - } - if (var=="findSize_width") - { - findWidth =val.toInt(); - continue; - } - if (var=="findSize_height") - { - findHeight =val.toInt(); - continue; - } +void CdCatConfig::setParameter ( char *par ) { + startpar = true; + startfn = par; +} - if(var=="read_avi_techinfo") - { - if(val=="true") - readavii=true; - else - readavii=false; - continue; - } +int CdCatConfig::startProgram ( DataBase **dbp,QWidget *mw ) { + QString loadablefile; + if ( autoload ) loadablefile = autoloadfn; + if ( startpar ) loadablefile = startfn; + + if ( autoload || startpar ) { + if ( ( *dbp ) == NULL ) + ( *dbp ) = new DataBase(); + + PWw *pww = new PWw ( mw ); + ( *dbp )->pww = pww; + progress ( pww ); + if ( ( *dbp )->openDB ( ( char * ) ( ( const char * ) loadablefile ) ) ) { + ( *dbp ) = NULL; + QMessageBox::warning ( mw,tr ( "Error during autoload..." ), + startpar ? tr ( "I can't open the autoload catalog according the first command line parameter.\nCheck the file!\n" ) + : tr ( "I can't open the autoload catalog.\nCheck the file, or change the autoload option in the config dialog!\n" ) ); + } + progress ( pww ); + pww->end(); + if ( ( *dbp ) != NULL ) + ( *dbp )->pww = NULL; + delete pww; + } + return 0; +} - if(var=="read_mp3tag") - { - if(val=="true") - readtag=true; - else - readtag=false; - continue; - } - if(var=="mp3tag_default_v1") - { - if(val=="true") - v1_over_v2=true; - else - v1_over_v2=false; - continue; - } - if(var=="read_mp3techinfo") - { - if(val=="true") - readinfo=true; - else - readinfo=false; - continue; - } +int secv ( const char *s,int i ) { + int v1,v2,v3; - if(var=="read_content") - { - if(val=="true") - readcontent=true; - else - readcontent=false; - continue; - } - if (var=="read_content_files") - { - if(!val.isEmpty()) - readcfiles=val; - continue; - } - if (var=="read_content_limit") - { - readclimit =val.toInt(); - continue; - } + sscanf ( s,"%d,%d,%d",&v1,&v2,&v3 ); + if ( i == 0 ) return v1; + if ( i == 1 ) return v2; + if ( i == 2 ) return v3; + return 0; +} - if (var=="comment_bg_color") - { - int r=0,g=0,b=0; - - r=secv(val,0); - g=secv(val,1); - b=secv(val,2); - - comm_bg->setRgb(r,g,b); - continue; - } - if (var=="comment_fr_color") - { - int r=0,g=0,b=0; - - r=secv(val,0); - g=secv(val,1); - b=secv(val,2); +int CdCatConfig::readConfig ( void ) { + int error = 0; +#ifdef _WIN32 + QFile f ( CONFIGFILE ); +#else - comm_fr->setRgb(r,g,b); - continue; - } + if ( getenv ( "HOME" ) == NULL ) + return 1; + QString tmp; + tmp+=getenv ( "HOME" ); + tmp+="/"; + tmp+=QString ( CONFIGFILE ); + QFile f ( tmp ); +#endif - if (var=="comment_ts_color") - { - int r=0,g=0,b=0; - - r=secv(val,0); - g=secv(val,1); - b=secv(val,2); - - comm_stext->setRgb(r,g,b); - continue; - } + QString msg; + if ( f.open ( QIODevice::ReadOnly ) ) { // file opened successfully + QTextStream t ( &f ); // use a text stream + + while ( !t.atEnd() ) { + QString line; + line= t.readLine(); // line of text excluding '\n' + msg+=line; + msg+="\n"; + + if ( !line.startsWith ( "#" ) && !line.isEmpty() && line.contains ( "=" ) ) { + int index = line.find ( '=' ); + QString var = ( line.left ( index ) ).stripWhiteSpace(); + QString val = ( line.mid ( index+1,line.length()-index ) ).stripWhiteSpace(); + + // QString info = "variable: "+var+", val: "+val; + // QMessageBox::information(0,"found",info); + + if ( var=="font_size" ) { + fsize = val.toInt(); + continue; + } + + else if ( var=="history_size" ) { + historysize=val.toInt(); + continue; + } + + else if ( var=="history" ) { + QString history=val; + if ( !history.isEmpty() ) { + int idx=0; + int idx2=0; + while ( idx2 > -1 ) { + idx2 =history.find ( ';',idx ); + if ( ( int ) idx != ( int ) ( history.length()-1 ) ) { + if ( ! ( history.mid ( idx,idx2-idx ) ).isEmpty() ) + hlist.append ( history.mid ( idx,idx2-idx ) ); + } + idx=idx2+1; + } + while ( ( int ) hlist.count() > ( int ) historysize ) + hlist.remove ( hlist.begin() ); + } + continue; + } // history + + else if ( var=="autoload" ) { + if ( val=="true" ) + autoload=true; + else + autoload=false; + continue; + } + + else if ( var=="autosave" ) { + if ( val=="true" ) + autosave=true; + else + autosave=false; + continue; + } + + else if ( var=="ownfont" ) { + if ( val=="true" ) + ownfont=true; + else + ownfont=false; + continue; + } + + else if ( var=="autoload_file" ) { + autoloadfn=val; + continue; + } + + else if ( var=="niceformat" ) { + if ( val=="true" ) + nice=true; + else + nice=false; + continue; + } + + else if ( var=="cdrompath" ) { + if ( !val.isEmpty() ) + cdrompath=val; + continue; + } - if (var=="comment_td_color") - { - int r=0,g=0,b=0; - - r=secv(val,0); - g=secv(val,1); - b=secv(val,2); - - comm_vtext->setRgb(r,g,b); - continue; - } - - if(var=="catalog_link_is_first") - { - if(val=="true") - linkf=true; - else - linkf=false; - continue; - } - +#ifndef _WIN32 + else if ( var=="mounteject" ) { + if ( val=="true" ) + mounteject=true; + else + mounteject=false; + continue; + } +#endif - fprintf(stderr,"Unknown key founded: %s\n",(const char *)var); - error = 1; +#ifdef _WIN32 + else if ( var=="lang" ) { + lang = val; + continue; + } +#endif +#ifdef Q_WS_MAC + else if ( var=="lang" ) { + lang = val; + continue; + } +#endif - } // no comment - } // while lines - f.close(); - - windowSize.setHeight(windowSize_height); - windowSize.setWidth(windowSize_width); - } // file exist - else return 1; - return error; - } + else if ( var=="windowSize_height" ) { + windowSize_height = val.toInt(); + continue; + } + else if ( var=="windowSize_width" ) { + windowSize_width = val.toInt(); + continue; + } + else if ( var=="windowPos_x" ) { + windowPos.setX ( val.toInt() ); + continue; + } + else if ( var=="windowPos_y" ) { + windowPos.setY ( val.toInt() ); + continue; + } + + else if ( var=="dirview_size" ) { + mainP1 =val.toInt(); + continue; + } + else if ( var=="listview_size" ) { + mainP2 =val.toInt(); + continue; + } + else if ( var=="commentview_size" ) { + mainP3 =val.toInt(); + continue; + } + + // Read the options of find dialog + else if ( var=="find_checkbox_casesens" ) { + if ( val=="true" ) + find_cs=true; + else + find_cs=false; + continue; + } + else if ( var=="find_checkbox_easymatch" ) { + if ( val=="true" ) + find_em=true; + else + find_em=false; + continue; + } + else if ( var=="find_checkbox_directory" ) { + if ( val=="true" ) + find_di=true; + else + find_di=false; + continue; + } + else if ( var=="find_checkbox_file" ) { + if ( val=="true" ) + find_fi=true; + else + find_fi=false; + continue; + } + else if ( var=="find_checkbox_comment" ) { + if ( val=="true" ) + find_co=true; + else + find_co=false; + continue; + } + else if ( var=="find_checkbox_content" ) { + if ( val=="true" ) + find_ct=true; + else + find_ct=false; + continue; + } + else if ( var=="find_checkbox_mp3artist" ) { + if ( val=="true" ) + find_mar=true; + else + find_mar=false; + continue; + } + else if ( var=="find_checkbox_mp3title" ) { + if ( val=="true" ) + find_mti=true; + else + find_mti=false; + continue; + } + else if ( var=="find_checkbox_mp3album" ) { + if ( val=="true" ) + find_mal=true; + else + find_mal=false; + continue; + } + else if ( var=="find_checkbox_mp3comment" ) { + if ( val=="true" ) + find_mco=true; + else + find_mco=false; + continue; + } + + else if ( var=="find_checkbox_size_min" ) { + if ( val=="true" ) + find_size_min=true; + else + find_size_min=false; + continue; + } + + else if ( var=="find_checkbox_size_max" ) { + if ( val=="true" ) + find_size_max=true; + else + find_size_max=false; + continue; + } + + else if ( var=="findPos_x" ) { + findX =val.toInt(); + continue; + } + else if ( var=="findPos_y" ) { + findY =val.toInt(); + continue; + } + else if ( var=="findSize_width" ) { + findWidth =val.toInt(); + continue; + } + + else if ( var=="findSize_height" ) { + findHeight =val.toInt(); + continue; + } + + else if ( var=="read_avi_techinfo" ) { + if ( val=="true" ) + readavii=true; + else + readavii=false; + continue; + } + + else if ( var=="read_mp3tag" ) { + if ( val=="true" ) + readtag=true; + else + readtag=false; + continue; + } + + else if ( var=="mp3tag_default_v1" ) { + if ( val=="true" ) + v1_over_v2=true; + else + v1_over_v2=false; + continue; + } + + else if ( var=="read_mp3techinfo" ) { + if ( val=="true" ) + readinfo=true; + else + readinfo=false; + continue; + } + + else if ( var=="read_content" ) { + if ( val=="true" ) + readcontent=true; + else + readcontent=false; + continue; + } + else if ( var=="read_content_files" ) { + if ( !val.isEmpty() ) + readcfiles=val; + continue; + } + + else if ( var=="read_content_limit" ) { + readclimit =val.toInt(); + continue; + } + + else if ( var=="find_date_start" ) { + if ( val=="true" ) + find_date_start=true; + else + find_date_start=false; + continue; + } + + else if ( var=="find_date_end" ) { + if ( val=="true" ) + find_date_end=true; + else + find_date_end=false; + continue; + } + + else if ( var=="find_date_start_val" ) { + find_date_start_val = QDateTime().fromString(val); + continue; + } + + else if ( var=="find_date_end_val" ) { + find_date_end_val =QDateTime().fromString(val); + continue; + } + + else if ( var=="find_size_min_val" ) { + find_size_min_val =val.toInt(); + continue; + } + + else if ( var=="find_size_min" ) { + if ( val=="true" ) + find_size_min=true; + else + find_size_min=false; + continue; + } + + else if ( var=="find_size_max" ) { + if ( val=="true" ) + find_size_max=true; + else + find_size_max=false; + continue; + } + + else if ( var=="find_size_max_val" ) { + find_size_max_val =val.toInt(); + continue; + } + + else if ( var=="find_size_unit_min_val" ) { + find_size_unit_min_val =val.toInt(); + continue; + } + + else if ( var=="find_size_unit_max_val" ) { + find_size_unit_max_val =val.toInt(); + continue; + } + + if ( var=="comment_bg_color" ) { + int r=0,g=0,b=0; + + r=secv ( val,0 ); + g=secv ( val,1 ); + b=secv ( val,2 ); + + comm_bg->setRgb ( r,g,b ); + continue; + } + + else if ( var=="comment_fr_color" ) { + int r=0,g=0,b=0; + + r=secv ( val,0 ); + g=secv ( val,1 ); + b=secv ( val,2 ); + + comm_fr->setRgb ( r,g,b ); + continue; + } + + else if ( var=="comment_ts_color" ) { + int r=0,g=0,b=0; + + r=secv ( val,0 ); + g=secv ( val,1 ); + b=secv ( val,2 ); + + comm_stext->setRgb ( r,g,b ); + continue; + } + + else if ( var=="comment_td_color" ) { + int r=0,g=0,b=0; + + r=secv ( val,0 ); + g=secv ( val,1 ); + b=secv ( val,2 ); + + comm_vtext->setRgb ( r,g,b ); + continue; + } + + else if ( var=="catalog_link_is_first" ) { + if ( val=="true" ) + linkf=true; + else + linkf=false; + continue; + } + + else if ( var=="debug_info_enabled" ) { + if ( val=="true" ) + debug_info_enabled=true; + else + debug_info_enabled=false; + continue; + } + + else if ( var=="last_dir" ) { + if ( !val.isEmpty() ) + lastDir=val; + continue; + } + + else if ( var=="saveAlwaysCatalogInUtf8" ) { + if ( val=="true" ) + saveAlwaysCatalogInUtf8=true; + else + saveAlwaysCatalogInUtf8=false; + continue; + } + + else if ( var=="showProgressedFileInStatus" ) { + if ( val=="true" ) + showProgressedFileInStatus=true; + else + showProgressedFileInStatus=false; + continue; + } + + else if ( var=="lastMediaType" ) { + lastMediaType=val.toInt(); + continue; + } + + else if ( var=="lastSearchPattern" ) { + lastSearchPattern=val; + continue; + } + else if ( var=="find_unsharp_search" ) { + if ( val=="true" ) + find_unsharp_search=true; + else + find_unsharp_search=false; + continue; + } + + + fprintf ( stderr,"Unknown key found: %s\n", ( const char * ) var ); + error = 1; + + } // no comment + } // while lines + f.close(); + + windowSize.setHeight ( windowSize_height ); + windowSize.setWidth ( windowSize_width ); + } // file exist + else return 1; + return error; +} -int CdCatConfig::writeConfig(void) -{ +int CdCatConfig::writeConfig ( void ) { #ifdef _WIN32 - QFile f (CONFIGFILE); + QFile f ( CONFIGFILE ); #else - if(getenv("HOME") == NULL) - { - QMessageBox::warning(0,tr("Error while saving config file..."), - tr("I can't get the $HOME environment variable.\nIt is necessary couse I'd like to save the config file into your home directory.") - ,tr("Ok"),0); - - return 1; - } - QString filepath=getenv("HOME")+QString("/"); - filepath += CONFIGFILE; - QFile f(filepath); -#endif - - if (f.open(IO_WriteOnly)) - { - QTextStream str(&f); // we will serialize the data into file f - str.setEncoding(QTextStream::Latin1); - - QString fsize_str,historysize_str,historylength_str,history_str; - - str << "# " << endl; - str << "# CdCatalog config file, generated by cdcat "<< HOMEPAGE << endl; - str << "# Do not edit directly!" << endl; - str << "# Version: "<green() <<","<< comm_bg->blue() <green() <<","<< comm_fr->blue() <green() <<","<< comm_stext->blue() <green() <<","<< comm_vtext->blue() <green() <<","<< comm_bg->blue() <green() <<","<< comm_fr->blue() <green() <<","<< comm_stext->blue() <green() <<","<< comm_vtext->blue() <addWidget( cbAutoload ); - ConfigDialogBaseLayout->addLayout( layout1, 0, 0 ); - - layout2 = new QHBoxLayout( 0, 0, 6, "layout2"); - filename = new QLineEdit( this, "filename" ); - layout2->addWidget( filename ); - searchButton = new QPushButton( this, "searchButton" ); - searchButton->setText("..."); - searchButton->setFlat( FALSE ); - layout2->addWidget( searchButton ); - ConfigDialogBaseLayout->addLayout( layout2, 1, 0 ); - - line1 = new QFrame( this, "line1" ); - line1->setFrameShape( QFrame::HLine ); - line1->setFrameShadow( QFrame::Sunken ); - line1->setFrameShape( QFrame::HLine ); - ConfigDialogBaseLayout->addWidget( line1, 2, 0 ); - - layout3 = new QHBoxLayout( 0, 0, 5, "layout3"); - cbOwnFont = new QCheckBox ("Use own font size",this, "ownfontcb"); - layout3->addWidget( cbOwnFont,0 ); - ConfigDialogBaseLayout->addLayout( layout3, 3, 0 ); - - layout4 = new QHBoxLayout( 0, 0, 5, "layout4"); - spinFontSize = new QSpinBox( this,"spinFontSize" ); - spinFontSize->setMaximumWidth(80); - layout4->addWidget( spinFontSize ); - lab = new QLabel( this, "lab" ); - layout4->addWidget( lab ); - ConfigDialogBaseLayout->addLayout( layout4, 4, 0 ); - - - line2 = new QFrame( this, "line2" ); - line2->setFrameShape( QFrame::HLine ); - line2->setFrameShadow( QFrame::Sunken ); - line2->setFrameShape( QFrame::HLine ); - ConfigDialogBaseLayout->addWidget( line2, 5, 0 ); - - cbAutosave = new QCheckBox( this, "cbAutos" ); - ConfigDialogBaseLayout->addWidget( cbAutosave, 6, 0 ); - - line8 = new QFrame( this, "line8" ); - line8->setFrameShape( QFrame::HLine ); - line8->setFrameShadow( QFrame::Sunken ); - line8->setFrameShape( QFrame::HLine ); - ConfigDialogBaseLayout->addWidget( line8, 7, 0 ); - - - cbNice = new QCheckBox( this, "cbNice" ); - ConfigDialogBaseLayout->addWidget( cbNice, 8, 0 ); - - line3 = new QFrame( this, "line3" ); - line3->setFrameShape( QFrame::HLine ); - line3->setFrameShadow( QFrame::Sunken ); - line3->setFrameShape( QFrame::HLine ); - ConfigDialogBaseLayout->addWidget( line3, 9, 0 ); - - - layout5 = new QHBoxLayout( 0, 0, 6, "layout5"); - cdrompath_lineedit = new QLineEdit( this, "cdrompath_lineedit" ); - layout5->addWidget( cdrompath_lineedit ); - cdrom_lab = new QLabel( this, "cdrom_lab" ); - layout5->addWidget( cdrom_lab ); - searchButton2 = new QPushButton( this, "cdrombutton" ); - searchButton2->setText("..."); - searchButton2->setFlat( FALSE ); - layout5->addWidget( searchButton2 ); - ConfigDialogBaseLayout->addLayout( layout5, 10, 0 ); - - line4 = new QFrame( this, "line4" ); - line4->setFrameShape( QFrame::HLine ); - line4->setFrameShadow( QFrame::Sunken ); - line4->setFrameShape( QFrame::HLine ); - ConfigDialogBaseLayout->addWidget( line4, 11, 0 ); +ConfigDialog::ConfigDialog ( CdCatMainWidget* parent, const char* name, bool modal, Qt::WFlags fl ) + : QDialog ( parent, name, modal, fl ) { + if ( !name ) + setName ( "ConfigDialog" ); + setIcon ( *get_t_config_icon() ); + + p = parent; + + setSizeGripEnabled ( TRUE ); + ConfigDialogBaseLayout = new Q3GridLayout ( this, 1, 1, 18, 6, "ConfigDialogBaseLayout" ); + + layout1 = new Q3HBoxLayout ( 0, 0, 6, "layout1" ); + cbAutoload = new QCheckBox ( this, "cbAutoload" ); + layout1->addWidget ( cbAutoload ); + ConfigDialogBaseLayout->addLayout ( layout1, 0, 0 ); + + layout2 = new Q3HBoxLayout ( 0, 0, 6, "layout2" ); + filename = new QLineEdit ( this, "filename" ); + layout2->addWidget ( filename ); + searchButton = new QPushButton ( this, "searchButton" ); + searchButton->setText ( "..." ); + searchButton->setFlat ( FALSE ); + layout2->addWidget ( searchButton ); + ConfigDialogBaseLayout->addLayout ( layout2, 1, 0 ); + + line1 = new Q3Frame ( this, "line1" ); + line1->setFrameShape ( Q3Frame::HLine ); + line1->setFrameShadow ( Q3Frame::Sunken ); + line1->setFrameShape ( Q3Frame::HLine ); + ConfigDialogBaseLayout->addWidget ( line1, 2, 0 ); + + layout3 = new Q3HBoxLayout ( 0, 0, 5, "layout3" ); + cbOwnFont = new QCheckBox ( "Use own font size",this, "ownfontcb" ); + layout3->addWidget ( cbOwnFont,0 ); + ConfigDialogBaseLayout->addLayout ( layout3, 3, 0 ); + + layout4 = new Q3HBoxLayout ( 0, 0, 5, "layout4" ); + spinFontSize = new QSpinBox ( this,"spinFontSize" ); + spinFontSize->setMaximumWidth ( 80 ); + layout4->addWidget ( spinFontSize ); + lab = new QLabel ( this, "lab" ); + layout4->addWidget ( lab ); + ConfigDialogBaseLayout->addLayout ( layout4, 4, 0 ); + + + line2 = new Q3Frame ( this, "line2" ); + line2->setFrameShape ( Q3Frame::HLine ); + line2->setFrameShadow ( Q3Frame::Sunken ); + line2->setFrameShape ( Q3Frame::HLine ); + ConfigDialogBaseLayout->addWidget ( line2, 5, 0 ); + + cbAutosave = new QCheckBox ( this, "cbAutos" ); + ConfigDialogBaseLayout->addWidget ( cbAutosave, 6, 0 ); + + line8 = new Q3Frame ( this, "line8" ); + line8->setFrameShape ( Q3Frame::HLine ); + line8->setFrameShadow ( Q3Frame::Sunken ); + line8->setFrameShape ( Q3Frame::HLine ); + ConfigDialogBaseLayout->addWidget ( line8, 7, 0 ); + + cbNice = new QCheckBox ( this, "cbNice" ); + ConfigDialogBaseLayout->addWidget ( cbNice, 8, 0 ); + + line3 = new Q3Frame ( this, "line3" ); + line3->setFrameShape ( Q3Frame::HLine ); + line3->setFrameShadow ( Q3Frame::Sunken ); + line3->setFrameShape ( Q3Frame::HLine ); + ConfigDialogBaseLayout->addWidget ( line3, 9, 0 ); + + + layout5 = new Q3HBoxLayout ( 0, 0, 6, "layout5" ); + cdrompath_lineedit = new QLineEdit ( this, "cdrompath_lineedit" ); + layout5->addWidget ( cdrompath_lineedit ); + cdrom_lab = new QLabel ( this, "cdrom_lab" ); + layout5->addWidget ( cdrom_lab ); + searchButton2 = new QPushButton ( this, "cdrombutton" ); + searchButton2->setText ( "..." ); + searchButton2->setFlat ( FALSE ); + layout5->addWidget ( searchButton2 ); + ConfigDialogBaseLayout->addLayout ( layout5, 10, 0 ); + + line4 = new Q3Frame ( this, "line4" ); + line4->setFrameShape ( Q3Frame::HLine ); + line4->setFrameShadow ( Q3Frame::Sunken ); + line4->setFrameShape ( Q3Frame::HLine ); + ConfigDialogBaseLayout->addWidget ( line4, 11, 0 ); #ifndef _WIN32 + cbMoEj = new QCheckBox ( this, "cbMoEj" ); + ConfigDialogBaseLayout->addWidget ( cbMoEj, 12, 0 ); +#endif - cbMoEj = new QCheckBox( this, "cbMoEj" ); - ConfigDialogBaseLayout->addWidget( cbMoEj, 12, 0 ); -#else - layout9 = new QHBoxLayout(0,0,5,"layout9"); - cbLang = new QComboBox(this,"languageselector"); - langLabel = new QLabel(this,"langlabel"); - layout9->insertSpacing(0,5); - layout9->insertWidget (1,cbLang); - layout9->insertWidget (2,langLabel); - layout9->insertSpacing(3,5); - ConfigDialogBaseLayout->addLayout( layout9, 12, 0 ); - - /*scanning existing languages:*/ - cbLang->insertItem("eng",0); - QDir d("./lang"); - - if(d.exists()) - { - d.setFilter( QDir::Files ); - d.setNameFilter("cdcat_??.qm"); - const QFileInfoList *list = d.entryInfoList(); - QFileInfoListIterator it( *list ); - QFileInfo *fi; - while ( (fi = it.current()) != 0 ) - { - cbLang->insertItem((fi->fileName()).mid(6,2)); - ++it; - } - /*end scanning*/ +#ifdef _WIN32 + layout9 = new Q3HBoxLayout ( 0,0,5,"layout9" ); + cbLang = new QComboBox ( this,"languageselector" ); + langLabel = new QLabel ( this,"langlabel" ); + layout9->insertSpacing ( 0,5 ); + layout9->insertWidget ( 1,cbLang ); + layout9->insertWidget ( 2,langLabel ); + layout9->insertSpacing ( 3,5 ); + ConfigDialogBaseLayout->addLayout ( layout9, 13, 0 ); + + /*scanning existing languages:*/ + cbLang->insertItem ( "eng",0 ); + QDir d ( "./lang" ); + + if ( d.exists() ) { + d.setFilter ( QDir::Files ); + d.setNameFilter ( "cdcat_??.qm" ); + QFileInfoList list( d.entryInfoList()); + //QFileInfoListIterator it ( list. ); + //QFileInfo *fi; + foreach(const QFileInfo& fi , list ) + //while ( ( fi = it.current() ) != 0 ) + { + cbLang->insertItem ( ( fi.fileName() ).mid ( 6,2 ) ); + //++it; + } + /*end scanning*/ + } else { + cbLang->setEnabled ( false ); + cbLang->insertItem ( "eng" ); + } +#endif + +#ifdef Q_WS_MAC +// cerr << "config: mac! " << endl; + layout9 = new Q3HBoxLayout ( 0,0,5,"layout9" ); + cbLang = new QComboBox ( this,"languageselector" ); + langLabel = new QLabel ( this,"langlabel" ); + layout9->insertSpacing ( 0,5 ); + layout9->insertWidget ( 1,cbLang ); + layout9->insertWidget ( 2,langLabel ); + layout9->insertSpacing ( 3,5 ); + ConfigDialogBaseLayout->addLayout ( layout9, 13, 0 ); + + /*scanning existing languages:*/ + cbLang->insertItem ( "eng",0 ); + QDir d ( "./lang" ); + + if ( d.exists() ) { + d.setFilter ( QDir::Files ); + d.setNameFilter ( "cdcat_??.qm" ); + QFileInfoList list( d.entryInfoList()); + //QFileInfoListIterator it ( list. ); + //QFileInfo *fi; + foreach(const QFileInfo& fi , list ) + //while ( ( fi = it.current() ) != 0 ) + { + cbLang->insertItem ( ( fi.fileName() ).mid ( 6,2 ) ); + //++it; + } + /*end scanning*/ + } else { + cbLang->setEnabled ( false ); + cbLang->insertItem ( "eng" ); + } +#endif + + line5 = new Q3Frame ( this, "line5" ); + line5->setFrameShape ( Q3Frame::HLine ); + line5->setFrameShadow ( Q3Frame::Sunken ); + line5->setFrameShape ( Q3Frame::HLine ); + ConfigDialogBaseLayout->addWidget ( line5, 14, 0 ); + + layout6 = new Q3HBoxLayout ( 0, 0, 6, "layout6" ); + spinHistorySize = new QSpinBox ( this,"spinHistorySize" ); + spinHistorySize->setMaximumWidth ( 80 ); + layout6->addWidget ( spinHistorySize ); + labHistorySize = new QLabel ( this, "labHistorySize" ); + layout6->addWidget ( labHistorySize ); + ConfigDialogBaseLayout->addLayout ( layout6, 15, 0 ); + + line6 = new Q3Frame ( this, "line6" ); + line6->setFrameShape ( Q3Frame::HLine ); + line6->setFrameShadow ( Q3Frame::Sunken ); + line6->setFrameShape ( Q3Frame::HLine ); + ConfigDialogBaseLayout->addWidget ( line6, 16, 0 ); + + + riButton = new QPushButton ( this,"ributton" ); + ConfigDialogBaseLayout->addWidget ( riButton, 17, 0 ); + + line7 = new Q3Frame ( this, "line7" ); + line7->setFrameShape ( Q3Frame::HLine ); + line7->setFrameShadow ( Q3Frame::Sunken ); + line7->setFrameShape ( Q3Frame::HLine ); + ConfigDialogBaseLayout->addWidget ( line7, 18, 0 ); + + layout7 = new Q3HBoxLayout ( 0, 0, 6, "layout7" ); + QSpacerItem* spacer = new QSpacerItem ( 110, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout7->addItem ( spacer ); + + cbEnableDebugInfo = new QCheckBox ( this, "cbEnableDebugInfo" ); + ConfigDialogBaseLayout->addWidget ( cbEnableDebugInfo, 19, 0 ); + + cbSaveCatalogAlwaysInUtf8 = new QCheckBox ( this, "cbSaveCatalogAlwaysInUtf8" ); + ConfigDialogBaseLayout->addWidget ( cbSaveCatalogAlwaysInUtf8, 20, 0 ); + + cbShowProgressedFileInStatus = new QCheckBox ( this, "cbShowProgressedFileInStatus" ); + ConfigDialogBaseLayout->addWidget ( cbShowProgressedFileInStatus, 21, 0 ); + + okButton = new QPushButton ( this, "okButton" ); + okButton->setMinimumSize ( QSize ( 100, 0 ) ); + okButton->setAutoDefault ( TRUE ); + okButton->setDefault ( TRUE ); + layout7->addWidget ( okButton ); + + cancelButton = new QPushButton ( this, "cancelButton" ); + cancelButton->setMinimumSize ( QSize ( 100, 0 ) ); + cancelButton->setAutoDefault ( TRUE ); + layout7->addWidget ( cancelButton ); + QSpacerItem* spacer_2 = new QSpacerItem ( 130, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout7->addItem ( spacer_2 ); + + ConfigDialogBaseLayout->addLayout ( layout7, 22, 0 ); + + + + connect ( searchButton2, SIGNAL ( clicked() ), this, SLOT ( cdrombutton() ) ); + + languageChange(); + resize ( QSize ( 506, 309 ).expandedTo ( minimumSizeHint() ) ); + + + // signals and slots connections + connect ( cancelButton, SIGNAL ( clicked() ), this, SLOT ( close() ) ); + connect ( okButton, SIGNAL ( clicked() ), this, SLOT ( okExit() ) ); + connect ( searchButton, SIGNAL ( clicked() ), this, SLOT ( ffdbutton() ) ); + connect ( cbOwnFont, SIGNAL ( clicked() ), this, SLOT ( ownFontToggled() ) ); + connect ( riButton, SIGNAL ( clicked() ), this, SLOT ( runri() ) ); + + if ( p->cconfig->ownfont ) { + spinFontSize->setEnabled ( true ); + lab->setEnabled ( true ); + } else { + spinFontSize->setEnabled ( false ); + lab->setEnabled ( false ); } - else - { - cbLang->setEnabled(false); - cbLang->insertItem("eng"); - } -#endif - - line5 = new QFrame( this, "line5" ); - line5->setFrameShape( QFrame::HLine ); - line5->setFrameShadow( QFrame::Sunken ); - line5->setFrameShape( QFrame::HLine ); - ConfigDialogBaseLayout->addWidget( line5, 13, 0 ); - - layout6 = new QHBoxLayout( 0, 0, 6, "layout6"); - spinHistorySize = new QSpinBox( this,"spinHistorySize" ); - spinHistorySize->setMaximumWidth(80); - layout6->addWidget( spinHistorySize ); - labHistorySize = new QLabel( this, "labHistorySize" ); - layout6->addWidget( labHistorySize ); - ConfigDialogBaseLayout->addLayout( layout6, 14, 0 ); - - line6 = new QFrame( this, "line6" ); - line6->setFrameShape( QFrame::HLine ); - line6->setFrameShadow( QFrame::Sunken ); - line6->setFrameShape( QFrame::HLine ); - ConfigDialogBaseLayout->addWidget( line6, 15, 0 ); - - - riButton = new QPushButton(this,"ributton"); - ConfigDialogBaseLayout->addWidget( riButton, 16, 0 ); - - line7 = new QFrame( this, "line7" ); - line7->setFrameShape( QFrame::HLine ); - line7->setFrameShadow( QFrame::Sunken ); - line7->setFrameShape( QFrame::HLine ); - ConfigDialogBaseLayout->addWidget( line7, 17, 0 ); - - layout7 = new QHBoxLayout( 0, 0, 6, "layout7"); - QSpacerItem* spacer = new QSpacerItem( 110, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout7->addItem( spacer ); - - okButton = new QPushButton( this, "okButton" ); - okButton->setMinimumSize( QSize( 100, 0 ) ); - okButton->setAutoDefault( TRUE ); - okButton->setDefault( TRUE ); - layout7->addWidget( okButton ); - - cancelButton = new QPushButton( this, "cancelButton" ); - cancelButton->setMinimumSize( QSize( 100, 0 ) ); - cancelButton->setAutoDefault( TRUE ); - layout7->addWidget( cancelButton ); - QSpacerItem* spacer_2 = new QSpacerItem( 130, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout7->addItem( spacer_2 ); - - ConfigDialogBaseLayout->addLayout( layout7, 18, 0 ); - - connect( searchButton2, SIGNAL( clicked() ), this, SLOT( cdrombutton() ) ); - - languageChange(); - resize( QSize(506, 309).expandedTo(minimumSizeHint()) ); - - - // signals and slots connections - connect( cancelButton, SIGNAL( clicked() ), this, SLOT( close() ) ); - connect( okButton, SIGNAL( clicked() ), this, SLOT( okExit() ) ); - connect( searchButton, SIGNAL( clicked() ), this, SLOT( ffdbutton() ) ); - connect( cbOwnFont, SIGNAL( clicked() ), this, SLOT( ownFontToggled() ) ); - connect( riButton, SIGNAL( clicked() ), this, SLOT( runri() )); - - if (p->cconfig->ownfont) - { - spinFontSize->setEnabled(true); - lab->setEnabled(true); - } - else - { - spinFontSize->setEnabled(false); - lab->setEnabled(false); - } - - if (p->cconfig->ownfont) - cbOwnFont->setChecked(true); - else - cbOwnFont->setChecked(false); - - cbNice->setChecked(p->cconfig->nice); - cbAutoload->setChecked(p->cconfig->autoload); - cbAutosave->setChecked(p->cconfig->autosave); - if(!p->cconfig->autoloadfn.isEmpty()) - filename->setText(p->cconfig->autoloadfn); - spinFontSize->setValue(p->cconfig->fsize); - spinHistorySize->setValue(p->cconfig->historysize); - cdrompath_lineedit->setText(p->cconfig->cdrompath); + if ( p->cconfig->ownfont ) + cbOwnFont->setChecked ( true ); + else + cbOwnFont->setChecked ( false ); + + cbNice->setChecked ( p->cconfig->nice ); + cbAutoload->setChecked ( p->cconfig->autoload ); + cbAutosave->setChecked ( p->cconfig->autosave ); + if ( !p->cconfig->autoloadfn.isEmpty() ) + filename->setText ( p->cconfig->autoloadfn ); + spinFontSize->setValue ( p->cconfig->fsize ); + spinHistorySize->setValue ( p->cconfig->historysize ); + + cdrompath_lineedit->setText ( p->cconfig->cdrompath ); #ifndef _WIN32 - cbMoEj ->setChecked(p->cconfig->mounteject); -#else - cbLang->setCurrentItem(0); - for(int i=0;icount();i++) - if(p->cconfig->lang == cbLang->text(i)) - cbLang->setCurrentItem(i); + cbMoEj ->setChecked ( p->cconfig->mounteject ); #endif +#ifdef _WIN32 + cbLang->setCurrentItem ( 0 ); + for ( int i=0;icount();i++ ) + if ( p->cconfig->lang == cbLang->text ( i ) ) + cbLang->setCurrentItem ( i ); +#endif + +#ifdef Q_WS_MAC + cbLang->setCurrentItem ( 0 ); + for ( int i=0;icount();i++ ) + if ( p->cconfig->lang == cbLang->text ( i ) ) + cbLang->setCurrentItem ( i ); +#endif + + cbEnableDebugInfo->setChecked(p->cconfig->debug_info_enabled); + cbSaveCatalogAlwaysInUtf8->setChecked(p->cconfig->saveAlwaysCatalogInUtf8); + cbShowProgressedFileInStatus->setChecked(p->cconfig->showProgressedFileInStatus); } /* * Destroys the object and frees any allocated resources */ -ConfigDialog::~ConfigDialog() -{ - // no need to delete child widgets, Qt does it all for us +ConfigDialog::~ConfigDialog() { + // no need to delete child widgets, Qt does it all for us } -void ConfigDialog::languageChange() -{ - setCaption( tr( "Configure CdCat..." ) ); - cbAutoload->setText( tr( "Autoload DataBase on startup" ) ); - cbAutosave->setText( tr( "Automatically save the database after every scan (for dafety sake)" ) ); - cbNice->setText( tr( "Save the XML-db.file nicer format(needs more space)" ) ); - cancelButton->setText( tr( "Cancel" ) ); - okButton->setText( tr( "Ok" ) ); - riButton->setText( tr( "Select additional items to read") ); - cbOwnFont->setText(tr("Use own font size")); - lab->setText(tr("Application font size.(must restart cdcat!) ")); - labHistorySize->setText(tr("Number of history entries")); - cdrom_lab->setText( tr("Path to cdrom device") ); +void ConfigDialog::languageChange() { + setCaption ( tr ( "Configure CdCat..." ) ); + cbAutoload->setText ( tr ( "Autoload DataBase on startup" ) ); + cbAutosave->setText ( tr ( "Automatically save the database after every scan (for safety sake)" ) ); + cbNice->setText ( tr ( "Save the XML-db.file nicer format(needs more space)" ) ); + cancelButton->setText ( tr ( "Cancel" ) ); + okButton->setText ( tr ( "Ok" ) ); + riButton->setText ( tr ( "Select additional items to read" ) ); + cbOwnFont->setText ( tr ( "Use own font size" ) ); + lab->setText ( tr ( "Application font size.(must restart cdcat!) " ) ); + labHistorySize->setText ( tr ( "Number of history entries" ) ); + cdrom_lab->setText ( tr ( "Path to cdrom device" ) ); #ifndef _WIN32 - cbMoEj->setText(tr("Scanning: mount cdrom at start / eject when finish")); -#else - langLabel->setText(tr("The language of CdCat interface")); + cbMoEj->setText ( tr ( "Scanning: mount cdrom at start / eject when finish" ) ); +#endif + +#ifdef _WIN32 + langLabel->setText ( tr ( "The language of CdCat interface" ) ); +#endif + +#ifdef Q_WS_MAC + langLabel->setText ( tr ( "The language of CdCat interface" ) ); #endif + + cbEnableDebugInfo->setText( tr("Display debug info on console") ); + cbSaveCatalogAlwaysInUtf8->setText( tr("Save catalogs always as UTF8") ); + cbShowProgressedFileInStatus->setText( tr("Show progressed file at scanning in status label") ); } -void ConfigDialog::ffdbutton() -{ - QString s; - s = QFileDialog::getOpenFileName(QString::null,tr("CdCat Databases (*.hcf)"),this, - "autoload file chooser",tr("Choose a file to load automatically!")); - if(!s.isEmpty()) - filename->setText(s); +void ConfigDialog::ffdbutton() { + QString s = QFileDialog::getOpenFileName(0, tr ( "Choose a file to load automatically!" ), p->cconfig->lastDir, tr ( "CdCat databases (*.hcf )" )); + if ( !s.isEmpty() ) + filename->setText ( s ); } -void ConfigDialog::cdrombutton() -{ - QString s; - s = QFileDialog::getExistingDirectory(QString::null,this,"cdrom path chooser",tr("Choose path to cdrom!")); - if(!s.isEmpty()) - cdrompath_lineedit->setText(s); +void ConfigDialog::cdrombutton() { + QString s = QFileDialog::getExistingDirectory(0, tr ( "Choose path to cdrom!" ), p->cconfig->lastDir ); + + if ( !s.isEmpty() ) + cdrompath_lineedit->setText ( s ); } -void ConfigDialog::okExit() -{ - p->cconfig->nice = cbNice->isChecked(); - p->cconfig->autoload = cbAutoload->isChecked(); - p->cconfig->autosave = cbAutosave->isChecked(); - p->cconfig->autoloadfn = filename->text(); - p->cconfig->ownfont = cbOwnFont->isChecked(); - p->cconfig->fsize = spinFontSize->value(); - p->cconfig->historysize = spinHistorySize->value(); - p->cconfig->cdrompath = cdrompath_lineedit->text(); +void ConfigDialog::okExit() { + p->cconfig->nice = cbNice->isChecked(); + p->cconfig->autoload = cbAutoload->isChecked(); + p->cconfig->autosave = cbAutosave->isChecked(); + p->cconfig->autoloadfn = filename->text(); + p->cconfig->ownfont = cbOwnFont->isChecked(); + p->cconfig->fsize = spinFontSize->value(); + p->cconfig->historysize = spinHistorySize->value(); + p->cconfig->cdrompath = cdrompath_lineedit->text(); #ifndef _WIN32 - p->cconfig->mounteject = cbMoEj->isChecked(); -#else + p->cconfig->mounteject = cbMoEj->isChecked(); +#endif - QTranslator *translator = 0; - QString langfile("./lang/cdcat_"); - langfile += p->cconfig->lang; - langfile += ".qm"; - - translator = new QTranslator(0); - translator->load(langfile,"."); - p->app->removeTranslator(translator); - - //read the value - p->cconfig->lang = cbLang->currentText(); - - translator = 0; - langfile = "./lang/cdcat_"; - langfile += p->cconfig->lang; - langfile += ".qm"; - - translator = new QTranslator(0); - translator->load(langfile,"."); - p->app->installTranslator(translator); +#ifdef _WIN32 + QTranslator *translator = 0; + QString langfile ( "./lang/cdcat_" ); + langfile += p->cconfig->lang; + langfile += ".qm"; + + translator = new QTranslator ( 0 ); + translator->load ( langfile,"." ); + p->app->removeTranslator ( translator ); + + //read the value + p->cconfig->lang = cbLang->currentText(); + + translator = 0; + langfile = "./lang/cdcat_"; + langfile += p->cconfig->lang; + langfile += ".qm"; + + translator = new QTranslator ( 0 ); + translator->load ( langfile,"." ); + p->app->installTranslator ( translator ); +#endif +#ifdef Q_WS_MAC + QTranslator *translator = 0; + QString langfile ( "./lang/cdcat_" ); + langfile += p->cconfig->lang; + langfile += ".qm"; + + translator = new QTranslator ( 0 ); + translator->load ( langfile,"." ); + p->app->removeTranslator ( translator ); + + //read the value + p->cconfig->lang = cbLang->currentText(); + + translator = 0; + langfile = "./lang/cdcat_"; + langfile += p->cconfig->lang; + langfile += ".qm"; + + translator = new QTranslator ( 0 ); + translator->load ( langfile,"." ); + p->app->installTranslator ( translator ); #endif - p->cconfig->writeConfig(); - - QFont *font=new QFont(); - font->setPointSize(p->cconfig->fsize); - if (p->cconfig->ownfont) - p->app->setFont(*font,TRUE); - else - p->app->setFont(*p->cconfig->defaultfont,TRUE); - close(); + p->cconfig->debug_info_enabled = cbEnableDebugInfo->isChecked(); + DEBUG_INFO_ENABLED = init_debug_info(); + *DEBUG_INFO_ENABLED = cbEnableDebugInfo->isChecked(); + p->cconfig->saveAlwaysCatalogInUtf8 = cbSaveCatalogAlwaysInUtf8->isChecked(); + p->cconfig->showProgressedFileInStatus = cbShowProgressedFileInStatus->isChecked(); + p->cconfig->writeConfig(); + + QFont *font=new QFont(); + font->setPointSize ( p->cconfig->fsize ); + if ( p->cconfig->ownfont ) + p->app->setFont ( *font,TRUE ); + else + p->app->setFont ( *p->cconfig->defaultfont,TRUE ); + + close(); } -void ConfigDialog::ownFontToggled() - { - if (cbOwnFont->isChecked()) - { - lab->setEnabled(true); - spinFontSize->setEnabled(true); - } - else - { - lab->setEnabled(false); - spinFontSize->setEnabled(false); - } - } - -void ConfigDialog::runri() - { - SelReadable *sr = new SelReadable(p->cconfig,this,"runri",true); - sr->exec(); - delete sr; - } +void ConfigDialog::ownFontToggled() { + if ( cbOwnFont->isChecked() ) { + lab->setEnabled ( true ); + spinFontSize->setEnabled ( true ); + } else { + lab->setEnabled ( false ); + spinFontSize->setEnabled ( false ); + } +} + +void ConfigDialog::runri() { + SelReadable *sr = new SelReadable ( p->cconfig,this,"runri",true ); + sr->exec(); + delete sr; +} diff -Nru cdcat-1.01b/src/config.h cdcat-1.2/src/config.h --- cdcat-1.01b/src/config.h 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/config.h 2011-02-10 11:08:23.000000000 +0000 @@ -15,10 +15,17 @@ #include #include #include - -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; +//Added by qt3to4: +#include +#include +#include +#include +#include +#include + +class Q3VBoxLayout; +class Q3HBoxLayout; +class Q3GridLayout; class QCheckBox; class QLineEdit; class QPushButton; @@ -27,115 +34,142 @@ class QWidget; class CdCatMainWidget; class QSpinBox; -class QFrame; +class Q3Frame; class QFont; class QComboBox; class QColor; -class CdCatConfig : public QObject - { - Q_OBJECT - public: - char errormsg[512]; - - CdCatConfig(void); - - int startProgram(DataBase **dbp,QWidget *mw); - int writeConfig(); - int readConfig (); - void setParameter(char *par); - - public: - - bool startpar; - QString startfn; - - //Configureable items: - int fsize; - int historysize; - bool autoload; - QString autoloadfn; - bool nice; - bool autosave; - bool ownfont; - - bool readtag; - bool v1_over_v2; - bool readinfo; - - bool readavii; - - bool readcontent; - QString readcfiles; - unsigned long readclimit; - - QStringList hlist; - QSize windowSize; - QPoint windowPos; - int windowSize_height; - int windowSize_width; - QString cdrompath; - int mainP1; - int mainP2; - int mainP3; - - bool find_cs; - bool find_em; - bool find_di; - bool find_fi; - bool find_co; - bool find_ct; - bool find_mco; - bool find_mar; - bool find_mti; - bool find_mal; - int findX; - int findY; - int findWidth; - int findHeight; +class CdCatConfig : public QObject { + Q_OBJECT +public: + char errormsg[512]; + + CdCatConfig ( void ); + ~CdCatConfig ( void ); + + int startProgram ( DataBase **dbp,QWidget *mw ); + int writeConfig(); + int readConfig (); + void setParameter ( char *par ); + +public: - QColor *comm_bg,*comm_stext,*comm_vtext,*comm_fr; - QFont *defaultfont; + bool startpar; + QString startfn; + + //Configureable items: + int fsize; + int historysize; + bool autoload; + QString autoloadfn; + bool nice; + bool autosave; + bool ownfont; + bool readtag; + bool v1_over_v2; + bool readinfo; + bool readavii; + bool readcontent; + bool debug_info_enabled; + bool saveAlwaysCatalogInUtf8; + bool showProgressedFileInStatus; + QString readcfiles; + unsigned long readclimit; + + QStringList hlist; + QSize windowSize; + QPoint windowPos; + int windowSize_height; + int windowSize_width; + QString cdrompath; + QString lastDir; + QString lastSearchPattern; + int mainP1; + int mainP2; + int mainP3; + int lastMediaType; + + int find_size_unit_min_val; + int find_size_unit_max_val; + + int find_size_min_val; + int find_size_max_val; + + bool find_cs; + bool find_em; + bool find_di; + bool find_fi; + bool find_co; + bool find_ct; + bool find_mco; + bool find_mar; + bool find_mti; + bool find_mal; + bool find_date_start; + bool find_date_end; + bool find_size_min; + bool find_size_max; + bool find_unsharp_search; + int findX; + int findY; + int findWidth; + int findHeight; + + QDateTime find_date_start_val; + QDateTime find_date_end_val; + + QColor *comm_bg,*comm_stext,*comm_vtext,*comm_fr; + QFont *defaultfont; #ifndef _WIN32 - bool mounteject; -#else - QString lang; + bool mounteject; +#endif + +#ifdef _WIN32 + QString lang; +#endif +#ifdef Q_WS_MAC + QString lang; #endif - - bool linkf; - /*end configureable items*/ - }; + + bool linkf; + + + /*end configureable items*/ + +}; /*****************************************************************************/ -class ConfigDialog : public QDialog -{ +class ConfigDialog : public QDialog { Q_OBJECT public: - ConfigDialog( CdCatMainWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); + ConfigDialog ( CdCatMainWidget* parent = 0, const char* name = 0, bool modal = FALSE, Qt::WFlags fl = 0 ); ~ConfigDialog(); CdCatMainWidget *p; QLineEdit* filename; QPushButton* searchButton; - QFrame* line1; + Q3Frame* line1; QSpinBox *spinFontSize; QSpinBox *spinHistorySize; QLabel* lab; QLabel *labHistorySize; QCheckBox* cbNice; + QCheckBox* cbEnableDebugInfo; + QCheckBox* cbSaveCatalogAlwaysInUtf8; + QCheckBox* cbShowProgressedFileInStatus; QLineEdit* cdrompath_lineedit; QLabel* cdrom_lab; - QFrame* line2; - QFrame* line3; - QFrame* line4; - QFrame* line5; - QFrame* line6; - QFrame* line7; - QFrame* line8; + Q3Frame* line2; + Q3Frame* line3; + Q3Frame* line4; + Q3Frame* line5; + Q3Frame* line6; + Q3Frame* line7; + Q3Frame* line8; QPushButton* riButton; QPushButton* okButton; QPushButton* cancelButton; @@ -145,26 +179,34 @@ protected: - QGridLayout* ConfigDialogBaseLayout; - QHBoxLayout* layout1; - QHBoxLayout* layout2; - QHBoxLayout* layout3; - QHBoxLayout* layout4; - QHBoxLayout* layout5; - QHBoxLayout* layout6; - QHBoxLayout* layout7; - QHBoxLayout* layout8; + Q3GridLayout* ConfigDialogBaseLayout; + Q3HBoxLayout* layout1; + Q3HBoxLayout* layout2; + Q3HBoxLayout* layout3; + Q3HBoxLayout* layout4; + Q3HBoxLayout* layout5; + Q3HBoxLayout* layout6; + Q3HBoxLayout* layout7; + Q3HBoxLayout* layout8; #ifndef _WIN32 QCheckBox* cbMoEj; -#else - QHBoxLayout* layout9; +#endif + +#ifdef _WIN32 + Q3HBoxLayout* layout9; QComboBox * cbLang; - QLabel * langLabel; + QLabel * langLabel; #endif - QPushButton* searchButton2; // maybe problem for moc +#ifdef Q_WS_MAC + Q3HBoxLayout* layout9; + QComboBox * cbLang; + QLabel * langLabel; +#endif + + QPushButton* searchButton2; // maybe problem for moc public slots: virtual void okExit(); @@ -179,3 +221,9 @@ }; #endif // CONFIGDIALOG_H + +#ifndef __DEBUG_INFO__ +#define __DEBUG_INFO__ +static bool *DEBUG_INFO_ENABLED; +#endif + diff -Nru cdcat-1.01b/src/CVS/Entries cdcat-1.2/src/CVS/Entries --- cdcat-1.01b/src/CVS/Entries 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -D diff -Nru cdcat-1.01b/src/CVS/Repository cdcat-1.2/src/CVS/Repository --- cdcat-1.01b/src/CVS/Repository 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -cdcat/src diff -Nru cdcat-1.01b/src/CVS/Root cdcat-1.2/src/CVS/Root --- cdcat-1.01b/src/CVS/Root 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/CVS/Root 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -:ext:hyperr@cvs.cdcat.sf.net:/cvsroot/cdcat diff -Nru cdcat-1.01b/src/.cvsignore cdcat-1.2/src/.cvsignore --- cdcat-1.01b/src/.cvsignore 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/.cvsignore 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -moc_files -obj_files -cdcat diff -Nru cdcat-1.01b/src/dbase.cpp cdcat-1.2/src/dbase.cpp --- cdcat-1.01b/src/dbase.cpp 2005-09-19 20:29:55.000000000 +0000 +++ cdcat-1.2/src/dbase.cpp 2011-02-02 12:10:33.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** - Hyper's CD Catalog + Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -19,1034 +19,1034 @@ #include #include -#include +// #include +#include #include "dbase.h" #include "cdcat.h" #include "mp3tag.h" #include "wdbfile.h" #include "adddialog.h" -#include "recode.h" +#include "config.h" #include "tparser.h" +#include +using namespace std; + + +QString date_to_str ( QDateTime dt ) { + + QString text; + if ( dt.isValid() ) + text.sprintf ( "%d-%02d-%02d %02d:%02d:%02d",dt.date().year(), dt.date().month(), dt.date().day(), + dt.time().hour(), dt.time().minute(), dt.time().second() ); + else + text = QObject().tr( "Not available" ); + + return text; +} + /***************************************************************************/ -void caseSensConversion(char *p) - { - int s,t,ss = strlen(p); - char *tmp=new char[2048]; - - for(s=0,t=0;s<=ss;s++,t++) - { - if((p[s] >= 'a' && p[s]<='z') || - (p[s] >= 'A' && p[s]<='Z')) - { - tmp[t++]='['; - tmp[t++]=tolower(p[s]); - tmp[t++]='|'; - tmp[t++]=toupper(p[s]); - tmp[t ]=']'; - } - else - { - tmp[t]=p[s]; - } - } - strcpy(p,tmp); - delete [] tmp; - } +void caseSensConversion ( char *p ) { + int s,t,ss = strlen ( p ); + char *tmp=new char[2048]; + + for ( s=0,t=0;s<=ss;s++,t++ ) { + if ( ( p[s] >= 'a' && p[s]<='z' ) || + ( p[s] >= 'A' && p[s]<='Z' ) ) { + tmp[t++]='['; + tmp[t++]=tolower ( p[s] ); + tmp[t++]='|'; + tmp[t++]=toupper ( p[s] ); + tmp[t ]=']'; + } else { + tmp[t]=p[s]; + } + } + strcpy ( p,tmp ); + delete [] tmp; +} /***************************************************************************/ -void easyFormConversion(char *p) - { - int s,t,ss = strlen(p); - char *tmp=new char[2048]; - - for(s=0,t=0;s<=ss;s++,t++) - { - if(p[s] == '?') - { - tmp[t ]='.'; - } - else if(p[s] == '*') - { - tmp[t++]='.'; - tmp[t ]='*'; - } - else if((p[s] >= 'a' && p[s]<='z') || - (p[s] >= 'A' && p[s]<='Z') || - (p[s] >= '0' && p[s]<='9')) - { +void easyFormConversion ( char *p ) { + int s,t,ss = strlen ( p ); + char *tmp=new char[2048]; + + for ( s=0,t=0;s<=ss;s++,t++ ) { + if ( p[s] == '?' ) { + tmp[t ]='.'; + } else if ( p[s] == '*' ) { + tmp[t++]='.'; + tmp[t ]='*'; + } else if ( ( p[s] >= 'a' && p[s]<='z' ) || + ( p[s] >= 'A' && p[s]<='Z' ) || + ( p[s] >= '0' && p[s]<='9' ) ) { tmp[t]=p[s]; - } - else if(p[s] == '\0') - { + } else if ( p[s] == '\0' ) { tmp[t]='\0'; - } - else - { + } else { tmp[t++]='\\'; tmp[t ]=p[s]; - } - } - sprintf(p,"^%s$",tmp); - delete [] tmp; - } + } + } + sprintf ( p,"^%s$",tmp ); + delete [] tmp; +} /*************************************************************************** - - DataBase Class - -***************************************************************************/ -Node::Node(void) - { - type = HC_UNINITIALIZED; - next = NULL; - child = NULL; - parent = NULL; - data = NULL; - } + DataBase Class -Node::Node(int t,Node *p) - { - type = t; - next = NULL; - child = NULL; - parent = p; - data = NULL; - } +***************************************************************************/ -Node::~Node(void) - { - if(child != NULL) delete child; - if(next != NULL) delete next; - if(data != NULL) - { - switch(type) - { - case HC_UNINITIALIZED: break; - case HC_CATALOG : delete ((DBCatalog *)data); break; - case HC_MEDIA : delete ((DBMedia *)data); break; - case HC_DIRECTORY : delete ((DBDirectory *)data); break; - case HC_FILE : delete ((DBFile *)data); break; - case HC_MP3TAG : delete ((DBMp3Tag *)data); break; - case HC_CONTENT : delete ((DBContent *)data); break; - case HC_CATLNK : delete ((DBCatLnk *)data); break; +Node::Node ( void ) { + type = HC_UNINITIALIZED; + next = NULL; + child = NULL; + parent = NULL; + data = NULL; +} + +Node::Node ( int t,Node *p ) { + type = t; + next = NULL; + child = NULL; + parent = p; + data = NULL; +} + +Node::~Node ( void ) { + //if(child != NULL) delete child; + if ( next != NULL ) delete next; + if ( data != NULL ) { + switch ( type ) { + case HC_UNINITIALIZED: break; + case HC_CATALOG : delete ( ( DBCatalog * ) data ); break; + case HC_MEDIA : delete ( ( DBMedia * ) data ); break; + case HC_DIRECTORY : delete ( ( DBDirectory * ) data ); break; + case HC_FILE : delete ( ( DBFile * ) data ); break; + case HC_MP3TAG : delete ( ( DBMp3Tag * ) data ); break; + case HC_CONTENT : delete ( ( DBContent * ) data ); break; + case HC_CATLNK : delete ( ( DBCatLnk * ) data ); break; + } } - } - child=next=NULL; - data=NULL; - } - -QString Node::getFullPath(void) - { - Node *up=parent; - QString a(""); - up=this; - while(up != NULL) - { - a.prepend(up->getNameOf()); - a.prepend("/"); - up=up->parent; - } - a.prepend("/"); - return a; - } - -void Node::touchDB(void) - { - if(type != HC_CATALOG) - parent->touchDB(); - else - ((DBCatalog *)data)->touch(); - } + child=next=NULL; + data=NULL; +} + +QString Node::getFullPath ( void ) { + Node *up=parent; + QString a ( "" ); + up=this; + while ( up != NULL ) { + a.prepend ( up->getNameOf() ); + a.prepend ( "/" ); + up=up->parent; + } + a.prepend ( "/" ); + return a; +} + +void Node::touchDB ( void ) { + if ( type != HC_CATALOG ) + parent->touchDB(); + else + ( ( DBCatalog * ) data )->touch(); +} -const char *Node::getNameOf(void) - { - switch(type) - { - case HC_UNINITIALIZED: return ""; - case HC_CATALOG : return ((DBCatalog *)data)->name; - case HC_MEDIA : return ((DBMedia *)data)->name; - case HC_DIRECTORY : return ((DBDirectory *)data)->name; - case HC_FILE : return ((DBFile *)data)->name; - case HC_MP3TAG : return ""; - case HC_CONTENT : return ""; - case HC_CATLNK : return ((DBCatLnk *)data)->name; +QString Node::getNameOf ( void ) { + switch ( type ) { + case HC_UNINITIALIZED: return QString ( "" ); + case HC_CATALOG : return ( ( DBCatalog * ) data )->name; + case HC_MEDIA : return ( ( DBMedia * ) data )->name; + case HC_DIRECTORY : return ( ( DBDirectory * ) data )->name; + case HC_FILE : return ( ( DBFile * ) data )->name; + case HC_MP3TAG : return QString ( "" ); + case HC_CONTENT : return QString ( "" ); + case HC_CATLNK : return ( ( DBCatLnk * ) data )->name; } - return ""; - } + return QString ( "" ); +} -DBCatalog::DBCatalog(char *n,char *o,char *c,char *mod) - { - name = n; - owner = o; - comment = c; - writed = 1; - strcpy(filename,""); - fileversion = ""; - if(mod == NULL) - strcpy(modification,getCurrentTime()); - else - strcpy(modification,mod); - } +DBCatalog::DBCatalog ( QString n,QString o,QString c,QDateTime mod, QString pcategory ) { + name = n; + owner = o; + comment = c; + category = pcategory; + writed = 1; + strcpy ( filename,"" ); + fileversion = ""; + modification = mod; +} + +DBCatalog::DBCatalog ( void ) { + name = ""; + owner = ""; + comment = ""; + writed = 1; + strcpy ( filename,"" ); + modification = QDateTime::currentDateTime(); + fileversion = ""; +} + +DBCatalog::~DBCatalog ( void ) { +} + +DBMedia::DBMedia ( QString n,int nu,QString o,int t,QString c,QDateTime mod, QString pcategory ) { + name = n; + number = nu; + owner = o; + type = t; + modification = mod; + comment = c; + category = pcategory; + borrowing = ""; +} + +DBMedia::DBMedia ( void ) { + name = ""; + number = 0; + owner = ""; + type = 0; + modification = QDateTime::currentDateTime(); + comment = ""; + borrowing = ""; +} + +DBMedia::~DBMedia ( void ) { +} + + +DBDirectory::DBDirectory ( QString n,QDateTime mod,QString c, QString pcategory ) { + name = n; + modification = mod; + comment = c; + category = pcategory; +} + +DBDirectory::DBDirectory ( void ) { + name = ""; + modification = QDateTime(); + comment = ""; +} + +DBDirectory::~DBDirectory ( void ) { +} + + + +DBFile::DBFile ( QString n,QDateTime mod,QString c,float s,int st, QString pcategory ) { + name = n; + modification= mod; + comment = c; + category = pcategory; + size = s; + sizeType= st; + prop = NULL; +} + +DBFile::DBFile ( void ) { + name = ""; + modification = QDateTime(); + comment = ""; + size = 0; + sizeType= 0; + prop = NULL; +} + +DBFile::~DBFile ( void ) { + if ( prop != NULL ) delete prop; +} + +DBMp3Tag::DBMp3Tag ( void ) { + artist = ""; + title = ""; + comment = ""; + album = ""; + year = ""; +} + +DBMp3Tag::DBMp3Tag ( QString a,QString t,QString c,QString al,QString y ) { + artist = a; + title = t; + comment = c; + album = al; + year = y; -DBCatalog::DBCatalog(void) - { - name = NULL; - owner = NULL; - comment = NULL; - writed = 1; - strcpy(filename,""); - strcpy(modification,getCurrentTime()); - fileversion = ""; - } - -DBCatalog::~DBCatalog(void) - { - if(name != NULL) delete[] name; - if(owner != NULL) delete[] owner; - if(comment != NULL) delete[] comment; - } - -DBMedia::DBMedia(char *n,int nu,char *o,int t,char *c,char *mod) - { - name = n; - number = nu; - owner = o; - type = t; - - if(mod == NULL) - strcpy(modification,getCurrentTime()); - else - strcpy(modification,mod); - comment = c; - borrowing = NULL; - } - -DBMedia::DBMedia(void) - { - name = NULL; - number = 0; - owner = NULL; - type = 0; - strcpy(modification,getCurrentTime()); - comment = NULL; - borrowing = NULL; - } - -DBMedia::~DBMedia(void) - { - if(name != NULL) delete[] name; - if(owner != NULL) delete[] owner; - if(comment != NULL) delete[] comment; - if(borrowing != NULL) delete[] borrowing; - } - -DBDirectory::DBDirectory(char *n,char *mod,char *c) - { - name = n; - strcpy(modification,mod); - comment = c; - } - -DBDirectory::DBDirectory(void) - { - name = NULL; - strcpy(modification,""); - comment = NULL; - } - -DBDirectory::~DBDirectory(void) - { - if(name != NULL) delete[] name; - if(comment != NULL) delete[] comment; - } - -DBFile::DBFile(char *n,char *mod,char *c,float s,int st) - { - name = n; - strcpy(modification,mod); - comment = c; - size = s; - sizeType= st; - prop = NULL; - } - -DBFile::DBFile(void) - { - name = NULL; - strcpy(modification,""); - comment = NULL; - size = 0; - sizeType= 0; - prop = NULL; - } - -DBFile::~DBFile(void) - { - if(name != NULL) delete[] name; - if(comment != NULL) delete[] comment; - } - -DBMp3Tag::DBMp3Tag(void) - { - artist = mstr(""); - title = mstr("");; - comment= mstr("");; - album = mstr("");; - year = mstr("");; - } - -DBMp3Tag::DBMp3Tag(char *a,char *t,char *c,char *al,char *y) - { - artist = mstr( a); - title = mstr( t); - comment = mstr( c); - album = mstr( al); - year = mstr( y); - - } - -DBMp3Tag::~DBMp3Tag(void) - { - if(artist != NULL) delete [] artist; - if(title != NULL) delete [] title; - if(comment != NULL) delete [] comment; - if(album != NULL) delete [] album; - if(year != NULL) delete [] year; - } +} + +DBMp3Tag::~DBMp3Tag ( void ) { +} -DBContent::DBContent(void) - { +DBContent::DBContent ( void ) { bytes = NULL; storedSize = 0; - //unsigned char *bytes; - //unsigned long storedSize; - } - -DBContent::DBContent(unsigned char *pbytes,unsigned long pstoredSize) - { +} + +DBContent::DBContent ( unsigned char *pbytes,unsigned long pstoredSize ) { bytes = pbytes; storedSize = pstoredSize; - } +} -DBContent:: ~DBContent(void) - { - if(bytes != NULL) - { - delete [] bytes; - bytes = NULL; - } +DBContent:: ~DBContent ( void ) { + if ( bytes != NULL ) { + delete [] bytes; + bytes = NULL; + } storedSize = 0; - } +} +DBCatLnk::DBCatLnk ( QString pname,char *plocation, QString pcomment, QString pcategory ) { + name = pname; + location = mstr ( plocation ); + comment = pcomment; + category = pcategory; +} - -DBCatLnk::DBCatLnk(char *pname,char *plocation,char *pcomment) - { - name = pname; - location = plocation; - comment = pcomment; - } - -DBCatLnk::DBCatLnk(void) - { - name = NULL; +DBCatLnk::DBCatLnk ( void ) { location = NULL; - comment = NULL; - } - -DBCatLnk::~DBCatLnk(void) - { - if(name != NULL) delete[] name; - if(comment != NULL) delete[] comment; - if(location != NULL) delete[] location; - } +} -DataBase::DataBase(void) - { - nicef = true; - errormsg = ""; - pww = NULL; - storeMp3tags = true; - storeContent = true; - storedFiles = "*.nfo;*.diz;readme.txt"; - storeLimit = 32*1024; - root = new Node(HC_CATALOG,NULL); - root->data = (void *) new DBCatalog(); +DBCatLnk::~DBCatLnk ( void ) { + if ( location != NULL ) delete[] location; +} + +DataBase::DataBase ( void ) { + nicef = true; + errormsg = ""; + pww = NULL; + storeMp3tags = true; + storeContent = true; + showProgressedFileInStatus = true; + storedFiles = "*.nfo;*.diz;readme.txt"; + storeLimit = 32*1024; + root = new Node ( HC_CATALOG,NULL ); + root->data = ( void * ) new DBCatalog(); + XML_ENCODING ="UTF-8"; +} - } +DataBase::~DataBase ( void ) { + delete root; +} -DataBase::~DataBase(void) - { - delete root; - } - -void DataBase::setDBName (char *n) - { - if(((DBCatalog *)(root->data))->name != NULL) - delete[] ((DBCatalog *)(root->data))->name; - ((DBCatalog *)(root->data))->name = mstr(n); - } +void DataBase::setDBName ( QString n ) { + ( ( DBCatalog * ) ( root->data ) )->name = n; +} + +void DataBase::setDBOwner ( QString o ) { + ( ( DBCatalog * ) ( root->data ) )->owner = o; +} + +void DataBase::setComment ( QString c ) { + ( ( DBCatalog * ) ( root->data ) )->comment = c; +} + +void DataBase::setCategory ( QString c ) { + ( ( DBCatalog * ) ( root->data ) )->category = c; +} + +QString& DataBase::getDBName ( void ) { + return ( ( DBCatalog * ) ( root->data ) )->name; +} + +QString& DataBase::getDBOwner ( void ) { + return ( ( DBCatalog * ) ( root->data ) )->owner; +} + +QString& DataBase::getComment ( void ) { + return ( ( DBCatalog * ) ( root->data ) )->comment; +} + +QString& DataBase::getCategory ( void ) { + return ( ( DBCatalog * ) ( root->data ) )->category; +} + -void DataBase::setDBOwner(char *o) - { - if(((DBCatalog *)(root->data))->owner != NULL) - delete[] ((DBCatalog *)(root->data))->owner; - ((DBCatalog *)(root->data))->owner = mstr(o); - } - -void DataBase::setComment(char *c) - { - if(((DBCatalog *)(root->data))->comment != NULL) - delete[] ((DBCatalog *)(root->data))->comment; - ((DBCatalog *)(root->data))->comment = mstr(c); - } - -char *DataBase::getDBName(void) - { - return ((DBCatalog *)(root->data))->name; - } - -char *DataBase::getDBOwner(void) - { - return ((DBCatalog *)(root->data))->owner; - } - -char *DataBase::getComment(void) - { - return ((DBCatalog *)(root->data))->comment; - } - /***************************************************************************/ char *pattern; -int DataBase::addMedia (char *what,char *name,int number,int type,char *owner) - { - int returnv=0; - Node *tt=root->child; +int DataBase::addMedia ( QString what,QString name,int number,int type ) { + return addMedia ( what,name,number,type,"" ); +} + +int DataBase::addMedia ( QString what,QString name,int number,int type,QString owner, QString pcategory ) { + int returnv=0; + Node *tt=root->child; + this->pcategory = pcategory; + + progress ( pww ); + ( ( DBCatalog * ) ( root->data ) )->touch(); + if ( root->child == NULL ) root->child = tt = new Node ( HC_MEDIA,root ); + else { + while ( tt->next != NULL ) { + tt = tt->next; + } + tt->next = new Node ( HC_MEDIA,root ); + tt = tt->next; + } - progress(pww); - ((DBCatalog *)(root->data))->touch(); - if(root->child == NULL) root->child = tt = new Node(HC_MEDIA,root); - else - { - while(tt->next != NULL) tt = tt->next; - tt->next = new Node(HC_MEDIA,root); - tt = tt->next; - } - - progress(pww); - /* Fill the media Node (tt) */ - tt->data = (void *) - new DBMedia(mstr(name), - number, - owner == NULL ? mstr(((DBCatalog *)(root->data))->owner) : mstr(owner), - type, - NULL); - progress(pww); - - /* make the regex pattern for storecontent */ - - progress(pww); - pattern = new char[1024]; - returnv = scanFsToNode(new QString(what),tt); - delete [] pattern; - return returnv; - } -/***************************************************************************/ -int DataBase::saveDB (void) - { - int i; - gzFile f=NULL; - FileWriter *fw = NULL; - - progress(pww); - - if(strcmp(((DBCatalog *)(root->data))->filename,"") == 0) return 1; - - f = gzopen(((DBCatalog *)(root->data))->filename,"wb"); - if(f==NULL) - { - errormsg = tr("I can't rewrite the file: %1").arg(((DBCatalog *)(root->data))->filename); - return 2; - } - progress(pww); - - fw = new FileWriter(f,nicef); - fw->pww = pww; - progress(pww); - i=fw->writeDown(root); - ((DBCatalog *)(root->data))->writed = 1; - progress(pww); - gzclose(f); - delete fw; - return 0; - } + progress ( pww ); + /* Fill the media Node (tt) */ + tt->data = ( void * ) + new DBMedia ( name, + number, + owner.isEmpty() ? ( ( DBCatalog * ) ( root->data ) )->owner : owner, + type, pcategory ); + progress ( pww ); + + /* make the regex pattern for storecontent */ + + progress ( pww ); + pattern = new char[1024]; + returnv = scanFsToNode ( what,tt ); + delete [] pattern; + return returnv; +} /***************************************************************************/ -int DataBase::saveAsDB (char *filename) - { - int i; - gzFile f=NULL; - FileWriter *fw = NULL; - - progress(pww); - /*Check overwriting !!! */ - f = gzopen(filename,"wb"); - if(f==NULL) - { - errormsg = tr("I can't create the file: %1").arg(filename); - return 1; - } - - progress(pww); - fw = new FileWriter(f,nicef); - fw->pww = pww; - i=fw->writeDown(root); - ((DBCatalog *)(root->data))->writed = 1; - strcpy(((DBCatalog *)(root->data))->filename,filename); - - progress(pww); - gzclose(f); - delete fw; - return 0; - } -/***************************************************************************/ -int DataBase::insertDB(char *filename) - { - int i; - gzFile f=NULL; - FileReader *fw = NULL; +int DataBase::saveDB ( void) { + int i; + gzFile f=NULL; + FileWriter *fw = NULL; + + progress ( pww ); + + if ( strcmp ( ( ( DBCatalog * ) ( root->data ) )->filename,"" ) == 0 ) return 1; + + f = gzopen ( ( ( DBCatalog * ) ( root->data ) )->filename,"wb" ); + if ( f==NULL ) { + errormsg = tr ( "I can't rewrite the file: %1" ).arg ( ( ( DBCatalog * ) ( root->data ) )->filename ); + return 2; + } + progress ( pww ); + + fw = new FileWriter ( f,nicef, this->XML_ENCODING); + fw->pww = pww; + progress ( pww ); + i=fw->writeDown ( root ); + ( ( DBCatalog * ) ( root->data ) )->writed = 1; + progress ( pww ); + gzclose ( f ); + delete fw; + return 0; +} +/***************************************************************************/ +int DataBase::saveAsDB ( char *filename ) { + int i; + gzFile f=NULL; + FileWriter *fw = NULL; + + progress ( pww ); + /*Check overwriting !!! */ + f = gzopen ( filename,"wb" ); + if ( f==NULL ) { + errormsg = tr ( "I can't create the file: %1" ).arg ( filename ); + return 1; + } + progress ( pww ); + fw = new FileWriter ( f,nicef, this->XML_ENCODING ); + fw->pww = pww; + i=fw->writeDown ( root ); + ( ( DBCatalog * ) ( root->data ) )->writed = 1; + strcpy ( ( ( DBCatalog * ) ( root->data ) )->filename,filename ); - if(root==NULL) - { - errormsg = tr("No database opened!"); - return 1; - } - progress(pww); - f = gzopen(filename,"rb"); - if(f==NULL) - { - errormsg = tr("I can't open the file: %1").arg(filename); - return 1; - } - - progress(pww); - fw = new FileReader(f,1); - - fw->pww=pww; - progress(pww); + progress ( pww ); + gzclose ( f ); + delete fw; + return 0; +} +/***************************************************************************/ +int DataBase::insertDB ( char *filename ) { + int i; + gzFile f=NULL; + FileReader *fw = NULL; + DEBUG_INFO_ENABLED = init_debug_info(); + + if ( root==NULL ) { + errormsg = tr ( "No database opened!" ); + return 1; + } + progress ( pww ); + f = gzopen ( filename,"rb" ); + if ( f==NULL ) { + errormsg = tr ( "I can't open the file: %1" ).arg ( filename ); + return 1; + } + + // check free memory + char testbuffer[1024]; + long long int filesize = 0; + int readcount = 0; + readcount = gzread(f, testbuffer, 1024); + while (readcount != 0 ) { + filesize += readcount; + //if(*DEBUG_INFO_ENABLED) + // cerr << "readcount: " << readcount << endl; + readcount = gzread(f, testbuffer, 1024); + progress ( pww ); + } + gzrewind(f); + if(*DEBUG_INFO_ENABLED) + cerr << "detected uncompressed size: " << filesize << endl; + + char *allocated_buffer = NULL; + allocated_buffer = (char *)calloc(filesize, sizeof(QChar)); + if (allocated_buffer == NULL) { + // fail => no enough memory + errormsg = tr ( "Not enough memory to open the file: %1" ).arg ( filename ); + return 1; + } + else { + //free(allocated_buffer); // we keep the memory, delete after read + } + /* end memtest */ - i=fw->readFrom(root); + progress ( pww ); + fw = new FileReader ( f, allocated_buffer, filesize, 1 ); - if(i==1) - { - progress(pww); - errormsg = fw->errormsg; - // cerr <<"error:"<< fw->errormsg <pww=pww; + progress ( pww ); + + i=fw->readFrom ( root ); + + if ( i==1 ) { + progress ( pww ); + errormsg = fw->errormsg; + if(*DEBUG_INFO_ENABLED) + cerr <<"error:"<< qPrintable(fw->errormsg) <data ) )->touch(); + progress ( pww ); + + gzclose ( f ); + free(allocated_buffer); delete fw; - gzclose(f); - return 1; - } - - ((DBCatalog *)(root->data))->touch(); - progress(pww); - - gzclose(f); - delete fw; - return 0; - } + return 0; +} /***************************************************************************/ -int DataBase::openDB (char *filename) - { - int i; - gzFile f=NULL; - FileReader *fw = NULL; +int DataBase::openDB ( char *filename ) { + int i; + gzFile f=NULL; + FileReader *fw = NULL; + + DEBUG_INFO_ENABLED = init_debug_info(); + + progress ( pww ); + f = gzopen ( filename,"rb" ); + if ( f==NULL ) { + errormsg = tr ( "I can't open the file: %1" ).arg ( filename ); + return 1; + } - progress(pww); - f = gzopen(filename,"rb"); - if(f==NULL) - { - errormsg = tr("I can't open the file: %1").arg(filename); - return 1; - } - - progress(pww); - fw = new FileReader(f); - - fw->pww=pww; - progress(pww); + // check free memory + char testbuffer[1024]; + long long int filesize = 0; + int readcount = 0; + readcount = gzread(f, testbuffer, 1024); + while (readcount != 0 ) { + filesize += readcount; + //if(*DEBUG_INFO_ENABLED) + // cerr << "readcount: " << readcount << endl; + readcount = gzread(f, testbuffer, 1024); + progress ( pww ); + } + gzrewind(f); + if(*DEBUG_INFO_ENABLED) + cerr << "detected uncompressed size: " << filesize << endl; + + char *allocated_buffer = NULL; + allocated_buffer = (char *)calloc(filesize, sizeof(QChar)); + if (allocated_buffer == NULL) { + // fail => no enough memory + errormsg = tr ( "Not enough memory to open the file: %1" ).arg ( filename ); + return 1; + } + else { + //free(allocated_buffer); // we keep the memory, delete after read + } + /* end memtest */ - if(root != NULL) - delete root; //Free previous database in memory - - progress(pww); - root = new Node(HC_CATALOG,NULL); //Malloc root node. + progress ( pww ); + fw = new FileReader ( f, allocated_buffer, filesize); - root->data = (void *) new DBCatalog(); + fw->pww=pww; + progress ( pww ); - progress(pww); - i=fw->readFrom(root); - - - if(i==1) - { - progress(pww); - errormsg = fw->errormsg; - // cerr <<"error:"<< fw->errormsg <data = ( void * ) new DBCatalog(); + + progress ( pww ); + i=fw->readFrom ( root ); + this->XML_ENCODING = fw->XML_ENCODING; + + + if ( i==1 ) { + progress ( pww ); + errormsg = fw->errormsg; + if (*DEBUG_INFO_ENABLED) + std::cerr <<"error:"<< qPrintable(fw->errormsg) << std::endl; + + delete root; + root = NULL; + delete fw; + gzclose ( f ); + free(allocated_buffer); + return 1; + } - - ((DBCatalog *)(root->data))->writed = 1; - strcpy(((DBCatalog *)(root->data))->filename,filename); - - progress(pww); - - gzclose(f); - delete fw; - return 0; - } -/***************************************************************************/ -void DBCatalog::touch(void) - { - writed = 0; - strcpy(modification,getCurrentTime()); - } + + ( ( DBCatalog * ) ( root->data ) )->writed = 1; + strcpy ( ( ( DBCatalog * ) ( root->data ) )->filename,filename ); + + progress ( pww ); + + gzclose ( f ); + free(allocated_buffer); + delete fw; + return 0; +} +/***************************************************************************/ +void DBCatalog::touch ( void ) { + writed = 0; + modification=QDateTime::currentDateTime(); +} /*************************************************************************/ -char *dbb1=NULL; -char *dbb2=NULL; -char *dbb3=NULL; -char *dbb4=NULL; -char *dbb5=NULL; -char *dbb6=NULL; +int DataBase::scanFsToNode ( QString what,Node *to ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if (*DEBUG_INFO_ENABLED) + std::cerr <<"Loading node:"<< qPrintable ( what ) <isReadable() ) { + if (*DEBUG_INFO_ENABLED) + std::cerr << "dir " << qPrintable ( what ) << " is not readable"; + + int i; + if ( QFileInfo ( what ).isDir() ) + errormsg = tr ( "Cannot read directory: %1" ).arg ( what ); + else + errormsg = tr ( "Cannot read file: %1" ).arg ( what ); /* socket files and dead symbolic links end here */ - int ret; - char *comm; - char txt[512]; - QDir *dir=NULL; - const QFileInfoList *dirlist = NULL; - - ret=0; - dir = new QDir(*what); - if(!dir->isReadable()) - { - int i; - errormsg = tr("Cannot read directory: %1").arg(*what); - - i = 1 + (QMessageBox::warning(NULL,tr("Error"),errormsg,tr("Ignore directory"),tr("Cancel scanning"))); - return i; - } - dirlist = dir->entryInfoList("*", QDir::All|QDir::Hidden|QDir::System); - QFileInfoListIterator it(*dirlist); - QFileInfo *fileInfo; - - for(;(fileInfo = it.current()) != 0;++it) - { - if(!strcmp("." ,(const char *)fileInfo->fileName()) || - !strcmp("..",(const char *)fileInfo->fileName()) ) - continue; - - if(fileInfo->isDir() && fileInfo->isSymLink()) - continue; /* !!! Or do something else, later...*/ - - /* Make a new node */ - Node *tt=to->child; - if(to->child == NULL) - to->child = tt = new Node(fileInfo->isDir() ? HC_DIRECTORY : HC_FILE,to); - else - { - while(tt->next != NULL) tt = tt->next; - tt->next = new Node(fileInfo->isDir() ? HC_DIRECTORY : HC_FILE,to); - tt = tt->next; - } - /*Fill the data field */ - if(!fileInfo->isDir()) /* FILE */ - { - uint size = fileInfo->size(); - float s; - int st; - - if(size > (uint)(1024*1024*1024*2)) - { - s = (double)size / (double)(1024*1024*1024); - st = GBYTE; - } - else if(size > (uint)(1024*1024)) - { - s = (double)size / (double)(1024*1024); - st = MBYTE; - } - else if(size > (uint)1024) - { - s = (double)size / (double)1024; - st = KBYTE; - } - else - { - s = size; - st = BYTE; - } - - progress(pww); + i = 1 + ( QMessageBox::warning ( NULL,tr ( "Error" ),errormsg,tr ( "Ignore" ),tr ( "Cancel scanning" ) ) ); + return i; + } + dirlist = new QFileInfoList ( dir->entryInfoList ( QString ( "*" ), QDir::All|QDir::Hidden|QDir::System ) ); + + for ( int fi = 0; fi < dirlist->size(); ++fi ) { + QFileInfo *fileInfo = new QFileInfo ( dirlist->at ( fi ) ); + if ( fileInfo->fileName() == "." || fileInfo->fileName() == ".." ) { + continue; + } + + if (*DEBUG_INFO_ENABLED) + std::cerr << "processing in dir " << qPrintable ( what ) << " node: " << qPrintable ( fileInfo->filePath() ) << endl; - comm = NULL; - if(fileInfo->isSymLink()) - { - sprintf(txt,"%s#%s", - (const char *)tr("Symbolic link#Points to:"), - (const char *)fileInfo->readLink()); - comm = mstr(txt); - } - tt->data=(void *)new DBFile( - mstr(recodeI((char *)((const char *)fileInfo->fileName()),&dbb1)), - getTime(fileInfo->lastModified()), - comm, - s, - st); - scanFileProp(fileInfo,(DBFile *)tt->data); - } - else /* DIRECTORY */ - { - progress(pww); - - tt->data=(void *)new DBDirectory( - mstr(recodeI((char *)((const char *)fileInfo->fileName()),&dbb1)), - getTime(fileInfo->lastModified()), - NULL); - /* Start recursion: */ - - QString *thr=new QString(*what); - thr=&thr->append("/"); - thr=&thr->append(fileInfo->fileName()); - - - if((ret=scanFsToNode(thr,tt)) == 2) - return ret; - } - }/*end of for,..next directory entry*/ - return ret; - } + if (showProgressedFileInStatus) + emit pathScanned(fileInfo->filePath()); + + /* Make a new node */ + Node *tt=to->child; + if ( to->child == NULL ) + to->child = tt = new Node ( fileInfo->isDir() ? HC_DIRECTORY : HC_FILE,to ); + else { + while ( tt->next != NULL ) tt = tt->next; + tt->next = new Node ( fileInfo->isDir() ? HC_DIRECTORY : HC_FILE,to ); + tt = tt->next; + } + /*Fill the data field */ + if ( fileInfo->isFile() ) { /* FILE */ + if (*DEBUG_INFO_ENABLED) + std::cerr << "adding file: " << qPrintable ( fileInfo->fileName() ) << endl; + + uint size = fileInfo->size(); + float s; + int st; + + if ( size > ( uint ) ( 1024*1024*1024*2 ) ) { + s = ( double ) size / ( double ) ( 1024*1024*1024 ); + st = GBYTE; + } else if ( size > ( uint ) ( 1024*1024 ) ) { + s = ( double ) size / ( double ) ( 1024*1024 ); + st = MBYTE; + } else if ( size > ( uint ) 1024 ) { + s = ( double ) size / ( double ) 1024; + st = KBYTE; + } else { + s = size; + st = BYTE; + } + + progress ( pww ); + + if ( fileInfo->isSymLink() ) { /* SYMBOLIC LINK to a FILE */ + comm = tr ( "Symbolic link to file:#" ) + + dir->relativeFilePath(fileInfo->symLinkTarget()); + } else { + comm =(char*) NULL; + } + tt->data= ( void * ) new DBFile ( fileInfo->fileName(),fileInfo->lastModified(), + comm,s,st, this->pcategory ); + scanFileProp ( fileInfo, ( DBFile * ) tt->data ); + } else if ( fileInfo->isDir() ) { /* DIRECTORY */ + + if (*DEBUG_INFO_ENABLED) + std::cerr << "adding dir: " << qPrintable ( fileInfo->fileName() ) << endl; + + progress ( pww ); + + if ( fileInfo->isSymLink() ) { /* SYMBOLIC LINK to a DIRECTORY */ + /* These links appear as empty directories in the GUI */ + /* Change to DBFile for show them as files */ + tt->data= ( void * ) new DBDirectory ( + fileInfo->fileName(), fileInfo->lastModified(), + tr ( "Symbolic link to directory:#" ) + + dir->relativeFilePath(fileInfo->symLinkTarget()), this->pcategory ); + continue; /* Do not recurse into symbolically linked directories */ + } else { + tt->data= ( void * ) new DBDirectory ( + fileInfo->fileName(), fileInfo->lastModified(), (char*) NULL, this->pcategory); + } + + /* Start recursion: */ + + QString thr ( what ); + thr=thr.append ( "/" ); + thr=thr.append ( fileInfo->fileName() ); + + if ( ( ret=scanFsToNode ( thr,tt ) ) == 2 ) + return ret; + + } else if ( fileInfo->isSymLink() ) { /* DEAD SYMBOLIC LINK */ + + if (*DEBUG_INFO_ENABLED) + std::cerr << "adding dead symlink: " << qPrintable ( fileInfo->fileName() ) << endl; + + progress ( pww ); + + comm = tr ( "DEAD Symbolic link to:#" ) + + dir->relativeFilePath(fileInfo->symLinkTarget()); + tt->data=( void * ) new DBFile ( fileInfo->fileName(),QDateTime(), + comm,0,BYTE, this->pcategory ); + } else { /* SYSTEM FILE (e.g. FIFO, socket or device file) */ + + if (*DEBUG_INFO_ENABLED) + std::cerr << "adding system file: " << qPrintable ( fileInfo->fileName() ) << endl; + + progress ( pww ); + + comm = tr( "System file (e.g. FIFO, socket or device file)" ); + tt->data=( void * ) new DBFile ( fileInfo->fileName(),fileInfo->lastModified(), + comm,0,BYTE, this->pcategory ); + } + }/*end of for,..next directory entry*/ + return ret; +} + /***************************************************************************/ -int DataBase::scanFileProp(QFileInfo *fi,DBFile *fc) - { -/***MP3 tag scanning */ +int DataBase::scanFileProp ( QFileInfo *fi,DBFile *fc ) { + DEBUG_INFO_ENABLED = init_debug_info(); + /***MP3 tag scanning */ + + if ( storeMp3tags || storeMp3techinfo ) + if ( ( fi->extension ( FALSE ) ).lower() == "mp3" || + ( fi->extension ( FALSE ) ).lower() == "mp2" ) { + ReadMp3Tag *reader = + new ReadMp3Tag ( ( const char * ) QFile::encodeName ( fi->absFilePath() ),v1_over_v2 ); + if ( storeMp3tags ) + if ( reader->readed() && reader->exist() ) { + Node *tt = fc->prop; + if ( tt == NULL ) fc->prop = tt = new Node ( HC_MP3TAG,NULL ); + else { + while ( tt->next != NULL ) tt = tt->next; + tt->next = new Node ( HC_MP3TAG,fc->prop ); + tt = tt->next; + } + /*Fill the fields:*/ + tt->data = ( void * ) new DBMp3Tag ( QString::fromLocal8Bit ( reader->artist() ) , + QString::fromLocal8Bit ( reader->title() ) , + QString::fromLocal8Bit ( reader->comment() ), + QString::fromLocal8Bit ( reader->album() ) , + QString::fromLocal8Bit ( reader->year() ) ); + + }//storetag-if + + // Put some technical info to comment + if ( storeMp3techinfo ) { + char *info=reader->gettechinfo(); + if ( info != NULL ) { + if ( ! fc->comment.isEmpty() ) + fc->comment.append ( "#" ); + fc->comment.append ( info ); + free ( info ); + } + }//storeinfo-if + + if ( reader != NULL ) { + delete reader; + reader = NULL; + } + } - if(storeMp3tags || storeMp3techinfo) - if(!strcmp((const char *)fi->extension(FALSE),"mp3") || - !strcmp((const char *)fi->extension(FALSE),"Mp3") || - !strcmp((const char *)fi->extension(FALSE),"MP3") || - !strcmp((const char *)fi->extension(FALSE),"mp2") || - !strcmp((const char *)fi->extension(FALSE),"Mp2") || - !strcmp((const char *)fi->extension(FALSE),"MP2")) - { - ReadMp3Tag *reader = - new ReadMp3Tag((const char *)QFile::encodeName(fi->absFilePath()),v1_over_v2); - if(storeMp3tags) - if(reader->readed() && reader->exist()) - { - Node *tt = fc->prop; - if(tt == NULL) fc->prop = tt = new Node(HC_MP3TAG,NULL); - else - { - while(tt->next != NULL) tt = tt->next; - tt->next = new Node(HC_MP3TAG,fc->prop); - tt = tt->next; - } - /*Fill the fields:*/ - tt->data = (void *) new DBMp3Tag(recodeI((char *)reader->artist(),&dbb1), - recodeI((char *)reader->title(),&dbb2), - recodeI((char *)reader->comment(),&dbb3), - recodeI((char *)reader->album(),&dbb4), - recodeI((char *)reader->year(),&dbb5)); - - }//storetag-if - - // Put some technical info to comment - if(storeMp3techinfo) - { - char *info=reader->gettechinfo(); - if(info != NULL) - { - if(fc->comment != NULL) - { - char *prev=strdup(fc->comment); - delete fc->comment; - - fc->comment=new char[strlen(prev) + strlen(info) + 2]; - sprintf(fc->comment,"%s#%s",prev,info); - free(prev); - } - else - fc->comment=mstr(info); - free(info); - } - }//storeinfo-if - if(reader != NULL) - { - delete reader; - reader = NULL; - } - } - -/***Experimental AVI Header Scanning */ - if(storeAvitechinfo) - if(!strcmp((const char *)fi->extension(FALSE),"avi") || - !strcmp((const char *)fi->extension(FALSE),"Avi") || - !strcmp((const char *)fi->extension(FALSE),"AVI")) - { - FILE* filePTR; - filePTR=fopen((const char *)QFile::encodeName(fi->absFilePath()),"r"); - if(filePTR!=NULL) - { - int i; - QString got = parseAviHeader(filePTR); - rewind(filePTR); - fclose(filePTR); - - char *info = new char[got.length() + 10]; - strcpy(info,got.latin1()); - - //convert \n to # (comment format) - for(i=0;i<(int)got.length();i++) if(info[i] == '\n') info[i] = '#'; - - //store it as comment - if(info != NULL) - { - if(fc->comment != NULL) - { - char *prev=strdup(fc->comment); - delete fc->comment; - fc->comment=new char[strlen(prev) + strlen(info) + 2]; - sprintf(fc->comment,"%s#%s",prev,info); - free(prev); - } - else - fc->comment=mstr(info); - delete [] info; + /***Experimental AVI Header Scanning */ + if ( storeAvitechinfo ) + if ( ( fi->extension ( FALSE ) ).lower() == "avi" ) { + FILE* filePTR; + filePTR=fopen ( ( const char * ) QFile::encodeName ( fi->absFilePath() ),"r" ); + if ( filePTR!=NULL ) { + QString got = parseAviHeader ( filePTR ).replace ( QRegExp ( "\n" ),"#" ); + fclose ( filePTR ); + + //store it as comment + if ( !got.isEmpty() ) { + if ( !fc->comment.isEmpty() ) + fc->comment.append ( "#" ); + fc->comment.append ( got ); + } } - } - } - -/***File content scanning */ - if(storeContent) - { - pcre *pcc = NULL; - const char *error; - int erroroffset; - int ovector[30]; - bool match = false; - - QStringList exts( QStringList::split(";",storedFiles)); - QStringList::Iterator it = exts.begin(); + } - for (;it != exts.end(); ++it ) // stepping on the ; separated patterns - { - strcpy(pattern,(const char *)(*it)); - easyFormConversion(pattern); - caseSensConversion(pattern); - pcc = pcre_compile(pattern,0,&error,&erroroffset,NULL); - if(1 == pcre_exec(pcc,NULL,(const char *)QFile::encodeName(fi->fileName()) - ,strlen((const char *)QFile::encodeName(fi->fileName())) - ,0,0,ovector,30)) - { - match = true; - break; - } - } - - if(match) // the file need to be read - { - FILE *f; - bool success = true; - unsigned long rsize=0,rrsize; - unsigned char *rdata=0; - Node *tt = fc->prop; - - if(storeLimit > MAX_STORED_SIZE) - storeLimit = MAX_STORED_SIZE; - //read the file - if( (rsize = fi->size()) > storeLimit ) - rsize = storeLimit; - f = fopen((const char *)QFile::encodeName(fi->absFilePath()),"rb"); - if(f == NULL) - { - errormsg = QString("I couldn't open the \"%1\" file. (content read 1)\n") - .arg(fi->absFilePath()); - fprintf(stderr,(const char *)errormsg); - success = false; - } - - rdata = new unsigned char[rsize + 1]; - fseek(f,0,SEEK_SET); - rrsize = fread(rdata,sizeof(unsigned char),rsize,f); - if(rsize != rrsize) - { - errormsg = QString("I couldn't correctly read the content of file \"%1\" . (content read 2)\n" - "size difference %2 != %3\n") - .arg(fi->absFilePath()) - .arg(rsize) - .arg(rrsize); - fprintf(stderr,(const char *)errormsg); - success = false; - } - - fclose(f); - rdata[rsize] = '\0'; - - //make the node in the db - if(success) - { - if(tt == NULL) fc->prop = tt = new Node(HC_CONTENT,NULL); - else - { - while(tt->next != NULL) tt = tt->next; - tt->next = new Node(HC_CONTENT,fc->prop); - tt = tt->next; - } - /*Fill the fields:*/ - tt->data = (void *) new DBContent(rdata,rsize); - } - }//end of if(match) - }//end of if(storeContent) - -/***Other properties: */ - - return 0; - } - -void DataBase::addLnk(const char *loc) - { - char *catname = NULL; - gzFile f=NULL; - FileReader *fw = NULL; - - Node *tmp=root->child, - *n = new Node(HC_CATLNK,root); - - /* Reading database name from the pointed file */ - f = gzopen(loc,"rb"); - if(f==NULL) - { - QMessageBox::warning(NULL,tr("Error"),tr("I can't open the file: %1").arg(loc)); - return; - } - - fw = new FileReader(f); - catname=fw->getCatName(); - if(catname==NULL) - { - QMessageBox::warning(NULL,tr("Error"),tr("Error while parsing file: %1").arg(loc)); + /***File content scanning */ + if ( storeContent ) { +// pcre *pcc = NULL; +// const char *error; +// int erroroffset; +// int ovector[30]; + bool match = false; + + QStringList exts ( QStringList::split ( ";",storedFiles ) ); + QStringList::Iterator it = exts.begin(); + + for ( ;it != exts.end(); ++it ) { // stepping on the ; separated patterns + strcpy ( pattern, ( const char * ) ( *it ) ); + easyFormConversion ( pattern ); + caseSensConversion ( pattern ); + QRegExp pcc2; + pcc2.setPattern(QString( pattern)); + //pcc2.setCaseSensitivity(Qt::CaseInsensitive); + //pcc = pcre_compile ( pattern,0,&error,&erroroffset,NULL ); +// if(*DEBUG_INFO_ENABLED) +// cerr << "pcc2 pattern: " << pattern << ", match: " << pcc2.exactMatch(QString(( const char * ) QFile::encodeName ( fi->fileName()))) << endl; + //if(*DEBUG_INFO_ENABLED) +// cerr << "pcre_exec match: " << pcre_exec ( pcc,NULL, ( const char * ) QFile::encodeName ( fi->fileName() ) +// ,strlen ( ( const char * ) QFile::encodeName ( fi->fileName() ) ) +// ,0,0,ovector,30 ) << endl; +// if ( 1 == pcre_exec ( pcc,NULL, ( const char * ) QFile::encodeName ( fi->fileName() ) +// ,strlen ( ( const char * ) QFile::encodeName ( fi->fileName() ) ) +// ,0,0,ovector,30 ) ) { + if (int(pcc2.indexIn(QString(( const char * ) QFile::encodeName ( fi->fileName())))) == 1) { + match = true; + break; + } + } + + if ( match ) { // the file need to be read + FILE *f; + bool success = true; + unsigned long rsize=0,rrsize; + unsigned char *rdata=0; + Node *tt = fc->prop; + + if ( storeLimit > MAX_STORED_SIZE ) + storeLimit = MAX_STORED_SIZE; + //read the file + if ( ( rsize = fi->size() ) > storeLimit ) + rsize = storeLimit; + f = fopen ( ( const char * ) QFile::encodeName ( fi->absFilePath() ),"rb" ); + if ( f == NULL ) { + errormsg = QString ( "I couldn't open the \"%1\" file. (content read 1)\n" ) + .arg ( fi->absFilePath() ); + fprintf ( stderr, ( const char * ) errormsg ); + success = false; + } + + rdata = new unsigned char[rsize + 1]; + fseek ( f,0,SEEK_SET ); + rrsize = fread ( rdata,sizeof ( unsigned char ),rsize,f ); + if ( rsize != rrsize ) { + errormsg = QString ( "I couldn't correctly read the content of file \"%1\" . (content read 2)\n" + "size difference %2 != %3\n" ) + .arg ( fi->absFilePath() ) + .arg ( rsize ) + .arg ( rrsize ); + fprintf ( stderr, ( const char * ) errormsg ); + success = false; + } + + fclose ( f ); + rdata[rsize] = '\0'; + + //make the node in the db + if ( success ) { + if ( tt == NULL ) fc->prop = tt = new Node ( HC_CONTENT,NULL ); + else { + while ( tt->next != NULL ) tt = tt->next; + tt->next = new Node ( HC_CONTENT,fc->prop ); + tt = tt->next; + } + /*Fill the fields:*/ + tt->data = ( void * ) new DBContent ( rdata,rsize ); + } + }//end of if(match) + }//end of if(storeContent) + + /***Other properties: */ + + return 0; +} + +void DataBase::addLnk ( const char *loc ) { + QString catname; + gzFile f=NULL; + FileReader *fw = NULL; + + Node *tmp=root->child, + *n = new Node ( HC_CATLNK,root ); + + /* Reading database name from the pointed file */ + f = gzopen ( loc,"rb" ); + if ( f==NULL ) { + QMessageBox::warning ( NULL,tr ( "Error" ),tr ( "I can't open the file: %1" ).arg ( loc ) ); + return; + } + + // check free memory + char testbuffer[1024]; + long long int filesize = 0; + int readcount = 0; + readcount = gzread(f, testbuffer, 1024); + while (readcount != 0 ) { + filesize += readcount; + //if(*DEBUG_INFO_ENABLED) + // cerr << "readcount: " << readcount << endl; + readcount = gzread(f, testbuffer, 1024); + progress ( pww ); + } + gzrewind(f); + if(*DEBUG_INFO_ENABLED) + cerr << "detected uncompressed size: " << filesize << endl; + + char *allocated_buffer = NULL; + allocated_buffer = (char *)calloc(filesize, sizeof(QChar)); + if (allocated_buffer == NULL) { + // fail => no enough memory + QMessageBox::warning ( NULL,tr ( "Error" ), tr ( "Not enough memory to open the file: %1" ).arg ( QString(loc) )); + return; + } + else { + //free(allocated_buffer); // we keep the memory, delete after read + } + /* end memtest */ + + fw = new FileReader ( f, allocated_buffer, filesize ); + catname=fw->getCatName(); + if ( catname.isEmpty() ) { + QMessageBox::warning ( NULL,tr ( "Error" ),tr ( "Error while parsing file: %1" ).arg ( loc ) ); + delete fw; + gzclose ( f ); + free(allocated_buffer); + return; + } + gzclose ( f ); + free(allocated_buffer); delete fw; - gzclose(f); - return; - } - gzclose(f); - delete fw; - /* end reading from the file */ - - char *storedname = new char [ strlen(catname) +2 ]; - sprintf(storedname,"@%s",catname); - - n->data = new DBCatLnk(storedname,mstr(loc),NULL); - - if(root->child == NULL) - { - root->child = n; - } - else - { - while(tmp->next != NULL) tmp = tmp->next; - tmp->next = n; - } - - root->touchDB(); - } -/***************************************************************************/ -void DataBase::deleteNode(Node *d) - { - Node *p; - - if(d==NULL) return; - p=d->parent; - if(p->child == d) - { - p->child = p->child->next; - d->next = NULL; - delete d; - } - else - { - p = p->child; - while(p->next != d) - p = p->next; - p->next=p->next->next; - d->next = NULL; - delete d; - } - ((DBCatalog *)((getRootNode())->data))->touch(); - } -/***************************************************************************/ -double DataBase::getSize(Node *s,int level) - { - double v=0.0; - if(s->type == HC_FILE) - { - switch(((DBFile *)(s->data))->sizeType) - { - case 0: v += (((DBFile *)(s->data))->size)/(1024*1024); break; //byte - case 1: v += (((DBFile *)(s->data))->size)/1024; break; //Kb - case 2: v += (((DBFile *)(s->data))->size); break; //Mb - case 3: v += (((DBFile *)(s->data))->size)*1024; break; //Gb - } - } - if(s->child != NULL) v += getSize(s->child,level+1); - if(level != 0) - if(s->next != NULL) v += getSize(s->next,level+1); - return v; - } + /* end reading from the file */ -unsigned long DataBase::getCountDirs(Node *s,int level) - { - unsigned long v=0; - if(s->type == HC_DIRECTORY) - v=1; - if(s->child != NULL) v += getCountDirs(s->child,level+1); - if(level != 0) - if(s->next != NULL) v += getCountDirs(s->next,level+1); - return v; - } - -unsigned long DataBase::getCountFiles(Node *s,int level) - { - unsigned long v=0; - if(s->type == HC_FILE) - v=1; - if(s->child != NULL) v += getCountFiles(s->child,level+1); - if(level != 0) - if(s->next != NULL) v += getCountFiles(s->next,level+1); - return v; - } + catname.prepend ( "@" ); -void DataBase::setNice(bool nic) - { - nicef = nic; - } + n->data = new DBCatLnk ( catname,mstr ( loc ),"" ); + + if ( root->child == NULL ) { + root->child = n; + } else { + while ( tmp->next != NULL ) tmp = tmp->next; + tmp->next = n; + } + + root->touchDB(); +} +/***************************************************************************/ +void DataBase::deleteNode ( Node *d ) { + Node *p; + + if ( d==NULL ) return; + p=d->parent; + if ( p->child == d ) { + p->child = p->child->next; + d->next = NULL; + delete d; + } else { + p = p->child; + while ( p->next != d ) + p = p->next; + p->next=p->next->next; + d->next = NULL; + delete d; + } + ( ( DBCatalog * ) ( ( getRootNode() )->data ) )->touch(); +} +/***************************************************************************/ +double DataBase::getSize ( Node *s,int level ) { + double v=0.0; + if ( s->type == HC_FILE ) { + switch ( ( ( DBFile * ) ( s->data ) )->sizeType ) { + case 0: v += ( ( ( DBFile * ) ( s->data ) )->size ) / ( 1024*1024 ); break; //byte + case 1: v += ( ( ( DBFile * ) ( s->data ) )->size ) /1024; break; //Kb + case 2: v += ( ( ( DBFile * ) ( s->data ) )->size ); break; //Mb + case 3: v += ( ( ( DBFile * ) ( s->data ) )->size ) *1024; break; //Gb + } + } + if ( s->child != NULL ) v += getSize ( s->child,level+1 ); + if ( level != 0 ) + if ( s->next != NULL ) v += getSize ( s->next,level+1 ); + return v; +} + +unsigned long DataBase::getCountDirs ( Node *s,int level ) { + unsigned long v=0; + if ( s->type == HC_DIRECTORY ) + v=1; + if ( s->child != NULL ) v += getCountDirs ( s->child,level+1 ); + if ( level != 0 ) + if ( s->next != NULL ) v += getCountDirs ( s->next,level+1 ); + return v; +} + +unsigned long DataBase::getCountFiles ( Node *s,int level ) { + unsigned long v=0; + if ( s->type == HC_FILE ) + v=1; + if ( s->child != NULL ) v += getCountFiles ( s->child,level+1 ); + if ( level != 0 ) + if ( s->next != NULL ) v += getCountFiles ( s->next,level+1 ); + return v; +} + +void DataBase::setNice ( bool nic ) { + nicef = nic; +} /*****************************************************************/ +/* ??? int compare(char *a,char *b) { int i; @@ -1056,110 +1056,112 @@ if(a[i]child; - for(i=0;inext; - return step; - } +Node * DataBase::getMOnPos ( int p ) { + int i; + Node *step; + + step=root->child; + for ( i=0;inext; + return step; +} + +void DataBase::sortM ( int mode ) { + Node *step; + void *data; + int length; + int type; + int i,j; + + if ( root==NULL ) return; + length=0; + step=root->child; + while ( step != NULL ) { + length++; + step=step->next; + } + + for ( i=0;itype == HC_CATLNK ) + continue; + else if ( getMOnPos ( j )->type == HC_CATLNK ) + ; /* nothing */ + else { + switch ( mode ) { + case NUMBER: + if ( ( ( DBMedia * ) ( getMOnPos ( i )->data ) )->number < + ( ( DBMedia * ) ( getMOnPos ( j )->data ) )->number ) + continue; + break; + + case NAME: + if ( 0 < QString::localeAwareCompare ( + ( ( DBMedia * ) ( getMOnPos ( i )->data ) )->name , + ( ( DBMedia * ) ( getMOnPos ( j )->data ) )->name ) ) + continue; + break; + + case TYPE: + if ( ( ( DBMedia * ) ( getMOnPos ( i )->data ) )->type <= + ( ( DBMedia * ) ( getMOnPos ( j )->data ) )->type ) + continue; + break; + + case TIME: + if ( ( ( DBMedia * ) ( getMOnPos ( i )->data ) )->modification < + ( ( DBMedia * ) ( getMOnPos ( j )->data ) )->modification ) + continue; + break; + } + } + //swap + step = getMOnPos ( i )->child; + data = getMOnPos ( i )->data ; + type = getMOnPos ( i )->type; + + getMOnPos ( i )->child = getMOnPos ( j )->child; + getMOnPos ( i )->data = getMOnPos ( j )->data; + getMOnPos ( i )->type = getMOnPos ( j )->type; + + getMOnPos ( j )->child = step; + getMOnPos ( j )->data = data; + getMOnPos ( j )->type = type; + + } + root->touchDB(); +} + +void DataBase::setShowProgressedFileInStatus(bool showProgressedFileInStatus) +{ + this->showProgressedFileInStatus = showProgressedFileInStatus; +} -void DataBase::sortM(int mode) - { - Node *step; - void *data; - int length; - int type; - int i,j; - - if(root==NULL) return; - length=0; - step=root->child; - while(step != NULL) - { - length++; - step=step->next; - } - for(i=0;itype == HC_CATLNK ) - continue; - else if (getMOnPos(j)->type == HC_CATLNK) - ; /* nothing */ - else - { - switch(mode) - { - case NUMBER: - if(((DBMedia *)(getMOnPos(i)->data))->number < - ((DBMedia *)(getMOnPos(j)->data))->number) - continue; - break; - - case NAME: - if(compare(((DBMedia *)(getMOnPos(i)->data))->name , - ((DBMedia *)(getMOnPos(j)->data))->name)) - continue; - break; - - case TYPE: - if(((DBMedia *)(getMOnPos(i)->data))->type <= - ((DBMedia *)(getMOnPos(j)->data))->type ) - continue; - break; - - case TIME: - if(compare(((DBMedia *)(getMOnPos(i)->data))->modification , - ((DBMedia *)(getMOnPos(j)->data))->modification)) - continue; - break; - } - } - //swap - step = getMOnPos(i)->child; - data = getMOnPos(i)->data ; - type = getMOnPos(i)->type; - - getMOnPos(i)->child = getMOnPos(j)->child; - getMOnPos(i)->data = getMOnPos(j)->data; - getMOnPos(i)->type = getMOnPos(j)->type; - - getMOnPos(j)->child = step; - getMOnPos(j)->data = data; - getMOnPos(j)->type = type; - - } - root->touchDB(); - } /*************************************************************************/ -const char *shortMonthName0(int i) - { - switch(i) - { - case 1: return "Jan"; - case 2: return "Feb"; - case 3: return "Mar"; - case 4: return "Apr"; - case 5: return "May"; - case 6: return "Jun"; - case 7: return "Jul"; - case 8: return "Aug"; - case 9: return "Sep"; - case 10: return "Oct"; - case 11: return "Nov"; - case 12: return "Dec"; +const char *shortMonthName0 ( int i ) { + switch ( i ) { + case 1: return "Jan"; + case 2: return "Feb"; + case 3: return "Mar"; + case 4: return "Apr"; + case 5: return "May"; + case 6: return "Jun"; + case 7: return "Jul"; + case 8: return "Aug"; + case 9: return "Sep"; + case 10: return "Oct"; + case 11: return "Nov"; + case 12: return "Dec"; } - return "Err"; - } + return "Err"; +} +/* ??? char *getCurrentTime(void) { char *m=new char[30]; @@ -1167,13 +1169,15 @@ QDate d; t = QTime::currentTime(); d = QDate::currentDate(); - sprintf(m,/* "%s.%d %d:%d %d" */ "%s %02d %02d:%02d %d",(const char *) + sprintf(m,// "%s.%d %d:%d %d" + "%s %02d %02d:%02d %d",(const char *) (shortMonthName0(d.month())),d.day(),t.hour(),t.minute(),d.year()); return recodeI(m,&dbb6); } - +*/ +/* ??? char *getTime(QDateTime dt) { char *m=new char[30]; @@ -1181,160 +1185,142 @@ QDate d; t = dt.time(); d = dt.date(); - sprintf(m,/* "%s.%d %d:%d %d" */ "%s %02d %02d:%02d %d",(const char *) + sprintf(m,// "%s.%d %d:%d %d" + "%s %02d %02d:%02d %d",(const char *) (shortMonthName0(d.month())),d.day(),t.hour(),t.minute(),d.year()); return recodeI(m,&dbb6); } +*/ + /********************************************************************************* -Import func: +Import functions: *********************************************************************************/ -Node * DataBase::getMediaNode(char *name) - { - Node *t=NULL; - - t=root->child; //first media - while(t != NULL) - { - if(t->type != HC_MEDIA) continue; - if(!strcmp(t->getNameOf(),name)) - return t; - t=t->next; +Node * DataBase::getMediaNode ( QString name ) { + Node *t=NULL; + + t=root->child; //first media + while ( t != NULL ) { + if ( t->type != HC_MEDIA ) continue; + if ( t->getNameOf() == name ) + return t; + t=t->next; } - return NULL; - } - -Node * DataBase::putMediaNode(char *name,int number,char *owner,int type,char *comment) - { - Node *t=NULL,*n=NULL; - - n = new Node(HC_MEDIA,root); - n->data = (void *) - new DBMedia(mstr(name),number,mstr(owner),type,mstr(comment),getCurrentTime()); - - if(root->child == NULL) - root->child = n; - else - { - t=root->child; //first media - while(t->next != NULL) t=t->next; - t->next = n; - } - return n; - } - - Node * DataBase::getMediaNode(int id) - { - Node *t=NULL; - - t=root->child; //first media - while(t != NULL) - { - if(((DBMedia *)(t->data))->number == id){ -// std::cout << "media found." << endl; - return t; - } - t=t->next; + return NULL; +} + +Node * DataBase::putMediaNode ( QString name,int number,QString owner,int type,QString comment, QDateTime modification, QString category ) { + Node *t=NULL,*n=NULL; + + n = new Node ( HC_MEDIA,root ); + n->data = ( void * ) new DBMedia ( name,number,owner,type,comment, modification, category ); + + if ( root->child == NULL ) + root->child = n; + else { + t=root->child; //first media + while ( t->next != NULL ) t=t->next; + t->next = n; } - return NULL; - } + return n; +} -Node * DataBase::getDirectoryNode(Node *meddir,char *name) - { - Node *t=NULL; - - t=meddir->child; - while(t != NULL) - { - if(t->type != HC_DIRECTORY) - { - t=t->next; - continue; - } - if(!strcmp(t->getNameOf(),name)) - return t; - t=t->next; +Node * DataBase::getMediaNode ( int id ) { + Node *t=NULL; + + t=root->child; //first media + while ( t != NULL ) { + if ( ( ( DBMedia * ) ( t->data ) )->number == id ) { + return t; + } + t=t->next; } - return NULL; - } - -Node * DataBase::putDirectoryNode(Node *meddir,char *name,char *modification,char *comment) - { - Node *t=NULL,*n=NULL; - - n = new Node(HC_DIRECTORY,meddir); - n->data = (void *) - new DBDirectory(mstr(name),modification,mstr(comment)); - - if(meddir->child == NULL) - meddir->child = n; - else - { - t=meddir->child; - while(t->next != NULL) t=t->next; - t->next = n; - } - return n; - } + return NULL; +} -Node * DataBase::getFileNode(Node *directory,char *name) - { - Node *t=NULL; - - t=directory->child; - while(t != NULL) - { - if(t->type != HC_FILE) - { +Node * DataBase::getDirectoryNode ( Node *meddir,QString name ) { + Node *t=NULL; + + t=meddir->child; + while ( t != NULL ) { + if ( t->type != HC_DIRECTORY ) { + t=t->next; + continue; + } + if ( t->getNameOf() == name ) + return t; t=t->next; - continue; - } - if(!strcmp(t->getNameOf(),name)) - return t; - t=t->next; } - return NULL; + return NULL; +} - } - -Node * DataBase::putFileNode(Node *directory,char *name,char *modification,char *comment,int sizeType,float size) - { - Node *t=NULL,*n=NULL; - - n = new Node(HC_FILE,directory); - n->data = (void *) - new DBFile(mstr(name),modification,mstr(comment),size,sizeType); - - if(directory->child == NULL) - directory->child = n; - else - { - t=directory->child; - while(t->next != NULL) t=t->next; - t->next = n; - } - return n; - } - +Node * DataBase::putDirectoryNode ( Node *meddir,QString name,QDateTime modification,QString comment, QString category ) { + Node *t=NULL,*n=NULL; + + n = new Node ( HC_DIRECTORY,meddir ); + n->data = ( void * ) new DBDirectory ( name,modification,comment, category ); + + if ( meddir->child == NULL ) + meddir->child = n; + else { + t=meddir->child; + while ( t->next != NULL ) t=t->next; + t->next = n; + } + return n; +} + +Node * DataBase::getFileNode ( Node *directory,QString name ) { + Node *t=NULL; + + t=directory->child; + while ( t != NULL ) { + if ( t->type != HC_FILE ) { + t=t->next; + continue; + } + if ( t->getNameOf() == name ) + return t; + t=t->next; + } + return NULL; + +} + +Node * DataBase::putFileNode ( Node *directory,QString name,QDateTime modification,QString comment,int sizeType,float size, QString category ) { + Node *t=NULL,*n=NULL; + + n = new Node ( HC_FILE,directory ); + n->data = ( void * ) + new DBFile ( name,modification,comment,size,sizeType, category ); + + if ( directory->child == NULL ) + directory->child = n; + else { + t=directory->child; + while ( t->next != NULL ) t=t->next; + t->next = n; + } + return n; +} + + +Node * DataBase::putTagInfo ( Node *file,QString artist,QString title,QString comment,QString album,QString year ) { + Node *t=NULL,*n=NULL; + + n = new Node ( HC_MP3TAG,NULL ); + n->data = ( void * ) + new DBMp3Tag ( artist,title,comment,album,year ); + + if ( ( ( DBFile * ) ( file->data ) )->prop == NULL ) + ( ( DBFile * ) ( file->data ) )->prop = n; + else { + t= ( ( DBFile * ) ( file->data ) )->prop; + while ( t->next != NULL ) t=t->next; + t->next = n; + } + return n; +} -Node * DataBase::putTagInfo (Node *file,char *artist,char *title,char *comment,char *album,char *year) - { - Node *t=NULL,*n=NULL; - - n = new Node(HC_MP3TAG,NULL); - n->data = (void *) - new DBMp3Tag(artist,title,comment,album,year); - - if(((DBFile *)(file->data))->prop == NULL) - ((DBFile *)(file->data))->prop = n; - else - { - t=((DBFile *)(file->data))->prop; - while(t->next != NULL) t=t->next; - t->next = n; - } - return n; - } - diff -Nru cdcat-1.01b/src/dbase.h cdcat-1.2/src/dbase.h --- cdcat-1.01b/src/dbase.h 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/dbase.h 2011-01-30 15:23:01.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** - Hyper's CD Catalog + Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -12,30 +12,32 @@ #define CDCAT_DBASE #include +#include +#include // values for class Node::type -#define HC_UNINITIALIZED 0 +#define HC_UNINITIALIZED 0 #define HC_CATALOG 1 -#define HC_MEDIA 2 -#define HC_DIRECTORY 3 -#define HC_FILE 4 -#define HC_MP3TAG 5 +#define HC_MEDIA 2 +#define HC_DIRECTORY 3 +#define HC_FILE 4 +#define HC_MP3TAG 5 #define HC_CONTENT 6 #define HC_CATLNK 7 -#define HC_ARCHIV 8 +#define HC_ARCHIV 8 //values for class DBMedia::type #define UNKNOWN 0 #define CD 1 #define DVD 2 -#define HARDDISC 3 +#define HARDDISC 3 #define FLOPPY 4 -#define NETPLACE 5 +#define NETPLACE 5 #define FLASHDRV 6 #define OTHERD 7 //values for class DBFile::sizeType -#define BYTE 0 +#define BYTE 0 #define KBYTE 1 #define MBYTE 2 #define GBYTE 3 @@ -48,336 +50,346 @@ #define MAX_STORED_SIZE (128*1024) -class QDateTime; class QFileInfo; -class QString; class PWw; -void caseSensConversion(char *p); -void easyFormConversion(char *p); +void caseSensConversion ( char *p ); +void easyFormConversion ( char *p ); + +QString date_to_str ( QDateTime dt ); -class Node - { - public: - int type; /* - 0 - uninitialized - 1 - catalog +class Node { +public: + int type; /* + 0 - uninitialized + 1 - catalog 2 - media - 3 - directory - 4 - file + 3 - directory + 4 - file 5 - mp3tag - 6 - content - 7 - catlnk + 6 - content + 7 - catlnk 8 - archive.prop. - */ + */ + + Node *next; //neighbour node. (Same level) + Node *child; //one level below + Node *parent; //the parent element (Upper level) + + void *data; // see the DB* classes below + + QString getNameOf ( void ); + // return the name of the node,which can be media name, catalog name, + // file name, directory name + + QString getFullPath ( void ); + //return the full path of the node. + + void touchDB ( void ); + //tell to the database that you modified it, and save the modification time. + + Node ( void ); + // t:UNINITIALIZED , p:NULL + + Node ( int t,Node *p ); + // t:type , p:parent + + ~Node ( void ); +}; - Node *next; //neighbour node. (Same level) - Node *child; //one level below - Node *parent; //the parent element (Upper level) - - void *data; // see the DB* classes below - - const char *getNameOf(void); - // return the name of the node,which can be media name, catalog name, - // file name, directory name - - QString getFullPath(void); - //return the full path of the node. - - void touchDB(void); - //tell to the database that you modified it, and save the modification time. - - Node(void); - // t:UNINITIALIZED , p:NULL - - Node(int t,Node *p); - // t:type , p:parent - - ~Node(void); - }; - /* * DB ... classes: - */ + */ -class DBCatalog //type is 1 - { - public: - char *name; - char *owner; - char *comment; - - int writed; - //Writed to the disc 1=yes 0=no - - char filename[256]; - //the file name of the database. (If you opened it or save it yet.) - - char modification[30]; - - // If the database opened from an existing file it contains - // the version of the datafile. - QString fileversion; - - void touch(void); - //tell to the database that you modified it, and save the modification time. - - DBCatalog(void); - ~DBCatalog(void); - DBCatalog (char *n,char *o,char *c,char *mod=NULL); - // n:name , o:owner , c:comment, mod:modification - }; - -class DBMedia //type is 2 - { - public: - char *name; - //the media name, must be unique - - int number; - //the unique serial name of the media - - char *owner; - //if not defined is NULL - - int type; - // 0-unknown 1-CD 2-DVD 3-HardDisc 4-Floppy 5-NetworPlace 6-FlashDrive 7-OtherDevice - - char modification[30]; - char *comment; - - //Is the media borrowed? NULL=>No ; String=>Yes , contains: for who? - char *borrowing; - - DBMedia(char *n,int nu,char *o,int t,char *c,char *mod=NULL); - // n:name , nu:number o:owner , t:type , c:comment, mod:modification - DBMedia(void); - ~DBMedia(void); - }; - -class DBDirectory //type is 3 - { - public: - char *name; - char modification[30]; - char *comment; - - DBDirectory(void); - DBDirectory(char *n,char *mod,char *c); - // n:name , mod:modification , c:comment - - ~DBDirectory(void); - }; - -class DBFile //type is 4 - { - public: - char *name; - char modification[30]; - char *comment; - float size; - //filesize - - int sizeType; - //Tell the meaning of size 0=byte 1=Kb 2=Mb 3=Gb - - Node *prop; - //the root pointer of other Nodes. can be mp3tag of etc... - - DBFile(void); - DBFile(char *n,char *mod,char *c,float s,int st); - // n:name , mod:modification , c:comment , s:size , st:sizeType - - ~DBFile(void); - }; - -class DBMp3Tag //type is 5 - { - public: - char *artist; - char *title; - char *comment; - char *album; - char *year; - - DBMp3Tag(void); - DBMp3Tag(char *a,char *t,char *c,char *al,char *y); - //a:artist , t:title , c:commnet , al:album , y:year - - ~DBMp3Tag(void); - }; - -class DBContent //type is 6 - { - public: - - DBContent(void); - DBContent(unsigned char *pbytes,unsigned long pstoredSize); - - ~DBContent(void); - - unsigned char *bytes; - unsigned long storedSize; - }; - - -class DBCatLnk //type is 7 - { - public: - char *name; - char *location; - char *comment; - - - DBCatLnk(void); - DBCatLnk(char *pname,char *plocation,char *pcomment); - - ~DBCatLnk(void); - }; - - -class DataBase : public QObject - { - Q_OBJECT - - public: - - DataBase(void); - ~DataBase(void); - - QString errormsg; - //If some function return with fail code, the system will be able to determine the reason of - //fail from this message. - - bool nicef; - // saving option (niceFormat) pass to the FileWriter class - - bool storeMp3tags; - // strore the mp3 tags - - bool v1_over_v2; - // true is the version 1 tag the default - - bool storeMp3techinfo; - // store mp3 technical informations: time,bitrate,freq, stereo type - - bool storeAvitechinfo; - // store avi technical informations: time,bitrate,... - - //The database will store some file's contetn if .. - bool storeContent; - // the storing enabled... - QString storedFiles; - // ; separated wildcard plattern list of files - unsigned long storeLimit; - // up to this size limitation (bytes) - - - - void setDBName (char *n); - void setDBOwner(char *o); - void setComment(char *c); - void setNice (bool nic); - - char *getDBName (void); - char *getDBOwner(void); - char *getComment(void); - Node *getRootNode(void) { return root; } - - int saveDB (void); - //save the full database to the file, if the file specified before: - // The file opened or saved before this function. - - int saveAsDB (char *filename); - //Save the full database to the specified file. - - int openDB (char *filename); - //Open the catalog from a file - - int insertDB (char *filename); - //insert a new catalog from filename into the existing catalog. - - int addMedia (char *what,char *name,int number,int type,char *owner=NULL); - //Scan a new media from the disk specified in "what" with name "name" and "number" ... - //an immediately added to the database! - - void deleteNode (Node *d); - - void sortM (int mode); - //sort the media in the catalog - - void addLnk(const char *loc); - - double getSize (Node *s,int level=0); - unsigned long getCountFiles (Node *s,int level=0); - unsigned long getCountDirs (Node *s,int level=0); - - PWw *pww; //Pease Wait Window :-) - - private: - Node *root; - - Node *getMOnPos (int p); - - int scanFsToNode (QString *what,Node *to); - int scanFileProp (QFileInfo *fi,DBFile *fc); - - public: - - /* - funtions /below/ for make import from another formats: - The get.. function try to specify a node and return that node's pointer. - If the return value is NULL the node is not exist in that environment - (environment: catalog/needn't to specify of course/ in case getMedia.. - media or directory in case getDir.. - media but rather directory in case getFile.. ) - so you have to use the put... functions to make the node. - - Always test the existion a node before you try to create it !!! +class DBCatalog { //type is 1 +public: + QString name; + QString owner; + QString comment; + QString category; + + int writed; + //Writed to the disc 1=yes 0=no + + char filename[256]; + //the file name of the database. (If you opened it or save it yet.) + + QDateTime modification; + + // If the database opened from an existing file it contains + // the version of the datafile. + QString fileversion; + + void touch ( void ); + //tell to the database that you modified it, and save the modification time. + + DBCatalog ( void ); + ~DBCatalog ( void ); + + DBCatalog ( QString n,QString o,QString c,QDateTime mod=QDateTime::currentDateTime(), QString pcategory="" ); + // n:name , o:owner , c:comment, mod:modification, pcategory:category +}; + +class DBMedia { //type is 2 +public: + QString name; + //the media name, must be unique + + int number; + //the unique serial name of the media + + QString owner; + //if not defined is NULL + + int type; + // 0-unknown 1-CD 2-DVD 3-HardDisc 4-Floppy 5-NetworPlace 6-FlashDrive 7-OtherDevice + + QDateTime modification; + QString comment; + QString category; + + //Is the media borrowed? NULL=>No ; String=>Yes , contains: for who? + QString borrowing; + + DBMedia ( QString n,int nu,QString o,int t,QString c,QDateTime mod=QDateTime::currentDateTime(), QString pcategory="" ); + // n:name , nu:number o:owner , t:type , c:comment, mod:modification, pcategory:category + DBMedia ( void ); + ~DBMedia ( void ); +}; + +class DBDirectory { //type is 3 +public: + QString name; + QDateTime modification; + QString comment; + QString category; + + DBDirectory ( void ); + DBDirectory ( QString n,QDateTime mod,QString c, QString pcategory="" ); + // n:name , mod:modification , c:comment, pcategory:category + + ~DBDirectory ( void ); +}; + +class DBFile { //type is 4 +public: + QString name; + QDateTime modification; + QString comment; + QString category; + float size; + //filesize + + int sizeType; + //Tell the meaning of size 0=byte 1=Kb 2=Mb 3=Gb + + Node *prop; + //the root pointer of other Nodes. can be mp3tag of etc... + + DBFile ( void ); + DBFile ( QString n,QDateTime mod,QString c,float s,int st, QString pcategory="" ); + // n:name , mod:modification , c:comment , s:size , st:sizeType, pcategory:category + + ~DBFile ( void ); +}; + +class DBMp3Tag { //type is 5 +public: + QString artist; + QString title; + QString comment; + QString album; + QString year; + + DBMp3Tag ( void ); + DBMp3Tag ( QString a,QString t,QString c,QString al,QString y ); + //a:artist , t:title , c:commnet , al:album , y:year + + ~DBMp3Tag ( void ); +}; + +class DBContent { //type is 6 +public: + + DBContent ( void ); + DBContent ( unsigned char *pbytes,unsigned long pstoredSize ); + + ~DBContent ( void ); + + unsigned char *bytes; + unsigned long storedSize; +}; + + +class DBCatLnk { //type is 7 +public: + QString name; + char *location; + QString comment; + QString category; + + + DBCatLnk ( void ); + DBCatLnk ( QString pname,char *plocation,QString pcomment, QString pcategory="" ); + + ~DBCatLnk ( void ); +}; + + +class DataBase : public QObject { + Q_OBJECT + +public: + + DataBase ( void ); + ~DataBase ( void ); + + QString errormsg; + //If some function return with fail code, the system will be able to determine the reason of + //fail from this message. + + bool nicef; + // saving option (niceFormat) pass to the FileWriter class + + bool storeMp3tags; + // strore the mp3 tags + + bool v1_over_v2; + // true is the version 1 tag the default + + bool storeMp3techinfo; + // store mp3 technical informations: time,bitrate,freq, stereo type + + bool storeAvitechinfo; + // store avi technical informations: time,bitrate,... + + //The database will store some file's contetn if .. + bool storeContent; + // the storing enabled... + QString storedFiles; + // ; separated wildcard plattern list of files + unsigned long storeLimit; + // up to this size limitation (bytes) + + QString XML_ENCODING; + + void setDBName ( QString n ); + void setDBOwner ( QString o ); + void setComment ( QString c ); + void setCategory ( QString category ); + void setNice ( bool nic ); + + QString& getDBName ( void ); + QString& getDBOwner ( void ); + QString& getComment ( void ); + QString& getCategory ( void ); + Node *getRootNode ( void ) + { return root; } + + int saveDB ( void ); + //save the full database to the file, if the file specified before: + // The file opened or saved before this function. + + int saveAsDB ( char *filename); + //Save the full database to the specified file. + + int openDB ( char *filename ); + //Open the catalog from a file + + int insertDB ( char *filename ); + //insert a new catalog from filename into the existing catalog. + + int addMedia ( QString what,QString name,int number,int type ); + int addMedia ( QString what,QString name,int number,int type,QString owner, QString Category="" ); + //Scan a new media from the disk specified in "what" with name "name" and "number" ... + //and immediately added to the database! + + void deleteNode ( Node *d ); + + void sortM ( int mode ); + //sort the media in the catalog + + void addLnk ( const char *loc ); + + double getSize ( Node *s,int level=0 ); + unsigned long getCountFiles ( Node *s,int level=0 ); + unsigned long getCountDirs ( Node *s,int level=0 ); + + PWw *pww; //Pease Wait Window :-) + +private: + Node *root; + + Node *getMOnPos ( int p ); + + int scanFsToNode ( QString what,Node *to ); + int scanFileProp ( QFileInfo *fi,DBFile *fc ); + + bool showProgressedFileInStatus; + + QString pcategory; - example: - you want to add "MY_CD/install/sources/cdcat.tar.bz2" where is MY_CD is the media name: - - Node *env,*curr; - curr = getMediaNode("MY_CD"); - if(curr == NULL) curr = putMediaNode("MY_CD", ... ); - - env = curr; - - curr = getDirectoryNode(env,"install"); - if(curr == NULL) curr = putDirectoryNode(env,"install", ... ); - - env = curr; //we want to search/insert the "sources" directory in "install" directory. - - curr = getDirectoryNode(env,"sources"); - if(curr == NULL) curr = putDirectoryNode(env,"sources", ... ); - - env = curr; - - curr = getFileNode(env,"cdcat.tar.bz2"); - if(curr == NULL) curr = putFileNode(env,"cdcat.tar.bz2", ... ); - */ - - Node * getMediaNode(char *name); - Node * putMediaNode(char *name,int number,char *owner,int type,char *comment); - Node * getMediaNode(int id); - - //step only one directory with one call! - //the meddir can be media or directoy depend it's will be the first directory or not. - Node * getDirectoryNode(Node *meddir,char *name); - Node * putDirectoryNode(Node *meddir,char *name,char *modification,char *comment); - - Node * getFileNode(Node *directory,char *name); - Node * putFileNode(Node *directory,char *name,char *modification,char *comment,int sizeType,float size); - - Node * putTagInfo (Node *file,char *artist,char *title,char *comment,char *album,char *year); - - - }; + +public: + + /* + funtions /below/ for make import from another formats: + The get.. function try to specify a node and return that node's pointer. + If the return value is NULL the node is not exist in that environment + (environment: catalog/needn't to specify of course/ in case getMedia.. + media or directory in case getDir.. + media but rather directory in case getFile.. ) + so you have to use the put... functions to make the node. + + Always test the existion a node before you try to create it !!! + + example: + you want to add "MY_CD/install/sources/cdcat.tar.bz2" where is MY_CD is the media name: + + Node *env,*curr; + curr = getMediaNode("MY_CD"); + if(curr == NULL) curr = putMediaNode("MY_CD", ... ); + + env = curr; + + curr = getDirectoryNode(env,"install"); + if(curr == NULL) curr = putDirectoryNode(env,"install", ... ); + + env = curr; //we want to search/insert the "sources" directory in "install" directory. + + curr = getDirectoryNode(env,"sources"); + if(curr == NULL) curr = putDirectoryNode(env,"sources", ... ); + + env = curr; + + curr = getFileNode(env,"cdcat.tar.bz2"); + if(curr == NULL) curr = putFileNode(env,"cdcat.tar.bz2", ... ); + */ + + Node * getMediaNode ( QString name ); + Node * putMediaNode ( QString name,int number,QString owner,int type,QString comment, QDateTime modification, QString category="" ); + Node * getMediaNode ( int id ); + + //step only one directory with one call! + //the meddir can be media or directoy depend it's will be the first directory or not. + Node * getDirectoryNode ( Node *meddir,QString name ); + Node * putDirectoryNode ( Node *meddir,QString name,QDateTime modification,QString comment, QString category="" ); + + Node * getFileNode ( Node *directory,QString name ); + Node * putFileNode ( Node *directory,QString name,QDateTime modification,QString comment,int sizeType,float size, QString category="" ); + + Node * putTagInfo ( Node *file,QString artist,QString title,QString comment,QString album,QString year ); + + void setShowProgressedFileInStatus(bool showProgressedFileInStatus); + + signals: + void pathScanned(QString path); + +}; -char *getTime (QDateTime dt); -char *getCurrentTime (void); +//char *getTime (QDateTimeTime dt); ??? +//char *getCurrentTime (void); ??? #endif diff -Nru cdcat-1.01b/src/dirview.cpp cdcat-1.2/src/dirview.cpp --- cdcat-1.01b/src/dirview.cpp 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/dirview.cpp 2010-11-24 10:14:27.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** - Hyper's CD Catalog + Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -14,13 +14,15 @@ #include #include #include -#include +#include #include -#include +#include #include #include -#include +#include #include +//Added by qt3to4: +#include #include "dirview.h" #include "icons.h" @@ -31,112 +33,104 @@ * *****************************************************************************/ -Directory::Directory( Directory * parent, const QString& filename ) - : QListViewItem( parent ), f(filename), - pix( 0 ) -{ +Directory::Directory ( Directory * parent, const QString& filename ) + : Q3ListViewItem ( parent ), f ( filename ), + pix ( 0 ) { p = parent; - readable = QDir( fullName() ).isReadable(); + readable = QDir ( fullName() ).isReadable(); if ( !readable ) - setPixmap( get_v_folderlocked_icon() ); + setPixmap ( get_v_folderlocked_icon() ); else - setPixmap( get_v_folderclosed_icon() ); + setPixmap ( get_v_folderclosed_icon() ); } -Directory::Directory( QListView * parent, const QString& filename ) - : QListViewItem( parent ), f(filename), - pix( 0 ) -{ +Directory::Directory ( Q3ListView * parent, const QString& filename ) + : Q3ListViewItem ( parent ), f ( filename ), + pix ( 0 ) { p = 0; - readable = QDir( fullName() ).isReadable(); + readable = QDir ( fullName() ).isReadable(); } -void Directory::setPixmap( QPixmap *px ) -{ +void Directory::setPixmap ( QPixmap *px ) { pix = px; setup(); - widthChanged( 0 ); + widthChanged ( 0 ); invalidateHeight(); repaint(); } -const QPixmap *Directory::pixmap( int i ) const -{ +const QPixmap *Directory::pixmap ( int i ) const { if ( i ) - return 0; + return 0; return pix; } -void Directory::setOpen( bool o ) -{ +void Directory::setOpen ( bool o ) { if ( o ) - setPixmap( get_v_folderopen_icon() ); + setPixmap ( get_v_folderopen_icon() ); else - setPixmap( get_v_folderclosed_icon() ); + setPixmap ( get_v_folderclosed_icon() ); if ( o && !childCount() ) { - QString s( fullName() ); - QDir thisDir( s ); - if ( !thisDir.isReadable() ) { - readable = FALSE; - setExpandable( FALSE ); - return; - } - - listView()->setUpdatesEnabled( FALSE ); - const QFileInfoList * files = thisDir.entryInfoList(); - if ( files ) { - QFileInfoListIterator it( *files ); - QFileInfo * fi; - while( (fi=it.current()) != 0 ) { - ++it; - if ( fi->fileName() == "." || fi->fileName() == ".." ) - ; // nothing - else if ( fi->isDir() ) - (void)new Directory( this, fi->fileName() ); - else ; - } - } - listView()->setUpdatesEnabled( TRUE ); + QString s ( fullName() ); + QDir thisDir ( s ); + if ( !thisDir.isReadable() ) { + readable = FALSE; + setExpandable ( FALSE ); + return; + } + + listView()->setUpdatesEnabled ( FALSE ); + QFileInfoList *files = new QFileInfoList ( thisDir.entryInfoList() ); + if ( files ) { + for ( int i = 0; i < files->size(); ++i ) { + QFileInfo *fi = new QFileInfo ( files->at ( i ) ); + if ( fi->fileName() == "." || fi->fileName() == ".." ) { + ; // nothing + } else if ( fi->isDir() ) { + ( void ) new Directory ( this, fi->fileName() ); + } else { + ; + } + } + } + listView()->setUpdatesEnabled ( TRUE ); } - QListViewItem::setOpen( o ); + Q3ListViewItem::setOpen ( o ); } -void Directory::setup() -{ - setExpandable( TRUE ); - QListViewItem::setup(); +void Directory::setup() { + setExpandable ( TRUE ); + Q3ListViewItem::setup(); } -QString Directory::fullName() -{ +QString Directory::fullName() { QString s; if ( p ) { - s = p->fullName(); - s.append( f.name() ); - s.append( "/" ); + s = p->fullName(); + s.append ( f.name() ); + s.append ( "/" ); } else { - s = f.name(); + s = f.name(); } return s; } -QString Directory::text( int column ) const -{ +QString Directory::text ( int column ) const { if ( column == 0 ) - return f.name(); + return f.name(); else if ( readable ) - return QObject::tr("Directory"); + return QObject::tr ( "Directory" ); else - return QObject::tr("Unreadable Directory"); - return ""; + return QObject::tr ( "Unreadable Directory" ); + return ""; } /***************************************************************************** @@ -145,155 +139,146 @@ * *****************************************************************************/ -DirectoryView::DirectoryView( QWidget *parent, const char *name) - : QListView( parent, name ), oldCurrent( 0 ), - dropItem( 0 ), mousePressed( FALSE ) -{ - autoopen_timer = new QTimer( this ); - - setShowSortIndicator(true); - connect( this, SIGNAL( doubleClicked( QListViewItem * ) ), - this, SLOT( slotFolderSelected( QListViewItem * ) ) ); - - connect( this, SIGNAL(pressed( QListViewItem * ) ), - this, SLOT( slotFolderSelectedR( QListViewItem * ) ) ); - - connect( this, SIGNAL( returnPressed( QListViewItem * ) ), - this, SLOT( slotFolderSelectedR( QListViewItem * ) ) ); - - setAcceptDrops( TRUE ); - viewport()->setAcceptDrops( TRUE ); - - connect( autoopen_timer, SIGNAL( timeout() ), - this, SLOT( openFolder() ) ); - - addColumn(tr("Name")); - setTreeStepSize(10); - - const QFileInfoList *roots=QDir::drives(); - QListIterator i(*roots); - QFileInfo* fi; -#ifdef _WIN32 - ++i; //Skip reading floppy drive on startup. -#endif - while ( (fi = *i) ) { - ++i; - Directory * root = new Directory( this, fi->filePath() ); - if(roots->count() <= 1) - root->setOpen( TRUE ); // be interesting - } - setAllColumnsShowFocus( TRUE ); +DirectoryView::DirectoryView ( QWidget *parent, const char *name ) + : Q3ListView ( parent, name ), oldCurrent ( 0 ),dropItem ( 0 ), mousePressed ( FALSE ) { + + autoopen_timer = new QTimer ( this ); + + setShowSortIndicator ( true ); + connect ( this, SIGNAL ( doubleClicked ( Q3ListViewItem * ) ), + this, SLOT ( slotFolderSelected ( Q3ListViewItem * ) ) ); + + connect ( this, SIGNAL ( pressed ( Q3ListViewItem * ) ), + this, SLOT ( slotFolderSelectedR ( Q3ListViewItem * ) ) ); + + connect ( this, SIGNAL ( returnPressed ( Q3ListViewItem * ) ), + this, SLOT ( slotFolderSelectedR ( Q3ListViewItem * ) ) ); + + setAcceptDrops ( TRUE ); + viewport()->setAcceptDrops ( TRUE ); + + connect ( autoopen_timer, SIGNAL ( timeout() ), + this, SLOT ( openFolder() ) ); + + addColumn ( tr ( "Name" ) ); + setTreeStepSize ( 10 ); + + QFileInfoList *roots=new QFileInfoList ( QDir::drives() ); +//#ifdef _WIN32 +// ++i; //Skip reading floppy drive on startup. +//#endif + + for ( int ri = 0; ri < roots->size(); ++ri ) { + QFileInfo *fi = new QFileInfo ( roots->at ( ri ) ); + Directory * root = new Directory ( this, fi->filePath() ); + if ( roots->count() >= 1 ) + root->setOpen ( TRUE ); + } + + setAllColumnsShowFocus ( TRUE ); repaint(); sDir = ""; + } -void DirectoryView::slotFolderSelected( QListViewItem *i ) -{ - if(i==NULL) return; - Directory *dir = (Directory*)i; - emit folderSelected( dir->fullName() ); +void DirectoryView::slotFolderSelected ( Q3ListViewItem *i ) { + if ( i==NULL ) return; + Directory *dir = ( Directory* ) i; + emit folderSelected ( dir->fullName() ); } -void DirectoryView::slotFolderSelectedR( QListViewItem *i ) -{ - if(i==NULL) return; - Directory *dir = (Directory*)i; +void DirectoryView::slotFolderSelectedR ( Q3ListViewItem *i ) { + if ( i==NULL ) return; + Directory *dir = ( Directory* ) i; sDir = dir->fullName(); - emit folderSelected( dir->fullName() ); + emit folderSelected ( dir->fullName() ); } -void DirectoryView::openFolder() -{ +void DirectoryView::openFolder() { autoopen_timer->stop(); if ( dropItem && !dropItem->isOpen() ) { - dropItem->setOpen( TRUE ); - dropItem->repaint(); + dropItem->setOpen ( TRUE ); + dropItem->repaint(); } } static const int autoopenTime = 750; -QString DirectoryView::fullPath(QListViewItem* item) -{ - QString fullpath = item->text(0); - while ( (item=item->parent()) ) { - if ( item->parent() ) - fullpath = item->text(0) + "/" + fullpath; - else - fullpath = item->text(0) + fullpath; +QString DirectoryView::fullPath ( Q3ListViewItem* item ) { + QString fullpath = item->text ( 0 ); + while ( ( item=item->parent() ) ) { + if ( item->parent() ) + fullpath = item->text ( 0 ) + "/" + fullpath; + else + fullpath = item->text ( 0 ) + fullpath; } return fullpath; } -void DirectoryView::contentsMousePressEvent( QMouseEvent* e ) -{ - QListView::contentsMousePressEvent(e); - QPoint p( contentsToViewport( e->pos() ) ); - QListViewItem *i = itemAt( p ); +void DirectoryView::contentsMousePressEvent ( QMouseEvent* e ) { + Q3ListView::contentsMousePressEvent ( e ); + QPoint p ( contentsToViewport ( e->pos() ) ); + Q3ListViewItem *i = itemAt ( p ); if ( i ) { - // if the user clicked into the root decoration of the item, don't try to start a drag! - if ( p.x() > header()->cellPos( header()->mapToActual( 0 ) ) + - treeStepSize() * ( i->depth() + ( rootIsDecorated() ? 1 : 0) ) + itemMargin() || - p.x() < header()->cellPos( header()->mapToActual( 0 ) ) ) { - presspos = e->pos(); - mousePressed = TRUE; - } + // if the user clicked into the root decoration of the item, don't try to start a drag! + if ( p.x() > header()->cellPos ( header()->mapToActual ( 0 ) ) + + treeStepSize() * ( i->depth() + ( rootIsDecorated() ? 1 : 0 ) ) + itemMargin() || + p.x() < header()->cellPos ( header()->mapToActual ( 0 ) ) ) { + presspos = e->pos(); + mousePressed = TRUE; + } } - + } -void DirectoryView::contentsMouseReleaseEvent( QMouseEvent * ) -{ +void DirectoryView::contentsMouseReleaseEvent ( QMouseEvent * ) { mousePressed = FALSE; } -void DirectoryView::setDir( const QString &s ) -{ - QListViewItemIterator it( this ); +void DirectoryView::setDir ( const QString &s ) { + Q3ListViewItemIterator it ( this ); ++it; for ( ; it.current(); ++it ) { - it.current()->setOpen( FALSE ); + it.current()->setOpen ( FALSE ); } - QStringList lst( QStringList::split( -#ifdef _WIN32 - "\\" + QStringList lst ( QStringList::split ( +#ifdef _WIN32 + "\\" #else - "/" -#endif - , s ) ); - - QListViewItem *item = firstChild(); + "/" +#endif + , s ) ); + + Q3ListViewItem *item = firstChild(); QStringList::Iterator it2 = lst.begin(); for ( ; it2 != lst.end(); ++it2 ) { - while ( item ) { - if ( item->text( 0 ) == *it2 ) { - item->setOpen( TRUE ); - break; - } - item = item->itemBelow(); - } + while ( item ) { + if ( item->text ( 0 ) == *it2 ) { + item->setOpen ( TRUE ); + break; + } + item = item->itemBelow(); + } } if ( item ) - setCurrentItem( item ); + setCurrentItem ( item ); } -void FileItem::setPixmap( QPixmap *p ) -{ +void FileItem::setPixmap ( QPixmap *p ) { pix = p; setup(); - widthChanged( 0 ); + widthChanged ( 0 ); invalidateHeight(); repaint(); } -const QPixmap *FileItem::pixmap( int i ) const -{ +const QPixmap *FileItem::pixmap ( int i ) const { if ( i ) - return 0; + return 0; return pix; } diff -Nru cdcat-1.01b/src/dirview.h cdcat-1.2/src/dirview.h --- cdcat-1.01b/src/dirview.h 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/dirview.h 2010-11-24 08:11:08.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** - Hyper's CD Catalog + Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -11,11 +11,18 @@ #ifndef DIRVIEW_H #define DIRVIEW_H -#include +#include #include #include #include #include +//Added by qt3to4: +#include +#include +#include +#include +#include +#include class MainWidget; class QWidget; @@ -24,37 +31,35 @@ class QDragLeaveEvent; class QDropEvent; -class FileItem : public QListViewItem -{ +class FileItem : public Q3ListViewItem { public: - FileItem( QListViewItem *parent, const QString &s1, const QString &s2 ) - : QListViewItem( parent, s1, s2 ), pix( 0 ) {} + FileItem ( Q3ListViewItem *parent, const QString &s1, const QString &s2 ) + : Q3ListViewItem ( parent, s1, s2 ), pix ( 0 ) {} - const QPixmap *pixmap( int i ) const; - void setPixmap( QPixmap *p ); + const QPixmap *pixmap ( int i ) const; + void setPixmap ( QPixmap *p ); private: QPixmap *pix; }; -class Directory : public QListViewItem -{ +class Directory : public Q3ListViewItem { public: - Directory( QListView * parent, const QString& filename ); - Directory( Directory * parent, const QString& filename, const QString &col2 ) - : QListViewItem( parent, filename, col2 ), pix( 0 ) {} - Directory( Directory * parent, const QString& filename ); + Directory ( Q3ListView * parent, const QString& filename ); + Directory ( Directory * parent, const QString& filename, const QString &col2 ) + : Q3ListViewItem ( parent, filename, col2 ), pix ( 0 ) {} + Directory ( Directory * parent, const QString& filename ); - QString text( int column ) const; + QString text ( int column ) const; QString fullName(); - void setOpen( bool ); + void setOpen ( bool ); void setup(); - const QPixmap *pixmap( int i ) const; - void setPixmap( QPixmap *p ); + const QPixmap *pixmap ( int i ) const; + void setPixmap ( QPixmap *p ); private: QFile f; @@ -64,33 +69,32 @@ }; -class DirectoryView : public QListView -{ +class DirectoryView : public Q3ListView { Q_OBJECT public: - DirectoryView( QWidget *parent = 0, const char *name = 0 ); + DirectoryView ( QWidget *parent = 0, const char *name = 0 ); QString sDir; - + public slots: - void setDir( const QString & ); + void setDir ( const QString & ); signals: - void folderSelected( const QString & ); + void folderSelected ( const QString & ); protected slots: - void slotFolderSelected( QListViewItem * ); - void slotFolderSelectedR( QListViewItem * ); + void slotFolderSelected ( Q3ListViewItem * ); + void slotFolderSelectedR ( Q3ListViewItem * ); void openFolder(); protected: - void contentsMousePressEvent( QMouseEvent *e ); - void contentsMouseReleaseEvent( QMouseEvent *e ); + void contentsMousePressEvent ( QMouseEvent *e ); + void contentsMouseReleaseEvent ( QMouseEvent *e ); private: - QString fullPath(QListViewItem* item); - QListViewItem *oldCurrent; - QListViewItem *dropItem; + QString fullPath ( Q3ListViewItem* item ); + Q3ListViewItem *oldCurrent; + Q3ListViewItem *dropItem; QTimer* autoopen_timer; QPoint presspos; bool mousePressed; diff -Nru cdcat-1.01b/src/dmetaph.cpp cdcat-1.2/src/dmetaph.cpp --- cdcat-1.01b/src/dmetaph.cpp 1970-01-01 00:00:00.000000000 +0000 +++ cdcat-1.2/src/dmetaph.cpp 2011-02-10 11:08:23.000000000 +0000 @@ -0,0 +1,872 @@ +//////////////////////////////////////////////////////////////////////////////// +// Double Metaphone (c) 1998, 1999 by Lawrence Philips +// +// +//////////////////////////////////////////////////////////////////////////////// +#include "dmetaph.h" + +#define AND && +#define OR || + +//////////////////////////////////////////////////////////////////////////////// +// +//////////////////////////////////////////////////////////////////////////////// +MString::MString() : maxlength (4) +{ +} + +//////////////////////////////////////////////////////////////////////////////// +// +//////////////////////////////////////////////////////////////////////////////// +MString::MString(const char* in, const int max) : QString(in), maxlength (max) +{ +} + +//////////////////////////////////////////////////////////////////////////////// +// +//////////////////////////////////////////////////////////////////////////////// +MString::MString(const QString& in, const int max) : QString(in), maxlength (max) +{ +} + + +//////////////////////////////////////////////////////////////////////////////// +// +//////////////////////////////////////////////////////////////////////////////// +bool MString::SlavoGermanic() +{ + + if((indexOf('W') > -1) OR (indexOf('K') > -1) OR (indexOf("CZ") > -1) OR (indexOf("WITZ") > -1)) + return TRUE; + + return FALSE; +} + +//////////////////////////////////////////////////////////////////////////////// +// +//////////////////////////////////////////////////////////////////////////////// +bool MString::IsVowel(int pos) +{ + + if((pos < 0) OR (pos >= size())) + return false; + + QChar it = at(pos); + + if((it == 'A') OR (it == 'E') OR (it == 'I') OR (it == 'O') OR (it == 'U') OR (it == 'Y') ) + return true; + + return false; +} +//////////////////////////////////////////////////////////////////////////////// +// +//////////////////////////////////////////////////////////////////////////////// + + +inline void MString::MetaphAdd(const char* main) +{ + if(*main) + { + primary += main; + secondary += main; + } +} + +//////////////////////////////////////////////////////////////////////////////// +// +//////////////////////////////////////////////////////////////////////////////// +inline void MString::MetaphAdd(const char* main, const char* alt) +{ + if(*main) + primary += main; + if(*alt) + { + alternate = TRUE; + if(alt[0] != ' ') + secondary += alt; + }else + if(*main AND (main[0] != ' ')) + secondary += main; +} + + + +//////////////////////////////////////////////////////////////////////////////// +// +//////////////////////////////////////////////////////////////////////////////// +bool MString::StringAt(int start, int len, ... ) +{ + + if (start < 0) return FALSE; + + char buffer[64]; + char* test; + QString target; + + test = buffer; + + target = mid(start, len); + + va_list sstrings; + va_start(sstrings, len); + + do + { + test = va_arg(sstrings, char*); + if(*test AND (target == test)) + return true; + + }while(strcmp(test, "")); + + va_end(sstrings); + + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// main deal +//////////////////////////////////////////////////////////////////////////////// +void MString::DoubleMetaphone(QString &metaph, QString &metaph2) +{ + + int current = 0; + + int len = size(); + if(len < 1) + return; + last = len - 1;//zero based index + + alternate = FALSE; + + //this=MString(toUpper()); + + QString upper(toUpper()); + this->clear(); + this->replace(QString(this->toStdString().c_str()), upper); + //this = MString(upper, upper.size()); + + + //pad the original string so that we can index beyond the edge of the world + insert(size(), " "); + + + //skip these when at start of word + if(StringAt(0, 2, "GN", "KN", "PN", "WR", "PS", "")) + current += 1; + + //Initial 'X' is pronounced 'Z' e.g. 'Xavier' + if(at(0) == 'X') + { + MetaphAdd("S"); //'Z' maps to 'S' + current += 1; + } + + ///////////main loop////////////////////////// + while((primary.size() < maxlength) OR (secondary.size() < maxlength)) + { + if(current >= len) + break; + + switch(at(current).toAscii()) + { + case 'A': + case 'E': + case 'I': + case 'O': + case 'U': + case 'Y': + if(current == 0) + //all init vowels now map to 'A' + MetaphAdd("A"); + current +=1; + break; + + case 'B': + + //"-mb", e.g", "dumb", already skipped over... + MetaphAdd("P"); + + if(at(current + 1) == 'B') + current +=2; + else + current +=1; + break; + + case '\xC7': + MetaphAdd("S"); + current += 1; + break; + + case 'C': + //various germanic + if((current > 1) + AND !IsVowel(current - 2) + AND StringAt((current - 1), 3, "ACH", "") + AND ((at(current + 2) != 'I') AND ((at(current + 2) != 'E') + OR StringAt((current - 2), 6, "BACHER", "MACHER", "")) )) + { + MetaphAdd("K"); + current +=2; + break; + } + + //special case 'caesar' + if((current == 0) AND StringAt(current, 6, "CAESAR", "")) + { + MetaphAdd("S"); + current +=2; + break; + } + + //italian 'chianti' + if(StringAt(current, 4, "CHIA", "")) + { + MetaphAdd("K"); + current +=2; + break; + } + + if(StringAt(current, 2, "CH", "")) + { + //find 'michael' + if((current > 0) AND StringAt(current, 4, "CHAE", "")) + { + MetaphAdd("K", "X"); + current +=2; + break; + } + + //greek roots e.g. 'chemistry', 'chorus' + if((current == 0) + AND (StringAt((current + 1), 5, "HARAC", "HARIS", "") + OR StringAt((current + 1), 3, "HOR", "HYM", "HIA", "HEM", "")) + AND !StringAt(0, 5, "CHORE", "")) + { + MetaphAdd("K"); + current +=2; + break; + } + + //germanic, greek, or otherwise 'ch' for 'kh' sound + if((StringAt(0, 4, "VAN ", "VON ", "") OR StringAt(0, 3, "SCH", "")) + // 'architect but not 'arch', 'orchestra', 'orchid' + OR StringAt((current - 2), 6, "ORCHES", "ARCHIT", "ORCHID", "") + OR StringAt((current + 2), 1, "T", "S", "") + OR ((StringAt((current - 1), 1, "A", "O", "U", "E", "") OR (current == 0)) + //e.g., 'wachtler', 'wechsler', but not 'tichner' + AND StringAt((current + 2), 1, "L", "R", "N", "M", "B", "H", "F", "V", "W", " ", ""))) + { + MetaphAdd("K"); + }else{ + if(current > 0) + { + if(StringAt(0, 2, "MC", "")) + //e.g., "McHugh" + MetaphAdd("K"); + else + MetaphAdd("X", "K"); + }else + MetaphAdd("X"); + } + current +=2; + break; + } + //e.g, 'czerny' + if(StringAt(current, 2, "CZ", "") AND !StringAt((current - 2), 4, "WICZ", "")) + { + MetaphAdd("S", "X"); + current += 2; + break; + } + + //e.g., 'focaccia' + if(StringAt((current + 1), 3, "CIA", "")) + { + MetaphAdd("X"); + current += 3; + break; + } + + //double 'C', but not if e.g. 'McClellan' + if(StringAt(current, 2, "CC", "") AND !((current == 1) AND (at(0) == 'M'))) + //'bellocchio' but not 'bacchus' + if(StringAt((current + 2), 1, "I", "E", "H", "") AND !StringAt((current + 2), 2, "HU", "")) + { + //'accident', 'accede' 'succeed' + if(((current == 1) AND (at(current - 1) == 'A')) + OR StringAt((current - 1), 5, "UCCEE", "UCCES", "")) + MetaphAdd("KS"); + //'bacci', 'bertucci', other italian + else + MetaphAdd("X"); + current += 3; + break; + }else{//Pierce's rule + MetaphAdd("K"); + current += 2; + break; + } + + if(StringAt(current, 2, "CK", "CG", "CQ", "")) + { + MetaphAdd("K"); + current += 2; + break; + } + + if(StringAt(current, 2, "CI", "CE", "CY", "")) + { + //italian vs. english + if(StringAt(current, 3, "CIO", "CIE", "CIA", "")) + MetaphAdd("S", "X"); + else + MetaphAdd("S"); + current += 2; + break; + } + + //else + MetaphAdd("K"); + + //name sent in 'mac caffrey', 'mac gregor + if(StringAt((current + 1), 2, " C", " Q", " G", "")) + current += 3; + else + if(StringAt((current + 1), 1, "C", "K", "Q", "") + AND !StringAt((current + 1), 2, "CE", "CI", "")) + current += 2; + else + current += 1; + break; + + case 'D': + if(StringAt(current, 2, "DG", "")) + if(StringAt((current + 2), 1, "I", "E", "Y", "")) + { + //e.g. 'edge' + MetaphAdd("J"); + current += 3; + break; + }else{ + //e.g. 'edgar' + MetaphAdd("TK"); + current += 2; + break; + } + + if(StringAt(current, 2, "DT", "DD", "")) + { + MetaphAdd("T"); + current += 2; + break; + } + + //else + MetaphAdd("T"); + current += 1; + break; + + case 'F': + if(at(current + 1) == 'F') + current += 2; + else + current += 1; + MetaphAdd("F"); + break; + + case 'G': + if(at(current + 1) == 'H') + { + if((current > 0) AND !IsVowel(current - 1)) + { + MetaphAdd("K"); + current += 2; + break; + } + + if(current < 3) + { + //'ghislane', ghiradelli + if(current == 0) + { + if(at(current + 2) == 'I') + MetaphAdd("J"); + else + MetaphAdd("K"); + current += 2; + break; + } + } + //Parker's rule (with some further refinements) - e.g., 'hugh' + if(((current > 1) AND StringAt((current - 2), 1, "B", "H", "D", "") ) + //e.g., 'bough' + OR ((current > 2) AND StringAt((current - 3), 1, "B", "H", "D", "") ) + //e.g., 'broughton' + OR ((current > 3) AND StringAt((current - 4), 1, "B", "H", "") ) ) + { + current += 2; + break; + }else{ + //e.g., 'laugh', 'McLaughlin', 'cough', 'gough', 'rough', 'tough' + if((current > 2) + AND (at(current - 1) == 'U') + AND StringAt((current - 3), 1, "C", "G", "L", "R", "T", "") ) + { + MetaphAdd("F"); + }else + if((current > 0) AND at(current - 1) != 'I') + MetaphAdd("K"); + + current += 2; + break; + } + } + + if(at(current + 1) == 'N') + { + if((current == 1) AND IsVowel(0) AND !SlavoGermanic()) + { + MetaphAdd("KN", "N"); + }else + //not e.g. 'cagney' + if(!StringAt((current + 2), 2, "EY", "") + AND (at(current + 1) != 'Y') AND !SlavoGermanic()) + { + MetaphAdd("N", "KN"); + }else + MetaphAdd("KN"); + current += 2; + break; + } + + //'tagliaro' + if(StringAt((current + 1), 2, "LI", "") AND !SlavoGermanic()) + { + MetaphAdd("KL", "L"); + current += 2; + break; + } + + //-ges-,-gep-,-gel-, -gie- at beginning + if((current == 0) + AND ((at(current + 1) == 'Y') + OR StringAt((current + 1), 2, "ES", "EP", "EB", "EL", "EY", "IB", "IL", "IN", "IE", "EI", "ER", "")) ) + { + MetaphAdd("K", "J"); + current += 2; + break; + } + + // -ger-, -gy- + if((StringAt((current + 1), 2, "ER", "") OR (at(current + 1) == 'Y')) + AND !StringAt(0, 6, "DANGER", "RANGER", "MANGER", "") + AND !StringAt((current - 1), 1, "E", "I", "") + AND !StringAt((current - 1), 3, "RGY", "OGY", "") ) + { + MetaphAdd("K", "J"); + current += 2; + break; + } + + // italian e.g, 'biaggi' + if(StringAt((current + 1), 1, "E", "I", "Y", "") OR StringAt((current - 1), 4, "AGGI", "OGGI", "")) + { + //obvious germanic + if((StringAt(0, 4, "VAN ", "VON ", "") OR StringAt(0, 3, "SCH", "")) + OR StringAt((current + 1), 2, "ET", "")) + MetaphAdd("K"); + else + //always soft if french ending + if(StringAt((current + 1), 4, "IER ", "")) + MetaphAdd("J"); + else + MetaphAdd("J", "K"); + current += 2; + break; + } + + if(at(current + 1) == 'G') + current += 2; + else + current += 1; + MetaphAdd("K"); + break; + + case 'H': + //only keep if first & before vowel or btw. 2 vowels + if(((current == 0) OR IsVowel(current - 1)) + AND IsVowel(current + 1)) + { + MetaphAdd("H"); + current += 2; + }else//also takes care of 'HH' + current += 1; + break; + + case 'J': + //obvious spanish, 'jose', 'san jacinto' + if(StringAt(current, 4, "JOSE", "") OR StringAt(0, 4, "SAN ", "") ) + { + if(((current == 0) AND (at(current + 4) == ' ')) OR StringAt(0, 4, "SAN ", "") ) + MetaphAdd("H"); + else + { + MetaphAdd("J", "H"); + } + current +=1; + break; + } + + if((current == 0) AND !StringAt(current, 4, "JOSE", "")) + MetaphAdd("J", "A");//Yankelovich/Jankelowicz + else + //spanish pron. of e.g. 'bajador' + if(IsVowel(current - 1) + AND !SlavoGermanic() + AND ((at(current + 1) == 'A') OR (at(current + 1) == 'O'))) + MetaphAdd("J", "H"); + else + if(current == last) + MetaphAdd("J", " "); + else + if(!StringAt((current + 1), 1, "L", "T", "K", "S", "N", "M", "B", "Z", "") + AND !StringAt((current - 1), 1, "S", "K", "L", "")) + MetaphAdd("J"); + + if(at(current + 1) == 'J')//it could happen! + current += 2; + else + current += 1; + break; + + case 'K': + if(at(current + 1) == 'K') + current += 2; + else + current += 1; + MetaphAdd("K"); + break; + + case 'L': + if(at(current + 1) == 'L') + { + //spanish e.g. 'cabrillo', 'gallegos' + if(((current == (len - 3)) + AND StringAt((current - 1), 4, "ILLO", "ILLA", "ALLE", "")) + OR ((StringAt((last - 1), 2, "AS", "OS", "") OR StringAt(last, 1, "A", "O", "")) + AND StringAt((current - 1), 4, "ALLE", "")) ) + { + MetaphAdd("L", " "); + current += 2; + break; + } + current += 2; + }else + current += 1; + MetaphAdd("L"); + break; + + case 'M': + if((StringAt((current - 1), 3, "UMB", "") + AND (((current + 1) == last) OR StringAt((current + 2), 2, "ER", ""))) + //'dumb','thumb' + OR (at(current + 1) == 'M') ) + current += 2; + else + current += 1; + MetaphAdd("M"); + break; + + case 'N': + if(at(current + 1) == 'N') + current += 2; + else + current += 1; + MetaphAdd("N"); + break; + + case '\xD1': + current += 1; + MetaphAdd("N"); + break; + + case 'P': + if(at(current + 1) == 'H') + { + MetaphAdd("F"); + current += 2; + break; + } + + //also account for "campbell", "raspberry" + if(StringAt((current + 1), 1, "P", "B", "")) + current += 2; + else + current += 1; + MetaphAdd("P"); + break; + + case 'Q': + if(at(current + 1) == 'Q') + current += 2; + else + current += 1; + MetaphAdd("K"); + break; + + case 'R': + //french e.g. 'rogier', but exclude 'hochmeier' + if((current == last) + AND !SlavoGermanic() + AND StringAt((current - 2), 2, "IE", "") + AND !StringAt((current - 4), 2, "ME", "MA", "")) + MetaphAdd("", "R"); + else + MetaphAdd("R"); + + if(at(current + 1) == 'R') + current += 2; + else + current += 1; + break; + + case 'S': + //special cases 'island', 'isle', 'carlisle', 'carlysle' + if(StringAt((current - 1), 3, "ISL", "YSL", "")) + { + current += 1; + break; + } + + //special case 'sugar-' + if((current == 0) AND StringAt(current, 5, "SUGAR", "")) + { + MetaphAdd("X", "S"); + current += 1; + break; + } + + if(StringAt(current, 2, "SH", "")) + { + //germanic + if(StringAt((current + 1), 4, "HEIM", "HOEK", "HOLM", "HOLZ", "")) + MetaphAdd("S"); + else + MetaphAdd("X"); + current += 2; + break; + } + + //italian & armenian + if(StringAt(current, 3, "SIO", "SIA", "") OR StringAt(current, 4, "SIAN", "")) + { + if(!SlavoGermanic()) + MetaphAdd("S", "X"); + else + MetaphAdd("S"); + current += 3; + break; + } + + //german & anglicisations, e.g. 'smith' match 'schmidt', 'snider' match 'schneider' + //also, -sz- in slavic language altho in hungarian it is pronounced 's' + if(((current == 0) + AND StringAt((current + 1), 1, "M", "N", "L", "W", "")) + OR StringAt((current + 1), 1, "Z", "")) + { + MetaphAdd("S", "X"); + if(StringAt((current + 1), 1, "Z", "")) + current += 2; + else + current += 1; + break; + } + + if(StringAt(current, 2, "SC", "")) + { + //Schlesinger's rule + if(at(current + 2) == 'H') + //dutch origin, e.g. 'school', 'schooner' + if(StringAt((current + 3), 2, "OO", "ER", "EN", "UY", "ED", "EM", "")) + { + //'schermerhorn', 'schenker' + if(StringAt((current + 3), 2, "ER", "EN", "")) + { + MetaphAdd("X", "SK"); + }else + MetaphAdd("SK"); + current += 3; + break; + }else{ + if((current == 0) AND !IsVowel(3) AND (at(3) != 'W')) + MetaphAdd("X", "S"); + else + MetaphAdd("X"); + current += 3; + break; + } + + if(StringAt((current + 2), 1, "I", "E", "Y", "")) + { + MetaphAdd("S"); + current += 3; + break; + } + //else + MetaphAdd("SK"); + current += 3; + break; + } + + //french e.g. 'resnais', 'artois' + if((current == last) AND StringAt((current - 2), 2, "AI", "OI", "")) + MetaphAdd("", "S"); + else + MetaphAdd("S"); + + if(StringAt((current + 1), 1, "S", "Z", "")) + current += 2; + else + current += 1; + break; + + case 'T': + if(StringAt(current, 4, "TION", "")) + { + MetaphAdd("X"); + current += 3; + break; + } + + if(StringAt(current, 3, "TIA", "TCH", "")) + { + MetaphAdd("X"); + current += 3; + break; + } + + if(StringAt(current, 2, "TH", "") + OR StringAt(current, 3, "TTH", "")) + { + //special case 'thomas', 'thames' or germanic + if(StringAt((current + 2), 2, "OM", "AM", "") + OR StringAt(0, 4, "VAN ", "VON ", "") + OR StringAt(0, 3, "SCH", "")) + { + MetaphAdd("T"); + }else{ + MetaphAdd("0", "T"); + } + current += 2; + break; + } + + if(StringAt((current + 1), 1, "T", "D", "")) + current += 2; + else + current += 1; + MetaphAdd("T"); + break; + + case 'V': + if(at(current + 1) == 'V') + current += 2; + else + current += 1; + MetaphAdd("F"); + break; + + case 'W': + //can also be in middle of word + if(StringAt(current, 2, "WR", "")) + { + MetaphAdd("R"); + current += 2; + break; + } + + if((current == 0) + AND (IsVowel(current + 1) OR StringAt(current, 2, "WH", ""))) + { + //Wasserman should match Vasserman + if(IsVowel(current + 1)) + MetaphAdd("A", "F"); + else + //need Uomo to match Womo + MetaphAdd("A"); + } + + //Arnow should match Arnoff + if(((current == last) AND IsVowel(current - 1)) + OR StringAt((current - 1), 5, "EWSKI", "EWSKY", "OWSKI", "OWSKY", "") + OR StringAt(0, 3, "SCH", "")) + { + MetaphAdd("", "F"); + current +=1; + break; + } + + //polish e.g. 'filipowicz' + if(StringAt(current, 4, "WICZ", "WITZ", "")) + { + MetaphAdd("TS", "FX"); + current +=4; + break; + } + + //else skip it + current +=1; + break; + + case 'X': + //french e.g. breaux + if(!((current == last) + AND (StringAt((current - 3), 3, "IAU", "EAU", "") + OR StringAt((current - 2), 2, "AU", "OU", ""))) ) + MetaphAdd("KS"); + + if(StringAt((current + 1), 1, "C", "X", "")) + current += 2; + else + current += 1; + break; + + case 'Z': + //chinese pinyin e.g. 'zhao' + if(at(current + 1) == 'H') + { + MetaphAdd("J"); + current += 2; + break; + }else + if(StringAt((current + 1), 2, "ZO", "ZI", "ZA", "") + OR (SlavoGermanic() AND ((current > 0) AND at(current - 1) != 'T'))) + { + MetaphAdd("S", "TS"); + } + else + MetaphAdd("S"); + + if(at(current + 1) == 'Z') + current += 2; + else + current += 1; + break; + + default: + current += 1; + } + } + + metaph = primary; + //only give back maxlength char metaph + if(metaph.length() > maxlength) + metaph = metaph.left(maxlength); + if(alternate) + { + metaph2 = secondary; + if(metaph2.length() > maxlength) + metaph2 = metaph2.left(maxlength); + } +} + diff -Nru cdcat-1.01b/src/dmetaph.h cdcat-1.2/src/dmetaph.h --- cdcat-1.01b/src/dmetaph.h 1970-01-01 00:00:00.000000000 +0000 +++ cdcat-1.2/src/dmetaph.h 2011-02-10 11:08:23.000000000 +0000 @@ -0,0 +1,25 @@ +//////////////////////////////////////////////////////////////////////////////// +// +//////////////////////////////////////////////////////////////////////////////// +#include + +class MString : public QString +{ + + int length, last; + const int maxlength; + bool alternate; + QString primary, secondary; + +public: + + MString(); + MString(const char*, const int max); + MString(const QString&, const int max); + bool SlavoGermanic(); + bool IsVowel(int pos); + inline void MetaphAdd(const char* main); + inline void MetaphAdd(const char* main, const char* alt); + bool StringAt(int start, int len, ... ); + void DoubleMetaphone(QString &metaph, QString &metaph2); +}; diff -Nru cdcat-1.01b/src/exportcdcatdb.cpp cdcat-1.2/src/exportcdcatdb.cpp --- cdcat-1.01b/src/exportcdcatdb.cpp 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/exportcdcatdb.cpp 2011-02-04 15:07:15.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Christoph Thielecke License : GPL Copyright : (C) 2003 Christoph Thielecke @@ -11,9 +11,9 @@ #include #include #include -#include +#include #include -#include +#include #include #include #include @@ -24,6 +24,10 @@ #include #include #include +//Added by qt3to4: +#include +#include +#include #include #include "icons.h" @@ -40,215 +44,219 @@ * The dialog will by default be modeless, unless you set 'modal' to * TRUE to construct a modal dialog. */ -exportCdcatDB::exportCdcatDB( QApplication *appp,DataBase *db, QWidget* parent, const char* name, bool modal, WFlags fl ) : QDialog( parent, name, modal, fl ) -{ - p = db; - app = appp; - pww = NULL; +exportCdcatDB::exportCdcatDB ( CdCatMainWidget *mainw, QWidget* parent, const char* name, bool modal, Qt::WFlags fl ) : QDialog ( parent, name, modal, fl ) { + this->mainw = mainw; + p = mainw->db; + app = mainw->app; + + pww = NULL; - if ( !name ) - setName( "exportCdcatDB" ); - setSizeGripEnabled( TRUE ); + if ( !name ) + setName ( "exportCdcatDB" ); + setSizeGripEnabled ( TRUE ); - this->setCaption( tr ("Export database...")); + this->setCaption ( tr ( "Export database..." ) ); - exportCdcatDBLayout = new QGridLayout( this, 1, 1, 12, 6, "exportCdcatDBLayout" ); + exportCdcatDBLayout = new Q3GridLayout ( this, 1, 1, 12, 6, "exportCdcatDBLayout" ); - layout32 = new QVBoxLayout( 0, 0, 6, "layout32" ); - layout21 = new QHBoxLayout( 0, 0, 6, "layout21" ); - layout10_2 = new QVBoxLayout( 0, 0, 6, "layout10_2" ); - textLabel2 = new QLabel( this, "textLabel2" ); - layout10_2->addWidget( textLabel2 ); + layout32 = new Q3VBoxLayout ( 0, 0, 6, "layout32" ); + layout21 = new Q3HBoxLayout ( 0, 0, 6, "layout21" ); + layout10_2 = new Q3VBoxLayout ( 0, 0, 6, "layout10_2" ); + textLabel2 = new QLabel ( this, "textLabel2" ); + layout10_2->addWidget ( textLabel2 ); - listAllMedia = new QListBox( this, "listAllMedia" ); - listAllMedia->setSelectionMode( QListBox::Extended ); + listAllMedia = new Q3ListBox ( this, "listAllMedia" ); + listAllMedia->setSelectionMode ( Q3ListBox::Extended ); - layout10_2->addWidget( listAllMedia ); - layout21->addLayout( layout10_2 ); + layout10_2->addWidget ( listAllMedia ); + layout21->addLayout ( layout10_2 ); - layout19 = new QVBoxLayout( 0, 0, 6, "layout19" ); - QSpacerItem* spacer = new QSpacerItem( 20, 180, QSizePolicy::Minimum, QSizePolicy::Expanding ); - layout19->addItem( spacer ); + layout19 = new Q3VBoxLayout ( 0, 0, 6, "layout19" ); + QSpacerItem* spacer = new QSpacerItem ( 20, 180, QSizePolicy::Minimum, QSizePolicy::Expanding ); + layout19->addItem ( spacer ); - layout10 = new QHBoxLayout( 0, 0, 6, "layout10" ); + layout10 = new Q3HBoxLayout ( 0, 0, 6, "layout10" ); - buttonRemove = new QPushButton( this, "buttonRemove" ); - buttonRemove->setMinimumSize( QSize( 50, 23 ) ); - buttonRemove->setMaximumSize( QSize( 50, 23 ) ); - buttonRemove->setPixmap( *get_t_remove_export_icon() ); - layout10->addWidget( buttonRemove ); + buttonRemove = new QPushButton ( this, "buttonRemove" ); + buttonRemove->setMinimumSize ( QSize ( 50, 23 ) ); + buttonRemove->setMaximumSize ( QSize ( 50, 23 ) ); + buttonRemove->setPixmap ( *get_t_remove_export_icon() ); + layout10->addWidget ( buttonRemove ); - buttonAdd = new QPushButton( this, "buttonAdd" ); - buttonAdd->setMinimumSize( QSize( 50, 23 ) ); - buttonAdd->setMaximumSize( QSize( 50, 23 ) ); - buttonAdd->setPixmap( *get_t_add_export_icon() ); - layout10->addWidget( buttonAdd ); - layout19->addLayout( layout10 ); - QSpacerItem* spacer_2 = new QSpacerItem( 20, 210, QSizePolicy::Minimum, QSizePolicy::Expanding ); - layout19->addItem( spacer_2 ); - layout21->addLayout( layout19 ); + buttonAdd = new QPushButton ( this, "buttonAdd" ); + buttonAdd->setMinimumSize ( QSize ( 50, 23 ) ); + buttonAdd->setMaximumSize ( QSize ( 50, 23 ) ); + buttonAdd->setPixmap ( *get_t_add_export_icon() ); + layout10->addWidget ( buttonAdd ); + layout19->addLayout ( layout10 ); + QSpacerItem* spacer_2 = new QSpacerItem ( 20, 210, QSizePolicy::Minimum, QSizePolicy::Expanding ); + layout19->addItem ( spacer_2 ); + layout21->addLayout ( layout19 ); - layout10_2_2 = new QVBoxLayout( 0, 0, 6, "layout10_2_2" ); + layout10_2_2 = new Q3VBoxLayout ( 0, 0, 6, "layout10_2_2" ); - textLabel2_2 = new QLabel( this, "textLabel2_2" ); - layout10_2_2->addWidget( textLabel2_2 ); + textLabel2_2 = new QLabel ( this, "textLabel2_2" ); + layout10_2_2->addWidget ( textLabel2_2 ); - listSelectedMedia = new QListBox( this, "listSelectedMedia" ); - listSelectedMedia->setSelectionMode( QListBox::Extended ); - layout10_2_2->addWidget( listSelectedMedia ); - layout21->addLayout( layout10_2_2 ); - layout32->addLayout( layout21 ); + listSelectedMedia = new Q3ListBox ( this, "listSelectedMedia" ); + listSelectedMedia->setSelectionMode ( Q3ListBox::Extended ); + layout10_2_2->addWidget ( listSelectedMedia ); + layout21->addLayout ( layout10_2_2 ); + layout32->addLayout ( layout21 ); - layout27 = new QHBoxLayout(0,0,4,"layout27"); + layout27 = new Q3HBoxLayout ( 0,0,4,"layout27" ); - checkAllMedia = new QCheckBox( this, "checkAllMedia" ); - layout27->addWidget( checkAllMedia ); - - layout32->addLayout( layout27 ); + checkAllMedia = new QCheckBox ( this, "checkAllMedia" ); + layout27->addWidget ( checkAllMedia ); - buttonGroup1 = new QButtonGroup( 3, Qt::Horizontal, tr("Type"),this, "buttonGroup1" ); - layout26 = new QHBoxLayout( 0, 0, 6, "layout26" ); + layout32->addLayout ( layout27 ); - radioCsv = new QRadioButton( buttonGroup1, "radioCsv" ); + buttonGroup1 = new Q3ButtonGroup ( 3, Qt::Horizontal, tr ( "Type" ),this, "buttonGroup1" ); + layout26 = new Q3HBoxLayout ( 0, 0, 6, "layout26" ); - seperatorLabel = new QLabel( buttonGroup1, "seperatorLabel" ); + radioCsv = new QRadioButton ( buttonGroup1, "radioCsv" ); - separatorInput = new QLineEdit( buttonGroup1, "separatorInput" ); + seperatorLabel = new QLabel ( buttonGroup1, "seperatorLabel" ); - separatorInput->setMaximumSize( QSize( 25, 32767 ) ); + separatorInput = new QLineEdit ( buttonGroup1, "separatorInput" ); - radioHtml = new QRadioButton( buttonGroup1, "radioHtml" ); - layout26->addWidget( radioHtml ); + separatorInput->setMaximumSize ( QSize ( 25, 32767 ) ); - checkOnlyMediaName = new QCheckBox( buttonGroup1, "checkOnlyMediaName"); + radioHtml = new QRadioButton ( buttonGroup1, "radioHtml" ); + layout26->addWidget ( radioHtml ); - seperatorLabel->setAlignment(Qt::AlignRight); + radioXml = new QRadioButton ( buttonGroup1, "radioXml" ); + layout26->addWidget ( radioXml ); - QSpacerItem* spacer_4 = new QSpacerItem( 130, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout26->addItem( spacer_4 ); - layout32->addWidget( buttonGroup1 ); + checkOnlyMediaName = new QCheckBox ( buttonGroup1, "checkOnlyMediaName" ); - buttonGroupFields = new QButtonGroup(2, Qt::Horizontal,tr( "What to export") ,this,"buttonGroupFields"); + seperatorLabel->setAlignment ( Qt::AlignRight ); - checkExportTitle = new QCheckBox(buttonGroupFields,"checkExportTitle"); - buttonGroupFields->insert(checkExportTitle); + QSpacerItem* spacer_4 = new QSpacerItem ( 130, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout26->addItem ( spacer_4 ); - checkExportTableHeader = new QCheckBox(buttonGroupFields,"checkExportTableHeader"); - buttonGroupFields->insert(checkExportTableHeader); + layout32->addWidget ( buttonGroup1 ); - checkExportMediaName = new QCheckBox(buttonGroupFields,"checkExportMediaName"); - buttonGroupFields->insert(checkExportMediaName); + buttonGroupFields = new Q3ButtonGroup ( 2, Qt::Horizontal,tr ( "What to export" ) ,this,"buttonGroupFields" ); - checkExportPath = new QCheckBox(buttonGroupFields,"checkExportPath"); - buttonGroupFields->insert(checkExportPath); + checkExportTitle = new QCheckBox ( buttonGroupFields,"checkExportTitle" ); + buttonGroupFields->insert ( checkExportTitle ); + checkExportTableHeader = new QCheckBox ( buttonGroupFields,"checkExportTableHeader" ); + buttonGroupFields->insert ( checkExportTableHeader ); - checkExportSize = new QCheckBox(buttonGroupFields,"checkExportSize"); - buttonGroupFields->insert(checkExportSize); + checkExportMediaName = new QCheckBox ( buttonGroupFields,"checkExportMediaName" ); + buttonGroupFields->insert ( checkExportMediaName ); - checkExportDate = new QCheckBox(buttonGroupFields,"checkExportDate"); - buttonGroupFields->insert(checkExportDate); + checkExportMediaNumber = new QCheckBox ( buttonGroupFields,"checkExportMediaNumber" ); + buttonGroupFields->insert ( checkExportMediaNumber ); - checkExportComment = new QCheckBox(buttonGroupFields,"checkExportComment"); - buttonGroupFields->insert(checkExportComment); + checkExportPath = new QCheckBox ( buttonGroupFields,"checkExportPath" ); + buttonGroupFields->insert ( checkExportPath ); - layout32->addWidget( buttonGroupFields ); - layout29 = new QHBoxLayout( 0, 0, 6, "layout29" ); + checkExportSize = new QCheckBox ( buttonGroupFields,"checkExportSize" ); + buttonGroupFields->insert ( checkExportSize ); - textLabel3 = new QLabel( this, "textLabel3" ); - layout29->addWidget( textLabel3 ); + checkExportDate = new QCheckBox ( buttonGroupFields,"checkExportDate" ); + buttonGroupFields->insert ( checkExportDate ); - fileName = new QLineEdit( this, "fileName" ); - layout29->addWidget( fileName ); + checkExportComment = new QCheckBox ( buttonGroupFields,"checkExportComment" ); + buttonGroupFields->insert ( checkExportComment ); - buttonFile = new QPushButton( this, "buttonFile" ); - layout29->addWidget( buttonFile ); - layout32->addLayout( layout29 ); + checkExportMp3Tag = new QCheckBox ( buttonGroupFields,"checkExportMp3Tag" ); + buttonGroupFields->insert ( checkExportMp3Tag ); - layout4 = new QHBoxLayout( 0, 0, 6, "layout4" ); - QSpacerItem* spacer_6 = new QSpacerItem( 163, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout4->addItem( spacer_6 ); + checkExportBorrow = new QCheckBox ( buttonGroupFields,"checkExportBorrow" ); + buttonGroupFields->insert ( checkExportBorrow ); - buttonOk = new QPushButton( this, "buttonOk" ); - buttonOk->setAutoDefault( TRUE ); - buttonOk->setDefault( TRUE ); - layout4->addWidget( buttonOk ); + layout32->addWidget ( buttonGroupFields ); - buttonCancel = new QPushButton( this, "buttonCancel" ); - buttonCancel->setAutoDefault( TRUE ); - layout4->addWidget( buttonCancel ); - QSpacerItem* spacer_5 = new QSpacerItem( 163, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout4->addItem( spacer_5 ); - layout32->addLayout( layout4 ); + layout29 = new Q3HBoxLayout ( 0, 0, 6, "layout29" ); - exportCdcatDBLayout->addLayout( layout32, 0, 0 ); - languageChange(); - resize( QSize( 418, 389 ).expandedTo( minimumSizeHint() ) ); - clearWState( WState_Polished ); + textLabel3 = new QLabel ( this, "textLabel3" ); + layout29->addWidget ( textLabel3 ); - // signals and slots connections - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( ok() ) ); - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( cancel() ) ); - connect( buttonAdd, SIGNAL( clicked() ), this, SLOT( addMedia() ) ); - connect( buttonRemove, SIGNAL( clicked() ), this, SLOT( removeMedia() ) ); - connect( checkAllMedia, SIGNAL( toggled( bool ) ), this, SLOT( listAllMediaToggled() ) ); - connect( buttonFile, SIGNAL( clicked() ), this, SLOT ( browseFile() ) ); - connect( radioCsv, SIGNAL ( clicked() ), this, SLOT ( exportTypeToggled() ) ); - connect( radioHtml, SIGNAL ( clicked() ), this, SLOT ( exportTypeToggled() ) ); + fileName = new QLineEdit ( this, "fileName" ); + layout29->addWidget ( fileName ); - connect( checkOnlyMediaName, SIGNAL ( clicked() ), this, SLOT ( checkOnlyMediaNameToggled() ) ); + buttonFile = new QPushButton ( this, "buttonFile" ); + layout29->addWidget ( buttonFile ); + layout32->addLayout ( layout29 ); - connect( checkExportTitle, SIGNAL (clicked()), this, SLOT (checkExportToggled())); - connect( checkExportTableHeader, SIGNAL (clicked()), this, SLOT (checkExportToggled())); - connect( checkExportMediaName, SIGNAL (clicked()), this, SLOT (checkExportToggled())); - connect( checkExportPath, SIGNAL (clicked()), this, SLOT (checkExportToggled())); - connect( checkExportSize, SIGNAL (clicked()), this, SLOT (checkExportToggled())); - connect( checkExportDate, SIGNAL (clicked()), this, SLOT (checkExportToggled())); - connect( checkExportComment, SIGNAL (clicked()), this, SLOT (checkExportToggled())); + layout4 = new Q3HBoxLayout ( 0, 0, 6, "layout4" ); + QSpacerItem* spacer_6 = new QSpacerItem ( 163, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout4->addItem ( spacer_6 ); - separatorInput->setText( ";" ); - separatorInput->setEnabled(false); - seperatorLabel->setEnabled(false); - radioHtml->setChecked( true ); + buttonOk = new QPushButton ( this, "buttonOk" ); + buttonOk->setAutoDefault ( TRUE ); + buttonOk->setDefault ( TRUE ); + layout4->addWidget ( buttonOk ); -#ifndef _WIN32 + buttonCancel = new QPushButton ( this, "buttonCancel" ); + buttonCancel->setAutoDefault ( TRUE ); + layout4->addWidget ( buttonCancel ); + QSpacerItem* spacer_5 = new QSpacerItem ( 163, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout4->addItem ( spacer_5 ); + layout32->addLayout ( layout4 ); - if (p != NULL) - fileName->setText(QString(getenv( "HOME" ))+"/"+QString((( DBCatalog * ) (( p->getRootNode())->data))->name)+".html"); -#endif + exportCdcatDBLayout->addLayout ( layout32, 0, 0 ); + languageChange(); + resize ( QSize ( 418, 389 ).expandedTo ( minimumSizeHint() ) ); + + // signals and slots connections + connect ( buttonOk, SIGNAL ( clicked() ), this, SLOT ( ok() ) ); + connect ( buttonCancel, SIGNAL ( clicked() ), this, SLOT ( cancel() ) ); + connect ( buttonAdd, SIGNAL ( clicked() ), this, SLOT ( addMedia() ) ); + connect ( buttonRemove, SIGNAL ( clicked() ), this, SLOT ( removeMedia() ) ); + connect ( checkAllMedia, SIGNAL ( toggled ( bool ) ), this, SLOT ( listAllMediaToggled() ) ); + connect ( buttonFile, SIGNAL ( clicked() ), this, SLOT ( browseFile() ) ); + connect ( radioCsv, SIGNAL ( clicked() ), this, SLOT ( exportTypeToggled() ) ); + connect ( radioHtml, SIGNAL ( clicked() ), this, SLOT ( exportTypeToggled() ) ); + connect ( radioXml, SIGNAL ( clicked() ), this, SLOT ( exportTypeToggled() ) ); + + connect ( checkOnlyMediaName, SIGNAL ( clicked() ), this, SLOT ( checkOnlyMediaNameToggled() ) ); - checkOnlyMediaName->setChecked( false ); + connect ( checkExportTitle, SIGNAL ( clicked() ), this, SLOT ( checkExportToggled() ) ); + connect ( checkExportTableHeader, SIGNAL ( clicked() ), this, SLOT ( checkExportToggled() ) ); + connect ( checkExportMediaName, SIGNAL ( clicked() ), this, SLOT ( checkExportToggled() ) ); + connect ( checkExportPath, SIGNAL ( clicked() ), this, SLOT ( checkExportToggled() ) ); + connect ( checkExportSize, SIGNAL ( clicked() ), this, SLOT ( checkExportToggled() ) ); + connect ( checkExportDate, SIGNAL ( clicked() ), this, SLOT ( checkExportToggled() ) ); + connect ( checkExportComment, SIGNAL ( clicked() ), this, SLOT ( checkExportToggled() ) ); - checkExportTableHeader->setChecked(true); - checkExportTitle->setChecked(true); - checkExportMediaName->setChecked(true); - checkExportPath->setChecked(true); - checkExportSize->setChecked(true); - checkExportDate->setChecked(true); - checkExportComment->setChecked(true); + separatorInput->setText ( ";" ); + separatorInput->setEnabled ( false ); + seperatorLabel->setEnabled ( false ); + radioHtml->setChecked ( true ); + if ( p != NULL ) + fileName->setText ( mainw->cconfig->lastDir +"/"+ ( ( DBCatalog * ) ( ( p->getRootNode() )->data ) )->name+".html" ); + checkOnlyMediaName->setChecked ( false ); - outstring = ""; - medianame = ""; - currentpath = ""; - lastMedianame=""; - out1 = NULL; - out2 = NULL; - out3 = NULL; - out4 = NULL; - out5 = NULL; + checkExportTableHeader->setChecked ( true ); + checkExportTitle->setChecked ( true ); + checkExportMediaName->setChecked ( true ); + checkExportPath->setChecked ( true ); + checkExportSize->setChecked ( true ); + checkExportDate->setChecked ( true ); + checkExportComment->setChecked ( true ); - fillMedia(); + outstring = ""; + medianame = ""; + currentpath = ""; + lastMedianame=""; + medianumber = 0; + fillMedia(); } /* * Destroys the object and frees any allocated resources */ exportCdcatDB::~exportCdcatDB() { - // no need to delete child widgets, Qt does it all for us + // no need to delete child widgets, Qt does it all for us } /* @@ -256,202 +264,266 @@ * language. */ void exportCdcatDB::languageChange() { - - textLabel2->setText( tr( "Availiable media" ) ); - QToolTip::add - ( listAllMedia, tr( "Add media" ) ); - buttonRemove->setText( QString::null ); - QToolTip::add - ( buttonRemove, tr( "Remove media" ) ); - buttonAdd->setText( QString::null ); - QToolTip::add - ( buttonAdd, tr( "Add media" ) ); - textLabel2_2->setText( tr( "Media to export" ) ); - QToolTip::add - ( listSelectedMedia, tr( "Media to export" ) ); - checkAllMedia->setText( tr( "All media" ) ); - checkOnlyMediaName->setText( tr( "Only media name" ) ); - //spinColsLabel->setText( tr( "columns:" ) ); - buttonGroup1->setTitle( tr( "Type" ) ); - radioHtml->setText( tr( "export as HTML" ) ); - radioCsv->setText( tr( "export as CSV" ) ); - - seperatorLabel->setText( tr( "separator:" ) ); - textLabel3->setText( tr( "File to export:" ) ); - buttonFile->setText( tr( "..." ) ); - buttonOk->setText( tr( "&OK" ) ); - checkExportMediaName->setText( tr( "Media name" ) ); - checkExportPath->setText( tr( "Path" ) ); - // checkExportFile->setText( tr( "export file" ) ); - checkExportSize->setText( tr( "Size" ) ); - checkExportDate->setText( tr( "Date" ) ); - checkExportComment->setText( tr( "Comment" ) ); - // checkExportMp3Tag->setText( tr( "export mp3 tag" ) ); - checkExportTitle->setText( tr( "HTML headline" ) ); - checkExportTableHeader->setText( tr("table header")); + + textLabel2->setText ( tr ( "Availiable media" ) ); + QToolTip::add + ( listAllMedia, tr ( "Add media" ) ); + buttonRemove->setText ( QString::null ); + QToolTip::add + ( buttonRemove, tr ( "Remove media" ) ); + buttonAdd->setText ( QString::null ); + QToolTip::add + ( buttonAdd, tr ( "Add media" ) ); + textLabel2_2->setText ( tr ( "Media to export" ) ); + QToolTip::add + ( listSelectedMedia, tr ( "Media to export" ) ); + checkAllMedia->setText ( tr ( "All media" ) ); + checkOnlyMediaName->setText ( tr ( "Only media name" ) ); + //spinColsLabel->setText( tr( "columns:" ) ); + buttonGroup1->setTitle ( tr ( "Type" ) ); + radioHtml->setText ( tr ( "export as HTML" ) ); + radioCsv->setText ( tr ( "export as CSV" ) ); + radioXml->setText ( tr ( "export as XML" ) ); + + seperatorLabel->setText ( tr ( "separator:" ) ); + textLabel3->setText ( tr ( "File to export:" ) ); + buttonFile->setText ( tr ( "..." ) ); + buttonOk->setText ( tr ( "&OK" ) ); + checkExportMediaName->setText ( tr ( "Media name" ) ); + checkExportMediaNumber->setText ( tr ( "Media number" ) ); + checkExportPath->setText ( tr ( "Path" ) ); + // checkExportFile->setText( tr( "export file" ) ); + checkExportSize->setText ( tr ( "Size" ) ); + checkExportDate->setText ( tr ( "Date" ) ); + checkExportComment->setText ( tr ( "Comment" ) ); + checkExportMp3Tag->setText( tr( "export mp3 tag" ) ); + checkExportBorrow->setText( tr( "export borrow information" ) ); + checkExportTitle->setText ( tr ( "HTML headline" ) ); + checkExportTableHeader->setText ( tr ( "table header/comment line" ) ); #ifndef _WIN32 - buttonOk->setAccel( QKeySequence( QString::null ) ); + buttonOk->setAccel ( QKeySequence ( QString::null ) ); #endif - buttonCancel->setText( tr( "&Cancel" ) ); + buttonCancel->setText ( tr ( "&Cancel" ) ); #ifndef _WIN32 - buttonCancel->setAccel( QKeySequence( QString::null ) ); + buttonCancel->setAccel ( QKeySequence ( QString::null ) ); #endif } void exportCdcatDB::fillMedia() { - if ( p == NULL ) { - buttonOk ->setEnabled( false ); - ; - listAllMedia ->setEnabled( false ); - listSelectedMedia->setEnabled( false ); - buttonAdd->setEnabled( false ); - buttonRemove ->setEnabled( false ); - buttonFile ->setEnabled( false ); - fileName ->setEnabled( false ); - checkAllMedia->setEnabled( false ); - return ; - } - Node *source = p->getRootNode(); - setCaption( tr( "Export CdCat database: " ) + ( ( DBCatalog * ) ( source->data ) ) ->name ); - Node *tmp; - tmp = source->child; - - while ( tmp != NULL ) { - if ( tmp->type != HC_MEDIA ) { - tmp = tmp->next; - continue; - } + if ( p == NULL ) { + buttonOk ->setEnabled ( false ); + ; + listAllMedia ->setEnabled ( false ); + listSelectedMedia->setEnabled ( false ); + buttonAdd->setEnabled ( false ); + buttonRemove ->setEnabled ( false ); + buttonFile ->setEnabled ( false ); + fileName ->setEnabled ( false ); + checkAllMedia->setEnabled ( false ); + return ; + } + Node *source = p->getRootNode(); + setCaption ( tr ( "Export CdCat database: " ) + ( ( DBCatalog * ) ( source->data ) ) ->name ); + Node *tmp; + tmp = source->child; + + while ( tmp != NULL ) { + if ( tmp->type != HC_MEDIA ) { + tmp = tmp->next; + continue; + } + + this->listAllMedia->insertItem ( tmp->getNameOf() ); + tmp = tmp->next; + } - this->listAllMedia->insertItem( QString( tmp->getNameOf() ) ); - tmp = tmp->next; - } - - listAllMedia->sort(); + listAllMedia->sort(); } bool exportCdcatDB::doHtmlExport() { - //fileName->setText("/data/test.html"); - return true; + //fileName->setText("/data/test.html"); + return true; } bool exportCdcatDB::doCsvExport() { - //fileName->setText("/data/test.txt"); - return true; + //fileName->setText("/data/test.txt"); + return true; } -void exportCdcatDB::ok() -{ +void exportCdcatDB::ok() { + if ( ( fileName->text() ).isEmpty() ) + QMessageBox::critical ( 0, tr ( "Filename missing" ), tr ( "Please enter a filename!" ) ); + else if ( ( separatorInput->text() ).isEmpty() ) + QMessageBox::critical ( 0, tr ( "Separator missing" ), tr ( "Please enter a separator!" ) ); + else { + //QApplication::setOverrideCursor( waitCursor ); + + separator = separatorInput->text(); + + /*extension correction:*/ + if ( radioHtml->isChecked() && + ! ( ( ( fileName->text() ).right ( 5 ) ).lower() == ".html" || + ( ( fileName->text() ).right ( 4 ) ).lower() == ".htm" ) ) { + QString q ( fileName->text() ); + fileName->setText ( q.append ( ".html" ) ); + } + + else if ( radioCsv->isChecked() && + ( ( fileName->text() ).right ( 4 ) ).lower() != ".csv" ) { + QString q ( fileName->text() ); + fileName->setText ( q.append ( ".csv" ) ); + } + + else if ( radioXml->isChecked() && + ( ( fileName->text() ).right ( 4 ) ).lower() != ".xml" ) { + QString q ( fileName->text() ); + fileName->setText ( q.append ( ".xml" ) ); + } + /* === header === */ if ( radioHtml->isChecked() ) { - outstring += "\n"; + + outstring += "\n"; + outstring += "\n"; + outstring += "\n"; + outstring += "\n"; + outstring += "\n"; outstring += " \n"; - outstring += "\n"; - outstring += " "+ tr( "Export from cdcat:" ) + " " + ( ( DBCatalog * ) ( ( p->getRootNode() ) ->data ) ) ->name + "\n"; - outstring += "\n"; + outstring += "\n"; outstring += "\n"; outstring += "\n"; - if (checkExportTitle->isChecked()) - outstring += "

" + tr( "Export from cdcat:" ) + " " + ( ( DBCatalog * ) ( ( p->getRootNode() ) ->data ) ) ->name + "

\n"; - + if ( checkExportTitle->isChecked() ) + outstring += "

" + tr ( "Export from cdcat, catalog:" ) + " " + ( ( DBCatalog * ) ( ( p->getRootNode() ) ->data ) ) ->name + "

\n"; + outstring += "

" + tr ( "Generated at:" ) + " " + QDateTime().currentDateTime().toString() + "

\n"; outstring += ""; - if (checkExportTableHeader->isChecked()) { - if (!checkOnlyMediaName->isChecked()) { - outstring += ""; - if( checkExportMediaName->isChecked()) - outstring += ""; - if( checkExportPath->isChecked()) - outstring += ""; - ; - if( checkExportSize->isChecked()) - outstring += ""; - if( checkExportDate->isChecked()) - outstring += ""; - if( checkExportComment->isChecked()) - outstring += ""; + if ( checkExportTableHeader->isChecked() ) { + if ( !checkOnlyMediaName->isChecked() ) { + outstring += ""; + if ( checkExportMediaName->isChecked() ) + outstring += ""; + if ( checkExportMediaNumber->isChecked() ) + outstring += ""; + if ( checkExportPath->isChecked() ) + outstring += ""; + if ( checkExportSize->isChecked() ) + outstring += ""; + if ( checkExportDate->isChecked() ) + outstring += ""; + if ( checkExportComment->isChecked() ) + outstring += ""; + if ( checkExportMp3Tag->isChecked() ) + outstring += ""; + if ( checkExportBorrow->isChecked() ) + outstring += ""; - outstring += "\n"; - } else { - outstring += "\n"; - } + outstring += "\n"; + } else { + outstring += "\n"; } - - } - if ( radioCsv->isChecked() ) {} - - /* header end */ - - if ( ( fileName->text() ).isEmpty() ) - QMessageBox::critical( 0, tr( "Filename missing" ), tr( "Please enter a filename!" ) ); - else if ( ( separatorInput->text() ).isEmpty() ) - QMessageBox::critical( 0, tr( "Separator missing" ), tr( "Please enter a separator!" ) ); - else { - //QApplication::setOverrideCursor( waitCursor ); - - separator = separatorInput->text(); - - /*extension correction:*/ - if ( radioHtml->isChecked() && - !( ( ( fileName->text() ).right( 5 ) ).lower() == ".html" || - ( ( fileName->text() ).right( 4 ) ).lower() == ".htm" ) ) { - QString q( fileName->text() ); - fileName->setText( q.append( ".html" ) ); } - if ( radioCsv->isChecked() && - ( ( fileName->text() ).right( 4 ) ).lower() != ".csv" ) { - QString q( fileName->text() ); - fileName->setText( q.append( ".csv" ) ); + } + if ( radioCsv->isChecked() ) { + if(checkExportTableHeader->isChecked()) { + outstring += "# "+tr ( "Export from cdcat, catalog:" ) + " " + ( ( DBCatalog * ) ( ( p->getRootNode() ) ->data ) ) ->name + "\n"; + outstring += "# " + tr ( "Generated at:" ) + " " + QDateTime().currentDateTime().toString() + "\n"; + outstring += "# "+tr("field list")+":\n"; + outstring += "# "; + if(checkExportMediaName->isChecked()) { + outstring += tr("Media name"); + outstring += separator; + } + + if ( checkExportMediaNumber->isChecked() ) { + outstring += tr("Media number"); + outstring += separator; + } + + if ( checkExportPath->isChecked() ) { + outstring += tr("Path"); + outstring += separator; + } + + if(checkExportSize->isChecked()) { + outstring += tr("Size"); + outstring += separator; + } + + if ( checkExportDate->isChecked() ) { + outstring += tr("Date"); + outstring += separator; + } + + if ( checkExportComment->isChecked() ) { + outstring += tr("Comment"); + outstring += separator; + } + + if ( checkExportMp3Tag->isChecked() ) { + outstring += tr("MP3 tag"); + outstring += separator; + } + if ( checkExportBorrow->isChecked() ) { + outstring += tr("Borrow"); + outstring += separator; + } + + outstring += "\n"; } + } + /* header end */ - f.setName( fileName->text() ); + f.setName ( fileName->text() ); - int overwrite=0; - if (f.exists()) { - //QApplication::restoreOverrideCursor(); - QMessageBox mb( tr("Overwrite?"), - tr("Do you want overwrite this file?"), - QMessageBox::Critical, - QMessageBox::Yes, - QMessageBox::Cancel | QMessageBox::Escape | QMessageBox::Default, - 0 ); - mb.setButtonText( QMessageBox::Yes, tr("Yes") ); - mb.setButtonText( QMessageBox::Cancel, tr("Discard") ); - overwrite = mb.exec(); - } - - - pww = new PWw(this,app); - progress(pww); - - if (!f.exists() || overwrite == QMessageBox::Yes) { + int overwrite=0; + if ( f.exists() ) { + //QApplication::restoreOverrideCursor(); + QMessageBox mb ( tr ( "Overwrite?" ), + tr ( "Do you want overwrite this file?" ), + QMessageBox::Critical, + QMessageBox::Yes, + QMessageBox::Cancel | QMessageBox::Escape | QMessageBox::Default, + 0 ); + mb.setButtonText ( QMessageBox::Yes, tr ( "Yes" ) ); + mb.setButtonText ( QMessageBox::Cancel, tr ( "Discard" ) ); + overwrite = mb.exec(); + } + + + pww = new PWw ( this,app, false, 0, tr("Exporting, please wait...") ); + progress ( pww ); + if ( !f.exists() || overwrite == QMessageBox::Yes ) { + if (!radioXml->isChecked()) { //QApplication::setOverrideCursor( waitCursor ); - if ( f.open( IO_WriteOnly ) ) { - QTextStream str( &f ); // we will serialize the data into file f - str.setEncoding( QTextStream::Latin1 ); + if ( f.open ( QIODevice::WriteOnly ) ) { + QTextStream str ( &f ); // we will serialize the data into file f + str.setEncoding ( QTextStream::UnicodeUTF8 ); //str << " # output generated by cdcat" << endl; - writeDown( p->getRootNode() ); + writeDown ( p->getRootNode() ); /* === footer === */ if ( radioHtml->isChecked() ) - outstring += "
" + tr( "Media" ) + "" + tr( "File" )+ "" + tr( "Size" ) + "" + tr( "Date" ) + "" + tr( "Comment" ) + "
" + tr ( "Media" ) + "" + tr ( "#" ) + "" + tr ( "File" ) + "" + tr ( "Size" ) + "" + tr ( "Date" ) + "" + tr ( "Comment" ) + "" + tr ( "MP3 tag" ) + "" + tr ( "Borrow" ) + "
" + tr( "Media" ) + "
" + tr ( "Media" ) + "
"; + outstring += ""; /* footer end */ @@ -462,340 +534,498 @@ } else { //QApplication::restoreOverrideCursor(); - QMessageBox::critical( 0, tr( "Error during write config..." ), tr( "I can't create or rewrite the file" ), tr( "Ok" ), 0 ); + QMessageBox::critical ( 0, tr ( "Error during write export..." ), tr ( "I can't create or rewrite the file" ) ); } - close(); - } else { - //QApplication::restoreOverrideCursor(); + } + else { + // XML + int retv=0; + char fnc[256]; + char fnc2[256]; + char tmpbuffer[2048]; + QString fn; + + fn = fileName->text().replace(".xml", ""); + + sprintf ( fnc,"%s.xml.gz", ( const char * ) fn ); + sprintf ( fnc2,"%s.xml", ( const char * ) fn ); + +// std::cerr << "fnc: " << fnc << ", fnc2: " << fnc2 << std::endl; + + QFile f(fnc2); + bool fnc2_openend = f.open(QIODevice::ReadWrite); + + if ( fnc2_openend ) { + mainw->db->XML_ENCODING = "UTF-8"; + if ( mainw->db->saveAsDB ( fnc ) != 0 ) { // An error occured + QMessageBox::critical ( 0, tr ( "Error during write export..." ), tr ( "I can't create or rewrite the file" ) ); + } + else { + // now lets rewrite it + gzFile ff = gzopen ( fnc,"r" ); + if(ff == NULL) { + std::cerr << "open gz file failed!" << std::endl; + } + else { + int readcount=0; + readcount = gzread(ff, tmpbuffer, 2048); + while (readcount > 0) { +// std::cerr << "read " << readcount << " bytes" << std::endl; + f.write(QByteArray(tmpbuffer)); + progress(pww); + readcount = gzread(ff, tmpbuffer, 2048); + } + gzclose(ff); + unlink(fnc); + } + f.close(); + } + } + else { + + if(!fnc2_openend) { + std::cerr << "write file open failed!" << std::endl; + } + } + + } + } + else { +// QApplication::restoreOverrideCursor(); } } + close(); + QApplication::restoreOverrideCursor(); + pww->end(); + delete pww; +} - pww->end(); - delete pww; +void exportCdcatDB::cancel() { + close(); } -void exportCdcatDB::cancel() -{ - close(); -} - -void exportCdcatDB::addMedia() -{ - uint i; - for ( i = 0; i < listAllMedia->count();i++ ) - if ( listAllMedia->isSelected( i ) ) - listSelectedMedia->insertItem( listAllMedia->text( i ) ); - - - for ( i = 0; i < listAllMedia->count();i++ ) - while ( i < listAllMedia->count() && listAllMedia->isSelected( i ) ) - listAllMedia->removeItem( i ); - listAllMedia->sort(); - listSelectedMedia->sort(); - -} - -void exportCdcatDB::removeMedia() -{ - uint i; - for ( i = 0; i < listSelectedMedia->count();i++ ) - if ( listSelectedMedia->isSelected( i ) ) - listAllMedia->insertItem( listSelectedMedia->text( i ) ); - - - for ( i = 0; i < listSelectedMedia->count();i++ ) - while ( i < listSelectedMedia->count() && listSelectedMedia->isSelected( i ) ) - listSelectedMedia->removeItem( i ); - listAllMedia->sort(); - listSelectedMedia->sort(); - -} - -void exportCdcatDB::browseFile() -{ - QString s; - s = QFileDialog::getSaveFileName( QString::null, tr( "All files (*.*)" ), this, - tr( "file chooser" ), tr( "Choose a file!" ) ); - if ( !s.isEmpty() ) - fileName->setText( s ); -} - -int exportCdcatDB::writeDown( Node *source ) -{ - int i = 0; - progress(pww); - switch ( source->type ) { - case HC_UNINITIALIZED: - return 1; - case HC_CATALOG: - i = writeCatalog( source ); - break; - case HC_MEDIA: - i = writeMedia( source ); - break; - case HC_DIRECTORY: - i = writeDirectory( source ); - break; - case HC_FILE: - i = writeFile( source ); - break; - case HC_MP3TAG: - i = writeMp3Tag( source ); - break; - } - return i; +void exportCdcatDB::addMedia() { + uint i; + for ( i = 0; i < listAllMedia->count();i++ ) + if ( listAllMedia->isSelected ( i ) ) + listSelectedMedia->insertItem ( listAllMedia->text ( i ) ); + + + for ( i = 0; i < listAllMedia->count();i++ ) + while ( i < listAllMedia->count() && listAllMedia->isSelected ( i ) ) + listAllMedia->removeItem ( i ); + listAllMedia->sort(); + listSelectedMedia->sort(); + } -int exportCdcatDB::writeCatalog( Node *source ) -{ +void exportCdcatDB::removeMedia() { + uint i; + for ( i = 0; i < listSelectedMedia->count();i++ ) + if ( listSelectedMedia->isSelected ( i ) ) + listAllMedia->insertItem ( listSelectedMedia->text ( i ) ); - if ( source->child != NULL ) - writeDown( source->child ); - if ( source->next != NULL ) - writeDown( source->next ); + for ( i = 0; i < listSelectedMedia->count();i++ ) + while ( i < listSelectedMedia->count() && listSelectedMedia->isSelected ( i ) ) + listSelectedMedia->removeItem ( i ); + listAllMedia->sort(); + listSelectedMedia->sort(); - return 0; } -int exportCdcatDB::writeMedia( Node *source ) - { - - bool inList = false; - medianame = QString( recode( ( ( DBMedia * ) ( source->data ) ) ->name , &out1 ) ); +void exportCdcatDB::browseFile() { + QString s = QFileDialog::getSaveFileName(0, tr ( "Choose a file!" ), "", tr ( "All files (*.*)" )); + if ( !s.isEmpty() ) + fileName->setText ( s ); +} +int exportCdcatDB::writeDown ( Node *source ) { + int i = 0; + progress ( pww ); + switch ( source->type ) { + case HC_UNINITIALIZED: + return 1; + case HC_CATALOG: + i = writeCatalog ( source ); + break; + case HC_MEDIA: + i = writeMedia ( source ); + break; + case HC_DIRECTORY: + i = writeDirectory ( source ); + break; + case HC_FILE: + i = writeFile ( source ); + break; + case HC_MP3TAG: + i = writeMp3Tag ( source ); + break; + } + return i; +} - if (checkAllMedia->isChecked()) - inList = true; - else - // need to check if in listSelectedMedia - for ( uint i = 0; i < listSelectedMedia->count();i++ ) - if ( listSelectedMedia->text( i ) == medianame ) - { - inList = true; - break; - } +int exportCdcatDB::writeCatalog ( Node *source ) { + if ( source->child != NULL ) + writeDown ( source->child ); - if (radioHtml->isChecked() && checkOnlyMediaName->isChecked()) - { - if ( inList ) - outstring += "" + medianame + ""; - } - else - { - if ( inList ) - if ( source->child != NULL ) - writeDown( source->child ); - } - - if ( source->next != NULL ) - writeDown( source->next ); - - return 0; -} - -int exportCdcatDB::writeDirectory( Node *source ) -{ - if ( source->child != NULL ) - writeDown( source->child ); - - if ( source->next != NULL ) - writeDown( source->next ); - - return 0; -} - -int exportCdcatDB::writeFile( Node *source ) - { - double tsize=0; - - //==== CSV =========== - if ( radioCsv->isChecked()) - { - outstring += medianame + getFilePath( source ); - outstring += separator; - - tsize = ( ( DBFile * ) ( source->data ) ) ->size; - switch( ( ( DBFile * ) ( source->data ) ) ->sizeType ) - { - case 0: break; - case 1: tsize *= 1024; break; - case 2: tsize *= 1024*1024; break; - case 3: tsize *= 1024*1024*1024; break; - } - - outstring += QString().setNum( (long int)tsize ); - outstring += separator; - outstring += QString( recode( ( ( DBFile * ) ( source->data ) ) ->modification, &out3 ) ); - outstring += "\n"; - } - - //==== HTML =========== - if ( radioHtml->isChecked()) - { - outstring += ""; - - //======== items ========== - if (checkExportMediaName->isChecked()) - outstring += "" + medianame + ""; - - if (checkExportPath->isChecked()) - outstring += "" + getFilePath( source ) + ""; - - if (checkExportSize->isChecked()) - { - outstring += ""; - outstring += QString().setNum( ( ( DBFile * ) ( source->data ) ) ->size ); - outstring +=" "; - outstring += QString( getSType( ( ( ( DBFile * ) ( source->data ) ) ->sizeType ) ) ); - outstring += ""; - } + if ( source->next != NULL ) + writeDown ( source->next ); - if (checkExportDate->isChecked()) - { - outstring += ""; - outstring += QString( recode( ( ( DBFile * ) ( source->data ) ) ->modification, &out3 ) ); - outstring += ""; - } + return 0; +} - if (checkExportComment->isChecked() ) - { - - outstring += ""; - if(((DBFile*)(source->data))->comment != NULL) - outstring += QString((( DBFile * ) ( source->data ) )->comment) - .replace(QRegExp("#"),"\n"); - else - outstring += ""; - outstring += ""; - } +int exportCdcatDB::writeMedia ( Node *source ) { + + bool inList = false; + medianame = ( ( DBMedia * ) ( source->data ) ) ->name; + medianumber = ( ( DBMedia * ) ( source->data ) ) ->number; + mediaborrow = ( ( DBMedia * ) ( source->data ) ) ->borrowing; + if(mediaborrow.isEmpty()) + mediaborrow = "-"; + + if ( checkAllMedia->isChecked() ) + inList = true; + else + // need to check if in listSelectedMedia + for ( uint i = 0; i < listSelectedMedia->count();i++ ) + if ( listSelectedMedia->text ( i ) == medianame ) { + inList = true; + break; + } - outstring += ""; - } - - - if ( source->child != NULL ) - writeDown( source->child ); - if ( ( ( DBFile * ) ( source->data ) ) ->prop != NULL ) - writeDown( ( ( DBFile * ) ( source->data ) ) ->prop ); + if ( radioHtml->isChecked() && checkOnlyMediaName->isChecked() ) { + if ( inList ) + outstring += "" + medianame + ""; + } else + if ( inList ) + if ( source->child != NULL ) + writeDown ( source->child ); - if ( source->next != NULL ) - writeDown( source->next ); - return 0; + if ( source->next != NULL ) + writeDown ( source->next ); + + return 0; } -int exportCdcatDB::writeMp3Tag( Node* ) -{ - return 0; +int exportCdcatDB::writeDirectory ( Node *source ) { + if ( source->child != NULL ) + writeDown ( source->child ); + + if ( source->next != NULL ) + writeDown ( source->next ); + + return 0; } -QString exportCdcatDB::getFilePath( Node *current ) -{ +int exportCdcatDB::writeFile ( Node *source ) { + double tsize=0; - Node * up = current; - QString a( "" ); - if ( up != NULL ) { - while ( up != NULL && QString( up->getNameOf() ) != medianame ) { - a.prepend( up->getNameOf() ); - a.prepend( "/" ); - up = up->parent; - } + //==== CSV =========== + if ( radioCsv->isChecked() ) { + if(checkExportMediaName->isChecked()) { + outstring += medianame + getFilePath ( source ); + outstring += separator; } - return a; -} -void exportCdcatDB::checkExportToggled() -{ - if (!checkExportTitle->isChecked() && !checkExportTableHeader->isChecked() && !checkExportPath->isChecked() && - !checkExportMediaName->isChecked() && !checkExportDate->isChecked() && !checkExportSize->isChecked() && !checkExportComment->isChecked()) { - buttonOk->setEnabled(false); - } else { - buttonOk->setEnabled(true); + if ( checkExportMediaNumber->isChecked() ) { + outstring += QString().setNum(medianumber); + outstring += separator; } -} + if ( checkExportPath->isChecked() ) { + outstring += getFilePath ( source ); + outstring += separator; + } + if(checkExportSize->isChecked()) { + tsize = ( ( DBFile * ) ( source->data ) ) ->size; + switch ( ( ( DBFile * ) ( source->data ) ) ->sizeType ) { + case 0: break; + case 1: tsize *= 1024; break; + case 2: tsize *= 1024*1024; break; + case 3: tsize *= 1024*1024*1024; break; + } + outstring += QString().setNum ( ( long int ) tsize ); + outstring += separator; + } + + if ( checkExportDate->isChecked() ) { + outstring += date_to_str ( ( ( DBFile * ) ( source->data ) ) ->modification ); + outstring += separator; + } + + if ( checkExportComment->isChecked() ) { + if ( ! ( ( ( DBFile* ) ( source->data ) )->comment.isEmpty() ) ) + outstring += QString(( ( DBFile * ) ( source->data ) )->comment).replace("\n", "\\\n"); + outstring += separator; + } + + if ( checkExportMp3Tag->isChecked() ) { + QString Mp3Artist=""; + QString Mp3Title=""; + QString Mp3Album=""; + QString Mp3Year=""; + bool hasMp3Tag=false; + Node *tmp=NULL; + tmp= ( ( DBFile * ) ( source->data ) )->prop; + while ( tmp != NULL ) { + /*mp3tag*/ + if ( tmp->type == HC_MP3TAG ) { + // cerr << "export: artist: mp3tag found (1)" << endl; + Mp3Artist = ( ( DBMp3Tag * ) ( tmp->data ) )->artist; + Mp3Title = ( ( DBMp3Tag * ) ( tmp->data ) )->title; + Mp3Album = ( ( DBMp3Tag * ) ( tmp->data ) )->album; + Mp3Year = ( ( DBMp3Tag * ) ( tmp->data ) )->year; + hasMp3Tag = true; + break; + } + tmp = tmp->next; + } -void exportCdcatDB::listAllMediaToggled() -{ - if ( checkAllMedia->isChecked() ) { - listAllMedia->setEnabled( false ); - listSelectedMedia->setEnabled( false ); - buttonAdd->setEnabled( false ); - buttonRemove->setEnabled( false ); - } else { - listAllMedia->setEnabled( true ); - listSelectedMedia->setEnabled( true ); - buttonAdd->setEnabled( true ); - buttonRemove->setEnabled( true ); +// cerr << "export: artist: " << qPrintable(Mp3Artist) << endl; +// cerr << "export: title: " << qPrintable(Mp3Title) << endl; +// cerr << "export: album: " << qPrintable(Mp3Album) << endl; +// cerr << "export: year: " << qPrintable(Mp3Year) << endl; + + if(hasMp3Tag) + outstring += QString(Mp3Artist)+"/"+QString(Mp3Title)+"/"+QString(Mp3Album)+"/"+QString(Mp3Year); + outstring += separator; + } + if ( checkExportBorrow->isChecked() ) { + outstring += mediaborrow; + outstring += separator; } -} -void exportCdcatDB::exportTypeToggled() -{ - if (radioHtml->isChecked()) - { - seperatorLabel->setEnabled( false ); - separatorInput->setEnabled( false ); - - checkOnlyMediaName->setEnabled( true ); - - checkExportTitle->setEnabled( true );; - checkExportTableHeader->setEnabled( true );; - checkExportMediaName->setEnabled(true); - checkExportPath->setEnabled(true); - checkExportDate->setEnabled(true); - checkExportSize->setEnabled(true); - checkExportComment->setEnabled(true); - checkOnlyMediaNameToggled(); -#ifndef _WIN32 - if (p != NULL) - fileName->setText(QString(getenv( "HOME" ))+"/"+QString((( DBCatalog * ) (( p->getRootNode())->data))->name)+".html"); -#endif + outstring += "\n"; + } - } + //==== HTML =========== + if ( radioHtml->isChecked() ) { + outstring += ""; + + //======== items ========== + if ( checkExportMediaName->isChecked() ) + outstring += "" + medianame + ""; + + if ( checkExportMediaNumber->isChecked() ) + outstring += "" + QString().setNum(medianumber)+ ""; + + if ( checkExportPath->isChecked() ) + outstring += "" + getFilePath ( source ) + ""; + + if ( checkExportSize->isChecked() ) { + outstring += ""; + outstring += QString().setNum ( ( ( DBFile * ) ( source->data ) ) ->size ); + outstring +=" "; + outstring += QString ( getSType ( ( ( ( DBFile * ) ( source->data ) ) ->sizeType), true ) ); + outstring += ""; + } + + if ( checkExportDate->isChecked() ) { + outstring += ""; + outstring += date_to_str ( ( ( DBFile * ) ( source->data ) ) ->modification ); + outstring += ""; + } + + if ( checkExportComment->isChecked() ) { + + outstring += ""; + if ( ! ( ( ( DBFile* ) ( source->data ) )->comment.isEmpty() ) ) + outstring += ( ( DBFile * ) ( source->data ) )->comment + .replace ( QRegExp ( "#" ),"
\n" ); + else + outstring += ""; + outstring += ""; + } + + if ( checkExportMp3Tag->isChecked() ) { + QString Mp3Artist=""; + QString Mp3Title=""; + QString Mp3Album=""; + QString Mp3Year=""; + bool hasMp3Tag=false; + Node *tmp=NULL; + tmp= ( ( DBFile * ) ( source->data ) )->prop; + while ( tmp != NULL ) { + /*mp3tag*/ + if ( tmp->type == HC_MP3TAG ) { + // cerr << "export: artist: mp3tag found (1)" << endl; + Mp3Artist = ( ( DBMp3Tag * ) ( tmp->data ) )->artist; + Mp3Title = ( ( DBMp3Tag * ) ( tmp->data ) )->title; + Mp3Album = ( ( DBMp3Tag * ) ( tmp->data ) )->album; + Mp3Year = ( ( DBMp3Tag * ) ( tmp->data ) )->year; + hasMp3Tag = true; + break; + } + tmp = tmp->next; + } - if (radioCsv->isChecked()) - { - seperatorLabel->setEnabled( true ); - separatorInput->setEnabled( true ); - checkOnlyMediaName->setEnabled( false ); - - checkExportTitle->setEnabled( false ); - checkExportTableHeader->setEnabled( false ); - checkExportMediaName->setEnabled(false); - checkExportPath->setEnabled(false); - checkExportDate->setEnabled(false); - checkExportSize->setEnabled(false); - checkExportComment->setEnabled(false); -#ifndef _WIN32 +// cerr << "export: artist: " << qPrintable(Mp3Artist) << endl; +// cerr << "export: title: " << qPrintable(Mp3Title) << endl; +// cerr << "export: album: " << qPrintable(Mp3Album) << endl; +// cerr << "export: year: " << qPrintable(Mp3Year) << endl; + + outstring += "\n"; + if(hasMp3Tag) { + outstring += "\n"; + outstring += "\n"; + outstring += "\n"; + outstring += "\n"; + outstring += "\n"; + outstring += "
"+tr("Artist:")+""+QString(Mp3Artist)+"
"+tr("Title:")+""+QString(Mp3Title)+"
"+tr("Album:")+""+QString(Mp3Album)+"
"+tr("Year:")+""+QString(Mp3Year)+"
\n"; + } + outstring += "\n"; + } + if ( checkExportBorrow->isChecked() ) + outstring += "" + mediaborrow + ""; + + outstring += ""; + } + + + if ( source->child != NULL ) + writeDown ( source->child ); + + if ( ( ( DBFile * ) ( source->data ) ) ->prop != NULL ) + writeDown ( ( ( DBFile * ) ( source->data ) ) ->prop ); + + if ( source->next != NULL ) + writeDown ( source->next ); + + return 0; +} + +int exportCdcatDB::writeMp3Tag ( Node* ) { + return 0; +} + +QString exportCdcatDB::getFilePath ( Node *current ) { + + Node * up = current; + QString a ( "" ); + if ( up != NULL ) { + while ( up != NULL && QString ( up->getNameOf() ) != medianame ) { + a.prepend ( up->getNameOf() ); + a.prepend ( "/" ); + up = up->parent; + } + } + return a; + +} + +void exportCdcatDB::checkExportToggled() { + if ( !checkExportTitle->isChecked() && !checkExportTableHeader->isChecked() && !checkExportPath->isChecked() && + !checkExportMediaName->isChecked() && !checkExportDate->isChecked() && !checkExportSize->isChecked() && !checkExportComment->isChecked() ) { + buttonOk->setEnabled ( false ); + } else { + buttonOk->setEnabled ( true ); + } + +} + + +void exportCdcatDB::listAllMediaToggled() { + if ( checkAllMedia->isChecked() ) { + listAllMedia->setEnabled ( false ); + listSelectedMedia->setEnabled ( false ); + buttonAdd->setEnabled ( false ); + buttonRemove->setEnabled ( false ); + } else { + listAllMedia->setEnabled ( true ); + listSelectedMedia->setEnabled ( true ); + buttonAdd->setEnabled ( true ); + buttonRemove->setEnabled ( true ); + } +} + +void exportCdcatDB::exportTypeToggled() { + if ( radioHtml->isChecked() ) { + seperatorLabel->setEnabled ( false ); + separatorInput->setEnabled ( false ); + + checkOnlyMediaName->setEnabled ( true ); + + checkExportTitle->setEnabled ( true );; + checkExportTableHeader->setEnabled ( true );; + checkExportMediaName->setEnabled ( true ); + checkExportMediaNumber->setEnabled ( true ); + checkExportPath->setEnabled ( true ); + checkExportDate->setEnabled ( true ); + checkExportSize->setEnabled ( true ); + checkExportComment->setEnabled ( true ); + checkExportMp3Tag->setEnabled ( true ); + checkExportBorrow->setEnabled ( true ); + checkOnlyMediaNameToggled(); + + if ( p != NULL ) + fileName->setText ( mainw->cconfig->lastDir +"/"+ ( ( DBCatalog * ) ( ( p->getRootNode() )->data ) )->name+".html" ); + + } + + if ( radioCsv->isChecked() ) { + seperatorLabel->setEnabled ( true ); + separatorInput->setEnabled ( true ); + checkOnlyMediaName->setEnabled ( false ); +// checkExportTitle->setEnabled ( false ); +// checkExportTableHeader->setEnabled ( false ); +// checkExportMediaName->setEnabled ( false ); +// checkExportMediaNumber->setEnabled ( false ); +// checkExportPath->setEnabled ( false ); +// checkExportDate->setEnabled ( false ); +// checkExportSize->setEnabled ( false ); +// checkExportComment->setEnabled ( false ); +// checkExportMp3Tag->setEnabled ( false ); +// checkExportBorrow->setEnabled ( false ); + + if ( p != NULL ) + fileName->setText (mainw->cconfig->lastDir +"/"+ ( ( DBCatalog * ) ( ( p->getRootNode() )->data ) )->name+".csv" ); + + } + if ( radioXml->isChecked() ) { + seperatorLabel->setEnabled ( false ); + separatorInput->setEnabled ( false ); + checkOnlyMediaName->setEnabled ( false ); + checkExportTitle->setEnabled ( false ); + checkExportTableHeader->setEnabled ( false ); + checkExportMediaName->setEnabled ( false ); + checkExportMediaNumber->setEnabled ( false ); + checkExportPath->setEnabled ( false ); + checkExportDate->setEnabled ( false ); + checkExportSize->setEnabled ( false ); + checkExportComment->setEnabled ( false ); + checkExportMp3Tag->setEnabled ( false ); + checkExportBorrow->setEnabled ( false ); + checkAllMedia->setEnabled(false); + listSelectedMedia->setEnabled(false); + listAllMedia->setEnabled(false); - if (p != NULL) - fileName->setText(QString(getenv( "HOME" ))+"/"+QString((( DBCatalog * ) (( p->getRootNode())->data))->name)+".csv"); -#endif + if ( p != NULL ) + fileName->setText (mainw->cconfig->lastDir +"/"+ ( ( DBCatalog * ) ( ( p->getRootNode() )->data ) )->name+".xml" ); - } + } } void exportCdcatDB::checkOnlyMediaNameToggled() { - if (checkOnlyMediaName->isChecked() && radioHtml->isChecked()) { + if ( checkOnlyMediaName->isChecked() && radioHtml->isChecked() ) { - checkExportMediaName->setEnabled(false); - checkExportPath->setEnabled(false); - checkExportDate->setEnabled(false); - checkExportSize->setEnabled(false); - checkExportComment->setEnabled(false); - - } else { - - checkExportMediaName->setEnabled(true); - checkExportPath->setEnabled(true); - checkExportDate->setEnabled(true); - checkExportSize->setEnabled(true); - checkExportComment->setEnabled(true); - } + checkExportMediaName->setEnabled ( false ); + checkExportPath->setEnabled ( false ); + checkExportDate->setEnabled ( false ); + checkExportSize->setEnabled ( false ); + checkExportComment->setEnabled ( false ); + + } else { + + checkExportMediaName->setEnabled ( true ); + checkExportPath->setEnabled ( true ); + checkExportDate->setEnabled ( true ); + checkExportSize->setEnabled ( true ); + checkExportComment->setEnabled ( true ); + } } diff -Nru cdcat-1.01b/src/exportcdcatdb.h cdcat-1.2/src/exportcdcatdb.h --- cdcat-1.01b/src/exportcdcatdb.h 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/exportcdcatdb.h 2011-02-04 15:03:52.000000000 +0000 @@ -3,7 +3,7 @@ /**************************************************************************** Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Christoph Thielecke (crissi99@gmx.de) License : GPL Copyright : (C) 2003 Christoph Thielecke @@ -16,11 +16,15 @@ #include #include #include -#include +#include #include #include #include #include +//Added by qt3to4: +#include +#include +#include #include #include #include @@ -28,10 +32,10 @@ #include #include #include -#include +#include #include #include -#include +#include #include #include #include @@ -40,14 +44,13 @@ #include #include #include -#include +#include -#include -#include "recode.h" #include "guibase.h" #include "dbase.h" #include "wdbfile.h" +#include "mainwidget.h" class QLabel; class QLineEdit; @@ -56,103 +59,104 @@ class QApplication; class exportCdcatDB : public QDialog { - Q_OBJECT + Q_OBJECT public: - exportCdcatDB(QApplication *appp,DataBase *db,QWidget* parent=0, const char* name=0, bool modal=true, WFlags fl=0 ); - ~exportCdcatDB(); + exportCdcatDB ( CdCatMainWidget *mainw, QWidget* parent=0, const char* name=0, bool modal=true, Qt::WFlags fl=0 ); + ~exportCdcatDB(); - void fillMedia(); - QLabel* textLabel2; - QListBox* listAllMedia; - QPushButton* buttonRemove; - QPushButton* buttonAdd; - QLabel* textLabel2_2; - QListBox* listSelectedMedia; - QCheckBox* checkAllMedia; - QCheckBox* checkOnlyMediaName; - QCheckBox* checkExportMediaName; - QCheckBox* checkExportPath; - QCheckBox* checkExportFile; - QCheckBox* checkExportSize; - QCheckBox* checkExportDate; - QCheckBox* checkExportComment; - QCheckBox* checkExportMp3Tag; - QCheckBox* checkExportTitle; - QCheckBox* checkExportTableHeader; - QButtonGroup* buttonGroup1; - QButtonGroup* buttonGroupFields; - QRadioButton* radioHtml; - QRadioButton* radioCsv; - QLabel* seperatorLabel; - QLabel* textLabel3; - QLabel* spinColsLabel; - QLineEdit* separatorInput; - QLineEdit* fileName; - QPushButton* buttonFile; - QPushButton* buttonOk; - QPushButton* buttonCancel; - QSpinBox* spinCols; - int OK; + void fillMedia(); + QLabel* textLabel2; + Q3ListBox* listAllMedia; + QPushButton* buttonRemove; + QPushButton* buttonAdd; + QLabel* textLabel2_2; + Q3ListBox* listSelectedMedia; + QCheckBox* checkAllMedia; + QCheckBox* checkOnlyMediaName; + QCheckBox* checkExportMediaName; + QCheckBox* checkExportMediaNumber; + QCheckBox* checkExportPath; + QCheckBox* checkExportFile; + QCheckBox* checkExportSize; + QCheckBox* checkExportDate; + QCheckBox* checkExportComment; + QCheckBox* checkExportMp3Tag; + QCheckBox* checkExportBorrow; + + QCheckBox* checkExportTitle; + QCheckBox* checkExportTableHeader; + Q3ButtonGroup* buttonGroup1; + Q3ButtonGroup* buttonGroupFields; + QRadioButton* radioHtml; + QRadioButton* radioCsv; + QRadioButton* radioXml; + QLabel* seperatorLabel; + QLabel* textLabel3; + QLabel* spinColsLabel; + QLineEdit* separatorInput; + QLineEdit* fileName; + QPushButton* buttonFile; + QPushButton* buttonOk; + QPushButton* buttonCancel; + QSpinBox* spinCols; + int OK; protected: - PWw *pww; - QApplication *app; - QGridLayout* exportCdcatDBLayout; - QVBoxLayout* layout32; - QHBoxLayout* layout21; - QVBoxLayout* layout10_2; - QVBoxLayout* layout19; - QHBoxLayout* layout10; - QVBoxLayout* layout10_2_2; - QVBoxLayout* buttonGroup1Layout; - QHBoxLayout* layout26; - QHBoxLayout* layout25; - QHBoxLayout* layout29; - QHBoxLayout* layout4; - QHBoxLayout* layout27; - QVBoxLayout* typeLayout; - QVBoxLayout* fieldsLayout; - - DataBase *p; - QString separator; - QFile f; - int writeDown(Node *source); - int writeCatalog (Node *source); - int writeMedia (Node *source); - int writeDirectory(Node *source); - int writeFile (Node *source); - int writeMp3Tag (Node *source); - int writeCatLnk (Node *source); - QString getFilePath(Node *current); + PWw *pww; + QApplication *app; + Q3GridLayout* exportCdcatDBLayout; + Q3VBoxLayout* layout32; + Q3HBoxLayout* layout21; + Q3VBoxLayout* layout10_2; + Q3VBoxLayout* layout19; + Q3HBoxLayout* layout10; + Q3VBoxLayout* layout10_2_2; + Q3VBoxLayout* buttonGroup1Layout; + Q3HBoxLayout* layout26; + Q3HBoxLayout* layout25; + Q3HBoxLayout* layout29; + Q3HBoxLayout* layout4; + Q3HBoxLayout* layout27; + Q3VBoxLayout* typeLayout; + Q3VBoxLayout* fieldsLayout; + + DataBase *p; + QString separator; + QFile f; + int writeDown ( Node *source ); + int writeCatalog ( Node *source ); + int writeMedia ( Node *source ); + int writeDirectory ( Node *source ); + int writeFile ( Node *source ); + int writeMp3Tag ( Node *source ); + int writeCatLnk ( Node *source ); + QString getFilePath ( Node *current ); protected slots: - virtual void languageChange(); - bool doHtmlExport(); - bool doCsvExport(); - void checkExportToggled(); - void removeMedia(); - void listAllMediaToggled(); - void exportTypeToggled(); - void checkOnlyMediaNameToggled(); - void browseFile(); - void addMedia(); + virtual void languageChange(); + bool doHtmlExport(); + bool doCsvExport(); + void checkExportToggled(); + void removeMedia(); + void listAllMediaToggled(); + void exportTypeToggled(); + void checkOnlyMediaNameToggled(); + void browseFile(); + void addMedia(); public slots: - void ok(); - void cancel(); + void ok(); + void cancel(); private: - QString outstring; - QString medianame; - QString currentpath; - QString lastMedianame; - - char *out1; - char *out2; - char *out3; - char *out4; - char *out5; + QString outstring; + QString medianame; + QString currentpath; + QString lastMedianame; + QString mediaborrow; + int medianumber; + CdCatMainWidget *mainw; }; #endif diff -Nru cdcat-1.01b/src/find.cpp cdcat-1.2/src/find.cpp --- cdcat-1.01b/src/find.cpp 2005-09-19 20:43:11.000000000 +0000 +++ cdcat-1.2/src/find.cpp 2011-03-08 09:18:14.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** - Hyper's CD Catalog + Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -12,21 +12,34 @@ #include #include #include -#include -#include +#include +#include #include #include #include -#include +#include #include #include #include -#include +#include #include #include #include +#include +#include +//Added by qt3to4: +#include +#include +#include +#include +#include +#include +#include +#include +#include -#include +// #include +#include #include #include @@ -36,582 +49,985 @@ #include "guibase.h" #include "adddialog.h" #include "config.h" +#include "cdcat.h" #include "icons.h" -findDialog::findDialog( CdCatMainWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, fl ) +#include +//#include +#include "dmetaph.h" +#include +using namespace std; + +findDialog::findDialog ( CdCatMainWidget* parent, const char* name, bool modal, Qt::WFlags fl ) + : QDialog ( parent, name, modal, fl ) { if ( !name ) - setName( "findDialog" ); - setIcon(*get_t_find_icon()); - - mainw = parent; + setName ( "findDialog" ); + setIcon ( *get_t_find_icon() ); + + mainw = parent; + use_unsharpsearch = false; - setSizeGripEnabled( TRUE ); - FindDialogBaseLayout = new QGridLayout( this, 1, 1, 11, 6, "FindDialogBaseLayout"); + setSizeGripEnabled ( TRUE ); + FindDialogBaseLayout = new Q3GridLayout ( this, 1, 1, 11, 6, "FindDialogBaseLayout" ); // QSpacerItem* spacer = new QSpacerItem( 210, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - QSpacerItem* spacer_2 = new QSpacerItem( 240, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - QSpacerItem* spacer_3 = new QSpacerItem( 240, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - QSpacerItem* spacer_4 = new QSpacerItem( 200, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - QSpacerItem* spacer_5 = new QSpacerItem( 36, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - QSpacerItem* spacer_6 = new QSpacerItem( 190, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - QSpacerItem* spacer_7 = new QSpacerItem( 200, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - QSpacerItem* spacer_8 = new QSpacerItem( 190, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - QSpacerItem* spacer_9 = new QSpacerItem( 190, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - QSpacerItem* spacer_10 = new QSpacerItem( 200, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - - - layout40 = new QVBoxLayout( 0, 0, 6, "layout40"); - layout39 = new QGridLayout( 0, 1, 1, 0, 6, "layout39"); - layout36 = new QGridLayout( 0, 1, 1, 0, 6, "layout36"); - layout37 = new QGridLayout( 0, 1, 1, 0, 6, "layout37"); - layout31 = new QVBoxLayout( 0, 0, 6, "layout31"); - layout17 = new QHBoxLayout( 0, 0, 6, "layout17"); - layout15 = new QGridLayout( 0, 1, 1, 0, 6, "layout15"); - layout30 = new QHBoxLayout( 0, 0, 6, "layout30"); - layout16 = new QGridLayout( 0, 1, 1, 0, 6, "layout16"); - - leText = new QLineEdit( this, "leText" ); - - cbCasesens = new QCheckBox( this, "cbCasesens" ); - cbEasy = new QCheckBox( this, "cbEasy" ); - - cbFilename = new QCheckBox( this, "cbFilename" ); - cbDirname = new QCheckBox( this, "cbDirname" ); - cbComment = new QCheckBox( this, "cbComment" ); - cbContent = new QCheckBox( this, "cbContent" ); - - cbArtist = new QCheckBox( this, "cbArtist" ); - cbTitle = new QCheckBox( this, "cbTitle" ); - cbAlbum = new QCheckBox( this, "cbAlbum" ); - cbTcomm = new QCheckBox( this, "cbTcomm" ); - - cbOwner = new QComboBox( FALSE, this, "cbOwner" ); - cbOwner->setMinimumSize( QSize( 0, 0 ) ); - - cbSin = new QComboBox( FALSE, this, "cbSin" ); - - buttonOk = new QPushButton( this, "buttonOk" ); - buttonOk->setAutoDefault( TRUE ); - buttonOk->setDefault( TRUE ); - buttonOk->setMinimumWidth(80); - - buttonCancel = new QPushButton( this, "buttonCancel" ); - buttonCancel->setAutoDefault( TRUE ); - buttonCancel->setMinimumWidth(80); - - resultsl = new QListView( this, "resultsl" ); - resultsl->addColumn( tr( "Name" ) ); - resultsl->addColumn( tr( "Type" ) ); - resultsl->addColumn( tr( "Media" ) ); - resultsl->addColumn( tr( "Path" ) ); - resultsl->addColumn( tr( "Modification" ) ); - - buttonClose = new QPushButton( this, "buttonClose" ); - - textLabel3 = new QLabel( this, "textLabel3" ); - textLabel1 = new QLabel( this, "textLabel1" ); - textLabel2 = new QLabel( this, "textLabel2" ); - textLabel5 = new QLabel( this, "textLabel5" ); - - /* saved ops: */ - - cbTcomm -> setChecked( mainw->cconfig->find_mco ); - cbCasesens -> setChecked( mainw->cconfig->find_cs ); - cbArtist -> setChecked( mainw->cconfig->find_mar ); - cbAlbum -> setChecked( mainw->cconfig->find_mal ); - cbComment -> setChecked( mainw->cconfig->find_co ); - cbTitle -> setChecked( mainw->cconfig->find_mti ); - cbEasy -> setChecked( mainw->cconfig->find_em ); - cbFilename -> setChecked( mainw->cconfig->find_fi ); - cbDirname -> setChecked( mainw->cconfig->find_di ); - cbContent -> setChecked( mainw->cconfig->find_ct ); - - /* layouts: */ - layout36->addWidget( cbCasesens, 1, 0 ); - layout36->addWidget( cbDirname , 2, 0 ); - layout36->addWidget( cbFilename, 3, 0 ); - layout36->addWidget( cbComment , 4, 0 ); - layout36->addWidget( cbContent , 5, 0 ); - layout36->addWidget( cbEasy , 1, 1 ); - layout36->addWidget( cbArtist, 2, 1 ); - layout36->addWidget( cbTitle , 3, 1 ); - layout36->addWidget( cbAlbum , 4, 1 ); - layout36->addWidget( cbTcomm , 5, 1 ); - layout36->addMultiCellWidget( leText, 0, 0, 0, 1 ); - - layout37->addWidget( cbOwner, 3, 1 ); - layout37->addWidget( cbSin, 2, 1 ); - layout37->addMultiCellWidget( textLabel3, 0, 0, 0, 1 ); - layout37->addWidget( textLabel1, 2, 0 ); - layout37->addWidget( textLabel2, 3, 0 ); - layout37->addMultiCell( spacer_3, 1, 1, 0, 1 ); - - layout39->addMultiCellLayout( layout36, 0, 1, 1, 1 ); - layout39->addItem( spacer_2, 1, 0 ); - layout39->addLayout( layout37, 0, 0 ); - - layout15->addWidget( buttonOk, 0, 0 ); - layout15->addItem( spacer_5, 0, 1 ); - layout15->addWidget( buttonCancel, 0, 2 ); - - layout17->addItem ( spacer_6 ); - layout17->addLayout( layout15 ); - layout17->addItem( spacer_4 ); - - layout30->addItem( spacer_7 ); - layout30->addWidget( textLabel5 ); - layout30->addItem( spacer_8 ); - - layout16->addItem( spacer_9, 0, 2 ); - layout16->addWidget( buttonClose, 0, 1 ); - layout16->addItem( spacer_10, 0, 0 ); - - layout31->addLayout( layout17 ); - layout31->addLayout( layout30 ); - layout31->addWidget( resultsl ); - layout31->addLayout( layout16 ); - - layout40->addLayout( layout39 ); - layout40->addLayout( layout31 ); - - FindDialogBaseLayout->addLayout( layout40, 0, 0 ); - - resize( QSize(mainw->cconfig->findWidth,mainw->cconfig->findHeight).expandedTo(minimumSizeHint())); - move(mainw->cconfig->findX,mainw->cconfig->findY); - clearWState( WState_Polished ); + QSpacerItem* spacer_2 = new QSpacerItem ( 240, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + QSpacerItem* spacer_3 = new QSpacerItem ( 240, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + QSpacerItem* spacer_4 = new QSpacerItem ( 200, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + QSpacerItem* spacer_5 = new QSpacerItem ( 36, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + QSpacerItem* spacer_6 = new QSpacerItem ( 190, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + QSpacerItem* spacer_7 = new QSpacerItem ( 200, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + QSpacerItem* spacer_8 = new QSpacerItem ( 190, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + QSpacerItem* spacer_9 = new QSpacerItem ( 190, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + QSpacerItem* spacer_10 = new QSpacerItem ( 200, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + + layout40 = new Q3VBoxLayout ( 0, 0, 6, "layout40" ); + layout39 = new Q3GridLayout ( 0, 1, 1, 0, 6, "layout39" ); + layout36 = new Q3GridLayout ( 0, 1, 1, 0, 6, "layout36" ); + layout37 = new Q3GridLayout ( 0, 1, 1, 0, 6, "layout37" ); + layout31 = new Q3VBoxLayout ( 0, 0, 6, "layout31" ); + layout17 = new Q3HBoxLayout ( 0, 0, 6, "layout17" ); + layout15 = new Q3GridLayout ( 0, 1, 1, 0, 6, "layout15" ); + layout30 = new Q3HBoxLayout ( 0, 0, 6, "layout30" ); + layout16 = new Q3GridLayout ( 0, 1, 1, 0, 6, "layout16" ); +// layout17 = new Q3GridLayout ( 0, 1, 1, 0, 6, "layout17" ); + layout_size_min = new Q3HBoxLayout ( 0, 0, 2, "layout_size_min" ); + layout_size_max = new Q3HBoxLayout ( 0, 0, 2, "layout_size_max" ); - languageChange(); + leText = new QLineEdit ( this, "leText" ); + + deDateStart = new QDateTimeEdit ( QDateTime(QDate(1,1,1900)) ,this ); + deDateEnd = new QDateTimeEdit ( QDateTime (QDate().currentDate()), this ); + + cbCasesens = new QCheckBox ( this, "cbCasesens" ); + cbEasy = new QCheckBox ( this, "cbEasy" ); + + cbFilename = new QCheckBox ( this, "cbFilename" ); + cbDirname = new QCheckBox ( this, "cbDirname" ); + cbComment = new QCheckBox ( this, "cbComment" ); + cbContent = new QCheckBox ( this, "cbContent" ); + + cbArtist = new QCheckBox ( this, "cbArtist" ); + cbTitle = new QCheckBox ( this, "cbTitle" ); + cbAlbum = new QCheckBox ( this, "cbAlbum" ); + cbTcomm = new QCheckBox ( this, "cbTcomm" ); + cbDateStart = new QCheckBox ( this, "cbDateStart" ); + cbDateEnd = new QCheckBox ( this, "cbDateEnd" ); + cbSizeMin = new QCheckBox (this, "cbSizeMin" ); + cbSizeMax = new QCheckBox (this, "cbSizeMax" ); + cbUnsharpSearch = new QCheckBox (this, "cbUnsharpSearch" ); + + cbOwner = new QComboBox ( FALSE, this, "cbOwner" ); + cbOwner->setMinimumSize ( QSize ( 0, 0 ) ); + + cbSin = new QComboBox ( FALSE, this, "cbSin" ); + + cbSizeUnitMin = new QComboBox (false, this, "cbSizeUnitMin"); + cbSizeUnitMin->addItem(tr("Byte")); + cbSizeUnitMin->addItem(tr("KiB")); + cbSizeUnitMin->addItem(tr("MiB")); + cbSizeUnitMin->addItem(tr("GiB")); + + cbSizeUnitMax = new QComboBox (false, this, "cbSizeUnitMax"); + cbSizeUnitMax->addItem(tr("Byte")); + cbSizeUnitMax->addItem(tr("KiB")); + cbSizeUnitMax->addItem(tr("MiB")); + cbSizeUnitMax->addItem(tr("GiB")); + + spSizeMin = new QSpinBox( this, "spSizeMin"); + spSizeMin->setMinimum(1); + spSizeMin->setMaximum(10000000); + + spSizeMax = new QSpinBox( this, "spSizeMax"); + spSizeMax->setMinimum(1); + spSizeMax->setMaximum(10000000); + + buttonOk = new QPushButton ( this, "buttonOk" ); + buttonOk->setAutoDefault ( TRUE ); + buttonOk->setDefault ( TRUE ); + buttonOk->setMinimumWidth ( 80 ); + + buttonCancel = new QPushButton ( this, "buttonCancel" ); + buttonCancel->setAutoDefault ( TRUE ); + buttonCancel->setMinimumWidth ( 80 ); + + resultsl = new Q3ListView ( this, "resultsl" ); + resultsl->addColumn ( tr ( "Name" ) ); + resultsl->addColumn ( tr ( "Type" ) ); + resultsl->addColumn ( tr ( "Size" ) ); + resultsl->addColumn ( tr ( "Media" ) ); + resultsl->addColumn ( tr ( "Path" ) ); + resultsl->addColumn ( tr ( "Modification" ) ); + + resultsl->setColumnAlignment(2, Qt::AlignRight ); + resultsl->setColumnWidthMode(0, Q3ListView::Maximum); + + buttonClose = new QPushButton ( this, "buttonClose" ); + + textLabel3 = new QLabel ( this, "textLabel3" ); + textLabel1 = new QLabel ( this, "textLabel1" ); + textLabel2 = new QLabel ( this, "textLabel2" ); + textLabel5 = new QLabel ( this, "textLabel5" ); + textLabel6 = new QLabel ( this, "textLabel6" ); + textLabel7 = new QLabel ( this, "textLabel7" ); + + /* saved ops: */ + + cbTcomm -> setChecked ( mainw->cconfig->find_mco ); + cbCasesens -> setChecked ( mainw->cconfig->find_cs ); + cbArtist -> setChecked ( mainw->cconfig->find_mar ); + cbAlbum -> setChecked ( mainw->cconfig->find_mal ); + cbComment -> setChecked ( mainw->cconfig->find_co ); + cbTitle -> setChecked ( mainw->cconfig->find_mti ); + cbEasy -> setChecked ( mainw->cconfig->find_em ); + cbFilename -> setChecked ( mainw->cconfig->find_fi ); + cbDirname -> setChecked ( mainw->cconfig->find_di ); + cbContent -> setChecked ( mainw->cconfig->find_ct ); + cbDateStart -> setChecked ( mainw->cconfig->find_date_start ); + cbDateEnd -> setChecked ( mainw->cconfig->find_date_end ); + cbSizeMin -> setChecked( mainw->cconfig->find_size_min ); + cbSizeMax -> setChecked( mainw->cconfig->find_size_max ); + + /* layouts: */ + layout36->addWidget ( cbCasesens, 1, 0 ); + layout36->addWidget ( cbDirname , 2, 0 ); + layout36->addWidget ( cbFilename, 3, 0 ); + layout36->addWidget ( cbComment , 4, 0 ); + layout36->addWidget ( cbContent , 5, 0 ); + layout36->addWidget ( cbEasy , 1, 1 ); + layout36->addWidget ( cbArtist, 2, 1 ); + layout36->addWidget ( cbTitle , 3, 1 ); + layout36->addWidget ( cbAlbum , 4, 1 ); + layout36->addWidget ( cbTcomm , 5, 1 ); + layout36->addMultiCellWidget ( leText, 0, 0, 0, 1 ); + layout37->addWidget ( cbDateStart , 6, 0 ); + layout37->addWidget ( cbDateEnd , 7, 0 ); + layout37->addWidget ( deDateStart, 6, 1 ); + layout37->addWidget ( deDateEnd, 7, 1 ); + layout37->addWidget ( cbSizeMin, 8, 0 ); + layout37->addWidget ( cbSizeMax, 9, 0 ); + layout37->addWidget ( cbUnsharpSearch, 10, 0 ); + + + layout37->addWidget ( cbOwner, 3, 1 ); + layout37->addWidget ( cbSin, 2, 1 ); + layout37->addMultiCellWidget ( textLabel3, 0, 0, 0, 1 ); + layout37->addWidget ( textLabel1, 2, 0 ); + layout37->addWidget ( textLabel2, 3, 0 ); + layout37->addMultiCell ( spacer_3, 1, 1, 0, 1 ); + + layout_size_min->addWidget ( spSizeMin ); + layout_size_min->addWidget ( cbSizeUnitMin ); + cbSizeUnitMin->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + layout37->addItem(layout_size_min, 8, 1); + + layout_size_max->addWidget ( spSizeMax ); + layout_size_max->addWidget ( cbSizeUnitMax ); + cbSizeUnitMin->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + layout37->addItem(layout_size_max, 9, 1); + + + layout39->addMultiCellLayout ( layout36, 0, 1, 1, 1 ); + layout39->addItem ( spacer_2, 1, 0 ); + layout39->addLayout ( layout37, 0, 0 ); + + layout15->addWidget ( buttonOk, 0, 0 ); + layout15->addItem ( spacer_5, 0, 1 ); + layout15->addWidget ( buttonCancel, 0, 2 ); + + layout17->addItem ( spacer_6 ); + layout17->addLayout ( layout15 ); + layout17->addItem ( spacer_4 ); + + layout30->addItem ( spacer_7 ); + layout30->addWidget ( textLabel5 ); + layout30->addItem ( spacer_8 ); + + layout16->addItem ( spacer_9, 0, 2 ); + layout16->addWidget ( buttonClose, 0, 1 ); + layout16->addItem ( spacer_10, 0, 0 ); + + layout31->addLayout ( layout17 ); + layout31->addLayout ( layout30 ); + layout31->addWidget ( resultsl ); + layout31->addLayout ( layout16 ); + + layout40->addLayout ( layout39 ); + layout40->addLayout ( layout31 ); + + FindDialogBaseLayout->addLayout ( layout40, 0, 0 ); + + resize ( QSize ( mainw->cconfig->findWidth,mainw->cconfig->findHeight ).expandedTo ( minimumSizeHint() ) ); + move ( mainw->cconfig->findX,mainw->cconfig->findY ); + + languageChange(); + fillCBox(); - connect(buttonCancel,SIGNAL(clicked()),this,SLOT(cancele())); - connect(buttonOk,SIGNAL(clicked()),this,SLOT(seeke())); - connect(buttonClose,SIGNAL(clicked()),this,SLOT(closee())); - connect(resultsl,SIGNAL(currentChanged(QListViewItem *)),this,SLOT(select(QListViewItem *))); - connect(resultsl,SIGNAL(clicked(QListViewItem *)),this,SLOT(select(QListViewItem *))); + connect ( buttonCancel,SIGNAL ( clicked() ),this,SLOT ( cancele() ) ); + connect ( buttonOk,SIGNAL ( clicked() ),this,SLOT ( seeke() ) ); + connect ( buttonClose,SIGNAL ( clicked() ),this,SLOT ( closee() ) ); + connect ( resultsl,SIGNAL ( currentChanged ( Q3ListViewItem * ) ),this,SLOT ( select ( Q3ListViewItem * ) ) ); + connect ( resultsl,SIGNAL ( clicked ( Q3ListViewItem * ) ),this,SLOT ( select ( Q3ListViewItem * ) ) ); + connect ( cbDateStart, SIGNAL ( stateChanged(int)),this,SLOT ( dateStartChanged(int))); + connect ( cbDateEnd, SIGNAL ( stateChanged(int)),this,SLOT ( dateEndChanged(int))); + //connect ( deDateStart, SIGNAL ( clicked()),this,SLOT ( dateStartDoubleClicked())); + //connect ( deDateEnd, SIGNAL ( ),this,SLOT ( dateEndDoubleClicked())); + connect ( cbSizeMin, SIGNAL ( clicked()),this,SLOT ( sizeMinClicked())); + connect ( cbSizeMax, SIGNAL ( clicked()),this,SLOT ( sizeMaxClicked())); - setTabOrder(leText,buttonOk); + + deDateStart->setEnabled(false); + deDateEnd->setEnabled(false); + cbSizeUnitMin->setEnabled(false); + spSizeMin->setEnabled(false); + + cbSizeUnitMax->setEnabled(false); + spSizeMax->setEnabled(false); + + deDateStart->setDateTime(mainw->cconfig->find_date_start_val); + deDateEnd->setDateTime(mainw->cconfig->find_date_end_val); + + deDateStart->setDisplayFormat("dd.MM.yyyy hh:mm"); + deDateEnd->setDisplayFormat("dd.MM.yyyy hh:mm"); + + cbSizeMin->setChecked(mainw->cconfig->find_size_min); + cbSizeMax->setChecked(mainw->cconfig->find_size_max); + spSizeMin->setValue(mainw->cconfig->find_size_min_val); + spSizeMax->setValue(mainw->cconfig->find_size_max_val); + + spSizeMin->setEnabled(mainw->cconfig->find_size_min); + spSizeMax->setEnabled(mainw->cconfig->find_size_max); + + cbSizeUnitMin->setEnabled(mainw->cconfig->find_size_min); + cbSizeUnitMax->setEnabled(mainw->cconfig->find_size_max); + + cbSizeUnitMin->setCurrentIndex(mainw->cconfig->find_size_unit_min_val); + cbSizeUnitMax->setCurrentIndex(mainw->cconfig->find_size_unit_max_val); + + cbUnsharpSearch->setChecked(mainw->cconfig->find_unsharp_search); + + leText->setText(mainw->cconfig->lastSearchPattern); + + dateStartChanged(0); + dateEndChanged(0); + + setTabOrder ( leText,buttonOk ); leText->setFocus(); } /* * Destroys the object and frees any allocated resources */ -findDialog::~findDialog() -{ +findDialog::~findDialog() { // no need to delete child widgets, Qt does it all for us } -/***************************************************************************/ -void findDialog::languageChange() -{ - setCaption( tr( "Search in the database..." ) ); - textLabel1->setText( tr( "Seek in:" ) ); - textLabel2->setText( tr( "Owner:" ) ); - resultsl->header()->setLabel( 0, tr( "Name" ) ); - resultsl->header()->setLabel( 1, tr( "Type" ) ); - resultsl->header()->setLabel( 2, tr( "Media" ) ); - resultsl->header()->setLabel( 3, tr( "Path" ) ); - resultsl->header()->setLabel( 4, tr( "Modification" ) ); - textLabel3->setText( tr( "Find:" ) ); - cbFilename->setText( tr( "File name" ) ); - cbAlbum->setText( tr( "mp3-tag Album" ) ); - cbArtist->setText( tr( "mp3-tag Artist" ) ); - cbTcomm->setText( tr( "mp3-tag Comment" ) ); - cbDirname->setText( tr( "Media / Directory name" ) ); - cbTitle->setText( tr( "mp3-tag Title" ) ); - cbComment->setText( tr( "Comment" ) ); - cbContent->setText( tr( "Content" ) ); - buttonOk->setText( tr( "&OK" ) ); +/***************************************************************************/ +void findDialog::languageChange() { + setCaption ( tr ( "Search in the database..." ) ); + textLabel1->setText ( tr ( "Seek in:" ) ); + textLabel2->setText ( tr ( "Owner:" ) ); + resultsl->header()->setLabel ( 0, tr ( "Name" ) ); + resultsl->header()->setLabel ( 1, tr ( "Type" ) ); + resultsl->header()->setLabel ( 2, tr ( "Size" ) ); + resultsl->header()->setLabel ( 3, tr ( "Media" ) ); + resultsl->header()->setLabel ( 4, tr ( "Path" ) ); + resultsl->header()->setLabel ( 5, tr ( "Modification" ) ); + textLabel3->setText ( tr ( "Find:" ) ); + cbFilename->setText ( tr ( "File name" ) ); + cbAlbum->setText ( tr ( "mp3-tag Album" ) ); + cbArtist->setText ( tr ( "mp3-tag Artist" ) ); + cbTcomm->setText ( tr ( "mp3-tag Comment" ) ); + cbDirname->setText ( tr ( "Media / Directory name" ) ); + cbTitle->setText ( tr ( "mp3-tag Title" ) ); + cbComment->setText ( tr ( "Comment" ) ); + cbContent->setText ( tr ( "Content" ) ); + cbDateStart->setText ( tr ( "Date start" ) ); + cbDateEnd->setText ( tr ( "Date end" ) ); + cbSizeMin->setText( tr("Min size") ); + cbSizeMax->setText( tr("Max size") ); + cbUnsharpSearch->setText( tr("Unsharp search (slow)") ); + buttonOk->setText ( tr ( "&Start search" ) ); #ifndef _WIN32 - buttonOk->setAccel( QKeySequence( QString::null ) ); + buttonOk->setAccel ( QKeySequence ( QString::null ) ); #endif - buttonCancel->setText( tr( "&Cancel" ) ); + buttonCancel->setText ( tr ( "&Cancel" ) ); #ifndef _WIN32 - buttonCancel->setAccel( QKeySequence( QString::null ) ); + buttonCancel->setAccel ( QKeySequence ( QString::null ) ); #endif - textLabel5->setText( tr( "Results" ) ); - buttonClose->setText( tr( "Close / Go to selected" ) ); - cbCasesens->setText( tr( "Case sensitive" ) ); - cbEasy->setText( tr( "Use easy matching instead regex" ) ); - resultsl->clear(); + textLabel5->setText ( tr ( "Results" ) ); + buttonClose->setText ( tr ( "Close / Go to selected" ) ); + cbCasesens->setText ( tr ( "Case sensitive" ) ); + cbEasy->setText ( tr ( "Use easy matching instead regex" ) ); + resultsl->clear(); } /***************************************************************************/ -int findDialog::saveState(void) - { - mainw->cconfig->find_em = cbEasy->isChecked(); - mainw->cconfig->find_cs = cbCasesens->isChecked(); - mainw->cconfig->find_di = cbDirname->isChecked(); - mainw->cconfig->find_fi = cbFilename->isChecked(); - mainw->cconfig->find_co = cbComment->isChecked(); - mainw->cconfig->find_ct = cbContent->isChecked(); - mainw->cconfig->find_mar = cbArtist->isChecked(); - mainw->cconfig->find_mti = cbTitle->isChecked(); - mainw->cconfig->find_mco = cbTcomm->isChecked(); - mainw->cconfig->find_mal = cbAlbum->isChecked(); - mainw->cconfig->findX = x(); - mainw->cconfig->findY = y(); - mainw->cconfig->findWidth = width(); - mainw->cconfig->findHeight = height(); - mainw->cconfig->writeConfig(); - - return 0; - } -/***************************************************************************/ -int findDialog::fillCBox(void) - { - char ow[256]; - int i,f,c; - Node *tmp=mainw->db->getRootNode(); - - if(tmp == NULL) return 0; - - cbOwner->clear(); - cbOwner->insertItem(tr("All/Everybody"),0); - cbOwner->insertItem(((DBCatalog *)(tmp->data))->owner); - - cbSin ->clear(); - cbSin ->insertItem(tr("All media"),0); - - tmp=tmp->child; //Jump to the first media - while(tmp != NULL) - { - if(tmp->type != HC_MEDIA) - { - tmp=tmp->next; - continue; - } - - cbSin ->insertItem(tmp->getNameOf()); - strcpy(ow,((DBMedia *)(tmp->data))->owner); - c = cbOwner->count(); - for(i=0,f=1;c>i;i++) - if(strcmp(ow,(const char *)cbOwner->text(i)) == 0) - f=0; - if(f) - cbOwner->insertItem(ow); - tmp=tmp->next; - } - return 0; - } -/***************************************************************************/ -int findDialog::select(QListViewItem *i) - { - if(i == NULL) - return 0; - - char loc[1024]; - - if(i->text(3).isEmpty()) //Not a real result ("There is no matching" label) +int findDialog::saveState ( void ) { + mainw->cconfig->find_em = cbEasy->isChecked(); + mainw->cconfig->find_cs = cbCasesens->isChecked(); + mainw->cconfig->find_di = cbDirname->isChecked(); + mainw->cconfig->find_fi = cbFilename->isChecked(); + mainw->cconfig->find_co = cbComment->isChecked(); + mainw->cconfig->find_ct = cbContent->isChecked(); + mainw->cconfig->find_mar = cbArtist->isChecked(); + mainw->cconfig->find_mti = cbTitle->isChecked(); + mainw->cconfig->find_mco = cbTcomm->isChecked(); + mainw->cconfig->find_mal = cbAlbum->isChecked(); + mainw->cconfig->find_date_start = cbDateStart->isChecked(); + mainw->cconfig->find_date_end = cbDateEnd->isChecked(); + mainw->cconfig->find_date_start_val = deDateStart->dateTime(); + mainw->cconfig->find_date_end_val = deDateEnd->dateTime(); + mainw->cconfig->find_size_min = cbSizeMin->isChecked(); + mainw->cconfig->find_size_max = cbSizeMax->isChecked(); + mainw->cconfig->find_size_min_val = spSizeMin->value(); + mainw->cconfig->find_size_max_val = spSizeMax->value(); + mainw->cconfig->find_size_unit_min_val= cbSizeUnitMin->currentIndex(); + mainw->cconfig->find_size_unit_max_val = cbSizeUnitMax->currentIndex(); + mainw->cconfig->find_unsharp_search = cbUnsharpSearch->isChecked(); + mainw->cconfig->findX = x(); + mainw->cconfig->findY = y(); + mainw->cconfig->findWidth = width(); + mainw->cconfig->findHeight = height(); + mainw->cconfig->lastSearchPattern = leText->text(); + mainw->cconfig->writeConfig(); return 0; - - strcpy(loc,i->text(3)); - mainw->guis->updateListFromNode( - (mainw->guis->getNodeFromFullName(mainw->db->getRootNode(),QString(loc+2)))); - for(QListViewItemIterator it=mainw->listView->firstChild();it.current();it++) - { - if(strcmp((it.current())->text(0),i->text(0)) ==0) - mainw->listView->setCurrentItem(it.current()); - } - mainw->listView->curr_vis(); - mainw->listView->repaint(); - return 0; - } -/***************************************************************************/ -void findDialog::closeEvent(QCloseEvent *ce) - { - saveState(); - QWidget::closeEvent(ce); - } - +} +/***************************************************************************/ +int findDialog::fillCBox ( void ) { + int i,f,c; + Node *tmp=mainw->db->getRootNode(); + + if ( tmp == NULL ) return 0; + + cbOwner->clear(); + cbOwner->insertItem ( tr ( "All/Everybody" ),0 ); + cbOwner->insertItem ( ( ( DBCatalog * ) ( tmp->data ) )->owner ); + + cbSin ->clear(); + cbSin ->insertItem ( tr ( "All media" ),0 ); + + tmp=tmp->child; //Jump to the first media + while ( tmp != NULL ) { + if ( tmp->type != HC_MEDIA ) { + tmp=tmp->next; + continue; + } + + cbSin ->insertItem ( tmp->getNameOf() ); + c = cbOwner->count(); + for ( i=0,f=1;c>i;i++ ) + if ( ( ( DBMedia * ) ( tmp->data ) )->owner == cbOwner->text ( i ) ) + f=0; + if ( f ) + cbOwner->insertItem ( ( ( DBMedia * ) ( tmp->data ) )->owner ); + tmp=tmp->next; + } + return 0; +} /***************************************************************************/ -int findDialog::closee(void) - { - close (); - return 0; - } + +int findDialog::select ( Q3ListViewItem *i ) { + if ( i == NULL ) + return 0; + + if ( i->text ( 3 ).isEmpty() ) //Not a real result ("There is no matching" label) + return 0; + + QString nodepath = i->text ( 4 ).mid(2,i->text ( 4 ).length()-1); +// std::cerr << "select: nodepath " << qPrintable(nodepath) << std::endl; + + mainw->guis->updateListFromNode ( + ( mainw->guis->getNodeFromFullName (mainw->db->getRootNode(), nodepath ) ) ); + for ( Q3ListViewItemIterator it=mainw->listView->firstChild();it.current();it++ ) { + if ( ( it.current() )->text ( 0 ) == i->text ( 0 )) { + mainw->listView->setCurrentItem ( it.current() ); + mainw->listView->curr_vis(); + mainw->listView->repaint(); + } + } + return 0; +} /***************************************************************************/ -int findDialog::cancele(void) - { +void findDialog::closeEvent ( QCloseEvent *ce ) { + saveState(); + QWidget::closeEvent ( ce ); +} - close(); - return 0; - } -int findDialog::seeke(void) - { - seekEngine *se; +/***************************************************************************/ +int findDialog::closee ( void ) { + close (); + return 0; +} +/***************************************************************************/ +int findDialog::cancele ( void ) { - if(mainw == NULL && mainw->db == NULL) + close(); return 0; - - if((leText->text()).isEmpty()) +} + +int findDialog::seeke ( void ) { + seekEngine *se; + + if ( mainw == NULL && mainw->db == NULL ) + return 0; + + if ( ( leText->text() ).isEmpty() && !cbDateStart->isChecked() && !cbDateEnd->isChecked() && !cbSizeMin->isChecked() && !cbSizeMax->isChecked() ) + return 0; + + se = new seekEngine ( this ); + se->start_seek(); + delete se; return 0; +} + +void findDialog::dateStartChanged(int) { + if (cbDateStart->isChecked()) + deDateStart->setEnabled(true); + else + deDateStart->setEnabled(false); +} + +void findDialog::dateEndChanged(int) { + if (cbDateEnd->isChecked()) + deDateEnd->setEnabled(true); + else + deDateEnd->setEnabled(false); +} + +void findDialog::dateStartDoubleClicked() { + DEBUG_INFO_ENABLED = init_debug_info(); + if (*DEBUG_INFO_ENABLED) + std::cerr <<"dateStartDoubleClicked" <isChecked()) { + cbSizeUnitMin->setEnabled(true); + spSizeMin->setEnabled(true); + } + else { + cbSizeUnitMin->setEnabled(false); + spSizeMin->setEnabled(false); + } +} + +void findDialog::sizeMaxClicked() { + if(cbSizeMax->isChecked()) { + cbSizeUnitMax->setEnabled(true); + spSizeMax->setEnabled(true); + } + else { + cbSizeUnitMax->setEnabled(false); + spSizeMax->setEnabled(false); + } +} - se = new seekEngine(this); - se->start_seek(); - delete se; - return 0; - } /*************************************************************************** Seek engine Class ***************************************************************************/ -seekEngine::seekEngine(findDialog *fdp) - { - fd = fdp; - patt = new char[2048]; - } +seekEngine::seekEngine ( findDialog *fdp ) { + fd = fdp; + patt = new char[2048]; + re = new QRegExp(); +} /***************************************************************************/ -seekEngine::~seekEngine(void) - { - delete [] patt; - } -/***************************************************************************/ -int seekEngine::start_seek(void) - { - /*get the pattern*/ - strcpy(patt,(const char *)fd->leText->text()); - - /*recode the pattern /easy/ put ^$ and ? -> . * -> .* */ - if(fd->cbEasy->isChecked()) - easyFormConversion(patt); - - /*recode the pattern /Case sens/ lok -> [l|L][o|O][k|K] */ - if(!fd->cbCasesens->isChecked()) - caseSensConversion(patt); - - //fprintf(stderr,"The complete pattern is \"%s\"\n",patt); - - re = pcre_compile(patt,0,&error,&errptr,NULL); - - if(re == NULL) - { - sprintf(patt,"%s: %d",error,errptr); - QMessageBox::warning(fd,tr("Error in the pattern:"),patt,tr("Ok"),0); - return 1; - } - - hints = pcre_study(re,0,&error); - - if(error != NULL) - { - QMessageBox::warning(fd,tr("Error in the pattern:"),error,tr("Ok"),0); - return 1; - } - - pww=new PWw(fd); - pww->refreshTime=200; - progress(pww); - - fd->resultsl->clear(); - founded = 0; - - dirname = fd->cbDirname ->isChecked(); - filename = fd->cbFilename->isChecked(); - comment = fd->cbComment ->isChecked(); - tartist = fd->cbArtist ->isChecked(); - ttitle = fd->cbTitle ->isChecked(); - tcomment = fd->cbTcomm ->isChecked(); - talbum = fd->cbAlbum ->isChecked(); - content = fd->cbContent ->isChecked(); - - allmedia = false; - allowner = false; - - strcpy(media,(const char *)(fd->cbSin ->currentText())); - strcpy(owner,(const char *)(fd->cbOwner->currentText())); - - if(0 == fd->cbOwner->currentItem()) allowner = true; - if(0 == fd->cbSin ->currentItem()) allmedia = true; - - progress(pww); - /*seek...*/ - analyzeNode(fd->mainw->db->getRootNode()); - - if(founded == 0) - fd->resultsl->insertItem(new QListViewItem(fd->resultsl,tr("There is no matching."))); - - progress(pww); - pww->end(); - delete pww; - return 0; - } -/***************************************************************************/ -int seekEngine::analyzeNode(Node *n,Node *pa) - { - - if(n == NULL) return 0; - switch(n->type) - { - case HC_CATALOG: - analyzeNode(n->child); - return 0; - - case HC_MEDIA: - progress(pww); - - //It is necessary to analyze this media node? /Owner/Media/ - if((allmedia || (strcmp(media,n->getNameOf())==0)) && - (allowner || (strcmp(owner,((DBMedia *)(n->data))->owner)==0))) - { - if(dirname) - if(matchIt(n->getNameOf())) - { - putNodeToList(n); - analyzeNode(n->child); - analyzeNode(n->next); - return 0; - } - if(comment) - if(matchIt(((DBMedia *)(n->data))->comment)) - putNodeToList(n); - - analyzeNode(n->child); - } - analyzeNode(n->next ); - return 0; - - case HC_CATLNK: - analyzeNode(n->next); - return 0; - - case HC_DIRECTORY: - progress(pww); - - if(dirname) - if(matchIt(n->getNameOf())) - { - putNodeToList(n); - analyzeNode(n->child); - analyzeNode(n->next); - return 0; - } - - if(comment) - if(matchIt(((DBDirectory *)(n->data))->comment)) - putNodeToList(n); - - analyzeNode(n->child); - analyzeNode(n->next); - return 0; - - case HC_FILE: - if(filename) - if(matchIt(n->getNameOf())) - { - putNodeToList(n); - analyzeNode(n->next); - return 0; - } - if(comment) - if(matchIt(((DBFile *)(n->data))->comment)) - { - putNodeToList(n); - analyzeNode(n->next); - return 0; - - } - analyzeNode(((DBFile *)(n->data))->prop,n); - analyzeNode(n->next); - return 0; - - case HC_MP3TAG: - if(tartist) - if(matchIt(((DBMp3Tag *)(n->data))->artist)) - { - putNodeToList(pa); - return 0; - } - if(ttitle) - if(matchIt(((DBMp3Tag *)(n->data))->title)) - { - putNodeToList(pa); - return 0; - } - if(talbum) - if(matchIt(((DBMp3Tag *)(n->data))->album)) - { - putNodeToList(pa); +seekEngine::~seekEngine ( void ) { + delete [] patt; + delete re; +} +/***************************************************************************/ +int seekEngine::start_seek ( void ) { + DEBUG_INFO_ENABLED = init_debug_info(); + //get the pattern + if ( fd->cbEasy->isChecked() ) + strncpy ( patt, ( const char * ) ( ( QTextCodec::codecForLocale() )->fromUnicode ( "*"+fd->leText->text()+"*" ) ), 2047 ); + else + strncpy ( patt, ( const char * ) ( ( QTextCodec::codecForLocale() )->fromUnicode ( fd->leText->text() ) ), 2047 ); + + //recode the pattern /easy/ put ^$ and ? -> . * -> .* + if ( fd->cbEasy->isChecked() ) + easyFormConversion ( patt ); + + //recode the pattern /Case sens/ lok -> [l|L][o|O][k|K] + if ( !fd->cbCasesens->isChecked() ) + caseSensConversion ( patt ); + if(*DEBUG_INFO_ENABLED) + fprintf(stderr,"The complete pattern is \"%s\"\n",patt); +// re = pcre_compile ( patt,0,&error,&errptr,NULL ); + re->setPattern(QString( patt)); +// if ( !fd->cbEasy->isChecked() ) +// re->setPatternSyntax(QRegExp::Wildcard); +// else + re->setPatternSyntax(QRegExp::RegExp2); + +// if ( re == NULL ) { + if(!re->isValid()) { + QMessageBox::warning ( fd,tr ( "Error in the pattern:" ),QString(patt) ); + return 1; + } + + //// this tries to opimize pattern +// hints = pcre_study ( re,0,&error ); + +// if ( error != NULL ) { +// QMessageBox::warning ( fd,tr ( "Error in the pattern:" ),error ); +// return 1; +// } + fd->use_unsharpsearch = fd->cbUnsharpSearch->isChecked(); + + pww=new PWw ( fd ); + pww->refreshTime=200; + pww->setCancel(true); + pww->setProgressText(tr("Searching, please wait...")); + QObject::connect (pww, SIGNAL(cancelReceivedByUser(bool)), pww, SLOT(doCancelReceived(bool))); + progress ( pww ); + QApplication::setOverrideCursor ( Qt::waitCursor ); + + fd->resultsl->clear(); + founded = 0; + + dirname = fd->cbDirname ->isChecked(); + filename = fd->cbFilename->isChecked(); + comment = fd->cbComment ->isChecked(); + tartist = fd->cbArtist ->isChecked(); + ttitle = fd->cbTitle ->isChecked(); + tcomment = fd->cbTcomm ->isChecked(); + talbum = fd->cbAlbum ->isChecked(); + content = fd->cbContent ->isChecked(); + dateStartChecked = fd->cbDateStart ->isChecked(); + dateEndChecked = fd->cbDateEnd ->isChecked(); + dateStart = fd->deDateStart->dateTime(); + dateEnd = fd->deDateEnd->dateTime(); + sizeMinChecked = fd->cbSizeMin->isChecked(); + sizeMaxChecked = fd->cbSizeMax->isChecked(); + + if (sizeMinChecked) { + if(fd->cbSizeUnitMin->currentIndex() == 0) + size_min = fd->spSizeMin->value(); // Byte + else if(fd->cbSizeUnitMin->currentIndex() == 1) + size_min = fd->spSizeMin->value() * 1024; // KByte + else if(fd->cbSizeUnitMin->currentIndex() == 2) + size_min = fd->spSizeMin->value() * 1024 * 1024; // MByte + else if(fd->cbSizeUnitMin->currentIndex() == 3) + size_min = fd->spSizeMin->value() * 1024 * 1024 * 1024; // GByte +// std::cerr << "minsize checked, type "<< fd->cbSizeUnitMin->currentIndex() <<", min size " << size_min << endl; + } + + if (sizeMaxChecked) { + if(fd->cbSizeUnitMax->currentIndex() == 0) + size_max = fd->spSizeMax->value(); // Byte + else if(fd->cbSizeUnitMax->currentIndex() == 1) + size_max = fd->spSizeMax->value() * 1024; // KByte + else if(fd->cbSizeUnitMax->currentIndex() == 2) + size_max = fd->spSizeMax->value() * 1024 * 1024; // MByte + else if(fd->cbSizeUnitMax->currentIndex() == 3) + size_max = fd->spSizeMax->value() * 1024 * 1024 * 1024; // GByte +// std::cerr << "maxsize checked, type "<< fd->cbSizeUnitMax->currentIndex() <<", max size " << size_max << endl; + } + + allmedia = false; + allowner = false; + + media=fd->cbSin->currentText(); + owner=fd->cbOwner->currentText(); + + if ( 0 == fd->cbOwner->currentItem() ) allowner = true; + if ( 0 == fd->cbSin ->currentItem() ) allmedia = true; + + progress ( pww ); + /*seek...*/ + analyzeNode ( pww, fd->mainw->db->getRootNode() ); + if(pww->doCancel) { + QMessageBox::warning ( 0,tr ( "Search cancelled" ), tr ( "You have cancelled searching." )); + } + + if ( founded == 0 ) + fd->resultsl->insertItem ( new Q3ListViewItem ( fd->resultsl,tr ( "There is no matching." ) ) ); + + QObject::disconnect (pww, SIGNAL(cancelReceivedByUser(bool)), pww, SLOT(doCancelReceived(bool))); + progress ( pww ); + pww->end(); + + delete pww; + QApplication::restoreOverrideCursor(); + return 0; +} +/***************************************************************************/ +int seekEngine::analyzeNode (PWw *pww, Node *n,Node *pa ) { + + progress(pww); + if ( n == NULL || pww->doCancel ) return 0; + + bool isOk=false; + switch ( n->type ) { + case HC_CATALOG: + analyzeNode ( pww, n->child ); + return 0; + case HC_MEDIA: + progress ( pww ); + + //It is necessary to analyze this media node? /Owner/Media/ + if ( ( allmedia || ( media == n->getNameOf() ) ) && + ( allowner || ( owner == ( ( DBMedia * ) ( n->data ) )->owner ) ) ) { + if ( dirname ) { + if ( !matchIt ( n->getNameOf() ) ) { + isOk = false; + } + if ( dateStartChecked && !dateEndChecked) { + if ( (( DBMedia * )(n->data ))->modification >= dateStart ) { + isOk = true; + } + } + else if ( !dateStartChecked && dateEndChecked) { + if ( (( DBMedia * )(n->data ))->modification <= dateEnd ) { + isOk = true; + } + } + else if ( dateStartChecked && dateEndChecked) { + if ( (( DBMedia * )(n->data ))->modification >= dateStart && (( DBDirectory * )(n->data ))->modification <= dateEnd ) { + isOk = true; + } + } + + if (isOk) { + putNodeToList ( n ); + analyzeNode ( pww, n->child ); + analyzeNode ( pww, n->next ); + return 0; + } + } + + if ( comment ) + if ( matchIt ( ( ( DBMedia * ) ( n->data ) )->comment ) ) + putNodeToList ( n ); + + analyzeNode ( pww, n->child ); + } + analyzeNode ( pww, n->next ); + return 0; + + case HC_CATLNK: + analyzeNode ( pww, n->next ); + return 0; + + case HC_DIRECTORY: + progress ( pww ); + isOk = true; + if ( dirname ) { + if ( !matchIt ( n->getNameOf() ) ) { + isOk = false; + } + if ( dateStartChecked && !dateEndChecked) { + if ( (( DBDirectory * )(n->data ))->modification < dateStart ) { + isOk = false; + } + } + else if ( !dateStartChecked && dateEndChecked) { + if ( (( DBDirectory * )(n->data ))->modification > dateEnd ) { + isOk = false; + } + } + else if ( dateStartChecked && dateEndChecked) { + if ( (( DBDirectory * )(n->data ))->modification > dateStart && (( DBDirectory * )(n->data ))->modification > dateEnd ) { + isOk = false; + } + } + + if (isOk) { + putNodeToList ( n ); + analyzeNode ( pww, n->child ); + analyzeNode ( pww, n->next ); return 0; - } - if(tcomment) - if(matchIt(((DBMp3Tag *)(n->data))->comment)) - { - putNodeToList(pa); + } + } + + + if ( comment ) { + if ( matchIt ( ( ( DBDirectory * ) ( n->data ) )->comment ) ) { + putNodeToList ( n ); + } + } + + analyzeNode ( pww, n->child ); + progress(pww); + analyzeNode ( pww, n->next ); + return 0; + + case HC_FILE: + isOk = true; + if ( filename ) { + if ( !matchIt ( n->getNameOf() ) ) { + isOk = false; + } + } + if ( isOk && dateStartChecked && !dateEndChecked) { + if ( (( DBFile * )(n->data ))->modification < dateStart ) { + isOk = false; + } + } + else if (isOk && !dateStartChecked && dateEndChecked) { + if ( (( DBFile * )(n->data ))->modification > dateEnd ) { + isOk = false; + } + } + else if ( isOk && dateStartChecked && dateEndChecked) { + if ( (( DBFile * )(n->data ))->modification < dateStart || (( DBFile * )(n->data ))->modification > dateEnd ) { + isOk = false; + } + } + + if ( isOk && sizeMinChecked && !sizeMaxChecked) { + float real_size = 0.0; + float real_size_min = 0.0; + switch ( ( ( DBFile * ) ( n->data ) )->sizeType ) { + case 0: + real_size = ( ( ( DBFile * ) ( n->data ) )->size ) / ( 1024.0*1024.0 ); + real_size_min = size_min; + break; //byte + case 1: + real_size = ( ( ( DBFile * ) ( n->data ) )->size ) /1024.0; + real_size_min = size_min / 1024.0; + break; //Kb + case 2: + real_size = ( ( ( DBFile * ) ( n->data ) )->size ); + real_size_min = size_min / 1024.0 / 1024.0; + break; //Mb + case 3: + real_size = ( ( ( DBFile * ) ( n->data ) )->size ) *1024.0; + real_size_min = size_min / 1024.0 / 1024.0/1024.0; + break; //Gb + } +// std::cerr << "minsize checked, min size " << real_size_min << " ~ " << real_size<< endl; + if ( real_size < real_size_min ) { + isOk = false; + } + } + if ( isOk && !sizeMinChecked && sizeMaxChecked) { + float real_size = 0.0; + float real_size_max = 0.0; + switch ( ( ( DBFile * ) ( n->data ) )->sizeType ) { + case 0: + real_size = ( ( ( DBFile * ) ( n->data ) )->size ) / ( 1024.0*1024.0 ); + real_size_max = size_max; + break; //byte + case 1: + real_size = ( ( ( DBFile * ) ( n->data ) )->size ) /1024.0; + real_size_max = size_max / 1024.0; + break; //Kb + case 2: + real_size = ( ( ( DBFile * ) ( n->data ) )->size ); + real_size_max = size_max / 1024.0 / 1024.0; + break; //Mb + case 3: + real_size = ( ( ( DBFile * ) ( n->data ) )->size ) *1024.0; + real_size_max = size_max / 1024.0 / 1024.0/1024.0; + break; //Gb + } +// std::cerr << "size type: "<< ( ( DBFile * ) ( n->data ) )->sizeType <<", maxsize checked, max size " << real_size_max << " ~ " << real_size << endl; + if ( real_size > real_size_max ) { + isOk = false; + } + } + if ( isOk && sizeMinChecked && sizeMaxChecked) { + float real_size = 0.0; + float real_size_min = 0.0; + float real_size_max = 0.0; + switch ( ( ( DBFile * ) ( n->data ) )->sizeType ) { + case 0: + real_size = ( ( ( DBFile * ) ( n->data ) )->size ) / ( 1024.0*1024.0 ); + real_size_min = size_min; + real_size_max = size_max; + break; //byte + case 1: + real_size = ( ( ( DBFile * ) ( n->data ) )->size ) /1024.0; + real_size_min = size_min / 1024.0; + real_size_max = size_max / 1024.0; + break; //Kb + case 2: + real_size = ( ( ( DBFile * ) ( n->data ) )->size ); + real_size_min = size_min / 1024.0 / 1024.0; + real_size_max = size_max / 1024.0 / 1024.0; + break; //Mb + case 3: + real_size = ( ( ( DBFile * ) ( n->data ) )->size ) *1024.0; + real_size_min = size_min / 1024.0 / 1024.0/1024.0; + real_size_max = size_max / 1024.0 / 1024.0/1024.0; + break; //Gb + } +// std::cerr << "min & maxsize checked, min size " << real_size_min << "/max size " << real_size_max << " ~ " << real_size << endl; + if ( real_size < real_size_min || real_size > real_size_max ) { + isOk = false; + } + } + if(isOk){ + putNodeToList ( n ); + analyzeNode ( pww, n->next ); return 0; - } - - analyzeNode(n->next,pa); - return 0; - case HC_CONTENT: - if(content) - if(matchIt((const char *)((DBContent *)(n->data))->bytes)) - { - putNodeToList(pa); + } + + if ( comment ) { + if ( !matchIt ( ( ( DBFile * ) ( n->data ) )->comment ) ) { + isOk = false; + } + if (isOk) { + putNodeToList ( n ); + analyzeNode (pww, n->next ); return 0; - } - analyzeNode(n->next,pa); - return 0; + } + } + + analyzeNode ( pww, ( ( DBFile * ) ( n->data ) )->prop,n ); + analyzeNode (pww, n->next ); + return 0; + + case HC_MP3TAG: + if ( tartist ) + if ( matchIt ( ( ( DBMp3Tag * ) ( n->data ) )->artist ) ) { + putNodeToList ( pa ); + return 0; + } + if ( ttitle ) + if ( matchIt ( ( ( DBMp3Tag * ) ( n->data ) )->title ) ) { + putNodeToList ( pa ); + return 0; + } + if ( talbum ) + if ( matchIt ( ( ( DBMp3Tag * ) ( n->data ) )->album ) ) { + putNodeToList ( pa ); + return 0; + } + if ( tcomment ) + if ( matchIt ( ( ( DBMp3Tag * ) ( n->data ) )->comment ) ) { + putNodeToList ( pa ); + return 0; + } + + analyzeNode ( pww, n->next,pa ); + return 0; + case HC_CONTENT: + if ( content ) + if ( matchIt ( QString::fromLocal8Bit ( ( const char * ) ( ( DBContent * ) ( n->data ) )->bytes ) ) ) { + putNodeToList ( pa ); + return 0; + } + analyzeNode (pww, n->next,pa ); + return 0; } - return -1; - } + return -1; +} + +int seekEngine::matchIt ( QString txt ) { + //const char *encoded; + int match; + if ( txt.isEmpty() ) + return 0; + if(!fd->use_unsharpsearch) { + //encoded = ( const char * ) ( ( QTextCodec::codecForLocale() )->fromUnicode ( txt ) ); + //match = pcre_exec ( re,hints,encoded,strlen ( encoded ),0,0,offsets,99 ); + //match = re->exactMatch (QString( encoded)); + match = re->exactMatch (QString( txt)); + //cerr << "matchit: " << qPrintable(txt) << " <==> " << qPrintable(re->pattern()) <<" result: " << match << endl; + + if ( match == 1 ) + return 1; + } + else { + if (fd->cbCasesens->isChecked()) { + if (matchUnsharp(fd->leText->text().toLocal8Bit().data(), txt.toLocal8Bit().data())) + return 1; + } + else { + if (matchUnsharp(fd->leText->text().toLower().toLocal8Bit().data(), txt.toLower().toLocal8Bit().data())) + return 1; + } + } + return 0; +} + +bool seekEngine::matchUnsharp(char* matchpattern, char* str){ + DEBUG_INFO_ENABLED = init_debug_info(); + if(matchpattern == NULL || str == NULL) + return false; + + int match = -1; + int matchpattern_len=strlen(matchpattern); + MString m_matchpattern (matchpattern, matchpattern_len); + QString res_matchpattern_str1, res_matchpattern_str2; + m_matchpattern.DoubleMetaphone (res_matchpattern_str1, res_matchpattern_str2); + + MString m_str (str, matchpattern_len); + QString res_str_str1, res_str_str2; + m_str.DoubleMetaphone (res_str_str1, res_str_str2); + + match = res_str_str1.indexOf (res_matchpattern_str1); + + if (*DEBUG_INFO_ENABLED) + cerr << "matchUnsharp: " << matchpattern << " (" << qPrintable(res_matchpattern_str1) << ") <=> " << str << " (" << qPrintable(res_str_str1) << ") ===> " << match << endl; + + if(match > -1) + return true; + else + return false; +} + +void seekEngine::putNodeToList ( Node *n ) { + + Node *tmp; + QString type; + QString size_str; + QString media; + QDateTime mod; + + if ( n == NULL ) return; + + switch ( n->type ) { + case HC_MEDIA: + type = tr ( "media" ); + mod = ( ( DBMedia * ) ( n->data ) )->modification; + break; -int seekEngine::matchIt(const char *txt) - { - if(txt == NULL) return 0; - - int match = pcre_exec(re,hints,txt,strlen(txt),0,0,offsets,99); - if(match == 1) return 1; - return 0; - } - -void seekEngine::putNodeToList(Node *n) - { - - Node *tmp; - char type[30]; - char media[128]; - char mod[30]; - - if(n == NULL) return; - - switch(n->type) - { - case HC_MEDIA: strcpy(type,(const char *)tr("media")); - strcpy(mod,((DBMedia *)(n->data))->modification); + case HC_DIRECTORY: + type = tr ( "dir" ); + mod = ( ( DBDirectory * ) ( n->data ) )->modification; break; - - case HC_DIRECTORY: strcpy(type,(const char *)tr("dir")); - strcpy(mod,((DBDirectory *)(n->data))->modification); + case HC_FILE: + type = tr ( "file" ); + size_str = QString().sprintf ( "%.1f",( ( DBFile * ) ( n->data ) )->size); + size_str += QString(getSType ( ( ( DBFile * ) ( n->data ) )->sizeType, true )); + mod = ( ( DBFile * ) ( n->data ) )->modification; break; - case HC_FILE: sprintf(type,"%s/ %.1f%s",(const char *)tr("file"), - ((DBFile *)(n->data))->size, - getSType(((DBFile *)(n->data))->sizeType)); - strcpy(mod,((DBFile *)(n->data))->modification); - break; - default: strcpy(type,(const char *)tr("error")); + default: type = tr ( "error" ); break; - } - tmp=n; - while(tmp->type != HC_MEDIA) - tmp=tmp->parent; - - sprintf(media,"%s/%d",tmp->getNameOf(),((DBMedia *)(tmp->data))->number); - - fd->resultsl->insertItem(new QListViewItem(fd->resultsl, - n->getNameOf(), - type, - media, - n->getFullPath(), - mod - )); - progress(pww); - founded++; - } + } + tmp=n; + while ( tmp->type != HC_MEDIA ){ + tmp=tmp->parent; + progress(pww); + } + + media = tmp->getNameOf() + "/" + QString().setNum ( ( ( DBMedia * ) ( tmp->data ) )->number ); + + + + fd->resultsl->insertItem ( new Q3ListViewItem ( fd->resultsl, + n->getNameOf(), + type, + size_str, + media, + n->getFullPath(), + date_to_str ( mod ) + ) ); + progress ( pww ); + founded++; +} -/***************************************************************************/ diff -Nru cdcat-1.01b/src/find.h cdcat-1.2/src/find.h --- cdcat-1.01b/src/find.h 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/find.h 2011-02-10 11:08:23.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** - Hyper's CD Catalog + Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -13,85 +13,109 @@ #include #include #include -#include - -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; +//Added by qt3to4: +#include +#include +#include +#include +#include +#include +// #include +#include +#include + +class Q3VBoxLayout; +class Q3HBoxLayout; +class Q3GridLayout; class QCheckBox; class QComboBox; -class QFrame; +class Q3Frame; class QLabel; class QLineEdit; -class QListView; -class QListViewItem; -class QHBoxLayout; -class QVBoxLayout; +class Q3ListView; +class Q3ListViewItem; +class Q3HBoxLayout; +class Q3VBoxLayout; +class QSpinBox; class QPushButton; +class DateTimeEdit; class CdCatMainWidget; +class QComboBox; class findDialog; class Node; class PWw; -class seekEngine : public QObject - { - Q_OBJECT - private: - int founded; - PWw *pww; - pcre *re; - char *patt; - int offsets[99]; - pcre_extra *hints; - const char *error; - int errptr; - - findDialog *fd; - - int analyzeNode (Node *n,Node *pa=NULL); - void putNodeToList(Node *n); - int matchIt (const char *txt); - - public: - seekEngine(findDialog *fdp); - ~seekEngine(void); - - int start_seek(void); - - private: - bool dirname; - bool filename; - bool comment; - bool tartist; - bool ttitle; - bool talbum; - bool tcomment; - bool content; - - bool allmedia; - bool allowner; - - char media[128]; - char owner[128]; - }; +class seekEngine : public QObject { + Q_OBJECT +private: + int founded; + PWw *pww; +// pcre *re; + QRegExp *re; + + char *patt; + int offsets[99]; +// pcre_extra *hints; + const char *error; + int errptr; + + findDialog *fd; + + int analyzeNode ( PWw *pww, Node *n,Node *pa=NULL ); + void putNodeToList ( Node *n ); + int matchIt ( QString txt ); + bool matchUnsharp(char *a, char *b); + +public: + seekEngine ( findDialog *fdp ); + ~seekEngine ( void ); + + int start_seek ( void ); + +private: + bool dirname; + bool filename; + bool comment; + bool tartist; + bool ttitle; + bool talbum; + bool tcomment; + bool content; + + bool allmedia; + bool allowner; + + bool dateStartChecked; + bool dateEndChecked; + bool sizeMinChecked; + bool sizeMaxChecked; + + QString media; + QString owner; + + QDateTime dateStart; + QDateTime dateEnd; + + int size_min; + int size_max; +}; /***********************************************************************/ - -class findDialog : public QDialog -{ + +class findDialog : public QDialog { Q_OBJECT public: - findDialog(CdCatMainWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); + findDialog ( CdCatMainWidget* parent = 0, const char* name = 0, bool modal = FALSE, Qt::WFlags fl = 0 ); ~findDialog(); - - QFrame *input; - QHBoxLayout *h1,*h2,*h3,*h4; - QVBoxLayout *v1; + + Q3Frame *input; + Q3HBoxLayout *h1,*h2,*h3,*h4; + Q3VBoxLayout *v1; CdCatMainWidget *mainw; QPushButton* buttonClose; - QFrame* line1; + Q3Frame* line1; QComboBox* cbOwner; QComboBox* cbSin; QPushButton* buttonCancel; @@ -100,9 +124,19 @@ QLabel* textLabel1; QLabel* textLabel2; QLabel* textLabel5; - QFrame* line2; - QListView* resultsl; + QLabel* textLabel6; + QLabel* textLabel7; + QLabel* textLabel8; + Q3Frame* line2; + Q3ListView* resultsl; QLineEdit* leText; + QSpinBox* spSizeMin; + QSpinBox* spSizeMax; + QComboBox *cbSizeUnitMin; + QComboBox *cbSizeUnitMax; + + QDateTimeEdit* deDateStart; + QDateTimeEdit* deDateEnd; QCheckBox* cbComment; QCheckBox* cbFilename; QCheckBox* cbDirname; @@ -113,29 +147,45 @@ QCheckBox* cbCasesens; QCheckBox* cbEasy; QCheckBox* cbContent; + QCheckBox* cbDateStart; + QCheckBox* cbDateEnd; + QCheckBox* cbSizeMin; + QCheckBox* cbSizeMax; + QCheckBox* cbUnsharpSearch; + + bool use_unsharpsearch; // if unsharp match should be used protected: - int fillCBox(void); - void closeEvent(QCloseEvent *ce); - - QGridLayout* FindDialogBaseLayout; - QVBoxLayout* layout40; - QGridLayout* layout39; - QGridLayout* layout36; - QGridLayout* layout37; - QVBoxLayout* layout31; - QHBoxLayout* layout17; - QGridLayout* layout15; - QHBoxLayout* layout30; - QGridLayout* layout16; + int fillCBox ( void ); + void closeEvent ( QCloseEvent *ce ); + + Q3GridLayout* FindDialogBaseLayout; + Q3VBoxLayout* layout40; + Q3GridLayout* layout39; + Q3GridLayout* layout36; + Q3GridLayout* layout37; + Q3VBoxLayout* layout31; + Q3HBoxLayout* layout17; + Q3GridLayout* layout15; + Q3HBoxLayout* layout30; + Q3GridLayout* layout16; + Q3HBoxLayout* layout_size_min; + Q3HBoxLayout* layout_size_max; protected slots: virtual void languageChange(); - int select (QListViewItem *i); - int closee (void); - int cancele(void); - int seeke (void); - int saveState(void); + int select ( Q3ListViewItem *i ); + int closee ( void ); + int cancele ( void ); + int seeke ( void ); + int saveState ( void ); + void dateStartChanged(int); + void dateEndChanged(int); + void dateStartDoubleClicked(); + void dateEndDoubleClicked(); + void sizeMinClicked(); + void sizeMaxClicked(); + }; #endif // FINDDIALOG_H diff -Nru cdcat-1.01b/src/guibase.cpp cdcat-1.2/src/guibase.cpp --- cdcat-1.01b/src/guibase.cpp 2005-09-19 20:29:33.000000000 +0000 +++ cdcat-1.2/src/guibase.cpp 2011-03-05 10:01:59.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -9,18 +9,28 @@ #include -#include +#include #include #include -#include +#include #include #include #include #include -#include +#include +#include #include #include +//Added by qt3to4: +#include +#include +#include +#include + +#include +#include +#include #ifndef _WIN32 @@ -36,7 +46,6 @@ #include "colorsettings.h" #include "dbase.h" #include "cdcat.h" -#include "recode.h" #include "wdbfile.h" #include "commwidget.h" #include "hdirview.h" @@ -44,1726 +53,1964 @@ #include "adddialog.h" #include "find.h" #include "config.h" -#include "help.h" +#include "ui_help.h" #include "import.h" #include "exportcdcatdb.h" #include "info.h" #include "showcontent.h" - #include "icons.h" +#include "misc.h" + + + +#include +using namespace std; + + char *rbuff=NULL; CdCatConfig *glob_conf; -void GuiSlave::checkversion(QWidget *p,DataBase *db) - { - if(db == NULL) return; - if((db->getRootNode()) == NULL) return; - if(((db->getRootNode())->data) == NULL) return; - - QString fv=((DBCatalog *)((db->getRootNode())->data))->fileversion; - - if(fv.isEmpty()) //vers < 1.2 - return; - - if(fv == "1.2") return; - if(fv == "1.3") return; - if(fv == "1.4") return; - - QMessageBox::warning(p,tr("Warning..."), - tr( -"The database file has newer version than this version of cdcat can work with:\n\ +void GuiSlave::checkversion ( QWidget *p,DataBase *db ) { + if ( db == NULL ) return; + if ( ( db->getRootNode() ) == NULL ) return; + if ( ( ( db->getRootNode() )->data ) == NULL ) return; + + QString fv= ( ( DBCatalog * ) ( ( db->getRootNode() )->data ) )->fileversion; + + if ( fv.isEmpty() ) //vers < 1.2 + return; + + if ( fv == "1.2" ) return; + if ( fv == "1.3" ) return; + if ( fv == "1.4" ) return; + if ( fv == "2.0" ) return; + if ( fv == "2.1" ) return; + + QMessageBox::warning ( p,tr ( "Warning..." ), + tr ( + "The database file has newer version than this version of cdcat can work with:\n\ I understand maximum %1 datafile version but readed %2\n\n\ Strongly recommended to upgrade your cdcat!!!\n\ -Homepage: %3").arg(DVERS).arg(fv).arg(HOMEPAGE) - ,tr("Ok"),0); - - } +Homepage: %3" ).arg ( DVERS ).arg ( fv ).arg ( HOMEPAGE ) ); +} -GuiSlave::GuiSlave(CdCatMainWidget *p) - { - mainw=p; +GuiSlave::GuiSlave ( CdCatMainWidget *p ) { + mainw=p; + standON = NULL; + tmpParent = NULL; + if ( mainw->db != NULL ) { + updateListFromNode ( mainw->db->getRootNode() ); + standOn ( mainw->listView->currentItem() ); + } + glob_conf = p->cconfig; +} - standON = NULL; - tmpParent = NULL; - if(mainw->db != NULL) - { - updateListFromNode(mainw->db->getRootNode()); - standOn(mainw->listView->currentItem()); - } - glob_conf = p->cconfig; - } +void GuiSlave::updateStatusl ( Node *n ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if (*DEBUG_INFO_ENABLED) + std::cerr <<"F-updateStatusl" << endl; + + QString o ( "" ); + if ( n == NULL ) { + if ( mainw->db == NULL ) + mainw->statusl->setText ( tr ( "No database opened." ) ); + else + mainw->statusl->setText ( tr ( "No item selected." ) ); + return; + } + if(*DEBUG_INFO_ENABLED) + cerr<<"F-updateStatusl: " << qPrintable(n->getFullPath())<statusl->setText ( n->getFullPath() ); +} -void GuiSlave::updateStatusl(Node *n) - { - QString o(""); - if(n == NULL) - { - if(mainw->db == NULL) - mainw->statusl->setText(tr("No database opened.")); - else - mainw->statusl->setText(tr("No item selected.")); - return; - } - mainw->statusl->setText(n->getFullPath()); - } +int GuiSlave::isIdentical ( int i ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if (*DEBUG_INFO_ENABLED) + std::cerr <<"F-isIdentical" << endl; + Node *t; + + if ( mainw->db == NULL ) return 1; + t=mainw->db->getRootNode(); + if ( t->child == NULL ) return 1; + t = t->child; + while ( t != NULL ) { + if ( t->type == HC_MEDIA ) + if ( ( ( DBMedia * ) ( t->data ) )->number == i ) return 0; -int GuiSlave::isIdentical(int i) - { - Node *t; - - if(mainw->db == NULL) return 1; - t=mainw->db->getRootNode(); - if(t->child == NULL) return 1; - t = t->child; - while(t != NULL) - { - if(t->type == HC_MEDIA) - if(((DBMedia *)(t->data))->number == i) return 0; - - t = t->next; - } - return 1; - } + t = t->next; + } + return 1; +} -bool GuiSlave::haveContent(Node *node) - { - bool need_showc = false; - Node *tmp = NULL; - - if(node == NULL) - return false; - - if(node->type == HC_FILE && ((DBFile *)(node->data))->prop != NULL) - { - tmp=((DBFile *)(node->data))->prop; - while(tmp != NULL) - { - if(tmp->type == HC_CONTENT) - { - need_showc = true; +bool GuiSlave::haveContent ( Node *node ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if(*DEBUG_INFO_ENABLED) + cerr<<"F-haveContent"<type == HC_FILE && ( ( DBFile * ) ( node->data ) )->prop != NULL ) { + tmp= ( ( DBFile * ) ( node->data ) )->prop; + while ( tmp != NULL ) { + if ( tmp->type == HC_CONTENT ) { + need_showc = true; } - tmp = tmp->next; + tmp = tmp->next; } - } - return need_showc; - } + } + return need_showc; +} -int GuiSlave::isIdentical(QString q) - { - Node *t; - - if(mainw->db == NULL) return 1; - t=mainw->db->getRootNode(); - if(t->child == NULL) return 1; - t = t->child; - while(t != NULL) - { - if(t->type == HC_MEDIA) - if(strcmp(((DBMedia *)(t->data))->name,(const char *)q) == 0) return 0; +int GuiSlave::isIdentical ( QString q ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if (*DEBUG_INFO_ENABLED) + cerr<<"F-isIdentical"<db == NULL ) return 1; + t=mainw->db->getRootNode(); + if ( t->child == NULL ) return 1; + t = t->child; + while ( t != NULL ) { + if ( t->type == HC_MEDIA ) + if ( ( ( DBMedia * ) ( t->data ) )->name == q ) return 0; - t = t->next; - } - return 1; - } + t = t->next; + } + return 1; +} +Node *GuiSlave::getNodeFromFullName ( Node *root,const QString& newloc ) { + QString name; + DEBUG_INFO_ENABLED = init_debug_info(); + /*------------*/ + Node *tmp=NULL; + Node *step = root; + int down = 0; + QStringList strl = newloc.split ( '/' ); + int index=1; + + while ( index != strl.size() ) { +// cerr << "index: " << index << endl; + name= strl.at ( index-1 ); + if(*DEBUG_INFO_ENABLED) + cerr << "new name: " << qPrintable(name) << endl; + + if ( down == 0 ) { + //if(*DEBUG_INFO_ENABLED) + // cerr << "step->getNameOf(): " << qPrintable(step->getNameOf()) << endl; + if ( QString ( name ) != step->getNameOf() ) + return NULL; /* error Not matching catalog name! */ + down++; + } else { + tmp=step->child; + if ( tmp==NULL ) + return NULL; /* I couldn't find the requested element! */ + + //if(*DEBUG_INFO_ENABLED) + // cerr << "1 tmp->getNameOf(): " << qPrintable(tmp->getNameOf()) << endl; + while ( tmp->getNameOf() != QString ( name ) ) { + tmp=tmp->next; + //if(*DEBUG_INFO_ENABLED) + // cerr << "2 tmp->getNameOf(): " << qPrintable(tmp->getNameOf()) << endl; + if ( tmp==NULL ) + return NULL; /* I couldn't find the requested element! */ + down++; + } + step=tmp; + } + index++; + } + return step; +} -Node *GuiSlave::getNodeFromFullName(Node *root,const QString& newloc) - { - int i=0,ki=0; + +/* + int i=0,out=0; char *org; char *re_name; char name[256]; - /*------------*/ + //------------// Node *tmp=NULL; Node *step = root; int down = 0; org=re_name=mstr((const char *)newloc); - - while(!ki) + + while(!out) { for(i=0;re_name[i]!='/' && re_name[i]!='\0';i++ ) name[i]=re_name[i]; if(re_name[i]=='\0') { - ki=1; + out=1; continue; } - name[i]='\0'; // <- ittvan + name[i]='\0'; // <- if(down == 0 ) { if(strcmp(name,step->getNameOf())) - return NULL; /*error Not matching catalog name!*/ - down++; + return NULL; //error Not matching catalog name! + down++; } else { tmp=step->child; - if(tmp==NULL) + if(tmp==NULL) return NULL; //I couldn't find the requested element! - - while(strcmp(tmp->getNameOf(),name)) + + while(strcmp(tmp->getNameOf(),name)) { tmp=tmp->next; - if(tmp==NULL) + if(tmp==NULL) return NULL; //I couldn't find the requested element! - down++; + down++; } step=tmp; - } + } re_name+=(strlen(name)+1); } delete [] org; - return step; + return step; } + */ -int GuiSlave::listUpdate(const QString& newloc) - { - if(mainw->db == NULL) return 0; - Node *pdir = getNodeFromFullName(mainw->db->getRootNode(),newloc); - updateStatusl(pdir); - mainw->commentWidget->showNode(pdir,0); - standON = NULL; - return updateListFromNode(pdir); - } +int GuiSlave::listUpdate ( const QString& newloc ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if (*DEBUG_INFO_ENABLED) + cerr<<"F-listUpdate 1 newloc: " << qPrintable(newloc)<db == NULL ) { + return 0; + } + Node *pdir = getNodeFromFullName ( mainw->db->getRootNode(), newloc ); + if (*DEBUG_INFO_ENABLED) + cerr<<"F-listUpdate: 2 newloc: " << qPrintable ( newloc ) <getNameOf() ) < we are now on " << qPrintable(pdir->getNameOf()) << endl; + } + else { + if(*DEBUG_INFO_ENABLED) + cerr<<"F-listUpdate: pdir: null" <commentWidget->showNode ( pdir, 0 ); + standON = NULL; + return updateListFromNode ( pdir ); +} -int GuiSlave::updateListFromNode(Node *pdir) - { - int fflag=0; - Node *tmp; - HQListViewItem *lvi=NULL; - char str1[128]; - char str2[36]; +int GuiSlave::updateListFromNode ( Node *pdir ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if(*DEBUG_INFO_ENABLED) + cerr<<"F-updateListFromNode"<listView->clear(); - return 0; - } - - mainw->listView->clear(); - mainw->listView->setSorting(mainw->listView->scol,mainw->listView->sasc); - - //Set column text: - if(pdir != NULL && pdir->type == HC_CATALOG) - { - mainw->listView->setColumnText(1,tr("Number")); - } - else - { - mainw->listView->setColumnText(1,tr("Size")); - } - - - if(pdir->parent != NULL) - { - lvi = new HQListViewItem(mainw->listView,"..","",tr("Directory")); - lvi->setPixmap(0,*get_v_back_icon()); - lvi->etype = 0; + if ( pdir == NULL ) { + mainw->listView->clear(); + return 0; } - - NodePwd = pdir; - tmp=pdir->child; - /*List everithing*/ + mainw->listView->clear(); + mainw->listView->setSorting ( mainw->listView->scol,mainw->listView->sasc ); - while(tmp != NULL) - { - if(tmp->type == HC_MP3TAG) - return 1; //Error - - // 2.(size) Column name: - - if(tmp->type == HC_FILE) - { - sprintf(str1,"%.2f %s",((DBFile *)(tmp->data))->size, - getSType(((DBFile *)(tmp->data))->sizeType)); - } - else if(tmp->type == HC_MEDIA) - { - sprintf(str1,"%d",((DBMedia *)(tmp->data))->number); - } - else - { - sprintf(str1," "); - } - - // 3. Column name: - switch(tmp->type) - { - case HC_CATALOG : strcpy(str2,tr("Catalog")); break; - case HC_MEDIA : - switch(((DBMedia*)(tmp->data))->type) - { - case UNKNOWN : strcpy(str2,tr("Unknown(DB)")); break; - case CD : strcpy(str2,tr("CD")); break; - case DVD : strcpy(str2,tr("DVD")); break; - case HARDDISC: strcpy(str2,tr("HardDisc")); break; - case FLOPPY : strcpy(str2,tr("Floppy")); break; - case NETPLACE: strcpy(str2,tr("NetworkDrv")); break; - case FLASHDRV: strcpy(str2,tr("FlashDrv")); break; - case OTHERD : strcpy(str2,tr("OtherDevice")); break; - } - break; - case HC_DIRECTORY: strcpy(str2,tr("Directory")); break; - case HC_FILE: strcpy(str2,tr("File")); break; - case HC_CATLNK: strcpy(str2,tr("Catalog Link")); break; - } + //Set column text: + if ( pdir != NULL && pdir->type == HC_CATALOG ) { + mainw->listView->setColumnText ( 1,tr ( "Number" ) ); + } else { + mainw->listView->setColumnText ( 1,tr ( "Size" ) ); + } - lvi = new HQListViewItem(mainw->listView,tmp->getNameOf(),str1,str2); - switch(tmp->type) - { - case HC_CATALOG : lvi->etype = 0; break; - case HC_MEDIA : lvi->etype = 3; break; - case HC_DIRECTORY: lvi->etype = 1; break; - case HC_FILE : lvi->etype = 2; break; - case HC_CATLNK : lvi->etype = (mainw->cconfig->linkf ? 0 : 4 ); break; - } + if ( pdir->parent != NULL ) { + lvi = new HQListViewItem ( mainw->listView,"..","",tr ( "Directory" ) ); + lvi->setPixmap ( 0,*get_v_back_icon() ); + lvi->etype = 0; + } - switch(tmp->type) - { - case HC_CATALOG : break; - case HC_MEDIA: - switch(((DBMedia*)(tmp->data))->type) - { - case UNKNOWN : lvi->setPixmap(0,*get_m_unknown_icon()); break; - case CD : lvi->setPixmap(0,*get_m_cd_icon()); break; - case DVD : lvi->setPixmap(0,*get_m_dvd_icon()); break; - case HARDDISC: lvi->setPixmap(0,*get_m_hdd_icon()); break; - case FLOPPY : lvi->setPixmap(0,*get_m_floppy_icon()); break; - case NETPLACE: lvi->setPixmap(0,*get_m_net_icon()); break; - case FLASHDRV: lvi->setPixmap(0,*get_m_flash_icon()); break; - case OTHERD : lvi->setPixmap(0,*get_m_other_icon()); break; - } - break; - case HC_DIRECTORY: lvi->setPixmap( 0,*get_v_folderclosed_icon()); break; - case HC_FILE: lvi->setPixmap( 0,*get_v_file_icon() ); break; - case HC_CATLNK: lvi->setPixmap( 0,*get_p_icon() ); break; - } + NodePwd = pdir; + tmp=pdir->child; + + /*List everything*/ - if(tmpParent != NULL)/*Return to previous parent*/ - { - if(!strcmp(tmp->getNameOf(),tmpParent->getNameOf())) - { - mainw->listView->setCurrentItem(lvi); - tmpParent = NULL; - fflag = 1; + while ( tmp != NULL ) { + if ( tmp->type == HC_MP3TAG ) + return 1; //Error + + // 2.(size) Column name: + + if ( tmp->type == HC_FILE ) { + QString filetype = " "+tr(getSType ( ( ( DBFile * ) ( tmp->data ) )->sizeType, true )); +// cerr << "file type " << qPrintable(filetype) << endl; + if (filetype == " " || filetype.isEmpty()) + filetype = " "+getSType ( ( ( DBFile * ) ( tmp->data ) )->sizeType, false ); + qstr1.sprintf ( "%.2f", ( ( DBFile * ) ( tmp->data ) )->size); + qstr1 = qstr1 +filetype; } - } - - tmp=tmp->next; - } + else if ( tmp->type == HC_MEDIA ) + qstr1.setNum ( ( ( DBMedia * ) ( tmp->data ) )->number ); + else + qstr1 = " "; + + + // 3. Column name: + switch ( tmp->type ) { + case HC_CATALOG : qstr2 =tr ( "Catalog" ); break; + case HC_MEDIA : + switch ( ( ( DBMedia* ) ( tmp->data ) )->type ) { + case UNKNOWN : qstr2=tr ( "Unknown(DB)" ); break; + case CD : qstr2=tr ( "CD" ); break; + case DVD : qstr2=tr ( "DVD" ); break; + case HARDDISC: qstr2=tr ( "HardDisc" ); break; + case FLOPPY : qstr2=tr ( "Floppy" ); break; + case NETPLACE: qstr2=tr ( "NetworkDrv" ); break; + case FLASHDRV: qstr2=tr ( "FlashDrv" ); break; + case OTHERD : qstr2=tr ( "OtherDevice" ); break; + } + break; + case HC_DIRECTORY: qstr2=tr ( "Directory" ); break; + case HC_FILE: qstr2=tr ( "File" ); break; + case HC_CATLNK: qstr2=tr ( "Catalog Link" ); break; + } - mainw->listView->setSorting(mainw->listView->scol,mainw->listView->sasc); + //if(*DEBUG_INFO_ENABLED) + // cerr <<"GETNAMEOF-----------"<getNameOf() ) <getNameOf(); +//!!! +//valami.append("---1"); + //if(*DEBUG_INFO_ENABLED) + // cerr <<"GETNAMEOF-----------"<listView,valami,qstr1,qstr2 ); + + switch ( tmp->type ) { + case HC_CATALOG : lvi->etype = 0; break; + case HC_MEDIA : lvi->etype = 3; break; + case HC_DIRECTORY: lvi->etype = 1; break; + case HC_FILE : lvi->etype = 2; break; + case HC_CATLNK : lvi->etype = ( mainw->cconfig->linkf ? 0 : 4 ); break; + } - if(!fflag) - mainw->listView->setCurrentItem(mainw->listView->firstChild()); + switch ( tmp->type ) { + case HC_CATALOG : break; + case HC_MEDIA: + switch ( ( ( DBMedia* ) ( tmp->data ) )->type ) { + case UNKNOWN : lvi->setPixmap ( 0,*get_m_unknown_icon() ); break; + case CD : lvi->setPixmap ( 0,*get_m_cd_icon() ); break; + case DVD : lvi->setPixmap ( 0,*get_m_dvd_icon() ); break; + case HARDDISC: lvi->setPixmap ( 0,*get_m_hdd_icon() ); break; + case FLOPPY : lvi->setPixmap ( 0,*get_m_floppy_icon() ); break; + case NETPLACE: lvi->setPixmap ( 0,*get_m_net_icon() ); break; + case FLASHDRV: lvi->setPixmap ( 0,*get_m_flash_icon() ); break; + case OTHERD : lvi->setPixmap ( 0,*get_m_other_icon() ); break; + } + break; + case HC_DIRECTORY: lvi->setPixmap ( 0,*get_v_folderclosed_icon() ); break; + case HC_FILE: lvi->setPixmap ( 0,*get_v_file_icon() ); break; + case HC_CATLNK: lvi->setPixmap ( 0,*get_p_icon() ); break; + } - mainw->listView->changed(); - mainw->DirView->setDir(NodePwd); - return 0; - } + if ( tmpParent != NULL ) { /*Return to previous parent*/ + if ( tmp->getNameOf() == tmpParent->getNameOf() ) { + mainw->listView->setCurrentItem ( lvi ); + tmpParent = NULL; + fflag = 1; + } + } + tmp=tmp->next; + } -int GuiSlave::standOn(QListViewItem *on) - { - Node *tmp; - - if(on == NULL || on == 0) return 0; + mainw->listView->setSorting ( mainw->listView->scol,mainw->listView->sasc ); - mainw->listView->setSelected(on,true); - if(!strcmp(on->text(0),"..")) - { - mainw->commentWidget->showNode(NodePwd,1); - updateStatusl(NodePwd->parent); - standON = NULL; + if ( !fflag ) + mainw->listView->setCurrentItem ( mainw->listView->firstChild() ); + + if(*DEBUG_INFO_ENABLED) + cerr <<"BEACON-1"<listView->changed(); + if(*DEBUG_INFO_ENABLED) + cerr <<"BEACON-2"<DirView->setDir ( NodePwd ); + if(*DEBUG_INFO_ENABLED) + cerr <<"BEACON-3"<child; - while(strcmp(tmp->getNameOf(),on->text(0))) - { - tmp=tmp->next; - if(tmp == NULL) - return 0; +int GuiSlave::standOn ( Q3ListViewItem *on ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if (*DEBUG_INFO_ENABLED) + cerr<<"F-standOn"<listView->setSelected ( on,true ); + + if ( on->text ( 0 ) == ".." ) { + mainw->commentWidget->showNode ( NodePwd,1 ); + updateStatusl ( NodePwd->parent ); + standON = NULL; + return 0; } + + if (*DEBUG_INFO_ENABLED) + cerr<<"2"<commentWidget->showNode(tmp,0); - updateStatusl(tmp); - return 0; - } + tmp=NodePwd->child; + while ( tmp->getNameOf() != on->text ( 0 ) ) { + tmp=tmp->next; + if ( tmp == NULL ) + return 0; + } + if(*DEBUG_INFO_ENABLED) + cerr<<"3"<commentWidget->showNode ( tmp,0 ); + if(*DEBUG_INFO_ENABLED) + cerr<<"5"<text(0),"..")) - { - if(NodePwd->parent != NULL) - { - tmpParent = NodePwd; - NodePwd = NodePwd->parent; - } - } - else - { //step down - tmp=NodePwd->child; - while(strcmp(tmp->getNameOf(),on->text(0))) - { - tmp=tmp->next; - if(tmp == NULL) return 0; - } - if(tmp->type == HC_FILE) - { - showContent(); - return 0; - } - if(tmp->type == HC_CATLNK) - { - followLnk(); - return 0; - } - NodePwd = tmp; - } - updateListFromNode(); +int GuiSlave::doubleClickOn ( Q3ListViewItem *on ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if(*DEBUG_INFO_ENABLED) + cerr<<"F-doubleClickOn"<text ( 0 ) == ".." ) { + if ( NodePwd->parent != NULL ) { + tmpParent = NodePwd; + NodePwd = NodePwd->parent; + } + } else { //step down + tmp=NodePwd->child; + while ( tmp->getNameOf() != on->text ( 0 ) ) { + tmp=tmp->next; + if ( tmp == NULL ) return 0; + } + if ( tmp->type == HC_FILE ) { + showContent(); + return 0; + } + if ( tmp->type == HC_CATLNK ) { + followLnk(); + return 0; + } + NodePwd = tmp; + } + updateListFromNode(); return 0; - } +} -void GuiSlave::panelsOFF(void) - { - mainw->DirView->clear(); - mainw->listView->clear(); - if(mainw->db != NULL) - tmpParent=NodePwd=mainw->db->getRootNode(); - else - tmpParent=NodePwd=NULL; - mainw->commentWidget->act = NULL; - } +void GuiSlave::panelsOFF ( void ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if(*DEBUG_INFO_ENABLED) + cerr<<"F-panelsOFF"<DirView->clear(); + mainw->listView->clear(); + if ( mainw->db != NULL ) + tmpParent=NodePwd=mainw->db->getRootNode(); + else + tmpParent=NodePwd=NULL; + mainw->commentWidget->act = NULL; +} -int GuiSlave::cHcaption(void) - { - if((mainw->db != NULL) && (((DBCatalog *)(mainw->db->getRootNode()->data))->writed == 0 )) - mainw->setCaption( tr ("Hyper's CD Catalogizer (modified)")); - else - mainw->setCaption( tr ("Hyper's CD Catalogizer")); - return 0; - } +int GuiSlave::cHcaption ( void ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if (*DEBUG_INFO_ENABLED) + cerr<<"F-cHcaption"<db != NULL ) && ( ( ( DBCatalog * ) ( mainw->db->getRootNode()->data ) )->writed == 0 ) ) { + if (*DEBUG_INFO_ENABLED) + cerr<<"case:1"<setCaption ( tr ( "Hyper's CD Catalogizer (modified)" ) ); + } else { + if (*DEBUG_INFO_ENABLED) + cerr<<"case:2"<DirView->start(); - mainw->listView->start(); - updateListFromNode(); - mainw->commentWidget->act = NULL; - mainw->commentWidget->repaint(); - updateStatusl(standON); - standOn(mainw->listView->currentItem()); - cHcaption(); - } + mainw->setCaption ( tr ( "Hyper's CD Catalogizer" ) ); + } + if (*DEBUG_INFO_ENABLED) + cerr<<"....F-done."<setCheckable(true); +void GuiSlave::panelsON ( void ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if (*DEBUG_INFO_ENABLED) + cerr<<"F-panelsON"<DirView->start(); + mainw->listView->start(); + updateListFromNode(); + mainw->commentWidget->act = NULL; + mainw->commentWidget->repaint(); + updateStatusl ( standON ); + standOn ( mainw->listView->currentItem() ); + cHcaption(); +} - if(standON != NULL) - { - mPopup->insertItem(*get_t_comment_icon(),tr("View/Edit Comment..."),this,SLOT(editComment())); - mPopup->insertSeparator(); - mPopup->insertItem(tr("Node size"),this,SLOT(sizeEvent())); - mPopup->insertSeparator(); - - if(haveContent(standON)) - mPopup->insertItem(*get_t_showc_icon(),tr("Show/Remove Content..."),this,SLOT(showContent())); - - if(standON->type == HC_CATLNK) - mPopup->insertItem(*get_p_icon(),tr("Follow the link (Open it) !"),this,SLOT(followLnk())); - - mPopup->insertItem(tr("Rename node..."),this,SLOT(renameEvent())); - mPopup->insertItem(*get_t_delete_icon() ,tr("Delete node"),this,SLOT(deleteEvent())); - - - if(standON->type == HC_MEDIA) - { - mPopup->insertSeparator(); - if(((DBMedia *)(standON->data))->borrowing == NULL) - mPopup->insertItem(*get_t_sborrow_icon() ,tr("Borrow this media to..."),this,SLOT(sborrowEvent())); - else - mPopup->insertItem(*get_t_cborrow_icon() ,tr("I got it back! (clear borrowing mark)"),this,SLOT(cborrowEvent())); - + +void GuiSlave::showListviewContextMenu ( Q3ListViewItem *, const QPoint &p, int ) { + mPopup = new Q3PopupMenu ( 0 ); + mPopup->setCheckable ( true ); + + if ( standON != NULL ) { + mPopup->insertItem ( *get_t_comment_icon(),tr ( "View/Edit Comment..." ),this,SLOT ( editComment() ) ); + mPopup->insertItem ( *get_t_comment_icon(),tr ( "View/Edit Category..." ),this,SLOT ( editCategory() ) ); mPopup->insertSeparator(); - mPopup->insertItem(*get_t_rescan_icon() ,tr("Rescan media..."),this,SLOT(rescanEvent())); - mPopup->insertItem(tr("Re-Number media..."),this,SLOT(renumberEvent())); - } - } - mPopup->insertSeparator(); - mPopup->insertItem(*get_t_add_icon() ,tr("Add media..."),this,SLOT(addEvent())); - mPopup->insertItem(*get_p_icon() ,tr("Add a link to a CdCAt Catalog..."),this,SLOT(addlnkEvent())); - mPopup->insertItem(tr("Insert Catalog..."),this,SLOT(insertcEvent())); - mPopup->exec(p); + mPopup->insertItem ( tr ( "Node size" ),this,SLOT ( sizeEvent() ) ); + mPopup->insertSeparator(); + + if ( haveContent ( standON ) ) + mPopup->insertItem ( *get_t_showc_icon(),tr ( "Show/Remove Content..." ),this,SLOT ( showContent() ) ); + + if ( standON->type == HC_CATLNK ) + mPopup->insertItem ( *get_p_icon(),tr ( "Follow the link (Open it) !" ),this,SLOT ( followLnk() ) ); + + mPopup->insertItem ( tr ( "Rename node..." ),this,SLOT ( renameEvent() ) ); + mPopup->insertItem ( *get_t_delete_icon() ,tr ( "Delete node" ),this,SLOT ( deleteEvent() ) ); + + + if ( standON->type == HC_MEDIA ) { + mPopup->insertSeparator(); + if ( ( ( DBMedia * ) ( standON->data ) )->borrowing == "" ) + mPopup->insertItem ( *get_t_sborrow_icon() ,tr ( "Borrow this media to..." ),this,SLOT ( sborrowEvent() ) ); + else + mPopup->insertItem ( *get_t_cborrow_icon() ,tr ( "I got it back! (clear borrowing mark)" ),this,SLOT ( cborrowEvent() ) ); + + mPopup->insertSeparator(); + mPopup->insertItem ( *get_t_rescan_icon() ,tr ( "Rescan media..." ),this,SLOT ( rescanEvent() ) ); + mPopup->insertItem ( tr ( "Re-Number media..." ),this,SLOT ( renumberEvent() ) ); + } + } + mPopup->insertSeparator(); + mPopup->insertItem ( *get_t_add_icon() ,tr ( "Add media..." ),this,SLOT ( addEvent() ) ); + mPopup->insertItem ( *get_p_icon() ,tr ( "Add a link to a CdCAt Catalog..." ),this,SLOT ( addlnkEvent() ) ); + mPopup->insertItem ( tr ( "Insert Catalog..." ),this,SLOT ( insertcEvent() ) ); + mPopup->exec ( p ); delete mPopup; mPopup = NULL; - } +} -void GuiSlave::showTreeContextMenu(QListViewItem *, const QPoint &p2, int) - { +void GuiSlave::showTreeContextMenu ( Q3ListViewItem *item, const QPoint &p2, int ) { Node *on,*save; - if(mainw->db == NULL) on = NULL; - else - { - on= getNodeFromFullName( - mainw->db->getRootNode(), - ((LNode *)mainw->DirView->currentItem())->fullName() - ); - } + if ( mainw->db == NULL ) on = NULL; + else { + on= getNodeFromFullName ( + mainw->db->getRootNode(), + ( ( LNode * ) mainw->DirView->currentItem() )->fullName() + ); + } - mPopup = new QPopupMenu(0); - mPopup->setCheckable(true); - if(on != NULL) - { - mPopup->insertItem(*get_t_comment_icon(),tr("View/Edit Comment..."),this,SLOT(editComment())); - mPopup->insertSeparator(); - mPopup->insertItem(tr("Node size"),this,SLOT(sizeEvent())); - mPopup->insertSeparator(); + mPopup = new Q3PopupMenu ( 0 ); + mPopup->setCheckable ( true ); + if ( on != NULL ) { + mPopup->insertItem ( *get_t_comment_icon(),tr ( "View/Edit Comment..." ),this,SLOT ( editComment() ) ); + mPopup->insertItem ( *get_t_comment_icon(),tr ( "View/Edit Category..." ),this,SLOT ( editCategory() ) ); + mPopup->insertSeparator(); + mPopup->insertItem ( tr ( "Node size" ),this,SLOT ( sizeEvent() ) ); + mPopup->insertSeparator(); - } - if(on != NULL && on->type != HC_CATALOG) - { - mPopup->insertItem(tr("Rename node..."),this,SLOT(renameEvent())); - mPopup->insertItem(*get_t_delete_icon() ,tr("Delete node"),this,SLOT(deleteEvent())); - mPopup->insertSeparator(); - if(on->type == HC_MEDIA) - { - - if(((DBMedia *)(on->data))->borrowing == NULL) - mPopup->insertItem(*get_t_sborrow_icon() ,tr("Borrow this media to..."),this,SLOT(sborrowEvent())); - else - mPopup->insertItem(*get_t_cborrow_icon() ,tr("I got it back! (clear borrowing mark)"),this,SLOT(cborrowEvent())); + } + if ( on != NULL && on->type != HC_CATALOG ) { + mPopup->insertItem ( tr ( "Rename node..." ),this,SLOT ( renameEvent() ) ); + mPopup->insertItem ( *get_t_delete_icon() ,tr ( "Delete node" ),this,SLOT ( deleteEvent() ) ); + mPopup->insertSeparator(); + if ( on->type == HC_MEDIA ) { - mPopup->insertItem(*get_t_rescan_icon() ,tr("Rescan media..."),this,SLOT(rescanEvent())); - mPopup->insertItem(tr("Re-Number media..."),this,SLOT(renumberEvent())); + if ( ( ( DBMedia * ) ( on->data ) )->borrowing == "" ) + mPopup->insertItem ( *get_t_sborrow_icon() ,tr ( "Borrow this media to..." ),this,SLOT ( sborrowEvent() ) ); + else + mPopup->insertItem ( *get_t_cborrow_icon() ,tr ( "I got it back! (clear borrowing mark)" ),this,SLOT ( cborrowEvent() ) ); + + mPopup->insertItem ( *get_t_rescan_icon() ,tr ( "Rescan media..." ),this,SLOT ( rescanEvent() ) ); + mPopup->insertItem ( tr ( "Re-Number media..." ),this,SLOT ( renumberEvent() ) ); + mPopup->insertSeparator(); + context_item = (HQListViewItem *)item; + mPopup->insertItem ( *get_t_add_icon() ,tr ( "Change media type..." ),this,SLOT (typeChangeEvent() ) ); + } + } + mPopup->insertItem ( *get_t_add_icon() ,tr ( "Add media..." ),this,SLOT ( addEvent() ) ); + mPopup->insertItem ( *get_p_icon() ,tr ( "Add a link to a CdCAt Catalog..." ),this,SLOT ( addlnkEvent() ) ); + mPopup->insertItem ( tr ( "Insert Catalog..." ),this,SLOT ( insertcEvent() ) ); + if ( on != NULL ) { mPopup->insertSeparator(); - } - } - mPopup->insertItem(*get_t_add_icon() ,tr("Add media..."),this,SLOT(addEvent())); - mPopup->insertItem(*get_p_icon() ,tr("Add a link to a CdCAt Catalog..."),this,SLOT(addlnkEvent())); - mPopup->insertItem(tr("Insert Catalog..."),this,SLOT(insertcEvent())); - if(on != NULL) - { - mPopup->insertSeparator(); - mPopup->insertItem(tr("Close all branch"),this,SLOT(closeBranch())); - } - + mPopup->insertItem ( tr ( "Close all branch" ),this,SLOT ( closeBranch() ) ); + } + save = standON; standON = on; - mPopup->exec(p2); + mPopup->exec ( p2 ); standON = save; delete mPopup; mPopup = NULL; - } - + context_item = NULL; +} + /***************************************************************************** * * class HQListView - * + * *****************************************************************************/ -void HQListViewItem::paintCell(QPainter *p,const QColorGroup & cg,int column,int width,int align) - { - QColorGroup ocg(cg); - ocg.setColor(QColorGroup::Highlight,*glob_conf->comm_bg); - ocg.setColor(QColorGroup::HighlightedText,QColor(black)); - QListViewItem::paintCell(p,ocg,column,width,align); - } - - +void HQListViewItem::paintCell ( QPainter *p,const QColorGroup & cg,int column,int width,int align ) { + QColorGroup ocg ( cg ); + ocg.setColor ( QColorGroup::Highlight,*glob_conf->comm_bg ); + ocg.setColor ( QColorGroup::HighlightedText,QColor ( Qt::black ) ); + Q3ListViewItem::paintCell ( p,ocg,column,width,align ); +} -HQListViewItem::HQListViewItem(QListView *parent) -:QListViewItem(parent) - { - setExpandable(FALSE); - } +HQListViewItem::HQListViewItem ( Q3ListView *parent ) + :Q3ListViewItem ( parent ) { + setExpandable ( FALSE ); +} -HQListViewItem::HQListViewItem(QListView *parent,QString label1,QString label2,QString label3) -:QListViewItem(parent,label1,label2,label3) - { - setExpandable(FALSE); - } +HQListViewItem::HQListViewItem ( Q3ListView *parent,QString label1,QString label2,QString label3 ) + :Q3ListViewItem ( parent,label1,label2,label3 ) { + setExpandable ( FALSE ); +} -HQListViewItem::HQListViewItem(QListView *parent,QListViewItem *after,QString label1,QString label2,QString label3) -:QListViewItem(parent,after,label1,label2,label3) - { - setExpandable(FALSE); - } - -QString HQListViewItem::key(int column,bool ascending) const - { - double value = 0; - int mod = ascending ? etype : 5 - etype ; - - switch( column ) - { - //NAME - case 0: return text(column).prepend('1'+mod); - //SIZE - case 1: - //ret = (QListViewItem::key(1,ascending)).append('0'+mod); - if(etype == 2 && !text(1).isEmpty()) - { - value = getSizeFS(text(1)); - switch(getSizetFS(text(1))) - { - case KBYTE: value *= (1024.0); break; - case MBYTE: value *= (1024.0*1024.0); break; - case GBYTE: value *= (1024.0*1024.0*1024.0); break; - default: break; - } - return ((QString().setNum((long int)value)) - .rightJustify(10,'0')) - .prepend('1'+mod); - } - if(etype == 3) //HC_MEDIA - { - return (QString().setNum(text(1).toInt())) - .rightJustify(10,'0') - .prepend('1'+mod); - } - return text(0).prepend('1'+mod); - //TYPE - case 2: return (text(2).append(text(0))).prepend('1'+mod); - - } - return ""; - } +HQListViewItem::HQListViewItem ( Q3ListView *parent,Q3ListViewItem *after,QString label1,QString label2,QString label3 ) + :Q3ListViewItem ( parent,after,label1,label2,label3 ) { + setExpandable ( FALSE ); +} -void HQListView::changed(void) - { - emit currentChanged(currentItem()); - } +QString HQListViewItem::key ( int column,bool ascending ) const { + double value = 0; + int mod = ascending ? etype : 5 - etype ; + + switch ( column ) { + //NAME + case 0: return text ( column ).prepend ( '1'+mod ); + //SIZE + case 1: + //ret = (QListViewItem::key(1,ascending)).append('0'+mod); + if ( etype == 2 && !text ( 1 ).isEmpty() ) { + value = getSizeFS ( text ( 1 ) ); + switch ( getSizetFS ( text ( 1 ) ) ) { + case KBYTE: value *= ( 1024.0 ); break; + case MBYTE: value *= ( 1024.0*1024.0 ); break; + case GBYTE: value *= ( 1024.0*1024.0*1024.0 ); break; + default: break; + } + return ( ( QString().setNum ( ( long int ) value ) ) + .rightJustify ( 10,'0' ) ) + .prepend ( '1'+mod ); + } + if ( etype == 3 ) { //HC_MEDIA + return ( QString().setNum ( text ( 1 ).toInt() ) ) + .rightJustify ( 10,'0' ) + .prepend ( '1'+mod ); + } + return text ( 0 ).prepend ( '1'+mod ); + //TYPE + case 2: return ( text ( 2 ).append ( text ( 0 ) ) ).prepend ( '1'+mod ); -void HQListView::start(void) - { - ; - } - -HQListView::HQListView(CdCatMainWidget *mw,QWidget *parent,const char *name,WFlags f) -:QListView(parent,name,f) - { - mainw = mw; - setSelectionMode(Single); - addColumn(tr("Name")); - addColumn(tr("Size")); - addColumn(tr("Type")); - - setAllColumnsShowFocus(true); - setShowSortIndicator(true); - setSorting(-1); - } + } + return ""; +} -void HQListView::curr_vis(void) - { - QListViewItem * i; - if((i=currentItem()) != 0) - ensureItemVisible(i); - } +void HQListView::changed ( void ) { + emit currentChanged ( currentItem() ); +} -void HQListView::setSorting(int column, bool increasing) - { - scol = column; - sasc = increasing; - - if(scol<0 || scol>3) - scol = 0; - - QListView::setSorting(scol,increasing); - } - -int GuiSlave::hotKeys(QKeyEvent *ke) - { - switch(ke->key()) - { -/* case (Qt::Key_O) : openEvent(); return 1; - case (Qt::Key_N) : newEvent(); return 1; - case (Qt::Key_C) : closeEvent(); return 1; - case (Qt::Key_A) : addEvent(); return 1; - case (Qt::Key_R) : rescanEvent(); return 1; - case (Qt::Key_G) : configEvent(); return 1; - case (Qt::Key_F) : findEvent(); return 1; - case (Qt::Key_H) : helpEvent(); return 1; - case (Qt::Key_Q) : mainw->close(); return 1; - case (Qt::Key_Space) : sizeEvent(); return 1; -*/ - case (Qt::Key_Escape) : mainw->close(); return 1; - - case (Qt::Key_S) : - if(ke->state() == Qt::ControlButton) - posEvent(); - return 1; - } - return 0; - } +void HQListView::start ( void ) { + ; +} -void HQListView::keyPressEvent(QKeyEvent *ke) - { - Node *tmp; - QListViewItem *it; +HQListView::HQListView ( CdCatMainWidget *mw,QWidget *parent,const char *name,Qt::WFlags f ) + :Q3ListView ( parent,name,f ) { + mainw = mw; + setSelectionMode ( Single ); + addColumn ( tr ( "Name" ) ); + addColumn ( tr ( "Size" ) ); + addColumn ( tr ( "Type" ) ); + setAllColumnsShowFocus ( true ); + setShowSortIndicator ( true ); + setSorting ( -1 ); +} +void HQListView::curr_vis ( void ) { + Q3ListViewItem * i; + if ( ( i=currentItem() ) != 0 ) + ensureItemVisible ( i ); +} - if(mainw->guis->hotKeys(ke)) return; //It was a hotkey and it's handled yet - - if(mainw->db == NULL) return; - - if(ke->key() == Qt::Key_Left || ke->key() == Qt::Key_Backspace) - { - if(mainw->guis->NodePwd->parent != NULL) - { - mainw->guis->tmpParent = mainw->guis->NodePwd; - mainw->guis->NodePwd = mainw->guis->NodePwd->parent; - } +void HQListView::setSorting ( int column, bool increasing ) { + scol = column; + sasc = increasing; - mainw->guis->updateListFromNode(); - } + if ( scol<0 || scol>3 ) + scol = 0; - if(ke->key() == Qt::Key_Right || ke->key() == Qt::Key_Return ) - { - it = currentItem(); - if(!strcmp(it->text(0),"..")) - { + Q3ListView::setSorting ( scol,increasing ); +} - if(mainw->guis->NodePwd->parent != NULL) - { - mainw->guis->tmpParent = mainw->guis->NodePwd; - mainw->guis->NodePwd = mainw->guis->NodePwd->parent; - } - } - else - { //step down - tmp=mainw->guis->NodePwd->child; - while(strcmp(tmp->getNameOf(),it->text(0))) - { - tmp=tmp->next; - if(tmp == NULL) return; - } - if(tmp->type == HC_FILE) - { - mainw->guis->showContent(); - return; - } - if(tmp->type == HC_CATLNK) - { - mainw->guis->followLnk(); - return; - } +int GuiSlave::hotKeys ( QKeyEvent *ke ) { + switch ( ke->key() ) { + /* Handled from mainwidget.cpp + + case (Qt::Key_O) : openEvent(); return 1; + case (Qt::Key_N) : newEvent(); return 1; + case (Qt::Key_C) : closeEvent(); return 1; + case (Qt::Key_A) : addEvent(); return 1; + case (Qt::Key_R) : rescanEvent(); return 1; + case (Qt::Key_G) : configEvent(); return 1; + case (Qt::Key_F) : findEvent(); return 1; + case (Qt::Key_H) : helpEvent(); return 1; + case (Qt::Key_Q) : mainw->close(); return 1; + case (Qt::Key_Space) : sizeEvent(); return 1; + */ + case ( Qt::Key_Escape ) : mainw->close(); return 1; + + case ( Qt::Key_S ) : + if ( ke->state() == Qt::ControlModifier ) + posEvent(); + return 1; + } + return 0; +} - mainw->guis->NodePwd = tmp; - } +void HQListView::keyPressEvent ( QKeyEvent *ke ) { + Node *tmp; + Q3ListViewItem *it; - mainw->guis->updateListFromNode(); - } - - curr_vis(); - if(ke->key() == Qt::Key_Left || ke->key() == Qt::Key_Right) - return; - QListView::keyPressEvent(ke); - } + if ( mainw->guis->hotKeys ( ke ) ) return; //It was a hotkey and it's handled yet -/* Mainwindow buttons ***********************************/ -int GuiSlave::newEvent(void) - { - newdbdialog *d = new newdbdialog(mainw,"new_db_dialog",true); - - while(closeEvent() != 0); - d->exec(); - if(d->OK == 1) - { - panelsOFF(); - if(mainw->db == NULL) - mainw->db = new DataBase(); - mainw->db->setDBName ((char *)((const char *)d->nameD )); - mainw->db->setDBOwner((char *)((const char *)d->ownerD)); - mainw->db->setComment(recode((char *)((const char *)d->commD ),&rbuff)); - panelsON(); - } - else return -1; - return 0; - } + if ( mainw->db == NULL ) return; -int GuiSlave::openEvent(void) - { - char fnc[256]; - QString fn; - int ret_val=0; - - fn = QFileDialog::getOpenFileName(NULL,tr("CdCat databases (*.hcf )"),mainw,"openfiled",tr("Open a file...")); - if(fn.isEmpty()) return 0; - - strcpy(fnc,(const char *)fn); - while(closeEvent() !=0); - panelsOFF(); - - - if(mainw->db == NULL) - mainw->db = new DataBase(); - - PWw *pww = new PWw(mainw,mainw->app); - mainw->db->pww = pww; - progress(pww); - - if((ret_val=mainw->db->openDB(fnc)) != 0 ) - { // An error occured - QMessageBox::warning(mainw,tr("Error while opening..."), - mainw->db->errormsg,tr("Ok"),0); - mainw->db = NULL; - standON = NodePwd = NULL; - panelsOFF(); - } - - checkversion(mainw,mainw->db); + if ( ke->key() == Qt::Key_Left || ke->key() == Qt::Key_Backspace ) { + if ( mainw->guis->NodePwd->parent != NULL ) { + mainw->guis->tmpParent = mainw->guis->NodePwd; + mainw->guis->NodePwd = mainw->guis->NodePwd->parent; + } + mainw->guis->updateListFromNode(); + } - progress(pww); - panelsON(); - progress(pww); + if ( ke->key() == Qt::Key_Right || ke->key() == Qt::Key_Return ) { + it = currentItem(); + if ( !strcmp ( it->text ( 0 ),".." ) ) { + + if ( mainw->guis->NodePwd->parent != NULL ) { + mainw->guis->tmpParent = mainw->guis->NodePwd; + mainw->guis->NodePwd = mainw->guis->NodePwd->parent; + } + } else { //step down + tmp=mainw->guis->NodePwd->child; + while ( strcmp ( tmp->getNameOf(),it->text ( 0 ) ) ) { + tmp=tmp->next; + if ( tmp == NULL ) return; + } + if ( tmp->type == HC_FILE ) { + mainw->guis->showContent(); + return; + } + if ( tmp->type == HC_CATLNK ) { + mainw->guis->followLnk(); + return; + } + mainw->guis->NodePwd = tmp; + } - //Save the opened file to the history - //QMessageBox::information(0,"new history element",fn); - if (ret_val == 0 && !fn.isEmpty()) - { - - if(mainw->cconfig->hlist.grep(QRegExp(QString("^")+QString(fn)+QString("$"))).isEmpty()) - { - mainw->cconfig->hlist.append(fn); - mainw->historyMenu->insertItem(*get_t_open_icon(),fn); - if ((int)mainw->cconfig->hlist.count() > (int)mainw->cconfig->historysize) - { - (mainw->cconfig->hlist).remove (mainw->cconfig->hlist.begin()); - mainw->historyMenu->removeItemAt(0); - } - } - } + mainw->guis->updateListFromNode(); + } - progress(pww); - pww->end(); - if(mainw->db != NULL) - mainw->db->pww = NULL; - delete pww; - return 0; - } + curr_vis(); + if ( ke->key() == Qt::Key_Left || ke->key() == Qt::Key_Right ) + return; -int GuiSlave::saveEvent(void) - { - if(mainw->db == NULL) return 0; - - PWw *pww = new PWw(mainw,mainw->app); - mainw->db->pww = pww; - progress(pww); + Q3ListView::keyPressEvent ( ke ); +} - mainw->db->setNice(mainw->cconfig->nice); - if(mainw->db->saveDB() != 0 ) - { - progress(pww); - pww->end(); - mainw->db->pww = NULL; - delete pww; +/* Mainwindow buttons ***********************************/ +int GuiSlave::newEvent ( void ) { + newdbdialog *d = new newdbdialog ( mainw,"new_db_dialog",true ); - saveasEvent(); + while ( closeEvent() != 0 ); + d->exec(); + if ( d->OK == 1 ) { + panelsOFF(); + if ( mainw->db == NULL ) + mainw->db = new DataBase(); + mainw->db->setDBName ( d->nameD ); + mainw->db->setDBOwner ( d->ownerD ); + mainw->db->setComment ( d->commD ); + mainw->db->setCategory ( d->categoryD ); + panelsON(); + } return 0; - } +} - panelsOFF(); - panelsON(); +int GuiSlave::openEvent ( void ) { + char fnc[256]; + QString fn; + int ret_val=0; + DEBUG_INFO_ENABLED = init_debug_info(); + + fn = QFileDialog::getOpenFileName(0, tr ( "Open a file..." ), mainw->cconfig->lastDir, tr ( "CdCat databases (*.hcf )" )); + if ( fn.isEmpty() ) + return 0; - progress(pww); - pww->end(); - mainw->db->pww = NULL; - delete pww; + mainw->cconfig->lastDir = QFileInfo( fn ).absoluteDir().absolutePath(); - return 0; - } + strcpy ( fnc, ( const char * ) ( QFile::encodeName ( fn ) ) ); + while ( closeEvent() !=0 ); + panelsOFF(); -int GuiSlave::saveasEvent(void) - { - int retv=0; - char fnc[256]; - QString fn; + if ( mainw->db == NULL ) + mainw->db = new DataBase(); - if(mainw->db == NULL) return 0; - fn = QFileDialog::getSaveFileName(NULL,tr("CdCat databases (*.hcf )"),mainw,"savefdlg",tr("Save to file...")); - if(fn.isEmpty()) return 0; + PWw *pww = new PWw ( mainw,mainw->app ); + mainw->db->pww = pww; + progress ( pww ); + QApplication::setOverrideCursor ( Qt::waitCursor ); + if ( ( ret_val=mainw->db->openDB ( fnc ) ) != 0 ) { // An error occured + QMessageBox::warning ( mainw,tr ( "Error while opening..." ), + mainw->db->errormsg ); + mainw->db = NULL; + standON = NodePwd = NULL; + panelsOFF(); + QApplication::restoreOverrideCursor(); + } - PWw *pww = new PWw(mainw,mainw->app); - mainw->db->pww = pww; - progress(pww); + checkversion ( mainw,mainw->db ); + progress ( pww ); + if(*DEBUG_INFO_ENABLED) + cerr<<"FLAG-1"<cconfig->hlist.join("|"))<cconfig->hlist.isEmpty() ) cerr <<"emptlyysdsaféashfk"<cconfig->hlist.grep ( "AAAA" ); + if(*DEBUG_INFO_ENABLED) + cerr<<"0-3"<cconfig->hlist.isEmpty() || + mainw->cconfig->hlist.grep ( "^"+QString ( fn ) +"$" ).isEmpty() ) { + if(*DEBUG_INFO_ENABLED) + cerr<<"1"<cconfig->hlist.append ( QString ( fn ) ); + if(*DEBUG_INFO_ENABLED) + cerr<<"2"<historyMenu->addAction ( *get_t_open_icon(),fn ); + if(*DEBUG_INFO_ENABLED) + cerr<<"3"<cconfig->hlist.count() > ( int ) mainw->cconfig->historysize ) { + if(*DEBUG_INFO_ENABLED) + cerr<<"4"<cconfig->hlist ).remove ( mainw->cconfig->hlist.begin() ); + if(*DEBUG_INFO_ENABLED) + cerr<<"5"<historyMenu->removeItemAt ( 0 ); + } + } + } - progress(pww); + if(*DEBUG_INFO_ENABLED) + cerr<<"FLAG-3"<db->setNice(mainw->cconfig->nice); - if(mainw->db->saveAsDB(fnc) != 0 ) - { // An error occured - QMessageBox::warning(mainw,tr("Error while saving..."),mainw->db->errormsg,tr("Ok"),0); - retv=2; - //It neasn the file cannot be writed - //(It is the only reason the saveAsSB return nonzero) - } - panelsOFF(); - progress(pww); - panelsON(); - - progress(pww); - pww->end(); - mainw->db->pww = NULL; - delete pww; - return retv; - } + progress ( pww ); + pww->end(); + if ( mainw->db != NULL ) + mainw->db->pww = NULL; + delete pww; + QApplication::restoreOverrideCursor(); + return 0; +} -int GuiSlave::closeEvent(void) - { - int userrq=0; - int retv=0; - if(mainw->db == NULL) return 0; - if(((DBCatalog *)(mainw->db->getRootNode()->data))->writed == 0 ) - { - userrq = QMessageBox::warning(mainw,tr("Closing previous database..."),tr("Do you want to save the changes?"), - tr("Yes"),tr("No")); +int GuiSlave::saveEvent ( void ) { + if ( mainw->db == NULL ) return 0; - if(userrq == -1) retv = -1; + PWw *pww = new PWw ( mainw,mainw->app ); + mainw->db->pww = pww; + progress ( pww ); + QApplication::setOverrideCursor ( Qt::waitCursor ); + mainw->db->setNice ( mainw->cconfig->nice ); + if(mainw->cconfig->saveAlwaysCatalogInUtf8) + mainw->db->XML_ENCODING = "UTF-8"; + if ( mainw->db->saveDB() != 0 ) { + progress ( pww ); + pww->end(); + mainw->db->pww = NULL; + delete pww; + + saveasEvent(); + QApplication::restoreOverrideCursor(); + return 0; + } - if(userrq == 0) - if((retv=mainw->db->saveDB()) != 0) - { - if(retv==1) //The databas had no name. - retv=saveasEvent(); - // retv can be nonrezo reasoned by saveDB or saveAsEvent too. - } - } - panelsOFF(); + panelsOFF(); + panelsON(); - /* Freeing database object */ - if(retv == 0) - { - delete mainw->db; - mainw->db = NULL; - standON = NodePwd = NULL; - } - - panelsON(); - return retv; - } + progress ( pww ); + pww->end(); + mainw->db->pww = NULL; + delete pww; + QApplication::restoreOverrideCursor(); + return 0; +} -int GuiSlave::deleteEvent(void) - { - QString o; - if(mainw->db == NULL) return 0; - if(standON == NULL) - { - QMessageBox::warning(mainw,tr("Error:"),tr("There is no selected item in the middle list box!"), - tr("Ok"),0); - return 0; - } +int GuiSlave::saveasEvent ( void ) { + int retv=0; + char fnc[256]; + QString fn; - o = tr("Do you really want to delete this?: \n%1").arg(standON->getNameOf()); - if(QMessageBox::warning(mainw,tr("Confirmation"),o, - tr("Yes"),tr("No")) == 0) - { + if ( mainw->db == NULL ) return 0; + fn = QFileDialog::getSaveFileName(0, tr ( "Save to file..." ), mainw->cconfig->lastDir, tr ( "CdCat databases (*.hcf )" )); + if ( fn.isEmpty() ) return 0; + + + PWw *pww = new PWw ( mainw,mainw->app ); + mainw->db->pww = pww; + progress ( pww ); + QApplication::setOverrideCursor ( Qt::waitCursor ); + + strcpy ( fnc, ( const char * ) QFile::encodeName ( fn ) ); + + //extension correction if necessary + if ( strlen ( fnc ) <5 || strcmp ( ( fnc+ ( strlen ( fnc )-4 ) ),".hcf" ) != 0 ) + sprintf ( fnc,"%s.hcf", ( const char * ) fn ); + + progress ( pww ); + + mainw->db->setNice ( mainw->cconfig->nice ); + if(mainw->cconfig->saveAlwaysCatalogInUtf8) + mainw->db->XML_ENCODING = "UTF-8"; + if ( mainw->db->saveAsDB ( fnc ) != 0 ) { // An error occured + QMessageBox::warning ( mainw,tr ( "Error while saving..." ),mainw->db->errormsg ); + retv=2; + //The file cannot be writed + //(It is the only reason the saveAsSB return nonzero) + } + else { + // add history item + mainw->cconfig->hlist.append ( QString ( fnc ) ); + mainw->historyMenu->addAction ( *get_t_open_icon(),fnc ); + } panelsOFF(); - mainw->db->deleteNode(standON); - standON = NULL; + progress ( pww ); panelsON(); - } - return 0; - } -int GuiSlave::addEvent(void) - { - int i; - if(mainw->db == NULL) - newEvent(); - if(mainw->db == NULL) - return 0; + progress ( pww ); + pww->end(); + mainw->db->pww = NULL; + delete pww; + QApplication::restoreOverrideCursor(); + return retv; +} - addDialog *d=new addDialog(this,mainw,"adddialog",true); - d->exec(); - - mainw->db->storeMp3tags = mainw->cconfig->readtag; - mainw->db->v1_over_v2 = mainw->cconfig->v1_over_v2; - mainw->db->storeMp3techinfo = mainw->cconfig->readinfo; - mainw->db->storeAvitechinfo = mainw->cconfig->readavii; - - - mainw->db->storeContent = mainw->cconfig->readcontent; - mainw->db->storeLimit = mainw->cconfig->readclimit; - mainw->db->storedFiles = mainw->cconfig->readcfiles; +int GuiSlave::closeEvent ( void ) { + int userrq=0; + int retv=0; + if ( mainw->db == NULL ) return 0; + if ( ( ( DBCatalog * ) ( mainw->db->getRootNode()->data ) )->writed == 0 ) { + userrq = QMessageBox::warning ( mainw,tr ( "Closing previous database..." ),tr ( "Do you want to save the changes?" ), + tr ( "Yes" ),tr ( "No" ) ); + + if ( userrq == -1 ) retv = -1; + + if ( userrq == 0 ) + if ( ( retv=mainw->db->saveDB() ) != 0 ) { + if ( retv==1 ) //The databas had no name. + retv=saveasEvent(); + // retv can be nonrezo reasoned by saveDB or saveAsEvent too. + } + } + panelsOFF(); - PWw *pww = new PWw(mainw,mainw->app); - mainw->db->pww = pww; + /* Freeing database object */ + if ( retv == 0 ) { + delete mainw->db; + mainw->db = NULL; + standON = NodePwd = NULL; + } -#ifndef _WIN32 - if(mainw->cconfig->mounteject) - if ((d->type == CD || d->type == DVD) && - !strcmp((const char *)d->dDir,(const char *)mainw->cconfig->cdrompath)) - { - int pid; - - char **arg=new char*[3]; - char **env=new char*[2]; - - //search the mount program: - if (QFile("/usr/local/bin/mount").exists()) arg[0] = mstr("/usr/local/bin/mount"); - else if(QFile("/usr/local/sbin/mount").exists()) arg[0] = mstr("/usr/local/sbin/mount"); - else if(QFile("/usr/bin/mount").exists()) arg[0] = mstr("/usr/bin/mount"); - else if(QFile("/usr/sbin/mount").exists()) arg[0] = mstr("/usr/sbin/mount"); - else if(QFile("/bin/mount").exists()) arg[0] = mstr("/bin/mount"); - else if(QFile("/sbin/mount").exists()) arg[0] = mstr("/sbin/mount"); - else - { - QMessageBox::warning - (d,tr("Cannot mount CD"),tr("I can't find the \"mount\" program"),tr("Ok"),0); - arg[0] = mstr("mount"); - } - - fprintf(stderr,"Call:%s %s...",arg[0],(const char *)mainw->cconfig->cdrompath); - arg[1] = mstr(mainw->cconfig->cdrompath); - arg[2] = 0; - env[0] = mstr("PATH=/usr/local/bin:/usr/bin:/bin"); - env[1] = 0; - - pid = fork(); - if(pid == 0) //mount process - { - if(execve(arg[0],(char *const*)arg,(char *const*)env) == -1) - exit(-1); - else exit(0); //That's never happend. - } - else //cdcat process - { - int v; - pww->refreshTime = 200; - while(0 == waitpid(pid,&v,WNOHANG)) - { - progress(pww); - usleep(500); - } - pww->refreshTime = 100; - fprintf(stderr,"done.\n"); - if(WEXITSTATUS(v) != 0) - QMessageBox::warning(0,tr("Cannot mount CD!"),tr("Cannot mount CD!")); - } - delete []env; - delete []arg; + panelsON(); + return retv; +} + +int GuiSlave::deleteEvent ( void ) { + QString o; + if ( mainw->db == NULL ) return 0; + if ( standON == NULL ) { + QMessageBox::warning ( mainw,tr ( "Error:" ),tr ( "There is no selected item in the middle list box!" ) ); + return 0; + } + + o = tr ( "Do you really want to delete this?: \n%1" ).arg ( standON->getNameOf() ); + if ( QMessageBox::warning ( mainw,tr ( "Confirmation" ),o, + tr ( "Yes" ),tr ( "No" ) ) == 0 ) { + panelsOFF(); + mainw->db->deleteNode ( standON ); + standON = NULL; + panelsON(); } + return 0; +} + +int GuiSlave::addEvent ( void ) { + int i; +#ifndef _WIN32 + bool mount_successful = false; +#endif + DEBUG_INFO_ENABLED = init_debug_info(); + if ( mainw->db == NULL ) + newEvent(); + if ( mainw->db == NULL ) + return 0; + + addDialog *d=new addDialog ( this,mainw,"adddialog",true ); + d->exec(); + + mainw->db->storeMp3tags = mainw->cconfig->readtag; + mainw->db->v1_over_v2 = mainw->cconfig->v1_over_v2; + mainw->db->storeMp3techinfo = mainw->cconfig->readinfo; + mainw->db->storeAvitechinfo = mainw->cconfig->readavii; + + + mainw->db->storeContent = mainw->cconfig->readcontent; + mainw->db->storeLimit = mainw->cconfig->readclimit; + mainw->db->storedFiles = mainw->cconfig->readcfiles; + if(*DEBUG_INFO_ENABLED) + cerr<<"ADDEVENT-1"<app, false, 0, tr("Scanning directory tree, please wait...")); + mainw->db->pww = pww; + QApplication::setOverrideCursor ( Qt::waitCursor ); + d->type = mainw->cconfig->lastMediaType; + +#ifndef _WIN32 + if ( ( d->type == CD || d->type == DVD ) && mainw->cconfig->mounteject && + d->dDir == mainw->cconfig->cdrompath ) { + int pid; + + char **arg=new char*[3]; + char **env=new char*[2]; + + //search the mount program: + if ( QFile ( "/usr/local/bin/mount" ).exists() ) arg[0] = mstr ( "/usr/local/bin/mount" ); + else if ( QFile ( "/usr/local/sbin/mount" ).exists() ) arg[0] = mstr ( "/usr/local/sbin/mount" ); + else if ( QFile ( "/usr/bin/mount" ).exists() ) arg[0] = mstr ( "/usr/bin/mount" ); + else if ( QFile ( "/usr/sbin/mount" ).exists() ) arg[0] = mstr ( "/usr/sbin/mount" ); + else if ( QFile ( "/bin/mount" ).exists() ) arg[0] = mstr ( "/bin/mount" ); + else if ( QFile ( "/sbin/mount" ).exists() ) arg[0] = mstr ( "/sbin/mount" ); + else { + QMessageBox::warning + ( d,tr ( "Cannot mount CD" ),tr ( "I can't find the \"mount\" program" ) ); + arg[0] = mstr ( "mount" ); + } + if(*DEBUG_INFO_ENABLED) + fprintf ( stderr,"Call:%s %s...",arg[0], ( const char * ) mainw->cconfig->cdrompath ); + arg[1] = mstr ( mainw->cconfig->cdrompath ); + arg[2] = 0; + env[0] = mstr ( "PATH=/usr/local/bin:/usr/bin:/bin" ); + env[1] = 0; + + pid = fork(); + if ( pid == 0 ) { //mount process + if ( execve ( arg[0], ( char *const* ) arg, ( char *const* ) env ) == -1 ) + exit ( -1 ); + else exit ( 0 ); //That's never happend. + } else { //cdcat process + int v; + pww->refreshTime = 200; + while ( 0 == waitpid ( pid,&v,WNOHANG ) ) { + progress ( pww ); + usleep ( 500 ); + } + pww->refreshTime = 100; + fprintf ( stderr,"done.\n" ); + if ( WEXITSTATUS ( v ) != 0 ) + QMessageBox::warning ( 0,tr ( "Cannot mount CD!" ),tr ( "Cannot mount CD!" ) ); + else { + mount_successful = true; + if(d->cbAutoDetectAtMount->isChecked()) { + // mount succeded, read media name + QString new_medianame = getCDName ( mainw->cconfig->cdrompath ); + if(! new_medianame.isEmpty() ) { + if(*DEBUG_INFO_ENABLED) + cerr<<"new_medianame after mount: " << qPrintable(new_medianame) <dName = new_medianame; + } + } + } + } + delete []env; + delete []arg; + } + else { + if(*DEBUG_INFO_ENABLED) + cerr<<"mount not needed"<cconfig->cdrompath ); + if(! new_medianame.isEmpty() ) { + if(*DEBUG_INFO_ENABLED) + cerr<<"new_medianame: " << qPrintable(new_medianame) <dName = new_medianame; + } + } +#endif + +#ifndef _WIN32 + if ( ((d->type == CD || d->type == DVD ) && ((mainw->cconfig->mounteject && mount_successful) || (!mainw->cconfig->mounteject ))) || ( d->type != CD && d->type != DVD )) { #endif - progress(pww); + if(*DEBUG_INFO_ENABLED) + cerr<<"ADDEVENT-2"<OK == 1 ) { + panelsOFF(); + if(mainw->cconfig->showProgressedFileInStatus) { + mainw->db->setShowProgressedFileInStatus(mainw->cconfig->showProgressedFileInStatus); + connect (mainw->db, SIGNAL(pathScanned(QString)), mainw, SLOT(pathScanned(QString))); + } + + i= mainw->db->addMedia ( d->dDir,d->dName,d->serial,d->type, + ( d->dOwner.isEmpty() ? QString ( "" ) : d->dOwner ), ( d->dCategory.isEmpty() ? QString ( "" ) : d->dCategory ) ); + + if(mainw->cconfig->showProgressedFileInStatus) + disconnect (mainw->db, SIGNAL(pathScanned(QString)), mainw, SLOT(pathScanned(QString))); + //Do autosave if the user ask it in the config + if ( mainw->cconfig->autosave ) { + int retv=0; + if ( ( retv=mainw->db->saveDB() ) != 0 ) { + if ( retv==1 ) //The database had no name. need a save as... + retv=saveasEvent(); + } + } + if(*DEBUG_INFO_ENABLED) + cerr<<"ADDEVENT-3"<OK == 1) - { - panelsOFF(); - i= mainw->db->addMedia((char *)((const char *)d->dDir), - (char *)((const char *)d->dName), - d->serial,d->type, - (d->dOwner).isEmpty() ? NULL : ((char *)((const char *)(d->dOwner)))); - - //Do autosave if the user ask it in the config ! - if(mainw->cconfig->autosave) - { - int retv=0; - if((retv=mainw->db->saveDB()) != 0) - { - if(retv==1) //The databas had no name. need a save as... - retv=saveasEvent(); - } - } - - panelsON(); - if(i!=0) - { - QMessageBox::warning(mainw, - tr("Warning..."),tr("An error occured while scanning,\nthe DataBase may be incomplete"), - tr("Ok"),0); - } - if(!(d->dComm).isEmpty()) - { - Node *tn=(mainw->db->getRootNode())->child; - while(strcmp(tn->getNameOf(),(const char *)d->dName) != 0) tn=tn->next; - ((DBMedia *)(tn->data))->comment = mstr(recode((char *)((const char *)d->dComm),&rbuff)); - } + if ( ! ( d->dComm ).isEmpty() ) { + Node *tn= ( mainw->db->getRootNode() )->child; + while ( tn->getNameOf() != d->dName ) + tn=tn->next; + ( ( DBMedia * ) ( tn->data ) )->comment = d->dComm; + } } - progress(pww); + progress ( pww ); + if(*DEBUG_INFO_ENABLED) + cerr<<"ADDEVENT-4"<cconfig->mounteject ) + if ( ( d->type == CD || d->type == DVD ) && + d->dDir == mainw->cconfig->cdrompath ) { + int pid; + + char **arg=new char*[3]; + char **env=new char*[2]; + + //search the eject program: + if ( QFile ( "/usr/local/bin/eject" ).exists() ) arg[0] = mstr ( "/usr/local/bin/eject" ); + else if ( QFile ( "/usr/local/sbin/eject" ).exists() ) arg[0] = mstr ( "/usr/local/sbin/eject" ); + else if ( QFile ( "/usr/bin/eject" ).exists() ) arg[0] = mstr ( "/usr/bin/eject" ); + else if ( QFile ( "/usr/sbin/eject" ).exists() ) arg[0] = mstr ( "/usr/sbin/eject" ); + else if ( QFile ( "/bin/eject" ).exists() ) arg[0] = mstr ( "/bin/eject" ); + else if ( QFile ( "/sbin/eject" ).exists() ) arg[0] = mstr ( "/sbin/eject" ); + else { + QMessageBox::warning + ( d,tr ( "Cannot eject CD" ),tr ( "I can't find the \"eject\" program" ) ); + arg[0] = mstr ( "eject" ); + } + + if(*DEBUG_INFO_ENABLED) + fprintf ( stderr,"Call:%s %s...",arg[0], ( const char * ) mainw->cconfig->cdrompath ); + arg[1] = mstr ( mainw->cconfig->cdrompath ); + arg[2] = 0; + env[0] = mstr ( "PATH=/usr/local/bin:/usr/bin:/bin" ); + env[1] = 0; + + pid = fork(); + if ( pid == 0 ) { // eject process + if ( execve ( arg[0], ( char *const* ) arg, ( char *const* ) env ) == -1 ) + exit ( -1 ); + else exit ( 0 ); //That's never happend. + } else { //cdcat process + int v; + pww->refreshTime = 200; + while ( 0 == waitpid ( pid,&v,WNOHANG ) ) { + progress ( pww ); + usleep ( 500 ); + } + pww->refreshTime = 100; + if(*DEBUG_INFO_ENABLED) + fprintf ( stderr,"done.\n" ); + if ( WEXITSTATUS ( v ) != 0 ) + QMessageBox::warning ( 0,tr ( "Cannot eject CD!" ),tr ( "Cannot eject CD!" ) ); + } + delete []env; + delete []arg; + } + else { + if(*DEBUG_INFO_ENABLED) + cerr<<"umount not needed"<cconfig->mounteject) - if ((d->type == CD || d->type == DVD) && - !strcmp((const char *)d->dDir,(const char *)mainw->cconfig->cdrompath)) - { - - int pid; - - char **arg=new char*[3]; - char **env=new char*[2]; - - //search the eject program: - if (QFile("/usr/local/bin/eject").exists()) arg[0] = mstr("/usr/local/bin/eject"); - else if(QFile("/usr/local/sbin/eject").exists()) arg[0] = mstr("/usr/local/sbin/eject"); - else if(QFile("/usr/bin/eject").exists()) arg[0] = mstr("/usr/bin/eject"); - else if(QFile("/usr/sbin/eject").exists()) arg[0] = mstr("/usr/sbin/eject"); - else if(QFile("/bin/eject").exists()) arg[0] = mstr("/bin/eject"); - else if(QFile("/sbin/eject").exists()) arg[0] = mstr("/sbin/eject"); - else - { - QMessageBox::warning - (d,tr("Cannot eject CD"),tr("I can't find the \"eject\" program"),tr("Ok"),0); - arg[0] = mstr("eject"); - } - - fprintf(stderr,"Call:%s %s...",arg[0],(const char *)mainw->cconfig->cdrompath); - arg[1] = mstr(mainw->cconfig->cdrompath); - arg[2] = 0; - env[0] = mstr("PATH=/usr/local/bin:/usr/bin:/bin"); - env[1] = 0; - - pid = fork(); - if(pid == 0) // eject process - { - if(execve(arg[0],(char *const*)arg,(char *const*)env) == -1) - exit(-1); - else exit(0); //That's never happend. - } - else //cdcat process - { - int v; - pww->refreshTime = 200; - while(0 == waitpid(pid,&v,WNOHANG)) - { - progress(pww); - usleep(500); - } - pww->refreshTime = 100; - fprintf(stderr,"done.\n"); - if(WEXITSTATUS(v) != 0) - QMessageBox::warning(0,tr("Cannot eject CD!"),tr("Cannot eject CD!")); - } - delete []env; - delete []arg; - } + // mount_successful + } + if ( (d->type == CD || d->type == DVD ) && mainw->cconfig->mounteject && !mount_successful ) { + if(*DEBUG_INFO_ENABLED) + cerr<<"mount failed"<end(); - mainw->db->pww = NULL; - delete pww; - return 0; - } + if(*DEBUG_INFO_ENABLED) + cerr<<"ADDEVENT-5"<end(); + if(*DEBUG_INFO_ENABLED) + cerr<<"ADDEVENT-6"<db->pww = NULL; + if(*DEBUG_INFO_ENABLED) + cerr<<"ADDEVENT-7"<db == NULL) return 0; +int GuiSlave::rescanEvent ( void ) { + QString o; + QString rfd; + + if ( mainw->db == NULL ) return 0; + + mainw->db->storeMp3tags = mainw->cconfig->readtag; + mainw->db->v1_over_v2 = mainw->cconfig->v1_over_v2; + mainw->db->storeMp3techinfo = mainw->cconfig->readinfo; + mainw->db->storeAvitechinfo = mainw->cconfig->readavii; + mainw->db->storeContent = mainw->cconfig->readcontent; + mainw->db->storeLimit = mainw->cconfig->readclimit; + mainw->db->storedFiles = mainw->cconfig->readcfiles; + + if ( standON == NULL ) { + QMessageBox::warning ( mainw,tr ( "Error:" ),tr ( "There is no selected Media in the middle list box!" ) ); + return 0; + } + if ( standON->type != HC_MEDIA ) { + QMessageBox::warning ( mainw,tr ( "Error:" ),tr ( "You can refresh ONLY a MEDIA node!" ) ); + return 0; + } + + o=tr ( "Rescan %1" ).arg ( standON->getNameOf() ); + rfd = QFileDialog::getExistingDirectory(0, tr ( "Select directory" ), o); + if ( rfd.isEmpty() ) return 0; + + PWw *pww = new PWw ( mainw,mainw->app ); + mainw->db->pww = pww; + progress ( pww ); + + panelsOFF(); + if ( 0 != mainw->db->addMedia ( rfd,"__rescanned__",-1,UNKNOWN,"system" ) ) { + Node *d; + o =tr ( "An error occured while scanning, the rescan operation was cancelled: \n%1" ) + .arg ( mainw->db->errormsg ); + + d= ( mainw->db->getRootNode() )->child; + while ( d->getNameOf() != "__rescanned__" ) + d=d->next; + mainw->db->deleteNode ( d ); + QMessageBox::warning ( mainw,tr ( "Error:" ),o ); + } else { + Node *d; + d= ( mainw->db->getRootNode() )->child; + while ( d->getNameOf() != "__rescanned__" ) + d=d->next; + + ( ( DBMedia * ) ( d->data ) )->name = ( ( DBMedia * ) ( standON->data ) )->name; + + ( ( DBMedia * ) ( d->data ) )->comment = ( ( DBMedia * ) ( standON->data ) )->comment; + + ( ( DBMedia * ) ( d->data ) )->category = ( ( DBMedia * ) ( standON->data ) )->category; + + ( ( DBMedia * ) ( d->data ) )->owner = ( ( DBMedia * ) ( standON->data ) )->owner; + + ( ( DBMedia * ) ( d->data ) )->type = ( ( DBMedia * ) ( standON->data ) )->type ; + + ( ( DBMedia * ) ( d->data ) )->number = ( ( DBMedia * ) ( standON->data ) )->number; + + mainw->db->deleteNode ( standON ); + } + standON=NULL; - mainw->db->storeMp3tags = mainw->cconfig->readtag; - mainw->db->v1_over_v2 = mainw->cconfig->v1_over_v2; - mainw->db->storeMp3techinfo = mainw->cconfig->readinfo; - mainw->db->storeAvitechinfo = mainw->cconfig->readavii; - mainw->db->storeContent = mainw->cconfig->readcontent; - mainw->db->storeLimit = mainw->cconfig->readclimit; - mainw->db->storedFiles = mainw->cconfig->readcfiles; - - if(standON == NULL) - { - QMessageBox::warning(mainw,tr("Error:"),tr("There is no selected Media in the middle list box!"), - tr("Ok"),0); - return 0; - } - if(standON->type != HC_MEDIA) - { - QMessageBox::warning(mainw,tr("Error:"),tr("You can refresh ONLY a MEDIA node!"), - tr("Ok"),0); - return 0; - } - - o=tr("Rescan %1").arg(standON->getNameOf()); - rfd = QFileDialog::getExistingDirectory(NULL,mainw,"rescand",o); - if(rfd.isEmpty()) return 0; - - PWw *pww = new PWw(mainw,mainw->app); - mainw->db->pww = pww; - progress(pww); - - panelsOFF(); - if(0 != mainw->db->addMedia( - (char *)((const char *)rfd),"__rescanned__",-1,UNKNOWN,"system")) - { - Node *d; - o =tr("An error occured while scanning, the rescan operation was cancelled: \n%1") - .arg(mainw->db->errormsg); - - d=(mainw->db->getRootNode())->child; - while(strcmp(d->getNameOf(),"__rescanned__") != 0) d=d->next; - mainw->db->deleteNode(d); - QMessageBox::warning(mainw,tr("Error:"),o,tr("Ok"),0); - } - else - { - Node *d; - d=(mainw->db->getRootNode())->child; - while(strcmp(d->getNameOf(),"__rescanned__") != 0) d=d->next; - - delete [] ((DBMedia *)(d->data))->name; - ((DBMedia *)(d->data))->name = - mstr( ((DBMedia *)(standON->data))->name ); - - ((DBMedia *)(d->data))->comment = - mstr( ((DBMedia *)(standON->data))->comment ); - - delete [] ((DBMedia *)(d->data))->owner; - ((DBMedia *)(d->data))->owner = - mstr( ((DBMedia *)(standON->data))->owner ); - - ((DBMedia *)(d->data))->type = ((DBMedia *)(standON->data))->type ; - - ((DBMedia *)(d->data))->number = ((DBMedia *)(standON->data))->number; - - mainw->db->deleteNode(standON); - } - standON=NULL; - //Do autosave if the user ask it in the config ! - if(mainw->cconfig->autosave) - { - int retv=0; - if((retv=mainw->db->saveDB()) != 0) - { - if(retv==1) //The databas had no name. need a save as... - retv=saveasEvent(); - } - } + if ( mainw->cconfig->autosave ) { + int retv=0; + if ( ( retv=mainw->db->saveDB() ) != 0 ) { + if ( retv==1 ) //The databas had no name. need a save as... + retv=saveasEvent(); + } + } panelsON(); - - progress(pww); - pww->end(); - mainw->db->pww = NULL; - delete pww; - - return 0; - } -int GuiSlave::findEvent(void) - { - if(mainw->db == NULL) return 0; - - findDialog *d=new findDialog(mainw,"adddialog",true); - d->exec(); - return 0; - } + progress ( pww ); + pww->end(); + mainw->db->pww = NULL; + delete pww; -int GuiSlave::configEvent(void) - { - ConfigDialog *d=new ConfigDialog(mainw,"configdialog",true); - d->exec(); - return 0; - } + return 0; +} -int GuiSlave::aboutEvent(void) - { - InfoDialog *di=new InfoDialog(mainw,"infodialog",true); - di->exec(); - return 0; - } +int GuiSlave::findEvent ( void ) { + if ( mainw->db == NULL ) return 0; -int GuiSlave::insertcEvent(void) - { - char fnc[256]; - QString fn; - - if(mainw->db == NULL) - newEvent(); - if(mainw->db == NULL) - return 0; - fn = QFileDialog::getOpenFileName(NULL,tr("CdCat databases (*.hcf )"), - mainw,"openfiled",tr("Insert a database file...")); - if(fn.isEmpty()) return 0; - - strcpy(fnc,(const char *)fn); - - panelsOFF(); - - PWw *pww = new PWw(mainw,mainw->app); - mainw->db->pww = pww; - progress(pww); - - if(mainw->db->insertDB(fnc) != 0 ) - { // An error occured - QMessageBox::warning(mainw,tr("Error while opening..."), - mainw->db->errormsg,tr("Ok"),0); - } + findDialog *d=new findDialog ( mainw,"adddialog",true ); + d->exec(); + return 0; +} - progress(pww); - panelsON(); - progress(pww); - pww->end(); - mainw->db->pww = NULL; - delete pww; - return 0; - } +int GuiSlave::configEvent ( void ) { + ConfigDialog *d=new ConfigDialog ( mainw,"configdialog",true ); + d->exec(); + return 0; +} -int GuiSlave::renameEvent(void) - { - renamedialog *rd; - if(mainw->db == NULL) return 0; - if(standON == NULL) - { - QMessageBox::warning(mainw,tr("Error:"),tr("There is no selected item in the middle list box!"), - tr("Ok"),0); - return 0; - } - rd = new renamedialog(mainw,standON,this); - rd->exec(); - cHcaption(); - updateListFromNode(); - delete rd; - return 0; - } +int GuiSlave::aboutEvent ( void ) { + InfoDialog *di=new InfoDialog ( mainw,"infodialog",true ); + di->exec(); + return 0; +} -int GuiSlave::renumberEvent(void) - { - renumberdialog *rd; - if(mainw->db == NULL) return 0; - if(standON == NULL) - { - QMessageBox::warning(mainw,tr("Error:"),tr("There is no selected item in the middle list box!"), - tr("Ok"),0); - return 0; - } +int GuiSlave::aboutQtEvent ( void ) { + QApplication::aboutQt(); + return 0; +} - if(standON->type != HC_MEDIA) - { - QMessageBox::warning(mainw,tr("Error:"),tr("It is NOT a media node!"), - tr("Ok"),0); - return 0; - } - rd = new renumberdialog(mainw,standON,this); - rd->exec(); - cHcaption(); - updateListFromNode(); - return 0; - } +int GuiSlave::insertcEvent ( void ) { + char fnc[256]; + QString fn; -int GuiSlave::sizeEvent(void) - { - char text[52]; - QString qtext; - if(mainw->db == NULL) return 0; - if(standON == NULL) - { - QMessageBox::warning(mainw,tr("Error:"),tr("There is no selected item in the middle list box!"), - tr("Ok"),0); - return 0; - } - - sprintf(text,"%.2f Mb",mainw->db->getSize(standON)); - qtext = tr("The size of \"%1\" : \n %2 \n %3 file /%4 directory") - .arg(standON->getNameOf()) - .arg(text) - .arg(mainw->db->getCountFiles(standON)) - .arg(mainw->db->getCountDirs (standON)); - - QMessageBox::information(mainw,tr("The resoult:"),qtext, - tr("Ok"),0); - return 0; - } + if ( mainw->db == NULL ) + newEvent(); + if ( mainw->db == NULL ) + return 0; + fn = QFileDialog::getOpenFileName(0, tr ( "Insert a database file..." ), mainw->cconfig->lastDir, tr ( "CdCat databases (*.hcf )" )); + if ( fn.isEmpty() ) return 0; -int GuiSlave::sortNuEvent(void) - { - if(mainw->db == NULL) return 0; - panelsOFF(); - mainw->db->sortM(NUMBER); - panelsON(); - return 0; - } + strcpy ( fnc, ( const char * ) QFile::encodeName ( fn ) ); -int GuiSlave::sortNaEvent(void) - { - if(mainw->db == NULL) return 0; - panelsOFF(); - mainw->db->sortM(NAME); - panelsON(); - return 0; - } + panelsOFF(); -int GuiSlave::sortTyEvent(void) - { - if(mainw->db == NULL) return 0; - panelsOFF(); - mainw->db->sortM(TYPE); - panelsON(); - return 0; - } + PWw *pww = new PWw ( mainw,mainw->app ); + mainw->db->pww = pww; + progress ( pww ); -int GuiSlave::sortTiEvent(void) - { - if(mainw->db == NULL) return 0; - panelsOFF(); - mainw->db->sortM(TIME); - panelsON(); - return 0; - } + if ( mainw->db->insertDB ( fnc ) != 0 ) { // An error occured + QMessageBox::warning ( mainw,tr ( "Error while opening..." ), + mainw->db->errormsg ); + } -int GuiSlave::helpEvent(void) - { - helpDialog *dh=new helpDialog(mainw,"helpdialog",true); - dh->exec(); - return 0; - } + progress ( pww ); + panelsON(); + progress ( pww ); + pww->end(); + mainw->db->pww = NULL; + delete pww; + return 0; +} -int GuiSlave::exportEvent (void) - { - exportCdcatDB i(mainw->app,mainw->db); - i.exec(); - return 0; - } +int GuiSlave::renameEvent ( void ) { + renamedialog *rd; + if ( mainw->db == NULL ) return 0; + if ( standON == NULL ) { + QMessageBox::warning ( mainw,tr ( "Error:" ),tr ( "There is no selected item in the middle list box!" ) ); + return 0; + } + rd = new renamedialog ( mainw,standON,this ); + rd->exec(); + cHcaption(); + updateListFromNode(); + delete rd; + return 0; +} -int GuiSlave::importEvent (void) -{ - import i(this); - return 0; -} - -int GuiSlave::openHistoryElementEvent(int id) - { - char fnc[256]; - QString fn=mainw->historyMenu->text(id); - - strcpy(fnc,(const char *)fn); - while(closeEvent() != 0); - panelsOFF(); - - if(mainw->db == NULL) - mainw->db = new DataBase(); - - PWw *pww = new PWw(mainw,mainw->app); - mainw->db->pww = pww; - progress(pww); - - if(mainw->db->openDB(fnc) != 0 ) - { // An error occured - QMessageBox::warning(mainw,tr("Error while opening..."), - mainw->db->errormsg,tr("Ok"),0); - mainw->db = NULL; - standON = NodePwd = NULL;; - panelsOFF(); - } - progress(pww); - panelsON(); - progress(pww); - - //QMessageBox::information(0,"new history element",fn); - if ((mainw->cconfig->hlist.grep(fn)).isEmpty()){ - mainw->cconfig->hlist.append (fn); - mainw->historyMenu->insertItem(*get_t_open_icon(),fn); - } +int GuiSlave::typeChangeEvent ( ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if ( mainw->db == NULL ) + return 0; + + if ( standON == NULL ) { + //QMessageBox::warning ( mainw,tr ( "Error:" ),tr ( "There is no selected item in the middle list box!" ) ); + return 0; + } + + if ( context_item == NULL) + return 0; + + if(*DEBUG_INFO_ENABLED) + std::cerr << "standON: " <getFullPath()) << ", nodetype: " << standON->type << std::endl; + if(standON->type != HC_MEDIA ) + return 0; + + if(*DEBUG_INFO_ENABLED) + std::cerr << "mediatype: " << ( ( DBMedia * ) ( standON->data ) )->type << std::endl; + CatalogTypeEditDialog te ( mainw, standON); + te.exec(); + if ( te.changeOk ) { + // ok + + // 1- name + context_item->setText(0, standON->getNameOf()); + + // 2.(size) Column name: + context_item->setText(0, QString().setNum ( ( ( DBMedia * ) ( standON->data ) )->number )); + + // 3. Column name: + switch ( ( ( DBMedia * ) ( standON->data ) )->type ) { + case UNKNOWN : + context_item->setText(1, tr ( "Unknown(DB)" )); + context_item->setPixmap (0,*get_m_unknown_icon() ); + break; + case CD: + context_item->setText(1, tr ( "CD" )); + context_item->setPixmap (0,*get_m_cd_icon() ); + break; + case DVD: + context_item->setText(1, tr ( "DVD" )); + context_item->setPixmap ( 0, *get_m_dvd_icon() ); + break; + case HARDDISC: + context_item->setText(1, tr ( "HardDisc" )); + context_item->setPixmap ( 0,*get_m_hdd_icon() ); + break; + case FLOPPY: + context_item->setText(1, tr ( "Floppy" )); + context_item->setPixmap (0,*get_m_floppy_icon() ); + break; + case NETPLACE: + context_item->setText(1, tr ( "NetworkDrv" )); + context_item->setPixmap ( 0,*get_m_net_icon() ); + break; + case FLASHDRV: + context_item->setText(1, tr ( "FlashDrv" )); + context_item->setPixmap ( 0,*get_m_flash_icon() ); + break; + case OTHERD: + context_item->setText(1, tr ( "OtherDevice" )); + context_item->setPixmap ( 0,*get_m_other_icon() ); + break; + } + saveEvent(); + } + + return 0; +} - if ((int)mainw->cconfig->hlist.count() > (int)mainw->cconfig->historysize){ - mainw->cconfig->hlist.remove (mainw->cconfig->hlist.begin()); - mainw->historyMenu->removeItemAt(0); - } +int GuiSlave::renumberEvent ( void ) { + renumberdialog *rd; + if ( mainw->db == NULL ) return 0; + if ( standON == NULL ) { + QMessageBox::warning ( mainw,tr ( "Error:" ),tr ( "There is no selected item in the middle list box!" ) ); + return 0; + } - progress(pww); - pww->end(); - if(mainw->db != NULL) - mainw->db->pww = NULL; - delete pww; - return 0; - } + if ( standON->type != HC_MEDIA ) { + QMessageBox::warning ( mainw,tr ( "Error:" ),tr ( "It is NOT a media node!" ) ); + return 0; + } + rd = new renumberdialog ( mainw,standON,this ); + rd->exec(); + cHcaption(); + updateListFromNode(); + return 0; +} -int GuiSlave::closeBranch(void) - { - if(mainw->db == NULL) return 0; - mainw->DirView->closeAllBranch(); - return 0; - } +int GuiSlave::sizeEvent ( void ) { + char text[52]; + QString qtext; + if ( mainw->db == NULL ) return 0; + if ( standON == NULL ) { + QMessageBox::warning ( mainw,tr ( "Error:" ),tr ( "There is no selected item in the middle list box!" ) ); + return 0; + } -int GuiSlave::editComment(void) - { - if(mainw->db == NULL) return 0; - if(standON == NULL) return 0; - - editNodeComment(standON,mainw); - cHcaption(); - mainw->commentWidget->repaint(); - return 0; - } + sprintf ( text,"%.2f",mainw->db->getSize ( standON ) ); + qtext = tr ( "The size of \"%1\" : \n %2 \n %3 file /%4 directory" ) + .arg ( standON->getNameOf() ) + .arg ( QString(text)+" "+ tr("MiB") ) + .arg ( mainw->db->getCountFiles ( standON ) ) + .arg ( mainw->db->getCountDirs ( standON ) ); -int GuiSlave::showContent(void) - { - if(mainw->db == NULL) return 0; - if(haveContent(standON)) - { - ShowContent *sc = new ShowContent(standON,mainw,"showcw",true); - sc->exec(); - delete sc; - } - cHcaption(); - return 0; - } + QMessageBox::information ( mainw,tr ( "The result:" ),qtext ); + return 0; +} -int GuiSlave::addlnkEvent(void) - { - if(mainw->db == NULL) return 0; - - AddLnk *al = new AddLnk(mainw); - al->exec(); - if(al->ok) - { - panelsOFF(); - mainw->db->addLnk((const char *)al->fname->text()); - panelsON(); - } - delete al; - cHcaption(); - return 0; - } +int GuiSlave::sortNuEvent ( void ) { + if ( mainw->db == NULL ) return 0; + panelsOFF(); + mainw->db->sortM ( NUMBER ); + panelsON(); + return 0; +} -int GuiSlave::followLnk(void) - { - if(mainw->db == NULL) return 0; - if(standON->type == HC_CATLNK) - { - char fnc[256]; +int GuiSlave::sortNaEvent ( void ) { + if ( mainw->db == NULL ) return 0; + panelsOFF(); + mainw->db->sortM ( NAME ); + panelsON(); + return 0; +} - if( ((DBCatLnk *)(standON->data))->location == NULL || - !strcmp(((DBCatLnk *)(standON->data))->location,"")) - { - QMessageBox::warning(mainw,tr("Error while opening..."), - tr("The link is empty."),tr("Ok"),0); +int GuiSlave::sortTyEvent ( void ) { + if ( mainw->db == NULL ) return 0; + panelsOFF(); + mainw->db->sortM ( TYPE ); + panelsON(); + return 0; +} - return 0; - } - +int GuiSlave::sortTiEvent ( void ) { + if ( mainw->db == NULL ) return 0; + panelsOFF(); + mainw->db->sortM ( TIME ); + panelsON(); + return 0; +} - int ret_val=0; +int GuiSlave::helpEvent ( void ) { + QDialog dh; + Ui_helpDialog *ui_dh=new Ui_helpDialog(); + ui_dh->setupUi((QDialog *)(&dh)); + dh.exec(); + delete ui_dh; + return 0; +} - - strcpy(fnc,(const char *)((DBCatLnk *)(standON->data))->location); - while(closeEvent() !=0); +int GuiSlave::exportEvent ( void ) { + if ( mainw->db == NULL ) return 0; + exportCdcatDB i ( mainw ); + i.exec(); + return 0; +} + +int GuiSlave::importEvent ( void ) { + import i ( this ); + return 0; +} + +int GuiSlave::openHistoryElementEvent ( int id ) { + char fnc[256]; + QString fn=mainw->historyMenu->text ( id ); + + strcpy ( fnc, ( const char * ) QFile::encodeName ( fn ) ); + while ( closeEvent() != 0 ) { }; panelsOFF(); - if(mainw->db == NULL) - mainw->db = new DataBase(); + if ( mainw->db == NULL ) + mainw->db = new DataBase(); - PWw *pww = new PWw(mainw,mainw->app); + PWw *pww = new PWw ( mainw,mainw->app ); mainw->db->pww = pww; - progress(pww); + progress ( pww ); - if((ret_val=mainw->db->openDB(fnc)) != 0 ) - { // An error occured - QMessageBox::warning(mainw,tr("Error while opening..."), - mainw->db->errormsg,tr("Ok"),0); - mainw->db = NULL; - standON = NodePwd = NULL; - panelsOFF(); - } - - checkversion(mainw,mainw->db); - - progress(pww); + if ( mainw->db->openDB ( fnc ) != 0 ) { // An error occured + QMessageBox::warning ( mainw,tr ( "Error while opening..." ), + mainw->db->errormsg ); + mainw->db = NULL; + standON = NodePwd = NULL;; + panelsOFF(); + } + progress ( pww ); panelsON(); - progress(pww); + progress ( pww ); - progress(pww); + //QMessageBox::information(0,"new history element",fn); + if ( ( mainw->cconfig->hlist.grep ( fn ) ).isEmpty() ) { + mainw->cconfig->hlist.append ( fn ); + mainw->historyMenu->addAction ( *get_t_open_icon(),fn ); + } + + if ( ( int ) mainw->cconfig->hlist.count() > ( int ) mainw->cconfig->historysize ) { + mainw->cconfig->hlist.remove ( mainw->cconfig->hlist.begin() ); + mainw->historyMenu->removeItemAt ( 0 ); + } + + progress ( pww ); pww->end(); - if(mainw->db != NULL) - mainw->db->pww = NULL; + if ( mainw->db != NULL ) + mainw->db->pww = NULL; delete pww; - } + return 0; +} - return 0; - } +int GuiSlave::closeBranch ( void ) { + if ( mainw->db == NULL ) return 0; + mainw->DirView->closeAllBranch(); + return 0; +} -int GuiSlave::borrowingEvent(void) - { - borrowingDialog *d; - - if(mainw->db == NULL) return 0; - - d = new borrowingDialog(mainw->db,mainw,"borrowingdialog",true); - d->exec(); - mainw->commentWidget->repaint(); - cHcaption(); - return 0; - } +int GuiSlave::editComment ( void ) { + if ( mainw->db == NULL ) return 0; + if ( standON == NULL ) return 0; + + editNodeComment ( standON,mainw ); + cHcaption(); + mainw->commentWidget->repaint(); + return 0; +} -int GuiSlave::sborrowEvent(void) - { - borrowDialog *d; - - if(mainw->db == NULL) return 0; - if(standON == NULL) return 0; - - d = new borrowDialog(standON->getNameOf(),mainw,"borrowingdialog",true); - d->exec(); - - if(d->ok == 1) - { - if(((DBMedia *)(standON->data))->borrowing != NULL) - { - delete ((DBMedia *)(standON->data))->borrowing; - ((DBMedia *)(standON->data))->borrowing = NULL; - } - ((DBMedia *)(standON->data))->borrowing = mstr((const char *)d->m); - standON->touchDB(); - } - mainw->commentWidget->repaint(); - cHcaption(); - return 0; - } +int GuiSlave::editCategory ( void ) { + if ( mainw->db == NULL ) return 0; + if ( standON == NULL ) return 0; + + editNodeComment ( standON,mainw, false ); + cHcaption(); + mainw->commentWidget->repaint(); + return 0; +} + +int GuiSlave::showContent ( void ) { + if ( mainw->db == NULL ) return 0; + if ( haveContent ( standON ) ) { + ShowContent *sc = new ShowContent ( standON, false, mainw,"showcw"); + sc->exec(); + delete sc; + } + cHcaption(); + return 0; +} + + +int GuiSlave::addlnkEvent ( void ) { + if ( mainw->db == NULL ) return 0; + + AddLnk *al = new AddLnk ( this, mainw ); + al->exec(); + if ( al->ok ) { + panelsOFF(); + mainw->db->addLnk ( ( const char * ) QFile::encodeName ( al->fname->text() ) ); + panelsON(); + } + delete al; + cHcaption(); + return 0; +} + +int GuiSlave::followLnk ( void ) { + if ( mainw->db == NULL ) return 0; + if ( standON->type == HC_CATLNK ) { + char fnc[256]; + + if ( ( ( DBCatLnk * ) ( standON->data ) )->location == NULL || + !strcmp ( ( ( DBCatLnk * ) ( standON->data ) )->location,"" ) ) { + QMessageBox::warning ( mainw,tr ( "Error while opening..." ), + tr ( "The link is empty." ) ); + + return 0; + } -int GuiSlave::cborrowEvent(void) - { - int i; - if(mainw->db == NULL) return 0; - if(standON == NULL) return 0; - - i=QMessageBox::warning(mainw,tr("Confirmation"), - tr("Do you want to clear the borrowing mark from media \"%1\"?\n(Say yes if you got it back.)").arg(standON->getNameOf()) - ,tr("Yes"),tr("No")); - - if(i != 0) return 0; - if(((DBMedia *)(standON->data))->borrowing != NULL) - { - delete ((DBMedia *)(standON->data))->borrowing; - ((DBMedia *)(standON->data))->borrowing = NULL; - } - standON->touchDB(); - mainw->commentWidget->repaint(); - cHcaption(); - return 0; - } + int ret_val=0; + + + strcpy ( fnc, ( const char * ) ( ( DBCatLnk * ) ( standON->data ) )->location ); + while ( closeEvent() !=0 ); + panelsOFF(); + + if ( mainw->db == NULL ) + mainw->db = new DataBase(); + + PWw *pww = new PWw ( mainw,mainw->app ); + mainw->db->pww = pww; + progress ( pww ); + + if ( ( ret_val=mainw->db->openDB ( fnc ) ) != 0 ) { // An error occured + QMessageBox::warning ( mainw,tr ( "Error while opening..." ), + mainw->db->errormsg ); + mainw->db = NULL; + standON = NodePwd = NULL; + panelsOFF(); + } + + checkversion ( mainw,mainw->db ); + + progress ( pww ); + panelsON(); + progress ( pww ); + + progress ( pww ); + pww->end(); + if ( mainw->db != NULL ) + mainw->db->pww = NULL; + delete pww; + } + + return 0; +} + +int GuiSlave::borrowingEvent ( void ) { + borrowingDialog *d; + + if ( mainw->db == NULL ) return 0; + + d = new borrowingDialog ( mainw->db,mainw,"borrowingdialog",true ); + d->exec(); + mainw->commentWidget->repaint(); + cHcaption(); + return 0; +} + +int GuiSlave::sborrowEvent ( void ) { + borrowDialog *d; + + if ( mainw->db == NULL ) return 0; + if ( standON == NULL ) return 0; + + d = new borrowDialog ( standON->getNameOf(),mainw,"borrowingdialog",true ); + d->exec(); + + if ( d->ok == 1 ) { + if ( ! ( ( ( DBMedia * ) ( standON->data ) )->borrowing.isEmpty() ) ) + ( ( DBMedia * ) ( standON->data ) )->borrowing = ""; + ( ( DBMedia * ) ( standON->data ) )->borrowing = d->m; + standON->touchDB(); + } + mainw->commentWidget->repaint(); + cHcaption(); + return 0; +} + +int GuiSlave::cborrowEvent ( void ) { + int i; + if ( mainw->db == NULL ) return 0; + if ( standON == NULL ) return 0; + + i=QMessageBox::warning ( mainw,tr ( "Confirmation" ), + tr ( "Do you want to clear the borrowing mark from media \"%1\"?\n(Say yes if you got it back.)" ).arg ( standON->getNameOf() ) + ,tr ( "Yes" ),tr ( "No" ) ); + + if ( i != 0 ) return 0; + if ( ! ( ( ( DBMedia * ) ( standON->data ) )->borrowing.isEmpty() ) ) + ( ( DBMedia * ) ( standON->data ) )->borrowing = ""; + standON->touchDB(); + mainw->commentWidget->repaint(); + cHcaption(); + return 0; +} //***************************************************************************** // Positioning dialog //***************************************************************************** -QPosDialog::QPosDialog(CdCatMainWidget *parent) -:QDialog(parent,"searchdd",true,WStyle_Customize | WStyle_NoBorder) - { - QPoint point; - QHBoxLayout *l1; - QVBoxLayout *l2; - - p = parent; - le = new QLineEdit(this,"leedit"); - - setBackgroundMode(PaletteDark); - - l2 = new QVBoxLayout(); - l2->addSpacing(2); - l2->addWidget (le); - l2->addSpacing(2); - - l1 = new QHBoxLayout(this); - l1->addSpacing(2); - l1->addLayout(l2); - l1->addSpacing(2); - - point = p->splitMain->mapToGlobal( - QPoint(p->listView->x()+5,p->listView->y()+p->listView->height()-40)); - - move(point); - - maxp = point.y()+ 40; - minp = point.y()-100; - - connect(le,SIGNAL(returnPressed()),this,SLOT(close())); - connect(le,SIGNAL(textChanged(const QString &)),this,SLOT(pos(const QString &))); - le->setFocus(); - } +QPosDialog::QPosDialog ( CdCatMainWidget *parent ) + :QDialog ( parent,"searchdd",true,Qt::WStyle_Customize | Qt::WStyle_NoBorder ) { + QPoint point; + Q3HBoxLayout *l1; + Q3VBoxLayout *l2; + + p = parent; + le = new QLineEdit ( this,"leedit" ); + + setBackgroundMode ( Qt::PaletteDark ); + + l2 = new Q3VBoxLayout(); + l2->addSpacing ( 2 ); + l2->addWidget ( le ); + l2->addSpacing ( 2 ); + + l1 = new Q3HBoxLayout ( this ); + l1->addSpacing ( 2 ); + l1->addLayout ( l2 ); + l1->addSpacing ( 2 ); + + point = p->splitMain->mapToGlobal ( + QPoint ( p->listView->x() +5,p->listView->y() +p->listView->height()-40 ) ); + + move ( point ); + + maxp = point.y() + 40; + minp = point.y()-100; + + connect ( le,SIGNAL ( returnPressed() ),this,SLOT ( close() ) ); + connect ( le,SIGNAL ( textChanged ( const QString & ) ),this,SLOT ( pos ( const QString & ) ) ); + le->setFocus(); +} -int QPosDialog::pos(const QString & str) - { - int len; - char pattit[256]; - - strcpy(pattit,(const char *)str); - len = strlen(pattit); - - QListViewItemIterator it(p->listView); - - for(;(it.current()) != NULL;it++) - { - if(0 == strncmp((const char *)((it.current())->text(0)),pattit,len)) - { - p->listView->setCurrentItem((it.current())); - p->listView->curr_vis(); - p->guis->standOn((it.current())); - return 0; +int QPosDialog::pos ( const QString & str ) { + int len; + char pattit[256]; + DEBUG_INFO_ENABLED = init_debug_info(); + if(*DEBUG_INFO_ENABLED) + cerr << "QPosDialog::pos() str: " << qPrintable ( str ) << endl; + + strcpy ( pattit, ( const char * ) str ); + len = strlen ( pattit ); + + Q3ListViewItemIterator it ( p->listView ); + + for ( ; ( it.current() ) != NULL;it++ ) { + if ( 0 == strncmp ( ( const char * ) ( ( it.current() )->text ( 0 ) ),pattit,len ) ) { + p->listView->setCurrentItem ( it.current() ); + p->listView->curr_vis(); + p->guis->standOn ( it.current() ); + return 0; + } } - } - return 0; - } + return 0; +} -void QPosDialog::keyPressEvent(QKeyEvent *ke) - { - int yp = y(); - if(ke->key() == Qt::Key_Escape || - ke->key() == Qt::Key_Return) close(); - - if(ke->key() == Qt::Key_Up) - yp-=5; - if(ke->key() == Qt::Key_Down) - yp+=5; - - if(yp < minp) yp = minp; - if(yp > maxp) yp = maxp; - - move(x(),yp); - - QDialog::keyPressEvent(ke); - } +void QPosDialog::keyPressEvent ( QKeyEvent *ke ) { + int yp = y(); + if ( ke->key() == Qt::Key_Escape || + ke->key() == Qt::Key_Return ) close(); + + if ( ke->key() == Qt::Key_Up ) + yp-=5; + if ( ke->key() == Qt::Key_Down ) + yp+=5; + if ( yp < minp ) yp = minp; + if ( yp > maxp ) yp = maxp; + + move ( x(),yp ); + + QDialog::keyPressEvent ( ke ); +} + +int GuiSlave::posEvent ( void ) { + QPosDialog *d; + + d=new QPosDialog ( mainw ); + d->exec(); + return 0; +} + +int GuiSlave::colorEvent ( void ) { + ColorSettings *d; + + d=new ColorSettings ( mainw->cconfig,mainw,"cs",true ); + d->exec(); + mainw->repaint(); + mainw->commentWidget->repaint(); + return 0; +} + +CatalogTypeEditDialog::CatalogTypeEditDialog (CdCatMainWidget *parent, Node *n) : QDialog ( parent) { + this->n = n; + changeOk = false; + + setSizeGripEnabled ( TRUE ); + layout1 = new Q3VBoxLayout ( this, 0, 6, "layout1" ); + TextLabel = new QLabel ( this, "textLabel6" ); + layout1->addWidget ( TextLabel ); + cbType = new QComboBox ( FALSE, this, "cbType" ); + layout1->addWidget ( cbType ); + + buttonOK = new QPushButton ( this, "buttonOk" ); + buttonOK->setMinimumWidth ( 100 ); + layout1->addWidget ( buttonOK ); + + buttonCancel = new QPushButton ( this, "buttonCancel" ); + buttonCancel->setMinimumWidth ( 100 ); + layout1->addWidget ( buttonCancel ); + + connect ( buttonOK, SIGNAL ( clicked() ), this, SLOT ( okExit() ) ); + connect ( buttonCancel, SIGNAL ( clicked() ), this, SLOT ( cancel()) ); + connect ( cbType, SIGNAL ( activated(int)), this, SLOT ( cbTypeToggeled(int ) ) ); + languageChange(); + resize ( QSize ( 200, 250 ).expandedTo ( minimumSizeHint() ) ); +} + +void CatalogTypeEditDialog::languageChange() { + setCaption ( tr ( "Change media type" ) ); + TextLabel->setText(tr("Change type of media")+" "+this->n->getFullPath()); + cbType->clear(); + cbType->insertItem ( *get_m_cd_icon(), tr ( "CD" ) ); + cbType->insertItem ( *get_m_dvd_icon(), tr ( "DVD" ) ); + cbType->insertItem ( *get_m_hdd_icon(), tr ( "HardDisc" ) ); + cbType->insertItem ( *get_m_floppy_icon(), tr ( "Floppy" ) ); + cbType->insertItem ( *get_m_net_icon(), tr ( "NetworkPlace" ) ); + cbType->insertItem ( *get_m_flash_icon(), tr ( "FlashDrive" ) ); + cbType->insertItem ( *get_m_other_icon(), tr ( "OtherDevice" ) ); + //cbType->setCurrentText(tr( "CD" )); // default + cbType->setCurrentIndex(( ( DBMedia * ) ( n->data ) )->type-1); + buttonCancel->setText(tr("Cancel")); + buttonOK->setText(tr("OK")); +} + +void CatalogTypeEditDialog::okExit() { + DEBUG_INFO_ENABLED = init_debug_info(); + changeOk = true; + if(*DEBUG_INFO_ENABLED) + std::cerr << "mediatype changed from " << ( ( DBMedia * ) ( n->data ) )->type-1 << " to " << cbType->currentIndex() +1 << std::endl; + ( ( DBMedia * ) ( n->data ) )->type = cbType->currentIndex()+1; + if(*DEBUG_INFO_ENABLED) + std::cerr << "mediatype new: " << ( ( DBMedia * ) ( n->data ) )->type-1 << std::endl; + close(); +} + +void CatalogTypeEditDialog::cancel() { + close(); +} + +void CatalogTypeEditDialog::cbTypeToggeled(int index) { + DEBUG_INFO_ENABLED = init_debug_info(); + if(*DEBUG_INFO_ENABLED) + std::cerr << "mediatype changed to " << cbType->currentItem() +1 << std::endl; +} -int GuiSlave::posEvent(void) - { - QPosDialog *d; - - d=new QPosDialog(mainw); - d->exec(); - return 0; - } -int GuiSlave::colorEvent(void) - { - ColorSettings *d; - - d=new ColorSettings(mainw->cconfig,mainw,"cs",true); - d->exec(); - mainw->repaint(); - mainw->commentWidget->repaint(); - return 0; - } diff -Nru cdcat-1.01b/src/guibase.h cdcat-1.2/src/guibase.h --- cdcat-1.01b/src/guibase.h 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/guibase.h 2011-02-21 07:31:07.000000000 +0000 @@ -13,147 +13,180 @@ #include #include -#include -#include +#include +#include +//Added by qt3to4: +#include class Node; class CdCatMainWidget; class QKeyEvent; class QLineEdit; class QWidget; +class QComboBox; +class QLabel; +class QPushButton; +class Q3VBoxLayout; class QPainter; class DataBase; +class HQListViewItem; -class GuiSlave : public QObject - { - Q_OBJECT - - public: - CdCatMainWidget *mainw; - Node *standON; - Node *NodePwd; - Node *tmpParent; - - QPopupMenu *mPopup; - - GuiSlave(CdCatMainWidget *p); - Node *getNodeFromFullName(Node *root,const QString& newloc); - int updateListFromNode(Node *pdir = 0); - int isIdentical(int i); - int isIdentical(QString q); - bool haveContent(Node *node); - void updateStatusl(Node *n); - void checkversion(QWidget *p,DataBase *db); - - public slots: - - int hotKeys(QKeyEvent *ke); - int listUpdate (const QString& newloc); - int standOn (QListViewItem *on); - int doubleClickOn (QListViewItem *on); - void showListviewContextMenu(QListViewItem *, const QPoint &, int); - void showTreeContextMenu(QListViewItem *, const QPoint &, int); - - int cHcaption(void); - - void panelsOFF(void); /*I do this if the user do something on the database*/ - void panelsON (void); - - /*Mainwinow Buttons*/ - int newEvent (void); - int openEvent (void); - int saveEvent (void); - int saveasEvent (void); - int closeEvent (void); - int deleteEvent (void); - int addEvent (void); - int rescanEvent (void); - int findEvent (void); - int configEvent (void); - int aboutEvent (void); - int helpEvent (void); - int insertcEvent(void); - int renameEvent (void); - int sizeEvent (void); - int importEvent (void); - int exportEvent (void); - int renumberEvent(void); - int borrowingEvent (void); - int sborrowEvent(void); - int cborrowEvent(void); - - int sortNuEvent (void); - int sortNaEvent (void); - int sortTyEvent (void); - int sortTiEvent (void); - int closeBranch (void); - int editComment (void); - int showContent (void); - int colorEvent (void); - int followLnk (void); - int addlnkEvent (void); +class GuiSlave : public QObject { + Q_OBJECT - int posEvent (void); +public: + CdCatMainWidget *mainw; + Node *standON; + Node *NodePwd; + Node *tmpParent; + + Q3PopupMenu *mPopup; + + GuiSlave ( CdCatMainWidget *p ); + Node *getNodeFromFullName ( Node *root,const QString& newloc ); + int updateListFromNode ( Node *pdir = 0 ); + int isIdentical ( int i ); + int isIdentical ( QString q ); + bool haveContent ( Node *node ); + void updateStatusl ( Node *n ); + void checkversion ( QWidget *p,DataBase *db ); + +public slots: + + int hotKeys ( QKeyEvent *ke ); + int listUpdate ( const QString& newloc ); + int standOn ( Q3ListViewItem *on ); + int doubleClickOn ( Q3ListViewItem *on ); + void showListviewContextMenu ( Q3ListViewItem *, const QPoint &, int ); + void showTreeContextMenu ( Q3ListViewItem *, const QPoint &, int ); + + int cHcaption ( void ); + + void panelsOFF ( void ); /*I do this if the user do something on the database*/ + void panelsON ( void ); + + /*Mainwinow Buttons*/ + int newEvent ( void ); + int openEvent ( void ); + int saveEvent ( void ); + int saveasEvent ( void ); + int closeEvent ( void ); + int deleteEvent ( void ); + int addEvent ( void ); + int rescanEvent ( void ); + int findEvent ( void ); + int configEvent ( void ); + int aboutEvent ( void ); + int aboutQtEvent ( void ); + int helpEvent ( void ); + int insertcEvent ( void ); + int renameEvent ( void ); + int typeChangeEvent( void ); + int sizeEvent ( void ); + int importEvent ( void ); + int exportEvent ( void ); + int renumberEvent ( void ); + int borrowingEvent ( void ); + int sborrowEvent ( void ); + int cborrowEvent ( void ); + + int sortNuEvent ( void ); + int sortNaEvent ( void ); + int sortTyEvent ( void ); + int sortTiEvent ( void ); + int closeBranch ( void ); + int editComment ( void ); + int showContent ( void ); + int editCategory ( void ); + int colorEvent ( void ); + int followLnk ( void ); + int addlnkEvent ( void ); - int openHistoryElementEvent(int id); + int posEvent ( void ); + + int openHistoryElementEvent ( int id ); + +private: + HQListViewItem *context_item; }; /**********************************************************************/ -class HQListViewItem : public QListViewItem - { - public: - int etype; - HQListViewItem(QListView *parent); - HQListViewItem(QListView *parent,QString label1,QString label2,QString label3); - HQListViewItem(QListView *parent,QListViewItem *after,QString label1,QString label2,QString label3); - +class HQListViewItem : public Q3ListViewItem { +public: + int etype; + HQListViewItem ( Q3ListView *parent ); + HQListViewItem ( Q3ListView *parent,QString label1,QString label2,QString label3 ); + HQListViewItem ( Q3ListView *parent,Q3ListViewItem *after,QString label1,QString label2,QString label3 ); + // virtual int compare(QListViewItem *i,int col,bool ascending) const; - virtual QString key(int column,bool ascending) const; - protected: - void paintCell(QPainter *p,const QColorGroup & cg,int column,int width,int align); - }; - -class HQListView : public QListView - { - Q_OBJECT - public: - CdCatMainWidget *mainw; - HQListView(CdCatMainWidget *mw,QWidget *parent=0,const char *name=0,WFlags f=0); - void start(void); - void curr_vis(void); - void changed(void); - - protected: - void keyPressEvent(QKeyEvent *ke); - - //This is need for memoryze the current sorting state. - //It is'nt necessary under QT 3.X becouse there is sorting query function, - //but I didn't found it in QT 2.3.0 (Non-Commercial for Win) - public: - virtual void setSorting(int column, bool increasing = TRUE); - int scol; - bool sasc; - }; - -//********************************************************************** -class QPosDialog : public QDialog - { - Q_OBJECT - - public: - QLineEdit *le; - CdCatMainWidget *p; - QPosDialog(CdCatMainWidget *parent); - - public slots: - int pos(const QString & str); - protected: - void keyPressEvent(QKeyEvent *ke); - private: - int maxp,minp; - }; + virtual QString key ( int column,bool ascending ) const; +protected: + void paintCell ( QPainter *p,const QColorGroup & cg,int column,int width,int align ); +}; + +class HQListView : public Q3ListView { + Q_OBJECT +public: + CdCatMainWidget *mainw; + HQListView ( CdCatMainWidget *mw,QWidget *parent=0,const char *name=0,Qt::WFlags f=0 ); + void start ( void ); + void curr_vis ( void ); + void changed ( void ); + +protected: + void keyPressEvent ( QKeyEvent *ke ); + + //This is need for memoryze the current sorting state. + //It is'nt necessary under QT 3.X becouse there is sorting query function, + //but I didn't found it in QT 2.3.0 (Non-Commercial for Win) +public: + virtual void setSorting ( int column, bool increasing = TRUE ); + int scol; + bool sasc; +}; + +//********************************************************************** +class QPosDialog : public QDialog { + Q_OBJECT + +public: + QLineEdit *le; + CdCatMainWidget *p; + QPosDialog ( CdCatMainWidget *parent ); + +public slots: + int pos ( const QString & str ); +protected: + void keyPressEvent ( QKeyEvent *ke ); +private: + int maxp,minp; +}; + +class CatalogTypeEditDialog : public QDialog { + Q_OBJECT + +public: + CatalogTypeEditDialog (CdCatMainWidget *parent, Node *n); + QLabel *TextLabel; + QComboBox *cbType; + QPushButton *buttonOK; + QPushButton *buttonCancel; + Q3VBoxLayout* layout1; + bool changeOk; + +public slots: + void languageChange(); + void okExit(); + void cancel(); + void cbTypeToggeled(int index); + +private: + Node *n; +}; + + #endif diff -Nru cdcat-1.01b/src/hdirview.cpp cdcat-1.2/src/hdirview.cpp --- cdcat-1.01b/src/hdirview.cpp 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/hdirview.cpp 2011-01-17 10:39:02.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** - Hyper's CD Catalog + Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -16,184 +16,180 @@ #include #include #include -#include +#include #include -#include +#include #include #include #include -#include +#include #include #include +//Added by qt3to4: +#include +#include +#include +#include +#include +#include + +#include +using namespace std; +#include "config.h" +#include "cdcat.h" #include "dbase.h" #include "mainwidget.h" #include "guibase.h" #include "icons.h" -LNode::LNode( LNode * parent, Node *dbnodep) - : QListViewItem( parent ), - pix( 0 ) -{ + + +LNode::LNode ( LNode * parent, Node *dbnodep ) + : Q3ListViewItem ( parent ), + pix ( 0 ) { p = parent; node=dbnodep; - setPixmap( get_v_folderclosed_icon() ); + setPixmap ( get_v_folderclosed_icon() ); } -LNode::LNode( QListView * parent, Node *dbnodep) - : QListViewItem( parent ), - pix( 0 ) -{ +LNode::LNode ( Q3ListView * parent, Node *dbnodep ) + : Q3ListViewItem ( parent ), + pix ( 0 ) { node = dbnodep; p = 0; } -void LNode::paintCell(QPainter *p,const QColorGroup & cg,int column,int width,int align) - { - QColorGroup ocg(cg); - ocg.setColor(QColorGroup::Highlight,QColor(225,225,225)); - ocg.setColor(QColorGroup::HighlightedText,QColor(black)); - QListViewItem::paintCell(p,ocg,column,width,align); - } +void LNode::paintCell ( QPainter *p,const QColorGroup & cg,int column,int width,int align ) { + QColorGroup ocg ( cg ); + ocg.setColor ( QColorGroup::Highlight,QColor ( 225,225,225 ) ); + ocg.setColor ( QColorGroup::HighlightedText,QColor ( Qt::black ) ); + Q3ListViewItem::paintCell ( p,ocg,column,width,align ); +} -void LNode::setPixmap( QPixmap *px ) -{ +void LNode::setPixmap ( QPixmap *px ) { pix = px; setup(); - widthChanged( 0 ); + widthChanged ( 0 ); invalidateHeight(); repaint(); } -const QPixmap *LNode::pixmap( int i ) const -{ +const QPixmap *LNode::pixmap ( int i ) const { if ( i ) - return 0; + return 0; return pix; } -void LNode::setOpen( bool o ) -{ +void LNode::setOpen ( bool o ) { LNode *last=NULL; - switch(node->type) - { - case HC_CATALOG : setPixmap(get_p_icon()); break; - case HC_MEDIA: - switch(((DBMedia*)(node->data))->type) - { - case UNKNOWN : setPixmap(get_m_unknown_icon()); break; - case CD : setPixmap(get_m_cd_icon()); break; - case DVD : setPixmap(get_m_dvd_icon()); break; - case HARDDISC: setPixmap(get_m_hdd_icon()); break; - case FLOPPY : setPixmap(get_m_floppy_icon()); break; - case NETPLACE: setPixmap(get_m_net_icon()); break; - case FLASHDRV: setPixmap(get_m_flash_icon()); break; - case OTHERD : setPixmap(get_m_other_icon()); break; - } - break; - case HC_DIRECTORY: - if ( o ) - setPixmap( get_v_folderopen_icon() ); - else - setPixmap( get_v_folderclosed_icon() ); - break; - } - - + switch ( node->type ) { + case HC_CATALOG : setPixmap ( get_p_icon() ); break; + case HC_MEDIA: + switch ( ( ( DBMedia* ) ( node->data ) )->type ) { + case UNKNOWN : setPixmap ( get_m_unknown_icon() ); break; + case CD : setPixmap ( get_m_cd_icon() ); break; + case DVD : setPixmap ( get_m_dvd_icon() ); break; + case HARDDISC: setPixmap ( get_m_hdd_icon() ); break; + case FLOPPY : setPixmap ( get_m_floppy_icon() ); break; + case NETPLACE: setPixmap ( get_m_net_icon() ); break; + case FLASHDRV: setPixmap ( get_m_flash_icon() ); break; + case OTHERD : setPixmap ( get_m_other_icon() ); break; + } + break; + case HC_DIRECTORY: + if ( o ) + setPixmap ( get_v_folderopen_icon() ); + else + setPixmap ( get_v_folderclosed_icon() ); + break; + } + + if ( o && !childCount() ) { - - Node *tmp=node->child; - - while(tmp != NULL) - { - LNode *newnode; - /*We don't show the elements under directory!*/ - if(tmp->type == HC_FILE || tmp->type == HC_CATLNK ) - { - tmp=tmp->next; - continue; - } - - newnode = new LNode(this,last,tmp,tmp->getNameOf()); - last = newnode; - - - switch(tmp->type) - { - case HC_CATALOG : newnode->setPixmap(get_p_icon()); break; - case HC_MEDIA : - switch(((DBMedia*)(tmp->data))->type) - { - case UNKNOWN : newnode->setPixmap(get_m_unknown_icon()); break; - case CD : newnode->setPixmap(get_m_cd_icon()); break; - case DVD : newnode->setPixmap(get_m_dvd_icon()); break; - case HARDDISC: newnode->setPixmap(get_m_hdd_icon()); break; - case FLOPPY : newnode->setPixmap(get_m_floppy_icon()); break; - case NETPLACE: newnode->setPixmap(get_m_net_icon()); break; - case FLASHDRV: newnode->setPixmap(get_m_flash_icon()); break; - case OTHERD : newnode->setPixmap(get_m_other_icon()); break; - } - break; - case HC_DIRECTORY: - newnode->setPixmap( get_v_folderclosed_icon() ); - break; - } - tmp=tmp->next; - } - listView()->setUpdatesEnabled( TRUE ); - } - QListViewItem::setOpen( o ); + + Node *tmp=node->child; + + while ( tmp != NULL ) { + LNode *newnode; + /*We don't show the elements under directory!*/ + if ( tmp->type == HC_FILE || tmp->type == HC_CATLNK ) { + tmp=tmp->next; + continue; + } + + newnode = new LNode ( this,last,tmp,tmp->getNameOf() ); + last = newnode; + + + switch ( tmp->type ) { + case HC_CATALOG : newnode->setPixmap ( get_p_icon() ); break; + case HC_MEDIA : + switch ( ( ( DBMedia* ) ( tmp->data ) )->type ) { + case UNKNOWN : newnode->setPixmap ( get_m_unknown_icon() ); break; + case CD : newnode->setPixmap ( get_m_cd_icon() ); break; + case DVD : newnode->setPixmap ( get_m_dvd_icon() ); break; + case HARDDISC: newnode->setPixmap ( get_m_hdd_icon() ); break; + case FLOPPY : newnode->setPixmap ( get_m_floppy_icon() ); break; + case NETPLACE: newnode->setPixmap ( get_m_net_icon() ); break; + case FLASHDRV: newnode->setPixmap ( get_m_flash_icon() ); break; + case OTHERD : newnode->setPixmap ( get_m_other_icon() ); break; + } + break; + case HC_DIRECTORY: + newnode->setPixmap ( get_v_folderclosed_icon() ); + break; + } + tmp=tmp->next; + } + listView()->setUpdatesEnabled ( TRUE ); + } + Q3ListViewItem::setOpen ( o ); } -void LNode::setup() -{ - setExpandable( TRUE ); - QListViewItem::setup(); +void LNode::setup() { + setExpandable ( TRUE ); + Q3ListViewItem::setup(); } -QString LNode::fullName() -{ +QString LNode::fullName() { Node *tmp=node; - QString s(""); + QString s ( "" ); while ( tmp ) { - s.prepend("/"); - s.prepend(tmp->getNameOf()); - tmp=tmp->parent; + s.prepend ( "/" ); + s.prepend ( tmp->getNameOf() ); + tmp=tmp->parent; } return s; } -QString LNode::text( int column ) const -{ +QString LNode::text ( int column ) const { if ( column == 0 ) - return node->getNameOf(); - else - { - switch(node->type) - { - case HC_CATALOG : return QObject::tr("Catalog"); - case HC_MEDIA : - switch(((DBMedia*)(node->data))->type) - { - case UNKNOWN : return QObject::tr("Unknown(DB)"); - case CD : return QObject::tr("CD"); - case DVD : return QObject::tr("DVD"); - case HARDDISC: return QObject::tr("HardDisc"); - case FLOPPY : return QObject::tr("Floppy"); - case NETPLACE: return QObject::tr("NetworkDrv"); - case FLASHDRV: return QObject::tr("FlashDrv"); - case OTHERD : return QObject::tr("OtherDevice"); - } - break; - case HC_DIRECTORY: return QObject::tr("Directory"); - } - } - return ""; + return node->getNameOf(); + else { + switch ( node->type ) { + case HC_CATALOG : return QObject::tr ( "Catalog" ); + case HC_MEDIA : + switch ( ( ( DBMedia* ) ( node->data ) )->type ) { + case UNKNOWN : return QObject::tr ( "Unknown(DB)" ); + case CD : return QObject::tr ( "CD" ); + case DVD : return QObject::tr ( "DVD" ); + case HARDDISC: return QObject::tr ( "HardDisc" ); + case FLOPPY : return QObject::tr ( "Floppy" ); + case NETPLACE: return QObject::tr ( "NetworkDrv" ); + case FLASHDRV: return QObject::tr ( "FlashDrv" ); + case OTHERD : return QObject::tr ( "OtherDevice" ); + } + break; + case HC_DIRECTORY: return QObject::tr ( "Directory" ); + } + } + return ""; } /***************************************************************************** @@ -202,295 +198,281 @@ * *****************************************************************************/ -void HDirectoryView::start(void) -{ - LNode *n; - - if((*db) != NULL) - { - n=new LNode(this,(*db)->getRootNode()); - - n->setPixmap(get_p_icon()); - n->setup(); - n->setOpen(true); +void HDirectoryView::start ( void ) { + LNode *n; + + if ( ( *db ) != NULL ) { + n=new LNode ( this, ( *db )->getRootNode() ); + + n->setPixmap ( get_p_icon() ); + n->setup(); + n->setOpen ( true ); } } -HDirectoryView::HDirectoryView(DataBase** dbp, QWidget *parent, const char *name ) - : QListView( parent, name ), oldCurrent( 0 ), - dropItem( 0 ), mousePressed( FALSE ) -{ +HDirectoryView::HDirectoryView ( DataBase** dbp, QWidget *parent, const char *name ) + : Q3ListView ( parent, name ), oldCurrent ( 0 ), + dropItem ( 0 ), mousePressed ( FALSE ) { db = dbp; - autoopen_timer = new QTimer( this ); - - setShowSortIndicator(true); - connect( this, SIGNAL( doubleClicked( QListViewItem * ) ), - this, SLOT( slotFolderSelected( QListViewItem * ) ) ); + autoopen_timer = new QTimer ( this ); + + setShowSortIndicator ( true ); + connect ( this, SIGNAL ( doubleClicked ( Q3ListViewItem * ) ), + this, SLOT ( slotFolderSelected ( Q3ListViewItem * ) ) ); - connect( this, SIGNAL(pressed( QListViewItem * ) ), - this, SLOT( slotFolderSelectedR( QListViewItem * ) ) ); + connect ( this, SIGNAL ( pressed ( Q3ListViewItem * ) ), + this, SLOT ( slotFolderSelectedR ( Q3ListViewItem * ) ) ); - connect( this, SIGNAL( returnPressed( QListViewItem * ) ), - this, SLOT( slotFolderSelectedR( QListViewItem * ) ) ); + connect ( this, SIGNAL ( returnPressed ( Q3ListViewItem * ) ), + this, SLOT ( slotFolderSelectedR ( Q3ListViewItem * ) ) ); - setAcceptDrops( TRUE ); - viewport()->setAcceptDrops( TRUE ); + setAcceptDrops ( TRUE ); + viewport()->setAcceptDrops ( TRUE ); - connect( autoopen_timer, SIGNAL( timeout() ), - this, SLOT( openFolder() ) ); + connect ( autoopen_timer, SIGNAL ( timeout() ), + this, SLOT ( openFolder() ) ); - setSorting(-1); + setSorting ( -1 ); start(); - - addColumn( tr( "Directory Tree" ) ); - addColumn( tr( "Type" ) ); - header()->setClickEnabled( FALSE, header()->count() - 1 ); - header()->setResizeEnabled( FALSE, header()->count() - 1 ); - - setSelectionMode(Single); + + addColumn ( tr ( "Directory Tree" ) ); + addColumn ( tr ( "Type" ) ); + header()->setClickEnabled ( FALSE, header()->count() - 1 ); + header()->setResizeEnabled ( FALSE, header()->count() - 1 ); + + setSelectionMode ( Single ); } -void HDirectoryView::slotFolderSelected( QListViewItem *i ) -{ +void HDirectoryView::slotFolderSelected ( Q3ListViewItem *i ) { if ( !i ) return; - if(i==NULL) return; - LNode *lnode = (LNode*)i; - emit folderSelected( lnode->fullName() ); + if ( i==NULL ) return; + DEBUG_INFO_ENABLED = init_debug_info(); + LNode *lnode = ( LNode* ) i; + if(*DEBUG_INFO_ENABLED) + cerr << "HDirectoryView::slotFolderSelected node: " << qPrintable ( lnode->fullName() ) << endl; + emit folderSelected ( lnode->fullName() ); } -void HDirectoryView::slotFolderSelectedR( QListViewItem *i ) -{ - if(i==NULL) return; - LNode *lnode = (LNode*)i; -// cerr << lnode->fullName()<fullName() ); +void HDirectoryView::slotFolderSelectedR ( Q3ListViewItem *i ) { + if ( i==NULL ) return; + DEBUG_INFO_ENABLED = init_debug_info(); + LNode *lnode = ( LNode* ) i; + if(*DEBUG_INFO_ENABLED) { + //cerr << lnode->fullName()<fullName() ) << endl; + } + emit folderSelected ( lnode->fullName() ); + //i->setSelected(true); } -void HDirectoryView::openFolder() -{ +void HDirectoryView::openFolder() { autoopen_timer->stop(); if ( dropItem && !dropItem->isOpen() ) { - dropItem->setOpen( TRUE ); - dropItem->repaint(); - } - else - { - dropItem->setOpen( FALSE ); - dropItem->repaint(); + dropItem->setOpen ( TRUE ); + dropItem->repaint(); + } else { + dropItem->setOpen ( FALSE ); + dropItem->repaint(); } } static const int autoopenTime = 750; -void HDirectoryView::contentsDragEnterEvent( QDragEnterEvent *e ) -{ - if ( !QUriDrag::canDecode(e) ) { - e->ignore(); - return; +void HDirectoryView::contentsDragEnterEvent ( QDragEnterEvent *e ) { + if ( !Q3UriDrag::canDecode ( e ) ) { + e->ignore(); + return; } oldCurrent = currentItem(); - QListViewItem *i = itemAt( contentsToViewport(e->pos()) ); + Q3ListViewItem *i = itemAt ( contentsToViewport ( e->pos() ) ); if ( i ) { - dropItem = i; - autoopen_timer->start( autoopenTime ); + dropItem = i; + autoopen_timer->start ( autoopenTime ); } } -void HDirectoryView::contentsDragMoveEvent( QDragMoveEvent *e ) -{ - if ( !QUriDrag::canDecode(e) ) { - e->ignore(); - return; +void HDirectoryView::contentsDragMoveEvent ( QDragMoveEvent *e ) { + if ( !Q3UriDrag::canDecode ( e ) ) { + e->ignore(); + return; } - QPoint vp = contentsToViewport( ( (QDragMoveEvent*)e )->pos() ); - QListViewItem *i = itemAt( vp ); + QPoint vp = contentsToViewport ( ( ( QDragMoveEvent* ) e )->pos() ); + Q3ListViewItem *i = itemAt ( vp ); if ( i ) { - setSelected( i, TRUE ); - e->accept(); - if ( i != dropItem ) { - autoopen_timer->stop(); - dropItem = i; - autoopen_timer->start( autoopenTime ); - } - switch ( e->action() ) { - case QDropEvent::Copy: - break; - case QDropEvent::Move: - e->acceptAction(); - break; - case QDropEvent::Link: - e->acceptAction(); - break; - default: - ; - } + setSelected ( i, TRUE ); + e->accept(); + if ( i != dropItem ) { + autoopen_timer->stop(); + dropItem = i; + autoopen_timer->start ( autoopenTime ); + } + switch ( e->action() ) { + case QDropEvent::Copy: + break; + case QDropEvent::Move: + e->acceptAction(); + break; + case QDropEvent::Link: + e->acceptAction(); + break; + default: + ; + } } else { - e->ignore(); - autoopen_timer->stop(); - dropItem = 0; + e->ignore(); + autoopen_timer->stop(); + dropItem = 0; } } -void HDirectoryView::contentsDragLeaveEvent( QDragLeaveEvent * ) -{ +void HDirectoryView::contentsDragLeaveEvent ( QDragLeaveEvent * ) { autoopen_timer->stop(); dropItem = 0; - setCurrentItem( oldCurrent ); - setSelected( oldCurrent, TRUE ); + setCurrentItem ( oldCurrent ); + setSelected ( oldCurrent, TRUE ); } -void HDirectoryView::contentsDropEvent( QDropEvent *e ) -{ +void HDirectoryView::contentsDropEvent ( QDropEvent *e ) { autoopen_timer->stop(); - if ( !QUriDrag::canDecode(e) ) { - e->ignore(); - return; + if ( !Q3UriDrag::canDecode ( e ) ) { + e->ignore(); + return; } - QListViewItem *item = itemAt( contentsToViewport(e->pos()) ); + Q3ListViewItem *item = itemAt ( contentsToViewport ( e->pos() ) ); if ( item ) { - QStrList lst; + Q3StrList lst; - QUriDrag::decode( e, lst ); + Q3UriDrag::decode ( e, lst ); - QString str; + QString str; - switch ( e->action() ) { - case QDropEvent::Copy: - str = tr("Copy"); - break; - case QDropEvent::Move: - str = tr("Move"); - e->acceptAction(); - break; - case QDropEvent::Link: - str = tr("Link"); - e->acceptAction(); - break; - default: - str = tr("Unknown"); - } - - str += "\n\n"; - - e->accept(); - - for ( uint i = 0; i < lst.count(); ++i ) { - QString filename = lst.at( i ); - str += filename + "\n"; - } - str += QString( "\nTo\n\n %1" ) - .arg( fullPath(item) ); + switch ( e->action() ) { + case QDropEvent::Copy: + str = tr ( "Copy" ); + break; + case QDropEvent::Move: + str = tr ( "Move" ); + e->acceptAction(); + break; + case QDropEvent::Link: + str = tr ( "Link" ); + e->acceptAction(); + break; + default: + str = tr ( "Unknown" ); + } + + str += "\n\n"; + + e->accept(); + + for ( uint i = 0; i < lst.count(); ++i ) { + QString filename = lst.at ( i ); + str += filename + "\n"; + } + str += QString ( "\nTo\n\n %1" ) + .arg ( fullPath ( item ) ); - QMessageBox::information( this, tr("Drop target"), str, tr("Not implemented") ); + QMessageBox::information ( this, tr ( "Drop target" ), str, tr ( "Not implemented" ) ); } else - e->ignore(); + e->ignore(); } -QString HDirectoryView::fullPath(QListViewItem* item) -{ - QString fullpath = item->text(0); - while ( (item=item->parent()) ) { - if ( item->parent() ) - fullpath = item->text(0) + "/" + fullpath; - else - fullpath = item->text(0) + fullpath; +QString HDirectoryView::fullPath ( Q3ListViewItem* item ) { + QString fullpath = item->text ( 0 ); + while ( ( item=item->parent() ) ) { + if ( item->parent() ) + fullpath = item->text ( 0 ) + "/" + fullpath; + else + fullpath = item->text ( 0 ) + fullpath; } return fullpath; } -void HDirectoryView::contentsMousePressEvent( QMouseEvent* e ) -{ - QListView::contentsMousePressEvent(e); - QPoint p( contentsToViewport( e->pos() ) ); - QListViewItem *i = itemAt( p ); +void HDirectoryView::contentsMousePressEvent ( QMouseEvent* e ) { + Q3ListView::contentsMousePressEvent ( e ); + QPoint p ( contentsToViewport ( e->pos() ) ); + Q3ListViewItem *i = itemAt ( p ); if ( i ) { - // if the user clicked into the root decoration of the item, don't try to start a drag! - if ( p.x() > header()->cellPos( header()->mapToActual( 0 ) ) + - treeStepSize() * ( i->depth() + ( rootIsDecorated() ? 1 : 0) ) + itemMargin() || - p.x() < header()->cellPos( header()->mapToActual( 0 ) ) ) { - presspos = e->pos(); - mousePressed = TRUE; - } + // if the user clicked into the root decoration of the item, don't try to start a drag! + if ( p.x() > header()->cellPos ( header()->mapToActual ( 0 ) ) + + treeStepSize() * ( i->depth() + ( rootIsDecorated() ? 1 : 0 ) ) + itemMargin() || + p.x() < header()->cellPos ( header()->mapToActual ( 0 ) ) ) { + presspos = e->pos(); + mousePressed = TRUE; + } } } -void HDirectoryView::contentsMouseMoveEvent( QMouseEvent* e ) -{ +void HDirectoryView::contentsMouseMoveEvent ( QMouseEvent* e ) { if ( mousePressed && ( presspos - e->pos() ).manhattanLength() > QApplication::startDragDistance() ) { - mousePressed = FALSE; - QListViewItem *item = itemAt( contentsToViewport(presspos) ); - if ( item ) { - QString source = fullPath(item); - if ( QFile::exists(source) ) { - QUriDrag* ud = new QUriDrag(viewport()); - ud->setUnicodeUris( source ); - if ( ud->drag() ) - QMessageBox::information( this, tr("Drag source"), - QString(tr("Delete "))+source, tr("Not implemented") ); - } - } + mousePressed = FALSE; + Q3ListViewItem *item = itemAt ( contentsToViewport ( presspos ) ); + if ( item ) { + QString source = fullPath ( item ); + if ( QFile::exists ( source ) ) { + Q3UriDrag* ud = new Q3UriDrag ( viewport() ); + ud->setUnicodeUris ( QStringList ( source ) ); + if ( ud->drag() ) + QMessageBox::information ( this, tr ( "Drag source" ), + QString ( tr ( "Delete " ) ) +source, tr ( "Not implemented" ) ); + } + } } } -void HDirectoryView::contentsMouseReleaseEvent( QMouseEvent * ) -{ +void HDirectoryView::contentsMouseReleaseEvent ( QMouseEvent * ) { mousePressed = FALSE; } -void HDirectoryView::keyPressEvent( QKeyEvent *e) -{ - emit hitkey(e); - QListView::keyPressEvent(e); -} - -void HDirectoryView::setDir( Node * node ) -{ - QString part,s((node->getFullPath()).remove(0,2)); - - if(!s.isEmpty()) - { - /*Jump to...*/ - QStringList lst( QStringList::split( "/", s ) ); - QListViewItem *item = firstChild(); - QStringList::Iterator it2 = lst.begin(); - for (;it2 != lst.end(); ++it2 ) { - while ( item ) { - if ( item->text( 0 ) == *it2 ) { - item->setOpen( TRUE ); - break; - } - item = item->itemBelow(); - } - } - if ( item ) - { - setCurrentItem( item ); - setAllColumnsShowFocus(true); - ensureItemVisible(item); - } - /*Jump to...*/ +void HDirectoryView::keyPressEvent ( QKeyEvent *e ) { + emit hitkey ( e ); + Q3ListView::keyPressEvent ( e ); +} + +void HDirectoryView::setDir ( Node * node ) { + QString part,s ( ( node->getFullPath() ).remove ( 0,2 ) ); + + if ( !s.isEmpty() ) { + /*Jump to...*/ + QStringList lst ( QStringList::split ( "/", s ) ); + Q3ListViewItem *item = firstChild(); + QStringList::Iterator it2 = lst.begin(); + for ( ;it2 != lst.end(); ++it2 ) { + while ( item ) { + if ( item->text ( 0 ) == *it2 ) { + item->setOpen ( TRUE ); + break; + } + item = item->itemBelow(); + } + } + if ( item ) { + setCurrentItem ( item ); + setAllColumnsShowFocus ( true ); + ensureItemVisible ( item ); + } + /*Jump to...*/ } } -void HDirectoryView::closeAllBranch(void) - { - QListViewItemIterator it( this ); - ++it; - for ( ; it.current(); ++it ) - { - it.current()->setOpen( FALSE ); - } - } +void HDirectoryView::closeAllBranch ( void ) { + Q3ListViewItemIterator it ( this ); + ++it; + for ( ; it.current(); ++it ) { + it.current()->setOpen ( FALSE ); + } +} diff -Nru cdcat-1.01b/src/hdirview.h cdcat-1.2/src/hdirview.h --- cdcat-1.01b/src/hdirview.h 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/hdirview.h 2010-11-24 08:11:08.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** - Hyper's CD Catalog + Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -10,11 +10,19 @@ #ifndef DIRVIEW_H #define DIRVIEW_H -#include +#include #include #include #include #include +//Added by qt3to4: +#include +#include +#include +#include +#include +#include +#include class QWidget; @@ -28,32 +36,31 @@ class QPainter; class QColorGroup; -class LNode : public QListViewItem -{ +class LNode : public Q3ListViewItem { public: - LNode( QListView * parent, Node * dbnodep ); - - LNode( LNode * parent, Node* dbnodep, const QString &col2 ) - : QListViewItem( parent, col2 ), pix( 0 ) { node=dbnodep; } - - LNode( LNode * parent,LNode *after,Node* dbnodep, const QString &col2 ) - : QListViewItem( parent,after, col2 ), pix( 0 ) { node=dbnodep; } + LNode ( Q3ListView * parent, Node * dbnodep ); + + LNode ( LNode * parent, Node* dbnodep, const QString &col2 ) + : Q3ListViewItem ( parent, col2 ), pix ( 0 ) { node=dbnodep; } - LNode( LNode * parent, Node*dbnodep ); + LNode ( LNode * parent,LNode *after,Node* dbnodep, const QString &col2 ) + : Q3ListViewItem ( parent,after, col2 ), pix ( 0 ) { node=dbnodep; } - QString text( int column ) const; + LNode ( LNode * parent, Node*dbnodep ); + + QString text ( int column ) const; QString fullName(); - void setOpen( bool ); + void setOpen ( bool ); void setup(); - const QPixmap *pixmap( int i ) const; - void setPixmap( QPixmap *p ); - - void paintCell(QPainter *p,const QColorGroup & cg,int column,int width,int align); - + const QPixmap *pixmap ( int i ) const; + void setPixmap ( QPixmap *p ); + + void paintCell ( QPainter *p,const QColorGroup & cg,int column,int width,int align ); + private: Node * node; LNode * p; @@ -61,44 +68,43 @@ }; -class HDirectoryView : public QListView -{ +class HDirectoryView : public Q3ListView { Q_OBJECT public: - void start(void); - HDirectoryView( DataBase **dbp,QWidget *parent = 0, const char *name = 0 ); + void start ( void ); + HDirectoryView ( DataBase **dbp,QWidget *parent = 0, const char *name = 0 ); DataBase **db; public slots: - void setDir( Node *node ); - void closeAllBranch(void); - - - signals: - void folderSelected( const QString & ); - void hitkey( QKeyEvent *); + void setDir ( Node *node ); + void closeAllBranch ( void ); + + +signals: + void folderSelected ( const QString & ); + void hitkey ( QKeyEvent * ); protected slots: - void slotFolderSelected( QListViewItem * ); - void slotFolderSelectedR( QListViewItem * ); + void slotFolderSelected ( Q3ListViewItem * ); + void slotFolderSelectedR ( Q3ListViewItem * ); void openFolder(); protected: - void keyPressEvent( QKeyEvent *e ); - void contentsDragEnterEvent( QDragEnterEvent *e ); - void contentsDragMoveEvent( QDragMoveEvent *e ); - void contentsDragLeaveEvent( QDragLeaveEvent *e ); - void contentsDropEvent( QDropEvent *e ); - void contentsMouseMoveEvent( QMouseEvent *e ); - void contentsMousePressEvent( QMouseEvent *e ); - void contentsMouseReleaseEvent( QMouseEvent *e ); + void keyPressEvent ( QKeyEvent *e ); + void contentsDragEnterEvent ( QDragEnterEvent *e ); + void contentsDragMoveEvent ( QDragMoveEvent *e ); + void contentsDragLeaveEvent ( QDragLeaveEvent *e ); + void contentsDropEvent ( QDropEvent *e ); + void contentsMouseMoveEvent ( QMouseEvent *e ); + void contentsMousePressEvent ( QMouseEvent *e ); + void contentsMouseReleaseEvent ( QMouseEvent *e ); private: - QString fullPath(QListViewItem* item); - QListViewItem *oldCurrent; - QListViewItem *dropItem; + QString fullPath ( Q3ListViewItem* item ); + Q3ListViewItem *oldCurrent; + Q3ListViewItem *dropItem; QTimer* autoopen_timer; QPoint presspos; bool mousePressed; diff -Nru cdcat-1.01b/src/help.ui cdcat-1.2/src/help.ui --- cdcat-1.01b/src/help.ui 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/help.ui 2010-11-24 10:42:43.000000000 +0000 @@ -1,30 +1,23 @@ - -helpDialog - - - helpDialog - - - - 0 - 0 - 464 - 354 - - - - help - - - - unnamed - - - - textBrowser1 - - - <p align="center"><font size="+1"><b>Help</b></font></p><br> + + + helpDialog + + + + 0 + 0 + 464 + 354 + + + + help + + + + + + <p align="center"><font size="+1"><b>Help</b></font></p><br> <b>What's this?</b><br> <blockquote> @@ -54,25 +47,55 @@ <br> <b>Homepage:</b> <blockquote>You can read about the program and get new versions, sources etc, in the hompage of cdcat:<br><tt>http://cdcat.sourceforge.net</tt></blockquote> - - - - - closeButton - - - close - - - - - - - closeButton - clicked() - helpDialog - close() - - - - + + + + + + + close + + + + + + + qPixmapFromMimeSource + + + Q3Frame + QFrame +
Qt3Support/Q3Frame
+ 1 +
+ + Q3TextEdit + Q3Frame +
q3textedit.h
+
+ + Q3TextBrowser + Q3TextEdit +
Qt3Support/Q3TextBrowser
+
+
+ + + + closeButton + clicked() + helpDialog + close() + + + 20 + 20 + + + 20 + 20 + + + + + diff -Nru cdcat-1.01b/src/icons.cpp cdcat-1.2/src/icons.cpp --- cdcat-1.01b/src/icons.cpp 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/icons.cpp 2011-01-28 10:21:54.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -10,3768 +10,3796 @@ #include "icons.h" #include -static const char* const m_catalog_icon_data[] = { -"16 16 111 2", -" c None", -". c #DC0202", -"+ c #FF0A0A", -"@ c #FF1010", -"# c #FF1A1A", -"$ c #FE2424", -"% c #FF0808", -"& c #FE0303", -"* c #F50101", -"= c #DF0000", -"- c #BE0000", -"; c #FC0505", -"> c #FF0909", -", c #FF1D1D", -"' c #FF2D2D", -") c #FF3B3B", -"! c #FF2B2B", -"~ c #FF1818", -"{ c #FE0A0A", -"] c #EE0303", -"^ c #D40101", -"/ c #A40000", -"( c #FF0303", -"_ c #FF0707", -": c #FF0F0F", -"< c #FF3333", -"[ c #FF4A4A", -"} c #FF4E4E", -"| c #FF3939", -"1 c #F30B0B", -"2 c #D10303", -"3 c #B50101", -"4 c #9F0000", -"5 c #8B0000", -"6 c #FF0202", -"7 c #FF0505", -"8 c #FF0B0B", -"9 c #FF2F2F", -"0 c #FF4B4B", -"a c #FF5555", -"b c #FF3E3E", -"c c #FC1B1B", -"d c #D80606", -"e c #AE0000", -"f c #940000", -"g c #800000", -"h c #6C0000", -"i c #630000", -"j c #FF0101", -"k c #FF2020", -"l c #FF3636", -"m c #FF4040", -"n c #FE2E2E", -"o c #EF3B3C", -"p c #D56F73", -"q c #C07278", -"r c #994043", -"s c #660909", -"t c #500000", -"u c #FD0303", -"v c #FB0707", -"w c #F90F0F", -"x c #F91A1A", -"y c #F51D1C", -"z c #EA4043", -"A c #E9C9D7", -"B c #EAF1FF", -"C c #E8EEFF", -"D c #E8E5F3", -"E c #AD919B", -"F c #711316", -"G c #EE0101", -"H c #D00505", -"I c #C70808", -"J c #B70707", -"K c #C67C86", -"L c #E1E9FF", -"M c #D8DAFE", -"N c #CACAFE", -"O c #D9DAFF", -"P c #DBDFFE", -"Q c #8C7797", -"R c #BA0000", -"S c #A90101", -"T c #930101", -"U c #B18590", -"V c #DFEBFF", -"W c #C4C6FD", -"X c #9694CC", -"Y c #A8A7E2", -"Z c #C0CDFF", -"` c #A9BEEA", -" . c #7D0000", -".. c #5A0000", -"+. c #7F5057", -"@. c #D7DFF9", -"#. c #CACFFE", -"$. c #A5A3DD", -"%. c #A8A8E6", -"&. c #BAC9FF", -"*. c #B7CCFA", -"=. c #510000", -"-. c #670C0E", -";. c #B194AB", -">. c #E8ECFF", -",. c #D7DAFF", -"'. c #C1CCFF", -"). c #C3D5FF", -"!. c #8E9098", -"~. c #C5CAE9", -"{. c #C5D4FA", -" ", -" ", -" . . . . . . . . ", -" . + @ # $ . . % & * = - ", -". ; > @ , ' ) ) ! ~ { ] ^ - / / ", -". ( _ : , < [ } | , 1 2 3 4 5 5 ", -". 6 7 8 ~ 9 0 a b c d e f g h i ", -". j ( _ : k l m n o p q r s t h ", -" . j u v w x y z A B C D E F ", -" . G . H I J K L M N O P Q ", -" . R S T g U V W X Y Z ` ", -" . S ...+.@.#.$.%.&.*. ", -" . ..=.-.;.>.,.'.).` ", -" . =.. !.~.{.` ", -" . ", -" "}; - -static const char* const m_unknown_icon_data[] = { -"16 18 38 1", -". c None", -"y c #000000", -"d c #000000", -"x c #000000", -"H c #000000", -"c c #000000", -"G c #000000", -"t c #000000", -"n c #000000", -"s c #000000", -"w c #000000", -"J c #000000", -"D c #000000", -"B c #000000", -"v c #000000", -"r c #000000", -"C c #000000", -"l c #000000", -"k c #000000", -"I c #000000", -"j c #000000", -"q c #000000", -"b c #000000", -"a c #00385a", -"# c #003862", -"h c #00406a", -"o c #004473", -"g c #00508b", -"f c #005594", -"F c #00599c", -"e c #2981c5", -"u c #2985c5", -"m c #3185c5", -"z c #4191cd", -"p c #5299cd", -"i c #6aaad5", -"A c #6aaade", -"E c #8bbee6", -"....#a#a#abcd...", -"...aefbbbfgbbcd.", -"..hifbjklamgfbnd", -"..opbqrstsaugbvc", -"..#efbwx.yhzfblt", -"..cagfbnd.hzgblt", -"..ynbbbvcaAfbqvc", -"...ynBCDaEFbqrnd", -"....ycGaAFbqrnd.", -"......augbqrnd..", -"......#efbksd...", -"......cbbqvc....", -"......ynBBnd....", -".......aasx.....", -"......#ifbnd....", -"......HbbIJH....", -"......ynBBnd....", -".......yccd....."}; - -static const char* const m_cd_icon_data[] = { -"18 16 172 2", -" c None", -". c #80807E", -"+ c #8B8B83", -"@ c #757567", -"# c #413C31", -"$ c #514D47", -"% c #363434", -"& c #737373", -"* c #90A189", -"= c #A4C781", -"- c #CBE781", -"; c #E8EB91", -"> c #DAC99C", -", c #C19F8D", -"' c #976A65", -") c #523E40", -"! c #131313", -"~ c #777B77", -"{ c #71B76F", -"] c #4BEF35", -"^ c #7EF63C", -"/ c #CAFF65", -"( c #EBF189", -"_ c #D3C4A5", -": c #D0AFA0", -"< c #C69090", -"[ c #BB778A", -"} c #856974", -"| c #3E3C3E", -"1 c #93B682", -"2 c #55FF39", -"3 c #06F800", -"4 c #48FE1E", -"5 c #B4FF5B", -"6 c #F0FA80", -"7 c #DDC89F", -"8 c #CFA89D", -"9 c #C18991", -"0 c #BC849C", -"a c #C189AF", -"b c #987E96", -"c c #1A1A1A", -"d c #929684", -"e c #B8DC92", -"f c #97F062", -"g c #4BFF2D", -"h c #23FC18", -"i c #96FD57", -"j c #E8F591", -"k c #E6CEA0", -"l c #C9A1A1", -"m c #BC8699", -"n c #C18BAE", -"o c #C397C2", -"p c #BE99C3", -"q c #544D57", -"r c #7A7A7A", -"s c #B5B69A", -"t c #C1C997", -"u c #BBD292", -"v c #A6EC72", -"w c #89EC76", -"x c #BC9CB1", -"y c #C29FC7", -"z c #B9A5CF", -"A c #B3A8D4", -"B c #7E7599", -"C c #373739", -"D c #878783", -"E c #C4BCA4", -"F c #C8C49C", -"G c #CACB9D", -"H c #C9CEA2", -"I c #616961", -"J c #B1AED4", -"K c #AAAAD6", -"L c #A6A9D8", -"M c #9597C1", -"N c #4B4B53", -"O c #908A86", -"P c #D4BEA4", -"Q c #D1BDA1", -"R c #D2BEA2", -"S c #D0C4B2", -"T c #A3B2D9", -"U c #9BA6D3", -"V c #9AA4D0", -"W c #909DD6", -"X c #2D303F", -"Y c #918583", -"Z c #DBAFA3", -"` c #D9AFA3", -" . c #DBACA3", -".. c #D7B1B1", -"+. c #98B2D0", -"@. c #899FC1", -"#. c #899CBF", -"$. c #869AC4", -"%. c #2A2F3A", -"&. c #7E7476", -"*. c #BF8B90", -"=. c #D99DA8", -"-. c #DAA0B2", -";. c #D6ACBE", -">. c #D5A7CF", -",. c #4AFC85", -"'. c #3DFFBD", -"). c #59EDF3", -"!. c #76BBCA", -"~. c #7BA8BB", -"{. c #6C90AA", -"]. c #444B50", -"^. c #756F71", -"/. c #B58396", -"(. c #D79DBA", -"_. c #D7A3C3", -":. c #B7A3CD", -"<. c #9AB8D6", -"[. c #47FDE1", -"}. c #68D6D5", -"|. c #4E898E", -"1. c #353739", -"2. c #8D7D86", -"3. c #D09EC5", -"4. c #D1A3CE", -"5. c #C3A2CE", -"6. c #A7A4CA", -"7. c #7CDDE8", -"8. c #39FFA9", -"9. c #07FF47", -"0. c #15FF68", -"a. c #2DFFA9", -"b. c #33FBC5", -"c. c #334F4E", -"d. c #A78AAA", -"e. c #C699D1", -"f. c #BBA0CA", -"g. c #ADA0CA", -"h. c #A0A2CE", -"i. c #9AB5D4", -"j. c #8DC8D3", -"k. c #3FFFC7", -"l. c #0DFF6E", -"m. c #00F42E", -"n. c #05FF57", -"o. c #42946C", -"p. c #202020", -"q. c #767476", -"r. c #9A82A8", -"s. c #AE91D3", -"t. c #A9A0CE", -"u. c #A1A8CF", -"v. c #99B9D1", -"w. c #8DC7D3", -"x. c #5DE9CD", -"y. c #1BFF96", -"z. c #11D744", -"A. c #2E7C3C", -"B. c #1D2520", -"C. c #847F8F", -"D. c #8886B2", -"E. c #8E97BA", -"F. c #88B4DA", -"G. c #7EC8DE", -"H. c #52D2C8", -"I. c #309E76", -"J. c #244632", -"K. c #74787E", -"L. c #758795", -"M. c #42585E", -"N. c #364848", -"O. c #282E2C", -" . + @ # $ % ", -" & * = - ; > , ' ) ! ", -" ~ { ] ^ / ( _ : < [ } | ", -" & 1 2 3 4 5 6 7 8 9 0 a b c ", -" d e f g h i j k l m n o p q ", -"r s t u v w h i k m x y z A B C ", -"D E F G H v w I I x y J K L M N ", -"O P Q R S H I I J T U V W X ", -"Y Z ` ...S I I +.+.@.#.$.%. ", -"&.*.=.-.;.>.;.I I ,.'.).!.~.{.]. ", -"^./.(._.>.>.:.:.<.,.,.'.[.}.|.1. ", -" 2.3.4.5.:.6.<.7.8.9.0.a.b.c. ", -" & d.e.f.g.h.i.j.k.l.m.n.o.p. ", -" q.r.s.t.u.v.w.x.y.z.A.B. ", -" & C.D.E.F.G.H.I.J.c ", -" & K.L.M.N.O. "}; - - -static const char* const m_dvd_icon_data[] = { -"16 16 81 1", -" c None", -". c #A9A9A9", -"+ c #B0B0B0", -"@ c #9C9C9C", -"# c #6F6F6F", -"$ c #7F7F7F", -"% c #6C6C6C", -"& c #9F9F9F", -"* c #BCBCBC", -"= c #C8C8C8", -"- c #D5D5D5", -"; c #DEDEDE", -"> c #DBDBDB", -", c #CBCBCB", -"' c #A8A8A8", -") c #7B7B7B", -"! c #505050", -"~ c #A5A5A5", -"{ c #BABABA", -"] c #B9B9B9", -"^ c #BFBFBF", -"/ c #D4D4D4", -"( c #DDDDDD", -"_ c #DCDCDC", -": c #D9D9D9", -"< c #CECECE", -"[ c #A2A2A2", -"} c #727272", -"| c #C2C2C2", -"1 c #C1C1C1", -"2 c #A7A7A7", -"3 c #B6B6B6", -"4 c #CFCFCF", -"5 c #D7D7D7", -"6 c #C9C9C9", -"7 c #C5C5C5", -"8 c #B4B4B4", -"9 c #555555", -"0 c #B5B5B5", -"a c #D8D8D8", -"b c #CCCCCC", -"c c #BDBDBD", -"d c #B2B2B2", -"e c #CDCDCD", -"f c #E2E2E2", -"g c #D6D6D6", -"h c #C6C6C6", -"i c #CACACA", -"j c #D0D0D0", -"k c #848484", -"l c #D2D2D2", -"m c #D3D3D3", -"n c #AEAEAE", -"o c #949494", -"p c #E0E0E0", -"q c #DFDFDF", -"r c #818181", -"s c #DADADA", -"t c #E1E1E1", -"u c #B3B3B3", -"v c #E3E3E3", -"w c #696969", -"x c #C7C7C7", -"y c #C3C3C3", -"z c #C0C0C0", -"A c #7E7E7E", -"B c #C4C4C4", -"C c #9B9B9B", -"D c #6D6D6D", -"E c #000000", -"F c #ADADAD", -"G c #767676", -"H c #AFAFAF", -"I c #ACACAC", -"J c #5A5A5A", -"K c #A1A1A1", -"L c #5B5B5B", -"M c #969696", -"N c #828282", -"O c #747474", -"P c #636363", -" .+@#$% ", -" &*=-;>,')! ", -" ~{]^/(_:<^[} ", -" &|1234(;567689 ", -" 0abcdeffghi4jk ", -"~bl/lmdefh4->;+#", -"n-/-:lmoo4-pq;t:o op;ag-%", -"u;;;vto o--6=6w", -"~6>(t;tooxyi7z8A", -"&1>(;;aaaxxyhBCD", -" naEEaaE/EFEEcG ", -" &zEgEaElEHEIEJ ", -" KEEaagEx0EEL ", -" &+|=mj]M%9 ", -" &~nNOP "}; - -static const char* const m_hdd_icon_data[] = { -"16 16 105 2", -"Qt c None", -".1 c None", -"#j c None", -"#K c None", -"#A c None", -"#s c None", -".K c None", -".y c None", -".n c None", -"#G c None", -".h c None", -"#t c None", -"#k c None", -".# c None", -".c c None", -"## c None", -".i c None", -".o c None", -"#M c #000020", -"#L c #62657b", -"#z c #080439", -"#r c #000031", -".z c #f6f2ff", -"#F c #181841", -"#J c #39385a", -".p c #cdced5", -".j c #cdcad5", -".T c #ded6e6", -".2 c #d5d2d5", -".L c #dedae6", -".b c #b4b6c5", -".d c #c5c2cd", -"#H c #9495a4", -".g c #acaab4", -"#q c #62657b", -"#B c #9495a4", -".m c #9c9dac", -"#y c #737583", -"#u c #a4a1ac", -"#E c #8b899c", -".x c #a4a1ac", -".a c #ded6e6", -"#l c #b4b2bd", -"#I c #94919c", -".J c #a4a5b4", -".A c #dedade", -"#a c #cdc2d5", -".S c #9c99ac", -".q c #e6e2ee", -"#v c #5a5d83", -".4 c #5aea62", -"#C c #62658b", -"#f c #7b799c", -"#w c #837da4", -"#m c #83819c", -"#e c #8381a4", -".9 c #8b89a4", -"#. c #8b8dac", -".8 c #948dac", -".7 c #9495ac", -".Z c #9c99ac", -"#n c #9c99b4", -".W c #9c9db4", -"#i c #a49dac", -".Y c #a4a1b4", -".X c #a4a1bd", -"#x c #a4a5bd", -".Q c #acaabd", -"#g c #acaac5", -".O c #acaec5", -".P c #b4b2c5", -"#D c #b4b6c5", -".N c #bdb6cd", -".R c #bdbacd", -".G c #c5becd", -".V c #c5bed5", -".6 c #c5c2cd", -".H c #c5c2d5", -".F c #cdc6d5", -"#h c #cdcade", -"#p c #cdced5", -"#c c #d5cede", -".v c #d5d2de", -"#d c #d5d2e6", -".M c #d5d6de", -"#b c #d5e2de", -".u c #ded6e6", -".I c #dedae6", -"#o c #dedaee", -".3 c #deffe6", -".0 c #e6dee6", -".C c #e6e2ee", -".E c #e6e6ee", -".D c #eee6ee", -".B c #eee6f6", -".k c #eeeaee", -".w c #eeeaf6", -".U c #eeeeee", -".5 c #f6eaff", -".s c #f6f2f6", -".e c #f6f2ff", -".l c #f6f6ff", -".t c #fff6ff", -".r c #fffaff", -".f c #ffffff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQt.#.a.bQtQtQtQtQtQt", -"QtQtQtQtQt.c.d.e.f.f.g.hQtQtQtQt", -"QtQtQt.i.j.k.f.f.f.l.f.m.nQtQtQt", -"Qt.o.p.q.f.r.s.l.t.u.v.w.x.yQtQt", -".z.A.e.k.B.C.D.E.F.G.H.H.I.J.KQt", -".L.f.v.v.v.v.M.N.O.P.P.P.Q.R.SQt", -".T.U.f.F.V.H.N.W.X.Y.W.Z.V.f.0.1", -".2.3.4.5.6.O.7.8.9#..P.C.k.f.M.1", -"###a#b#c#d.H#e#f#g.H.R#h.D.f#i#j", -"Qt#k#l.u.P.P.H.X#m#n.O#o#p#q#r#s", -"QtQt#t#u#h.7.N#v#w#x.F#y#z#AQtQt", -"QtQtQt.h#B.V.Q#C#D#E#F#AQtQtQtQt", -"QtQtQtQt#G#H.R#I#J#KQtQtQtQtQtQt", -"QtQtQtQtQtQt#L#MQtQtQtQtQtQtQtQt"}; - -static const char* const m_net_icon_data[] = { -"16 16 108 2", -"Qt c None", -"#L c None", -".Y c None", -".Q c None", -"#F c None", -"#u c None", -"#f c None", -"#M c None", -"#p c None", -"#G c None", -".f c None", -".v c None", -".G c None", -".p c None", -".b c None", -".Z c None", -"#B c #52505a", -".8 c #ffffff", -".X c #000029", -"#E c #000029", -".u c #626173", -".# c #c5c2c5", -".h c #f6eeee", -".F c #181431", -".P c #000029", -".q c #ffffff", -"#C c #9c99a4", -".g c #ffffff", -"#t c #080c29", -"#v c #ee9100", -".a c #8b8d8b", -"#y c #945000", -".l c #f69d00", -"#g c #dedade", -".o c #c57500", -".O c #525552", -".9 c #7b7d7b", -"#P c #a4a59c", -".H c #c58508", -".w c #4a4c52", -".R c #ffd600", -"#s c #736d6a", -".i c #7b757b", -"#J c #000000", -".C c #000c18", -".s c #080808", -".1 c #101420", -"#r c #313031", -"#H c #4a484a", -"#z c #52595a", -"#n c #5a6173", -"#. c #626162", -".e c #626562", -".k c #626973", -".r c #6a656a", -"#e c #6a696a", -"#j c #73694a", -"#h c #736d73", -"#N c #73757b", -".x c #838594", -"## c #83899c", -".0 c #8b7d62", -".D c #9c999c", -".j c #a4a1a4", -".t c #aca5ac", -"#A c #acaaac", -"#q c #acaeac", -".E c #b4b2ac", -".c c #b4b6bd", -"#c c #b4bede", -".M c #bd8952", -".6 c #bda15a", -"#I c #bdb6bd", -".2 c #c5bab4", -"#D c #c5c2c5", -"#o c #c5c6cd", -".N c #c5cad5", -".5 c #cdb273", -".B c #d59108", -"#K c #d5d2cd", -"#d c #d5deee", -"#i c #dedade", -"#O c #dedede", -".W c #e69100", -".7 c #ee8d00", -"#b c #eeba39", -"#x c #f69d00", -"#w c #ffa500", -"#k c #ffbe20", -".y c #ffc218", -".n c #ffc220", -"#m c #ffca08", -"#l c #ffca10", -".m c #ffca29", -".V c #ffce18", -".L c #ffd218", -".K c #ffd24a", -".U c #ffd652", -".4 c #ffe26a", -".T c #ffe694", -"#a c #ffee94", -".3 c #fff6c5", -".J c #fffade", -".S c #fffaf6", -".I c #ffffcd", -".z c #ffffd5", -".A c #fffff6", -".d c #ffffff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQt.#.a.bQtQtQtQtQtQtQtQtQtQtQt", -"QtQt.c.d.e.fQtQtQtQtQtQtQt.g.hQt", -"QtQt.i.j.d.k.l.m.n.o.p.q.r.s.t.u", -"QtQt.v.w.x.y.z.d.d.A.B.C.D.d.E.F", -"QtQtQt.G.H.I.d.d.J.K.L.M.N.O.P.Q", -"QtQtQtQt.R.d.d.S.T.U.V.W.X.YQtQt", -"QtQtQt.Z.0.1.2.3.4.5.6.7.QQtQtQt", -"Qt.8.9.s#..d###a#b#c#d#e#fQtQtQt", -"#g#.#h.d#i#j#k#l#m#n#o.d#e#pQtQt", -"#q#r.d#s#t#u#v#w#x#y#z#A.d.D#BQt", -"#C#D#E.YQtQtQt#F#F.Q#G#H#I#J#K#L", -"Qt.QQtQtQtQtQtQtQtQtQt#M#N#O#P.Y", -"QtQtQtQtQtQtQtQtQtQtQtQtQt.Y.YQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const m_flash_icon_data[] = { -"16 16 97 2", -".e c #2048a4", -".j c #2050a4", -".f c #3155ac", -".q c #3165ac", -".d c #395dac", -".n c #3961ac", -".A c #3969b4", -".# c #415dac", -"Qt c #4161b4", -".a c #4165b4", -".s c #4169b4", -".U c #4179bd", -".b c #4a65b4", -".c c #4a69b4", -".h c #4a71b4", -".o c #4a71bd", -".x c #4a79bd", -".R c #4a79c5", -".J c #4a7dbd", -".g c #5271bd", -".i c #5275bd", -".X c #5289c5", -"#. c #5291c5", -".k c #5a79bd", -".p c #5a7dbd", -".t c #5a7dc5", -".D c #5a85c5", -".W c #5a8dc5", -".V c #5a8dcd", -".v c #6289c5", -".F c #628dc5", -".O c #628dcd", -".K c #6291c5", -".H c #6291cd", -".N c #6295cd", -".4 c #6299cd", -".E c #6a89c5", -".G c #6a89cd", -".w c #6a8dc5", -".u c #6a91cd", -".I c #6a95c5", -".M c #6a99cd", -".7 c #6a9dcd", -".6 c #6aa1cd", -".L c #7399cd", -"#a c #73a1cd", -".5 c #73a1d5", -"#p c #73a5d5", -".Y c #7ba1d5", -"#b c #7baad5", -"#j c #7baed5", -"#h c #7baede", -".C c #83a1d5", -".8 c #83aed5", -"#d c #83b2d5", -"#i c #83b2de", -"#o c #83b6de", -"#s c #83bade", -"#c c #8bb2de", -"#f c #8bb6de", -"#u c #8bb6e6", -"#k c #8bbade", -"#l c #8bbede", -"#B c #8bc2e6", -".S c #94b2de", -"#e c #94b6e6", -"#g c #94bae6", -"#n c #94bede", -"#m c #94bee6", -"#E c #94c2e6", -".P c #9cbade", -"#t c #9cc2e6", -"#v c #9cc6e6", -"#x c #9ccae6", -"#C c #9ccaee", -".2 c #a4c2de", -"#y c #a4c6ee", -"#w c #a4cae6", -"#D c #a4caee", -"#z c #a4ceee", -".0 c #acc6e6", -".1 c #accae6", -".m c #b4c2e6", -".Q c #b4ceee", -"#r c #b4d2ee", -".B c #bdcae6", -".3 c #bdd2ee", -"#q c #c5daee", -".T c #d5def6", -".Z c #d5e6f6", -"## c #dee6f6", -".y c #e6eaff", -"#A c #e6f2ff", -".r c #eeeef6", -".9 c #eeeeff", -".z c #fffaff", -".l c #ffffff", -"Qt.#Qt.#Qt.#Qt.#Qt.#Qt.#Qt.#Qt.#", -".a.b.a.c.a.b.d.e.f.c.a.c.a.b.a.c", -".g.h.i.h.g.j.k.l.m.n.i.o.g.h.i.o", -".k.p.p.k.q.l.l.l.r.s.p.p.p.p.k.t", -".u.v.w.x.y.z.A.B.C.D.E.F.G.F.E.F", -".F.H.I.H.l.J.K.F.K.L.M.L.N.O.I.L", -".P.Q.R.S.T.U.O.F.V.W.O.X.Y.Z.V.u", -".l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.0", -".l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.1", -".2.3.4.5.6.7.8.9#..5.6.6.8###a#b", -"#c#d#e#f#g#f#h.l#h#i#i#i#f#j#k#k", -"#l#m#n#m#n#m#o.Z.l#p#q#r#s#m#n#g", -"#t#t#t#t#t#t#t#i.z.l.l.l#u#t#t#t", -"#v#w#t#x#v#y#v#v#s#z.l#A#B#C#t#x", -"#D#D#z#w#z#w#z#w#D#v#E#E#D#w#z#w", -"#w#z#w#z#w#z#w#z#w#z#w#z#w#z#w#z"}; - -static const char* const m_other_icon_data[] = { -"16 16 103 2", -"Qt c None", -"#p c None", -"#j c None", -"#K c None", -".n c None", -".Z c None", -".O c None", -".c c None", -".# c #d5cef6", -"#k c #d5d6ff", -"#H c #9c99cd", -"#a c #d5d2f6", -".F c #c5baee", -".h c #9491cd", -"#B c #9c9dde", -"#v c #7375c5", -".N c #bdb6e6", -"#C c #c5beee", -".Y c #bdaee6", -"#w c #d5cef6", -"#G c #9491cd", -".y c #6a69b4", -"#J c #7b79ac", -".d c #eeeaff", -".b c #c5beee", -".s c #ffffff", -"#q c #e6e2ff", -"## c #aca5de", -".i c #fffaff", -".v c #f6f6ff", -".I c #8b89bd", -".Q c #9c95c5", -".u c #acb2f6", -".z c #fffaff", -".D c #948db4", -".a c #c5c2de", -".e c #eeeaff", -".0 c #9c9dbd", -"#I c #c5c6de", -"#u c #cdc6f6", -".1 c #eee6f6", -".C c #acaee6", -".j c #e6e6f6", -".G c #f6f6ff", -"#A c #cdc6ee", -".R c #ffeef6", -".H c #c5c6ee", -"#F c #d5cef6", -".P c #dedef6", -".J c #ffffff", -".E c #fffaff", -".9 c #0034d5", -"#h c #0038cd", -"#g c #003cd5", -".8 c #185dd5", -".W c #187df6", -"#n c #2079ee", -".V c #29a1ff", -"#f c #3981ee", -"#m c #4a9df6", -".7 c #4aa5ff", -".L c #4aaeff", -".6 c #5abaff", -".U c #62b6ff", -"#e c #73c6ff", -"#l c #7bcaff", -"#s c #83caff", -"#d c #83ceff", -".T c #83d2ff", -"#o c #8bbeff", -".5 c #8bceff", -"#i c #94beff", -".K c #a4deff", -".4 c #ace2ff", -"#t c #b4daff", -"#c c #b4e6ff", -".r c #bdc6ff", -".x c #c5caff", -"#. c #c5e2ff", -".m c #cdceff", -".f c #cdd2ee", -".g c #cdd2ff", -"#z c #d5d2ff", -"#E c #d5d6ff", -".3 c #d5ffff", -"#y c #dedaff", -".B c #dedeff", -"#b c #deffff", -".t c #e6e2f6", -".k c #e6e6f6", -"#D c #e6e6ff", -".X c #e6f2ff", -".S c #e6ffff", -"#x c #eeeeff", -".M c #eef2ff", -".o c #f6eeff", -".w c #f6f2f6", -".q c #f6f2ff", -"#r c #f6f6ff", -".2 c #f6ffff", -".p c #fffaf6", -".A c #fffaff", -".l c #ffffff", -"QtQtQtQtQtQtQtQt.#.a.bQtQtQtQtQt", -"QtQtQtQtQt.c.d.e.f.g.hQtQtQtQtQt", -"QtQtQt.c.i.j.k.k.l.m.nQtQtQtQtQt", -"QtQt.c.o.p.q.l.l.l.rQtQtQtQtQtQt", -"QtQt.s.l.q.l.l.l.t.uQtQtQtQtQtQt", -"QtQt.v.l.w.l.l.q.x.yQtQtQtQtQtQt", -"QtQt.z.A.l.l.B.C.D.E.FQtQtQtQtQt", -"QtQt.G.q.w.H.I.J.K.L.M.NQtQtQtQt", -"Qt.O.l.P.Q.R.S.T.U.V.W.X.YQtQtQt", -"Qt.Z.0.1.2.3.4.5.6.7.8.9#.##QtQt", -"Qt#a.l.l.l#b#c#d#e#f#g#h#i.q#jQt", -"Qt#k.l.l.l.l.4#l#m#n#o.l.l.q#pQt", -"QtQt#q.l#r.l.l#s#t.l.q.A#u#vQtQt", -"QtQtQt#w#x#y.l.A#z.q#A#BQtQtQtQt", -"QtQtQtQt#C.B#D#E#F#GQtQtQtQtQtQt", -"QtQtQtQtQt#H#I#J#KQtQtQtQtQtQtQt"}; - -static const char* const m_floppy_icon_data[] = { -"16 16 140 2", -"Qt c None", -"#Z c None", -"ag c None", -"aj c None", -".1 c None", -".e c None", -".# c None", -".f c None", -".n c None", -"#D c #000000", -"a# c #000000", -"#0 c #000000", -".R c #eee6ee", -"aa c #000000", -"#O c #000000", -"#R c #000000", -"#E c #000000", -"ab c #000000", -"#t c #292829", -"#3 c #000000", -"ah c #393c39", -"#F c #202020", -"#C c #181c18", -"#Q c #000000", -"#2 c #000000", -"#P c #000000", -".G c #7b797b", -"#1 c #000000", -"a. c #202429", -"#N c #202020", -"#b c #bdbebd", -"#4 c #414441", -".H c #f6f2f6", -"#a c #4a4441", -".a c #cdc6c5", -"ai c #312c29", -".o c #dedade", -"#u c #949194", -".g c #d5d2d5", -".m c #9c959c", -"af c #292c29", -"#S c #6a696a", -".2 c #bdbabd", -".x c #d5d6d5", -".Q c #737173", -".b c #d5ced5", -"#k c #a4a5a4", -"#Y c #313039", -"#M c #292831", -"#9 c #313439", -"#B c #393c4a", -"ae c #413c41", -"#X c #414052", -"#j c #525052", -"#s c #525962", -"ac c #625d62", -"#8 c #6a657b", -".0 c #6a696a", -"#r c #7371a4", -"## c #737594", -"#i c #7b79a4", -".Z c #8b89ac", -"#. c #8b8d94", -".F c #948d94", -".w c #949194", -".P c #9491ac", -".O c #9c95b4", -"#L c #9c99a4", -"#5 c #9c9d9c", -".E c #9c9dac", -".u c #a4a1ac", -".z c #acaaac", -".k c #acaab4", -".v c #acaabd", -".l c #acaeb4", -".J c #b4b2b4", -"#G c #b4b2d5", -".d c #bdb6bd", -"#7 c #bdbab4", -".h c #bdbabd", -".C c #bdbac5", -"ad c #bdbacd", -".W c #bdbad5", -".N c #bdbed5", -"#T c #bdbede", -"#v c #c5c2c5", -".5 c #c5c2cd", -"#6 c #c5c2de", -".c c #c5c6c5", -".i c #cdc6cd", -".p c #cdcacd", -".D c #cdcad5", -".M c #cdcade", -".I c #cdced5", -"#A c #d5b27b", -"#W c #d5c29c", -"#U c #d5ce7b", -".A c #d5ced5", -".q c #d5d2d5", -".L c #d5d2de", -"#h c #debe52", -"#n c #deceac", -".V c #ded6e6", -".6 c #dedee6", -".K c #dedeee", -"#l c #e6deee", -".T c #e6e2e6", -".U c #e6e2ee", -".Y c #e6e68b", -".j c #e6e6e6", -"#m c #e6e6f6", -".X c #eee6c5", -".t c #eeeaee", -"#c c #eeeaf6", -"#d c #f6d6ac", -".4 c #f6eef6", -".3 c #f6f2f6", -".B c #f6f6f6", -"#q c #ffc608", -"#z c #ffce00", -"#y c #ffce18", -"#K c #ffd64a", -"#J c #ffda18", -"#p c #ffde31", -"#x c #ffe641", -"#V c #ffee31", -"#I c #ffee41", -"#o c #fff252", -"#g c #fff641", -"#w c #fff662", -".y c #fff6f6", -".S c #fff6ff", -"#H c #fffa83", -".r c #fffaff", -".9 c #ffff62", -"#f c #ffff8b", -".8 c #ffff9c", -"#e c #ffffb4", -".7 c #ffffc5", -".s c #ffffff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQt.#.a.b.c.d.eQtQtQt", -"QtQtQtQtQt.f.g.h.i.j.k.l.mQtQtQt", -"QtQtQt.n.o.p.q.r.s.t.u.v.wQtQtQt", -"QtQtQt.x.y.z.A.B.C.D.D.E.F.GQtQt", -"QtQt.H.j.s.I.J.K.L.M.N.O.P.QQtQt", -"QtQt.R.c.S.T.U.V.M.W.X.Y.Z.0.1Qt", -"QtQtQt.2.3.4.5.M.6.7.8.9#.###aQt", -"QtQtQt#b.A#c.5.s#d#e#f#g#h#i#jQt", -"QtQtQtQt#k#l.L#m#n.8#o#p#q#r#s#t", -"QtQtQtQt#u.6.V#v#e#w#x#y#z#A#B#C", -"QtQt#D#E#F.w.D#G#H#I#J#K#L#M#NQt", -"Qt#O#P#Q#R#S#m#T#U#V#W#X#Y#ZQtQt", -"#0#1#P#2#3#4#5#6#7#8#9a.QtQtQtQt", -"QtQta#aaab#OacadaeafagQtQtQtQtQt", -"QtQtQtQtQtQtahaiajQtQtQtQtQtQtQt"}; +static const char* const m_catalog_icon_data[] = { + "16 16 111 2", + " c None", + ". c #DC0202", + "+ c #FF0A0A", + "@ c #FF1010", + "# c #FF1A1A", + "$ c #FE2424", + "% c #FF0808", + "& c #FE0303", + "* c #F50101", + "= c #DF0000", + "- c #BE0000", + "; c #FC0505", + "> c #FF0909", + ", c #FF1D1D", + "' c #FF2D2D", + ") c #FF3B3B", + "! c #FF2B2B", + "~ c #FF1818", + "{ c #FE0A0A", + "] c #EE0303", + "^ c #D40101", + "/ c #A40000", + "( c #FF0303", + "_ c #FF0707", + ": c #FF0F0F", + "< c #FF3333", + "[ c #FF4A4A", + "} c #FF4E4E", + "| c #FF3939", + "1 c #F30B0B", + "2 c #D10303", + "3 c #B50101", + "4 c #9F0000", + "5 c #8B0000", + "6 c #FF0202", + "7 c #FF0505", + "8 c #FF0B0B", + "9 c #FF2F2F", + "0 c #FF4B4B", + "a c #FF5555", + "b c #FF3E3E", + "c c #FC1B1B", + "d c #D80606", + "e c #AE0000", + "f c #940000", + "g c #800000", + "h c #6C0000", + "i c #630000", + "j c #FF0101", + "k c #FF2020", + "l c #FF3636", + "m c #FF4040", + "n c #FE2E2E", + "o c #EF3B3C", + "p c #D56F73", + "q c #C07278", + "r c #994043", + "s c #660909", + "t c #500000", + "u c #FD0303", + "v c #FB0707", + "w c #F90F0F", + "x c #F91A1A", + "y c #F51D1C", + "z c #EA4043", + "A c #E9C9D7", + "B c #EAF1FF", + "C c #E8EEFF", + "D c #E8E5F3", + "E c #AD919B", + "F c #711316", + "G c #EE0101", + "H c #D00505", + "I c #C70808", + "J c #B70707", + "K c #C67C86", + "L c #E1E9FF", + "M c #D8DAFE", + "N c #CACAFE", + "O c #D9DAFF", + "P c #DBDFFE", + "Q c #8C7797", + "R c #BA0000", + "S c #A90101", + "T c #930101", + "U c #B18590", + "V c #DFEBFF", + "W c #C4C6FD", + "X c #9694CC", + "Y c #A8A7E2", + "Z c #C0CDFF", + "` c #A9BEEA", + " . c #7D0000", + ".. c #5A0000", + "+. c #7F5057", + "@. c #D7DFF9", + "#. c #CACFFE", + "$. c #A5A3DD", + "%. c #A8A8E6", + "&. c #BAC9FF", + "*. c #B7CCFA", + "=. c #510000", + "-. c #670C0E", + ";. c #B194AB", + ">. c #E8ECFF", + ",. c #D7DAFF", + "'. c #C1CCFF", + "). c #C3D5FF", + "!. c #8E9098", + "~. c #C5CAE9", + "{. c #C5D4FA", + " ", + " ", + " . . . . . . . . ", + " . + @ # $ . . % & * = - ", + ". ; > @ , ' ) ) ! ~ { ] ^ - / / ", + ". ( _ : , < [ } | , 1 2 3 4 5 5 ", + ". 6 7 8 ~ 9 0 a b c d e f g h i ", + ". j ( _ : k l m n o p q r s t h ", + " . j u v w x y z A B C D E F ", + " . G . H I J K L M N O P Q ", + " . R S T g U V W X Y Z ` ", + " . S ...+.@.#.$.%.&.*. ", + " . ..=.-.;.>.,.'.).` ", + " . =.. !.~.{.` ", + " . ", + " " +}; + +static const char* const m_unknown_icon_data[] = { + "16 18 38 1", + ". c None", + "y c #000000", + "d c #000000", + "x c #000000", + "H c #000000", + "c c #000000", + "G c #000000", + "t c #000000", + "n c #000000", + "s c #000000", + "w c #000000", + "J c #000000", + "D c #000000", + "B c #000000", + "v c #000000", + "r c #000000", + "C c #000000", + "l c #000000", + "k c #000000", + "I c #000000", + "j c #000000", + "q c #000000", + "b c #000000", + "a c #00385a", + "# c #003862", + "h c #00406a", + "o c #004473", + "g c #00508b", + "f c #005594", + "F c #00599c", + "e c #2981c5", + "u c #2985c5", + "m c #3185c5", + "z c #4191cd", + "p c #5299cd", + "i c #6aaad5", + "A c #6aaade", + "E c #8bbee6", + "....#a#a#abcd...", + "...aefbbbfgbbcd.", + "..hifbjklamgfbnd", + "..opbqrstsaugbvc", + "..#efbwx.yhzfblt", + "..cagfbnd.hzgblt", + "..ynbbbvcaAfbqvc", + "...ynBCDaEFbqrnd", + "....ycGaAFbqrnd.", + "......augbqrnd..", + "......#efbksd...", + "......cbbqvc....", + "......ynBBnd....", + ".......aasx.....", + "......#ifbnd....", + "......HbbIJH....", + "......ynBBnd....", + ".......yccd....." +}; + +static const char* const m_cd_icon_data[] = { + "18 16 172 2", + " c None", + ". c #80807E", + "+ c #8B8B83", + "@ c #757567", + "# c #413C31", + "$ c #514D47", + "% c #363434", + "& c #737373", + "* c #90A189", + "= c #A4C781", + "- c #CBE781", + "; c #E8EB91", + "> c #DAC99C", + ", c #C19F8D", + "' c #976A65", + ") c #523E40", + "! c #131313", + "~ c #777B77", + "{ c #71B76F", + "] c #4BEF35", + "^ c #7EF63C", + "/ c #CAFF65", + "( c #EBF189", + "_ c #D3C4A5", + ": c #D0AFA0", + "< c #C69090", + "[ c #BB778A", + "} c #856974", + "| c #3E3C3E", + "1 c #93B682", + "2 c #55FF39", + "3 c #06F800", + "4 c #48FE1E", + "5 c #B4FF5B", + "6 c #F0FA80", + "7 c #DDC89F", + "8 c #CFA89D", + "9 c #C18991", + "0 c #BC849C", + "a c #C189AF", + "b c #987E96", + "c c #1A1A1A", + "d c #929684", + "e c #B8DC92", + "f c #97F062", + "g c #4BFF2D", + "h c #23FC18", + "i c #96FD57", + "j c #E8F591", + "k c #E6CEA0", + "l c #C9A1A1", + "m c #BC8699", + "n c #C18BAE", + "o c #C397C2", + "p c #BE99C3", + "q c #544D57", + "r c #7A7A7A", + "s c #B5B69A", + "t c #C1C997", + "u c #BBD292", + "v c #A6EC72", + "w c #89EC76", + "x c #BC9CB1", + "y c #C29FC7", + "z c #B9A5CF", + "A c #B3A8D4", + "B c #7E7599", + "C c #373739", + "D c #878783", + "E c #C4BCA4", + "F c #C8C49C", + "G c #CACB9D", + "H c #C9CEA2", + "I c #616961", + "J c #B1AED4", + "K c #AAAAD6", + "L c #A6A9D8", + "M c #9597C1", + "N c #4B4B53", + "O c #908A86", + "P c #D4BEA4", + "Q c #D1BDA1", + "R c #D2BEA2", + "S c #D0C4B2", + "T c #A3B2D9", + "U c #9BA6D3", + "V c #9AA4D0", + "W c #909DD6", + "X c #2D303F", + "Y c #918583", + "Z c #DBAFA3", + "` c #D9AFA3", + " . c #DBACA3", + ".. c #D7B1B1", + "+. c #98B2D0", + "@. c #899FC1", + "#. c #899CBF", + "$. c #869AC4", + "%. c #2A2F3A", + "&. c #7E7476", + "*. c #BF8B90", + "=. c #D99DA8", + "-. c #DAA0B2", + ";. c #D6ACBE", + ">. c #D5A7CF", + ",. c #4AFC85", + "'. c #3DFFBD", + "). c #59EDF3", + "!. c #76BBCA", + "~. c #7BA8BB", + "{. c #6C90AA", + "]. c #444B50", + "^. c #756F71", + "/. c #B58396", + "(. c #D79DBA", + "_. c #D7A3C3", + ":. c #B7A3CD", + "<. c #9AB8D6", + "[. c #47FDE1", + "}. c #68D6D5", + "|. c #4E898E", + "1. c #353739", + "2. c #8D7D86", + "3. c #D09EC5", + "4. c #D1A3CE", + "5. c #C3A2CE", + "6. c #A7A4CA", + "7. c #7CDDE8", + "8. c #39FFA9", + "9. c #07FF47", + "0. c #15FF68", + "a. c #2DFFA9", + "b. c #33FBC5", + "c. c #334F4E", + "d. c #A78AAA", + "e. c #C699D1", + "f. c #BBA0CA", + "g. c #ADA0CA", + "h. c #A0A2CE", + "i. c #9AB5D4", + "j. c #8DC8D3", + "k. c #3FFFC7", + "l. c #0DFF6E", + "m. c #00F42E", + "n. c #05FF57", + "o. c #42946C", + "p. c #202020", + "q. c #767476", + "r. c #9A82A8", + "s. c #AE91D3", + "t. c #A9A0CE", + "u. c #A1A8CF", + "v. c #99B9D1", + "w. c #8DC7D3", + "x. c #5DE9CD", + "y. c #1BFF96", + "z. c #11D744", + "A. c #2E7C3C", + "B. c #1D2520", + "C. c #847F8F", + "D. c #8886B2", + "E. c #8E97BA", + "F. c #88B4DA", + "G. c #7EC8DE", + "H. c #52D2C8", + "I. c #309E76", + "J. c #244632", + "K. c #74787E", + "L. c #758795", + "M. c #42585E", + "N. c #364848", + "O. c #282E2C", + " . + @ # $ % ", + " & * = - ; > , ' ) ! ", + " ~ { ] ^ / ( _ : < [ } | ", + " & 1 2 3 4 5 6 7 8 9 0 a b c ", + " d e f g h i j k l m n o p q ", + "r s t u v w h i k m x y z A B C ", + "D E F G H v w I I x y J K L M N ", + "O P Q R S H I I J T U V W X ", + "Y Z ` ...S I I +.+.@.#.$.%. ", + "&.*.=.-.;.>.;.I I ,.'.).!.~.{.]. ", + "^./.(._.>.>.:.:.<.,.,.'.[.}.|.1. ", + " 2.3.4.5.:.6.<.7.8.9.0.a.b.c. ", + " & d.e.f.g.h.i.j.k.l.m.n.o.p. ", + " q.r.s.t.u.v.w.x.y.z.A.B. ", + " & C.D.E.F.G.H.I.J.c ", + " & K.L.M.N.O. " +}; + + +static const char* const m_dvd_icon_data[] = { + "16 16 81 1", + " c None", + ". c #A9A9A9", + "+ c #B0B0B0", + "@ c #9C9C9C", + "# c #6F6F6F", + "$ c #7F7F7F", + "% c #6C6C6C", + "& c #9F9F9F", + "* c #BCBCBC", + "= c #C8C8C8", + "- c #D5D5D5", + "; c #DEDEDE", + "> c #DBDBDB", + ", c #CBCBCB", + "' c #A8A8A8", + ") c #7B7B7B", + "! c #505050", + "~ c #A5A5A5", + "{ c #BABABA", + "] c #B9B9B9", + "^ c #BFBFBF", + "/ c #D4D4D4", + "( c #DDDDDD", + "_ c #DCDCDC", + ": c #D9D9D9", + "< c #CECECE", + "[ c #A2A2A2", + "} c #727272", + "| c #C2C2C2", + "1 c #C1C1C1", + "2 c #A7A7A7", + "3 c #B6B6B6", + "4 c #CFCFCF", + "5 c #D7D7D7", + "6 c #C9C9C9", + "7 c #C5C5C5", + "8 c #B4B4B4", + "9 c #555555", + "0 c #B5B5B5", + "a c #D8D8D8", + "b c #CCCCCC", + "c c #BDBDBD", + "d c #B2B2B2", + "e c #CDCDCD", + "f c #E2E2E2", + "g c #D6D6D6", + "h c #C6C6C6", + "i c #CACACA", + "j c #D0D0D0", + "k c #848484", + "l c #D2D2D2", + "m c #D3D3D3", + "n c #AEAEAE", + "o c #949494", + "p c #E0E0E0", + "q c #DFDFDF", + "r c #818181", + "s c #DADADA", + "t c #E1E1E1", + "u c #B3B3B3", + "v c #E3E3E3", + "w c #696969", + "x c #C7C7C7", + "y c #C3C3C3", + "z c #C0C0C0", + "A c #7E7E7E", + "B c #C4C4C4", + "C c #9B9B9B", + "D c #6D6D6D", + "E c #000000", + "F c #ADADAD", + "G c #767676", + "H c #AFAFAF", + "I c #ACACAC", + "J c #5A5A5A", + "K c #A1A1A1", + "L c #5B5B5B", + "M c #969696", + "N c #828282", + "O c #747474", + "P c #636363", + " .+@#$% ", + " &*=-;>,')! ", + " ~{]^/(_:<^[} ", + " &|1234(;567689 ", + " 0abcdeffghi4jk ", + "~bl/lmdefh4->;+#", + "n-/-:lmoo4-pq;t:o op;ag-%", + "u;;;vto o--6=6w", + "~6>(t;tooxyi7z8A", + "&1>(;;aaaxxyhBCD", + " naEEaaE/EFEEcG ", + " &zEgEaElEHEIEJ ", + " KEEaagEx0EEL ", + " &+|=mj]M%9 ", + " &~nNOP " +}; + +static const char* const m_hdd_icon_data[] = { + "16 16 105 2", + "Qt c None", + ".1 c None", + "#j c None", + "#K c None", + "#A c None", + "#s c None", + ".K c None", + ".y c None", + ".n c None", + "#G c None", + ".h c None", + "#t c None", + "#k c None", + ".# c None", + ".c c None", + "## c None", + ".i c None", + ".o c None", + "#M c #000020", + "#L c #62657b", + "#z c #080439", + "#r c #000031", + ".z c #f6f2ff", + "#F c #181841", + "#J c #39385a", + ".p c #cdced5", + ".j c #cdcad5", + ".T c #ded6e6", + ".2 c #d5d2d5", + ".L c #dedae6", + ".b c #b4b6c5", + ".d c #c5c2cd", + "#H c #9495a4", + ".g c #acaab4", + "#q c #62657b", + "#B c #9495a4", + ".m c #9c9dac", + "#y c #737583", + "#u c #a4a1ac", + "#E c #8b899c", + ".x c #a4a1ac", + ".a c #ded6e6", + "#l c #b4b2bd", + "#I c #94919c", + ".J c #a4a5b4", + ".A c #dedade", + "#a c #cdc2d5", + ".S c #9c99ac", + ".q c #e6e2ee", + "#v c #5a5d83", + ".4 c #5aea62", + "#C c #62658b", + "#f c #7b799c", + "#w c #837da4", + "#m c #83819c", + "#e c #8381a4", + ".9 c #8b89a4", + "#. c #8b8dac", + ".8 c #948dac", + ".7 c #9495ac", + ".Z c #9c99ac", + "#n c #9c99b4", + ".W c #9c9db4", + "#i c #a49dac", + ".Y c #a4a1b4", + ".X c #a4a1bd", + "#x c #a4a5bd", + ".Q c #acaabd", + "#g c #acaac5", + ".O c #acaec5", + ".P c #b4b2c5", + "#D c #b4b6c5", + ".N c #bdb6cd", + ".R c #bdbacd", + ".G c #c5becd", + ".V c #c5bed5", + ".6 c #c5c2cd", + ".H c #c5c2d5", + ".F c #cdc6d5", + "#h c #cdcade", + "#p c #cdced5", + "#c c #d5cede", + ".v c #d5d2de", + "#d c #d5d2e6", + ".M c #d5d6de", + "#b c #d5e2de", + ".u c #ded6e6", + ".I c #dedae6", + "#o c #dedaee", + ".3 c #deffe6", + ".0 c #e6dee6", + ".C c #e6e2ee", + ".E c #e6e6ee", + ".D c #eee6ee", + ".B c #eee6f6", + ".k c #eeeaee", + ".w c #eeeaf6", + ".U c #eeeeee", + ".5 c #f6eaff", + ".s c #f6f2f6", + ".e c #f6f2ff", + ".l c #f6f6ff", + ".t c #fff6ff", + ".r c #fffaff", + ".f c #ffffff", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQt.#.a.bQtQtQtQtQtQt", + "QtQtQtQtQt.c.d.e.f.f.g.hQtQtQtQt", + "QtQtQt.i.j.k.f.f.f.l.f.m.nQtQtQt", + "Qt.o.p.q.f.r.s.l.t.u.v.w.x.yQtQt", + ".z.A.e.k.B.C.D.E.F.G.H.H.I.J.KQt", + ".L.f.v.v.v.v.M.N.O.P.P.P.Q.R.SQt", + ".T.U.f.F.V.H.N.W.X.Y.W.Z.V.f.0.1", + ".2.3.4.5.6.O.7.8.9#..P.C.k.f.M.1", + "###a#b#c#d.H#e#f#g.H.R#h.D.f#i#j", + "Qt#k#l.u.P.P.H.X#m#n.O#o#p#q#r#s", + "QtQt#t#u#h.7.N#v#w#x.F#y#z#AQtQt", + "QtQtQt.h#B.V.Q#C#D#E#F#AQtQtQtQt", + "QtQtQtQt#G#H.R#I#J#KQtQtQtQtQtQt", + "QtQtQtQtQtQt#L#MQtQtQtQtQtQtQtQt" +}; + +static const char* const m_net_icon_data[] = { + "16 16 108 2", + "Qt c None", + "#L c None", + ".Y c None", + ".Q c None", + "#F c None", + "#u c None", + "#f c None", + "#M c None", + "#p c None", + "#G c None", + ".f c None", + ".v c None", + ".G c None", + ".p c None", + ".b c None", + ".Z c None", + "#B c #52505a", + ".8 c #ffffff", + ".X c #000029", + "#E c #000029", + ".u c #626173", + ".# c #c5c2c5", + ".h c #f6eeee", + ".F c #181431", + ".P c #000029", + ".q c #ffffff", + "#C c #9c99a4", + ".g c #ffffff", + "#t c #080c29", + "#v c #ee9100", + ".a c #8b8d8b", + "#y c #945000", + ".l c #f69d00", + "#g c #dedade", + ".o c #c57500", + ".O c #525552", + ".9 c #7b7d7b", + "#P c #a4a59c", + ".H c #c58508", + ".w c #4a4c52", + ".R c #ffd600", + "#s c #736d6a", + ".i c #7b757b", + "#J c #000000", + ".C c #000c18", + ".s c #080808", + ".1 c #101420", + "#r c #313031", + "#H c #4a484a", + "#z c #52595a", + "#n c #5a6173", + "#. c #626162", + ".e c #626562", + ".k c #626973", + ".r c #6a656a", + "#e c #6a696a", + "#j c #73694a", + "#h c #736d73", + "#N c #73757b", + ".x c #838594", + "## c #83899c", + ".0 c #8b7d62", + ".D c #9c999c", + ".j c #a4a1a4", + ".t c #aca5ac", + "#A c #acaaac", + "#q c #acaeac", + ".E c #b4b2ac", + ".c c #b4b6bd", + "#c c #b4bede", + ".M c #bd8952", + ".6 c #bda15a", + "#I c #bdb6bd", + ".2 c #c5bab4", + "#D c #c5c2c5", + "#o c #c5c6cd", + ".N c #c5cad5", + ".5 c #cdb273", + ".B c #d59108", + "#K c #d5d2cd", + "#d c #d5deee", + "#i c #dedade", + "#O c #dedede", + ".W c #e69100", + ".7 c #ee8d00", + "#b c #eeba39", + "#x c #f69d00", + "#w c #ffa500", + "#k c #ffbe20", + ".y c #ffc218", + ".n c #ffc220", + "#m c #ffca08", + "#l c #ffca10", + ".m c #ffca29", + ".V c #ffce18", + ".L c #ffd218", + ".K c #ffd24a", + ".U c #ffd652", + ".4 c #ffe26a", + ".T c #ffe694", + "#a c #ffee94", + ".3 c #fff6c5", + ".J c #fffade", + ".S c #fffaf6", + ".I c #ffffcd", + ".z c #ffffd5", + ".A c #fffff6", + ".d c #ffffff", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQt.#.a.bQtQtQtQtQtQtQtQtQtQtQt", + "QtQt.c.d.e.fQtQtQtQtQtQtQt.g.hQt", + "QtQt.i.j.d.k.l.m.n.o.p.q.r.s.t.u", + "QtQt.v.w.x.y.z.d.d.A.B.C.D.d.E.F", + "QtQtQt.G.H.I.d.d.J.K.L.M.N.O.P.Q", + "QtQtQtQt.R.d.d.S.T.U.V.W.X.YQtQt", + "QtQtQt.Z.0.1.2.3.4.5.6.7.QQtQtQt", + "Qt.8.9.s#..d###a#b#c#d#e#fQtQtQt", + "#g#.#h.d#i#j#k#l#m#n#o.d#e#pQtQt", + "#q#r.d#s#t#u#v#w#x#y#z#A.d.D#BQt", + "#C#D#E.YQtQtQt#F#F.Q#G#H#I#J#K#L", + "Qt.QQtQtQtQtQtQtQtQtQt#M#N#O#P.Y", + "QtQtQtQtQtQtQtQtQtQtQtQtQt.Y.YQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt" +}; + +static const char* const m_flash_icon_data[] = { + "16 16 97 2", + ".e c #2048a4", + ".j c #2050a4", + ".f c #3155ac", + ".q c #3165ac", + ".d c #395dac", + ".n c #3961ac", + ".A c #3969b4", + ".# c #415dac", + "Qt c #4161b4", + ".a c #4165b4", + ".s c #4169b4", + ".U c #4179bd", + ".b c #4a65b4", + ".c c #4a69b4", + ".h c #4a71b4", + ".o c #4a71bd", + ".x c #4a79bd", + ".R c #4a79c5", + ".J c #4a7dbd", + ".g c #5271bd", + ".i c #5275bd", + ".X c #5289c5", + "#. c #5291c5", + ".k c #5a79bd", + ".p c #5a7dbd", + ".t c #5a7dc5", + ".D c #5a85c5", + ".W c #5a8dc5", + ".V c #5a8dcd", + ".v c #6289c5", + ".F c #628dc5", + ".O c #628dcd", + ".K c #6291c5", + ".H c #6291cd", + ".N c #6295cd", + ".4 c #6299cd", + ".E c #6a89c5", + ".G c #6a89cd", + ".w c #6a8dc5", + ".u c #6a91cd", + ".I c #6a95c5", + ".M c #6a99cd", + ".7 c #6a9dcd", + ".6 c #6aa1cd", + ".L c #7399cd", + "#a c #73a1cd", + ".5 c #73a1d5", + "#p c #73a5d5", + ".Y c #7ba1d5", + "#b c #7baad5", + "#j c #7baed5", + "#h c #7baede", + ".C c #83a1d5", + ".8 c #83aed5", + "#d c #83b2d5", + "#i c #83b2de", + "#o c #83b6de", + "#s c #83bade", + "#c c #8bb2de", + "#f c #8bb6de", + "#u c #8bb6e6", + "#k c #8bbade", + "#l c #8bbede", + "#B c #8bc2e6", + ".S c #94b2de", + "#e c #94b6e6", + "#g c #94bae6", + "#n c #94bede", + "#m c #94bee6", + "#E c #94c2e6", + ".P c #9cbade", + "#t c #9cc2e6", + "#v c #9cc6e6", + "#x c #9ccae6", + "#C c #9ccaee", + ".2 c #a4c2de", + "#y c #a4c6ee", + "#w c #a4cae6", + "#D c #a4caee", + "#z c #a4ceee", + ".0 c #acc6e6", + ".1 c #accae6", + ".m c #b4c2e6", + ".Q c #b4ceee", + "#r c #b4d2ee", + ".B c #bdcae6", + ".3 c #bdd2ee", + "#q c #c5daee", + ".T c #d5def6", + ".Z c #d5e6f6", + "## c #dee6f6", + ".y c #e6eaff", + "#A c #e6f2ff", + ".r c #eeeef6", + ".9 c #eeeeff", + ".z c #fffaff", + ".l c #ffffff", + "Qt.#Qt.#Qt.#Qt.#Qt.#Qt.#Qt.#Qt.#", + ".a.b.a.c.a.b.d.e.f.c.a.c.a.b.a.c", + ".g.h.i.h.g.j.k.l.m.n.i.o.g.h.i.o", + ".k.p.p.k.q.l.l.l.r.s.p.p.p.p.k.t", + ".u.v.w.x.y.z.A.B.C.D.E.F.G.F.E.F", + ".F.H.I.H.l.J.K.F.K.L.M.L.N.O.I.L", + ".P.Q.R.S.T.U.O.F.V.W.O.X.Y.Z.V.u", + ".l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.0", + ".l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.1", + ".2.3.4.5.6.7.8.9#..5.6.6.8###a#b", + "#c#d#e#f#g#f#h.l#h#i#i#i#f#j#k#k", + "#l#m#n#m#n#m#o.Z.l#p#q#r#s#m#n#g", + "#t#t#t#t#t#t#t#i.z.l.l.l#u#t#t#t", + "#v#w#t#x#v#y#v#v#s#z.l#A#B#C#t#x", + "#D#D#z#w#z#w#z#w#D#v#E#E#D#w#z#w", + "#w#z#w#z#w#z#w#z#w#z#w#z#w#z#w#z" +}; + +static const char* const m_other_icon_data[] = { + "16 16 103 2", + "Qt c None", + "#p c None", + "#j c None", + "#K c None", + ".n c None", + ".Z c None", + ".O c None", + ".c c None", + ".# c #d5cef6", + "#k c #d5d6ff", + "#H c #9c99cd", + "#a c #d5d2f6", + ".F c #c5baee", + ".h c #9491cd", + "#B c #9c9dde", + "#v c #7375c5", + ".N c #bdb6e6", + "#C c #c5beee", + ".Y c #bdaee6", + "#w c #d5cef6", + "#G c #9491cd", + ".y c #6a69b4", + "#J c #7b79ac", + ".d c #eeeaff", + ".b c #c5beee", + ".s c #ffffff", + "#q c #e6e2ff", + "## c #aca5de", + ".i c #fffaff", + ".v c #f6f6ff", + ".I c #8b89bd", + ".Q c #9c95c5", + ".u c #acb2f6", + ".z c #fffaff", + ".D c #948db4", + ".a c #c5c2de", + ".e c #eeeaff", + ".0 c #9c9dbd", + "#I c #c5c6de", + "#u c #cdc6f6", + ".1 c #eee6f6", + ".C c #acaee6", + ".j c #e6e6f6", + ".G c #f6f6ff", + "#A c #cdc6ee", + ".R c #ffeef6", + ".H c #c5c6ee", + "#F c #d5cef6", + ".P c #dedef6", + ".J c #ffffff", + ".E c #fffaff", + ".9 c #0034d5", + "#h c #0038cd", + "#g c #003cd5", + ".8 c #185dd5", + ".W c #187df6", + "#n c #2079ee", + ".V c #29a1ff", + "#f c #3981ee", + "#m c #4a9df6", + ".7 c #4aa5ff", + ".L c #4aaeff", + ".6 c #5abaff", + ".U c #62b6ff", + "#e c #73c6ff", + "#l c #7bcaff", + "#s c #83caff", + "#d c #83ceff", + ".T c #83d2ff", + "#o c #8bbeff", + ".5 c #8bceff", + "#i c #94beff", + ".K c #a4deff", + ".4 c #ace2ff", + "#t c #b4daff", + "#c c #b4e6ff", + ".r c #bdc6ff", + ".x c #c5caff", + "#. c #c5e2ff", + ".m c #cdceff", + ".f c #cdd2ee", + ".g c #cdd2ff", + "#z c #d5d2ff", + "#E c #d5d6ff", + ".3 c #d5ffff", + "#y c #dedaff", + ".B c #dedeff", + "#b c #deffff", + ".t c #e6e2f6", + ".k c #e6e6f6", + "#D c #e6e6ff", + ".X c #e6f2ff", + ".S c #e6ffff", + "#x c #eeeeff", + ".M c #eef2ff", + ".o c #f6eeff", + ".w c #f6f2f6", + ".q c #f6f2ff", + "#r c #f6f6ff", + ".2 c #f6ffff", + ".p c #fffaf6", + ".A c #fffaff", + ".l c #ffffff", + "QtQtQtQtQtQtQtQt.#.a.bQtQtQtQtQt", + "QtQtQtQtQt.c.d.e.f.g.hQtQtQtQtQt", + "QtQtQt.c.i.j.k.k.l.m.nQtQtQtQtQt", + "QtQt.c.o.p.q.l.l.l.rQtQtQtQtQtQt", + "QtQt.s.l.q.l.l.l.t.uQtQtQtQtQtQt", + "QtQt.v.l.w.l.l.q.x.yQtQtQtQtQtQt", + "QtQt.z.A.l.l.B.C.D.E.FQtQtQtQtQt", + "QtQt.G.q.w.H.I.J.K.L.M.NQtQtQtQt", + "Qt.O.l.P.Q.R.S.T.U.V.W.X.YQtQtQt", + "Qt.Z.0.1.2.3.4.5.6.7.8.9#.##QtQt", + "Qt#a.l.l.l#b#c#d#e#f#g#h#i.q#jQt", + "Qt#k.l.l.l.l.4#l#m#n#o.l.l.q#pQt", + "QtQt#q.l#r.l.l#s#t.l.q.A#u#vQtQt", + "QtQtQt#w#x#y.l.A#z.q#A#BQtQtQtQt", + "QtQtQtQt#C.B#D#E#F#GQtQtQtQtQtQt", + "QtQtQtQtQt#H#I#J#KQtQtQtQtQtQtQt" +}; + +static const char* const m_floppy_icon_data[] = { + "16 16 140 2", + "Qt c None", + "#Z c None", + "ag c None", + "aj c None", + ".1 c None", + ".e c None", + ".# c None", + ".f c None", + ".n c None", + "#D c #000000", + "a# c #000000", + "#0 c #000000", + ".R c #eee6ee", + "aa c #000000", + "#O c #000000", + "#R c #000000", + "#E c #000000", + "ab c #000000", + "#t c #292829", + "#3 c #000000", + "ah c #393c39", + "#F c #202020", + "#C c #181c18", + "#Q c #000000", + "#2 c #000000", + "#P c #000000", + ".G c #7b797b", + "#1 c #000000", + "a. c #202429", + "#N c #202020", + "#b c #bdbebd", + "#4 c #414441", + ".H c #f6f2f6", + "#a c #4a4441", + ".a c #cdc6c5", + "ai c #312c29", + ".o c #dedade", + "#u c #949194", + ".g c #d5d2d5", + ".m c #9c959c", + "af c #292c29", + "#S c #6a696a", + ".2 c #bdbabd", + ".x c #d5d6d5", + ".Q c #737173", + ".b c #d5ced5", + "#k c #a4a5a4", + "#Y c #313039", + "#M c #292831", + "#9 c #313439", + "#B c #393c4a", + "ae c #413c41", + "#X c #414052", + "#j c #525052", + "#s c #525962", + "ac c #625d62", + "#8 c #6a657b", + ".0 c #6a696a", + "#r c #7371a4", + "## c #737594", + "#i c #7b79a4", + ".Z c #8b89ac", + "#. c #8b8d94", + ".F c #948d94", + ".w c #949194", + ".P c #9491ac", + ".O c #9c95b4", + "#L c #9c99a4", + "#5 c #9c9d9c", + ".E c #9c9dac", + ".u c #a4a1ac", + ".z c #acaaac", + ".k c #acaab4", + ".v c #acaabd", + ".l c #acaeb4", + ".J c #b4b2b4", + "#G c #b4b2d5", + ".d c #bdb6bd", + "#7 c #bdbab4", + ".h c #bdbabd", + ".C c #bdbac5", + "ad c #bdbacd", + ".W c #bdbad5", + ".N c #bdbed5", + "#T c #bdbede", + "#v c #c5c2c5", + ".5 c #c5c2cd", + "#6 c #c5c2de", + ".c c #c5c6c5", + ".i c #cdc6cd", + ".p c #cdcacd", + ".D c #cdcad5", + ".M c #cdcade", + ".I c #cdced5", + "#A c #d5b27b", + "#W c #d5c29c", + "#U c #d5ce7b", + ".A c #d5ced5", + ".q c #d5d2d5", + ".L c #d5d2de", + "#h c #debe52", + "#n c #deceac", + ".V c #ded6e6", + ".6 c #dedee6", + ".K c #dedeee", + "#l c #e6deee", + ".T c #e6e2e6", + ".U c #e6e2ee", + ".Y c #e6e68b", + ".j c #e6e6e6", + "#m c #e6e6f6", + ".X c #eee6c5", + ".t c #eeeaee", + "#c c #eeeaf6", + "#d c #f6d6ac", + ".4 c #f6eef6", + ".3 c #f6f2f6", + ".B c #f6f6f6", + "#q c #ffc608", + "#z c #ffce00", + "#y c #ffce18", + "#K c #ffd64a", + "#J c #ffda18", + "#p c #ffde31", + "#x c #ffe641", + "#V c #ffee31", + "#I c #ffee41", + "#o c #fff252", + "#g c #fff641", + "#w c #fff662", + ".y c #fff6f6", + ".S c #fff6ff", + "#H c #fffa83", + ".r c #fffaff", + ".9 c #ffff62", + "#f c #ffff8b", + ".8 c #ffff9c", + "#e c #ffffb4", + ".7 c #ffffc5", + ".s c #ffffff", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQt.#.a.b.c.d.eQtQtQt", + "QtQtQtQtQt.f.g.h.i.j.k.l.mQtQtQt", + "QtQtQt.n.o.p.q.r.s.t.u.v.wQtQtQt", + "QtQtQt.x.y.z.A.B.C.D.D.E.F.GQtQt", + "QtQt.H.j.s.I.J.K.L.M.N.O.P.QQtQt", + "QtQt.R.c.S.T.U.V.M.W.X.Y.Z.0.1Qt", + "QtQtQt.2.3.4.5.M.6.7.8.9#.###aQt", + "QtQtQt#b.A#c.5.s#d#e#f#g#h#i#jQt", + "QtQtQtQt#k#l.L#m#n.8#o#p#q#r#s#t", + "QtQtQtQt#u.6.V#v#e#w#x#y#z#A#B#C", + "QtQt#D#E#F.w.D#G#H#I#J#K#L#M#NQt", + "Qt#O#P#Q#R#S#m#T#U#V#W#X#Y#ZQtQt", + "#0#1#P#2#3#4#5#6#7#8#9a.QtQtQtQt", + "QtQta#aaab#OacadaeafagQtQtQtQtQt", + "QtQtQtQtQtQtahaiajQtQtQtQtQtQtQt" +}; static const char * v_folderlocked_icon_data[]={ -"16 15 13 1", -"g c #808080", -"e c #cece63", -"k c #c3c3c3", -"c c #ffffce", -"j c #dca149", -"h c #ffce9c", -"d c #ffff9c", -"f c #c05800", -"a c #000000", -"i c #ff8000", -" c None", -"b c #f7f7f7", -"# c #9c9c00", -" ", -" #####a ", -" #bccdd#a ", -"#eeeeeee#fg### ", -"#ccccccccfgcdea ", -"#cddddddfgddhea ", -"#cdddddcfgchdea ", -"#cddddciiiichea ", -"#cddddcijkihdea ", -"#cddddciiiichea ", -"#cdddhdhfgchhea ", -"#chdhdhdfghhhea ", -"#eeeeeeefgeeeea ", -" aaaaaaafgaaaaa ", -" "}; + "16 15 13 1", + "g c #808080", + "e c #cece63", + "k c #c3c3c3", + "c c #ffffce", + "j c #dca149", + "h c #ffce9c", + "d c #ffff9c", + "f c #c05800", + "a c #000000", + "i c #ff8000", + " c None", + "b c #f7f7f7", + "# c #9c9c00", + " ", + " #####a ", + " #bccdd#a ", + "#eeeeeee#fg### ", + "#ccccccccfgcdea ", + "#cddddddfgddhea ", + "#cdddddcfgchdea ", + "#cddddciiiichea ", + "#cddddcijkihdea ", + "#cddddciiiichea ", + "#cdddhdhfgchhea ", + "#chdhdhdfghhhea ", + "#eeeeeeefgeeeea ", + " aaaaaaafgaaaaa ", + " " +}; static const char* v_folderclosed_icon_data[]={ -"16 16 8 1", -"e c #cece63", -"c c #ffffce", -"f c #ffce9c", -"d c #ffff9c", -"a c #000000", -" c None", -"b c #f7f7f7", -"# c #9c9c00", -" ", -" #####a ", -" #bccdd#a ", -"#eeeeeee###### ", -"#cccccccccccdea ", -"#cddddddddddfea ", -"#cdddddddfdfdea ", -"#cddddddddfdfea ", -"#cdddddfdfdfdea ", -"#cddddddfdfdfea ", -"#cdddfdfdfdffea ", -"#cfdfdfdfdfffea ", -"#eeeeeeeeeeeeea ", -" aaaaaaaaaaaaaa ", -" ", -" "}; + "16 16 8 1", + "e c #cece63", + "c c #ffffce", + "f c #ffce9c", + "d c #ffff9c", + "a c #000000", + " c None", + "b c #f7f7f7", + "# c #9c9c00", + " ", + " #####a ", + " #bccdd#a ", + "#eeeeeee###### ", + "#cccccccccccdea ", + "#cddddddddddfea ", + "#cdddddddfdfdea ", + "#cddddddddfdfea ", + "#cdddddfdfdfdea ", + "#cddddddfdfdfea ", + "#cdddfdfdfdffea ", + "#cfdfdfdfdfffea ", + "#eeeeeeeeeeeeea ", + " aaaaaaaaaaaaaa ", + " ", + " " +}; static const char* v_folderopen_icon_data[]={ -"16 16 7 1", -"c c #cece63", -"e c #ffce9c", -"b c #ffff9c", -"d c #000000", -" c None", -"a c #ffffff", -"# c #9c9c00", -" ", -" ##### ", -" #aaaaa# ", -" #abbbbba###### ", -" #abbbbbbbaaaacd", -" #abbbbbbbbbbbcd", -"############cbcd", -"#abbbbbbebecdccd", -"#abbbbebbebcdccd", -" #abbbbbebee#d#d", -" #abbebebeeecd#d", -" #aebebeeeec#dd", -" ############dd", -" ddddddddddddd", -" ", -" "}; + "16 16 7 1", + "c c #cece63", + "e c #ffce9c", + "b c #ffff9c", + "d c #000000", + " c None", + "a c #ffffff", + "# c #9c9c00", + " ", + " ##### ", + " #aaaaa# ", + " #abbbbba###### ", + " #abbbbbbbaaaacd", + " #abbbbbbbbbbbcd", + "############cbcd", + "#abbbbbbebecdccd", + "#abbbbebbebcdccd", + " #abbbbbebee#d#d", + " #abbebebeeecd#d", + " #aebebeeeec#dd", + " ############dd", + " ddddddddddddd", + " ", + " " +}; static const char * v_file_icon_data []={ -"14 16 25 1", -" c None", -". c #B3B3B3", -"+ c #FFFFFF", -"@ c #ACACAC", -"# c #FDFDFD", -"$ c #FCFCFC", -"% c #FBFBFB", -"& c #FAFAFA", -"* c #F9F9F9", -"= c #F7F7F7", -"- c #F6F6F6", -"; c #F4F4F4", -"> c #F1F1F1", -", c #F8F8F8", -"' c #F5F5F5", -") c #F2F2F2", -"! c #ECECEC", -"~ c #F3F3F3", -"{ c #EEEEEE", -"] c #EBEBEB", -"^ c #FEFEFE", -"/ c #EDEDED", -"( c #EFEFEF", -"_ c #F0F0F0", -": c #BEBEBE", -"............. ", -".+++++++++++. ", -"@+++++##$$%&. ", -"@++++#%*=-;>. ", -"@+++#$&,-')!. ", -"@+++#&*='~{]. ", -"@++^$&=-~{!/. ", -"@^^$&,')({{(. ", -"@==-'~)____>. ", -"@~~~~~)____>. ", -"@--------:::. ", -"@,,,,,,--:!. ", -"@&&&&&&--:. ", -"@......... ", -" ", -" "}; - - -static const char* const v_back_icon_data[] = { -"16 16 33 1", -" c None", -". c #2E59A4", -"+ c #2D58A3", -"@ c #3D66AD", -"# c #90AAD6", -"$ c #3660A9", -"% c #6085C2", -"& c #BDCDE9", -"* c #C6D3EB", -"= c #7C9ACD", -"- c #3C64AC", -"; c #335DA7", -"> c #3A63AB", -", c #B1C4E3", -"' c #C7D5EC", -") c #91ACD7", -"! c #94ACD7", -"~ c #8DA9D5", -"{ c #85A2D2", -"] c #8CA9D4", -"^ c #83A1D1", -"/ c #3862AA", -"( c #355FA8", -"_ c #4169AF", -": c #4870B3", -"< c #5178B8", -"[ c #6B91C8", -"} c #7093C9", -"| c #4069AF", -"1 c #4B74B6", -"2 c #4A73B5", -"3 c #305AA5", -"4 c #3760A9", -" ", -" ", -" .. ", -" +@#$ ", -" ..%&*=-;.. ", -"..>,')!~{]^/. ", -" +..(-__:<[}|. ", -" +... .;123. ", -" +. .|4. ", -" .4(. ", -" ..3. ", -" .... ", -" .... ", -" ... ", -" ", -" "}; - - - -static const char* const a_0_data[] = { -"40 40 88 2", -"Qt c None", -"#l c #000000", -"#h c #200000", -"#k c #310000", -".7 c #4a0000", -"#s c #4a0010", -"#p c #521000", -".4 c #521010", -".9 c #523039", -".S c #620800", -"#o c #620810", -".Z c #621010", -"#u c #622029", -".0 c #731000", -".5 c #731010", -".6 c #7b1010", -".O c #8b3039", -"#b c #8b616a", -".1 c #941000", -".P c #941010", -".T c #941029", -".Q c #941810", -"#. c #941829", -".A c #9c1029", -".V c #9c1810", -".K c #9c2010", -".U c #a42029", -".8 c #ac1810", -".B c #ac2010", -".W c #ac2029", -".n c #ac5952", -"#j c #ac9d94", -".R c #bd2010", -".o c #bd2029", -".2 c #bd3029", -"#n c #bd8d7b", -"#g c #bdb6bd", -"#d c #cd2010", -".w c #cd2029", -"#e c #cd2839", -".u c #cd3029", -".J c #cdaeac", -".3 c #d53839", -".g c #de2029", -"## c #de2839", -".p c #de3029", -".j c #de3039", -"#q c #de3829", -".C c #de3839", -".v c #de3852", -".X c #de4839", -".H c #de95ac", -".d c #de9dac", -".h c #deaeac", -"#r c #deb6bd", -".D c #debeac", -".x c #debebd", -".M c #decebd", -".E c #ded6d5", -".G c #dedeee", -"#f c #e6596a", -"#m c #e69594", -".s c #e69d94", -"#v c #e6ded5", -"#i c #e6e6ee", -".z c #ee2829", -".t c #ee2839", -".m c #ee3029", -".r c #ee3039", -".Y c #ee3829", -"#a c #ee3839", -".y c #ee3852", -".I c #ee4839", -".b c #ee5052", -".a c #ee6152", -".k c #ee616a", -".# c #ee717b", -".i c #ee797b", -".L c #ee957b", -".l c #ee9594", -".F c #eebebd", -".e c #eeded5", -"#c c #eee6d5", -".c c #eeeeee", -".f c #f6716a", -".q c #f6cebd", -"#t c #f6d6d5", -".N c #ff697b", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQt.#.a.b.#.cQtQtQtQtQtQtQtQtQtQtQt.d.b.b.b.eQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt.f.g.b.d.h.i.b.jQtQtQtQtQtQtQtQt.#.b.k.l.h.f.m.gQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQt.n.o.p.f.h.c.e.b.m.m.qQtQtQtQtQt.g.g.r.s.c.e.l.b.m.tQtQtQtQtQtQtQt", -"QtQtQtQtQtQt.h.o.o.u.v.f.s.e.c.f.g.m.sQtQtQt.w.g.r.c.c.x.l.a.y.m.z.rQtQtQtQtQtQt", -"QtQtQtQtQtQt.A.B.B.o.C.k.i.D.E.c.F.p.g.eQt.w.g.k.c.G.x.H.#.b.I.m.r.z.G.xQtQtQtQt", -"QtQtQtQtQt.J.K.K.B.o.u.b.L.h.M.E.M.d.z.g.w.w.N.x.M.G.M.H.k.y.m.m.r.m.rQtQtQtQtQt", -"QtQtQtQtQt.O.P.Q.A.A.o.u.b.i.H.H.i.f.a.z.R.j.f.f.l.H.l.k.b.m.m.m.m.t.rQtQtQtQtQt", -"QtQtQtQtQt.S.T.P.K.U.V.W.o.p.k.a.a.b.y.m.R.u.X.b.b.k.y.Y.m.t.m.m.z.r.mQtQtQtQtQt", -"QtQtQtQtQt.Z.0.1.P.T.K.U.W.w.p.y.b.b.y.m.W.2.3.C.b.r.j.m.m.m.r.r.m.m.zQtQtQtQtQt", -"QtQtQtQtQt.4.5.P.6.P.U.V.o.W.w.p.b.b.b.m.W.u.C.b.p.j.z.r.m.z.m.t.m.r.mQtQtQtQtQt", -"QtQtQtQtQt.7.5.5.0.P.P.K.8.o.W.g.g.b.f.f.H.f.b.p.p.z.g.z.z.m.z.r.m.m.mQtQtQtQtQt", -"QtQtQtQtQt.9.S.5.5#..P.U.K.B.W.R.w.p.y.l.h.a.m##.g.p.z.z.z.r.r.m#a.r.mQtQtQtQtQt", -"QtQtQtQtQt#b.4.Z.6.P.Q.Q.8.W.W.R.R.w.w.g.p.w.g.p.g.g.m.z.m.r.m#a.b.m.mQtQtQtQtQt", -"QtQtQtQtQt#c.7.7.5.5.T.Q.U.8.W.W.o.o#d.w.w.g.g.g#e.z.g.m.m#a.I.b.b#a#fQtQtQtQtQt", -"QtQtQtQtQt#g#h.7.Z.5.P.P.A.K.W.B.o.o.o#d.w.g.g.g.g.t.j.r.I.y.a.f.a.m#iQtQtQtQtQt", -"QtQtQtQtQtQt#j#k.Z.Z.P.T.Q.U.B.o.B.w.o.w.w.w.w.p.g.p.r#a.b.f.i.s.k.pQtQtQtQtQtQt", -"QtQtQtQtQtQtQt#l.7.Z.5.P.Q.K.W.W.B.o.o.w.w.g.w.g.j.m.Y.b.f#m.h.d.y.eQtQtQtQtQtQt", -"QtQtQtQtQtQtQt#n#h.7.5.5.P.A.8.V.o.B.o.o.o.w.w.p.z#a.b.#.d.E.E.l.mQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt#h#k.S.5.6.P.V.W.W.B.R.o.w.w.u###a.b.i.h.c.c.M.m.cQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt#k.7#o.5.T.P.P.W.W.o.R.w.w.p.p.y.#.d.c.c.c.f#mQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.E#k#p.Z.5.P.V.U.V.W.o.o.w#q.y.f.d.G.c.c.d.bQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQt#j.7#o.Z.6.P.Q.K.U.W.o.u.C.a.l#r.c.c#m.YQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQt.M#p.5.Z.5.P.Q.A.B.W.u.X.k.H.D.M.f.bQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQt.e#s.5.6.6.1.Q.V.o.u.v.f#m.d.b.iQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQt#o.5.6.Q.P.U.W.p.b.#.L.b#tQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#b.5.6.P.K.W.j.f.f.YQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#u.6.A.2.f.Y.eQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#v.5.p.dQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const a_1_data[] = { -"40 40 93 2", -"Qt c None", -"#i c #200000", -"#k c #310000", -"## c #4a0000", -"#b c #4a0010", -"#h c #521000", -"#r c #521010", -"#t c #620800", -"#o c #620810", -".4 c #621010", -"#y c #622029", -".7 c #6a0800", -"#p c #6a0810", -".Y c #731000", -".8 c #731010", -"#e c #735952", -".Z c #7b1010", -"#f c #7b1029", -"#q c #941000", -".V c #941010", -"#c c #941029", -".0 c #941810", -".U c #941829", -"#w c #945952", -".1 c #9c1029", -".Q c #9c1810", -".H c #9c2010", -"#d c #a42029", -".C c #ac1829", -".J c #ac2010", -".I c #ac2029", -".P c #ac9d94", -".3 c #bd2010", -".s c #bd2029", -".5 c #bd3029", -".r c #bdb6bd", -"#a c #cd2010", -".t c #cd2029", -"#j c #cd2810", -"#s c #cd2839", -".D c #cd3029", -".j c #cd3039", -"#z c #cdaeac", -".6 c #d53829", -".G c #de2029", -".q c #de2839", -".u c #de3029", -".9 c #de3039", -"#x c #de3829", -".K c #de3839", -".i c #de3852", -"#. c #de4839", -".2 c #de5052", -".B c #de796a", -".W c #de95ac", -".E c #de9dac", -".l c #deaeac", -".h c #debebd", -".T c #decebd", -".S c #ded6d5", -"#n c #dedeee", -".m c #e6596a", -"#A c #e6716a", -".N c #e69594", -".A c #e69d94", -".d c #e6a5ac", -"#u c #e6ae94", -".L c #e6ded5", -".# c #e6e6ee", -".x c #ee2829", -".O c #ee2839", -".p c #ee3029", -".n c #ee3039", -".z c #ee3829", -"#g c #ee3839", -".g c #ee3852", -".w c #ee4839", -".b c #ee5052", -".c c #ee6152", -".a c #ee616a", -".f c #ee717b", -".R c #ee797b", -".X c #ee957b", -".o c #ee9594", -"#v c #eeaeac", -".e c #eebebd", -".M c #eeded5", -".y c #eee6d5", -".v c #eeeeee", -"#l c #f6596a", -".k c #f6716a", -"#m c #f6cebd", -".F c #f6d6d5", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.#.a.b.c.dQtQtQtQtQtQtQtQtQtQtQtQt.e.f.g.g.e.hQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt.i.j.k.l.l.k.g.mQtQtQtQtQtQtQtQt.h.n.c.o.l.o.p.q.#.hQtQtQtQtQtQt", -"QtQtQtQtQt.rQt.s.t.u.k.h.v.h.w.p.x.yQtQtQtQtQt.i.u.z.f.v.v.A.g.p.x.vQtQtQtQtQtQt", -"QtQtQtQtQtQt.B.C.s.D.i.k.E.v.v.a.p.x.FQtQtQt.t.G.n.e.v.h.o.b.b.p.p.n.hQtQtQtQtQt", -"QtQtQtQt.rQt.H.I.J.s.K.c.f.E.L.v.E.G.G.vQt.D.G.c.v.M.h.N.f.b.n.p.p.O.AQtQtQtQtQt", -"QtQtQtQtQt.P.Q.H.J.I.D.g.R.E.S.h.S.l.x.t.G.t.a.T.T.S.l.o.c.g.z.n.n.p.nQtQtQtQtQt", -"QtQtQtQtQt.U.V.Q.Q.J.I.s.b.k.W.E.o.k.c.x.t.D.k.X.o.E.o.c.b.p.p.n.x.p.pQtQtQtQtQt", -"QtQtQtQtQt.Y.Z.V.U.0.1.I.s.2.a.c.a.b.b.n.3.j.2.g.c.c.g.z.O.n.p.O.p.p.n.vQtQtQtQt", -"QtQtQtQtQt.4.Z.V.0.V.H.J.I.s.u.b.b.b.p.n.I.5.6.b.b.n.n.x.x.p.p.x.p.p.n.MQtQtQtQt", -"QtQtQtQtQt.7.8.Z.V.0.0.H.J.I.t.u.b.g.w.p.I.j.9#..i.p.G.p.O.p.n.p.p.p.p.vQtQtQtQt", -"QtQtQtQtQt##.8.8.Z.V.V.Q.J.s.I#a.u.b.k.b.k.2.c.n.G.u.x.p.x.n.p.n.p.n.p.yQtQtQtQt", -"QtQtQtQtQt#b.Y.8.8.V#c#d.H.J.I.s.t.u.b.l.M.k.u.j.u.u.n.x.n.n.p.g.g.p.nQtQtQtQtQt", -"QtQtQtQtQt#e#b.7#f.V.V.U.1.J.s.I.3.t.t.G.u.u.G.G.G.G.G.p.n.p#g.b.z#g.pQtQtQtQtQt", -"QtQtQtQtQt.L###h.8.8.V.V.Q.C.I.3.s.s.t.s.t.t.u.G.u.q.x.n.p.g.b.b.b.b.wQtQtQtQtQt", -"QtQtQtQtQt.r#i##.4.Y#c.V.U.H.J.J.J.s.s.t#j.D.G.u.G.u.p#g.b.b.a.a.k.n.MQtQtQtQtQt", -"QtQtQtQtQtQt.P#k.4.4.8#c.0.H.J.I.3.3.t.t.t.G.t.G.u.n.p#g.c.f.o.N.a.GQtQtQtQtQtQt", -"QtQtQtQtQtQt.r#i#b.8.Y.V.0.0.H.C.I.s.3.t.t.D.t.u.9.n.b.c.X.E.l.E#l#mQtQtQtQtQtQt", -"QtQtQtQtQtQtQt.P#k##.8.8.V.0.1.C.s.J.s.3.t.t.G.u.z.w.c.o.l.L#n.A.pQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt#i###o.8.8.V.U.H.C.I.s.s.t.t.q.9.b.c.W.h.v.v.M.b.vQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt#k#b#p.Y#q.V.H.Q.J.s.I.t.t.u#g.c.o.h.v.v.v.R.AQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.S###r.8.8.Z.0.1.1.I.J.s#s.K.b.k.l.v.v.v.A#lQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQt.P#b#t.4.Z.0.0#d.I.J.I.D.K.c.X.T.v.v#u.pQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQt.S##.8#t.Z#q.H.1.I.s.j#..k.W.S.S.N.2QtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQt.L#r.8.8.Z.U.H.J.I.D.g.k.l.h.k.RQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQt#b.8.8.V#c.I.I.i.b.o.E.a#vQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#w.8.8.0#d.I#x.f.X.g.rQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.L#y.Z.0.D.f.b.EQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#z.Z.u#AQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const a_2_data[] = { -"40 40 89 2", -"Qt c None", -"#m c #200000", -"#i c #310000", -"#c c #4a0000", -"#e c #4a0010", -"#q c #521000", -"#f c #521010", -".9 c #620800", -".8 c #621010", -"#j c #622029", -".Y c #731000", -".R c #731010", -"#n c #735952", -"#. c #7b1010", -".2 c #7b1029", -".N c #8b3039", -"#u c #8b616a", -".Z c #941000", -".S c #941010", -".3 c #941029", -".T c #941810", -".0 c #941829", -"#w c #945952", -"## c #9c1029", -".O c #9c1810", -".U c #9c2010", -".I c #a42029", -"#g c #ac1810", -"#a c #ac1829", -".5 c #ac2010", -".B c #ac2029", -"#h c #ac9d94", -".V c #bd2010", -".r c #bd2029", -".W c #bd3029", -".6 c #bd3039", -"#l c #bdb6bd", -".h c #cd2029", -".y c #cd3029", -".7 c #cd3039", -"#v c #cdaeac", -".K c #de2029", -".E c #de2839", -".D c #de3029", -".s c #de3039", -".4 c #de3829", -"#t c #de3839", -".C c #de3852", -"#b c #de4839", -".L c #de5052", -".J c #de796a", -".P c #de95ac", -".# c #de9dac", -".k c #deaeac", -".F c #debeac", -".Q c #debebd", -".o c #decebd", -".j c #ded6d5", -"#o c #dedeee", -"#r c #dee6ee", -".x c #e6596a", -"#k c #e69594", -".w c #e69d94", -".q c #e6a5ac", -"#p c #e6ded5", -".A c #ee2829", -".p c #ee2839", -".a c #ee3029", -".n c #ee3039", -".i c #ee3829", -".X c #ee3839", -".H c #ee3852", -".c c #ee4839", -".b c #ee5052", -".f c #ee6152", -".z c #ee616a", -".g c #ee717b", -".t c #ee797b", -".G c #ee8d94", -".M c #ee957b", -".d c #ee9594", -".1 c #eeaeac", -".e c #eebebd", -".m c #eeded5", -"#d c #eee6d5", -".v c #eeeeee", -".l c #f6716a", -"#s c #f6cebd", -".u c #f6d6d5", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.#.a.b.c.dQtQtQtQtQtQtQtQtQtQtQtQt.e.f.b.a.gQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt.h.i.d.j.k.g.b.lQtQtQtQtQtQtQtQt.m.n.l.d.o.#.b.p.qQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQt.r.h.s.t.u.v.w.i.n.pQtQtQtQtQtQt.x.y.n.z.v.v.#.z.a.A.qQtQtQtQtQtQt", -"QtQtQtQtQtQt.B.r.B.y.C.f.w.v.v.i.D.pQtQtQtQt.C.D.E.w.v.F.G.z.H.i.p.AQtQtQtQtQtQt", -"QtQtQtQtQt.u.I.B.B.r.C.b.l.#.j.v.J.K.AQtQt.L.h.D.v.m.k.M.l.b.n.n.a.A.HQtQtQtQtQt", -"QtQtQtQtQt.N.O.O.I.B.h.C.g.P.k.Q.o.w.D.h.L.h.z.o.o.Q.k.M.z.b.n.a.A.a.aQtQtQtQtQt", -"QtQtQtQtQt.R.S.T.U.U.V.W.L.l.d.#.d.t.f.A.h.D.g.d.P.P.d.f.H.X.a.p.n.p.n.vQtQtQtQt", -"QtQtQtQtQt.Y.Z.S.0.T.U.B.r.L.f.z.f.f.b.a.r.y.b.f.z.l.H.X.a.A.n.n.a.a.n.1QtQtQtQt", -"QtQtQtQtQt.R.Z.2.T.3.O.O.B.r.4.b.b.H.c.a.5.6.7.H.b.X.a.a.A.A.a.a.p.a.a.dQtQtQtQt", -"QtQtQtQtQt.8.R.S.0.T.U.O.5.B.h.D.b.b.H.i.r.y.D.b.s.n.A.n.A.a.n.a.a.n.a.dQtQtQtQt", -"QtQtQtQtQt.9.R#..S.0.T###a.B.5.h.a.f.b.c.C#b.f.X.D.D.K.n.a.a.a.a.n.n.a.1QtQtQtQt", -"QtQtQtQtQt#c.Y.R.Y.U.S.I.I.5.r.r.h.D.f.o.v.M.i.D.K.K.a.A.a.a.X.n.X.X.a#dQtQtQtQt", -"QtQtQtQtQt#e#f.8.Y.Z.T.T.U#g.5.B.h.h.h.a.s.K.D.K.D.A.E.a.a.X.n.c.i.c.aQtQtQtQtQt", -"QtQtQtQtQt#h#c.9.R.S.T.0.S.U.B.V.r.r.r.h.h.K.K.K.K.D.a.n.H.i.b.b.f.b.AQtQtQtQtQt", -"QtQtQtQtQtQt#i#c.R#..S.T.T.U.5.5.5.r.r.h.h.h.D.K.D.a.X.c.b.b.z.z.g.b.qQtQtQtQtQt", -"QtQtQtQtQtQt#j#c.8.R#..S.S.S##.B.V.5.h.h.h.h.h.D.D.a.X.b.z.l.M#k.t.aQtQtQtQtQtQt", -"QtQtQtQtQtQt#l#m#f.R.R.3.S.T.U.B.B.V.r.h.h.h.D.D.a.H.b.z.d#k.k.k.l.d#lQtQtQtQtQt", -"QtQtQtQtQtQtQt#n#c.8.9#..S.S.U##.5.B.V.r.h.h.D.D.X.b.l.d.k.j#o.k.aQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt#m#c.R.Y.S.S.0.U.5.5.B.r.h.h.D.X.H.l#k.k#p.v.v.z.mQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt#o#i#q.R.R#..S.3.U#g.B.B.r.h.D.c.f.d.k#r.v.v.k.fQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt#h#e#q.R.R.Z.T.I##.5.r.r.D.s.b.l.##p.v.v#s.HQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQt#n#e.8.8.S.S.S###a.5.r.y#t.f.t.F.v.v#s.nQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQt#u#c.Y.R.S.3.O.U.B.B.y.L.z#k.j#d.Q.aQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQt#l#f.R.Y.S.U.O.5.r.y.H.l.#.j.#.LQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQt#p#e.R.R.S.U.I.B.y.f.d.k#k.tQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.8.R.R##.I.r.4.g#k.b.uQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#v.9.S.I.h.l.l.zQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#w#..y.H.vQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.uQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const a_3_data[] = { -"40 40 89 2", -"Qt c None", -"#m c #200000", -"#o c #310000", -"#i c #4a0000", -"#g c #4a0010", -"#r c #521010", -"#k c #523039", -"#l c #620800", -"#. c #621010", -"#v c #622029", -"#p c #6a0810", -".5 c #731000", -".0 c #731010", -".6 c #7b1010", -"#b c #7b1029", -"#u c #7b2829", -"#s c #941000", -".V c #941010", -".W c #941029", -".7 c #941810", -".4 c #941829", -"#j c #9c1029", -".8 c #9c1810", -".O c #9c2010", -".X c #a42029", -"#c c #ac1810", -".P c #ac1829", -".Q c #ac2010", -".M c #ac2029", -"#n c #ac9d94", -"## c #b42839", -"#d c #bd2010", -".D c #bd2029", -"#e c #bd3039", -".N c #bd8d7b", -".# c #bdb6bd", -"#t c #cd2010", -".w c #cd2029", -".E c #cd3029", -".1 c #cd3039", -".S c #cdaeac", -".I c #de2029", -"#a c #de2839", -".k c #de3029", -".u c #de3039", -".9 c #de3839", -".F c #de3852", -"#f c #de4839", -".p c #de5052", -".v c #de796a", -".q c #de95ac", -".j c #de9dac", -".n c #deaeac", -".K c #deb6bd", -".l c #debeac", -".e c #debebd", -".r c #decebd", -".m c #ded6d5", -"#q c #dedeee", -".i c #e6596a", -".T c #e69594", -".B c #e69d94", -".R c #e6a5ac", -".G c #e6ded5", -".o c #e6e6ee", -".U c #ee2829", -".2 c #ee2839", -".C c #ee3029", -".t c #ee3039", -".Y c #ee3829", -".J c #ee3839", -".h c #ee3852", -".z c #ee4839", -".b c #ee5052", -".g c #ee6152", -".y c #ee616a", -".c c #ee717b", -".L c #ee797b", -".Z c #ee8d94", -".a c #ee957b", -".f c #ee9594", -"#h c #eeaeac", -".3 c #eebebd", -".d c #eeded5", -".A c #eee6d5", -".x c #eeeeee", -".s c #f6716a", -"#w c #f6cebd", -".H c #f6d6d5", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.a.b.b.c.dQt.eQtQtQtQtQtQtQtQtQtQtQt.f.g.h.i.dQtQtQtQtQtQtQtQt", -"QtQtQtQtQt.#Qt.j.k.b.l.m.n.c.h.oQtQtQtQtQtQtQtQtQt.p.g.q.r.r.s.t.uQtQtQtQtQtQtQt", -"QtQtQtQtQtQt.v.w.u.s.n.x.d.y.z.t.cQtQtQtQtQtQt.A.u.t.b.B.x.x.B.b.t.CQtQtQtQtQtQt", -"QtQtQtQtQt.r.D.D.E.F.s.j.G.x.y.C.C.pQtQtQtQt.H.w.I.J.m.x.K.L.g.h.C.t.CQtQtQtQtQt", -"QtQtQtQtQt.M.M.M.D.E.b.y.f.n.x.n.k.I.LQtQt.x.I.I.y.x.r.q.c.y.b.t.C.C.C.HQtQtQtQt", -"QtQtQtQt.N.O.P.Q.M.E.F.s.c.q.n.e.r.C.I.RQt.w.w.f.l.S.j.T.s.b.h.J.C.U.C.UQtQtQtQt", -"QtQtQtQt.V.W.X.O.M.Q.k.b.s.T.T.f.j.a.Y.I.I.k.c.f.f.q.f.Z.s.b.C.t.C.C.C.tQtQtQtQt", -"QtQtQtQt.0.V.V.V.X.O.D.E.h.s.s.y.y.y.g.C.w.1.b.g.y.s.y.g.h.C.t.C.2.C.U.C.3QtQtQt", -"QtQtQtQt.0.V.4.W.O.X.M.M.w.k.b.b.b.h.z.t.D.E.u.p.b.b.b.h.t.2.C.C.t.2.C.C.TQtQtQt", -"QtQtQtQt.5.6.W.7.W.8.M.D.D.w.k.h.b.Y.J.t.M.E.k.9.z.9.C.I.C.t.U.U.C.t.C.t.cQtQtQt", -"QtQtQtQt#..0.6.V.7.8.O.M.M.Q.w.u.b.h.Y.t.D##.E.9.k.k.k#a.C.U.C.t.U.C.C.t.cQtQtQt", -"QtQtQtQt.5.0#b.6.4.8#c.M.Q#d.D.I.C.b.h.h#e.k.F#f.C.k.U.U.U.t.C.t.C.t.t.C.LQtQtQt", -"QtQtQtQt#g.5.0.V.7.7.8.X.Q.M.D.w.I.z.s.R.x.L.b.w.I.k#a.U.C.U.t.t.Y.Y.h.t#hQtQtQt", -"QtQtQtQt#i#..0.6.W.7#j#c.Q.M.D#d.w.w.C.b.b.h.I.I.k.I.I.U.2.t.C.J.z.z.C.t.dQtQtQt", -"QtQtQtQt#k#i#l.6.7.W.8.8.M.M.Q.D.D.w.w.w.I.w.E.I.I.k.C.U.C.t.t.z.h.b.b.UQtQtQtQt", -"QtQtQtQt.m#i#..0.5.7.4.O.O.Q.Q.M.D.w.Q.w.w.w.I.k.k.I.k.C.h.Y.b.b.g.s.b.bQtQtQtQt", -"QtQtQtQt.##m#i.0.0.V.7.V#j.P.M.M#d.D.D.w.w.w.w.I.k.k.t.z.b.b.b.c.s.c.h.xQtQtQtQt", -"QtQtQtQtQt#n#o#p.0.V.V.4.8.X#c#d.M.D#d.w.w.w.I.I.k.t.t.z.b.y.s.T.j.a.kQtQtQtQtQt", -"QtQtQtQtQtQt#m#i#..6.V.W.O#j.Q.M.M.Q.D#d.w.w.k.I.k.J.b.b.y.a.f.n.l.b.dQtQtQtQtQt", -"QtQtQtQtQtQt.##o#.#..V.W.7.8.M.Q.Q.D.Q.w.w.E.I.k.u.Y.b.s.f.j.r#q.n.CQtQtQtQtQtQt", -"QtQtQtQtQtQtQt#o#g#..6.6.7.O#j.P.P.Q.Q.D.w.w.E.k.J.b.y.a.j.G.x.A.zQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt#o#i#..6.4.V.7.O#c.Q.M.D.D.E.u.F.h.g.L.j#q.x.x.f#hQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt.G#r#r#l#s.W.4#j.P.Q.M.Q#t.1.k.k.b.c.f.m.x.x.R.LQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.m#i#..0.0.V.V.O#c.M.D.D.E.k.b.g.a.l.x.x.j.pQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQt.G#r#p#.#s.V#j.8.Q.M.D.w.k.b.s.j.G#q.f.sQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQt#i.0.0.6.W.O.Q.D.M.E#f.g.T.n.r.y.nQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQt#r.0.0.V.4.8.M.M.1.h.s.q.j.b.oQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQt#n#..0.V.O.Q.M.E.g.a.s.bQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#u.6.V.8.D.b.s.h.HQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#v.8##.h.3QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.A#wQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const a_4_data[] = { -"40 40 198 2", -"Qt c None", -"aN c #200000", -"aJ c #290000", -"aC c #310000", -"aL c #311829", -"aM c #4a0000", -"aY c #4a0010", -"ay c #4a0800", -"aT c #520800", -"a5 c #521000", -"aK c #521010", -"aP c #523039", -"as c #5a0800", -"aD c #5a0810", -"aU c #5a1010", -"aZ c #620800", -"an c #620810", -"az c #621010", -"ac c #622029", -"aG c #6a0800", -"aQ c #6a0810", -"ai c #6a1000", -"at c #6a1010", -"ad c #731000", -"ao c #731010", -"aF c #735952", -"#X c #7b1010", -"#K c #7b1029", -"ae c #7b1810", -"b. c #7b2829", -"#7 c #8b1010", -"aj c #8b1810", -"ba c #8b3039", -"ah c #8b5952", -"am c #8b596a", -"a1 c #8b616a", -"#8 c #941000", -"#L c #941010", -"#Y c #941029", -"#s c #941810", -"#M c #941829", -"a8 c #945952", -"aO c #9c1029", -"#A c #9c1810", -"#0 c #9c1829", -"#Z c #9c2010", -"#W c #9c6152", -".8 c #a41810", -"ak c #a41829", -"#t c #a42010", -"#9 c #a42029", -"aA c #ac1810", -"af c #ac1829", -"#j c #ac2010", -"a. c #ac2029", -"bc c #ac5952", -"aX c #ac9d94", -"ag c #b42010", -".R c #b42029", -"#k c #b42839", -"au c #bd2010", -".S c #bd2029", -"a2 c #bd2810", -"#O c #bd2829", -"#B c #bd3029", -"a9 c #bd3039", -"#i c #bd8d7b", -"ar c #bdb6bd", -"aH c #cd2010", -".F c #cd2029", -"aE c #cd2810", -"#1 c #cd2829", -"#4 c #cd2839", -".9 c #cd3029", -".T c #cd3039", -"#J c #cdaeac", -"#d c #d52029", -"aI c #d52810", -"#w c #d52829", -"#2 c #d52839", -"aV c #d53029", -"#F c #d53039", -"#l c #d53829", -"#. c #d53839", -".2 c #de2029", -".n c #de2829", -"aq c #de2839", -".G c #de3029", -"#C c #de3039", -"a3 c #de3829", -"#N c #de3839", -"a6 c #de3852", -"al c #de4839", -".D c #de4852", -".7 c #de5052", -"aB c #de796a", -"#c c #de95ac", -".s c #de9dac", -".E c #dea5ac", -".W c #deaeac", -"#o c #deb6ac", -".z c #deb6bd", -"aS c #debeac", -".M c #debebd", -".B c #decebd", -".r c #ded6d5", -"aR c #dedeee", -"#f c #dee6ee", -"#v c #e62029", -".Z c #e62829", -"#6 c #e62839", -".C c #e63029", -"#5 c #e63039", -"ax c #e63829", -".P c #e63839", -"#P c #e64839", -"#m c #e64852", -"b# c #e65052", -".L c #e6596a", -".# c #e6696a", -"#I c #e6716a", -"#p c #e68d94", -".e c #e69594", -".v c #e69d94", -".1 c #e6a5ac", -".p c #e6ae94", -".m c #e6aeac", -"ap c #e6bebd", -".3 c #e6cebd", -".I c #e6ded5", -".A c #e6e6ee", -"#U c #ee2829", -".0 c #ee2839", -"#T c #ee3029", -".O c #ee3039", -"#S c #ee3829", -".k c #ee3839", -".x c #ee3852", -"#3 c #ee4839", -"#Q c #ee4852", -"#D c #ee5052", -"## c #ee5952", -"aW c #ee6152", -"#e c #ee616a", -"av c #ee717b", -".b c #ee797b", -".N c #ee8d7b", -".h c #ee8d94", -".i c #ee957b", -".c c #ee9594", -"a7 c #eeaeac", -".f c #eebebd", -".Q c #eeded5", -"bd c #eee6d5", -".q c #eeeeee", -"#r c #f62829", -"aa c #f62839", -"#h c #f63029", -"#V c #f63039", -"a# c #f63829", -"#H c #f63839", -".a c #f63852", -"#R c #f64839", -"#u c #f64852", -"#G c #f65052", -".g c #f6596a", -".Y c #f6696a", -"#q c #f6716a", -".4 c #f6717b", -"#n c #f6797b", -".V c #f68d7b", -"bb c #f6cebd", -".l c #f6d6d5", -".w c #f6eeee", -"#z c #f6f6ee", -".X c #f6f6ff", -"a0 c #f6ffee", -"ab c #ff2829", -"#y c #ff2839", -".5 c #ff3029", -".6 c #ff3039", -"aw c #ff3829", -".K c #ff3839", -".J c #ff4839", -".u c #ff4852", -".o c #ff5052", -".j c #ff5952", -"#E c #ff596a", -".d c #ff6152", -".U c #ff616a", -".y c #ff6952", -"#a c #ff696a", -".t c #ff697b", -"#x c #ff716a", -"#g c #ff717b", -"#b c #ff796a", -"a4 c #ff797b", -".H c #ffffff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt.#.a.b.c.d.eQtQtQtQtQtQtQtQtQtQtQtQt.f.g.h.i.j.k.lQtQtQtQtQtQtQt", -"QtQtQtQtQtQt.m.n.o.p.q.r.s.t.u.vQtQtQtQtQtQtQtQt.w.x.y.e.z.A.B.y.C.DQtQtQtQtQtQt", -"QtQtQtQtQt.E.F.G.d.s.q.H.I.y.J.K.LQtQtQtQtQtQt.f.G.k.o.E.H.H.M.N.u.O.PQtQtQtQtQt", -"QtQtQtQt.Q.R.S.T.D.U.V.W.q.X.Y.Z.0.OQtQtQtQt.1.2.n.k.3.X.B.v.4.j.u.5.6.7QtQtQtQt", -"QtQtQtQt.8.R.R.9#.###a#b#c.z.q.m.G.C.7QtQt.l#d.2#e#f.B.E.i#g.U.o.J.6.5#h.QQtQtQt", -"QtQtQt#i.8#j.R#k#l#m#a#n.e.e.s.W#o.k.n.7.Q#d.n#p#o.E.s.e.h#q.U.u.K.6#h.5#rQtQtQt", -"QtQtQt#s.8#t#t.R.T.D.d#a#n.N.b#b#n#b#u.n#v#w#a#a#x#n.N.N.4#a.o.J.5#h#h#y.5#zQtQt", -"QtQtQt#s#A.8.8#t.R#B#C#D#E.U.d.j.o.o.o.6.F#F#m#D#G.j.d.U.j.u.K#H#h#r.5.6.6#IQtQt", -"QtQt#J#K#L#s#M.8#j.R.F#C#N#u.u.u.J#H.K.K#O.T#N#C#P#Q#Q#R#S.O#T#U#V#U#r.5.5.OQtQt", -"QtQt#W#X#L#Y#Z#0#j.R.S#1#2#N#H#H#3.k#V#h.R#B#4#C#N#C#5#5.O#6#U.0#T#V.5.5.5#VQtQt", -"QtQt#W#X#7#8#s#t#9a..R.R#1#w.Pa##S.k#h.O.R#O#1#F#C.G.G#6.Z#T#U#U#Uaa#h.6.5abQtQt", -"QtQtacadae#7#s#Aafa.ag.R.F#d.n.k.a.aa##h#O#O.9#.#N.G#C.C.Z#U#U#U#Uaa#h.6#y#hQtQt", -"QtQtahai#Kaj#s#tak#j.R.R.S#1#w#C#H.u.J.K.9#1#Nal.G.G.n.n.Z.Z#T.0aa#h#h.6.6aaQtQt", -"QtQtamanao#X#s#A.8aga..R.R.S#1#w.G#R.U.vap#a#m#Caq.n.n.Z.n.C.0#U#V#V.6.6.6#rQtQt", -"QtQtarasat#X#s#0.8#t#j.R.Rau.S#1#1.G#Q.dav#Qaq#C.n.naq.C#v#5#T#V#Vaw.J.K.6axQtQt", -"QtQtQtayazaoaj#s#AakaA#j.R.Rau.S.F#w#2.n.naq#w#w.n.n.n.Z.Z#U#T.O#H.J.J.u.KaBQtQt", -"QtQtQtaCaDat#7#s#0#t.8af.Rag.Rau.S.FaE.F#d#d.2#w.n.n.n.Z#6#T.O#H.J.u.j.j#V.wQtQt", -"QtQtQtaFayaG#X#s#s#Zakafa..R.R.Rau.FaH.FaI#d#d#w.n.n.n#6.O.O#H.J.o.d.t#E.ZQtQtQt", -"QtQtQtQtaJaKao#7#s#0akafafag.Rau.Rau.S#1#w#d#d#d.n.n.n#5#T#H#u.o#a#n.e.j.NQtQtQt", -"QtQtQtQtaLaMaiao#L#s#tak#j.R.Rag.S.S.FaH#w#w#d.n.n.n.G#T.k.J.o#a#p.s.e.OQtQtQtQt", -"QtQtQtQt.waNasataj#saO.8afaA.R.Rag.S.F.FaE.F.2#w.n#C#5.x.J.o#a#p.W.z#q#IQtQtQtQt", -"QtQtQtQtQtaPayaQ#Xaj#s#0.8aAa..Ragau.F.S.F#1#daq.n.G.k#R.o#a.i#oaRaS.kQtQtQtQtQt", -"QtQtQtQtQtQtaJaTai#X#L#AakaA#j.R.Rau.S.S.F#w#w#2.G#5.k.o#a.V#o.X#z.Y.lQtQtQtQtQt", -"QtQtQtQtQtQt.AaCaUai#7#L#Z.8a.#j.R.Rau.S.F#1#waV#C#3#u.U.e.M#z.H.1aWQtQtQtQtQtQt", -"QtQtQtQtQtQtQtaXaYaZao#7#s#A#t#ta..R.Rau.S#w#w.G#P.J.y.V#oa0.H.3#HQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQta1aYaGaoaj#Y#0.8a.agag.Ra2#1#wa3#Q.da4.W#z.Hap#VQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtaXa5aiaoaj#s#0#t#j.Rag.S#1.Ga6#G.4.saR.q.1.kQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQt.raUataoaj#L#0.8#j.R.S#1aV#m.d.i#o.Mav##QtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtaUataoaj#s#A.8.R.R.9#F#Q.t#c.v.oa7QtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQta8ad#X#X#s#0a..Ra9#NaW.4.d#TQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQt#zb.#X#7#M#9.RaVb#.j.0apQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#zba#7#A.R#m.PbbQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbc#FbdQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; + "14 16 25 1", + " c None", + ". c #B3B3B3", + "+ c #FFFFFF", + "@ c #ACACAC", + "# c #FDFDFD", + "$ c #FCFCFC", + "% c #FBFBFB", + "& c #FAFAFA", + "* c #F9F9F9", + "= c #F7F7F7", + "- c #F6F6F6", + "; c #F4F4F4", + "> c #F1F1F1", + ", c #F8F8F8", + "' c #F5F5F5", + ") c #F2F2F2", + "! c #ECECEC", + "~ c #F3F3F3", + "{ c #EEEEEE", + "] c #EBEBEB", + "^ c #FEFEFE", + "/ c #EDEDED", + "( c #EFEFEF", + "_ c #F0F0F0", + ": c #BEBEBE", + "............. ", + ".+++++++++++. ", + "@+++++##$$%&. ", + "@++++#%*=-;>. ", + "@+++#$&,-')!. ", + "@+++#&*='~{]. ", + "@++^$&=-~{!/. ", + "@^^$&,')({{(. ", + "@==-'~)____>. ", + "@~~~~~)____>. ", + "@--------:::. ", + "@,,,,,,--:!. ", + "@&&&&&&--:. ", + "@......... ", + " ", + " " +}; + + +static const char* const v_back_icon_data[] = { + "16 16 33 1", + " c None", + ". c #2E59A4", + "+ c #2D58A3", + "@ c #3D66AD", + "# c #90AAD6", + "$ c #3660A9", + "% c #6085C2", + "& c #BDCDE9", + "* c #C6D3EB", + "= c #7C9ACD", + "- c #3C64AC", + "; c #335DA7", + "> c #3A63AB", + ", c #B1C4E3", + "' c #C7D5EC", + ") c #91ACD7", + "! c #94ACD7", + "~ c #8DA9D5", + "{ c #85A2D2", + "] c #8CA9D4", + "^ c #83A1D1", + "/ c #3862AA", + "( c #355FA8", + "_ c #4169AF", + ": c #4870B3", + "< c #5178B8", + "[ c #6B91C8", + "} c #7093C9", + "| c #4069AF", + "1 c #4B74B6", + "2 c #4A73B5", + "3 c #305AA5", + "4 c #3760A9", + " ", + " ", + " .. ", + " +@#$ ", + " ..%&*=-;.. ", + "..>,')!~{]^/. ", + " +..(-__:<[}|. ", + " +... .;123. ", + " +. .|4. ", + " .4(. ", + " ..3. ", + " .... ", + " .... ", + " ... ", + " ", + " " +}; + + + +static const char* const a_0_data[] = { + "40 40 88 2", + "Qt c None", + "#l c #000000", + "#h c #200000", + "#k c #310000", + ".7 c #4a0000", + "#s c #4a0010", + "#p c #521000", + ".4 c #521010", + ".9 c #523039", + ".S c #620800", + "#o c #620810", + ".Z c #621010", + "#u c #622029", + ".0 c #731000", + ".5 c #731010", + ".6 c #7b1010", + ".O c #8b3039", + "#b c #8b616a", + ".1 c #941000", + ".P c #941010", + ".T c #941029", + ".Q c #941810", + "#. c #941829", + ".A c #9c1029", + ".V c #9c1810", + ".K c #9c2010", + ".U c #a42029", + ".8 c #ac1810", + ".B c #ac2010", + ".W c #ac2029", + ".n c #ac5952", + "#j c #ac9d94", + ".R c #bd2010", + ".o c #bd2029", + ".2 c #bd3029", + "#n c #bd8d7b", + "#g c #bdb6bd", + "#d c #cd2010", + ".w c #cd2029", + "#e c #cd2839", + ".u c #cd3029", + ".J c #cdaeac", + ".3 c #d53839", + ".g c #de2029", + "## c #de2839", + ".p c #de3029", + ".j c #de3039", + "#q c #de3829", + ".C c #de3839", + ".v c #de3852", + ".X c #de4839", + ".H c #de95ac", + ".d c #de9dac", + ".h c #deaeac", + "#r c #deb6bd", + ".D c #debeac", + ".x c #debebd", + ".M c #decebd", + ".E c #ded6d5", + ".G c #dedeee", + "#f c #e6596a", + "#m c #e69594", + ".s c #e69d94", + "#v c #e6ded5", + "#i c #e6e6ee", + ".z c #ee2829", + ".t c #ee2839", + ".m c #ee3029", + ".r c #ee3039", + ".Y c #ee3829", + "#a c #ee3839", + ".y c #ee3852", + ".I c #ee4839", + ".b c #ee5052", + ".a c #ee6152", + ".k c #ee616a", + ".# c #ee717b", + ".i c #ee797b", + ".L c #ee957b", + ".l c #ee9594", + ".F c #eebebd", + ".e c #eeded5", + "#c c #eee6d5", + ".c c #eeeeee", + ".f c #f6716a", + ".q c #f6cebd", + "#t c #f6d6d5", + ".N c #ff697b", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQt.#.a.b.#.cQtQtQtQtQtQtQtQtQtQtQt.d.b.b.b.eQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQt.f.g.b.d.h.i.b.jQtQtQtQtQtQtQtQt.#.b.k.l.h.f.m.gQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQt.n.o.p.f.h.c.e.b.m.m.qQtQtQtQtQt.g.g.r.s.c.e.l.b.m.tQtQtQtQtQtQtQt", + "QtQtQtQtQtQt.h.o.o.u.v.f.s.e.c.f.g.m.sQtQtQt.w.g.r.c.c.x.l.a.y.m.z.rQtQtQtQtQtQt", + "QtQtQtQtQtQt.A.B.B.o.C.k.i.D.E.c.F.p.g.eQt.w.g.k.c.G.x.H.#.b.I.m.r.z.G.xQtQtQtQt", + "QtQtQtQtQt.J.K.K.B.o.u.b.L.h.M.E.M.d.z.g.w.w.N.x.M.G.M.H.k.y.m.m.r.m.rQtQtQtQtQt", + "QtQtQtQtQt.O.P.Q.A.A.o.u.b.i.H.H.i.f.a.z.R.j.f.f.l.H.l.k.b.m.m.m.m.t.rQtQtQtQtQt", + "QtQtQtQtQt.S.T.P.K.U.V.W.o.p.k.a.a.b.y.m.R.u.X.b.b.k.y.Y.m.t.m.m.z.r.mQtQtQtQtQt", + "QtQtQtQtQt.Z.0.1.P.T.K.U.W.w.p.y.b.b.y.m.W.2.3.C.b.r.j.m.m.m.r.r.m.m.zQtQtQtQtQt", + "QtQtQtQtQt.4.5.P.6.P.U.V.o.W.w.p.b.b.b.m.W.u.C.b.p.j.z.r.m.z.m.t.m.r.mQtQtQtQtQt", + "QtQtQtQtQt.7.5.5.0.P.P.K.8.o.W.g.g.b.f.f.H.f.b.p.p.z.g.z.z.m.z.r.m.m.mQtQtQtQtQt", + "QtQtQtQtQt.9.S.5.5#..P.U.K.B.W.R.w.p.y.l.h.a.m##.g.p.z.z.z.r.r.m#a.r.mQtQtQtQtQt", + "QtQtQtQtQt#b.4.Z.6.P.Q.Q.8.W.W.R.R.w.w.g.p.w.g.p.g.g.m.z.m.r.m#a.b.m.mQtQtQtQtQt", + "QtQtQtQtQt#c.7.7.5.5.T.Q.U.8.W.W.o.o#d.w.w.g.g.g#e.z.g.m.m#a.I.b.b#a#fQtQtQtQtQt", + "QtQtQtQtQt#g#h.7.Z.5.P.P.A.K.W.B.o.o.o#d.w.g.g.g.g.t.j.r.I.y.a.f.a.m#iQtQtQtQtQt", + "QtQtQtQtQtQt#j#k.Z.Z.P.T.Q.U.B.o.B.w.o.w.w.w.w.p.g.p.r#a.b.f.i.s.k.pQtQtQtQtQtQt", + "QtQtQtQtQtQtQt#l.7.Z.5.P.Q.K.W.W.B.o.o.w.w.g.w.g.j.m.Y.b.f#m.h.d.y.eQtQtQtQtQtQt", + "QtQtQtQtQtQtQt#n#h.7.5.5.P.A.8.V.o.B.o.o.o.w.w.p.z#a.b.#.d.E.E.l.mQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQt#h#k.S.5.6.P.V.W.W.B.R.o.w.w.u###a.b.i.h.c.c.M.m.cQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQt#k.7#o.5.T.P.P.W.W.o.R.w.w.p.p.y.#.d.c.c.c.f#mQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQt.E#k#p.Z.5.P.V.U.V.W.o.o.w#q.y.f.d.G.c.c.d.bQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQt#j.7#o.Z.6.P.Q.K.U.W.o.u.C.a.l#r.c.c#m.YQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQt.M#p.5.Z.5.P.Q.A.B.W.u.X.k.H.D.M.f.bQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQt.e#s.5.6.6.1.Q.V.o.u.v.f#m.d.b.iQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQt#o.5.6.Q.P.U.W.p.b.#.L.b#tQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#b.5.6.P.K.W.j.f.f.YQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#u.6.A.2.f.Y.eQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#v.5.p.dQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt" +}; + +static const char* const a_1_data[] = { + "40 40 93 2", + "Qt c None", + "#i c #200000", + "#k c #310000", + "## c #4a0000", + "#b c #4a0010", + "#h c #521000", + "#r c #521010", + "#t c #620800", + "#o c #620810", + ".4 c #621010", + "#y c #622029", + ".7 c #6a0800", + "#p c #6a0810", + ".Y c #731000", + ".8 c #731010", + "#e c #735952", + ".Z c #7b1010", + "#f c #7b1029", + "#q c #941000", + ".V c #941010", + "#c c #941029", + ".0 c #941810", + ".U c #941829", + "#w c #945952", + ".1 c #9c1029", + ".Q c #9c1810", + ".H c #9c2010", + "#d c #a42029", + ".C c #ac1829", + ".J c #ac2010", + ".I c #ac2029", + ".P c #ac9d94", + ".3 c #bd2010", + ".s c #bd2029", + ".5 c #bd3029", + ".r c #bdb6bd", + "#a c #cd2010", + ".t c #cd2029", + "#j c #cd2810", + "#s c #cd2839", + ".D c #cd3029", + ".j c #cd3039", + "#z c #cdaeac", + ".6 c #d53829", + ".G c #de2029", + ".q c #de2839", + ".u c #de3029", + ".9 c #de3039", + "#x c #de3829", + ".K c #de3839", + ".i c #de3852", + "#. c #de4839", + ".2 c #de5052", + ".B c #de796a", + ".W c #de95ac", + ".E c #de9dac", + ".l c #deaeac", + ".h c #debebd", + ".T c #decebd", + ".S c #ded6d5", + "#n c #dedeee", + ".m c #e6596a", + "#A c #e6716a", + ".N c #e69594", + ".A c #e69d94", + ".d c #e6a5ac", + "#u c #e6ae94", + ".L c #e6ded5", + ".# c #e6e6ee", + ".x c #ee2829", + ".O c #ee2839", + ".p c #ee3029", + ".n c #ee3039", + ".z c #ee3829", + "#g c #ee3839", + ".g c #ee3852", + ".w c #ee4839", + ".b c #ee5052", + ".c c #ee6152", + ".a c #ee616a", + ".f c #ee717b", + ".R c #ee797b", + ".X c #ee957b", + ".o c #ee9594", + "#v c #eeaeac", + ".e c #eebebd", + ".M c #eeded5", + ".y c #eee6d5", + ".v c #eeeeee", + "#l c #f6596a", + ".k c #f6716a", + "#m c #f6cebd", + ".F c #f6d6d5", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQt.#.a.b.c.dQtQtQtQtQtQtQtQtQtQtQtQt.e.f.g.g.e.hQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQt.i.j.k.l.l.k.g.mQtQtQtQtQtQtQtQt.h.n.c.o.l.o.p.q.#.hQtQtQtQtQtQt", + "QtQtQtQtQt.rQt.s.t.u.k.h.v.h.w.p.x.yQtQtQtQtQt.i.u.z.f.v.v.A.g.p.x.vQtQtQtQtQtQt", + "QtQtQtQtQtQt.B.C.s.D.i.k.E.v.v.a.p.x.FQtQtQt.t.G.n.e.v.h.o.b.b.p.p.n.hQtQtQtQtQt", + "QtQtQtQt.rQt.H.I.J.s.K.c.f.E.L.v.E.G.G.vQt.D.G.c.v.M.h.N.f.b.n.p.p.O.AQtQtQtQtQt", + "QtQtQtQtQt.P.Q.H.J.I.D.g.R.E.S.h.S.l.x.t.G.t.a.T.T.S.l.o.c.g.z.n.n.p.nQtQtQtQtQt", + "QtQtQtQtQt.U.V.Q.Q.J.I.s.b.k.W.E.o.k.c.x.t.D.k.X.o.E.o.c.b.p.p.n.x.p.pQtQtQtQtQt", + "QtQtQtQtQt.Y.Z.V.U.0.1.I.s.2.a.c.a.b.b.n.3.j.2.g.c.c.g.z.O.n.p.O.p.p.n.vQtQtQtQt", + "QtQtQtQtQt.4.Z.V.0.V.H.J.I.s.u.b.b.b.p.n.I.5.6.b.b.n.n.x.x.p.p.x.p.p.n.MQtQtQtQt", + "QtQtQtQtQt.7.8.Z.V.0.0.H.J.I.t.u.b.g.w.p.I.j.9#..i.p.G.p.O.p.n.p.p.p.p.vQtQtQtQt", + "QtQtQtQtQt##.8.8.Z.V.V.Q.J.s.I#a.u.b.k.b.k.2.c.n.G.u.x.p.x.n.p.n.p.n.p.yQtQtQtQt", + "QtQtQtQtQt#b.Y.8.8.V#c#d.H.J.I.s.t.u.b.l.M.k.u.j.u.u.n.x.n.n.p.g.g.p.nQtQtQtQtQt", + "QtQtQtQtQt#e#b.7#f.V.V.U.1.J.s.I.3.t.t.G.u.u.G.G.G.G.G.p.n.p#g.b.z#g.pQtQtQtQtQt", + "QtQtQtQtQt.L###h.8.8.V.V.Q.C.I.3.s.s.t.s.t.t.u.G.u.q.x.n.p.g.b.b.b.b.wQtQtQtQtQt", + "QtQtQtQtQt.r#i##.4.Y#c.V.U.H.J.J.J.s.s.t#j.D.G.u.G.u.p#g.b.b.a.a.k.n.MQtQtQtQtQt", + "QtQtQtQtQtQt.P#k.4.4.8#c.0.H.J.I.3.3.t.t.t.G.t.G.u.n.p#g.c.f.o.N.a.GQtQtQtQtQtQt", + "QtQtQtQtQtQt.r#i#b.8.Y.V.0.0.H.C.I.s.3.t.t.D.t.u.9.n.b.c.X.E.l.E#l#mQtQtQtQtQtQt", + "QtQtQtQtQtQtQt.P#k##.8.8.V.0.1.C.s.J.s.3.t.t.G.u.z.w.c.o.l.L#n.A.pQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQt#i###o.8.8.V.U.H.C.I.s.s.t.t.q.9.b.c.W.h.v.v.M.b.vQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQt#k#b#p.Y#q.V.H.Q.J.s.I.t.t.u#g.c.o.h.v.v.v.R.AQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQt.S###r.8.8.Z.0.1.1.I.J.s#s.K.b.k.l.v.v.v.A#lQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQt.P#b#t.4.Z.0.0#d.I.J.I.D.K.c.X.T.v.v#u.pQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQt.S##.8#t.Z#q.H.1.I.s.j#..k.W.S.S.N.2QtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQt.L#r.8.8.Z.U.H.J.I.D.g.k.l.h.k.RQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQt#b.8.8.V#c.I.I.i.b.o.E.a#vQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#w.8.8.0#d.I#x.f.X.g.rQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.L#y.Z.0.D.f.b.EQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#z.Z.u#AQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt" +}; + +static const char* const a_2_data[] = { + "40 40 89 2", + "Qt c None", + "#m c #200000", + "#i c #310000", + "#c c #4a0000", + "#e c #4a0010", + "#q c #521000", + "#f c #521010", + ".9 c #620800", + ".8 c #621010", + "#j c #622029", + ".Y c #731000", + ".R c #731010", + "#n c #735952", + "#. c #7b1010", + ".2 c #7b1029", + ".N c #8b3039", + "#u c #8b616a", + ".Z c #941000", + ".S c #941010", + ".3 c #941029", + ".T c #941810", + ".0 c #941829", + "#w c #945952", + "## c #9c1029", + ".O c #9c1810", + ".U c #9c2010", + ".I c #a42029", + "#g c #ac1810", + "#a c #ac1829", + ".5 c #ac2010", + ".B c #ac2029", + "#h c #ac9d94", + ".V c #bd2010", + ".r c #bd2029", + ".W c #bd3029", + ".6 c #bd3039", + "#l c #bdb6bd", + ".h c #cd2029", + ".y c #cd3029", + ".7 c #cd3039", + "#v c #cdaeac", + ".K c #de2029", + ".E c #de2839", + ".D c #de3029", + ".s c #de3039", + ".4 c #de3829", + "#t c #de3839", + ".C c #de3852", + "#b c #de4839", + ".L c #de5052", + ".J c #de796a", + ".P c #de95ac", + ".# c #de9dac", + ".k c #deaeac", + ".F c #debeac", + ".Q c #debebd", + ".o c #decebd", + ".j c #ded6d5", + "#o c #dedeee", + "#r c #dee6ee", + ".x c #e6596a", + "#k c #e69594", + ".w c #e69d94", + ".q c #e6a5ac", + "#p c #e6ded5", + ".A c #ee2829", + ".p c #ee2839", + ".a c #ee3029", + ".n c #ee3039", + ".i c #ee3829", + ".X c #ee3839", + ".H c #ee3852", + ".c c #ee4839", + ".b c #ee5052", + ".f c #ee6152", + ".z c #ee616a", + ".g c #ee717b", + ".t c #ee797b", + ".G c #ee8d94", + ".M c #ee957b", + ".d c #ee9594", + ".1 c #eeaeac", + ".e c #eebebd", + ".m c #eeded5", + "#d c #eee6d5", + ".v c #eeeeee", + ".l c #f6716a", + "#s c #f6cebd", + ".u c #f6d6d5", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQt.#.a.b.c.dQtQtQtQtQtQtQtQtQtQtQtQt.e.f.b.a.gQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQt.h.i.d.j.k.g.b.lQtQtQtQtQtQtQtQt.m.n.l.d.o.#.b.p.qQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQt.r.h.s.t.u.v.w.i.n.pQtQtQtQtQtQt.x.y.n.z.v.v.#.z.a.A.qQtQtQtQtQtQt", + "QtQtQtQtQtQt.B.r.B.y.C.f.w.v.v.i.D.pQtQtQtQt.C.D.E.w.v.F.G.z.H.i.p.AQtQtQtQtQtQt", + "QtQtQtQtQt.u.I.B.B.r.C.b.l.#.j.v.J.K.AQtQt.L.h.D.v.m.k.M.l.b.n.n.a.A.HQtQtQtQtQt", + "QtQtQtQtQt.N.O.O.I.B.h.C.g.P.k.Q.o.w.D.h.L.h.z.o.o.Q.k.M.z.b.n.a.A.a.aQtQtQtQtQt", + "QtQtQtQtQt.R.S.T.U.U.V.W.L.l.d.#.d.t.f.A.h.D.g.d.P.P.d.f.H.X.a.p.n.p.n.vQtQtQtQt", + "QtQtQtQtQt.Y.Z.S.0.T.U.B.r.L.f.z.f.f.b.a.r.y.b.f.z.l.H.X.a.A.n.n.a.a.n.1QtQtQtQt", + "QtQtQtQtQt.R.Z.2.T.3.O.O.B.r.4.b.b.H.c.a.5.6.7.H.b.X.a.a.A.A.a.a.p.a.a.dQtQtQtQt", + "QtQtQtQtQt.8.R.S.0.T.U.O.5.B.h.D.b.b.H.i.r.y.D.b.s.n.A.n.A.a.n.a.a.n.a.dQtQtQtQt", + "QtQtQtQtQt.9.R#..S.0.T###a.B.5.h.a.f.b.c.C#b.f.X.D.D.K.n.a.a.a.a.n.n.a.1QtQtQtQt", + "QtQtQtQtQt#c.Y.R.Y.U.S.I.I.5.r.r.h.D.f.o.v.M.i.D.K.K.a.A.a.a.X.n.X.X.a#dQtQtQtQt", + "QtQtQtQtQt#e#f.8.Y.Z.T.T.U#g.5.B.h.h.h.a.s.K.D.K.D.A.E.a.a.X.n.c.i.c.aQtQtQtQtQt", + "QtQtQtQtQt#h#c.9.R.S.T.0.S.U.B.V.r.r.r.h.h.K.K.K.K.D.a.n.H.i.b.b.f.b.AQtQtQtQtQt", + "QtQtQtQtQtQt#i#c.R#..S.T.T.U.5.5.5.r.r.h.h.h.D.K.D.a.X.c.b.b.z.z.g.b.qQtQtQtQtQt", + "QtQtQtQtQtQt#j#c.8.R#..S.S.S##.B.V.5.h.h.h.h.h.D.D.a.X.b.z.l.M#k.t.aQtQtQtQtQtQt", + "QtQtQtQtQtQt#l#m#f.R.R.3.S.T.U.B.B.V.r.h.h.h.D.D.a.H.b.z.d#k.k.k.l.d#lQtQtQtQtQt", + "QtQtQtQtQtQtQt#n#c.8.9#..S.S.U##.5.B.V.r.h.h.D.D.X.b.l.d.k.j#o.k.aQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQt#m#c.R.Y.S.S.0.U.5.5.B.r.h.h.D.X.H.l#k.k#p.v.v.z.mQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQt#o#i#q.R.R#..S.3.U#g.B.B.r.h.D.c.f.d.k#r.v.v.k.fQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQt#h#e#q.R.R.Z.T.I##.5.r.r.D.s.b.l.##p.v.v#s.HQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQt#n#e.8.8.S.S.S###a.5.r.y#t.f.t.F.v.v#s.nQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQt#u#c.Y.R.S.3.O.U.B.B.y.L.z#k.j#d.Q.aQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQt#l#f.R.Y.S.U.O.5.r.y.H.l.#.j.#.LQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQt#p#e.R.R.S.U.I.B.y.f.d.k#k.tQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.8.R.R##.I.r.4.g#k.b.uQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#v.9.S.I.h.l.l.zQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#w#..y.H.vQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.uQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt" +}; + +static const char* const a_3_data[] = { + "40 40 89 2", + "Qt c None", + "#m c #200000", + "#o c #310000", + "#i c #4a0000", + "#g c #4a0010", + "#r c #521010", + "#k c #523039", + "#l c #620800", + "#. c #621010", + "#v c #622029", + "#p c #6a0810", + ".5 c #731000", + ".0 c #731010", + ".6 c #7b1010", + "#b c #7b1029", + "#u c #7b2829", + "#s c #941000", + ".V c #941010", + ".W c #941029", + ".7 c #941810", + ".4 c #941829", + "#j c #9c1029", + ".8 c #9c1810", + ".O c #9c2010", + ".X c #a42029", + "#c c #ac1810", + ".P c #ac1829", + ".Q c #ac2010", + ".M c #ac2029", + "#n c #ac9d94", + "## c #b42839", + "#d c #bd2010", + ".D c #bd2029", + "#e c #bd3039", + ".N c #bd8d7b", + ".# c #bdb6bd", + "#t c #cd2010", + ".w c #cd2029", + ".E c #cd3029", + ".1 c #cd3039", + ".S c #cdaeac", + ".I c #de2029", + "#a c #de2839", + ".k c #de3029", + ".u c #de3039", + ".9 c #de3839", + ".F c #de3852", + "#f c #de4839", + ".p c #de5052", + ".v c #de796a", + ".q c #de95ac", + ".j c #de9dac", + ".n c #deaeac", + ".K c #deb6bd", + ".l c #debeac", + ".e c #debebd", + ".r c #decebd", + ".m c #ded6d5", + "#q c #dedeee", + ".i c #e6596a", + ".T c #e69594", + ".B c #e69d94", + ".R c #e6a5ac", + ".G c #e6ded5", + ".o c #e6e6ee", + ".U c #ee2829", + ".2 c #ee2839", + ".C c #ee3029", + ".t c #ee3039", + ".Y c #ee3829", + ".J c #ee3839", + ".h c #ee3852", + ".z c #ee4839", + ".b c #ee5052", + ".g c #ee6152", + ".y c #ee616a", + ".c c #ee717b", + ".L c #ee797b", + ".Z c #ee8d94", + ".a c #ee957b", + ".f c #ee9594", + "#h c #eeaeac", + ".3 c #eebebd", + ".d c #eeded5", + ".A c #eee6d5", + ".x c #eeeeee", + ".s c #f6716a", + "#w c #f6cebd", + ".H c #f6d6d5", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQt.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQt.a.b.b.c.dQt.eQtQtQtQtQtQtQtQtQtQtQt.f.g.h.i.dQtQtQtQtQtQtQtQt", + "QtQtQtQtQt.#Qt.j.k.b.l.m.n.c.h.oQtQtQtQtQtQtQtQtQt.p.g.q.r.r.s.t.uQtQtQtQtQtQtQt", + "QtQtQtQtQtQt.v.w.u.s.n.x.d.y.z.t.cQtQtQtQtQtQt.A.u.t.b.B.x.x.B.b.t.CQtQtQtQtQtQt", + "QtQtQtQtQt.r.D.D.E.F.s.j.G.x.y.C.C.pQtQtQtQt.H.w.I.J.m.x.K.L.g.h.C.t.CQtQtQtQtQt", + "QtQtQtQtQt.M.M.M.D.E.b.y.f.n.x.n.k.I.LQtQt.x.I.I.y.x.r.q.c.y.b.t.C.C.C.HQtQtQtQt", + "QtQtQtQt.N.O.P.Q.M.E.F.s.c.q.n.e.r.C.I.RQt.w.w.f.l.S.j.T.s.b.h.J.C.U.C.UQtQtQtQt", + "QtQtQtQt.V.W.X.O.M.Q.k.b.s.T.T.f.j.a.Y.I.I.k.c.f.f.q.f.Z.s.b.C.t.C.C.C.tQtQtQtQt", + "QtQtQtQt.0.V.V.V.X.O.D.E.h.s.s.y.y.y.g.C.w.1.b.g.y.s.y.g.h.C.t.C.2.C.U.C.3QtQtQt", + "QtQtQtQt.0.V.4.W.O.X.M.M.w.k.b.b.b.h.z.t.D.E.u.p.b.b.b.h.t.2.C.C.t.2.C.C.TQtQtQt", + "QtQtQtQt.5.6.W.7.W.8.M.D.D.w.k.h.b.Y.J.t.M.E.k.9.z.9.C.I.C.t.U.U.C.t.C.t.cQtQtQt", + "QtQtQtQt#..0.6.V.7.8.O.M.M.Q.w.u.b.h.Y.t.D##.E.9.k.k.k#a.C.U.C.t.U.C.C.t.cQtQtQt", + "QtQtQtQt.5.0#b.6.4.8#c.M.Q#d.D.I.C.b.h.h#e.k.F#f.C.k.U.U.U.t.C.t.C.t.t.C.LQtQtQt", + "QtQtQtQt#g.5.0.V.7.7.8.X.Q.M.D.w.I.z.s.R.x.L.b.w.I.k#a.U.C.U.t.t.Y.Y.h.t#hQtQtQt", + "QtQtQtQt#i#..0.6.W.7#j#c.Q.M.D#d.w.w.C.b.b.h.I.I.k.I.I.U.2.t.C.J.z.z.C.t.dQtQtQt", + "QtQtQtQt#k#i#l.6.7.W.8.8.M.M.Q.D.D.w.w.w.I.w.E.I.I.k.C.U.C.t.t.z.h.b.b.UQtQtQtQt", + "QtQtQtQt.m#i#..0.5.7.4.O.O.Q.Q.M.D.w.Q.w.w.w.I.k.k.I.k.C.h.Y.b.b.g.s.b.bQtQtQtQt", + "QtQtQtQt.##m#i.0.0.V.7.V#j.P.M.M#d.D.D.w.w.w.w.I.k.k.t.z.b.b.b.c.s.c.h.xQtQtQtQt", + "QtQtQtQtQt#n#o#p.0.V.V.4.8.X#c#d.M.D#d.w.w.w.I.I.k.t.t.z.b.y.s.T.j.a.kQtQtQtQtQt", + "QtQtQtQtQtQt#m#i#..6.V.W.O#j.Q.M.M.Q.D#d.w.w.k.I.k.J.b.b.y.a.f.n.l.b.dQtQtQtQtQt", + "QtQtQtQtQtQt.##o#.#..V.W.7.8.M.Q.Q.D.Q.w.w.E.I.k.u.Y.b.s.f.j.r#q.n.CQtQtQtQtQtQt", + "QtQtQtQtQtQtQt#o#g#..6.6.7.O#j.P.P.Q.Q.D.w.w.E.k.J.b.y.a.j.G.x.A.zQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQt#o#i#..6.4.V.7.O#c.Q.M.D.D.E.u.F.h.g.L.j#q.x.x.f#hQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQt.G#r#r#l#s.W.4#j.P.Q.M.Q#t.1.k.k.b.c.f.m.x.x.R.LQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQt.m#i#..0.0.V.V.O#c.M.D.D.E.k.b.g.a.l.x.x.j.pQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQt.G#r#p#.#s.V#j.8.Q.M.D.w.k.b.s.j.G#q.f.sQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQt#i.0.0.6.W.O.Q.D.M.E#f.g.T.n.r.y.nQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQt#r.0.0.V.4.8.M.M.1.h.s.q.j.b.oQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQt#n#..0.V.O.Q.M.E.g.a.s.bQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#u.6.V.8.D.b.s.h.HQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#v.8##.h.3QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.A#wQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt" +}; + +static const char* const a_4_data[] = { + "40 40 198 2", + "Qt c None", + "aN c #200000", + "aJ c #290000", + "aC c #310000", + "aL c #311829", + "aM c #4a0000", + "aY c #4a0010", + "ay c #4a0800", + "aT c #520800", + "a5 c #521000", + "aK c #521010", + "aP c #523039", + "as c #5a0800", + "aD c #5a0810", + "aU c #5a1010", + "aZ c #620800", + "an c #620810", + "az c #621010", + "ac c #622029", + "aG c #6a0800", + "aQ c #6a0810", + "ai c #6a1000", + "at c #6a1010", + "ad c #731000", + "ao c #731010", + "aF c #735952", + "#X c #7b1010", + "#K c #7b1029", + "ae c #7b1810", + "b. c #7b2829", + "#7 c #8b1010", + "aj c #8b1810", + "ba c #8b3039", + "ah c #8b5952", + "am c #8b596a", + "a1 c #8b616a", + "#8 c #941000", + "#L c #941010", + "#Y c #941029", + "#s c #941810", + "#M c #941829", + "a8 c #945952", + "aO c #9c1029", + "#A c #9c1810", + "#0 c #9c1829", + "#Z c #9c2010", + "#W c #9c6152", + ".8 c #a41810", + "ak c #a41829", + "#t c #a42010", + "#9 c #a42029", + "aA c #ac1810", + "af c #ac1829", + "#j c #ac2010", + "a. c #ac2029", + "bc c #ac5952", + "aX c #ac9d94", + "ag c #b42010", + ".R c #b42029", + "#k c #b42839", + "au c #bd2010", + ".S c #bd2029", + "a2 c #bd2810", + "#O c #bd2829", + "#B c #bd3029", + "a9 c #bd3039", + "#i c #bd8d7b", + "ar c #bdb6bd", + "aH c #cd2010", + ".F c #cd2029", + "aE c #cd2810", + "#1 c #cd2829", + "#4 c #cd2839", + ".9 c #cd3029", + ".T c #cd3039", + "#J c #cdaeac", + "#d c #d52029", + "aI c #d52810", + "#w c #d52829", + "#2 c #d52839", + "aV c #d53029", + "#F c #d53039", + "#l c #d53829", + "#. c #d53839", + ".2 c #de2029", + ".n c #de2829", + "aq c #de2839", + ".G c #de3029", + "#C c #de3039", + "a3 c #de3829", + "#N c #de3839", + "a6 c #de3852", + "al c #de4839", + ".D c #de4852", + ".7 c #de5052", + "aB c #de796a", + "#c c #de95ac", + ".s c #de9dac", + ".E c #dea5ac", + ".W c #deaeac", + "#o c #deb6ac", + ".z c #deb6bd", + "aS c #debeac", + ".M c #debebd", + ".B c #decebd", + ".r c #ded6d5", + "aR c #dedeee", + "#f c #dee6ee", + "#v c #e62029", + ".Z c #e62829", + "#6 c #e62839", + ".C c #e63029", + "#5 c #e63039", + "ax c #e63829", + ".P c #e63839", + "#P c #e64839", + "#m c #e64852", + "b# c #e65052", + ".L c #e6596a", + ".# c #e6696a", + "#I c #e6716a", + "#p c #e68d94", + ".e c #e69594", + ".v c #e69d94", + ".1 c #e6a5ac", + ".p c #e6ae94", + ".m c #e6aeac", + "ap c #e6bebd", + ".3 c #e6cebd", + ".I c #e6ded5", + ".A c #e6e6ee", + "#U c #ee2829", + ".0 c #ee2839", + "#T c #ee3029", + ".O c #ee3039", + "#S c #ee3829", + ".k c #ee3839", + ".x c #ee3852", + "#3 c #ee4839", + "#Q c #ee4852", + "#D c #ee5052", + "## c #ee5952", + "aW c #ee6152", + "#e c #ee616a", + "av c #ee717b", + ".b c #ee797b", + ".N c #ee8d7b", + ".h c #ee8d94", + ".i c #ee957b", + ".c c #ee9594", + "a7 c #eeaeac", + ".f c #eebebd", + ".Q c #eeded5", + "bd c #eee6d5", + ".q c #eeeeee", + "#r c #f62829", + "aa c #f62839", + "#h c #f63029", + "#V c #f63039", + "a# c #f63829", + "#H c #f63839", + ".a c #f63852", + "#R c #f64839", + "#u c #f64852", + "#G c #f65052", + ".g c #f6596a", + ".Y c #f6696a", + "#q c #f6716a", + ".4 c #f6717b", + "#n c #f6797b", + ".V c #f68d7b", + "bb c #f6cebd", + ".l c #f6d6d5", + ".w c #f6eeee", + "#z c #f6f6ee", + ".X c #f6f6ff", + "a0 c #f6ffee", + "ab c #ff2829", + "#y c #ff2839", + ".5 c #ff3029", + ".6 c #ff3039", + "aw c #ff3829", + ".K c #ff3839", + ".J c #ff4839", + ".u c #ff4852", + ".o c #ff5052", + ".j c #ff5952", + "#E c #ff596a", + ".d c #ff6152", + ".U c #ff616a", + ".y c #ff6952", + "#a c #ff696a", + ".t c #ff697b", + "#x c #ff716a", + "#g c #ff717b", + "#b c #ff796a", + "a4 c #ff797b", + ".H c #ffffff", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQt.#.a.b.c.d.eQtQtQtQtQtQtQtQtQtQtQtQt.f.g.h.i.j.k.lQtQtQtQtQtQtQt", + "QtQtQtQtQtQt.m.n.o.p.q.r.s.t.u.vQtQtQtQtQtQtQtQt.w.x.y.e.z.A.B.y.C.DQtQtQtQtQtQt", + "QtQtQtQtQt.E.F.G.d.s.q.H.I.y.J.K.LQtQtQtQtQtQt.f.G.k.o.E.H.H.M.N.u.O.PQtQtQtQtQt", + "QtQtQtQt.Q.R.S.T.D.U.V.W.q.X.Y.Z.0.OQtQtQtQt.1.2.n.k.3.X.B.v.4.j.u.5.6.7QtQtQtQt", + "QtQtQtQt.8.R.R.9#.###a#b#c.z.q.m.G.C.7QtQt.l#d.2#e#f.B.E.i#g.U.o.J.6.5#h.QQtQtQt", + "QtQtQt#i.8#j.R#k#l#m#a#n.e.e.s.W#o.k.n.7.Q#d.n#p#o.E.s.e.h#q.U.u.K.6#h.5#rQtQtQt", + "QtQtQt#s.8#t#t.R.T.D.d#a#n.N.b#b#n#b#u.n#v#w#a#a#x#n.N.N.4#a.o.J.5#h#h#y.5#zQtQt", + "QtQtQt#s#A.8.8#t.R#B#C#D#E.U.d.j.o.o.o.6.F#F#m#D#G.j.d.U.j.u.K#H#h#r.5.6.6#IQtQt", + "QtQt#J#K#L#s#M.8#j.R.F#C#N#u.u.u.J#H.K.K#O.T#N#C#P#Q#Q#R#S.O#T#U#V#U#r.5.5.OQtQt", + "QtQt#W#X#L#Y#Z#0#j.R.S#1#2#N#H#H#3.k#V#h.R#B#4#C#N#C#5#5.O#6#U.0#T#V.5.5.5#VQtQt", + "QtQt#W#X#7#8#s#t#9a..R.R#1#w.Pa##S.k#h.O.R#O#1#F#C.G.G#6.Z#T#U#U#Uaa#h.6.5abQtQt", + "QtQtacadae#7#s#Aafa.ag.R.F#d.n.k.a.aa##h#O#O.9#.#N.G#C.C.Z#U#U#U#Uaa#h.6#y#hQtQt", + "QtQtahai#Kaj#s#tak#j.R.R.S#1#w#C#H.u.J.K.9#1#Nal.G.G.n.n.Z.Z#T.0aa#h#h.6.6aaQtQt", + "QtQtamanao#X#s#A.8aga..R.R.S#1#w.G#R.U.vap#a#m#Caq.n.n.Z.n.C.0#U#V#V.6.6.6#rQtQt", + "QtQtarasat#X#s#0.8#t#j.R.Rau.S#1#1.G#Q.dav#Qaq#C.n.naq.C#v#5#T#V#Vaw.J.K.6axQtQt", + "QtQtQtayazaoaj#s#AakaA#j.R.Rau.S.F#w#2.n.naq#w#w.n.n.n.Z.Z#U#T.O#H.J.J.u.KaBQtQt", + "QtQtQtaCaDat#7#s#0#t.8af.Rag.Rau.S.FaE.F#d#d.2#w.n.n.n.Z#6#T.O#H.J.u.j.j#V.wQtQt", + "QtQtQtaFayaG#X#s#s#Zakafa..R.R.Rau.FaH.FaI#d#d#w.n.n.n#6.O.O#H.J.o.d.t#E.ZQtQtQt", + "QtQtQtQtaJaKao#7#s#0akafafag.Rau.Rau.S#1#w#d#d#d.n.n.n#5#T#H#u.o#a#n.e.j.NQtQtQt", + "QtQtQtQtaLaMaiao#L#s#tak#j.R.Rag.S.S.FaH#w#w#d.n.n.n.G#T.k.J.o#a#p.s.e.OQtQtQtQt", + "QtQtQtQt.waNasataj#saO.8afaA.R.Rag.S.F.FaE.F.2#w.n#C#5.x.J.o#a#p.W.z#q#IQtQtQtQt", + "QtQtQtQtQtaPayaQ#Xaj#s#0.8aAa..Ragau.F.S.F#1#daq.n.G.k#R.o#a.i#oaRaS.kQtQtQtQtQt", + "QtQtQtQtQtQtaJaTai#X#L#AakaA#j.R.Rau.S.S.F#w#w#2.G#5.k.o#a.V#o.X#z.Y.lQtQtQtQtQt", + "QtQtQtQtQtQt.AaCaUai#7#L#Z.8a.#j.R.Rau.S.F#1#waV#C#3#u.U.e.M#z.H.1aWQtQtQtQtQtQt", + "QtQtQtQtQtQtQtaXaYaZao#7#s#A#t#ta..R.Rau.S#w#w.G#P.J.y.V#oa0.H.3#HQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQta1aYaGaoaj#Y#0.8a.agag.Ra2#1#wa3#Q.da4.W#z.Hap#VQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtaXa5aiaoaj#s#0#t#j.Rag.S#1.Ga6#G.4.saR.q.1.kQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQt.raUataoaj#L#0.8#j.R.S#1aV#m.d.i#o.Mav##QtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtaUataoaj#s#A.8.R.R.9#F#Q.t#c.v.oa7QtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQta8ad#X#X#s#0a..Ra9#NaW.4.d#TQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQt#zb.#X#7#M#9.RaVb#.j.0apQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#zba#7#A.R#m.PbbQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbc#FbdQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt" +}; static const char* const p_icon_data[] = { -"16 16 111 2", -" c None", -". c #DC0202", -"+ c #FF0A0A", -"@ c #FF1010", -"# c #FF1A1A", -"$ c #FE2424", -"% c #FF0808", -"& c #FE0303", -"* c #F50101", -"= c #DF0000", -"- c #BE0000", -"; c #FC0505", -"> c #FF0909", -", c #FF1D1D", -"' c #FF2D2D", -") c #FF3B3B", -"! c #FF2B2B", -"~ c #FF1818", -"{ c #FE0A0A", -"] c #EE0303", -"^ c #D40101", -"/ c #A40000", -"( c #FF0303", -"_ c #FF0707", -": c #FF0F0F", -"< c #FF3333", -"[ c #FF4A4A", -"} c #FF4E4E", -"| c #FF3939", -"1 c #F30B0B", -"2 c #D10303", -"3 c #B50101", -"4 c #9F0000", -"5 c #8B0000", -"6 c #FF0202", -"7 c #FF0505", -"8 c #FF0B0B", -"9 c #FF2F2F", -"0 c #FF4B4B", -"a c #FF5555", -"b c #FF3E3E", -"c c #FC1B1B", -"d c #D80606", -"e c #AE0000", -"f c #940000", -"g c #800000", -"h c #6C0000", -"i c #630000", -"j c #FF0101", -"k c #FF2020", -"l c #FF3636", -"m c #FF4040", -"n c #FE2E2E", -"o c #EF3B3C", -"p c #D56F73", -"q c #C07278", -"r c #994043", -"s c #660909", -"t c #500000", -"u c #FD0303", -"v c #FB0707", -"w c #F90F0F", -"x c #F91A1A", -"y c #F51D1C", -"z c #EA4043", -"A c #E9C9D7", -"B c #EAF1FF", -"C c #E8EEFF", -"D c #E8E5F3", -"E c #AD919B", -"F c #711316", -"G c #EE0101", -"H c #D00505", -"I c #C70808", -"J c #B70707", -"K c #C67C86", -"L c #E1E9FF", -"M c #D8DAFE", -"N c #CACAFE", -"O c #D9DAFF", -"P c #DBDFFE", -"Q c #8C7797", -"R c #BA0000", -"S c #A90101", -"T c #930101", -"U c #B18590", -"V c #DFEBFF", -"W c #C4C6FD", -"X c #9694CC", -"Y c #A8A7E2", -"Z c #C0CDFF", -"` c #A9BEEA", -" . c #7D0000", -".. c #5A0000", -"+. c #7F5057", -"@. c #D7DFF9", -"#. c #CACFFE", -"$. c #A5A3DD", -"%. c #A8A8E6", -"&. c #BAC9FF", -"*. c #B7CCFA", -"=. c #510000", -"-. c #670C0E", -";. c #B194AB", -">. c #E8ECFF", -",. c #D7DAFF", -"'. c #C1CCFF", -"). c #C3D5FF", -"!. c #8E9098", -"~. c #C5CAE9", -"{. c #C5D4FA", -" ", -" ", -" . . . . . . . . ", -" . + @ # $ . . % & * = - ", -". ; > @ , ' ) ) ! ~ { ] ^ - / / ", -". ( _ : , < [ } | , 1 2 3 4 5 5 ", -". 6 7 8 ~ 9 0 a b c d e f g h i ", -". j ( _ : k l m n o p q r s t h ", -" . j u v w x y z A B C D E F ", -" . G . H I J K L M N O P Q ", -" . R S T g U V W X Y Z ` ", -" . S ...+.@.#.$.%.&.*. ", -" . ..=.-.;.>.,.'.).` ", -" . =.. !.~.{.` ", -" . ", -" "}; + "16 16 111 2", + " c None", + ". c #DC0202", + "+ c #FF0A0A", + "@ c #FF1010", + "# c #FF1A1A", + "$ c #FE2424", + "% c #FF0808", + "& c #FE0303", + "* c #F50101", + "= c #DF0000", + "- c #BE0000", + "; c #FC0505", + "> c #FF0909", + ", c #FF1D1D", + "' c #FF2D2D", + ") c #FF3B3B", + "! c #FF2B2B", + "~ c #FF1818", + "{ c #FE0A0A", + "] c #EE0303", + "^ c #D40101", + "/ c #A40000", + "( c #FF0303", + "_ c #FF0707", + ": c #FF0F0F", + "< c #FF3333", + "[ c #FF4A4A", + "} c #FF4E4E", + "| c #FF3939", + "1 c #F30B0B", + "2 c #D10303", + "3 c #B50101", + "4 c #9F0000", + "5 c #8B0000", + "6 c #FF0202", + "7 c #FF0505", + "8 c #FF0B0B", + "9 c #FF2F2F", + "0 c #FF4B4B", + "a c #FF5555", + "b c #FF3E3E", + "c c #FC1B1B", + "d c #D80606", + "e c #AE0000", + "f c #940000", + "g c #800000", + "h c #6C0000", + "i c #630000", + "j c #FF0101", + "k c #FF2020", + "l c #FF3636", + "m c #FF4040", + "n c #FE2E2E", + "o c #EF3B3C", + "p c #D56F73", + "q c #C07278", + "r c #994043", + "s c #660909", + "t c #500000", + "u c #FD0303", + "v c #FB0707", + "w c #F90F0F", + "x c #F91A1A", + "y c #F51D1C", + "z c #EA4043", + "A c #E9C9D7", + "B c #EAF1FF", + "C c #E8EEFF", + "D c #E8E5F3", + "E c #AD919B", + "F c #711316", + "G c #EE0101", + "H c #D00505", + "I c #C70808", + "J c #B70707", + "K c #C67C86", + "L c #E1E9FF", + "M c #D8DAFE", + "N c #CACAFE", + "O c #D9DAFF", + "P c #DBDFFE", + "Q c #8C7797", + "R c #BA0000", + "S c #A90101", + "T c #930101", + "U c #B18590", + "V c #DFEBFF", + "W c #C4C6FD", + "X c #9694CC", + "Y c #A8A7E2", + "Z c #C0CDFF", + "` c #A9BEEA", + " . c #7D0000", + ".. c #5A0000", + "+. c #7F5057", + "@. c #D7DFF9", + "#. c #CACFFE", + "$. c #A5A3DD", + "%. c #A8A8E6", + "&. c #BAC9FF", + "*. c #B7CCFA", + "=. c #510000", + "-. c #670C0E", + ";. c #B194AB", + ">. c #E8ECFF", + ",. c #D7DAFF", + "'. c #C1CCFF", + "). c #C3D5FF", + "!. c #8E9098", + "~. c #C5CAE9", + "{. c #C5D4FA", + " ", + " ", + " . . . . . . . . ", + " . + @ # $ . . % & * = - ", + ". ; > @ , ' ) ) ! ~ { ] ^ - / / ", + ". ( _ : , < [ } | , 1 2 3 4 5 5 ", + ". 6 7 8 ~ 9 0 a b c d e f g h i ", + ". j ( _ : k l m n o p q r s t h ", + " . j u v w x y z A B C D E F ", + " . G . H I J K L M N O P Q ", + " . R S T g U V W X Y Z ` ", + " . S ...+.@.#.$.%.&.*. ", + " . ..=.-.;.>.,.'.).` ", + " . =.. !.~.{.` ", + " . ", + " " +}; static const char* const t_open_icon_data[] = { -"20 17 245 2", -" c None", -". c #969CD7", -"+ c #9198D4", -"@ c #A1A7DC", -"# c #BABEE6", -"$ c #DFE1F7", -"% c #C3C7EB", -"& c #979CD7", -"* c #AEB4E2", -"= c #D8DAF4", -"- c #F1F1FE", -"; c #EAEAFB", -"> c #DBDCF5", -", c #A2A8DE", -"' c #3A75DD", -") c #A1CEF7", -"! c #9CCBF7", -"~ c #94C7F6", -"{ c #8EC3F6", -"] c #6FA5ED", -"^ c #678BDB", -"/ c #A7AEDF", -"( c #CED0ED", -"_ c #ECEDFB", -": c #F2F2FF", -"< c #EEEEFD", -"[ c #E9E9FB", -"} c #E7E7FA", -"| c #C6CAED", -"1 c #7F8BD2", -"2 c #4981E0", -"3 c #CBF4FF", -"4 c #C4F0FF", -"5 c #BBEBFF", -"6 c #ACD6F7", -"7 c #9FB9E9", -"8 c #B8C4EB", -"9 c #E1E4F6", -"0 c #F9F9FE", -"a c #F8F8FF", -"b c #E5E5F9", -"c c #E1E2F8", -"d c #A6ADE1", -"e c #477FDF", -"f c #C1EAFD", -"g c #AACAF0", -"h c #B2C0E8", -"i c #DADEF3", -"j c #F4F5FC", -"k c #FEFEFF", -"l c #FDFDFF", -"m c #E6E7FA", -"n c #BCC8F1", -"o c #89A3E6", -"p c #7994DF", -"q c #4263CB", -"r c #447DDF", -"s c #BCE3F9", -"t c #AEC1EB", -"u c #DBDFF3", -"v c #FCFDFE", -"w c #FFFFFF", -"x c #ECECFD", -"y c #B2C2F0", -"z c #4E7BDD", -"A c #719CEC", -"B c #7FA8F1", -"C c #759FEE", -"D c #6A96EC", -"E c #6490EC", -"F c #0932C1", -"G c #417ADF", -"H c #BCE8FE", -"I c #85B1EE", -"J c #6C92E0", -"K c #89ADEF", -"L c #87AAED", -"M c #84A8EB", -"N c #82A4E9", -"O c #7FA0E8", -"P c #7B9CE6", -"Q c #6C8FE2", -"R c #4273DB", -"S c #71A2F2", -"T c #64A6FE", -"U c #4C97FE", -"V c #4F9BFE", -"W c #317CF4", -"X c #103FD6", -"Y c #0129BF", -"Z c #3E78DE", -"` c #A4D5F8", -" . c #5991E8", -".. c #8EB0ED", -"+. c #B9CFF7", -"@. c #BBD7FB", -"#. c #B0D2FA", -"$. c #A5CBFA", -"%. c #98C1F9", -"&. c #8BB9F7", -"*. c #83B2F8", -"=. c #82B4FC", -"-. c #6AABFE", -";. c #4693FE", -">. c #428EFC", -",. c #397EF5", -"'. c #1343D9", -"). c #0128C3", -"!. c #3B76DD", -"~. c #C9F2FF", -"{. c #8EC1F3", -"]. c #6493E5", -"^. c #E0EFFD", -"/. c #D8E9FC", -"(. c #DBF6FE", -"_. c #CBF0FF", -":. c #B1DFFF", -"<. c #92C6FE", -"[. c #76B1FE", -"}. c #609EFD", -"|. c #4B8DFB", -"1. c #387AF5", -"2. c #2864EB", -"3. c #1645DA", -"4. c #0526CC", -"5. c #0019C8", -"6. c #0022BE", -"7. c #3773DD", -"8. c #BCE8FC", -"9. c #6EA4EE", -"0. c #93B7EF", -"a. c #E1F9FF", -"b. c #BEE1F9", -"c. c #B3DBFB", -"d. c #A2D2FF", -"e. c #80B6FF", -"f. c #659EFB", -"g. c #4C87F7", -"h. c #3371F3", -"i. c #1E5BEC", -"j. c #1247E1", -"k. c #0735D5", -"l. c #0027CD", -"m. c #001BC9", -"n. c #0019C5", -"o. c #0022BC", -"p. c #3571DC", -"q. c #ACDAF9", -"r. c #598EE5", -"s. c #C3DFFA", -"t. c #C9F0FF", -"u. c #A7DCFF", -"v. c #8BC2FD", -"w. c #83B9FD", -"x. c #74ACFE", -"y. c #5E98FB", -"z. c #4380F6", -"A. c #2866F0", -"B. c #0F4DE7", -"C. c #043BDD", -"D. c #0135D8", -"E. c #002BD2", -"F. c #001BCB", -"G. c #001BC1", -"H. c #2F6BDA", -"I. c #8CBEF4", -"J. c #6594E5", -"K. c #D9F4FF", -"L. c #BCE7FF", -"M. c #A9DBFF", -"N. c #93C6FD", -"O. c #87B6FB", -"P. c #7EAEFB", -"Q. c #6A9CF8", -"R. c #4F83F1", -"S. c #3368EA", -"T. c #2157E4", -"U. c #2051E0", -"V. c #1E48D8", -"W. c #1A3ED0", -"X. c #122EC9", -"Y. c #0421BD", -"Z. c #2563D8", -"`. c #6096E9", -" + c #A3C0F2", -".+ c #EBF8FF", -"++ c #E5F5FF", -"@+ c #DDEFFF", -"#+ c #D2E4FE", -"$+ c #C7D8FA", -"%+ c #BFD1F8", -"&+ c #B4C5F4", -"*+ c #A3B5EE", -"=+ c #95A8E9", -"-+ c #8DA0E6", -";+ c #8999E0", -">+ c #8390DA", -",+ c #7C89D5", -"'+ c #576BCC", -")+ c #1633BC", -"!+ c #1858D4", -"~+ c #487CDD", -"{+ c #EAF0FD", -"]+ c #F7F7FF", -"^+ c #F0F0FC", -"/+ c #E9E9F8", -"(+ c #E2E2F4", -"_+ c #DADAF0", -":+ c #D3D3EC", -"<+ c #CCCCE7", -"[+ c #C5C5E4", -"}+ c #BDBDDF", -"|+ c #B7B7DC", -"1+ c #667ACC", -"2+ c #1B39BC", -"3+ c #0C46CC", -"4+ c #7399E6", -"5+ c #FAFAFF", -"6+ c #F2F2FC", -"7+ c #E8E8F6", -"8+ c #DFDFF1", -"9+ c #D5D5EA", -"0+ c #CBCCE5", -"a+ c #C2C3DF", -"b+ c #BABBD9", -"c+ c #B2B3D4", -"d+ c #ACADD1", -"e+ c #435CC2", -"f+ c #053FC9", -"g+ c #3A6ED9", -"h+ c #5B85DE", -"i+ c #5A84DD", -"j+ c #5982DD", -"k+ c #5880DC", -"l+ c #557DDA", -"m+ c #5178D8", -"n+ c #4B72D3", -"o+ c #476DD0", -"p+ c #4267CB", -"q+ c #3C61C7", -"r+ c #375BC4", -"s+ c #3356C0", -"t+ c #2F51BD", -"u+ c #284BBB", -"v+ c #0F2FB7", -" . + ", -" @ # $ % ", -" & * = - ; > , ", -"' ) ! ~ { ] ^ / ( _ : < [ } | 1 ", -"2 3 4 5 6 7 8 9 0 a : < [ b c d ", -"e 3 f g h i j k l a : < m n o p q ", -"r 3 s t u v w w l a : x y z A B C D E F ", -"G 3 H I J K L M N O P Q R S T U V W X Y ", -"Z 3 ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.). ", -"!.~.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.6. ", -"7.8.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o. ", -"p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G. ", -"H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y. ", -"Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+ ", -"!+~+{+w w l ]+^+/+(+_+:+<+[+}+|+1+2+ ", -"3+4+w w w w 5+6+7+8+9+0+a+b+c+d+e+ ", -"f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+ "}; - -static const char* const t_save_icon_data[] = { -"18 17 257 2", -" c None", -". c #BBBCCE", -"+ c #B6B7CB", -"@ c #BBBBCD", -"# c #ADAEC3", -"$ c #A5A7BE", -"% c #A2A3BB", -"& c #A7A7BE", -"* c #A3A3BB", -"= c #9D9DB6", -"- c #9999B3", -"; c #9494AF", -"> c #8F8FAC", -", c #8A8AA8", -"' c #8585A4", -") c #64688F", -"! c #4F527F", -"~ c #E1E5EC", -"{ c #E1E5ED", -"] c #FFFFFF", -"^ c #7F90AF", -"/ c #7082A6", -"( c #7E8FAF", -"_ c #B3BDD0", -": c #868EAC", -"< c #37386C", -"[ c #B4B5C9", -"} c #D7DDE6", -"| c #D8DDE7", -"1 c #465E8C", -"2 c #576C96", -"3 c #7486A8", -"4 c #A3AFC6", -"5 c #848EAC", -"6 c #353669", -"7 c #AEB0C5", -"8 c #D2D8E3", -"9 c #D3D9E4", -"0 c #586D97", -"a c #7F8FAF", -"b c #9AA7C0", -"c c #9DA9C2", -"d c #757FA0", -"e c #2E2F63", -"f c #A8AAC0", -"g c #CCD3DF", -"h c #CED4E1", -"i c #9FACC4", -"j c #B9C2D3", -"k c #CBD2DF", -"l c #FDFDFE", -"m c #8E9BB5", -"n c #666F92", -"o c #2A2B60", -"p c #A1A4BC", -"q c #C6CEDC", -"r c #C5CDDB", -"s c #EEF1F5", -"t c #EDF0F4", -"u c #ECEFF3", -"v c #EBEEF3", -"w c #EAEDF2", -"x c #E9ECF1", -"y c #E8EBF0", -"z c #E7EAF0", -"A c #E6E9EF", -"B c #E5E8EF", -"C c #E1E4EB", -"D c #D0D3DE", -"E c #7884A3", -"F c #5C668A", -"G c #26275C", -"H c #9B9EB8", -"I c #C1C9D9", -"J c #B7C1D2", -"K c #BAC3D4", -"L c #B5BFD1", -"M c #B1BBCE", -"N c #ADB8CC", -"O c #A8B4C9", -"P c #A4B0C7", -"Q c #A0ACC4", -"R c #9BA9C1", -"S c #95A3BD", -"T c #8D9AB6", -"U c #7F8BA9", -"V c #7480A0", -"W c #626F93", -"X c #545E84", -"Y c #222359", -"Z c #9498B3", -"` c #BBC4D4", -" . c #AEB9CD", -".. c #AAB5CA", -"+. c #A5B1C7", -"@. c #9BA8C1", -"#. c #909EB9", -"$. c #8897B4", -"%. c #808FAE", -"&. c #7382A2", -"*. c #6A789A", -"=. c #637194", -"-. c #5C6A8F", -";. c #566489", -">. c #4C567C", -",. c #1F2056", -"'. c #8F92AF", -"). c #ACB7CB", -"!. c #B4BED0", -"~. c #B0BBCE", -"{. c #A6B1C7", -"]. c #9CA7BF", -"^. c #939FB9", -"/. c #8A96B1", -"(. c #838EAB", -"_. c #7B87A5", -":. c #7581A0", -"<. c #6F7A9B", -"[. c #687496", -"}. c #526186", -"|. c #454F76", -"1. c #1C1D54", -"2. c #888CAA", -"3. c #AFBACD", -"4. c #FDFDFD", -"5. c #F4F4F7", -"6. c #EBEBF0", -"7. c #E4E4EB", -"8. c #DFDFE7", -"9. c #D9D9E3", -"0. c #D4D4DF", -"a. c #CECEDA", -"b. c #C8C8D6", -"c. c #C2C2D2", -"d. c #BCBCCE", -"e. c #5C678B", -"f. c #3D466F", -"g. c #181950", -"h. c #8286A6", -"i. c #FBFBFC", -"j. c #F2F2F5", -"k. c #E9E9EF", -"l. c #DDDDE6", -"m. c #D8D8E2", -"n. c #D2D2DE", -"o. c #CDCDDA", -"p. c #C7C7D6", -"q. c #BCBCCD", -"r. c #B6B6C9", -"s. c #556185", -"t. c #37406A", -"u. c #15164D", -"v. c #7B7FA1", -"w. c #A6B0C6", -"x. c #DCDCE9", -"y. c #C4C4DB", -"z. c #BFBFD7", -"A. c #BBBBD4", -"B. c #B6B6CF", -"C. c #B1B1CC", -"D. c #ACACC7", -"E. c #A8A8C4", -"F. c #A2A2C0", -"G. c #9E9EBC", -"H. c #9999B8", -"I. c #A1A1BC", -"J. c #4E597F", -"K. c #303A63", -"L. c #12134A", -"M. c #757A9D", -"N. c #99A4BD", -"O. c #DDDDE8", -"P. c #CFCFDF", -"Q. c #C9C9DB", -"R. c #C4C4D7", -"S. c #BFBFD3", -"T. c #BABACF", -"U. c #B4B4CB", -"V. c #B0B0C7", -"W. c #AAAAC3", -"X. c #A5A5BF", -"Y. c #9F9FBB", -"Z. c #A1A1BA", -"`. c #485379", -" + c #2A345E", -".+ c #101148", -"++ c #6E7398", -"@+ c #919EB8", -"#+ c #8E9AB4", -"$+ c #D1D1E0", -"%+ c #BFBFD5", -"&+ c #BBBBD1", -"*+ c #B6B6CD", -"=+ c #B0B0C9", -"-+ c #ACACC6", -";+ c #A6A6C1", -">+ c #A2A2BE", -",+ c #9C9CB9", -"'+ c #9797B6", -")+ c #9292B2", -"!+ c #9797B3", -"~+ c #414D73", -"{+ c #242E58", -"]+ c #0D0E45", -"^+ c #666A91", -"/+ c #8693AF", -"(+ c #8591AD", -"_+ c #CCCCDC", -":+ c #BDBDD2", -"<+ c #B8B8CE", -"[+ c #B3B3CA", -"}+ c #ADADC6", -"|+ c #A9A9C3", -"1+ c #A3A3BE", -"2+ c #9E9EBB", -"3+ c #9999B6", -"4+ c #9595B2", -"5+ c #8F8FAF", -"6+ c #9292AF", -"7+ c #3B476E", -"8+ c #1F2952", -"9+ c #0B0C43", -"0+ c #5D628A", -"a+ c #7D8AA8", -"b+ c #7D88A7", -"c+ c #C8C8D8", -"d+ c #BCBCD0", -"e+ c #B6B6CC", -"f+ c #B1B1C8", -"g+ c #ACACC4", -"h+ c #A7A7C0", -"i+ c #9C9CB8", -"j+ c #9797B4", -"k+ c #9292B0", -"l+ c #8D8DAC", -"m+ c #8D8DAB", -"n+ c #364168", -"o+ c #1A234D", -"p+ c #090A40", -"q+ c #545782", -"r+ c #727A9B", -"s+ c #6F7797", -"t+ c #BCBCC9", -"u+ c #B6B6C5", -"v+ c #B1B1C1", -"w+ c #ACACBD", -"x+ c #A6A6B9", -"y+ c #A1A1B6", -"z+ c #9C9CB1", -"A+ c #9797AE", -"B+ c #9292A9", -"C+ c #8D8DA6", -"D+ c #8787A2", -"E+ c #82829E", -"F+ c #2B345A", -"G+ c #131942", -"H+ c #07073E", -" . + @ # $ % & * = - ; > , ' ) ! ", -". ~ { ] ^ / ( ] ] ] ] ] ] ] ] _ : < ", -"[ } | ] 1 2 3 ] ] ] ] ] ] ] ] 4 5 6 ", -"7 8 9 ] 0 a b ] ] ] ] ] ] ] ] c d e ", -"f g h ] i j k ] ] ] ] ] ] ] l m n o ", -"p q r s t u v w x y z A B C D E F G ", -"H I J K L M N O P Q R S T U V W X Y ", -"Z ` ...+.Q @.S #.$.%.&.*.=.-.;.>.,.", -"'.L ).!.~.).{.].^./.(._.:.<.[.}.|.1.", -"2.3.!.] 4.5.6.7.8.9.0.a.b.c.d.e.f.g.", -"h...3.i.j.k.7.l.m.n.o.p.c.q.r.s.t.u.", -"v.P w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.", -"M.c N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+", -"++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+", -"^+/+(+_+:+<+[+}+|+1+2+3+4+5+6+7+8+9+", -"0+a+b+c+d+e+f+g+h+I.i+j+k+l+m+n+o+p+", -"q+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+"}; - -static const char* const t_saveas_icon_data[] = { -"18 20 314 2", -" c None", -". c #EDBB7B", -"+ c #DE9B6E", -"@ c #D17B47", -"# c #F9D004", -"$ c #FFE45F", -"% c #FEE8C3", -"& c #EFC7A8", -"* c #D07843", -"= c #BABCCD", -"- c #B6B7CB", -"; c #BBBBCD", -"> c #ACADC2", -", c #A5A7BE", -"' c #A2A3BB", -") c #A7A7BE", -"! c #A3A3BA", -"~ c #9D9DB6", -"{ c #9999B3", -"] c #C4A248", -"^ c #FDDF01", -"/ c #FFC704", -"( c #FFBA1A", -"_ c #F8A648", -": c #BD6D39", -"< c #BDBFD0", -"[ c #E1E4EC", -"} c #E3E7EE", -"| c #FFFFFF", -"1 c #7688AA", -"2 c #7082A6", -"3 c #8797B4", -"4 c #FEFAF3", -"5 c #F8CE1E", -"6 c #FFDD03", -"7 c #FFBF04", -"8 c #FFAB18", -"9 c #E68830", -"0 c #89727C", -"a c #323268", -"b c #B6B8CB", -"c c #D7DCE6", -"d c #DBE0E8", -"e c #3B5585", -"f c #586D97", -"g c #7E8FAE", -"h c #FFFFFE", -"i c #FAD993", -"j c #FEE205", -"k c #FFCF0D", -"l c #FFBA13", -"m c #FD9E25", -"n c #BD7E53", -"o c #838BA8", -"p c #303065", -"q c #B0B3C7", -"r c #D1D7E3", -"s c #D6DCE6", -"t c #4F6691", -"u c #8090B0", -"v c #A1AEC5", -"w c #FDF4E4", -"x c #FAD849", -"y c #FFE115", -"z c #FFC81C", -"A c #FFB225", -"B c #EE8A2B", -"C c #97878A", -"D c #747D9E", -"E c #2A2B60", -"F c #AAADC3", -"G c #CBD2DF", -"H c #D2D8E3", -"I c #9BA8C1", -"J c #B9C2D4", -"K c #CFD5E1", -"L c #FFFEFE", -"M c #FBE3A4", -"N c #FCDF28", -"O c #FFD527", -"P c #FFC62A", -"Q c #FCA638", -"R c #EAA569", -"S c #8289A2", -"T c #656E91", -"U c #26275D", -"V c #A4A7BE", -"W c #C5CDDB", -"X c #C8D0DD", -"Y c #EEF1F5", -"Z c #EDF0F4", -"` c #ECEFF3", -" . c #EBEEF2", -".. c #EAEDF2", -"+. c #EAEAE9", -"@. c #F9D658", -"#. c #FFE734", -"$. c #FFCD37", -"%. c #FFBF3E", -"&. c #EF9B44", -"*. c #C7A696", -"=. c #727E9F", -"-. c #5C6489", -";. c #22235A", -">. c #9EA1BA", -",. c #C0C8D8", -"'. c #B7C1D3", -"). c #B9C3D4", -"!. c #B5BFD1", -"~. c #B1BBCE", -"{. c #ACB7CC", -"]. c #A8B4C9", -"^. c #BDB297", -"/. c #FBDE3D", -"(. c #FFDE45", -"_. c #FFCD44", -":. c #FFBA4F", -"<. c #C4804A", -"[. c #767992", -"}. c #606E92", -"|. c #545D82", -"1. c #1F2057", -"2. c #989BB5", -"3. c #BAC3D4", -"4. c #AEB9CD", -"5. c #A9B5CA", -"6. c #A4B0C7", -"7. c #9FACC4", -"8. c #9AA8C1", -"9. c #99A3B6", -"0. c #D7BB5F", -"a. c #FFEC57", -"b. c #FFD852", -"c. c #FFCA56", -"d. c #F5A953", -"e. c #846968", -"f. c #5C6A8F", -"g. c #566489", -"h. c #4B547B", -"i. c #1C1D54", -"j. c #9296B2", -"k. c #B4BED1", -"l. c #B4BED0", -"m. c #B0BACE", -"n. c #ACB7CB", -"o. c #A5B0C7", -"p. c #B3A892", -"q. c #F2DA5E", -"r. c #FFE663", -"s. c #FFD85D", -"t. c #FFC669", -"u. c #D38C50", -"v. c #757790", -"w. c #687495", -"x. c #515F85", -"y. c #444D75", -"z. c #191A52", -"A. c #8B8FAD", -"B. c #AEB9CC", -"C. c #FCFCFD", -"D. c #F4F4F7", -"E. c #EBE8E8", -"F. c #F3D98C", -"G. c #FEEC73", -"H. c #FFDF6D", -"I. c #FFD76E", -"J. c #F4B56B", -"K. c #CEA994", -"L. c #C2C1D1", -"M. c #BCBCCE", -"N. c #535F84", -"O. c #3A436C", -"P. c #14154C", -"Q. c #868AA9", -"R. c #FBFBFC", -"S. c #F1F1F4", -"T. c #E9E9EF", -"U. c #E6E0D8", -"V. c #FADA6B", -"W. c #FFED83", -"X. c #FFDF77", -"Y. c #FFD580", -"Z. c #E1A46C", -"`. c #C1AEB1", -" + c #B9B9CB", -".+ c #AEAEC2", -"++ c #48547A", -"@+ c #313963", -"#+ c #111249", -"$+ c #7F83A4", -"%+ c #A3AFC6", -"&+ c #ABB5CA", -"*+ c #DADAE8", -"=+ c #C4C4DB", -"-+ c #BFBFD7", -";+ c #C2BBC6", -">+ c #F9D583", -",+ c #FFE896", -"'+ c #FFE089", -")+ c #FCD18B", -"!+ c #B48777", -"~+ c #9493B3", -"{+ c #8B8BAB", -"]+ c #9393AF", -"^+ c #3F4B72", -"/+ c #2B335D", -"(+ c #0F0F47", -"_+ c #797EA0", -":+ c #9BA8C0", -"<+ c #9FA9C0", -"[+ c #DCDCE7", -"}+ c #CECEDF", -"|+ c #C9C9DA", -"1+ c #CDBDB8", -"2+ c #F7D3A6", -"3+ c #FFEECD", -"4+ c #FCE3B4", -"5+ c #DBA172", -"6+ c #9C8E9F", -"7+ c #9494B1", -"8+ c #9090AD", -"9+ c #9292AD", -"0+ c #3A456D", -"a+ c #262D58", -"b+ c #0D0D45", -"c+ c #72779B", -"d+ c #8E9CB6", -"e+ c #949FB8", -"f+ c #D0D0DF", -"g+ c #BFBFD5", -"h+ c #BABAD1", -"i+ c #C1AAA3", -"j+ c #EBCFB3", -"k+ c #F8E4CE", -"l+ c #D5AB93", -"m+ c #9E8892", -"n+ c #8C8CAC", -"o+ c #8888A8", -"p+ c #8484A5", -"q+ c #8989A7", -"r+ c #343F68", -"s+ c #202953", -"t+ c #0B0B43", -"u+ c #696E94", -"v+ c #8491AD", -"w+ c #8C96B1", -"x+ c #CBCBDB", -"y+ c #BCBCD2", -"z+ c #B8B8CE", -"A+ c #B59E9D", -"B+ c #B29080", -"C+ c #BC9383", -"D+ c #988593", -"E+ c #8F8FAD", -"F+ c #8A8AA9", -"G+ c #8686A5", -"H+ c #8181A2", -"I+ c #8585A4", -"J+ c #313C64", -"K+ c #1E264F", -"L+ c #0A0B42", -"M+ c #60658D", -"N+ c #7B88A7", -"O+ c #848EAB", -"P+ c #C7C7D7", -"Q+ c #BBBBD0", -"R+ c #B6B6CC", -"S+ c #B39899", -"T+ c #AA7561", -"U+ c #9D8D9B", -"V+ c #9292AF", -"W+ c #8E8EAC", -"X+ c #8888A7", -"Y+ c #8585A5", -"Z+ c #8B8BA9", -"`+ c #2E3A62", -" @ c #19224C", -".@ c #080940", -"+@ c #575B85", -"@@ c #6F7899", -"#@ c #757C9B", -"$@ c #BCBCC9", -"%@ c #B6B6C5", -"&@ c #B1B1C1", -"*@ c #ABA3AF", -"=@ c #A399A6", -"-@ c #9C9CB1", -";@ c #9797AD", -">@ c #9292A9", -",@ c #8C8CA4", -"'@ c #8B8BA4", -")@ c #8787A1", -"!@ c #82829E", -"~@ c #252D54", -"{@ c #121841", -"]@ c #06063E", -"^@ c #424373", -"/@ c #37386A", -"(@ c #323365", -"_@ c #4A4A74", -":@ c #484873", -"<@ c #464671", -"[@ c #43436F", -"}@ c #41416E", -"|@ c #3F3F6C", -"1@ c #3D3D6B", -"2@ c #3B3B69", -"3@ c #393967", -"4@ c #373766", -"5@ c #353564", -"6@ c #333363", -"7@ c #0D0E43", -"8@ c #06073D", -"9@ c #04043E", -" . + @ ", -" # $ % & * ", -" = - ; > , ' ) ! ~ { ] ^ / ( _ : ", -"< [ } | 1 2 3 | | | 4 5 6 7 8 9 0 a ", -"b c d | e f g | | h i j k l m n o p ", -"q r s | t u v | | w x y z A B C D E ", -"F G H | I J K | L M N O P Q R S T U ", -"V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.", -">.,.'.).!.~.{.].^./.(._.:.<.[.}.|.1.", -"2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.", -"j.k.{.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.", -"A.B.).| C.D.E.F.G.H.I.J.K.L.M.N.O.P.", -"Q.].!.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+", -"$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+", -"_+:+<+[+}+|+1+2+3+4+5+6+7+8+9+0+a+b+", -"c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+", -"u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+", -"M+N+O+P+Q+R+S+T+U+V+W+X+G+Y+Z+`+ @.@", -"+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@", -"^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@"}; - - -static const char* const t_close_icon_data[] = { -"16 16 76 2", -"Qt c None", -".# c #292c29", -".v c #313031", -".i c #313431", -"#h c #393839", -"#j c #181c18", -"#g c #201c20", -"#f c #202020", -"#i c #202420", -".w c #292429", -".h c #292829", -"#. c #292c29", -".a c #312c31", -".5 c #313031", -".2 c #313431", -".V c #393839", -".Q c #393c39", -".u c #414041", -".x c #4a484a", -".g c #4a4c4a", -".7 c #524c52", -".f c #525052", -".e c #525552", -".y c #5a555a", -".d c #5a595a", -".H c #5a5d5a", -".c c #625d62", -".z c #626162", -".b c #626562", -".A c #6a656a", -".I c #6a696a", -".W c #6a6d6a", -".B c #736d73", -".k c #737173", -".C c #737573", -".J c #7b797b", -".l c #7b7d7b", -".D c #837d83", -".E c #838183", -".n c #838583", -".m c #8b858b", -".F c #8b898b", -".o c #8b8d8b", -".6 c #948d94", -".p c #949194", -".q c #949594", -".O c #9c959c", -".r c #9c999c", -"#c c #9c9d9c", -".s c #a4a1a4", -".0 c #a4a5a4", -".K c #acaaac", -".3 c #acaeac", -".P c #b4aeb4", -".1 c #b4b2b4", -".4 c #b4b6b4", -".G c #bdb6bd", -".9 c #bdbebd", -".t c #c5bec5", -".8 c #c5c2c5", -"#d c #c5c6c5", -"#b c #cdc6cd", -"#a c #cdcacd", -".L c #cdcecd", -"#e c #d5ced5", -".N c #d5d6d5", -".R c #ded6de", -".j c #dedade", -".M c #dedede", -".U c #e6dee6", -".X c #e6e2e6", -".T c #e6e6e6", -".Y c #eee6ee", -".Z c #eeeaee", -"## c #eeeeee", -".S c #ffffff", -"Qt.#.a.b.c.d.d.e.f.f.f.g.f.h.iQt", -".#.c.j.k.l.m.n.o.o.p.q.r.s.t.u.v", -".a.j.w.x.y.d.z.A.B.C.D.E.F.o.G.h", -".z.E.x.H.H.I.I.k.J.D.E.F.o.q.K.u", -".c.l.y.z.j.L.C.J.E.E.M.N.O.r.P.Q", -".d.m.e.I.R.S.M.D.E.T.S.U.O.s.K.V", -".d.n.z.W.C.M.S.X.Y.S.Z.r.s.0.1.2", -".e.o.b.k.J.D.U.S.S.Y.O.s.s.3.4.5", -".f.6.B.J.E.E.Y.S.S.Z.s.s.K.4.t.a", -".7.p.k.D.E.T.S.Y.Y.S.Z.K.1.8.9#.", -".f.q.D.E.M.S.Z.r.s##.S##.9#a#b.w", -".x.r.D.F.T.U.O.s.s.K.Z.Z.8.N#a.w", -".f#c.F.p.O.r.s.s.K.1.9#d#e.M#a#f", -".h.t.F.q.r.s.0.3.4.8#a.N.j.S.J.h", -".i.u.G.K.P.K.1.4.t.8#b#b.U.J#g#h", -"Qt.v.w.u.V.V.2.5#.#.#i.w#j.h#hQt"}; - -static const char* const t_add_icon_data[] = { -"20 18 157 2", -" c None", -". c #000000", -"+ c #C5C5C5", -"@ c #8A9691", -"# c #548987", -"$ c #91B098", -"% c #B9B8B9", -"& c #7E7D7F", -"* c #7C7C7C", -"= c #808D87", -"- c #628685", -"; c #C7D5AF", -"> c #E3E5A7", -", c #D6D6AF", -"' c #BAB8B4", -") c #C3C2C5", -"! c #C8C6CA", -"~ c #BFBFBF", -"{ c #C9C3C5", -"] c #C0CECC", -"^ c #98D3CE", -"/ c #69D1CD", -"( c #58BCBB", -"_ c #639993", -": c #698B7C", -"< c #A6A570", -"[ c #8D9571", -"} c #9B9E96", -"| c #B2B6AF", -"1 c #A3A39F", -"2 c #908C8B", -"3 c #848181", -"4 c #848486", -"5 c #A5A2A7", -"6 c #D2CECD", -"7 c #BFBEBC", -"8 c #ADACAC", -"9 c #A6A8A7", -"0 c #A3A9A8", -"a c #A2ADAC", -"b c #96A3A2", -"c c #75807B", -"d c #525A54", -"e c #1F2019", -"f c #141511", -"g c #4F4D47", -"h c #7E7670", -"i c #B1ADAB", -"j c #C9C6C6", -"k c #CDCBCB", -"l c #C5C4C4", -"m c #AFAEAD", -"n c #A8A8A8", -"o c #AEAEAE", -"p c #D1CDCE", -"q c #D1CCCE", -"r c #C5C2C3", -"s c #BBB9B9", -"t c #B2B7B2", -"u c #A7B2AB", -"v c #999E98", -"w c #7D7C79", -"x c #676460", -"y c #5C6661", -"z c #4D877E", -"A c #6BABAA", -"B c #A8CFD1", -"C c #C8DFDD", -"D c #D2DFDD", -"E c #DCDDDF", -"F c #D3D2D2", -"G c #9C9D9C", -"H c #AEAEAC", -"I c #BFBFBC", -"J c #C0BFBE", -"K c #B3B2B3", -"L c #A7A7A7", -"M c #A7A9A7", -"N c #B0B4B2", -"O c #B7B8B7", -"P c #B5B1A9", -"Q c #C9BE92", -"R c #BACBA5", -"S c #6CC0BE", -"T c #44B2B9", -"U c #50C6C9", -"V c #77DEDB", -"W c #9FEBE4", -"X c #C1EAE2", -"Y c #CAD0CB", -"Z c #919390", -"` c #ADABAB", -" . c #A2A3A0", -".. c #A0A19F", -"+. c #A0A1A1", -"@. c #A1A1A1", -"#. c #A8A8A6", -"$. c #B8B6B3", -"%. c #CAC3BA", -"&. c #DBD1AC", -"*. c #EBE297", -"=. c #EAEFB0", -"-. c #96D6C8", -";. c #41B7B2", -">. c #1DB3B3", -",. c #2BBCBD", -"'. c #51CCC9", -"). c #7AD0CA", -"!. c #94B5B0", -"~. c #808481", -"{. c #949394", -"]. c #919191", -"^. c #9F9F9F", -"/. c #ACACAC", -"(. c #B4B5B4", -"_. c #BEBDBA", -":. c #CFC7B8", -"<. c #E4D7A5", -"[. c #E8E58B", -"}. c #F1EE96", -"|. c #BBDEB0", -"1. c #64CCB6", -"2. c #2EBABA", -"3. c #30ACB6", -"4. c #3CA4AC", -"5. c #479FA2", -"6. c #689794", -"7. c #6F7673", -"8. c #929293", -"9. c #989998", -"0. c #B5B5B5", -"a. c #C1C1BF", -"b. c #CBC9C1", -"c. c #D7D2B5", -"d. c #E6E085", -"e. c #E5E87E", -"f. c #D1E6A7", -"g. c #92DBC5", -"h. c #5DD5D2", -"i. c #72BFC9", -"j. c #709AA5", -"k. c #4C7B7E", -"l. c #7C8180", -"m. c #919392", -"n. c #A8A7A7", -"o. c #B6B5B2", -"p. c #BEBFB4", -"q. c #C1C0AD", -"r. c #C6BA85", -"s. c #C9C5B2", -"t. c #C3D0C6", -"u. c #9ECFC4", -"v. c #90AFAA", -"w. c #888A89", -"x. c #ABAAA9", -"y. c #949494", -"z. c #B0AFAE", -" ", -" ", -" . . . . . . . . . . . . . ", -" . . . . . . . . . ", -" . . . . . . . . . ", -" . . . . . . . . . . . ", -" . . . . . . . . . ", -" . . + @ . # $ . . . . % & . . . . ", -" * = - # $ ; > , ' % ) ! ", -" ~ { ] ^ / ( _ : < [ } | 1 2 3 4 5 ", -"6 7 8 9 0 a b c d e f g h i j k l m n ", -"o p q r s t u v w x y z A B C D E F G ", -"H I J K L M N O P Q R S T U V W X Y Z ", -"` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.~. ", -"5 {.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7. ", -" 5 8.9.L 0.a.b.c.d.e.f.g.h.i.j.k.7. ", -" 5 l.m.n.o.p.q.r.r.s.t.u.v.w.7. ", -" 7 x.y.y.y.y.y.y.y.z.7 "}; - - - -static const char* const t_rescan_icon_data[] = { -"20 20 108 2", -" c None", -". c #00D820", -"+ c #8AE395", -"@ c #7EAA83", -"# c #A0B7A6", -"$ c #3C7B82", -"% c #7AA08E", -"& c #C4D4B0", -"* c #E3E5A7", -"= c #D3D3AC", -"- c #1DD338", -"; c #21D43C", -"> c #898484", -", c #B7DBB9", -"' c #BDD2CE", -") c #7BD5CE", -"! c #53CCCC", -"~ c #639E9A", -"{ c #62887E", -"] c #A3A26E", -"^ c #8C9470", -"/ c #B5C3B3", -"( c #B0BDAE", -"_ c #7D7D7E", -": c #9F9CA1", -"< c #25D23E", -"[ c #B8C6B9", -"} c #A2A2A2", -"| c #A8A4A4", -"1 c #AEADAD", -"2 c #828681", -"3 c #575C57", -"4 c #0C0D0D", -"5 c #030303", -"6 c #4A4641", -"7 c #837872", -"8 c #CCCBCB", -"9 c #D7D3D2", -"0 c #D9D9D9", -"a c #AEADAC", -"b c #D2DDD1", -"c c #D9D2D5", -"d c #CBC8C9", -"e c #BEBCBA", -"f c #AABCB3", -"g c #ACB3AC", -"h c #8E8B88", -"i c #86817C", -"j c #7A8781", -"k c #4AA198", -"l c #6FC9CD", -"m c #C0E3E6", -"n c #C9E6E0", -"o c #DCDFE2", -"p c #EFEFEF", -"q c #BAC4B7", -"r c #AEAFAE", -"s c #9C9C9C", -"t c #949494", -"u c #AEABAB", -"v c #C2C0C3", -"w c #CAC7C2", -"x c #F2E39F", -"y c #E1F5BB", -"z c #72D2DC", -"A c #1CA0AA", -"B c #1DC9C6", -"C c #6BEBE6", -"D c #9EF8E8", -"E c #CCD7CE", -"F c #8D8D8D", -"G c #939393", -"H c #A7A7A8", -"I c #AEB0AD", -"J c #B4B7B4", -"K c #C4BAB1", -"L c #EAD89D", -"M c #E5E28F", -"N c #F4EAA5", -"O c #A6D4BB", -"P c #3CBFAC", -"Q c #0FA2A8", -"R c #0D9CA0", -"S c #3BB8BB", -"T c #8E8F8F", -"U c #A5A5A5", -"V c #BAC0BB", -"W c #BEC5BF", -"X c #39D34F", -"Y c #DAD3BC", -"Z c #EBE783", -"` c #EDF67D", -" . c #CEEEA8", -".. c #6AD8CB", -"+. c #39D4DD", -"@. c #92BBCE", -"#. c #438B87", -"$. c #A7A7A9", -"%. c #7C9F82", -"&. c #C5C5B4", -"*. c #CEC083", -"=. c #D2CFBE", -"-. c #C9DDD2", -";. c #89D1C3", -">. c #949594", -",. c #909090", -"'. c #9CA19C", -"). c #949995", -" . ", -" . . . ", -" . . . . . ", -" . . . . . . . . . . . . . ", -" . . . . . . . . . . . . . ", -" . . . + . . . . . ", -" . . @ # $ % & * = . - ; > ", -" . . , ' ) ! ~ { ] ^ . / ( > _ : ", -" . < [ } | 1 2 3 4 5 6 7 8 9 0 a . ", -" . b c d e f g h i j k l m n o p . ", -" . q r s t u v w x y z A B C D E . ", -" . F G H I J K L M N O P Q R S . . ", -" : T U V W X Y Z ` ...+.@.#.. . ", -" $.%.. . . &.*.*.=.-.;.>.. . ", -" . . . . . ,.G ,.'.).. . . ", -" . . . . . . . . . . . . . ", -" . . . . . . . . . . . . . ", -" . . . . . ", -" . . . ", -" . "}; - -static const char* const t_delete_icon_data[] = { -"18 18 194 2", -" c None", -". c #DCDCDC", -"+ c #DDDDDD", -"@ c #DADADA", -"# c #D3D3D3", -"$ c #C4C4C4", -"% c #C2C2C2", -"& c #F50000", -"* c #EB0000", -"= c #F60D09", -"- c #D9615D", -"; c #D4C5C5", -"> c #E8E8E8", -", c #E0E0E0", -"' c #CCCCCC", -") c #C8C8C8", -"! c #C6C6C6", -"~ c #C5C5C5", -"{ c #A89191", -"] c #E71E1E", -"^ c #FF0000", -"/ c #E30000", -"( c #FE0000", -"_ c #FF0200", -": c #EC0300", -"< c #C44949", -"[ c #D4C2C2", -"} c #D6D6D6", -"| c #CBCBCB", -"1 c #BFBFBF", -"2 c #BDBDBD", -"3 c #B6B6B6", -"4 c #B79898", -"5 c #D43A3A", -"6 c #F60000", -"7 c #F20000", -"8 c #CE0000", -"9 c #F43939", -"0 c #FF0808", -"a c #EC0303", -"b c #CD8C8C", -"c c #BABABA", -"d c #B39797", -"e c #D83B3B", -"f c #F00000", -"g c #C01717", -"h c #D0B9B9", -"i c #D13939", -"j c #FF0404", -"k c #E45040", -"l c #DCC7C2", -"m c #EFEFEF", -"n c #BEBEBE", -"o c #B9A2A2", -"p c #D33939", -"q c #F80000", -"r c #F13F3F", -"s c #D16565", -"t c #877373", -"u c #8D8D8D", -"v c #9E8282", -"w c #D03E33", -"x c #FF0E00", -"y c #FF0D00", -"z c #C34642", -"A c #EAE0E0", -"B c #C0B2B2", -"C c #D83939", -"D c #C29999", -"E c #ACACAC", -"F c #929292", -"G c #D7D7D7", -"H c #B19892", -"I c #BE322B", -"J c #E90000", -"K c #9C4141", -"L c #D93030", -"M c #F90000", -"N c #FD0000", -"O c #ED3A3A", -"P c #BB9595", -"Q c #9C9C9C", -"R c #8B8B8B", -"S c #CECECE", -"T c #E2E2E2", -"U c #D1D1D1", -"V c #C0ADAD", -"W c #C53636", -"X c #E70D0D", -"Y c #FA0000", -"Z c #FC0505", -"` c #D42D2D", -" . c #B29595", -".. c #969696", -"+. c #818181", -"@. c #787878", -"#. c #6C6C6C", -"$. c #B2B2B2", -"%. c #C7C7C7", -"&. c #D9D9D9", -"*. c #D4D4D4", -"=. c #E1D5D5", -"-. c #B92323", -";. c #FF0101", -">. c #FD0303", -",. c #E51D1D", -"'. c #635454", -"). c #8E8E8E", -"!. c #A3A3A3", -"~. c #8F8F8F", -"{. c #A6A6A6", -"]. c #979797", -"^. c #919191", -"/. c #999999", -"(. c #D01E1E", -"_. c #FD0404", -":. c #E81E1E", -"<. c #615454", -"[. c #727272", -"}. c #C0C0C0", -"|. c #D5D5D5", -"1. c #DFDFDF", -"2. c #CDCDCD", -"3. c #C5A6A6", -"4. c #E01E1E", -"5. c #E51E1E", -"6. c #ED0E0E", -"7. c #F90606", -"8. c #BF2626", -"9. c #A68E8E", -"0. c #E4E4E4", -"a. c #CAA4A4", -"b. c #EB3333", -"c. c #EE2525", -"d. c #B62222", -"e. c #6C5E5E", -"f. c #963030", -"g. c #F20605", -"h. c #F40400", -"i. c #D85656", -"j. c #E6E6E6", -"k. c #C39A9A", -"l. c #E83535", -"m. c #EA2828", -"n. c #BD8F8F", -"o. c #B8B8B8", -"p. c #959595", -"q. c #807474", -"r. c #BC2F2D", -"s. c #F00800", -"t. c #EC2F2F", -"u. c #DFB1B1", -"v. c #BCBCBC", -"w. c #BE9898", -"x. c #E23131", -"y. c #E42828", -"z. c #B68383", -"A. c #B4B4B4", -"B. c #C3C3C3", -"C. c #EEEEEE", -"D. c #C9B6B6", -"E. c #B24646", -"F. c #D82B2B", -"G. c #E83636", -"H. c #D0A3A3", -"I. c #BFA0A0", -"J. c #E32B2B", -"K. c #E42424", -"L. c #AC7B7B", -"M. c #AEAEAE", -"N. c #F0F0F0", -"O. c #9F9F9F", -"P. c #8E6565", -"Q. c #D62929", -"R. c #C12A2A", -"S. c #C9AEAE", -"T. c #D31C1C", -"U. c #A87A7A", -"V. c #B1B1B1", -"W. c #E3E3E3", -"X. c #A1A1A1", -"Y. c #7E7E7E", -"Z. c #815B5B", -"`. c #C92929", -" + c #B02A2A", -".+ c #7A5353", -"++ c #9A5F5F", -"@+ c #B7B7B7", -"#+ c #C9C9C9", -"$+ c #A5A5A5", -"%+ c #725454", -"&+ c #DD2A2A", -"*+ c #E1E1E1", -"=+ c #9E9E9E", -" . + + @ @ @ # $ % & * ", -" = - ; > , ' ) ! ~ % { ] ^ ^ / ", -" ( _ : < [ } | 1 2 3 4 5 6 ^ 7 8 ", -" 9 0 ^ ^ a b + @ 1 c d e ^ ^ f g ", -" h i 0 ^ j k l m n o p q ^ r s t u ", -"@ ~ v w x ^ y z A B C q ^ r D E F u ", -". G 1 H I f ^ J K L M N O P Q F u R ", -"S T @ U V W 7 ^ X Y Z ` ...+.@.#.$.", -"%.&.U *.' =.-.& ;.>.,.'.).!.~.F {.1 ", -"].~.^./...1 (.^ >._.:.<.[.%.}.|.% 1.", -"| 2.) }.% 3.4.6 5.6.7.8.9.} T T 1.0.", -"|.m &.2.a.b.c.d.e.f.g.h.i.1.+ . j.0.", -"1 . }.k.l.m.n.o.p.q.r.s.t.u.&.+ j.' ", -"&.v.w.x.y.z.A.B.%.C.D.E.F.G.H.0.' ", -" I.J.K.L.M.c ) ~ N.. O.P.Q.R.S.% ", -" J.T.U.M.V.o.' %.W.@ X.Y.Z.`. +.+ ", -" T.++p.$.@+c ! S #+, $+$+).%+&+ ", -" @+}.}.&.U | 0.*+=+@+ "}; - -static const char* const t_config_icon_data[] = { -"20 16 21 1", -" c None", -". c #949494", -"+ c #ABABAB", -"@ c #9C9C9C", -"# c #797979", -"$ c #5C5C5C", -"% c #525252", -"& c #9D9D9D", -"* c #9E9E9E", -"= c #AAAAAA", -"- c #A9A9A9", -"; c #B26D00", -"> c #753B03", -", c #844B00", -"' c #7D4509", -") c #7F4609", -"! c #743B04", -"~ c #743C0A", -"{ c #6D3707", -"] c #693307", -"^ c #643006", -" ", -" .+@#$ ### ", -" @+@#% ##&& ", -" .+*#% ##& ", -" .=&#% ## &# ", -" .-&#%;> ## &&# ", -" .-&#% ,;> .-&##### ", -".-&#% >;.-&##### ", -" &#% .-&#% ", -" % .-&#% ", -" .-&#%;' ", -" .-&#% >;) ", -" .-&#% !;~ ", -" .-&#% {;] ", -" &#% ^;^ ", -" % ^^ "}; + "20 17 245 2", + " c None", + ". c #969CD7", + "+ c #9198D4", + "@ c #A1A7DC", + "# c #BABEE6", + "$ c #DFE1F7", + "% c #C3C7EB", + "& c #979CD7", + "* c #AEB4E2", + "= c #D8DAF4", + "- c #F1F1FE", + "; c #EAEAFB", + "> c #DBDCF5", + ", c #A2A8DE", + "' c #3A75DD", + ") c #A1CEF7", + "! c #9CCBF7", + "~ c #94C7F6", + "{ c #8EC3F6", + "] c #6FA5ED", + "^ c #678BDB", + "/ c #A7AEDF", + "( c #CED0ED", + "_ c #ECEDFB", + ": c #F2F2FF", + "< c #EEEEFD", + "[ c #E9E9FB", + "} c #E7E7FA", + "| c #C6CAED", + "1 c #7F8BD2", + "2 c #4981E0", + "3 c #CBF4FF", + "4 c #C4F0FF", + "5 c #BBEBFF", + "6 c #ACD6F7", + "7 c #9FB9E9", + "8 c #B8C4EB", + "9 c #E1E4F6", + "0 c #F9F9FE", + "a c #F8F8FF", + "b c #E5E5F9", + "c c #E1E2F8", + "d c #A6ADE1", + "e c #477FDF", + "f c #C1EAFD", + "g c #AACAF0", + "h c #B2C0E8", + "i c #DADEF3", + "j c #F4F5FC", + "k c #FEFEFF", + "l c #FDFDFF", + "m c #E6E7FA", + "n c #BCC8F1", + "o c #89A3E6", + "p c #7994DF", + "q c #4263CB", + "r c #447DDF", + "s c #BCE3F9", + "t c #AEC1EB", + "u c #DBDFF3", + "v c #FCFDFE", + "w c #FFFFFF", + "x c #ECECFD", + "y c #B2C2F0", + "z c #4E7BDD", + "A c #719CEC", + "B c #7FA8F1", + "C c #759FEE", + "D c #6A96EC", + "E c #6490EC", + "F c #0932C1", + "G c #417ADF", + "H c #BCE8FE", + "I c #85B1EE", + "J c #6C92E0", + "K c #89ADEF", + "L c #87AAED", + "M c #84A8EB", + "N c #82A4E9", + "O c #7FA0E8", + "P c #7B9CE6", + "Q c #6C8FE2", + "R c #4273DB", + "S c #71A2F2", + "T c #64A6FE", + "U c #4C97FE", + "V c #4F9BFE", + "W c #317CF4", + "X c #103FD6", + "Y c #0129BF", + "Z c #3E78DE", + "` c #A4D5F8", + " . c #5991E8", + ".. c #8EB0ED", + "+. c #B9CFF7", + "@. c #BBD7FB", + "#. c #B0D2FA", + "$. c #A5CBFA", + "%. c #98C1F9", + "&. c #8BB9F7", + "*. c #83B2F8", + "=. c #82B4FC", + "-. c #6AABFE", + ";. c #4693FE", + ">. c #428EFC", + ",. c #397EF5", + "'. c #1343D9", + "). c #0128C3", + "!. c #3B76DD", + "~. c #C9F2FF", + "{. c #8EC1F3", + "]. c #6493E5", + "^. c #E0EFFD", + "/. c #D8E9FC", + "(. c #DBF6FE", + "_. c #CBF0FF", + ":. c #B1DFFF", + "<. c #92C6FE", + "[. c #76B1FE", + "}. c #609EFD", + "|. c #4B8DFB", + "1. c #387AF5", + "2. c #2864EB", + "3. c #1645DA", + "4. c #0526CC", + "5. c #0019C8", + "6. c #0022BE", + "7. c #3773DD", + "8. c #BCE8FC", + "9. c #6EA4EE", + "0. c #93B7EF", + "a. c #E1F9FF", + "b. c #BEE1F9", + "c. c #B3DBFB", + "d. c #A2D2FF", + "e. c #80B6FF", + "f. c #659EFB", + "g. c #4C87F7", + "h. c #3371F3", + "i. c #1E5BEC", + "j. c #1247E1", + "k. c #0735D5", + "l. c #0027CD", + "m. c #001BC9", + "n. c #0019C5", + "o. c #0022BC", + "p. c #3571DC", + "q. c #ACDAF9", + "r. c #598EE5", + "s. c #C3DFFA", + "t. c #C9F0FF", + "u. c #A7DCFF", + "v. c #8BC2FD", + "w. c #83B9FD", + "x. c #74ACFE", + "y. c #5E98FB", + "z. c #4380F6", + "A. c #2866F0", + "B. c #0F4DE7", + "C. c #043BDD", + "D. c #0135D8", + "E. c #002BD2", + "F. c #001BCB", + "G. c #001BC1", + "H. c #2F6BDA", + "I. c #8CBEF4", + "J. c #6594E5", + "K. c #D9F4FF", + "L. c #BCE7FF", + "M. c #A9DBFF", + "N. c #93C6FD", + "O. c #87B6FB", + "P. c #7EAEFB", + "Q. c #6A9CF8", + "R. c #4F83F1", + "S. c #3368EA", + "T. c #2157E4", + "U. c #2051E0", + "V. c #1E48D8", + "W. c #1A3ED0", + "X. c #122EC9", + "Y. c #0421BD", + "Z. c #2563D8", + "`. c #6096E9", + " + c #A3C0F2", + ".+ c #EBF8FF", + "++ c #E5F5FF", + "@+ c #DDEFFF", + "#+ c #D2E4FE", + "$+ c #C7D8FA", + "%+ c #BFD1F8", + "&+ c #B4C5F4", + "*+ c #A3B5EE", + "=+ c #95A8E9", + "-+ c #8DA0E6", + ";+ c #8999E0", + ">+ c #8390DA", + ",+ c #7C89D5", + "'+ c #576BCC", + ")+ c #1633BC", + "!+ c #1858D4", + "~+ c #487CDD", + "{+ c #EAF0FD", + "]+ c #F7F7FF", + "^+ c #F0F0FC", + "/+ c #E9E9F8", + "(+ c #E2E2F4", + "_+ c #DADAF0", + ":+ c #D3D3EC", + "<+ c #CCCCE7", + "[+ c #C5C5E4", + "}+ c #BDBDDF", + "|+ c #B7B7DC", + "1+ c #667ACC", + "2+ c #1B39BC", + "3+ c #0C46CC", + "4+ c #7399E6", + "5+ c #FAFAFF", + "6+ c #F2F2FC", + "7+ c #E8E8F6", + "8+ c #DFDFF1", + "9+ c #D5D5EA", + "0+ c #CBCCE5", + "a+ c #C2C3DF", + "b+ c #BABBD9", + "c+ c #B2B3D4", + "d+ c #ACADD1", + "e+ c #435CC2", + "f+ c #053FC9", + "g+ c #3A6ED9", + "h+ c #5B85DE", + "i+ c #5A84DD", + "j+ c #5982DD", + "k+ c #5880DC", + "l+ c #557DDA", + "m+ c #5178D8", + "n+ c #4B72D3", + "o+ c #476DD0", + "p+ c #4267CB", + "q+ c #3C61C7", + "r+ c #375BC4", + "s+ c #3356C0", + "t+ c #2F51BD", + "u+ c #284BBB", + "v+ c #0F2FB7", + " . + ", + " @ # $ % ", + " & * = - ; > , ", + "' ) ! ~ { ] ^ / ( _ : < [ } | 1 ", + "2 3 4 5 6 7 8 9 0 a : < [ b c d ", + "e 3 f g h i j k l a : < m n o p q ", + "r 3 s t u v w w l a : x y z A B C D E F ", + "G 3 H I J K L M N O P Q R S T U V W X Y ", + "Z 3 ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.). ", + "!.~.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.6. ", + "7.8.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o. ", + "p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G. ", + "H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y. ", + "Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+ ", + "!+~+{+w w l ]+^+/+(+_+:+<+[+}+|+1+2+ ", + "3+4+w w w w 5+6+7+8+9+0+a+b+c+d+e+ ", + "f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+ " +}; + +static const char* const t_save_icon_data[] = { + "18 17 257 2", + " c None", + ". c #BBBCCE", + "+ c #B6B7CB", + "@ c #BBBBCD", + "# c #ADAEC3", + "$ c #A5A7BE", + "% c #A2A3BB", + "& c #A7A7BE", + "* c #A3A3BB", + "= c #9D9DB6", + "- c #9999B3", + "; c #9494AF", + "> c #8F8FAC", + ", c #8A8AA8", + "' c #8585A4", + ") c #64688F", + "! c #4F527F", + "~ c #E1E5EC", + "{ c #E1E5ED", + "] c #FFFFFF", + "^ c #7F90AF", + "/ c #7082A6", + "( c #7E8FAF", + "_ c #B3BDD0", + ": c #868EAC", + "< c #37386C", + "[ c #B4B5C9", + "} c #D7DDE6", + "| c #D8DDE7", + "1 c #465E8C", + "2 c #576C96", + "3 c #7486A8", + "4 c #A3AFC6", + "5 c #848EAC", + "6 c #353669", + "7 c #AEB0C5", + "8 c #D2D8E3", + "9 c #D3D9E4", + "0 c #586D97", + "a c #7F8FAF", + "b c #9AA7C0", + "c c #9DA9C2", + "d c #757FA0", + "e c #2E2F63", + "f c #A8AAC0", + "g c #CCD3DF", + "h c #CED4E1", + "i c #9FACC4", + "j c #B9C2D3", + "k c #CBD2DF", + "l c #FDFDFE", + "m c #8E9BB5", + "n c #666F92", + "o c #2A2B60", + "p c #A1A4BC", + "q c #C6CEDC", + "r c #C5CDDB", + "s c #EEF1F5", + "t c #EDF0F4", + "u c #ECEFF3", + "v c #EBEEF3", + "w c #EAEDF2", + "x c #E9ECF1", + "y c #E8EBF0", + "z c #E7EAF0", + "A c #E6E9EF", + "B c #E5E8EF", + "C c #E1E4EB", + "D c #D0D3DE", + "E c #7884A3", + "F c #5C668A", + "G c #26275C", + "H c #9B9EB8", + "I c #C1C9D9", + "J c #B7C1D2", + "K c #BAC3D4", + "L c #B5BFD1", + "M c #B1BBCE", + "N c #ADB8CC", + "O c #A8B4C9", + "P c #A4B0C7", + "Q c #A0ACC4", + "R c #9BA9C1", + "S c #95A3BD", + "T c #8D9AB6", + "U c #7F8BA9", + "V c #7480A0", + "W c #626F93", + "X c #545E84", + "Y c #222359", + "Z c #9498B3", + "` c #BBC4D4", + " . c #AEB9CD", + ".. c #AAB5CA", + "+. c #A5B1C7", + "@. c #9BA8C1", + "#. c #909EB9", + "$. c #8897B4", + "%. c #808FAE", + "&. c #7382A2", + "*. c #6A789A", + "=. c #637194", + "-. c #5C6A8F", + ";. c #566489", + ">. c #4C567C", + ",. c #1F2056", + "'. c #8F92AF", + "). c #ACB7CB", + "!. c #B4BED0", + "~. c #B0BBCE", + "{. c #A6B1C7", + "]. c #9CA7BF", + "^. c #939FB9", + "/. c #8A96B1", + "(. c #838EAB", + "_. c #7B87A5", + ":. c #7581A0", + "<. c #6F7A9B", + "[. c #687496", + "}. c #526186", + "|. c #454F76", + "1. c #1C1D54", + "2. c #888CAA", + "3. c #AFBACD", + "4. c #FDFDFD", + "5. c #F4F4F7", + "6. c #EBEBF0", + "7. c #E4E4EB", + "8. c #DFDFE7", + "9. c #D9D9E3", + "0. c #D4D4DF", + "a. c #CECEDA", + "b. c #C8C8D6", + "c. c #C2C2D2", + "d. c #BCBCCE", + "e. c #5C678B", + "f. c #3D466F", + "g. c #181950", + "h. c #8286A6", + "i. c #FBFBFC", + "j. c #F2F2F5", + "k. c #E9E9EF", + "l. c #DDDDE6", + "m. c #D8D8E2", + "n. c #D2D2DE", + "o. c #CDCDDA", + "p. c #C7C7D6", + "q. c #BCBCCD", + "r. c #B6B6C9", + "s. c #556185", + "t. c #37406A", + "u. c #15164D", + "v. c #7B7FA1", + "w. c #A6B0C6", + "x. c #DCDCE9", + "y. c #C4C4DB", + "z. c #BFBFD7", + "A. c #BBBBD4", + "B. c #B6B6CF", + "C. c #B1B1CC", + "D. c #ACACC7", + "E. c #A8A8C4", + "F. c #A2A2C0", + "G. c #9E9EBC", + "H. c #9999B8", + "I. c #A1A1BC", + "J. c #4E597F", + "K. c #303A63", + "L. c #12134A", + "M. c #757A9D", + "N. c #99A4BD", + "O. c #DDDDE8", + "P. c #CFCFDF", + "Q. c #C9C9DB", + "R. c #C4C4D7", + "S. c #BFBFD3", + "T. c #BABACF", + "U. c #B4B4CB", + "V. c #B0B0C7", + "W. c #AAAAC3", + "X. c #A5A5BF", + "Y. c #9F9FBB", + "Z. c #A1A1BA", + "`. c #485379", + " + c #2A345E", + ".+ c #101148", + "++ c #6E7398", + "@+ c #919EB8", + "#+ c #8E9AB4", + "$+ c #D1D1E0", + "%+ c #BFBFD5", + "&+ c #BBBBD1", + "*+ c #B6B6CD", + "=+ c #B0B0C9", + "-+ c #ACACC6", + ";+ c #A6A6C1", + ">+ c #A2A2BE", + ",+ c #9C9CB9", + "'+ c #9797B6", + ")+ c #9292B2", + "!+ c #9797B3", + "~+ c #414D73", + "{+ c #242E58", + "]+ c #0D0E45", + "^+ c #666A91", + "/+ c #8693AF", + "(+ c #8591AD", + "_+ c #CCCCDC", + ":+ c #BDBDD2", + "<+ c #B8B8CE", + "[+ c #B3B3CA", + "}+ c #ADADC6", + "|+ c #A9A9C3", + "1+ c #A3A3BE", + "2+ c #9E9EBB", + "3+ c #9999B6", + "4+ c #9595B2", + "5+ c #8F8FAF", + "6+ c #9292AF", + "7+ c #3B476E", + "8+ c #1F2952", + "9+ c #0B0C43", + "0+ c #5D628A", + "a+ c #7D8AA8", + "b+ c #7D88A7", + "c+ c #C8C8D8", + "d+ c #BCBCD0", + "e+ c #B6B6CC", + "f+ c #B1B1C8", + "g+ c #ACACC4", + "h+ c #A7A7C0", + "i+ c #9C9CB8", + "j+ c #9797B4", + "k+ c #9292B0", + "l+ c #8D8DAC", + "m+ c #8D8DAB", + "n+ c #364168", + "o+ c #1A234D", + "p+ c #090A40", + "q+ c #545782", + "r+ c #727A9B", + "s+ c #6F7797", + "t+ c #BCBCC9", + "u+ c #B6B6C5", + "v+ c #B1B1C1", + "w+ c #ACACBD", + "x+ c #A6A6B9", + "y+ c #A1A1B6", + "z+ c #9C9CB1", + "A+ c #9797AE", + "B+ c #9292A9", + "C+ c #8D8DA6", + "D+ c #8787A2", + "E+ c #82829E", + "F+ c #2B345A", + "G+ c #131942", + "H+ c #07073E", + " . + @ # $ % & * = - ; > , ' ) ! ", + ". ~ { ] ^ / ( ] ] ] ] ] ] ] ] _ : < ", + "[ } | ] 1 2 3 ] ] ] ] ] ] ] ] 4 5 6 ", + "7 8 9 ] 0 a b ] ] ] ] ] ] ] ] c d e ", + "f g h ] i j k ] ] ] ] ] ] ] l m n o ", + "p q r s t u v w x y z A B C D E F G ", + "H I J K L M N O P Q R S T U V W X Y ", + "Z ` ...+.Q @.S #.$.%.&.*.=.-.;.>.,.", + "'.L ).!.~.).{.].^./.(._.:.<.[.}.|.1.", + "2.3.!.] 4.5.6.7.8.9.0.a.b.c.d.e.f.g.", + "h...3.i.j.k.7.l.m.n.o.p.c.q.r.s.t.u.", + "v.P w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.", + "M.c N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+", + "++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+", + "^+/+(+_+:+<+[+}+|+1+2+3+4+5+6+7+8+9+", + "0+a+b+c+d+e+f+g+h+I.i+j+k+l+m+n+o+p+", + "q+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+" +}; + +static const char* const t_saveas_icon_data[] = { + "18 20 314 2", + " c None", + ". c #EDBB7B", + "+ c #DE9B6E", + "@ c #D17B47", + "# c #F9D004", + "$ c #FFE45F", + "% c #FEE8C3", + "& c #EFC7A8", + "* c #D07843", + "= c #BABCCD", + "- c #B6B7CB", + "; c #BBBBCD", + "> c #ACADC2", + ", c #A5A7BE", + "' c #A2A3BB", + ") c #A7A7BE", + "! c #A3A3BA", + "~ c #9D9DB6", + "{ c #9999B3", + "] c #C4A248", + "^ c #FDDF01", + "/ c #FFC704", + "( c #FFBA1A", + "_ c #F8A648", + ": c #BD6D39", + "< c #BDBFD0", + "[ c #E1E4EC", + "} c #E3E7EE", + "| c #FFFFFF", + "1 c #7688AA", + "2 c #7082A6", + "3 c #8797B4", + "4 c #FEFAF3", + "5 c #F8CE1E", + "6 c #FFDD03", + "7 c #FFBF04", + "8 c #FFAB18", + "9 c #E68830", + "0 c #89727C", + "a c #323268", + "b c #B6B8CB", + "c c #D7DCE6", + "d c #DBE0E8", + "e c #3B5585", + "f c #586D97", + "g c #7E8FAE", + "h c #FFFFFE", + "i c #FAD993", + "j c #FEE205", + "k c #FFCF0D", + "l c #FFBA13", + "m c #FD9E25", + "n c #BD7E53", + "o c #838BA8", + "p c #303065", + "q c #B0B3C7", + "r c #D1D7E3", + "s c #D6DCE6", + "t c #4F6691", + "u c #8090B0", + "v c #A1AEC5", + "w c #FDF4E4", + "x c #FAD849", + "y c #FFE115", + "z c #FFC81C", + "A c #FFB225", + "B c #EE8A2B", + "C c #97878A", + "D c #747D9E", + "E c #2A2B60", + "F c #AAADC3", + "G c #CBD2DF", + "H c #D2D8E3", + "I c #9BA8C1", + "J c #B9C2D4", + "K c #CFD5E1", + "L c #FFFEFE", + "M c #FBE3A4", + "N c #FCDF28", + "O c #FFD527", + "P c #FFC62A", + "Q c #FCA638", + "R c #EAA569", + "S c #8289A2", + "T c #656E91", + "U c #26275D", + "V c #A4A7BE", + "W c #C5CDDB", + "X c #C8D0DD", + "Y c #EEF1F5", + "Z c #EDF0F4", + "` c #ECEFF3", + " . c #EBEEF2", + ".. c #EAEDF2", + "+. c #EAEAE9", + "@. c #F9D658", + "#. c #FFE734", + "$. c #FFCD37", + "%. c #FFBF3E", + "&. c #EF9B44", + "*. c #C7A696", + "=. c #727E9F", + "-. c #5C6489", + ";. c #22235A", + ">. c #9EA1BA", + ",. c #C0C8D8", + "'. c #B7C1D3", + "). c #B9C3D4", + "!. c #B5BFD1", + "~. c #B1BBCE", + "{. c #ACB7CC", + "]. c #A8B4C9", + "^. c #BDB297", + "/. c #FBDE3D", + "(. c #FFDE45", + "_. c #FFCD44", + ":. c #FFBA4F", + "<. c #C4804A", + "[. c #767992", + "}. c #606E92", + "|. c #545D82", + "1. c #1F2057", + "2. c #989BB5", + "3. c #BAC3D4", + "4. c #AEB9CD", + "5. c #A9B5CA", + "6. c #A4B0C7", + "7. c #9FACC4", + "8. c #9AA8C1", + "9. c #99A3B6", + "0. c #D7BB5F", + "a. c #FFEC57", + "b. c #FFD852", + "c. c #FFCA56", + "d. c #F5A953", + "e. c #846968", + "f. c #5C6A8F", + "g. c #566489", + "h. c #4B547B", + "i. c #1C1D54", + "j. c #9296B2", + "k. c #B4BED1", + "l. c #B4BED0", + "m. c #B0BACE", + "n. c #ACB7CB", + "o. c #A5B0C7", + "p. c #B3A892", + "q. c #F2DA5E", + "r. c #FFE663", + "s. c #FFD85D", + "t. c #FFC669", + "u. c #D38C50", + "v. c #757790", + "w. c #687495", + "x. c #515F85", + "y. c #444D75", + "z. c #191A52", + "A. c #8B8FAD", + "B. c #AEB9CC", + "C. c #FCFCFD", + "D. c #F4F4F7", + "E. c #EBE8E8", + "F. c #F3D98C", + "G. c #FEEC73", + "H. c #FFDF6D", + "I. c #FFD76E", + "J. c #F4B56B", + "K. c #CEA994", + "L. c #C2C1D1", + "M. c #BCBCCE", + "N. c #535F84", + "O. c #3A436C", + "P. c #14154C", + "Q. c #868AA9", + "R. c #FBFBFC", + "S. c #F1F1F4", + "T. c #E9E9EF", + "U. c #E6E0D8", + "V. c #FADA6B", + "W. c #FFED83", + "X. c #FFDF77", + "Y. c #FFD580", + "Z. c #E1A46C", + "`. c #C1AEB1", + " + c #B9B9CB", + ".+ c #AEAEC2", + "++ c #48547A", + "@+ c #313963", + "#+ c #111249", + "$+ c #7F83A4", + "%+ c #A3AFC6", + "&+ c #ABB5CA", + "*+ c #DADAE8", + "=+ c #C4C4DB", + "-+ c #BFBFD7", + ";+ c #C2BBC6", + ">+ c #F9D583", + ",+ c #FFE896", + "'+ c #FFE089", + ")+ c #FCD18B", + "!+ c #B48777", + "~+ c #9493B3", + "{+ c #8B8BAB", + "]+ c #9393AF", + "^+ c #3F4B72", + "/+ c #2B335D", + "(+ c #0F0F47", + "_+ c #797EA0", + ":+ c #9BA8C0", + "<+ c #9FA9C0", + "[+ c #DCDCE7", + "}+ c #CECEDF", + "|+ c #C9C9DA", + "1+ c #CDBDB8", + "2+ c #F7D3A6", + "3+ c #FFEECD", + "4+ c #FCE3B4", + "5+ c #DBA172", + "6+ c #9C8E9F", + "7+ c #9494B1", + "8+ c #9090AD", + "9+ c #9292AD", + "0+ c #3A456D", + "a+ c #262D58", + "b+ c #0D0D45", + "c+ c #72779B", + "d+ c #8E9CB6", + "e+ c #949FB8", + "f+ c #D0D0DF", + "g+ c #BFBFD5", + "h+ c #BABAD1", + "i+ c #C1AAA3", + "j+ c #EBCFB3", + "k+ c #F8E4CE", + "l+ c #D5AB93", + "m+ c #9E8892", + "n+ c #8C8CAC", + "o+ c #8888A8", + "p+ c #8484A5", + "q+ c #8989A7", + "r+ c #343F68", + "s+ c #202953", + "t+ c #0B0B43", + "u+ c #696E94", + "v+ c #8491AD", + "w+ c #8C96B1", + "x+ c #CBCBDB", + "y+ c #BCBCD2", + "z+ c #B8B8CE", + "A+ c #B59E9D", + "B+ c #B29080", + "C+ c #BC9383", + "D+ c #988593", + "E+ c #8F8FAD", + "F+ c #8A8AA9", + "G+ c #8686A5", + "H+ c #8181A2", + "I+ c #8585A4", + "J+ c #313C64", + "K+ c #1E264F", + "L+ c #0A0B42", + "M+ c #60658D", + "N+ c #7B88A7", + "O+ c #848EAB", + "P+ c #C7C7D7", + "Q+ c #BBBBD0", + "R+ c #B6B6CC", + "S+ c #B39899", + "T+ c #AA7561", + "U+ c #9D8D9B", + "V+ c #9292AF", + "W+ c #8E8EAC", + "X+ c #8888A7", + "Y+ c #8585A5", + "Z+ c #8B8BA9", + "`+ c #2E3A62", + " @ c #19224C", + ".@ c #080940", + "+@ c #575B85", + "@@ c #6F7899", + "#@ c #757C9B", + "$@ c #BCBCC9", + "%@ c #B6B6C5", + "&@ c #B1B1C1", + "*@ c #ABA3AF", + "=@ c #A399A6", + "-@ c #9C9CB1", + ";@ c #9797AD", + ">@ c #9292A9", + ",@ c #8C8CA4", + "'@ c #8B8BA4", + ")@ c #8787A1", + "!@ c #82829E", + "~@ c #252D54", + "{@ c #121841", + "]@ c #06063E", + "^@ c #424373", + "/@ c #37386A", + "(@ c #323365", + "_@ c #4A4A74", + ":@ c #484873", + "<@ c #464671", + "[@ c #43436F", + "}@ c #41416E", + "|@ c #3F3F6C", + "1@ c #3D3D6B", + "2@ c #3B3B69", + "3@ c #393967", + "4@ c #373766", + "5@ c #353564", + "6@ c #333363", + "7@ c #0D0E43", + "8@ c #06073D", + "9@ c #04043E", + " . + @ ", + " # $ % & * ", + " = - ; > , ' ) ! ~ { ] ^ / ( _ : ", + "< [ } | 1 2 3 | | | 4 5 6 7 8 9 0 a ", + "b c d | e f g | | h i j k l m n o p ", + "q r s | t u v | | w x y z A B C D E ", + "F G H | I J K | L M N O P Q R S T U ", + "V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.", + ">.,.'.).!.~.{.].^./.(._.:.<.[.}.|.1.", + "2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.", + "j.k.{.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.", + "A.B.).| C.D.E.F.G.H.I.J.K.L.M.N.O.P.", + "Q.].!.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+", + "$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+", + "_+:+<+[+}+|+1+2+3+4+5+6+7+8+9+0+a+b+", + "c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+", + "u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+", + "M+N+O+P+Q+R+S+T+U+V+W+X+G+Y+Z+`+ @.@", + "+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@", + "^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@" +}; + + +static const char* const t_close_icon_data[] = { + "16 16 76 2", + "Qt c None", + ".# c #292c29", + ".v c #313031", + ".i c #313431", + "#h c #393839", + "#j c #181c18", + "#g c #201c20", + "#f c #202020", + "#i c #202420", + ".w c #292429", + ".h c #292829", + "#. c #292c29", + ".a c #312c31", + ".5 c #313031", + ".2 c #313431", + ".V c #393839", + ".Q c #393c39", + ".u c #414041", + ".x c #4a484a", + ".g c #4a4c4a", + ".7 c #524c52", + ".f c #525052", + ".e c #525552", + ".y c #5a555a", + ".d c #5a595a", + ".H c #5a5d5a", + ".c c #625d62", + ".z c #626162", + ".b c #626562", + ".A c #6a656a", + ".I c #6a696a", + ".W c #6a6d6a", + ".B c #736d73", + ".k c #737173", + ".C c #737573", + ".J c #7b797b", + ".l c #7b7d7b", + ".D c #837d83", + ".E c #838183", + ".n c #838583", + ".m c #8b858b", + ".F c #8b898b", + ".o c #8b8d8b", + ".6 c #948d94", + ".p c #949194", + ".q c #949594", + ".O c #9c959c", + ".r c #9c999c", + "#c c #9c9d9c", + ".s c #a4a1a4", + ".0 c #a4a5a4", + ".K c #acaaac", + ".3 c #acaeac", + ".P c #b4aeb4", + ".1 c #b4b2b4", + ".4 c #b4b6b4", + ".G c #bdb6bd", + ".9 c #bdbebd", + ".t c #c5bec5", + ".8 c #c5c2c5", + "#d c #c5c6c5", + "#b c #cdc6cd", + "#a c #cdcacd", + ".L c #cdcecd", + "#e c #d5ced5", + ".N c #d5d6d5", + ".R c #ded6de", + ".j c #dedade", + ".M c #dedede", + ".U c #e6dee6", + ".X c #e6e2e6", + ".T c #e6e6e6", + ".Y c #eee6ee", + ".Z c #eeeaee", + "## c #eeeeee", + ".S c #ffffff", + "Qt.#.a.b.c.d.d.e.f.f.f.g.f.h.iQt", + ".#.c.j.k.l.m.n.o.o.p.q.r.s.t.u.v", + ".a.j.w.x.y.d.z.A.B.C.D.E.F.o.G.h", + ".z.E.x.H.H.I.I.k.J.D.E.F.o.q.K.u", + ".c.l.y.z.j.L.C.J.E.E.M.N.O.r.P.Q", + ".d.m.e.I.R.S.M.D.E.T.S.U.O.s.K.V", + ".d.n.z.W.C.M.S.X.Y.S.Z.r.s.0.1.2", + ".e.o.b.k.J.D.U.S.S.Y.O.s.s.3.4.5", + ".f.6.B.J.E.E.Y.S.S.Z.s.s.K.4.t.a", + ".7.p.k.D.E.T.S.Y.Y.S.Z.K.1.8.9#.", + ".f.q.D.E.M.S.Z.r.s##.S##.9#a#b.w", + ".x.r.D.F.T.U.O.s.s.K.Z.Z.8.N#a.w", + ".f#c.F.p.O.r.s.s.K.1.9#d#e.M#a#f", + ".h.t.F.q.r.s.0.3.4.8#a.N.j.S.J.h", + ".i.u.G.K.P.K.1.4.t.8#b#b.U.J#g#h", + "Qt.v.w.u.V.V.2.5#.#.#i.w#j.h#hQt" +}; + +static const char* const t_add_icon_data[] = { + "20 18 157 2", + " c None", + ". c #000000", + "+ c #C5C5C5", + "@ c #8A9691", + "# c #548987", + "$ c #91B098", + "% c #B9B8B9", + "& c #7E7D7F", + "* c #7C7C7C", + "= c #808D87", + "- c #628685", + "; c #C7D5AF", + "> c #E3E5A7", + ", c #D6D6AF", + "' c #BAB8B4", + ") c #C3C2C5", + "! c #C8C6CA", + "~ c #BFBFBF", + "{ c #C9C3C5", + "] c #C0CECC", + "^ c #98D3CE", + "/ c #69D1CD", + "( c #58BCBB", + "_ c #639993", + ": c #698B7C", + "< c #A6A570", + "[ c #8D9571", + "} c #9B9E96", + "| c #B2B6AF", + "1 c #A3A39F", + "2 c #908C8B", + "3 c #848181", + "4 c #848486", + "5 c #A5A2A7", + "6 c #D2CECD", + "7 c #BFBEBC", + "8 c #ADACAC", + "9 c #A6A8A7", + "0 c #A3A9A8", + "a c #A2ADAC", + "b c #96A3A2", + "c c #75807B", + "d c #525A54", + "e c #1F2019", + "f c #141511", + "g c #4F4D47", + "h c #7E7670", + "i c #B1ADAB", + "j c #C9C6C6", + "k c #CDCBCB", + "l c #C5C4C4", + "m c #AFAEAD", + "n c #A8A8A8", + "o c #AEAEAE", + "p c #D1CDCE", + "q c #D1CCCE", + "r c #C5C2C3", + "s c #BBB9B9", + "t c #B2B7B2", + "u c #A7B2AB", + "v c #999E98", + "w c #7D7C79", + "x c #676460", + "y c #5C6661", + "z c #4D877E", + "A c #6BABAA", + "B c #A8CFD1", + "C c #C8DFDD", + "D c #D2DFDD", + "E c #DCDDDF", + "F c #D3D2D2", + "G c #9C9D9C", + "H c #AEAEAC", + "I c #BFBFBC", + "J c #C0BFBE", + "K c #B3B2B3", + "L c #A7A7A7", + "M c #A7A9A7", + "N c #B0B4B2", + "O c #B7B8B7", + "P c #B5B1A9", + "Q c #C9BE92", + "R c #BACBA5", + "S c #6CC0BE", + "T c #44B2B9", + "U c #50C6C9", + "V c #77DEDB", + "W c #9FEBE4", + "X c #C1EAE2", + "Y c #CAD0CB", + "Z c #919390", + "` c #ADABAB", + " . c #A2A3A0", + ".. c #A0A19F", + "+. c #A0A1A1", + "@. c #A1A1A1", + "#. c #A8A8A6", + "$. c #B8B6B3", + "%. c #CAC3BA", + "&. c #DBD1AC", + "*. c #EBE297", + "=. c #EAEFB0", + "-. c #96D6C8", + ";. c #41B7B2", + ">. c #1DB3B3", + ",. c #2BBCBD", + "'. c #51CCC9", + "). c #7AD0CA", + "!. c #94B5B0", + "~. c #808481", + "{. c #949394", + "]. c #919191", + "^. c #9F9F9F", + "/. c #ACACAC", + "(. c #B4B5B4", + "_. c #BEBDBA", + ":. c #CFC7B8", + "<. c #E4D7A5", + "[. c #E8E58B", + "}. c #F1EE96", + "|. c #BBDEB0", + "1. c #64CCB6", + "2. c #2EBABA", + "3. c #30ACB6", + "4. c #3CA4AC", + "5. c #479FA2", + "6. c #689794", + "7. c #6F7673", + "8. c #929293", + "9. c #989998", + "0. c #B5B5B5", + "a. c #C1C1BF", + "b. c #CBC9C1", + "c. c #D7D2B5", + "d. c #E6E085", + "e. c #E5E87E", + "f. c #D1E6A7", + "g. c #92DBC5", + "h. c #5DD5D2", + "i. c #72BFC9", + "j. c #709AA5", + "k. c #4C7B7E", + "l. c #7C8180", + "m. c #919392", + "n. c #A8A7A7", + "o. c #B6B5B2", + "p. c #BEBFB4", + "q. c #C1C0AD", + "r. c #C6BA85", + "s. c #C9C5B2", + "t. c #C3D0C6", + "u. c #9ECFC4", + "v. c #90AFAA", + "w. c #888A89", + "x. c #ABAAA9", + "y. c #949494", + "z. c #B0AFAE", + " ", + " ", + " . . . . . . . . . . . . . ", + " . . . . . . . . . ", + " . . . . . . . . . ", + " . . . . . . . . . . . ", + " . . . . . . . . . ", + " . . + @ . # $ . . . . % & . . . . ", + " * = - # $ ; > , ' % ) ! ", + " ~ { ] ^ / ( _ : < [ } | 1 2 3 4 5 ", + "6 7 8 9 0 a b c d e f g h i j k l m n ", + "o p q r s t u v w x y z A B C D E F G ", + "H I J K L M N O P Q R S T U V W X Y Z ", + "` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.~. ", + "5 {.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7. ", + " 5 8.9.L 0.a.b.c.d.e.f.g.h.i.j.k.7. ", + " 5 l.m.n.o.p.q.r.r.s.t.u.v.w.7. ", + " 7 x.y.y.y.y.y.y.y.z.7 " +}; + + + +static const char* const t_rescan_icon_data[] = { + "20 20 108 2", + " c None", + ". c #00D820", + "+ c #8AE395", + "@ c #7EAA83", + "# c #A0B7A6", + "$ c #3C7B82", + "% c #7AA08E", + "& c #C4D4B0", + "* c #E3E5A7", + "= c #D3D3AC", + "- c #1DD338", + "; c #21D43C", + "> c #898484", + ", c #B7DBB9", + "' c #BDD2CE", + ") c #7BD5CE", + "! c #53CCCC", + "~ c #639E9A", + "{ c #62887E", + "] c #A3A26E", + "^ c #8C9470", + "/ c #B5C3B3", + "( c #B0BDAE", + "_ c #7D7D7E", + ": c #9F9CA1", + "< c #25D23E", + "[ c #B8C6B9", + "} c #A2A2A2", + "| c #A8A4A4", + "1 c #AEADAD", + "2 c #828681", + "3 c #575C57", + "4 c #0C0D0D", + "5 c #030303", + "6 c #4A4641", + "7 c #837872", + "8 c #CCCBCB", + "9 c #D7D3D2", + "0 c #D9D9D9", + "a c #AEADAC", + "b c #D2DDD1", + "c c #D9D2D5", + "d c #CBC8C9", + "e c #BEBCBA", + "f c #AABCB3", + "g c #ACB3AC", + "h c #8E8B88", + "i c #86817C", + "j c #7A8781", + "k c #4AA198", + "l c #6FC9CD", + "m c #C0E3E6", + "n c #C9E6E0", + "o c #DCDFE2", + "p c #EFEFEF", + "q c #BAC4B7", + "r c #AEAFAE", + "s c #9C9C9C", + "t c #949494", + "u c #AEABAB", + "v c #C2C0C3", + "w c #CAC7C2", + "x c #F2E39F", + "y c #E1F5BB", + "z c #72D2DC", + "A c #1CA0AA", + "B c #1DC9C6", + "C c #6BEBE6", + "D c #9EF8E8", + "E c #CCD7CE", + "F c #8D8D8D", + "G c #939393", + "H c #A7A7A8", + "I c #AEB0AD", + "J c #B4B7B4", + "K c #C4BAB1", + "L c #EAD89D", + "M c #E5E28F", + "N c #F4EAA5", + "O c #A6D4BB", + "P c #3CBFAC", + "Q c #0FA2A8", + "R c #0D9CA0", + "S c #3BB8BB", + "T c #8E8F8F", + "U c #A5A5A5", + "V c #BAC0BB", + "W c #BEC5BF", + "X c #39D34F", + "Y c #DAD3BC", + "Z c #EBE783", + "` c #EDF67D", + " . c #CEEEA8", + ".. c #6AD8CB", + "+. c #39D4DD", + "@. c #92BBCE", + "#. c #438B87", + "$. c #A7A7A9", + "%. c #7C9F82", + "&. c #C5C5B4", + "*. c #CEC083", + "=. c #D2CFBE", + "-. c #C9DDD2", + ";. c #89D1C3", + ">. c #949594", + ",. c #909090", + "'. c #9CA19C", + "). c #949995", + " . ", + " . . . ", + " . . . . . ", + " . . . . . . . . . . . . . ", + " . . . . . . . . . . . . . ", + " . . . + . . . . . ", + " . . @ # $ % & * = . - ; > ", + " . . , ' ) ! ~ { ] ^ . / ( > _ : ", + " . < [ } | 1 2 3 4 5 6 7 8 9 0 a . ", + " . b c d e f g h i j k l m n o p . ", + " . q r s t u v w x y z A B C D E . ", + " . F G H I J K L M N O P Q R S . . ", + " : T U V W X Y Z ` ...+.@.#.. . ", + " $.%.. . . &.*.*.=.-.;.>.. . ", + " . . . . . ,.G ,.'.).. . . ", + " . . . . . . . . . . . . . ", + " . . . . . . . . . . . . . ", + " . . . . . ", + " . . . ", + " . " +}; + +static const char* const t_delete_icon_data[] = { + "18 18 194 2", + " c None", + ". c #DCDCDC", + "+ c #DDDDDD", + "@ c #DADADA", + "# c #D3D3D3", + "$ c #C4C4C4", + "% c #C2C2C2", + "& c #F50000", + "* c #EB0000", + "= c #F60D09", + "- c #D9615D", + "; c #D4C5C5", + "> c #E8E8E8", + ", c #E0E0E0", + "' c #CCCCCC", + ") c #C8C8C8", + "! c #C6C6C6", + "~ c #C5C5C5", + "{ c #A89191", + "] c #E71E1E", + "^ c #FF0000", + "/ c #E30000", + "( c #FE0000", + "_ c #FF0200", + ": c #EC0300", + "< c #C44949", + "[ c #D4C2C2", + "} c #D6D6D6", + "| c #CBCBCB", + "1 c #BFBFBF", + "2 c #BDBDBD", + "3 c #B6B6B6", + "4 c #B79898", + "5 c #D43A3A", + "6 c #F60000", + "7 c #F20000", + "8 c #CE0000", + "9 c #F43939", + "0 c #FF0808", + "a c #EC0303", + "b c #CD8C8C", + "c c #BABABA", + "d c #B39797", + "e c #D83B3B", + "f c #F00000", + "g c #C01717", + "h c #D0B9B9", + "i c #D13939", + "j c #FF0404", + "k c #E45040", + "l c #DCC7C2", + "m c #EFEFEF", + "n c #BEBEBE", + "o c #B9A2A2", + "p c #D33939", + "q c #F80000", + "r c #F13F3F", + "s c #D16565", + "t c #877373", + "u c #8D8D8D", + "v c #9E8282", + "w c #D03E33", + "x c #FF0E00", + "y c #FF0D00", + "z c #C34642", + "A c #EAE0E0", + "B c #C0B2B2", + "C c #D83939", + "D c #C29999", + "E c #ACACAC", + "F c #929292", + "G c #D7D7D7", + "H c #B19892", + "I c #BE322B", + "J c #E90000", + "K c #9C4141", + "L c #D93030", + "M c #F90000", + "N c #FD0000", + "O c #ED3A3A", + "P c #BB9595", + "Q c #9C9C9C", + "R c #8B8B8B", + "S c #CECECE", + "T c #E2E2E2", + "U c #D1D1D1", + "V c #C0ADAD", + "W c #C53636", + "X c #E70D0D", + "Y c #FA0000", + "Z c #FC0505", + "` c #D42D2D", + " . c #B29595", + ".. c #969696", + "+. c #818181", + "@. c #787878", + "#. c #6C6C6C", + "$. c #B2B2B2", + "%. c #C7C7C7", + "&. c #D9D9D9", + "*. c #D4D4D4", + "=. c #E1D5D5", + "-. c #B92323", + ";. c #FF0101", + ">. c #FD0303", + ",. c #E51D1D", + "'. c #635454", + "). c #8E8E8E", + "!. c #A3A3A3", + "~. c #8F8F8F", + "{. c #A6A6A6", + "]. c #979797", + "^. c #919191", + "/. c #999999", + "(. c #D01E1E", + "_. c #FD0404", + ":. c #E81E1E", + "<. c #615454", + "[. c #727272", + "}. c #C0C0C0", + "|. c #D5D5D5", + "1. c #DFDFDF", + "2. c #CDCDCD", + "3. c #C5A6A6", + "4. c #E01E1E", + "5. c #E51E1E", + "6. c #ED0E0E", + "7. c #F90606", + "8. c #BF2626", + "9. c #A68E8E", + "0. c #E4E4E4", + "a. c #CAA4A4", + "b. c #EB3333", + "c. c #EE2525", + "d. c #B62222", + "e. c #6C5E5E", + "f. c #963030", + "g. c #F20605", + "h. c #F40400", + "i. c #D85656", + "j. c #E6E6E6", + "k. c #C39A9A", + "l. c #E83535", + "m. c #EA2828", + "n. c #BD8F8F", + "o. c #B8B8B8", + "p. c #959595", + "q. c #807474", + "r. c #BC2F2D", + "s. c #F00800", + "t. c #EC2F2F", + "u. c #DFB1B1", + "v. c #BCBCBC", + "w. c #BE9898", + "x. c #E23131", + "y. c #E42828", + "z. c #B68383", + "A. c #B4B4B4", + "B. c #C3C3C3", + "C. c #EEEEEE", + "D. c #C9B6B6", + "E. c #B24646", + "F. c #D82B2B", + "G. c #E83636", + "H. c #D0A3A3", + "I. c #BFA0A0", + "J. c #E32B2B", + "K. c #E42424", + "L. c #AC7B7B", + "M. c #AEAEAE", + "N. c #F0F0F0", + "O. c #9F9F9F", + "P. c #8E6565", + "Q. c #D62929", + "R. c #C12A2A", + "S. c #C9AEAE", + "T. c #D31C1C", + "U. c #A87A7A", + "V. c #B1B1B1", + "W. c #E3E3E3", + "X. c #A1A1A1", + "Y. c #7E7E7E", + "Z. c #815B5B", + "`. c #C92929", + " + c #B02A2A", + ".+ c #7A5353", + "++ c #9A5F5F", + "@+ c #B7B7B7", + "#+ c #C9C9C9", + "$+ c #A5A5A5", + "%+ c #725454", + "&+ c #DD2A2A", + "*+ c #E1E1E1", + "=+ c #9E9E9E", + " . + + @ @ @ # $ % & * ", + " = - ; > , ' ) ! ~ % { ] ^ ^ / ", + " ( _ : < [ } | 1 2 3 4 5 6 ^ 7 8 ", + " 9 0 ^ ^ a b + @ 1 c d e ^ ^ f g ", + " h i 0 ^ j k l m n o p q ^ r s t u ", + "@ ~ v w x ^ y z A B C q ^ r D E F u ", + ". G 1 H I f ^ J K L M N O P Q F u R ", + "S T @ U V W 7 ^ X Y Z ` ...+.@.#.$.", + "%.&.U *.' =.-.& ;.>.,.'.).!.~.F {.1 ", + "].~.^./...1 (.^ >._.:.<.[.%.}.|.% 1.", + "| 2.) }.% 3.4.6 5.6.7.8.9.} T T 1.0.", + "|.m &.2.a.b.c.d.e.f.g.h.i.1.+ . j.0.", + "1 . }.k.l.m.n.o.p.q.r.s.t.u.&.+ j.' ", + "&.v.w.x.y.z.A.B.%.C.D.E.F.G.H.0.' ", + " I.J.K.L.M.c ) ~ N.. O.P.Q.R.S.% ", + " J.T.U.M.V.o.' %.W.@ X.Y.Z.`. +.+ ", + " T.++p.$.@+c ! S #+, $+$+).%+&+ ", + " @+}.}.&.U | 0.*+=+@+ " +}; + +static const char* const t_config_icon_data[] = { + "20 16 21 1", + " c None", + ". c #949494", + "+ c #ABABAB", + "@ c #9C9C9C", + "# c #797979", + "$ c #5C5C5C", + "% c #525252", + "& c #9D9D9D", + "* c #9E9E9E", + "= c #AAAAAA", + "- c #A9A9A9", + "; c #B26D00", + "> c #753B03", + ", c #844B00", + "' c #7D4509", + ") c #7F4609", + "! c #743B04", + "~ c #743C0A", + "{ c #6D3707", + "] c #693307", + "^ c #643006", + " ", + " .+@#$ ### ", + " @+@#% ##&& ", + " .+*#% ##& ", + " .=&#% ## &# ", + " .-&#%;> ## &&# ", + " .-&#% ,;> .-&##### ", + ".-&#% >;.-&##### ", + " &#% .-&#% ", + " % .-&#% ", + " .-&#%;' ", + " .-&#% >;) ", + " .-&#% !;~ ", + " .-&#% {;] ", + " &#% ^;^ ", + " % ^^ " +}; /* -static const char* const t_help_icon_data[] = { +static const char* const t_help_icon_data[] = { "20 20 135 2", " c None", ". c #000000", @@ -3930,1399 +3958,1414 @@ " "}; */ -static const char* const t_new_icon_data[] = { -"16 20 109 2", -" c None", -". c #CED1DD", -"+ c #D2D6E0", -"@ c #D3D7E1", -"# c #CED2DD", -"$ c #C8CCD8", -"% c #C1C5D3", -"& c #B5BACA", -"* c #B6BBCB", -"= c #D3D6E1", -"- c #FFFFFF", -"; c #FDFEFE", -"> c #F6F8FB", -", c #F1F3F8", -"' c #E7E9F1", -") c #D5D8E3", -"! c #D0D4DF", -"~ c #BABECE", -"{ c #FEFEFE", -"] c #F9FAFC", -"^ c #F4F5F9", -"/ c #E9EBF2", -"( c #D8DBE5", -"_ c #EAECF3", -": c #D2D6E1", -"< c #B9BECE", -"[ c #FBFCFD", -"} c #F7F8FB", -"| c #EBEDF3", -"1 c #DBDEE7", -"2 c #F0F1F6", -"3 c #D0D3DF", -"4 c #BABFCF", -"5 c #F8F9FB", -"6 c #E5E7ED", -"7 c #B8BCC8", -"8 c #C9CBD4", -"9 c #C8CBD4", -"0 c #C0C4CF", -"a c #A7ACBC", -"b c #9095A7", -"c c #FCFDFE", -"d c #EAECF1", -"e c #C1C5D1", -"f c #C1C4D0", -"g c #B7BBC9", -"h c #AEB3C2", -"i c #ADB1C1", -"j c #848898", -"k c #FAFBFC", -"l c #F5F7FA", -"m c #EFF1F7", -"n c #E8EAF2", -"o c #D7DBE5", -"p c #CCD0DC", -"q c #CACEDA", -"r c #7D828E", -"s c #FDFDFD", -"t c #F3F5F9", -"u c #E0E2EB", -"v c #D7DAE5", -"w c #D1D4E0", -"x c #7E828F", -"y c #E4E6EF", -"z c #DEE1EA", -"A c #D9DDE7", -"B c #D6DAE4", -"C c #7F8390", -"D c #F3F4F9", -"E c #ECEEF4", -"F c #E6E8F0", -"G c #E1E4EC", -"H c #DFE2EB", -"I c #DCDFE9", -"J c #EDEFF6", -"K c #EAECF4", -"L c #E3E6EF", -"M c #E1E4ED", -"N c #E0E3EC", -"O c #808490", -"P c #FCFDFD", -"Q c #F7F9FB", -"R c #F4F6F9", -"S c #F0F2F8", -"T c #E6E8F1", -"U c #E4E7EF", -"V c #E2E5EE", -"W c #808491", -"X c #F6F8FA", -"Y c #F5F6FA", -"Z c #F0F1F8", -"` c #ECEEF5", -" . c #EBEDF4", -".. c #E8EBF2", -"+. c #E5E7F0", -"@. c #E9EBF3", -"#. c #818491", -"$. c #FCFCFD", -"%. c #F6F7FA", -"&. c #F2F4F8", -"*. c #F4F6FA", -"=. c #F2F4F9", -"-. c #EEF0F7", -";. c #C5C8D4", -">. c #818490", -",. c #808390", -"'. c #7F838F", -"). c #7F828F", -"!. c #757986", -". + @ @ @ @ @ # $ % & * ", -"= - - - - - ; > , ' ) ! ~ ", -"= - - - - - { ] ^ / ( _ : < ", -"= - - - - - - [ } | 1 } 2 3 4 ", -"= - - - - - - [ 5 6 7 8 9 0 a b ", -"= - - - - - - c ] d e f g h i j ", -"= - - - - - - ; k l m n o p q r ", -"= - - - - - - s k t ' u v : w x ", -"= - - - - - { ] l m y z A ( B C ", -"= - - - - - ; D E _ F y G H I C ", -"= - - - - ; > m J K ' ' L M N O ", -"= - { P P Q R , S J K n T U V W ", -"= - P X X l Y t , Z ` ...F +.W ", -"= - c } } X l t , S J ./ ' U W ", -"= - c } } X Y t , S J ` @.' +.#.", -"= - c } } X Y t , S J ` @.' +.#.", -"= - c } } X l t , S J ` @.' +.#.", -"= - $.%.%.l R &., S J ...' U W ", -"= - ; k k ] 5 l *.=.S -.` _ ' #.", -";.>.>.O O O O O O ,.'.'.'.'.).!."}; - - - -static const char* const t_find_icon_data[] = { -"18 18 146 2", -" c None", -". c #9CA9C3", -"+ c #94ADCF", -"@ c #8BB0D9", -"# c #8FB2D8", -"$ c #9CB2CD", -"% c #9FAEC6", -"& c #85A4CD", -"* c #81B6E5", -"= c #87CAF6", -"- c #92D5F8", -"; c #93D5F8", -"> c #91D5F8", -", c #94CAEB", -"' c #99B4CD", -") c #7E9DC7", -"! c #80BCEC", -"~ c #94D7F8", -"{ c #A4E5FA", -"] c #A8E8FB", -"^ c #A0E2FA", -"/ c #9ADCF8", -"( c #A1E2FB", -"_ c #A1DBF1", -": c #97B3CA", -"< c #7D8BAC", -"[ c #7BAFDF", -"} c #AFEEFC", -"| c #C4FAFD", -"1 c #C1F6FD", -"2 c #B0EEFC", -"3 c #AAE9FB", -"4 c #A7E9FB", -"5 c #B0EFFB", -"6 c #A6D4E3", -"7 c #8EA0B7", -"8 c #7289AF", -"9 c #84C8F5", -"0 c #A1E2FA", -"a c #C2F9FD", -"b c #DFFEFE", -"c c #D4F8FD", -"d c #B7F0FC", -"e c #BEF7FD", -"f c #BBF9FE", -"g c #BFFBFE", -"h c #BBF1F5", -"i c #97B4C4", -"j c #698AB9", -"k c #8ED1F8", -"l c #A2E4FA", -"m c #BBF3FC", -"n c #C5F5FD", -"o c #C7F9FE", -"p c #CDFEFE", -"q c #CBFEFE", -"r c #CEFEFE", -"s c #CCFEFE", -"t c #9CB7C5", -"u c #658ABA", -"v c #91D4F8", -"w c #9DDFF9", -"x c #A5E5FA", -"y c #B0ECFB", -"z c #C2F8FD", -"A c #D4FDFE", -"B c #D5FEFE", -"C c #D7FEFE", -"D c #DBFEFE", -"E c #D8FEFE", -"F c #9DB2C0", -"G c #5F79A3", -"H c #90D4F8", -"I c #99DBF9", -"J c #A5E5FB", -"K c #B6F1FD", -"L c #C8FDFE", -"M c #D2FEFE", -"N c #DAFEFE", -"O c #E3FEFE", -"P c #E8FEFE", -"Q c #DCF6F8", -"R c #98A8B8", -"S c #546489", -"T c #83BDE3", -"U c #9EE0FA", -"V c #B3F2FD", -"W c #C6FDFE", -"X c #D3FEFE", -"Y c #E0FEFE", -"Z c #ECFEFE", -"` c #F4FEFE", -" . c #CCD8DF", -".. c #7C839A", -"+. c #6382A7", -"@. c #98D6F1", -"#. c #A6E8FB", -"$. c #C5FDFE", -"%. c #E5EDF1", -"&. c #969BAF", -"*. c #5D5D7B", -"=. c #7094B6", -"-. c #99D0E5", -";. c #B3F1FC", -">. c #C2FDFE", -",. c #CEE4E9", -"'. c #979EB1", -"). c #777891", -"!. c #8E8B9B", -"~. c #657E9E", -"{. c #7FA1B7", -"]. c #8AACBD", -"^. c #90AEBD", -"/. c #91A8B8", -"(. c #808DA2", -"_. c #656582", -":. c #8A8798", -"<. c #9D8372", -"[. c #C58737", -"}. c #C67816", -"|. c #BB8E4F", -"1. c #EAC16F", -"2. c #E29C32", -"3. c #BB6E13", -"4. c #AC742D", -"5. c #E4C478", -"6. c #F5D07E", -"7. c #E09A31", -"8. c #B26915", -"9. c #9D6828", -"0. c #E0C27A", -"a. c #F5D07C", -"b. c #DE9A35", -"c. c #A96316", -"d. c #986831", -"e. c #DBBB76", -"f. c #F5CE78", -"g. c #D89634", -"h. c #7F491C", -"i. c #986C39", -"j. c #D5B571", -"k. c #C09554", -"l. c #795D51", -"m. c #784C27", -"n. c #765D53", -"o. c #5B566D", -" . + @ # $ % ", -" & * = - ; > , ' ", -" ) ! ~ { ] ^ / ( _ : ", -"< [ - } | 1 2 3 4 5 6 7 ", -"8 9 0 a b c d e f g h i ", -"j k l m c n o p q r s t ", -"u v w x y z A B C D E F ", -"G H I J K L M N O P Q R ", -"S T I U V W X Y Z ` ... ", -" +.@.#.V $.X Y Z %.&.*. ", -" =.-.;.>.r N ,.'.).!. ", -" ~.{.].^./.(._.:.<.[.}. ", -" |.1.2.3. ", -" 4.5.6.7.8. ", -" 9.0.a.b.c. ", -" d.e.f.g.h.", -" i.j.k.l.", -" m.n.o."}; - - -static const char* const t_about_icon_data[] = { -"16 16 68 2", -"Qt c None", -"#a c #002441", -".8 c #00244a", -".r c #00284a", -".1 c #002852", -".W c #002c52", -".4 c #003052", -".Q c #00305a", -".V c #00345a", -".y c #003462", -"## c #003862", -"#b c #00386a", -".# c #003c6a", -".I c #003c73", -".b c #00406a", -".a c #00446a", -".s c #004473", -".P c #004873", -".z c #082c4a", -".R c #082c52", -".j c #083052", -".k c #08406a", -".d c #084073", -".c c #084473", -".U c #08487b", -".x c #084c7b", -".9 c #084c83", -".J c #102c4a", -".7 c #103c62", -".i c #10446a", -".H c #104c7b", -"#. c #10507b", -".q c #105583", -".p c #184862", -".h c #185583", -".O c #185983", -".0 c #185d8b", -".S c #185d94", -".w c #18618b", -".K c #186594", -".Y c #204c62", -".v c #20506a", -".e c #205d7b", -".A c #20618b", -".Z c #20658b", -".5 c #206594", -".g c #20698b", -".2 c #20699c", -".M c #295573", -".l c #296183", -".N c #296d94", -".G c #296d9c", -".f c #297194", -".F c #317194", -".X c #3179a4", -".E c #39799c", -".m c #397da4", -".3 c #3981a4", -".n c #3981ac", -".T c #4185ac", -".B c #4189b4", -".t c #418db4", -".u c #4a91b4", -".C c #5299bd", -".D c #5299c5", -".L c #529dc5", -".6 c #fffaff", -".o c #ffffff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQt.#.#.#.a.bQtQtQtQtQt", -"QtQtQtQt.c.d.e.f.g.h.i.j.cQtQtQt", -"QtQtQt.k.l.m.n.o.o.p.q.d.r.cQtQt", -"QtQtQt.s.m.t.u.o.o.v.w.x.y.zQtQt", -"QtQt.#.A.B.C.D.u.E.F.G.H.I.y.JQt", -"QtQt.#.K.t.L.o.o.o.M.N.O.P.Q.RQt", -"QtQt.#.S.T.C.D.o.o.v.N.O.U.V.WQt", -"QtQt.V.q.X.t.u.o.o.Y.Z.0.P.Q.1Qt", -"QtQt.y.k.2.m.3.o.o.p.O.q.#.4.rQt", -"QtQtQt.1.U.5.6.o.o.o.7.#.W.8QtQt", -"QtQtQt.c.r.#.x.9#.#.##.4#a.cQtQt", -"QtQtQtQt.c.r###b.V.W.r#a.cQtQtQt", -"QtQtQtQtQtQt.R.R.W.8.rQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - - - -static const char* const t_help_icon_data[] = { -"20 20 215 2", -" c None", -". c #4381FF", -"+ c #4884FE", -"@ c #4D87FE", -"# c #4C86FE", -"$ c #4481FE", -"% c #3D7DFF", -"& c #4583FF", -"* c #5B91FE", -"= c #7AA5FE", -"- c #98B9FC", -"; c #AAC3F9", -"> c #AAC4F9", -", c #95B7FB", -"' c #7DA7FD", -") c #5D91FC", -"! c #3F7DFD", -"~ c #4F89FE", -"{ c #76A3FD", -"] c #AAC6FD", -"^ c #CCDCFB", -"/ c #DEE8FB", -"( c #E2EAF9", -"_ c #E0E9FA", -": c #DFE8FA", -"< c #D3E0FB", -"[ c #B5CCFB", -"} c #7CA6FB", -"| c #4B85FA", -"1 c #4C87FE", -"2 c #81AAFD", -"3 c #BCD2FD", -"4 c #CEDDFB", -"5 c #DBE5FA", -"6 c #EAEFFB", -"7 c #F9FBFE", -"8 c #FAFCFE", -"9 c #F6F9FD", -"0 c #E3EBFB", -"a c #D9E5FB", -"b c #C3D6FB", -"c c #8AAFF9", -"d c #4682FB", -"e c #6C9CFE", -"f c #AFCAFE", -"g c #C4D7FC", -"h c #D6E2FA", -"i c #F4F7FD", -"j c #F9FBFF", -"k c #E9F0FF", -"l c #E5EEFF", -"m c #F1F6FF", -"n c #FCFDFF", -"o c #ECF2FD", -"p c #D2E1FD", -"q c #B7CEFC", -"r c #709EFB", -"s c #3576FE", -"t c #528BFE", -"u c #8EB3FE", -"v c #B4CDFF", -"w c #BCD1FB", -"x c #E6EDFC", -"y c #FDFEFF", -"z c #E3EDFF", -"A c #C1D5FF", -"B c #BCD1FF", -"C c #C8D9FC", -"D c #F4F7FC", -"E c #D7E4FF", -"F c #B4CDFE", -"G c #8CB1FC", -"H c #4480FC", -"I c #407FFF", -"J c #6296FE", -"K c #9ABBFE", -"L c #A6C3FF", -"M c #B3CBFD", -"N c #E6EDFE", -"O c #F7F9FF", -"P c #C0D4FF", -"Q c #A7C4FF", -"R c #A6C2FE", -"S c #AFC7F5", -"T c #F8FAFF", -"U c #C1D4FE", -"V c #82AAFD", -"W c #6D9DFD", -"X c #4682FE", -"Y c #266DFF", -"Z c #417FFF", -"` c #6B9BFE", -" . c #92B6FF", -".. c #94B7FF", -"+. c #98BAFF", -"@. c #AEC9FF", -"#. c #B0CAFF", -"$. c #9ABBFF", -"%. c #A3BEF6", -"&. c #D6E1F6", -"*. c #FCFDFE", -"=. c #E3ECFE", -"-. c #8CB1FD", -";. c #5990FF", -">. c #568EFF", -",. c #4986FF", -"'. c #266EFF", -"). c #417FFE", -"!. c #83ADFF", -"~. c #85AEFF", -"{. c #84ADFF", -"]. c #86AAF3", -"^. c #DDE6F8", -"/. c #FBFCFE", -"(. c #F0F5FE", -"_. c #A9C5FD", -":. c #6095FE", -"<. c #548DFF", -"[. c #508AFF", -"}. c #3E7DFE", -"|. c #6296FD", -"1. c #6E9EFF", -"2. c #6E9DFF", -"3. c #76A1F8", -"4. c #CEDBF6", -"5. c #FEFEFF", -"6. c #EAF0FE", -"7. c #9CBCFC", -"8. c #5C92FE", -"9. c #558DFF", -"0. c #256DFE", -"a. c #3A7BFF", -"b. c #6195FF", -"c. c #6095FF", -"d. c #5F94FE", -"e. c #7FA8F9", -"f. c #E5EBF9", -"g. c #ACC7FD", -"h. c #4B87FF", -"i. c #246BFD", -"j. c #3779FF", -"k. c #4B86FF", -"l. c #5D92FF", -"m. c #5E93FF", -"n. c #5D93FF", -"o. c #7CA5FC", -"p. c #DAE5FB", -"q. c #D8E5FF", -"r. c #7CA7FF", -"s. c #5C92FF", -"t. c #5B91FF", -"u. c #3F7EFF", -"v. c #2269FC", -"w. c #427FFE", -"x. c #5C91FE", -"y. c #6497FF", -"z. c #6F9DFC", -"A. c #B0C9FA", -"B. c #ACC6FC", -"C. c #6F9EFF", -"D. c #5A90FE", -"E. c #3375FD", -"F. c #3879FD", -"G. c #548BFC", -"H. c #6D9CFD", -"I. c #709FFF", -"J. c #709EFF", -"K. c #82A8F7", -"L. c #C9D9F8", -"M. c #CDDCFA", -"N. c #8DB3FF", -"O. c #70A0FF", -"P. c #6C9CFD", -"Q. c #4C85FB", -"R. c #286DFB", -"S. c #407EFB", -"T. c #6194FA", -"U. c #77A4FC", -"V. c #7BA7FF", -"W. c #7BA6FE", -"X. c #9CBAF8", -"Y. c #F0F4FD", -"Z. c #F5F8FF", -"`. c #ABC7FF", -" + c #7CA8FF", -".+ c #77A3FC", -"++ c #5D90F8", -"@+ c #3475F8", -"#+ c #417EFA", -"$+ c #5F92F9", -"%+ c #86AEFE", -"&+ c #95B7FD", -"*+ c #C4D7FF", -"=+ c #C9DBFF", -"-+ c #9CBCFF", -";+ c #87AEFE", -">+ c #7BA5FA", -",+ c #5B8FF7", -"'+ c #3877F6", -")+ c #3778FB", -"!+ c #4C85F9", -"~+ c #6B99F5", -"{+ c #83A8F6", -"]+ c #94B6FC", -"^+ c #95B7FC", -"/+ c #83A8F5", -"(+ c #6996F3", -"_+ c #4882F6", -":+ c #2F72F8", -"<+ c #3073FB", -"[+ c #3375FC", -"}+ c #3376FE", -"|+ c #3275FD", -"1+ c #3173FA", -"2+ c #2C6FF8", -" ", -" . + @ # $ % ", -" & * = - ; > , ' ) ! ", -" ~ { ] ^ / ( _ : < [ } | ", -" 1 2 3 4 5 6 7 8 9 0 a b c d ", -" . e f g h i j k l m n o p q r s ", -" t u v w x y z A B C D j E F G H ", -" I J K L M N O P Q R S D T U V W X Y ", -" Z ` ...+.@.#.$...%.&.*.=.-.;.>.,.'. ", -" ).W !.!.!.~.~.{.].^./.(._.:.<.<.[.'. ", -" }.|.1.2.2.2.2.3.4.5.6.7.8.9.9.9.[.0. ", -" a.9.b.b.b.c.d.e.f.O g.J ;.;.;.;.h.i. ", -" j.k.l.m.n.l.l.o.p.q.r.l.s.s.s.t.u.v. ", -" w.x.y.y.y.y.z.A.B.C.y.y.y.y.D.E. ", -" F.G.H.I.I.J.K.L.M.N.O.I.I.P.Q.R. ", -" S.T.U.V.W.X.Y.Z.`. +V..+++@+ ", -" #+$+} %+&+*+=+-+;+>+,+'+ ", -" )+!+~+{+]+^+/+(+_+:+ ", -" <+[+}+|+1+2+ ", -" "}; - - -static const char* const t_comment_icon_data[] = { -"14 16 102 2", -" c None", -". c #A4B6E6", -"+ c #9CB2DE", -"@ c #5A75AC", -"# c #B4896A", -"$ c #E6D2B4", -"% c #FFFFFF", -"& c #F6F6FF", -"* c #E6EAF6", -"= c #DEE6F6", -"- c #C5D2EE", -"; c #CDDAF6", -"> c #5275AC", -", c #AC856A", -"' c #E6CEB4", -") c #C58D52", -"! c #FFFAFF", -"~ c #EEEEFF", -"{ c #E6E6F6", -"] c #D5DEF6", -"^ c #CDD6EE", -"/ c #ACBEE6", -"( c #AC8573", -"_ c #E6CEAC", -": c #BD8541", -"< c #E6EAFF", -"[ c #CDDAEE", -"} c #6A85B4", -"| c #A48573", -"1 c #BD814A", -"2 c #FFF6FF", -"3 c #EEF2FF", -"4 c #DEE2F6", -"5 c #D5DAEE", -"6 c #B4917B", -"7 c #C58952", -"8 c #C58541", -"9 c #BD7D4A", -"0 c #835531", -"a c #EEEEF6", -"b c #C5A59C", -"c c #C5854A", -"d c #BD7D41", -"e c #835029", -"f c #180C08", -"g c #F6F2FF", -"h c #EEE6E6", -"i c #F6EEE6", -"j c #DEAA94", -"k c #835031", -"l c #201010", -"m c #E6E2EE", -"n c #EECABD", -"o c #BD856A", -"p c #B4795A", -"q c #201410", -"r c #EEDEDE", -"s c #F6DED5", -"t c #B49183", -"u c #7B5D4A", -"v c #5A4C41", -"w c #292020", -"x c #4A658B", -"y c #EEEAFF", -"z c #D5D2D5", -"A c #F6DACD", -"B c #B48D7B", -"C c #7B5D52", -"D c #312C29", -"E c #5A555A", -"F c #BDC6DE", -"G c #948583", -"H c #9C7D73", -"I c #4A4039", -"J c #6A696A", -"K c #C5C6DE", -"L c #C5CEE6", -"M c #BDCEEE", -"N c #526DA4", -"O c #BDBABD", -"P c #181410", -"Q c #626162", -"R c #BDBECD", -"S c #A4B2C5", -"T c #9CA1BD", -"U c #8391A4", -"V c #39507B", -"W c #8B8583", -"X c #ACAEB4", -"Y c #9CA5B4", -"Z c #9499AC", -"` c #8B95A4", -" . c #8B95AC", -".. c #8B91A4", -"+. c #D5DEEE", -"@. c #CDD6F6", -"#. c #C5CEEE", -"$. c #BDCAE6", -"%. c #DEDEF6", -"&. c #D5DAF6", -"*. c #CDD2EE", -"=. c #5271AC", -". + . + . + . + @ # $ ", -"+ % & & * = - ; + > , ' ) ", -". % ! & ~ { ] ^ . / ( _ ) : ", -"+ % & & * < [ ; } | ' ) : 1 ", -". % 2 & 3 * 4 5 6 $ 7 8 9 0 ", -"+ ! & & a ~ 4 b ' c : d e f ", -". ! & & g ~ h i j c d k l ", -"+ ! 3 ~ * m i n o p 0 q ", -". g g ~ < r s t u v w x ", -"+ & 3 y z A B C D E F @ ", -". & 3 4 G H I J K L M N ", -"+ & * O P Q R F S T U V ", -". 3 { W X Y Z ` .U ..V ", -"+ 3 4 4 +.] ^ @.- #.$.@ ", -". ~ = 4 %.&.&.^ *.#.M > ", -"=.@ =.> =.@ =.> =.@ =.> "}; +static const char* const t_new_icon_data[] = { + "16 20 109 2", + " c None", + ". c #CED1DD", + "+ c #D2D6E0", + "@ c #D3D7E1", + "# c #CED2DD", + "$ c #C8CCD8", + "% c #C1C5D3", + "& c #B5BACA", + "* c #B6BBCB", + "= c #D3D6E1", + "- c #FFFFFF", + "; c #FDFEFE", + "> c #F6F8FB", + ", c #F1F3F8", + "' c #E7E9F1", + ") c #D5D8E3", + "! c #D0D4DF", + "~ c #BABECE", + "{ c #FEFEFE", + "] c #F9FAFC", + "^ c #F4F5F9", + "/ c #E9EBF2", + "( c #D8DBE5", + "_ c #EAECF3", + ": c #D2D6E1", + "< c #B9BECE", + "[ c #FBFCFD", + "} c #F7F8FB", + "| c #EBEDF3", + "1 c #DBDEE7", + "2 c #F0F1F6", + "3 c #D0D3DF", + "4 c #BABFCF", + "5 c #F8F9FB", + "6 c #E5E7ED", + "7 c #B8BCC8", + "8 c #C9CBD4", + "9 c #C8CBD4", + "0 c #C0C4CF", + "a c #A7ACBC", + "b c #9095A7", + "c c #FCFDFE", + "d c #EAECF1", + "e c #C1C5D1", + "f c #C1C4D0", + "g c #B7BBC9", + "h c #AEB3C2", + "i c #ADB1C1", + "j c #848898", + "k c #FAFBFC", + "l c #F5F7FA", + "m c #EFF1F7", + "n c #E8EAF2", + "o c #D7DBE5", + "p c #CCD0DC", + "q c #CACEDA", + "r c #7D828E", + "s c #FDFDFD", + "t c #F3F5F9", + "u c #E0E2EB", + "v c #D7DAE5", + "w c #D1D4E0", + "x c #7E828F", + "y c #E4E6EF", + "z c #DEE1EA", + "A c #D9DDE7", + "B c #D6DAE4", + "C c #7F8390", + "D c #F3F4F9", + "E c #ECEEF4", + "F c #E6E8F0", + "G c #E1E4EC", + "H c #DFE2EB", + "I c #DCDFE9", + "J c #EDEFF6", + "K c #EAECF4", + "L c #E3E6EF", + "M c #E1E4ED", + "N c #E0E3EC", + "O c #808490", + "P c #FCFDFD", + "Q c #F7F9FB", + "R c #F4F6F9", + "S c #F0F2F8", + "T c #E6E8F1", + "U c #E4E7EF", + "V c #E2E5EE", + "W c #808491", + "X c #F6F8FA", + "Y c #F5F6FA", + "Z c #F0F1F8", + "` c #ECEEF5", + " . c #EBEDF4", + ".. c #E8EBF2", + "+. c #E5E7F0", + "@. c #E9EBF3", + "#. c #818491", + "$. c #FCFCFD", + "%. c #F6F7FA", + "&. c #F2F4F8", + "*. c #F4F6FA", + "=. c #F2F4F9", + "-. c #EEF0F7", + ";. c #C5C8D4", + ">. c #818490", + ",. c #808390", + "'. c #7F838F", + "). c #7F828F", + "!. c #757986", + ". + @ @ @ @ @ # $ % & * ", + "= - - - - - ; > , ' ) ! ~ ", + "= - - - - - { ] ^ / ( _ : < ", + "= - - - - - - [ } | 1 } 2 3 4 ", + "= - - - - - - [ 5 6 7 8 9 0 a b ", + "= - - - - - - c ] d e f g h i j ", + "= - - - - - - ; k l m n o p q r ", + "= - - - - - - s k t ' u v : w x ", + "= - - - - - { ] l m y z A ( B C ", + "= - - - - - ; D E _ F y G H I C ", + "= - - - - ; > m J K ' ' L M N O ", + "= - { P P Q R , S J K n T U V W ", + "= - P X X l Y t , Z ` ...F +.W ", + "= - c } } X l t , S J ./ ' U W ", + "= - c } } X Y t , S J ` @.' +.#.", + "= - c } } X Y t , S J ` @.' +.#.", + "= - c } } X l t , S J ` @.' +.#.", + "= - $.%.%.l R &., S J ...' U W ", + "= - ; k k ] 5 l *.=.S -.` _ ' #.", + ";.>.>.O O O O O O ,.'.'.'.'.).!." +}; + + + +static const char* const t_find_icon_data[] = { + "18 18 146 2", + " c None", + ". c #9CA9C3", + "+ c #94ADCF", + "@ c #8BB0D9", + "# c #8FB2D8", + "$ c #9CB2CD", + "% c #9FAEC6", + "& c #85A4CD", + "* c #81B6E5", + "= c #87CAF6", + "- c #92D5F8", + "; c #93D5F8", + "> c #91D5F8", + ", c #94CAEB", + "' c #99B4CD", + ") c #7E9DC7", + "! c #80BCEC", + "~ c #94D7F8", + "{ c #A4E5FA", + "] c #A8E8FB", + "^ c #A0E2FA", + "/ c #9ADCF8", + "( c #A1E2FB", + "_ c #A1DBF1", + ": c #97B3CA", + "< c #7D8BAC", + "[ c #7BAFDF", + "} c #AFEEFC", + "| c #C4FAFD", + "1 c #C1F6FD", + "2 c #B0EEFC", + "3 c #AAE9FB", + "4 c #A7E9FB", + "5 c #B0EFFB", + "6 c #A6D4E3", + "7 c #8EA0B7", + "8 c #7289AF", + "9 c #84C8F5", + "0 c #A1E2FA", + "a c #C2F9FD", + "b c #DFFEFE", + "c c #D4F8FD", + "d c #B7F0FC", + "e c #BEF7FD", + "f c #BBF9FE", + "g c #BFFBFE", + "h c #BBF1F5", + "i c #97B4C4", + "j c #698AB9", + "k c #8ED1F8", + "l c #A2E4FA", + "m c #BBF3FC", + "n c #C5F5FD", + "o c #C7F9FE", + "p c #CDFEFE", + "q c #CBFEFE", + "r c #CEFEFE", + "s c #CCFEFE", + "t c #9CB7C5", + "u c #658ABA", + "v c #91D4F8", + "w c #9DDFF9", + "x c #A5E5FA", + "y c #B0ECFB", + "z c #C2F8FD", + "A c #D4FDFE", + "B c #D5FEFE", + "C c #D7FEFE", + "D c #DBFEFE", + "E c #D8FEFE", + "F c #9DB2C0", + "G c #5F79A3", + "H c #90D4F8", + "I c #99DBF9", + "J c #A5E5FB", + "K c #B6F1FD", + "L c #C8FDFE", + "M c #D2FEFE", + "N c #DAFEFE", + "O c #E3FEFE", + "P c #E8FEFE", + "Q c #DCF6F8", + "R c #98A8B8", + "S c #546489", + "T c #83BDE3", + "U c #9EE0FA", + "V c #B3F2FD", + "W c #C6FDFE", + "X c #D3FEFE", + "Y c #E0FEFE", + "Z c #ECFEFE", + "` c #F4FEFE", + " . c #CCD8DF", + ".. c #7C839A", + "+. c #6382A7", + "@. c #98D6F1", + "#. c #A6E8FB", + "$. c #C5FDFE", + "%. c #E5EDF1", + "&. c #969BAF", + "*. c #5D5D7B", + "=. c #7094B6", + "-. c #99D0E5", + ";. c #B3F1FC", + ">. c #C2FDFE", + ",. c #CEE4E9", + "'. c #979EB1", + "). c #777891", + "!. c #8E8B9B", + "~. c #657E9E", + "{. c #7FA1B7", + "]. c #8AACBD", + "^. c #90AEBD", + "/. c #91A8B8", + "(. c #808DA2", + "_. c #656582", + ":. c #8A8798", + "<. c #9D8372", + "[. c #C58737", + "}. c #C67816", + "|. c #BB8E4F", + "1. c #EAC16F", + "2. c #E29C32", + "3. c #BB6E13", + "4. c #AC742D", + "5. c #E4C478", + "6. c #F5D07E", + "7. c #E09A31", + "8. c #B26915", + "9. c #9D6828", + "0. c #E0C27A", + "a. c #F5D07C", + "b. c #DE9A35", + "c. c #A96316", + "d. c #986831", + "e. c #DBBB76", + "f. c #F5CE78", + "g. c #D89634", + "h. c #7F491C", + "i. c #986C39", + "j. c #D5B571", + "k. c #C09554", + "l. c #795D51", + "m. c #784C27", + "n. c #765D53", + "o. c #5B566D", + " . + @ # $ % ", + " & * = - ; > , ' ", + " ) ! ~ { ] ^ / ( _ : ", + "< [ - } | 1 2 3 4 5 6 7 ", + "8 9 0 a b c d e f g h i ", + "j k l m c n o p q r s t ", + "u v w x y z A B C D E F ", + "G H I J K L M N O P Q R ", + "S T I U V W X Y Z ` ... ", + " +.@.#.V $.X Y Z %.&.*. ", + " =.-.;.>.r N ,.'.).!. ", + " ~.{.].^./.(._.:.<.[.}. ", + " |.1.2.3. ", + " 4.5.6.7.8. ", + " 9.0.a.b.c. ", + " d.e.f.g.h.", + " i.j.k.l.", + " m.n.o." +}; + + +static const char* const t_about_icon_data[] = { + "16 16 68 2", + "Qt c None", + "#a c #002441", + ".8 c #00244a", + ".r c #00284a", + ".1 c #002852", + ".W c #002c52", + ".4 c #003052", + ".Q c #00305a", + ".V c #00345a", + ".y c #003462", + "## c #003862", + "#b c #00386a", + ".# c #003c6a", + ".I c #003c73", + ".b c #00406a", + ".a c #00446a", + ".s c #004473", + ".P c #004873", + ".z c #082c4a", + ".R c #082c52", + ".j c #083052", + ".k c #08406a", + ".d c #084073", + ".c c #084473", + ".U c #08487b", + ".x c #084c7b", + ".9 c #084c83", + ".J c #102c4a", + ".7 c #103c62", + ".i c #10446a", + ".H c #104c7b", + "#. c #10507b", + ".q c #105583", + ".p c #184862", + ".h c #185583", + ".O c #185983", + ".0 c #185d8b", + ".S c #185d94", + ".w c #18618b", + ".K c #186594", + ".Y c #204c62", + ".v c #20506a", + ".e c #205d7b", + ".A c #20618b", + ".Z c #20658b", + ".5 c #206594", + ".g c #20698b", + ".2 c #20699c", + ".M c #295573", + ".l c #296183", + ".N c #296d94", + ".G c #296d9c", + ".f c #297194", + ".F c #317194", + ".X c #3179a4", + ".E c #39799c", + ".m c #397da4", + ".3 c #3981a4", + ".n c #3981ac", + ".T c #4185ac", + ".B c #4189b4", + ".t c #418db4", + ".u c #4a91b4", + ".C c #5299bd", + ".D c #5299c5", + ".L c #529dc5", + ".6 c #fffaff", + ".o c #ffffff", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", + "QtQtQtQtQtQt.#.#.#.a.bQtQtQtQtQt", + "QtQtQtQt.c.d.e.f.g.h.i.j.cQtQtQt", + "QtQtQt.k.l.m.n.o.o.p.q.d.r.cQtQt", + "QtQtQt.s.m.t.u.o.o.v.w.x.y.zQtQt", + "QtQt.#.A.B.C.D.u.E.F.G.H.I.y.JQt", + "QtQt.#.K.t.L.o.o.o.M.N.O.P.Q.RQt", + "QtQt.#.S.T.C.D.o.o.v.N.O.U.V.WQt", + "QtQt.V.q.X.t.u.o.o.Y.Z.0.P.Q.1Qt", + "QtQt.y.k.2.m.3.o.o.p.O.q.#.4.rQt", + "QtQtQt.1.U.5.6.o.o.o.7.#.W.8QtQt", + "QtQtQt.c.r.#.x.9#.#.##.4#a.cQtQt", + "QtQtQtQt.c.r###b.V.W.r#a.cQtQtQt", + "QtQtQtQtQtQt.R.R.W.8.rQtQtQtQtQt", + "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt" +}; + + + +static const char* const t_help_icon_data[] = { + "20 20 215 2", + " c None", + ". c #4381FF", + "+ c #4884FE", + "@ c #4D87FE", + "# c #4C86FE", + "$ c #4481FE", + "% c #3D7DFF", + "& c #4583FF", + "* c #5B91FE", + "= c #7AA5FE", + "- c #98B9FC", + "; c #AAC3F9", + "> c #AAC4F9", + ", c #95B7FB", + "' c #7DA7FD", + ") c #5D91FC", + "! c #3F7DFD", + "~ c #4F89FE", + "{ c #76A3FD", + "] c #AAC6FD", + "^ c #CCDCFB", + "/ c #DEE8FB", + "( c #E2EAF9", + "_ c #E0E9FA", + ": c #DFE8FA", + "< c #D3E0FB", + "[ c #B5CCFB", + "} c #7CA6FB", + "| c #4B85FA", + "1 c #4C87FE", + "2 c #81AAFD", + "3 c #BCD2FD", + "4 c #CEDDFB", + "5 c #DBE5FA", + "6 c #EAEFFB", + "7 c #F9FBFE", + "8 c #FAFCFE", + "9 c #F6F9FD", + "0 c #E3EBFB", + "a c #D9E5FB", + "b c #C3D6FB", + "c c #8AAFF9", + "d c #4682FB", + "e c #6C9CFE", + "f c #AFCAFE", + "g c #C4D7FC", + "h c #D6E2FA", + "i c #F4F7FD", + "j c #F9FBFF", + "k c #E9F0FF", + "l c #E5EEFF", + "m c #F1F6FF", + "n c #FCFDFF", + "o c #ECF2FD", + "p c #D2E1FD", + "q c #B7CEFC", + "r c #709EFB", + "s c #3576FE", + "t c #528BFE", + "u c #8EB3FE", + "v c #B4CDFF", + "w c #BCD1FB", + "x c #E6EDFC", + "y c #FDFEFF", + "z c #E3EDFF", + "A c #C1D5FF", + "B c #BCD1FF", + "C c #C8D9FC", + "D c #F4F7FC", + "E c #D7E4FF", + "F c #B4CDFE", + "G c #8CB1FC", + "H c #4480FC", + "I c #407FFF", + "J c #6296FE", + "K c #9ABBFE", + "L c #A6C3FF", + "M c #B3CBFD", + "N c #E6EDFE", + "O c #F7F9FF", + "P c #C0D4FF", + "Q c #A7C4FF", + "R c #A6C2FE", + "S c #AFC7F5", + "T c #F8FAFF", + "U c #C1D4FE", + "V c #82AAFD", + "W c #6D9DFD", + "X c #4682FE", + "Y c #266DFF", + "Z c #417FFF", + "` c #6B9BFE", + " . c #92B6FF", + ".. c #94B7FF", + "+. c #98BAFF", + "@. c #AEC9FF", + "#. c #B0CAFF", + "$. c #9ABBFF", + "%. c #A3BEF6", + "&. c #D6E1F6", + "*. c #FCFDFE", + "=. c #E3ECFE", + "-. c #8CB1FD", + ";. c #5990FF", + ">. c #568EFF", + ",. c #4986FF", + "'. c #266EFF", + "). c #417FFE", + "!. c #83ADFF", + "~. c #85AEFF", + "{. c #84ADFF", + "]. c #86AAF3", + "^. c #DDE6F8", + "/. c #FBFCFE", + "(. c #F0F5FE", + "_. c #A9C5FD", + ":. c #6095FE", + "<. c #548DFF", + "[. c #508AFF", + "}. c #3E7DFE", + "|. c #6296FD", + "1. c #6E9EFF", + "2. c #6E9DFF", + "3. c #76A1F8", + "4. c #CEDBF6", + "5. c #FEFEFF", + "6. c #EAF0FE", + "7. c #9CBCFC", + "8. c #5C92FE", + "9. c #558DFF", + "0. c #256DFE", + "a. c #3A7BFF", + "b. c #6195FF", + "c. c #6095FF", + "d. c #5F94FE", + "e. c #7FA8F9", + "f. c #E5EBF9", + "g. c #ACC7FD", + "h. c #4B87FF", + "i. c #246BFD", + "j. c #3779FF", + "k. c #4B86FF", + "l. c #5D92FF", + "m. c #5E93FF", + "n. c #5D93FF", + "o. c #7CA5FC", + "p. c #DAE5FB", + "q. c #D8E5FF", + "r. c #7CA7FF", + "s. c #5C92FF", + "t. c #5B91FF", + "u. c #3F7EFF", + "v. c #2269FC", + "w. c #427FFE", + "x. c #5C91FE", + "y. c #6497FF", + "z. c #6F9DFC", + "A. c #B0C9FA", + "B. c #ACC6FC", + "C. c #6F9EFF", + "D. c #5A90FE", + "E. c #3375FD", + "F. c #3879FD", + "G. c #548BFC", + "H. c #6D9CFD", + "I. c #709FFF", + "J. c #709EFF", + "K. c #82A8F7", + "L. c #C9D9F8", + "M. c #CDDCFA", + "N. c #8DB3FF", + "O. c #70A0FF", + "P. c #6C9CFD", + "Q. c #4C85FB", + "R. c #286DFB", + "S. c #407EFB", + "T. c #6194FA", + "U. c #77A4FC", + "V. c #7BA7FF", + "W. c #7BA6FE", + "X. c #9CBAF8", + "Y. c #F0F4FD", + "Z. c #F5F8FF", + "`. c #ABC7FF", + " + c #7CA8FF", + ".+ c #77A3FC", + "++ c #5D90F8", + "@+ c #3475F8", + "#+ c #417EFA", + "$+ c #5F92F9", + "%+ c #86AEFE", + "&+ c #95B7FD", + "*+ c #C4D7FF", + "=+ c #C9DBFF", + "-+ c #9CBCFF", + ";+ c #87AEFE", + ">+ c #7BA5FA", + ",+ c #5B8FF7", + "'+ c #3877F6", + ")+ c #3778FB", + "!+ c #4C85F9", + "~+ c #6B99F5", + "{+ c #83A8F6", + "]+ c #94B6FC", + "^+ c #95B7FC", + "/+ c #83A8F5", + "(+ c #6996F3", + "_+ c #4882F6", + ":+ c #2F72F8", + "<+ c #3073FB", + "[+ c #3375FC", + "}+ c #3376FE", + "|+ c #3275FD", + "1+ c #3173FA", + "2+ c #2C6FF8", + " ", + " . + @ # $ % ", + " & * = - ; > , ' ) ! ", + " ~ { ] ^ / ( _ : < [ } | ", + " 1 2 3 4 5 6 7 8 9 0 a b c d ", + " . e f g h i j k l m n o p q r s ", + " t u v w x y z A B C D j E F G H ", + " I J K L M N O P Q R S D T U V W X Y ", + " Z ` ...+.@.#.$...%.&.*.=.-.;.>.,.'. ", + " ).W !.!.!.~.~.{.].^./.(._.:.<.<.[.'. ", + " }.|.1.2.2.2.2.3.4.5.6.7.8.9.9.9.[.0. ", + " a.9.b.b.b.c.d.e.f.O g.J ;.;.;.;.h.i. ", + " j.k.l.m.n.l.l.o.p.q.r.l.s.s.s.t.u.v. ", + " w.x.y.y.y.y.z.A.B.C.y.y.y.y.D.E. ", + " F.G.H.I.I.J.K.L.M.N.O.I.I.P.Q.R. ", + " S.T.U.V.W.X.Y.Z.`. +V..+++@+ ", + " #+$+} %+&+*+=+-+;+>+,+'+ ", + " )+!+~+{+]+^+/+(+_+:+ ", + " <+[+}+|+1+2+ ", + " " +}; + + +static const char* const t_comment_icon_data[] = { + "14 16 102 2", + " c None", + ". c #A4B6E6", + "+ c #9CB2DE", + "@ c #5A75AC", + "# c #B4896A", + "$ c #E6D2B4", + "% c #FFFFFF", + "& c #F6F6FF", + "* c #E6EAF6", + "= c #DEE6F6", + "- c #C5D2EE", + "; c #CDDAF6", + "> c #5275AC", + ", c #AC856A", + "' c #E6CEB4", + ") c #C58D52", + "! c #FFFAFF", + "~ c #EEEEFF", + "{ c #E6E6F6", + "] c #D5DEF6", + "^ c #CDD6EE", + "/ c #ACBEE6", + "( c #AC8573", + "_ c #E6CEAC", + ": c #BD8541", + "< c #E6EAFF", + "[ c #CDDAEE", + "} c #6A85B4", + "| c #A48573", + "1 c #BD814A", + "2 c #FFF6FF", + "3 c #EEF2FF", + "4 c #DEE2F6", + "5 c #D5DAEE", + "6 c #B4917B", + "7 c #C58952", + "8 c #C58541", + "9 c #BD7D4A", + "0 c #835531", + "a c #EEEEF6", + "b c #C5A59C", + "c c #C5854A", + "d c #BD7D41", + "e c #835029", + "f c #180C08", + "g c #F6F2FF", + "h c #EEE6E6", + "i c #F6EEE6", + "j c #DEAA94", + "k c #835031", + "l c #201010", + "m c #E6E2EE", + "n c #EECABD", + "o c #BD856A", + "p c #B4795A", + "q c #201410", + "r c #EEDEDE", + "s c #F6DED5", + "t c #B49183", + "u c #7B5D4A", + "v c #5A4C41", + "w c #292020", + "x c #4A658B", + "y c #EEEAFF", + "z c #D5D2D5", + "A c #F6DACD", + "B c #B48D7B", + "C c #7B5D52", + "D c #312C29", + "E c #5A555A", + "F c #BDC6DE", + "G c #948583", + "H c #9C7D73", + "I c #4A4039", + "J c #6A696A", + "K c #C5C6DE", + "L c #C5CEE6", + "M c #BDCEEE", + "N c #526DA4", + "O c #BDBABD", + "P c #181410", + "Q c #626162", + "R c #BDBECD", + "S c #A4B2C5", + "T c #9CA1BD", + "U c #8391A4", + "V c #39507B", + "W c #8B8583", + "X c #ACAEB4", + "Y c #9CA5B4", + "Z c #9499AC", + "` c #8B95A4", + " . c #8B95AC", + ".. c #8B91A4", + "+. c #D5DEEE", + "@. c #CDD6F6", + "#. c #C5CEEE", + "$. c #BDCAE6", + "%. c #DEDEF6", + "&. c #D5DAF6", + "*. c #CDD2EE", + "=. c #5271AC", + ". + . + . + . + @ # $ ", + "+ % & & * = - ; + > , ' ) ", + ". % ! & ~ { ] ^ . / ( _ ) : ", + "+ % & & * < [ ; } | ' ) : 1 ", + ". % 2 & 3 * 4 5 6 $ 7 8 9 0 ", + "+ ! & & a ~ 4 b ' c : d e f ", + ". ! & & g ~ h i j c d k l ", + "+ ! 3 ~ * m i n o p 0 q ", + ". g g ~ < r s t u v w x ", + "+ & 3 y z A B C D E F @ ", + ". & 3 4 G H I J K L M N ", + "+ & * O P Q R F S T U V ", + ". 3 { W X Y Z ` .U ..V ", + "+ 3 4 4 +.] ^ @.- #.$.@ ", + ". ~ = 4 %.&.&.^ *.#.M > ", + "=.@ =.> =.@ =.> =.@ =.> " +}; static const char* const t_remove_export_icon_data[] = { -"18 16 7 1", -" c None", -". c #68568B", -"+ c #6C5891", -"@ c #6F5A95", -"# c #5F5377", -"$ c #63567C", -"% c #665880", -" ", -" ", -" ", -" .+@@ .+@@", -" .+@@ .+@@ ", -" .+@@ .+@@ ", -" .+@@ .+@@ ", -".+@@ .+@@ ", -"#$%% #$%% ", -" #$%% #$%% ", -" #$%% #$%% ", -" #$%% #$%% ", -" #$%% #$%%", -" ", -" ", -" "}; + "18 16 7 1", + " c None", + ". c #68568B", + "+ c #6C5891", + "@ c #6F5A95", + "# c #5F5377", + "$ c #63567C", + "% c #665880", + " ", + " ", + " ", + " .+@@ .+@@", + " .+@@ .+@@ ", + " .+@@ .+@@ ", + " .+@@ .+@@ ", + ".+@@ .+@@ ", + "#$%% #$%% ", + " #$%% #$%% ", + " #$%% #$%% ", + " #$%% #$%% ", + " #$%% #$%%", + " ", + " ", + " " +}; static const char* const t_add_export_icon_data[] = { -"18 16 7 1", -" c None", -". c #6F5A95", -"+ c #6C5891", -"@ c #68568B", -"# c #665880", -"$ c #63567C", -"% c #5F5377", -" ", -" ", -" ", -"..+@ ..+@ ", -" ..+@ ..+@ ", -" ..+@ ..+@ ", -" ..+@ ..+@ ", -" ..+@ ..+@", -" ##$% ##$%", -" ##$% ##$% ", -" ##$% ##$% ", -" ##$% ##$% ", -"##$% ##$% ", -" ", -" ", -" "}; - - - -static const char* const t_showc_icon_data[] = { -"16 16 120 2", -"Qt c None", -"#K c None", -"#R c #4a4483", -".e c #7371ac", -".V c #525094", -".n c #9c95c5", -"#J c #41448b", -"#C c #7b75ac", -"#S c #6a65a4", -".3 c #9495c5", -".f c #8b89bd", -"#Q c #4a488b", -".m c #736dac", -".o c #9c95c5", -".# c #8b85bd", -"#v c #7375ac", -".I c #a4a1cd", -"#X c #52508b", -".2 c #524c94", -".y c #9c99c5", -"#B c #414083", -".P c #5a5d9c", -".x c #6a69a4", -".W c #9c9dcd", -"#1 c #5a5594", -"#L c #6a69a4", -"#b c #8b8dbd", -".a c #8381b4", -".p c #9495c5", -".Q c #9c9dc5", -"#I c #4a488b", -"#a c #4a488b", -".g c #8b89bd", -"#Y c #5a5d9c", -"#P c #52508b", -"#n c #8b85bd", -".d c #7b79b4", -".z c #9c99c5", -"#W c #525594", -".J c #a49dcd", -"#u c #4a488b", -".U c #525594", -"#D c #7b79ac", -"#A c #4a488b", -".H c #6a6da4", -"#0 c #62619c", -".4 c #9c95c5", -"#T c #6a69a4", -".b c #8b89bd", -"#H c #5a5994", -".h c #8b8dbd", -".l c #8381b4", -"#h c #525594", -"#i c #8b8dbd", -".q c #9c99c5", -".1 c #6a65a4", -".A c #a4a5cd", -".K c #acaad5", -"#O c #62619c", -"#w c #9c95c5", -".X c #b4b2d5", -".O c #7371ac", -"#M c #8b8dbd", -"#V c #7b75ac", -"#t c #625d9c", -"#z c #6a6da4", -".i c #b4b2d5", -"#c c #b4b2d5", -"#Z c #6a6da4", -".c c #8381b4", -".r c #acaed5", -"## c #8381b4", -".L c #cdcae6", -".R c #b4b2d5", -"#N c #8b8dbd", -"#m c #5a5594", -".w c #9c95c5", -".T c #a49dcd", -"#G c #8385b4", -"#s c #9491bd", -".B c #c5c2de", -"#E c #cdc6e6", -".5 c #dedeee", -"#U c #aca5cd", -"#o c #bdbad5", -"#y c #a4a1cd", -".j c #cdcae6", -".S c #e6e6f6", -"#f c #9491bd", -"#e c #9c95c5", -"#l c #9c9dc5", -"#g c #a4a1cd", -".k c #b4b6d5", -".G c #bdbad5", -".Y c #bdbade", -".0 c #bdbede", -".8 c #c5c2de", -"#r c #cdc6e6", -"#. c #cdcae6", -"#d c #cdcee6", -".v c #d5cee6", -"#j c #d5d2e6", -"#p c #d5d2ee", -".F c #d5d6ee", -"#k c #ded6ee", -".7 c #dedaee", -"#q c #dedaf6", -"#x c #dedeee", -".M c #e6deee", -".N c #e6def6", -".9 c #e6e2ee", -".Z c #e6e2f6", -".C c #e6e6f6", -".s c #eee6f6", -".E c #eeeaf6", -".6 c #eeeef6", -"#F c #f6f2ff", -".t c #fff6ff", -".u c #fffaff", -".D c #ffffff", -"QtQtQtQtQtQtQtQt.#.a.b.c.d.eQtQt", -"QtQtQtQtQtQt.f.g.h.i.j.k.l.mQtQt", -"QtQtQt.n.o.p.q.r.s.t.u.v.w.xQtQt", -"QtQt.y.z.A.B.C.D.D.D.E.F.G.HQtQt", -".I.J.K.L.s.D.D.D.D.u.F.M.N.O.PQt", -".Q.R.S.t.D.D.D.D.u.t.k.s.M.T.U.V", -".W.X.s.C.N.C.u.D.u.E.Y.Z.N.0.1.2", -".3.4.5.D.6.7.G.8.9.7.k.N.F#.###a", -"Qt#b#c.D.D.D.u#d#e#f.0#..v#.#g#h", -"Qt.f#i.C.D.D.u.Z#..8#j#k#..8#l#m", -"QtQt#n#o.D.D.t#p.s.9#q#j#r#s#t#u", -"QtQt#v#w.9.u.s.7.9#x#d#y#z#A#BQt", -"QtQt#C#D#E#F.Z#x.N.0#G#H#I#JQtQt", -"QtQt#K#L#M.C.7.v#N#O#P#Q#RQtQtQt", -"QtQtQt#S#T#o#U#V#W#XQtQtQtQtQtQt", -"QtQtQtQt#Y#Z#0#1QtQtQtQtQtQtQtQt"}; - -static const char* const t_deletec_icon_data[] = { -"16 16 45 1", -"e c None", -"t c None", -"m c None", -"f c None", -"d c None", -". c None", -"w c #73819c", -"B c #7b819c", -"c c #7b859c", -"F c #acb6cd", -"A c #b4b6cd", -"a c #b4becd", -"b c #b4bed5", -"# c #bdbed5", -"s c #bdc2d5", -"z c #bdc6d5", -"E c #c5cad5", -"H c #c5cade", -"J c #c5cede", -"K c #cdcede", -"O c #cdd2de", -"I c #cdd2e6", -"N c #cdd6de", -"Q c #cdd6e6", -"k c #d5d6e6", -"M c #d5dae6", -"r c #d5dee6", -"v c #dedee6", -"l c #dedeee", -"q c #dee2ee", -"D c #e6e2ee", -"P c #e6e6ee", -"y c #e6e6f6", -"j c #e6eaf6", -"i c #eeeaee", -"p c #eeeaf6", -"u c #eeeef6", -"C c #eef2f6", -"o c #f6eeff", -"L c #f6f2f6", -"x c #f6f2ff", -"h c #f6f6ff", -"G c #ff0000", -"n c #fffaff", -"g c #ffffff", -"..#a#b#a#bcdef..", -"..aghhijklac.m..", -"..#gnhopqr#sct..", -"..aghhuuvlwcwc..", -"..#gnhxuyvkzAB..", -"..aghhCCDqEaFc..", -"..#GGhhuyGG##w..", -"..anGGppGGHHzc..", -"..#hxGGGGkIJKB..", -"..ahLuGGMMNIKc..", -"..#hxGGGlMkIIw..", -"..ahpGGGGvkkOc..", -"..#LGGPqGGMQkB..", -"..aGGyqqvGGkOc..", -"..#uyPPqlMMkIw..", -"..wcwcwcwcwcwc.."}; - - -static const char* const m_import_icon_data[] = { -"16 18 24 1", -" c None", -". c #C12896", -"+ c #002E55", -"@ c #003565", -"# c #003C74", -"$ c #004284", -"% c #004993", -"& c #004FA2", -"* c #0056B1", -"= c #005EC1", -"- c #0063D1", -"; c #006BE0", -"> c #0071EF", -", c #0078FF", -"' c #003B74", -") c #0050A3", -"! c #0056B2", -"~ c #005DC1", -"{ c #0064D1", -"] c #0071F0", -"^ c #003564", -"/ c #004283", -"( c #0050A2", -"_ c #0057B2", -" .... ", -" ", -" .... ", -" .... ", -" ", -" .... ", -" .... ", -" . .... . ", -" .. .... .. ", -" .......... ", -" ........ ", -" ...... ", -" .... ", -" .. ", -" +@#$%&*=-;>, ", -" ", -" +@'$%)!~{;], ", -" +^'/%(_~{;>, "}; - -static const char* const m_export_icon_data[] = { -"16 18 24 1", -" c None", -". c #00CC0A", -"+ c #002E55", -"@ c #003565", -"# c #003C74", -"$ c #004284", -"% c #004993", -"& c #004FA2", -"* c #0056B1", -"= c #005EC1", -"- c #0063D1", -"; c #006BE0", -"> c #0071EF", -", c #0078FF", -"' c #003B74", -") c #0050A3", -"! c #0056B2", -"~ c #005DC1", -"{ c #0064D1", -"] c #0071F0", -"^ c #003564", -"/ c #004283", -"( c #0050A2", -"_ c #0057B2", -" .. ", -" .... ", -" ...... ", -" ........ ", -" .......... ", -" .. .... .. ", -" . .... . ", -" .... ", -" .... ", -" ", -" .... ", -" .... ", -" ", -" .... ", -" +@#$%&*=-;>, ", -" ", -" +@'$%)!~{;], ", -" +^'/%(_~{;>, "}; - -static const char* const m_borrow_icon_data[] = { -"32 32 53 1", -". c None", -"# c None", -"a c #000000", -"V c #838583", -"U c #8b898b", -"S c #8b8d8b", -"T c #948d94", -"R c #949194", -"L c #949594", -"Q c #9c959c", -"H c #9c999c", -"Y c #9c9d9c", -"X c #a49da4", -"C c #a4a1a4", -"A c #a4a5a4", -"G c #aca5a4", -"q c #aca5ac", -"f c #acaaac", -"l c #acaeac", -"E c #b4aeac", -"p c #b4aeb4", -"c c #b4b2b4", -"B c #b4b6b4", -"t c #bdb6bd", -"o c #bdbabd", -"k c #bdbebd", -"n c #c5bec5", -"j c #c5c2c5", -"i c #c5c6c5", -"s c #cdc6cd", -"M c #cdcacd", -"O c #cdcecd", -"N c #d5ced5", -"P c #d5d2d5", -"J c #d5d6d5", -"I c #ded6de", -"F c #dedade", -"K c #dedede", -"W c #e6dee6", -"D c #e6e2e6", -"u c #e6e6e6", -"x c #eee6e6", -"y c #eee6ee", -"g c #eeeaee", -"v c #eeeeee", -"e c #f6eeee", -"d c #f6eef6", -"r c #f6f2ee", -"w c #f6f2f6", -"b c #f6f6f6", -"z c #fff6ff", -"m c #fffaff", -"h c #ffffff", -"................................", -"................................", -"#a############################a#", -"aba##########################aca", -"ada##########################aca", -"adea##aaa##############aaa##acfa", -"agda#ahhha############aijka#alfa", -"#agdaabhhha##########ajjkkaalfa#", -"#aggaammhha##########ajknoaapqa#", -"##aggarmmhha########asknttapqa##", -"##augaabmmha###aa###ajjooaafqa##", -"###augvwbmma##aaja##ajooccfqa###", -"###axygvwza#aahasiaa#aocclfAa###", -"####ayuggwbahhhajsjjaoBclfCa####", -"####aDyyevzzhhhasijnkBtEfACa####", -"#####aDxuvvwbmhaajkkBBpfACa#####", -"#####aDDyyddzaa##aaotcpfqCa#####", -"####aFFDDyxva######acpAGCCHa####", -"##aaIJFKDuga########affCCHHLaa##", -"#aMNOPJFKDDa########aqCCHHQRSSa#", -"aiMMNPaaaKDa########aACaaaQSTUUa", -"asiMMa###aKDa######aACa###aSUUVa", -"#aasa####aWWa######aCXa####aUaa#", -"###a######aWKa####aqCa######a###", -"##########aFWa####aCXa##########", -"###########aFWa##aCCa###########", -"############aFWaaACa############", -"############aFFaCCYa############", -"#############aFaCXa#############", -"##############aaYa##############", -"###############aa###############", -"................................"}; - -static const char* const t_sborrow_icon_data[] = { -"32 32 56 1", -". c None", -"# c None", -"a c #000000", -"X c #8b898b", -"U c #8b8d8b", -"T c #949194", -"L c #949594", -"H c #9c999c", -"1 c #9c9d9c", -"0 c #a49da4", -"C c #a4a1a4", -"A c #a4a5a4", -"G c #aca5a4", -"q c #aca5ac", -"f c #acaaac", -"l c #acaeac", -"E c #b4aeac", -"p c #b4aeb4", -"c c #b4b2b4", -"B c #b4b6b4", -"t c #bdb6bd", -"o c #bdbabd", -"k c #bdbebd", -"n c #c5bec5", -"j c #c5c2c5", -"i c #c5c6c5", -"s c #cdc6cd", -"M c #cdcacd", -"O c #cdcecd", -"N c #d5ced5", -"P c #d5d2d5", -"J c #d5d6d5", -"I c #ded6de", -"F c #dedade", -"K c #dedede", -"Z c #e6dee6", -"D c #e6e2e6", -"u c #e6e6e6", -"R c #ee4841", -"x c #eee6e6", -"y c #eee6ee", -"g c #eeeaee", -"v c #eeeeee", -"S c #f64841", -"Q c #f6484a", -"Y c #f6ea41", -"W c #f6ee41", -"e c #f6eeee", -"d c #f6eef6", -"r c #f6f2ee", -"w c #f6f2f6", -"b c #f6f6f6", -"V c #ffee4a", -"z c #fff6ff", -"m c #fffaff", -"h c #ffffff", -"................................", -"................................", -"#a############################a#", -"aba##########################aca", -"ada##########################aca", -"adea##aaa##############aaa##acfa", -"agda#ahhha############aijka#alfa", -"#agdaabhhha##########ajjkkaalfa#", -"#aggaammhha##########ajknoaapqa#", -"##aggarmmhha########asknttapqa##", -"##augaabmmha###aa###ajjooaafqa##", -"###augvwbmma##aaja##ajooccfqa###", -"###axygvwza#aahasiaa#aocclfAa###", -"####ayuggwbahhhajsjjaoBclfCa####", -"####aDyyevzzhhhasijnkBtEfACa####", -"#####aDxuvvwbmhaajkkBBpfACa#####", -"#####aDDyyddzaa##aaotcpfqCa#####", -"####aFFDDyxva######acpAGCCHa####", -"##aaIJFKDuga########affCCHHLaa##", -"#aMNOPJFKDDa########aqCQRQSTUUa#", -"aiMMNPaaaKDa########aACSVWQSQXXa", -"asiMMa###aKDa##QSQRQSQRQYVYVSQRa", -"#aasa####aZZa##QVWVWVWVWVWVWVWQQ", -"###a######aZKa#QYVYVYVYVYVYVYVYQ", -"##########aFZa#SVWVWVWVWVWVWVWVS", -"###########aFZaQYVYVYVYVYVYVYVYQ", -"############aFZQVWVWVWVWVWVWVWQQ", -"############aFFQRQSQRQSQYVYVRQS#", -"#############aFaC0a####SVWQSQ###", -"##############aa1a#####QSQR#####", -"###############aa###############", -"................................"}; - -static const char* const t_cborrow_icon_data[] = { -"32 32 50 1", -". c None", -"# c None", -"a c #000000", -"U c #838583", -"T c #8b898b", -"R c #8b8d8b", -"S c #948d94", -"C c #a4a1a4", -"A c #a4a5a4", -"J c #aca5a4", -"q c #aca5ac", -"f c #acaaac", -"l c #acaeac", -"E c #b4aeac", -"p c #b4aeb4", -"c c #b4b2b4", -"B c #b4b6b4", -"t c #bdb6bd", -"o c #bdbabd", -"k c #bdbebd", -"n c #c5bec5", -"j c #c5c2c5", -"i c #c5c6c5", -"s c #cdc6cd", -"N c #cdcacd", -"P c #cdcecd", -"O c #d5ced5", -"Q c #d5d2d5", -"L c #d5d6d5", -"K c #ded6de", -"I c #dedade", -"M c #dedede", -"V c #e6dee6", -"D c #e6e2e6", -"u c #e6e6e6", -"G c #ee4841", -"x c #eee6e6", -"y c #eee6ee", -"g c #eeeaee", -"v c #eeeeee", -"H c #f64841", -"F c #f6484a", -"e c #f6eeee", -"d c #f6eef6", -"r c #f6f2ee", -"w c #f6f2f6", -"b c #f6f6f6", -"z c #fff6ff", -"m c #fffaff", -"h c #ffffff", -"................................", -"................................", -"#a############################a#", -"aba##########################aca", -"ada##########################aca", -"adea##aaa##############aaa##acfa", -"agda#ahhha############aijka#alfa", -"#agdaabhhha##########ajjkkaalfa#", -"#aggaammhha##########ajknoaapqa#", -"##aggarmmhha########asknttapqa##", -"##augaabmmha###aa###ajjooaafqa##", -"###augvwbmma##aaja##ajooccfqa###", -"###axygvwza#aahasiaa#aocclfAa###", -"####ayuggwbahhhajsjjaoBclfCa####", -"####aDyyevzzhhhasijnkBtEfACa####", -"#####aDxuvvwbmhFGFkkBBpfACa#GFH#", -"#####aDDyyddzaaHFFFotcpfqCaHFFF#", -"####aIIDDyxva##FHFGFcpAJCCGFHFG#", -"##aaKLIMDuga####FHFFFffCCHFFFH##", -"#aNOPQLIMDDa#####FHFGFCCGFHFGRa#", -"aiNNOQaaaMDa######FHFFFHFFFHSTTa", -"asiNNa###aMDa######FHFGFHFGRTTUa", -"#aasa####aVVa######aFHFFFH#aTaa#", -"###a######aVMa####aqGFHFGF##a###", -"##########aIVa####aHFFFHFFF#####", -"###########aIVa##aGFHFGFHFGF####", -"############aIVaaHFFFH##FHFFF###", -"############aIIaGFHFG####FHFGF##", -"#############aIHFFFH######FHFFF#", -"##############aFHFG########FHFG#", -"###############FFH##########FHF#", -"................................"}; - - -static const char* const t_colorconfig_icon_data[] = { -"16 16 9 1", -". c None", -"# c #000000", -"a c #0000ff", -"d c #00c200", -"c c #00c2c5", -"b c #c500c5", -"f c #ff0000", -"e c #ffaa5a", -"g c #ffdeac", -"......###.......", -"......#aa##.....", -"......###aa###..", -"....###bb##aaa##", -"....#cc##bb##aa#", -"....###cc###bba#", -"..###dd##ccc##a#", -"..#ee##dd##cc#a#", -"..###ee###ddc#a#", -"..#ff##eee#dc#a#", -".##ffff##e#dc###", -"#gg###ff#e#dc#..", -"#gggg#ff#e#dc#..", -"#ggg#fff#e###...", -"#gg#.##f#e#.....", -".##....###......"}; + "18 16 7 1", + " c None", + ". c #6F5A95", + "+ c #6C5891", + "@ c #68568B", + "# c #665880", + "$ c #63567C", + "% c #5F5377", + " ", + " ", + " ", + "..+@ ..+@ ", + " ..+@ ..+@ ", + " ..+@ ..+@ ", + " ..+@ ..+@ ", + " ..+@ ..+@", + " ##$% ##$%", + " ##$% ##$% ", + " ##$% ##$% ", + " ##$% ##$% ", + "##$% ##$% ", + " ", + " ", + " " +}; + + + +static const char* const t_showc_icon_data[] = { + "16 16 120 2", + "Qt c None", + "#K c None", + "#R c #4a4483", + ".e c #7371ac", + ".V c #525094", + ".n c #9c95c5", + "#J c #41448b", + "#C c #7b75ac", + "#S c #6a65a4", + ".3 c #9495c5", + ".f c #8b89bd", + "#Q c #4a488b", + ".m c #736dac", + ".o c #9c95c5", + ".# c #8b85bd", + "#v c #7375ac", + ".I c #a4a1cd", + "#X c #52508b", + ".2 c #524c94", + ".y c #9c99c5", + "#B c #414083", + ".P c #5a5d9c", + ".x c #6a69a4", + ".W c #9c9dcd", + "#1 c #5a5594", + "#L c #6a69a4", + "#b c #8b8dbd", + ".a c #8381b4", + ".p c #9495c5", + ".Q c #9c9dc5", + "#I c #4a488b", + "#a c #4a488b", + ".g c #8b89bd", + "#Y c #5a5d9c", + "#P c #52508b", + "#n c #8b85bd", + ".d c #7b79b4", + ".z c #9c99c5", + "#W c #525594", + ".J c #a49dcd", + "#u c #4a488b", + ".U c #525594", + "#D c #7b79ac", + "#A c #4a488b", + ".H c #6a6da4", + "#0 c #62619c", + ".4 c #9c95c5", + "#T c #6a69a4", + ".b c #8b89bd", + "#H c #5a5994", + ".h c #8b8dbd", + ".l c #8381b4", + "#h c #525594", + "#i c #8b8dbd", + ".q c #9c99c5", + ".1 c #6a65a4", + ".A c #a4a5cd", + ".K c #acaad5", + "#O c #62619c", + "#w c #9c95c5", + ".X c #b4b2d5", + ".O c #7371ac", + "#M c #8b8dbd", + "#V c #7b75ac", + "#t c #625d9c", + "#z c #6a6da4", + ".i c #b4b2d5", + "#c c #b4b2d5", + "#Z c #6a6da4", + ".c c #8381b4", + ".r c #acaed5", + "## c #8381b4", + ".L c #cdcae6", + ".R c #b4b2d5", + "#N c #8b8dbd", + "#m c #5a5594", + ".w c #9c95c5", + ".T c #a49dcd", + "#G c #8385b4", + "#s c #9491bd", + ".B c #c5c2de", + "#E c #cdc6e6", + ".5 c #dedeee", + "#U c #aca5cd", + "#o c #bdbad5", + "#y c #a4a1cd", + ".j c #cdcae6", + ".S c #e6e6f6", + "#f c #9491bd", + "#e c #9c95c5", + "#l c #9c9dc5", + "#g c #a4a1cd", + ".k c #b4b6d5", + ".G c #bdbad5", + ".Y c #bdbade", + ".0 c #bdbede", + ".8 c #c5c2de", + "#r c #cdc6e6", + "#. c #cdcae6", + "#d c #cdcee6", + ".v c #d5cee6", + "#j c #d5d2e6", + "#p c #d5d2ee", + ".F c #d5d6ee", + "#k c #ded6ee", + ".7 c #dedaee", + "#q c #dedaf6", + "#x c #dedeee", + ".M c #e6deee", + ".N c #e6def6", + ".9 c #e6e2ee", + ".Z c #e6e2f6", + ".C c #e6e6f6", + ".s c #eee6f6", + ".E c #eeeaf6", + ".6 c #eeeef6", + "#F c #f6f2ff", + ".t c #fff6ff", + ".u c #fffaff", + ".D c #ffffff", + "QtQtQtQtQtQtQtQt.#.a.b.c.d.eQtQt", + "QtQtQtQtQtQt.f.g.h.i.j.k.l.mQtQt", + "QtQtQt.n.o.p.q.r.s.t.u.v.w.xQtQt", + "QtQt.y.z.A.B.C.D.D.D.E.F.G.HQtQt", + ".I.J.K.L.s.D.D.D.D.u.F.M.N.O.PQt", + ".Q.R.S.t.D.D.D.D.u.t.k.s.M.T.U.V", + ".W.X.s.C.N.C.u.D.u.E.Y.Z.N.0.1.2", + ".3.4.5.D.6.7.G.8.9.7.k.N.F#.###a", + "Qt#b#c.D.D.D.u#d#e#f.0#..v#.#g#h", + "Qt.f#i.C.D.D.u.Z#..8#j#k#..8#l#m", + "QtQt#n#o.D.D.t#p.s.9#q#j#r#s#t#u", + "QtQt#v#w.9.u.s.7.9#x#d#y#z#A#BQt", + "QtQt#C#D#E#F.Z#x.N.0#G#H#I#JQtQt", + "QtQt#K#L#M.C.7.v#N#O#P#Q#RQtQtQt", + "QtQtQt#S#T#o#U#V#W#XQtQtQtQtQtQt", + "QtQtQtQt#Y#Z#0#1QtQtQtQtQtQtQtQt" +}; + +static const char* const t_deletec_icon_data[] = { + "16 16 45 1", + "e c None", + "t c None", + "m c None", + "f c None", + "d c None", + ". c None", + "w c #73819c", + "B c #7b819c", + "c c #7b859c", + "F c #acb6cd", + "A c #b4b6cd", + "a c #b4becd", + "b c #b4bed5", + "# c #bdbed5", + "s c #bdc2d5", + "z c #bdc6d5", + "E c #c5cad5", + "H c #c5cade", + "J c #c5cede", + "K c #cdcede", + "O c #cdd2de", + "I c #cdd2e6", + "N c #cdd6de", + "Q c #cdd6e6", + "k c #d5d6e6", + "M c #d5dae6", + "r c #d5dee6", + "v c #dedee6", + "l c #dedeee", + "q c #dee2ee", + "D c #e6e2ee", + "P c #e6e6ee", + "y c #e6e6f6", + "j c #e6eaf6", + "i c #eeeaee", + "p c #eeeaf6", + "u c #eeeef6", + "C c #eef2f6", + "o c #f6eeff", + "L c #f6f2f6", + "x c #f6f2ff", + "h c #f6f6ff", + "G c #ff0000", + "n c #fffaff", + "g c #ffffff", + "..#a#b#a#bcdef..", + "..aghhijklac.m..", + "..#gnhopqr#sct..", + "..aghhuuvlwcwc..", + "..#gnhxuyvkzAB..", + "..aghhCCDqEaFc..", + "..#GGhhuyGG##w..", + "..anGGppGGHHzc..", + "..#hxGGGGkIJKB..", + "..ahLuGGMMNIKc..", + "..#hxGGGlMkIIw..", + "..ahpGGGGvkkOc..", + "..#LGGPqGGMQkB..", + "..aGGyqqvGGkOc..", + "..#uyPPqlMMkIw..", + "..wcwcwcwcwcwc.." +}; + + +static const char* const m_import_icon_data[] = { + "16 18 24 1", + " c None", + ". c #C12896", + "+ c #002E55", + "@ c #003565", + "# c #003C74", + "$ c #004284", + "% c #004993", + "& c #004FA2", + "* c #0056B1", + "= c #005EC1", + "- c #0063D1", + "; c #006BE0", + "> c #0071EF", + ", c #0078FF", + "' c #003B74", + ") c #0050A3", + "! c #0056B2", + "~ c #005DC1", + "{ c #0064D1", + "] c #0071F0", + "^ c #003564", + "/ c #004283", + "( c #0050A2", + "_ c #0057B2", + " .... ", + " ", + " .... ", + " .... ", + " ", + " .... ", + " .... ", + " . .... . ", + " .. .... .. ", + " .......... ", + " ........ ", + " ...... ", + " .... ", + " .. ", + " +@#$%&*=-;>, ", + " ", + " +@'$%)!~{;], ", + " +^'/%(_~{;>, " +}; + +static const char* const m_export_icon_data[] = { + "16 18 24 1", + " c None", + ". c #00CC0A", + "+ c #002E55", + "@ c #003565", + "# c #003C74", + "$ c #004284", + "% c #004993", + "& c #004FA2", + "* c #0056B1", + "= c #005EC1", + "- c #0063D1", + "; c #006BE0", + "> c #0071EF", + ", c #0078FF", + "' c #003B74", + ") c #0050A3", + "! c #0056B2", + "~ c #005DC1", + "{ c #0064D1", + "] c #0071F0", + "^ c #003564", + "/ c #004283", + "( c #0050A2", + "_ c #0057B2", + " .. ", + " .... ", + " ...... ", + " ........ ", + " .......... ", + " .. .... .. ", + " . .... . ", + " .... ", + " .... ", + " ", + " .... ", + " .... ", + " ", + " .... ", + " +@#$%&*=-;>, ", + " ", + " +@'$%)!~{;], ", + " +^'/%(_~{;>, " +}; + +static const char* const m_borrow_icon_data[] = { + "32 32 53 1", + ". c None", + "# c None", + "a c #000000", + "V c #838583", + "U c #8b898b", + "S c #8b8d8b", + "T c #948d94", + "R c #949194", + "L c #949594", + "Q c #9c959c", + "H c #9c999c", + "Y c #9c9d9c", + "X c #a49da4", + "C c #a4a1a4", + "A c #a4a5a4", + "G c #aca5a4", + "q c #aca5ac", + "f c #acaaac", + "l c #acaeac", + "E c #b4aeac", + "p c #b4aeb4", + "c c #b4b2b4", + "B c #b4b6b4", + "t c #bdb6bd", + "o c #bdbabd", + "k c #bdbebd", + "n c #c5bec5", + "j c #c5c2c5", + "i c #c5c6c5", + "s c #cdc6cd", + "M c #cdcacd", + "O c #cdcecd", + "N c #d5ced5", + "P c #d5d2d5", + "J c #d5d6d5", + "I c #ded6de", + "F c #dedade", + "K c #dedede", + "W c #e6dee6", + "D c #e6e2e6", + "u c #e6e6e6", + "x c #eee6e6", + "y c #eee6ee", + "g c #eeeaee", + "v c #eeeeee", + "e c #f6eeee", + "d c #f6eef6", + "r c #f6f2ee", + "w c #f6f2f6", + "b c #f6f6f6", + "z c #fff6ff", + "m c #fffaff", + "h c #ffffff", + "................................", + "................................", + "#a############################a#", + "aba##########################aca", + "ada##########################aca", + "adea##aaa##############aaa##acfa", + "agda#ahhha############aijka#alfa", + "#agdaabhhha##########ajjkkaalfa#", + "#aggaammhha##########ajknoaapqa#", + "##aggarmmhha########asknttapqa##", + "##augaabmmha###aa###ajjooaafqa##", + "###augvwbmma##aaja##ajooccfqa###", + "###axygvwza#aahasiaa#aocclfAa###", + "####ayuggwbahhhajsjjaoBclfCa####", + "####aDyyevzzhhhasijnkBtEfACa####", + "#####aDxuvvwbmhaajkkBBpfACa#####", + "#####aDDyyddzaa##aaotcpfqCa#####", + "####aFFDDyxva######acpAGCCHa####", + "##aaIJFKDuga########affCCHHLaa##", + "#aMNOPJFKDDa########aqCCHHQRSSa#", + "aiMMNPaaaKDa########aACaaaQSTUUa", + "asiMMa###aKDa######aACa###aSUUVa", + "#aasa####aWWa######aCXa####aUaa#", + "###a######aWKa####aqCa######a###", + "##########aFWa####aCXa##########", + "###########aFWa##aCCa###########", + "############aFWaaACa############", + "############aFFaCCYa############", + "#############aFaCXa#############", + "##############aaYa##############", + "###############aa###############", + "................................" +}; + +static const char* const t_sborrow_icon_data[] = { + "32 32 56 1", + ". c None", + "# c None", + "a c #000000", + "X c #8b898b", + "U c #8b8d8b", + "T c #949194", + "L c #949594", + "H c #9c999c", + "1 c #9c9d9c", + "0 c #a49da4", + "C c #a4a1a4", + "A c #a4a5a4", + "G c #aca5a4", + "q c #aca5ac", + "f c #acaaac", + "l c #acaeac", + "E c #b4aeac", + "p c #b4aeb4", + "c c #b4b2b4", + "B c #b4b6b4", + "t c #bdb6bd", + "o c #bdbabd", + "k c #bdbebd", + "n c #c5bec5", + "j c #c5c2c5", + "i c #c5c6c5", + "s c #cdc6cd", + "M c #cdcacd", + "O c #cdcecd", + "N c #d5ced5", + "P c #d5d2d5", + "J c #d5d6d5", + "I c #ded6de", + "F c #dedade", + "K c #dedede", + "Z c #e6dee6", + "D c #e6e2e6", + "u c #e6e6e6", + "R c #ee4841", + "x c #eee6e6", + "y c #eee6ee", + "g c #eeeaee", + "v c #eeeeee", + "S c #f64841", + "Q c #f6484a", + "Y c #f6ea41", + "W c #f6ee41", + "e c #f6eeee", + "d c #f6eef6", + "r c #f6f2ee", + "w c #f6f2f6", + "b c #f6f6f6", + "V c #ffee4a", + "z c #fff6ff", + "m c #fffaff", + "h c #ffffff", + "................................", + "................................", + "#a############################a#", + "aba##########################aca", + "ada##########################aca", + "adea##aaa##############aaa##acfa", + "agda#ahhha############aijka#alfa", + "#agdaabhhha##########ajjkkaalfa#", + "#aggaammhha##########ajknoaapqa#", + "##aggarmmhha########asknttapqa##", + "##augaabmmha###aa###ajjooaafqa##", + "###augvwbmma##aaja##ajooccfqa###", + "###axygvwza#aahasiaa#aocclfAa###", + "####ayuggwbahhhajsjjaoBclfCa####", + "####aDyyevzzhhhasijnkBtEfACa####", + "#####aDxuvvwbmhaajkkBBpfACa#####", + "#####aDDyyddzaa##aaotcpfqCa#####", + "####aFFDDyxva######acpAGCCHa####", + "##aaIJFKDuga########affCCHHLaa##", + "#aMNOPJFKDDa########aqCQRQSTUUa#", + "aiMMNPaaaKDa########aACSVWQSQXXa", + "asiMMa###aKDa##QSQRQSQRQYVYVSQRa", + "#aasa####aZZa##QVWVWVWVWVWVWVWQQ", + "###a######aZKa#QYVYVYVYVYVYVYVYQ", + "##########aFZa#SVWVWVWVWVWVWVWVS", + "###########aFZaQYVYVYVYVYVYVYVYQ", + "############aFZQVWVWVWVWVWVWVWQQ", + "############aFFQRQSQRQSQYVYVRQS#", + "#############aFaC0a####SVWQSQ###", + "##############aa1a#####QSQR#####", + "###############aa###############", + "................................" +}; + +static const char* const t_cborrow_icon_data[] = { + "32 32 50 1", + ". c None", + "# c None", + "a c #000000", + "U c #838583", + "T c #8b898b", + "R c #8b8d8b", + "S c #948d94", + "C c #a4a1a4", + "A c #a4a5a4", + "J c #aca5a4", + "q c #aca5ac", + "f c #acaaac", + "l c #acaeac", + "E c #b4aeac", + "p c #b4aeb4", + "c c #b4b2b4", + "B c #b4b6b4", + "t c #bdb6bd", + "o c #bdbabd", + "k c #bdbebd", + "n c #c5bec5", + "j c #c5c2c5", + "i c #c5c6c5", + "s c #cdc6cd", + "N c #cdcacd", + "P c #cdcecd", + "O c #d5ced5", + "Q c #d5d2d5", + "L c #d5d6d5", + "K c #ded6de", + "I c #dedade", + "M c #dedede", + "V c #e6dee6", + "D c #e6e2e6", + "u c #e6e6e6", + "G c #ee4841", + "x c #eee6e6", + "y c #eee6ee", + "g c #eeeaee", + "v c #eeeeee", + "H c #f64841", + "F c #f6484a", + "e c #f6eeee", + "d c #f6eef6", + "r c #f6f2ee", + "w c #f6f2f6", + "b c #f6f6f6", + "z c #fff6ff", + "m c #fffaff", + "h c #ffffff", + "................................", + "................................", + "#a############################a#", + "aba##########################aca", + "ada##########################aca", + "adea##aaa##############aaa##acfa", + "agda#ahhha############aijka#alfa", + "#agdaabhhha##########ajjkkaalfa#", + "#aggaammhha##########ajknoaapqa#", + "##aggarmmhha########asknttapqa##", + "##augaabmmha###aa###ajjooaafqa##", + "###augvwbmma##aaja##ajooccfqa###", + "###axygvwza#aahasiaa#aocclfAa###", + "####ayuggwbahhhajsjjaoBclfCa####", + "####aDyyevzzhhhasijnkBtEfACa####", + "#####aDxuvvwbmhFGFkkBBpfACa#GFH#", + "#####aDDyyddzaaHFFFotcpfqCaHFFF#", + "####aIIDDyxva##FHFGFcpAJCCGFHFG#", + "##aaKLIMDuga####FHFFFffCCHFFFH##", + "#aNOPQLIMDDa#####FHFGFCCGFHFGRa#", + "aiNNOQaaaMDa######FHFFFHFFFHSTTa", + "asiNNa###aMDa######FHFGFHFGRTTUa", + "#aasa####aVVa######aFHFFFH#aTaa#", + "###a######aVMa####aqGFHFGF##a###", + "##########aIVa####aHFFFHFFF#####", + "###########aIVa##aGFHFGFHFGF####", + "############aIVaaHFFFH##FHFFF###", + "############aIIaGFHFG####FHFGF##", + "#############aIHFFFH######FHFFF#", + "##############aFHFG########FHFG#", + "###############FFH##########FHF#", + "................................" +}; + + +static const char* const t_colorconfig_icon_data[] = { + "16 16 9 1", + ". c None", + "# c #000000", + "a c #0000ff", + "d c #00c200", + "c c #00c2c5", + "b c #c500c5", + "f c #ff0000", + "e c #ffaa5a", + "g c #ffdeac", + "......###.......", + "......#aa##.....", + "......###aa###..", + "....###bb##aaa##", + "....#cc##bb##aa#", + "....###cc###bba#", + "..###dd##ccc##a#", + "..#ee##dd##cc#a#", + "..###ee###ddc#a#", + "..#ff##eee#dc#a#", + ".##ffff##e#dc###", + "#gg###ff#e#dc#..", + "#gggg#ff#e#dc#..", + "#ggg#fff#e###...", + "#gg#.##f#e#.....", + ".##....###......" +}; QPixmap * m_catalog_icon=NULL; @@ -5343,20 +5386,20 @@ QPixmap * a_1=NULL; QPixmap * a_2=NULL; QPixmap * a_3=NULL; -QPixmap * a_4=NULL; -QPixmap * p_icon=NULL; -QPixmap * t_open_icon=NULL; -QPixmap * t_save_icon=NULL; -QPixmap * t_saveas_icon=NULL; -QPixmap * t_close_icon=NULL; -QPixmap * t_add_icon=NULL; -QPixmap * t_rescan_icon=NULL; -QPixmap * t_delete_icon=NULL; -QPixmap * t_config_icon=NULL; -QPixmap * t_help_icon=NULL; -QPixmap * t_new_icon=NULL; -QPixmap * t_find_icon=NULL; -QPixmap * t_about_icon=NULL; +QPixmap * a_4=NULL; +QPixmap * p_icon=NULL; +QPixmap * t_open_icon=NULL; +QPixmap * t_save_icon=NULL; +QPixmap * t_saveas_icon=NULL; +QPixmap * t_close_icon=NULL; +QPixmap * t_add_icon=NULL; +QPixmap * t_rescan_icon=NULL; +QPixmap * t_delete_icon=NULL; +QPixmap * t_config_icon=NULL; +QPixmap * t_help_icon=NULL; +QPixmap * t_new_icon=NULL; +QPixmap * t_find_icon=NULL; +QPixmap * t_about_icon=NULL; QPixmap * t_add_export_icon=NULL; QPixmap * t_remove_export_icon=NULL; QPixmap * t_comment_icon=NULL; @@ -5369,344 +5412,310 @@ QPixmap * t_cborrow_icon=NULL; QPixmap * t_colorconfig_icon=NULL; -void init_icon_base(void) - { +void init_icon_base ( void ) { - if( m_catalog_icon==NULL) - m_catalog_icon=new QPixmap((const char **)m_catalog_icon_data); + if ( m_catalog_icon==NULL ) + m_catalog_icon=new QPixmap ( ( const char ** ) m_catalog_icon_data ); - if( m_unknown_icon==NULL) - m_unknown_icon=new QPixmap((const char **)m_unknown_icon_data); + if ( m_unknown_icon==NULL ) + m_unknown_icon=new QPixmap ( ( const char ** ) m_unknown_icon_data ); - if( m_cd_icon==NULL) - m_cd_icon=new QPixmap((const char **)m_cd_icon_data); + if ( m_cd_icon==NULL ) + m_cd_icon=new QPixmap ( ( const char ** ) m_cd_icon_data ); - if( m_dvd_icon==NULL) - m_dvd_icon=new QPixmap((const char **)m_dvd_icon_data); + if ( m_dvd_icon==NULL ) + m_dvd_icon=new QPixmap ( ( const char ** ) m_dvd_icon_data ); - if( m_hdd_icon==NULL) - m_hdd_icon=new QPixmap((const char **)m_hdd_icon_data); + if ( m_hdd_icon==NULL ) + m_hdd_icon=new QPixmap ( ( const char ** ) m_hdd_icon_data ); - if( m_net_icon==NULL) - m_net_icon=new QPixmap((const char **)m_net_icon_data); + if ( m_net_icon==NULL ) + m_net_icon=new QPixmap ( ( const char ** ) m_net_icon_data ); - if( m_flash_icon==NULL) - m_flash_icon=new QPixmap((const char **)m_flash_icon_data); + if ( m_flash_icon==NULL ) + m_flash_icon=new QPixmap ( ( const char ** ) m_flash_icon_data ); - if( m_other_icon==NULL) - m_other_icon=new QPixmap((const char **)m_other_icon_data); + if ( m_other_icon==NULL ) + m_other_icon=new QPixmap ( ( const char ** ) m_other_icon_data ); - if( m_floppy_icon==NULL) - m_floppy_icon=new QPixmap((const char **)m_floppy_icon_data); + if ( m_floppy_icon==NULL ) + m_floppy_icon=new QPixmap ( ( const char ** ) m_floppy_icon_data ); - if( v_folderlocked_icon==NULL) - v_folderlocked_icon=new QPixmap((const char **)v_folderlocked_icon_data); + if ( v_folderlocked_icon==NULL ) + v_folderlocked_icon=new QPixmap ( ( const char ** ) v_folderlocked_icon_data ); - if( v_folderclosed_icon==NULL) - v_folderclosed_icon=new QPixmap((const char **)v_folderclosed_icon_data); + if ( v_folderclosed_icon==NULL ) + v_folderclosed_icon=new QPixmap ( ( const char ** ) v_folderclosed_icon_data ); - if( v_folderopen_icon==NULL) - v_folderopen_icon=new QPixmap((const char **)v_folderopen_icon_data); + if ( v_folderopen_icon==NULL ) + v_folderopen_icon=new QPixmap ( ( const char ** ) v_folderopen_icon_data ); - if( v_file_icon==NULL) - v_file_icon=new QPixmap((const char **)v_file_icon_data); + if ( v_file_icon==NULL ) + v_file_icon=new QPixmap ( ( const char ** ) v_file_icon_data ); - if( v_back_icon==NULL) - v_back_icon=new QPixmap((const char **)v_back_icon_data); + if ( v_back_icon==NULL ) + v_back_icon=new QPixmap ( ( const char ** ) v_back_icon_data ); - if( a_0==NULL) - a_0=new QPixmap((const char **)a_0_data); + if ( a_0==NULL ) + a_0=new QPixmap ( ( const char ** ) a_0_data ); - if( a_1==NULL) - a_1=new QPixmap((const char **)a_1_data); + if ( a_1==NULL ) + a_1=new QPixmap ( ( const char ** ) a_1_data ); - if( a_2==NULL) - a_2=new QPixmap((const char **)a_2_data); + if ( a_2==NULL ) + a_2=new QPixmap ( ( const char ** ) a_2_data ); - if( a_3==NULL) - a_3=new QPixmap((const char **)a_3_data); + if ( a_3==NULL ) + a_3=new QPixmap ( ( const char ** ) a_3_data ); - if( a_4==NULL) - a_4=new QPixmap((const char **)a_4_data); + if ( a_4==NULL ) + a_4=new QPixmap ( ( const char ** ) a_4_data ); - if( p_icon==NULL) - p_icon=new QPixmap((const char **)p_icon_data); + if ( p_icon==NULL ) + p_icon=new QPixmap ( ( const char ** ) p_icon_data ); - if( t_open_icon==NULL) - t_open_icon=new QPixmap((const char **)t_open_icon_data); + if ( t_open_icon==NULL ) + t_open_icon=new QPixmap ( ( const char ** ) t_open_icon_data ); - if( t_save_icon==NULL) - t_save_icon=new QPixmap((const char **)t_save_icon_data); + if ( t_save_icon==NULL ) + t_save_icon=new QPixmap ( ( const char ** ) t_save_icon_data ); - if( t_saveas_icon==NULL) - t_saveas_icon=new QPixmap((const char **)t_saveas_icon_data); + if ( t_saveas_icon==NULL ) + t_saveas_icon=new QPixmap ( ( const char ** ) t_saveas_icon_data ); - if( t_close_icon==NULL) - t_close_icon=new QPixmap((const char **)t_close_icon_data); + if ( t_close_icon==NULL ) + t_close_icon=new QPixmap ( ( const char ** ) t_close_icon_data ); - if( t_add_icon==NULL) - t_add_icon=new QPixmap((const char **)t_add_icon_data); + if ( t_add_icon==NULL ) + t_add_icon=new QPixmap ( ( const char ** ) t_add_icon_data ); - if( t_rescan_icon==NULL) - t_rescan_icon=new QPixmap((const char **)t_rescan_icon_data); + if ( t_rescan_icon==NULL ) + t_rescan_icon=new QPixmap ( ( const char ** ) t_rescan_icon_data ); - if( t_delete_icon==NULL) - t_delete_icon=new QPixmap((const char **)t_delete_icon_data); + if ( t_delete_icon==NULL ) + t_delete_icon=new QPixmap ( ( const char ** ) t_delete_icon_data ); - if( t_config_icon==NULL) - t_config_icon=new QPixmap((const char **)t_config_icon_data); + if ( t_config_icon==NULL ) + t_config_icon=new QPixmap ( ( const char ** ) t_config_icon_data ); - if( t_help_icon==NULL) - t_help_icon=new QPixmap((const char **)t_help_icon_data); + if ( t_help_icon==NULL ) + t_help_icon=new QPixmap ( ( const char ** ) t_help_icon_data ); - if( t_new_icon==NULL) - t_new_icon=new QPixmap((const char **)t_new_icon_data); + if ( t_new_icon==NULL ) + t_new_icon=new QPixmap ( ( const char ** ) t_new_icon_data ); - if( t_find_icon==NULL) - t_find_icon=new QPixmap((const char **)t_find_icon_data); + if ( t_find_icon==NULL ) + t_find_icon=new QPixmap ( ( const char ** ) t_find_icon_data ); - if( t_about_icon==NULL) - t_about_icon=new QPixmap((const char **)t_about_icon_data); + if ( t_about_icon==NULL ) + t_about_icon=new QPixmap ( ( const char ** ) t_about_icon_data ); - if( t_comment_icon==NULL) - t_comment_icon=new QPixmap((const char **)t_comment_icon_data); + if ( t_comment_icon==NULL ) + t_comment_icon=new QPixmap ( ( const char ** ) t_comment_icon_data ); - if( t_add_export_icon==NULL) - t_add_export_icon=new QPixmap((const char **)t_add_export_icon_data); + if ( t_add_export_icon==NULL ) + t_add_export_icon=new QPixmap ( ( const char ** ) t_add_export_icon_data ); - if( t_remove_export_icon==NULL) - t_remove_export_icon=new QPixmap((const char **)t_remove_export_icon_data); + if ( t_remove_export_icon==NULL ) + t_remove_export_icon=new QPixmap ( ( const char ** ) t_remove_export_icon_data ); - if( t_showc_icon==NULL) - t_showc_icon=new QPixmap((const char **)t_showc_icon_data); + if ( t_showc_icon==NULL ) + t_showc_icon=new QPixmap ( ( const char ** ) t_showc_icon_data ); - if( t_deletec_icon==NULL) - t_deletec_icon=new QPixmap((const char **)t_deletec_icon_data); + if ( t_deletec_icon==NULL ) + t_deletec_icon=new QPixmap ( ( const char ** ) t_deletec_icon_data ); - if( m_export_icon==NULL) - m_export_icon=new QPixmap((const char **)m_export_icon_data); + if ( m_export_icon==NULL ) + m_export_icon=new QPixmap ( ( const char ** ) m_export_icon_data ); - if( m_import_icon==NULL) - m_import_icon=new QPixmap((const char **)m_import_icon_data); + if ( m_import_icon==NULL ) + m_import_icon=new QPixmap ( ( const char ** ) m_import_icon_data ); - if( m_borrow_icon==NULL) - m_borrow_icon=new QPixmap((const char **)m_borrow_icon_data); + if ( m_borrow_icon==NULL ) + m_borrow_icon=new QPixmap ( ( const char ** ) m_borrow_icon_data ); - if( t_sborrow_icon==NULL) - t_sborrow_icon=new QPixmap((const char **)t_sborrow_icon_data); + if ( t_sborrow_icon==NULL ) + t_sborrow_icon=new QPixmap ( ( const char ** ) t_sborrow_icon_data ); - if( t_cborrow_icon==NULL) - t_cborrow_icon=new QPixmap((const char **)t_cborrow_icon_data); + if ( t_cborrow_icon==NULL ) + t_cborrow_icon=new QPixmap ( ( const char ** ) t_cborrow_icon_data ); - if( t_colorconfig_icon==NULL) - t_colorconfig_icon=new QPixmap((const char **)t_colorconfig_icon_data); + if ( t_colorconfig_icon==NULL ) + t_colorconfig_icon=new QPixmap ( ( const char ** ) t_colorconfig_icon_data ); - } +} -QPixmap * get_m_catalog_icon(void) -{ - return m_catalog_icon; +QPixmap * get_m_catalog_icon ( void ) { + return m_catalog_icon; } -QPixmap * get_m_unknown_icon(void) -{ - return m_unknown_icon; +QPixmap * get_m_unknown_icon ( void ) { + return m_unknown_icon; } -QPixmap * get_m_cd_icon(void) -{ - return m_cd_icon; +QPixmap * get_m_cd_icon ( void ) { + return m_cd_icon; } -QPixmap * get_m_dvd_icon(void) -{ - return m_dvd_icon; -} +QPixmap * get_m_dvd_icon ( void ) { + return m_dvd_icon; +} -QPixmap * get_m_hdd_icon(void) -{ - return m_hdd_icon; -} +QPixmap * get_m_hdd_icon ( void ) { + return m_hdd_icon; +} -QPixmap * get_m_net_icon(void) -{ - return m_net_icon; -} +QPixmap * get_m_net_icon ( void ) { + return m_net_icon; +} -QPixmap * get_m_flash_icon(void) -{ - return m_flash_icon; +QPixmap * get_m_flash_icon ( void ) { + return m_flash_icon; } -QPixmap * get_m_other_icon(void) -{ - return m_other_icon; -} +QPixmap * get_m_other_icon ( void ) { + return m_other_icon; +} -QPixmap * get_m_floppy_icon(void) -{ - return m_floppy_icon; -} +QPixmap * get_m_floppy_icon ( void ) { + return m_floppy_icon; +} -QPixmap * get_v_folderlocked_icon(void) -{ - return v_folderlocked_icon; +QPixmap * get_v_folderlocked_icon ( void ) { + return v_folderlocked_icon; } -QPixmap * get_v_folderclosed_icon(void) -{ - return v_folderclosed_icon; +QPixmap * get_v_folderclosed_icon ( void ) { + return v_folderclosed_icon; } -QPixmap * get_v_folderopen_icon(void) -{ - return v_folderopen_icon; +QPixmap * get_v_folderopen_icon ( void ) { + return v_folderopen_icon; } -QPixmap * get_v_file_icon(void) -{ - return v_file_icon; +QPixmap * get_v_file_icon ( void ) { + return v_file_icon; } -QPixmap * get_v_back_icon(void) -{ - return v_back_icon; -} +QPixmap * get_v_back_icon ( void ) { + return v_back_icon; +} -QPixmap * get_p_icon(void) -{ - return p_icon; -} +QPixmap * get_p_icon ( void ) { + return p_icon; +} -QPixmap * get_t_open_icon(void) -{ - return t_open_icon; -} +QPixmap * get_t_open_icon ( void ) { + return t_open_icon; +} -QPixmap * get_t_save_icon(void) -{ - return t_save_icon; -} +QPixmap * get_t_save_icon ( void ) { + return t_save_icon; +} -QPixmap * get_t_saveas_icon(void) -{ - return t_saveas_icon; -} +QPixmap * get_t_saveas_icon ( void ) { + return t_saveas_icon; +} -QPixmap * get_t_close_icon(void) -{ - return t_close_icon; -} +QPixmap * get_t_close_icon ( void ) { + return t_close_icon; +} -QPixmap * get_t_add_icon(void) -{ - return t_add_icon; -} +QPixmap * get_t_add_icon ( void ) { + return t_add_icon; +} -QPixmap * get_t_rescan_icon(void) -{ - return t_rescan_icon; -} +QPixmap * get_t_rescan_icon ( void ) { + return t_rescan_icon; +} -QPixmap * get_t_delete_icon(void) -{ - return t_delete_icon; +QPixmap * get_t_delete_icon ( void ) { + return t_delete_icon; } -QPixmap * get_t_config_icon(void) -{ - return t_config_icon; -} +QPixmap * get_t_config_icon ( void ) { + return t_config_icon; +} -QPixmap * get_t_help_icon(void) -{ - return t_help_icon; -} +QPixmap * get_t_help_icon ( void ) { + return t_help_icon; +} -QPixmap * get_t_new_icon(void) -{ - return t_new_icon; -} +QPixmap * get_t_new_icon ( void ) { + return t_new_icon; +} -QPixmap * get_t_find_icon(void) -{ - return t_find_icon; -} +QPixmap * get_t_find_icon ( void ) { + return t_find_icon; +} -QPixmap * get_t_about_icon(void) -{ - return t_about_icon; -} +QPixmap * get_t_about_icon ( void ) { + return t_about_icon; +} -QPixmap * get_t_comment_icon(void) -{ - return t_comment_icon; -} +QPixmap * get_t_comment_icon ( void ) { + return t_comment_icon; +} -QPixmap * get_t_add_export_icon(void) -{ - return t_add_export_icon; +QPixmap * get_t_add_export_icon ( void ) { + return t_add_export_icon; } -QPixmap * get_t_remove_export_icon(void) -{ - return t_remove_export_icon; +QPixmap * get_t_remove_export_icon ( void ) { + return t_remove_export_icon; } -QPixmap * get_t_showc_icon(void) -{ - return t_showc_icon; +QPixmap * get_t_showc_icon ( void ) { + return t_showc_icon; } -QPixmap * get_t_deletec_icon(void) -{ - return t_deletec_icon; +QPixmap * get_t_deletec_icon ( void ) { + return t_deletec_icon; } -QPixmap * get_m_export_icon(void) -{ - return m_export_icon; +QPixmap * get_m_export_icon ( void ) { + return m_export_icon; } -QPixmap * get_m_import_icon(void) -{ - return m_import_icon; +QPixmap * get_m_import_icon ( void ) { + return m_import_icon; } -QPixmap * get_m_borrow_icon(void) -{ - return m_borrow_icon; +QPixmap * get_m_borrow_icon ( void ) { + return m_borrow_icon; } -QPixmap * get_t_sborrow_icon(void) -{ - return t_sborrow_icon; +QPixmap * get_t_sborrow_icon ( void ) { + return t_sborrow_icon; } -QPixmap * get_t_cborrow_icon(void) -{ - return t_cborrow_icon; +QPixmap * get_t_cborrow_icon ( void ) { + return t_cborrow_icon; } -QPixmap * get_t_colorconfig_icon(void) -{ - return t_colorconfig_icon; +QPixmap * get_t_colorconfig_icon ( void ) { + return t_colorconfig_icon; } -QPixmap * get_anim(int i) -{ - switch(i) - { +QPixmap * get_anim ( int i ) { + switch ( i ) { case 0: return a_0; case 1: return a_1; case 2: return a_2; case 3: return a_3; case 4: return a_4; default: return a_1; - } -} + } +} + +QList get_anim_list() { + QList animlist; + for (int i=0;i<5;i++) + animlist.append(*get_anim(i)); + return animlist; +} diff -Nru cdcat-1.01b/src/icons.cpp.old2 cdcat-1.2/src/icons.cpp.old2 --- cdcat-1.01b/src/icons.cpp.old2 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/icons.cpp.old2 1970-01-01 00:00:00.000000000 +0000 @@ -1,5087 +0,0 @@ -/**************************************************************************** - Hyper's CD Catalog - A multiplatform qt and xml based catalog program - - Author : Peter Deak (hyperr@freemail.hu) - License : GPL - Copyright : (C) 2003 Peter Deak -****************************************************************************/ - -#include "icons.h" -#include - -static const char* const m_catalog_icon_data[] = { -"16 15 154 2", -"ax c None", -"ap c None", -"ao c None", -"#Y c None", -"aa c None", -"ad c None", -"ac c None", -"#1 c None", -"#0 c None", -"ab c None", -".e c None", -".n c None", -"#O c None", -"#Z c None", -"#H c None", -".# c None", -".o c None", -"Qt c None", -"#P c #000000", -"an c #ac3c41", -"a# c #000000", -".a c #eececd", -"aw c #000000", -"#N c #000000", -"ae c #080000", -"#A c #6a595a", -"aq c #311010", -".m c #bd5962", -"am c #73757b", -".d c #dec2cd", -"#X c #000000", -".D c #9c8594", -".b c #f6ced5", -"a. c #080400", -"#G c #310808", -".c c #ffe6ee", -".f c #ee99a4", -"#Q c #733839", -"#2 c #7b3839", -"al c #180c08", -"av c #391410", -".E c #ffb6b4", -"#z c #5a2420", -"#I c #ac696a", -"af c #833c39", -".P c #945d62", -".p c #ffbabd", -"ar c #7b3031", -"#M c #622c31", -"#u c #6a2429", -".l c #e66162", -"#q c #832829", -"#v c #bd696a", -".Z c #a4505a", -"#W c #733c41", -".u c #dea1a4", -".g c #f6d2de", -"#3 c #ac4041", -".C c #de5d62", -"#g c #9c5052", -".7 c #a44041", -"ak c #833439", -"ag c #9c3831", -".q c #f6cecd", -"#R c #b4484a", -"as c #943c41", -"#9 c #9c4852", -"#F c #8b3c41", -"#J c #c54c4a", -".t c #f6cecd", -"au c #9c404a", -"#B c #d54041", -".r c #f6d2d5", -".v c #f6c2c5", -".s c #f6d2d5", -".Q c #f68183", -".k c #f6b2bd", -"#4 c #d55052", -".F c #ffb2b4", -".h c #f6e6ee", -"#L c #bd484a", -"at c #c54041", -"#y c #cd4852", -"ah c #d54c52", -"#V c #de3c39", -"aj c #e63839", -"#r c #e63c39", -"#7 c #ee2020", -"#T c #ee2c29", -"#8 c #ee3839", -"ai c #f62429", -"#U c #f62829", -"#6 c #f62831", -"#K c #f63031", -"#E c #f63439", -"#w c #f63839", -"#5 c #f63c39", -"#t c #f6484a", -"#h c #ff3031", -"#f c #ff3431", -"#S c #ff3439", -".6 c #ff3839", -"#x c #ff3c41", -"#p c #ff4041", -"#o c #ff4441", -".8 c #ff444a", -".Y c #ff484a", -"#e c #ff4c4a", -"#C c #ff4c52", -"#D c #ff5052", -"#d c #ff555a", -".0 c #ff595a", -"#i c #ff5d5a", -"#n c #ff6162", -"#c c #ff6562", -"#s c #ff656a", -"#j c #ff696a", -".9 c #ff6d6a", -".O c #ff6d73", -"#k c #ff7173", -"#. c #ff7573", -".X c #ff757b", -"#b c #ff797b", -"#l c #ff7d83", -".R c #ff8183", -"#m c #ff8583", -".1 c #ff858b", -".S c #ff898b", -"## c #ff9194", -".2 c #ff9594", -".B c #ff959c", -".W c #ff999c", -".N c #ff9d9c", -".T c #ff9da4", -"#a c #ffa1a4", -".3 c #ffa5ac", -".G c #ffaaac", -".H c #ffaeac", -".A c #ffb2b4", -".5 c #ffb6b4", -".4 c #ffb6bd", -".M c #ffbabd", -".I c #ffbebd", -".z c #ffbec5", -".U c #ffc6c5", -".V c #ffc6cd", -".J c #ffcacd", -".y c #ffcecd", -".j c #ffd2d5", -".K c #ffd6de", -".L c #ffdee6", -".i c #ffe2e6", -".x c #ffe6e6", -".w c #ffeeee", -"Qt.#.a.b.c.d.e.f.g.h.i.j.k.l.m.n", -".o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D", -".E.F.G.H.I.J.K.L.L.j.J.M.G.N.O.P", -".Q.R.S.T.H.I.U.J.U.V.M.A.W.X.Y.Z", -".0.X.1.2.3.H.4.M.M.5.3.S.O.Y.6.7", -".8.9#..1##.T#a.3.N###b#c#d#e#f#g", -"#h#i#j#k#l.R.1#m#l#k.O#n#d#o#p#q", -"#r#e#i#s.9#..X#b#k.O#n.0#e#p#t#u", -"#v#w#d.0#s#s#j#j#s#n.0#e.8#x#y#z", -"#A#B#o#C#D.0.0.0#d#d.Y#p#E.8#F#G", -"#H#I#J.Y.Y.8#C.Y#e#o#p#K.6#L#M#N", -"#O#P#Q#R.Y#x#S.6#w#E#T#U#V#W#X#Y", -"#Z#0#1#2#3#4#5#K#6#7#U#8#9a.a#aa", -"#Oabacadaeafagah#8aiajakalamanao", -"#Z#0#1adap#Paqarasatauavawax#Pao"}; - -static const char* const m_unknown_icon_data[] = { -"16 18 38 1", -". c None", -"y c #000000", -"d c #000000", -"x c #000000", -"H c #000000", -"c c #000000", -"G c #000000", -"t c #000000", -"n c #000000", -"s c #000000", -"w c #000000", -"J c #000000", -"D c #000000", -"B c #000000", -"v c #000000", -"r c #000000", -"C c #000000", -"l c #000000", -"k c #000000", -"I c #000000", -"j c #000000", -"q c #000000", -"b c #000000", -"a c #00385a", -"# c #003862", -"h c #00406a", -"o c #004473", -"g c #00508b", -"f c #005594", -"F c #00599c", -"e c #2981c5", -"u c #2985c5", -"m c #3185c5", -"z c #4191cd", -"p c #5299cd", -"i c #6aaad5", -"A c #6aaade", -"E c #8bbee6", -"....#a#a#abcd...", -"...aefbbbfgbbcd.", -"..hifbjklamgfbnd", -"..opbqrstsaugbvc", -"..#efbwx.yhzfblt", -"..cagfbnd.hzgblt", -"..ynbbbvcaAfbqvc", -"...ynBCDaEFbqrnd", -"....ycGaAFbqrnd.", -"......augbqrnd..", -"......#efbksd...", -"......cbbqvc....", -"......ynBBnd....", -".......aasx.....", -"......#ifbnd....", -"......HbbIJH....", -"......ynBBnd....", -".......yccd....."}; - -static const char* const m_cd_icon_data[] = { -"16 16 140 2", -"Qt c None", -"#W c None", -"aj c None", -".Z c None", -"#g c None", -".t c None", -".c c None", -"#z c None", -".d c None", -".b c None", -".u c None", -"#5 c #000000", -"ah c #311000", -"ag c #000000", -"ae c #000000", -"af c #000000", -".k c #ffa500", -"#8 c #000000", -"#P c #000000", -"#0 c #180c00", -"ai c #5a2c00", -"#O c #000000", -"#Z c #000000", -"#X c #000000", -"#7 c #000000", -"ad c #834000", -"#Y c #000000", -"#6 c #000000", -".# c #ffffff", -"## c #9c5000", -"#4 c #a46d29", -".N c #cd8100", -"#n c #ff0000", -".e c #ffff8b", -"#a c #ff0000", -"#N c #945508", -".a c #ff7583", -"#o c #ffda20", -"#9 c #cd8908", -".E c #d58d10", -"#m c #bd7d18", -".v c #ffd6cd", -".s c #eea108", -"#J c #ffc218", -"#I c #b48129", -".l c #ffff9c", -"#y c #c58d31", -"#f c #ffca52", -".F c #ffee52", -".O c #ffff62", -"#Q c #ffba31", -"ac c #c58d39", -"#V c #c59d62", -".Y c #cd9d41", -"#t c #deaa52", -"ab c #deb252", -"#h c #eebe83", -"#u c #eec2a4", -"a# c #eec673", -"#3 c #eed2a4", -"#1 c #f6ae18", -"a. c #f6be52", -"#. c #f6da62", -"aa c #f6e2b4", -".w c #ff2000", -".f c #ff3000", -".G c #ff4800", -"#b c #ff4c18", -".P c #ff4c52", -".x c #ff5900", -".0 c #ff6118", -".n c #ff6900", -".R c #ff6d08", -".m c #ff6d41", -".1 c #ff7120", -".o c #ff7900", -".A c #ffa18b", -".Q c #ffa5c5", -".H c #ffb200", -".g c #ffbe7b", -".3 c #ffbeac", -".y c #ffc200", -"#s c #ffca29", -".5 c #ffca39", -".C c #ffd200", -".r c #ffd252", -"#D c #ffd600", -".j c #ffd641", -".i c #ffd66a", -".6 c #ffd67b", -".K c #ffda08", -"#L c #ffda18", -"#A c #ffda5a", -".J c #ffde39", -"#F c #ffdebd", -".z c #ffe200", -".L c #ffe210", -"#B c #ffe218", -"#q c #ffe239", -".4 c #ffe2a4", -".S c #ffe2de", -".9 c #ffe629", -".W c #ffe631", -"#C c #ffe641", -"#k c #ffe64a", -".8 c #ffe652", -".D c #ffe65a", -".M c #ffe66a", -".X c #ffea18", -".V c #ffea5a", -"#w c #ffea6a", -"#e c #ffea83", -".h c #ffeaa4", -"#R c #ffee20", -"#j c #ffee73", -"#r c #ffee83", -"#i c #ffee9c", -".U c #ffeec5", -"#p c #fff252", -"#2 c #fff26a", -".7 c #fff283", -"#S c #fff2a4", -"#G c #fff2e6", -"#K c #fff64a", -"#x c #fff652", -"#d c #fff69c", -"#v c #fff6ac", -"#M c #fff6b4", -"#U c #fff6c5", -".I c #fff6ee", -".p c #fff6ff", -"#E c #fffacd", -".T c #fffade", -"#c c #ffff41", -"#l c #ffff62", -".2 c #ffff94", -"#H c #ffffc5", -".B c #ffffee", -"#T c #fffff6", -".q c #ffffff", -"QtQtQtQt.#QtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQt.a.b.c.dQtQtQtQtQtQtQtQt", -"QtQtQt.e.f.g.h.i.j.kQtQtQtQtQtQt", -"QtQt.l.m.n.o.p.q.q.r.s.tQtQtQtQt", -".u.v.w.x.y.z.n.A.B.C.D.EQtQtQtQt", -"Qt.F.q.G.H.C.I.q.J.K.L.M.NQtQtQt", -"Qt.O.P.Q.R.S.T.U.K.V.W.X.Y.ZQtQt", -"Qt.0.1.2.3.q.4.5.6.7.8.9#.##QtQt", -"#a#b#c.V#d#e#f#g#h#i#j#k#l#mQtQt", -"#n#o#p#q.D#r#s#t#u.q#v#w#x#yQtQt", -"Qt#z#A#B#C#D#E#F#G.q.q.q#H#IQtQt", -"QtQt#J#K#D#L.q.q#M.q.q.q.q#NQtQt", -"Qt#O#P#Q#R#S.q#T#U#U.q.q#V#WQtQt", -"#X#Y#Z#0#1.q.q.q.q#2.q#3#4QtQtQt", -"#5#X#6#7#8#9a.a#aaabacadQtQtQtQt", -"QtQtQtaeafagQtahaiajQtQtQtQtQtQt"}; - -static const char* const m_dvd_icon_data[] = { -"16 16 115 2", -"Qt c None", -"#J c None", -"#W c None", -".c c None", -".# c None", -"#K c #000000", -"#T c #000000", -".S c #414473", -".a c #8ba1ff", -".Z c #6279c5", -"#n c #000000", -".8 c #bddaff", -"#o c #29304a", -"#U c #525d9c", -"#O c #000000", -"#S c #525994", -".b c #8391e6", -".r c #cde6ff", -"#w c #000000", -".j c #94a5e6", -"#y c #000000", -".B c #52558b", -"#z c #31385a", -"#L c #000000", -"#N c #000000", -"#V c #4a598b", -"#M c #000000", -"#x c #000000", -"#e c #6a6da4", -"#v c #525d94", -"#I c #414883", -".1 c #4a4c7b", -"#H c #4a558b", -"#l c #10185a", -".d c #d5e6ff", -".7 c #52598b", -".v c #7b81bd", -".2 c #c5daff", -".k c #deeeff", -"#f c #c5d6ff", -".Y c #bdcaff", -".q c #94a1de", -".w c #d5eaff", -"#P c #b4c6ff", -".T c #d5e6ff", -".C c #d5e6ff", -".I c #d5e6ff", -"#m c #acb2cd", -".H c #9495bd", -".3 c #b4bee6", -"#q c #8b95cd", -"#G c #9499c5", -".z c #94aef6", -"#s c #9ca1c5", -"#E c #9ca1cd", -".9 c #9cb2f6", -"#R c #a4aad5", -".R c #a4aed5", -"#h c #a4aede", -".F c #a4baff", -"#a c #acb2d5", -"#Q c #acb2e6", -".E c #acbef6", -".Q c #acbeff", -".P c #acc2f6", -".G c #acc2ff", -".0 c #b4bade", -".O c #b4bee6", -".e c #b4c2f6", -".U c #b4c2ff", -".n c #b4c6ff", -".A c #bdc2ee", -".f c #bdcaee", -".J c #bdcaf6", -".V c #bdcaff", -".5 c #bdceff", -"#i c #c5c2de", -".N c #c5caee", -".i c #c5cef6", -".t c #c5ceff", -"#A c #c5d2ff", -"#b c #cdcade", -"#C c #cdcee6", -".h c #cdd2ee", -".K c #cdd6ff", -".X c #cddaff", -"#j c #d5d2e6", -".4 c #d5d2ee", -"#r c #d5d6ee", -"#B c #d5daf6", -".W c #d5daff", -".M c #d5deff", -".6 c #d5e2ff", -"#t c #dedae6", -"#c c #dedaee", -"#d c #dedaf6", -"#. c #dedaff", -"## c #dee2f6", -".D c #dee2ff", -".m c #dee6ff", -"#u c #e6e2ee", -".g c #e6e2ff", -".p c #e6e6f6", -"#p c #e6e6ff", -"#F c #e6eaf6", -".L c #e6eaff", -".s c #e6eeff", -".u c #eeeeff", -"#k c #eef2f6", -"#D c #eef2ff", -"#g c #eef6ff", -".x c #f6f2ff", -".y c #f6f6ff", -".o c #fffaff", -".l c #ffffff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQt.#.a.b.cQtQtQtQtQtQtQtQt", -"QtQtQt.d.e.f.g.h.i.jQtQtQtQtQtQt", -"QtQt.k.l.m.n.o.l.l.p.qQtQtQtQtQt", -"Qt.r.s.l.l.t.u.l.l.l.o.vQtQtQtQt", -"Qt.w.l.l.l.x.m.l.l.y.z.A.BQtQtQt", -"Qt.C.m.o.l.l.D.x.l.E.F.G.HQtQtQt", -"Qt.I.J.K.L.y.M.N.O.t.P.Q.R.SQtQt", -"Qt.T.U.V.W.X.Y.Z.0.W.t.G.M.1QtQt", -"Qt.2.J.Q.J.D.L.3.4.l.M.5.6.7QtQt", -"Qt.8.K.9.5.i#..p###a.o#b#b#c#d#e", -"QtQt#f.V#g.x#h.h.y.l#i#j#k#l.l#m", -"Qt#n#o.6#p.l.4.p#q.o#r#s.l#t#u#v", -"#w#x#y#z#A#B#C#D.L#E#F#G#H#I#JQt", -"#K#L#M#N#O#P.W#p.g#Q#R#SQtQtQtQt", -"QtQtQt#K#TQtQt#U#V#WQtQtQtQtQtQt"}; - -static const char* const m_hdd_icon_data[] = { -"16 16 105 2", -"Qt c None", -".1 c None", -"#j c None", -"#K c None", -"#A c None", -"#s c None", -".K c None", -".y c None", -".n c None", -"#G c None", -".h c None", -"#t c None", -"#k c None", -".# c None", -".c c None", -"## c None", -".i c None", -".o c None", -"#M c #000020", -"#L c #62657b", -"#z c #080439", -"#r c #000031", -".z c #f6f2ff", -"#F c #181841", -"#J c #39385a", -".p c #cdced5", -".j c #cdcad5", -".T c #ded6e6", -".2 c #d5d2d5", -".L c #dedae6", -".b c #b4b6c5", -".d c #c5c2cd", -"#H c #9495a4", -".g c #acaab4", -"#q c #62657b", -"#B c #9495a4", -".m c #9c9dac", -"#y c #737583", -"#u c #a4a1ac", -"#E c #8b899c", -".x c #a4a1ac", -".a c #ded6e6", -"#l c #b4b2bd", -"#I c #94919c", -".J c #a4a5b4", -".A c #dedade", -"#a c #cdc2d5", -".S c #9c99ac", -".q c #e6e2ee", -"#v c #5a5d83", -".4 c #5aea62", -"#C c #62658b", -"#f c #7b799c", -"#w c #837da4", -"#m c #83819c", -"#e c #8381a4", -".9 c #8b89a4", -"#. c #8b8dac", -".8 c #948dac", -".7 c #9495ac", -".Z c #9c99ac", -"#n c #9c99b4", -".W c #9c9db4", -"#i c #a49dac", -".Y c #a4a1b4", -".X c #a4a1bd", -"#x c #a4a5bd", -".Q c #acaabd", -"#g c #acaac5", -".O c #acaec5", -".P c #b4b2c5", -"#D c #b4b6c5", -".N c #bdb6cd", -".R c #bdbacd", -".G c #c5becd", -".V c #c5bed5", -".6 c #c5c2cd", -".H c #c5c2d5", -".F c #cdc6d5", -"#h c #cdcade", -"#p c #cdced5", -"#c c #d5cede", -".v c #d5d2de", -"#d c #d5d2e6", -".M c #d5d6de", -"#b c #d5e2de", -".u c #ded6e6", -".I c #dedae6", -"#o c #dedaee", -".3 c #deffe6", -".0 c #e6dee6", -".C c #e6e2ee", -".E c #e6e6ee", -".D c #eee6ee", -".B c #eee6f6", -".k c #eeeaee", -".w c #eeeaf6", -".U c #eeeeee", -".5 c #f6eaff", -".s c #f6f2f6", -".e c #f6f2ff", -".l c #f6f6ff", -".t c #fff6ff", -".r c #fffaff", -".f c #ffffff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQt.#.a.bQtQtQtQtQtQt", -"QtQtQtQtQt.c.d.e.f.f.g.hQtQtQtQt", -"QtQtQt.i.j.k.f.f.f.l.f.m.nQtQtQt", -"Qt.o.p.q.f.r.s.l.t.u.v.w.x.yQtQt", -".z.A.e.k.B.C.D.E.F.G.H.H.I.J.KQt", -".L.f.v.v.v.v.M.N.O.P.P.P.Q.R.SQt", -".T.U.f.F.V.H.N.W.X.Y.W.Z.V.f.0.1", -".2.3.4.5.6.O.7.8.9#..P.C.k.f.M.1", -"###a#b#c#d.H#e#f#g.H.R#h.D.f#i#j", -"Qt#k#l.u.P.P.H.X#m#n.O#o#p#q#r#s", -"QtQt#t#u#h.7.N#v#w#x.F#y#z#AQtQt", -"QtQtQt.h#B.V.Q#C#D#E#F#AQtQtQtQt", -"QtQtQtQt#G#H.R#I#J#KQtQtQtQtQtQt", -"QtQtQtQtQtQt#L#MQtQtQtQtQtQtQtQt"}; - -static const char* const m_net_icon_data[] = { -"16 16 108 2", -"Qt c None", -"#L c None", -".Y c None", -".Q c None", -"#F c None", -"#u c None", -"#f c None", -"#M c None", -"#p c None", -"#G c None", -".f c None", -".v c None", -".G c None", -".p c None", -".b c None", -".Z c None", -"#B c #52505a", -".8 c #ffffff", -".X c #000029", -"#E c #000029", -".u c #626173", -".# c #c5c2c5", -".h c #f6eeee", -".F c #181431", -".P c #000029", -".q c #ffffff", -"#C c #9c99a4", -".g c #ffffff", -"#t c #080c29", -"#v c #ee9100", -".a c #8b8d8b", -"#y c #945000", -".l c #f69d00", -"#g c #dedade", -".o c #c57500", -".O c #525552", -".9 c #7b7d7b", -"#P c #a4a59c", -".H c #c58508", -".w c #4a4c52", -".R c #ffd600", -"#s c #736d6a", -".i c #7b757b", -"#J c #000000", -".C c #000c18", -".s c #080808", -".1 c #101420", -"#r c #313031", -"#H c #4a484a", -"#z c #52595a", -"#n c #5a6173", -"#. c #626162", -".e c #626562", -".k c #626973", -".r c #6a656a", -"#e c #6a696a", -"#j c #73694a", -"#h c #736d73", -"#N c #73757b", -".x c #838594", -"## c #83899c", -".0 c #8b7d62", -".D c #9c999c", -".j c #a4a1a4", -".t c #aca5ac", -"#A c #acaaac", -"#q c #acaeac", -".E c #b4b2ac", -".c c #b4b6bd", -"#c c #b4bede", -".M c #bd8952", -".6 c #bda15a", -"#I c #bdb6bd", -".2 c #c5bab4", -"#D c #c5c2c5", -"#o c #c5c6cd", -".N c #c5cad5", -".5 c #cdb273", -".B c #d59108", -"#K c #d5d2cd", -"#d c #d5deee", -"#i c #dedade", -"#O c #dedede", -".W c #e69100", -".7 c #ee8d00", -"#b c #eeba39", -"#x c #f69d00", -"#w c #ffa500", -"#k c #ffbe20", -".y c #ffc218", -".n c #ffc220", -"#m c #ffca08", -"#l c #ffca10", -".m c #ffca29", -".V c #ffce18", -".L c #ffd218", -".K c #ffd24a", -".U c #ffd652", -".4 c #ffe26a", -".T c #ffe694", -"#a c #ffee94", -".3 c #fff6c5", -".J c #fffade", -".S c #fffaf6", -".I c #ffffcd", -".z c #ffffd5", -".A c #fffff6", -".d c #ffffff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQt.#.a.bQtQtQtQtQtQtQtQtQtQtQt", -"QtQt.c.d.e.fQtQtQtQtQtQtQt.g.hQt", -"QtQt.i.j.d.k.l.m.n.o.p.q.r.s.t.u", -"QtQt.v.w.x.y.z.d.d.A.B.C.D.d.E.F", -"QtQtQt.G.H.I.d.d.J.K.L.M.N.O.P.Q", -"QtQtQtQt.R.d.d.S.T.U.V.W.X.YQtQt", -"QtQtQt.Z.0.1.2.3.4.5.6.7.QQtQtQt", -"Qt.8.9.s#..d###a#b#c#d#e#fQtQtQt", -"#g#.#h.d#i#j#k#l#m#n#o.d#e#pQtQt", -"#q#r.d#s#t#u#v#w#x#y#z#A.d.D#BQt", -"#C#D#E.YQtQtQt#F#F.Q#G#H#I#J#K#L", -"Qt.QQtQtQtQtQtQtQtQtQt#M#N#O#P.Y", -"QtQtQtQtQtQtQtQtQtQtQtQtQt.Y.YQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const m_flash_icon_data[] = { -"16 16 97 2", -".e c #2048a4", -".j c #2050a4", -".f c #3155ac", -".q c #3165ac", -".d c #395dac", -".n c #3961ac", -".A c #3969b4", -".# c #415dac", -"Qt c #4161b4", -".a c #4165b4", -".s c #4169b4", -".U c #4179bd", -".b c #4a65b4", -".c c #4a69b4", -".h c #4a71b4", -".o c #4a71bd", -".x c #4a79bd", -".R c #4a79c5", -".J c #4a7dbd", -".g c #5271bd", -".i c #5275bd", -".X c #5289c5", -"#. c #5291c5", -".k c #5a79bd", -".p c #5a7dbd", -".t c #5a7dc5", -".D c #5a85c5", -".W c #5a8dc5", -".V c #5a8dcd", -".v c #6289c5", -".F c #628dc5", -".O c #628dcd", -".K c #6291c5", -".H c #6291cd", -".N c #6295cd", -".4 c #6299cd", -".E c #6a89c5", -".G c #6a89cd", -".w c #6a8dc5", -".u c #6a91cd", -".I c #6a95c5", -".M c #6a99cd", -".7 c #6a9dcd", -".6 c #6aa1cd", -".L c #7399cd", -"#a c #73a1cd", -".5 c #73a1d5", -"#p c #73a5d5", -".Y c #7ba1d5", -"#b c #7baad5", -"#j c #7baed5", -"#h c #7baede", -".C c #83a1d5", -".8 c #83aed5", -"#d c #83b2d5", -"#i c #83b2de", -"#o c #83b6de", -"#s c #83bade", -"#c c #8bb2de", -"#f c #8bb6de", -"#u c #8bb6e6", -"#k c #8bbade", -"#l c #8bbede", -"#B c #8bc2e6", -".S c #94b2de", -"#e c #94b6e6", -"#g c #94bae6", -"#n c #94bede", -"#m c #94bee6", -"#E c #94c2e6", -".P c #9cbade", -"#t c #9cc2e6", -"#v c #9cc6e6", -"#x c #9ccae6", -"#C c #9ccaee", -".2 c #a4c2de", -"#y c #a4c6ee", -"#w c #a4cae6", -"#D c #a4caee", -"#z c #a4ceee", -".0 c #acc6e6", -".1 c #accae6", -".m c #b4c2e6", -".Q c #b4ceee", -"#r c #b4d2ee", -".B c #bdcae6", -".3 c #bdd2ee", -"#q c #c5daee", -".T c #d5def6", -".Z c #d5e6f6", -"## c #dee6f6", -".y c #e6eaff", -"#A c #e6f2ff", -".r c #eeeef6", -".9 c #eeeeff", -".z c #fffaff", -".l c #ffffff", -"Qt.#Qt.#Qt.#Qt.#Qt.#Qt.#Qt.#Qt.#", -".a.b.a.c.a.b.d.e.f.c.a.c.a.b.a.c", -".g.h.i.h.g.j.k.l.m.n.i.o.g.h.i.o", -".k.p.p.k.q.l.l.l.r.s.p.p.p.p.k.t", -".u.v.w.x.y.z.A.B.C.D.E.F.G.F.E.F", -".F.H.I.H.l.J.K.F.K.L.M.L.N.O.I.L", -".P.Q.R.S.T.U.O.F.V.W.O.X.Y.Z.V.u", -".l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.0", -".l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.1", -".2.3.4.5.6.7.8.9#..5.6.6.8###a#b", -"#c#d#e#f#g#f#h.l#h#i#i#i#f#j#k#k", -"#l#m#n#m#n#m#o.Z.l#p#q#r#s#m#n#g", -"#t#t#t#t#t#t#t#i.z.l.l.l#u#t#t#t", -"#v#w#t#x#v#y#v#v#s#z.l#A#B#C#t#x", -"#D#D#z#w#z#w#z#w#D#v#E#E#D#w#z#w", -"#w#z#w#z#w#z#w#z#w#z#w#z#w#z#w#z"}; - -static const char* const m_other_icon_data[] = { -"16 16 103 2", -"Qt c None", -"#p c None", -"#j c None", -"#K c None", -".n c None", -".Z c None", -".O c None", -".c c None", -".# c #d5cef6", -"#k c #d5d6ff", -"#H c #9c99cd", -"#a c #d5d2f6", -".F c #c5baee", -".h c #9491cd", -"#B c #9c9dde", -"#v c #7375c5", -".N c #bdb6e6", -"#C c #c5beee", -".Y c #bdaee6", -"#w c #d5cef6", -"#G c #9491cd", -".y c #6a69b4", -"#J c #7b79ac", -".d c #eeeaff", -".b c #c5beee", -".s c #ffffff", -"#q c #e6e2ff", -"## c #aca5de", -".i c #fffaff", -".v c #f6f6ff", -".I c #8b89bd", -".Q c #9c95c5", -".u c #acb2f6", -".z c #fffaff", -".D c #948db4", -".a c #c5c2de", -".e c #eeeaff", -".0 c #9c9dbd", -"#I c #c5c6de", -"#u c #cdc6f6", -".1 c #eee6f6", -".C c #acaee6", -".j c #e6e6f6", -".G c #f6f6ff", -"#A c #cdc6ee", -".R c #ffeef6", -".H c #c5c6ee", -"#F c #d5cef6", -".P c #dedef6", -".J c #ffffff", -".E c #fffaff", -".9 c #0034d5", -"#h c #0038cd", -"#g c #003cd5", -".8 c #185dd5", -".W c #187df6", -"#n c #2079ee", -".V c #29a1ff", -"#f c #3981ee", -"#m c #4a9df6", -".7 c #4aa5ff", -".L c #4aaeff", -".6 c #5abaff", -".U c #62b6ff", -"#e c #73c6ff", -"#l c #7bcaff", -"#s c #83caff", -"#d c #83ceff", -".T c #83d2ff", -"#o c #8bbeff", -".5 c #8bceff", -"#i c #94beff", -".K c #a4deff", -".4 c #ace2ff", -"#t c #b4daff", -"#c c #b4e6ff", -".r c #bdc6ff", -".x c #c5caff", -"#. c #c5e2ff", -".m c #cdceff", -".f c #cdd2ee", -".g c #cdd2ff", -"#z c #d5d2ff", -"#E c #d5d6ff", -".3 c #d5ffff", -"#y c #dedaff", -".B c #dedeff", -"#b c #deffff", -".t c #e6e2f6", -".k c #e6e6f6", -"#D c #e6e6ff", -".X c #e6f2ff", -".S c #e6ffff", -"#x c #eeeeff", -".M c #eef2ff", -".o c #f6eeff", -".w c #f6f2f6", -".q c #f6f2ff", -"#r c #f6f6ff", -".2 c #f6ffff", -".p c #fffaf6", -".A c #fffaff", -".l c #ffffff", -"QtQtQtQtQtQtQtQt.#.a.bQtQtQtQtQt", -"QtQtQtQtQt.c.d.e.f.g.hQtQtQtQtQt", -"QtQtQt.c.i.j.k.k.l.m.nQtQtQtQtQt", -"QtQt.c.o.p.q.l.l.l.rQtQtQtQtQtQt", -"QtQt.s.l.q.l.l.l.t.uQtQtQtQtQtQt", -"QtQt.v.l.w.l.l.q.x.yQtQtQtQtQtQt", -"QtQt.z.A.l.l.B.C.D.E.FQtQtQtQtQt", -"QtQt.G.q.w.H.I.J.K.L.M.NQtQtQtQt", -"Qt.O.l.P.Q.R.S.T.U.V.W.X.YQtQtQt", -"Qt.Z.0.1.2.3.4.5.6.7.8.9#.##QtQt", -"Qt#a.l.l.l#b#c#d#e#f#g#h#i.q#jQt", -"Qt#k.l.l.l.l.4#l#m#n#o.l.l.q#pQt", -"QtQt#q.l#r.l.l#s#t.l.q.A#u#vQtQt", -"QtQtQt#w#x#y.l.A#z.q#A#BQtQtQtQt", -"QtQtQtQt#C.B#D#E#F#GQtQtQtQtQtQt", -"QtQtQtQtQt#H#I#J#KQtQtQtQtQtQtQt"}; - -static const char* const m_floppy_icon_data[] = { -"16 16 140 2", -"Qt c None", -"#Z c None", -"ag c None", -"aj c None", -".1 c None", -".e c None", -".# c None", -".f c None", -".n c None", -"#D c #000000", -"a# c #000000", -"#0 c #000000", -".R c #eee6ee", -"aa c #000000", -"#O c #000000", -"#R c #000000", -"#E c #000000", -"ab c #000000", -"#t c #292829", -"#3 c #000000", -"ah c #393c39", -"#F c #202020", -"#C c #181c18", -"#Q c #000000", -"#2 c #000000", -"#P c #000000", -".G c #7b797b", -"#1 c #000000", -"a. c #202429", -"#N c #202020", -"#b c #bdbebd", -"#4 c #414441", -".H c #f6f2f6", -"#a c #4a4441", -".a c #cdc6c5", -"ai c #312c29", -".o c #dedade", -"#u c #949194", -".g c #d5d2d5", -".m c #9c959c", -"af c #292c29", -"#S c #6a696a", -".2 c #bdbabd", -".x c #d5d6d5", -".Q c #737173", -".b c #d5ced5", -"#k c #a4a5a4", -"#Y c #313039", -"#M c #292831", -"#9 c #313439", -"#B c #393c4a", -"ae c #413c41", -"#X c #414052", -"#j c #525052", -"#s c #525962", -"ac c #625d62", -"#8 c #6a657b", -".0 c #6a696a", -"#r c #7371a4", -"## c #737594", -"#i c #7b79a4", -".Z c #8b89ac", -"#. c #8b8d94", -".F c #948d94", -".w c #949194", -".P c #9491ac", -".O c #9c95b4", -"#L c #9c99a4", -"#5 c #9c9d9c", -".E c #9c9dac", -".u c #a4a1ac", -".z c #acaaac", -".k c #acaab4", -".v c #acaabd", -".l c #acaeb4", -".J c #b4b2b4", -"#G c #b4b2d5", -".d c #bdb6bd", -"#7 c #bdbab4", -".h c #bdbabd", -".C c #bdbac5", -"ad c #bdbacd", -".W c #bdbad5", -".N c #bdbed5", -"#T c #bdbede", -"#v c #c5c2c5", -".5 c #c5c2cd", -"#6 c #c5c2de", -".c c #c5c6c5", -".i c #cdc6cd", -".p c #cdcacd", -".D c #cdcad5", -".M c #cdcade", -".I c #cdced5", -"#A c #d5b27b", -"#W c #d5c29c", -"#U c #d5ce7b", -".A c #d5ced5", -".q c #d5d2d5", -".L c #d5d2de", -"#h c #debe52", -"#n c #deceac", -".V c #ded6e6", -".6 c #dedee6", -".K c #dedeee", -"#l c #e6deee", -".T c #e6e2e6", -".U c #e6e2ee", -".Y c #e6e68b", -".j c #e6e6e6", -"#m c #e6e6f6", -".X c #eee6c5", -".t c #eeeaee", -"#c c #eeeaf6", -"#d c #f6d6ac", -".4 c #f6eef6", -".3 c #f6f2f6", -".B c #f6f6f6", -"#q c #ffc608", -"#z c #ffce00", -"#y c #ffce18", -"#K c #ffd64a", -"#J c #ffda18", -"#p c #ffde31", -"#x c #ffe641", -"#V c #ffee31", -"#I c #ffee41", -"#o c #fff252", -"#g c #fff641", -"#w c #fff662", -".y c #fff6f6", -".S c #fff6ff", -"#H c #fffa83", -".r c #fffaff", -".9 c #ffff62", -"#f c #ffff8b", -".8 c #ffff9c", -"#e c #ffffb4", -".7 c #ffffc5", -".s c #ffffff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQt.#.a.b.c.d.eQtQtQt", -"QtQtQtQtQt.f.g.h.i.j.k.l.mQtQtQt", -"QtQtQt.n.o.p.q.r.s.t.u.v.wQtQtQt", -"QtQtQt.x.y.z.A.B.C.D.D.E.F.GQtQt", -"QtQt.H.j.s.I.J.K.L.M.N.O.P.QQtQt", -"QtQt.R.c.S.T.U.V.M.W.X.Y.Z.0.1Qt", -"QtQtQt.2.3.4.5.M.6.7.8.9#.###aQt", -"QtQtQt#b.A#c.5.s#d#e#f#g#h#i#jQt", -"QtQtQtQt#k#l.L#m#n.8#o#p#q#r#s#t", -"QtQtQtQt#u.6.V#v#e#w#x#y#z#A#B#C", -"QtQt#D#E#F.w.D#G#H#I#J#K#L#M#NQt", -"Qt#O#P#Q#R#S#m#T#U#V#W#X#Y#ZQtQt", -"#0#1#P#2#3#4#5#6#7#8#9a.QtQtQtQt", -"QtQta#aaab#OacadaeafagQtQtQtQtQt", -"QtQtQtQtQtQtahaiajQtQtQtQtQtQtQt"}; - - -static const char * v_folderlocked_icon_data[]={ - "16 16 10 1", - "h c #808080", - "b c #ffa858", - "f c #c0c0c0", - "e c #c05800", - "# c #000000", - "c c #ffdca8", - ". c None", - "a c #585858", - "g c #a0a0a4", - "d c #ffffff", - "..#a#...........", - ".#abc####.......", - ".#daa#eee#......", - ".#ddf#e##b#.....", - ".#dfd#e#bcb##...", - ".#fdccc#daaab#..", - ".#dfbbbccgfg#ba.", - ".#ffb#ebbfgg#ba.", - ".#ffbbe#bggg#ba.", - ".#fffbbebggg#ba.", - ".##hf#ebbggg#ba.", - "...###e#gggg#ba.", - ".....#e#gggg#ba.", - "......###ggg#b##", - ".........##g#b##", - "...........####."}; - - -static const char* v_folderclosed_icon_data[]={ - "16 16 9 1", - "g c #808080", - "b c #c0c000", - "e c #c0c0c0", - "# c #000000", - "c c #ffff00", - ". c None", - "a c #585858", - "f c #a0a0a4", - "d c #ffffff", - "..###...........", - ".#abc##.........", - ".#daabc#####....", - ".#ddeaabbccc#...", - ".#dedeeabbbba...", - ".#edeeeeaaaab#..", - ".#deeeeeeefe#ba.", - ".#eeeeeeefef#ba.", - ".#eeeeeefeff#ba.", - ".#eeeeefefff#ba.", - ".##geefeffff#ba.", - "...##gefffff#ba.", - ".....##fffff#ba.", - ".......##fff#b##", - ".........##f#b##", - "...........####."}; - -static const char* v_folderopen_icon_data[]={ - "16 16 11 1", - "# c #000000", - "g c #c0c0c0", - "e c #303030", - "a c #ffa858", - "b c #808080", - "d c #a0a0a4", - "f c #585858", - "c c #ffdca8", - "h c #dcdcdc", - "i c #ffffff", - ". c None", - "....###.........", - "....#ab##.......", - "....#acab####...", - "###.#acccccca#..", - "#ddefaaaccccca#.", - "#bdddbaaaacccab#", - ".eddddbbaaaacab#", - ".#bddggdbbaaaab#", - "..edgdggggbbaab#", - "..#bgggghghdaab#", - "...ebhggghicfab#", - "....#edhhiiidab#", - "......#egiiicfb#", - "........#egiibb#", - "..........#egib#", - "............#ee#"}; - -static const char * v_file_icon_data []={ - "16 16 7 1", - "# c #000000", - "b c #ffffff", - "e c #000000", - "d c #404000", - "c c #c0c000", - "a c #ffffc0", - ". c None", - "................", - ".........#......", - "......#.#a##....", - ".....#b#bbba##..", - "....#b#bbbabbb#.", - "...#b#bba##bb#..", - "..#b#abb#bb##...", - ".#a#aab#bbbab##.", - "#a#aaa#bcbbbbbb#", - "#ccdc#bcbbcbbb#.", - ".##c#bcbbcabb#..", - "...#acbacbbbe...", - "..#aaaacaba#....", - "...##aaaaa#.....", - ".....##aa#......", - ".......##......."}; - - -static const char* const v_back_icon_data[] = { -"18 18 148 2", -"Qt c None", -".k c None", -".v c #000000", -"aj c #ffffff", -".D c #000000", -"a. c #ffffff", -".# c #ffffff", -".1 c #000000", -"#0 c #e6dee6", -"#Z c #ffffff", -"## c #000000", -"#9 c #000000", -"ai c #000000", -"#h c #000000", -"#O c #ffffff", -"#o c #000000", -".a c #ffffff", -"#Y c #000000", -".l c #ffffff", -"#8 c #000000", -".j c #8bc6ff", -"ak c #2079d5", -".S c #5a99de", -".b c #ffffff", -".E c #ffffff", -"#D c #94c6ff", -".m c #ffffff", -".w c #ffffff", -"ar c #185594", -"#N c #205994", -".u c #7bbaff", -".c c #deeeff", -"a# c #2989ee", -".J c #6aaaee", -"#P c #52a5ff", -".K c #deeeff", -".i c #94caff", -"#1 c #3191f6", -".C c #73b6f6", -"al c #2085ee", -".0 c #5aa1ee", -"ah c #206dc5", -"#X c #2971c5", -"#v c #83c2ff", -"aq c #1875cd", -"#C c #3181d5", -".n c #cde6ff", -".F c #cde6ff", -".d c #c5e2ff", -"#7 c #2979cd", -".T c #bddeff", -".x c #cde6ff", -".h c #9cceff", -"am c #2089f6", -"#. c #5aa5f6", -"#p c #83c2ff", -"ap c #2089ee", -"#u c #4199ee", -".e c #bddeff", -".2 c #acd6ff", -"an c #2991ff", -"#g c #5aaaff", -".g c #acd2ff", -"ao c #2091ff", -"#n c #4aa5ff", -"#i c #94c6ff", -".f c #acd6ff", -"#a c #94caff", -"#d c #0099ff", -".O c #009dff", -".6 c #089dff", -".X c #109dff", -"#y c #18a5ff", -".H c #29aaff", -"#m c #31aeff", -"#l c #39b2ff", -".5 c #41b2ff", -"#z c #41b6ff", -"ag c #4aa1ff", -"#M c #5aaaff", -"aa c #5aaeff", -".Y c #5abeff", -"#R c #62c2ff", -"#s c #6ac2ff", -"#6 c #73b2f6", -"#W c #73b6f6", -"#E c #73b6ff", -"#2 c #7bb6ff", -"#Q c #7bbaff", -"af c #83baf6", -".N c #83ceff", -".R c #8bc6ff", -"ab c #9cc6f6", -"#B c #9cc6ff", -"#c c #9ccef6", -".t c #9cceff", -"#I c #9cd6ff", -"#w c #a4cef6", -"ae c #acceee", -".I c #acd6ff", -"#H c #acdaff", -".Z c #b4d6ff", -".B c #b4daff", -"#e c #b4e2ff", -"#5 c #bdd2ee", -".W c #bdd6e6", -"#t c #bddaf6", -"#k c #bddef6", -".L c #bddeff", -".7 c #bde2ff", -"#F c #c5daee", -"#L c #c5daf6", -".o c #c5e2ff", -".P c #c5e6ff", -"#4 c #cddee6", -"#3 c #cddef6", -"ac c #cddeff", -".8 c #cde6ff", -".A c #cdeaff", -"#V c #d5deee", -"#U c #d5e2e6", -"#J c #d5e2ee", -"#q c #d5e2f6", -".G c #d5e6ff", -".y c #d5eaff", -".4 c #dee2e6", -"#T c #dee2ee", -"#K c #dee6ee", -"ad c #dee6f6", -".9 c #deeaff", -"#A c #e6eaee", -"#S c #e6eaf6", -"#f c #e6eef6", -".3 c #e6eeff", -".Q c #e6f2ff", -"#x c #eeeef6", -".V c #eef2f6", -".p c #eef2ff", -"#r c #eef6f6", -".s c #eef6ff", -".z c #eefaff", -".M c #f6f2f6", -"#G c #f6f2ff", -"#b c #f6f6f6", -"#j c #f6f6ff", -".q c #f6faff", -".U c #fffaff", -".r c #ffffff", -"Qt.#.a.b.c.d.e.f.g.h.i.jQtQtQtQtQt.k", -".#.l.m.n.o.p.q.r.r.s.o.t.u.vQtQtQt.k", -".a.w.x.y.r.r.z.A.r.r.r.s.B.C.DQtQt.k", -".E.F.G.r.r.r.H.H.r.r.r.r.q.I.J.DQt.k", -".K.L.q.r.M.N.O.P.r.r.r.r.r.Q.R.S.v.k", -".T.y.U.V.W.X.Y.r.r.r.U.r.r.r.Z.0.1.k", -".2.3.U.4.5.6.7.A.A.P.A.8.q.U.9#.##.k", -"#a.p#b#c#d#d#d#d#d#d#d#d#e.r#f#g#h.k", -"#i#f#j#k.6.6#l#m#l#m#l#m.A.U.3#n#o.k", -"#p#q#r.V#s.6.A.r.r.r.r.r.r#j#t#u#o.k", -"#v#w#x.V.Q#y#z.r.r.r.U#j.V#A#B#C#h.k", -"#D#E#F#G.V#H#d#I.U#f#J#K#J#L#M#N##.k", -"#O#P#Q#J#j#j#R#z.U#S#T#U#V#W#X#Y.1.k", -"#Z#0#1#2#3#j.q.r.V#K#4#5#6#7#8#9.v.k", -"a.a..Da#aaabacad#qaeafagah#8ai.DQt.k", -"QtajQt.Dakalamanaoapaqar#Y#9.DQtQt.k", -"QtQtQtQt.v.1###h#o#o#h##.1.vQtQtQt.k", -".k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k"}; - -static const char* const a_0_data[] = { -"40 40 88 2", -"Qt c None", -"#l c #000000", -"#h c #200000", -"#k c #310000", -".7 c #4a0000", -"#s c #4a0010", -"#p c #521000", -".4 c #521010", -".9 c #523039", -".S c #620800", -"#o c #620810", -".Z c #621010", -"#u c #622029", -".0 c #731000", -".5 c #731010", -".6 c #7b1010", -".O c #8b3039", -"#b c #8b616a", -".1 c #941000", -".P c #941010", -".T c #941029", -".Q c #941810", -"#. c #941829", -".A c #9c1029", -".V c #9c1810", -".K c #9c2010", -".U c #a42029", -".8 c #ac1810", -".B c #ac2010", -".W c #ac2029", -".n c #ac5952", -"#j c #ac9d94", -".R c #bd2010", -".o c #bd2029", -".2 c #bd3029", -"#n c #bd8d7b", -"#g c #bdb6bd", -"#d c #cd2010", -".w c #cd2029", -"#e c #cd2839", -".u c #cd3029", -".J c #cdaeac", -".3 c #d53839", -".g c #de2029", -"## c #de2839", -".p c #de3029", -".j c #de3039", -"#q c #de3829", -".C c #de3839", -".v c #de3852", -".X c #de4839", -".H c #de95ac", -".d c #de9dac", -".h c #deaeac", -"#r c #deb6bd", -".D c #debeac", -".x c #debebd", -".M c #decebd", -".E c #ded6d5", -".G c #dedeee", -"#f c #e6596a", -"#m c #e69594", -".s c #e69d94", -"#v c #e6ded5", -"#i c #e6e6ee", -".z c #ee2829", -".t c #ee2839", -".m c #ee3029", -".r c #ee3039", -".Y c #ee3829", -"#a c #ee3839", -".y c #ee3852", -".I c #ee4839", -".b c #ee5052", -".a c #ee6152", -".k c #ee616a", -".# c #ee717b", -".i c #ee797b", -".L c #ee957b", -".l c #ee9594", -".F c #eebebd", -".e c #eeded5", -"#c c #eee6d5", -".c c #eeeeee", -".f c #f6716a", -".q c #f6cebd", -"#t c #f6d6d5", -".N c #ff697b", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQt.#.a.b.#.cQtQtQtQtQtQtQtQtQtQtQt.d.b.b.b.eQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt.f.g.b.d.h.i.b.jQtQtQtQtQtQtQtQt.#.b.k.l.h.f.m.gQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQt.n.o.p.f.h.c.e.b.m.m.qQtQtQtQtQt.g.g.r.s.c.e.l.b.m.tQtQtQtQtQtQtQt", -"QtQtQtQtQtQt.h.o.o.u.v.f.s.e.c.f.g.m.sQtQtQt.w.g.r.c.c.x.l.a.y.m.z.rQtQtQtQtQtQt", -"QtQtQtQtQtQt.A.B.B.o.C.k.i.D.E.c.F.p.g.eQt.w.g.k.c.G.x.H.#.b.I.m.r.z.G.xQtQtQtQt", -"QtQtQtQtQt.J.K.K.B.o.u.b.L.h.M.E.M.d.z.g.w.w.N.x.M.G.M.H.k.y.m.m.r.m.rQtQtQtQtQt", -"QtQtQtQtQt.O.P.Q.A.A.o.u.b.i.H.H.i.f.a.z.R.j.f.f.l.H.l.k.b.m.m.m.m.t.rQtQtQtQtQt", -"QtQtQtQtQt.S.T.P.K.U.V.W.o.p.k.a.a.b.y.m.R.u.X.b.b.k.y.Y.m.t.m.m.z.r.mQtQtQtQtQt", -"QtQtQtQtQt.Z.0.1.P.T.K.U.W.w.p.y.b.b.y.m.W.2.3.C.b.r.j.m.m.m.r.r.m.m.zQtQtQtQtQt", -"QtQtQtQtQt.4.5.P.6.P.U.V.o.W.w.p.b.b.b.m.W.u.C.b.p.j.z.r.m.z.m.t.m.r.mQtQtQtQtQt", -"QtQtQtQtQt.7.5.5.0.P.P.K.8.o.W.g.g.b.f.f.H.f.b.p.p.z.g.z.z.m.z.r.m.m.mQtQtQtQtQt", -"QtQtQtQtQt.9.S.5.5#..P.U.K.B.W.R.w.p.y.l.h.a.m##.g.p.z.z.z.r.r.m#a.r.mQtQtQtQtQt", -"QtQtQtQtQt#b.4.Z.6.P.Q.Q.8.W.W.R.R.w.w.g.p.w.g.p.g.g.m.z.m.r.m#a.b.m.mQtQtQtQtQt", -"QtQtQtQtQt#c.7.7.5.5.T.Q.U.8.W.W.o.o#d.w.w.g.g.g#e.z.g.m.m#a.I.b.b#a#fQtQtQtQtQt", -"QtQtQtQtQt#g#h.7.Z.5.P.P.A.K.W.B.o.o.o#d.w.g.g.g.g.t.j.r.I.y.a.f.a.m#iQtQtQtQtQt", -"QtQtQtQtQtQt#j#k.Z.Z.P.T.Q.U.B.o.B.w.o.w.w.w.w.p.g.p.r#a.b.f.i.s.k.pQtQtQtQtQtQt", -"QtQtQtQtQtQtQt#l.7.Z.5.P.Q.K.W.W.B.o.o.w.w.g.w.g.j.m.Y.b.f#m.h.d.y.eQtQtQtQtQtQt", -"QtQtQtQtQtQtQt#n#h.7.5.5.P.A.8.V.o.B.o.o.o.w.w.p.z#a.b.#.d.E.E.l.mQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt#h#k.S.5.6.P.V.W.W.B.R.o.w.w.u###a.b.i.h.c.c.M.m.cQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt#k.7#o.5.T.P.P.W.W.o.R.w.w.p.p.y.#.d.c.c.c.f#mQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.E#k#p.Z.5.P.V.U.V.W.o.o.w#q.y.f.d.G.c.c.d.bQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQt#j.7#o.Z.6.P.Q.K.U.W.o.u.C.a.l#r.c.c#m.YQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQt.M#p.5.Z.5.P.Q.A.B.W.u.X.k.H.D.M.f.bQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQt.e#s.5.6.6.1.Q.V.o.u.v.f#m.d.b.iQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQt#o.5.6.Q.P.U.W.p.b.#.L.b#tQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#b.5.6.P.K.W.j.f.f.YQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#u.6.A.2.f.Y.eQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#v.5.p.dQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const a_1_data[] = { -"40 40 93 2", -"Qt c None", -"#i c #200000", -"#k c #310000", -"## c #4a0000", -"#b c #4a0010", -"#h c #521000", -"#r c #521010", -"#t c #620800", -"#o c #620810", -".4 c #621010", -"#y c #622029", -".7 c #6a0800", -"#p c #6a0810", -".Y c #731000", -".8 c #731010", -"#e c #735952", -".Z c #7b1010", -"#f c #7b1029", -"#q c #941000", -".V c #941010", -"#c c #941029", -".0 c #941810", -".U c #941829", -"#w c #945952", -".1 c #9c1029", -".Q c #9c1810", -".H c #9c2010", -"#d c #a42029", -".C c #ac1829", -".J c #ac2010", -".I c #ac2029", -".P c #ac9d94", -".3 c #bd2010", -".s c #bd2029", -".5 c #bd3029", -".r c #bdb6bd", -"#a c #cd2010", -".t c #cd2029", -"#j c #cd2810", -"#s c #cd2839", -".D c #cd3029", -".j c #cd3039", -"#z c #cdaeac", -".6 c #d53829", -".G c #de2029", -".q c #de2839", -".u c #de3029", -".9 c #de3039", -"#x c #de3829", -".K c #de3839", -".i c #de3852", -"#. c #de4839", -".2 c #de5052", -".B c #de796a", -".W c #de95ac", -".E c #de9dac", -".l c #deaeac", -".h c #debebd", -".T c #decebd", -".S c #ded6d5", -"#n c #dedeee", -".m c #e6596a", -"#A c #e6716a", -".N c #e69594", -".A c #e69d94", -".d c #e6a5ac", -"#u c #e6ae94", -".L c #e6ded5", -".# c #e6e6ee", -".x c #ee2829", -".O c #ee2839", -".p c #ee3029", -".n c #ee3039", -".z c #ee3829", -"#g c #ee3839", -".g c #ee3852", -".w c #ee4839", -".b c #ee5052", -".c c #ee6152", -".a c #ee616a", -".f c #ee717b", -".R c #ee797b", -".X c #ee957b", -".o c #ee9594", -"#v c #eeaeac", -".e c #eebebd", -".M c #eeded5", -".y c #eee6d5", -".v c #eeeeee", -"#l c #f6596a", -".k c #f6716a", -"#m c #f6cebd", -".F c #f6d6d5", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.#.a.b.c.dQtQtQtQtQtQtQtQtQtQtQtQt.e.f.g.g.e.hQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt.i.j.k.l.l.k.g.mQtQtQtQtQtQtQtQt.h.n.c.o.l.o.p.q.#.hQtQtQtQtQtQt", -"QtQtQtQtQt.rQt.s.t.u.k.h.v.h.w.p.x.yQtQtQtQtQt.i.u.z.f.v.v.A.g.p.x.vQtQtQtQtQtQt", -"QtQtQtQtQtQt.B.C.s.D.i.k.E.v.v.a.p.x.FQtQtQt.t.G.n.e.v.h.o.b.b.p.p.n.hQtQtQtQtQt", -"QtQtQtQt.rQt.H.I.J.s.K.c.f.E.L.v.E.G.G.vQt.D.G.c.v.M.h.N.f.b.n.p.p.O.AQtQtQtQtQt", -"QtQtQtQtQt.P.Q.H.J.I.D.g.R.E.S.h.S.l.x.t.G.t.a.T.T.S.l.o.c.g.z.n.n.p.nQtQtQtQtQt", -"QtQtQtQtQt.U.V.Q.Q.J.I.s.b.k.W.E.o.k.c.x.t.D.k.X.o.E.o.c.b.p.p.n.x.p.pQtQtQtQtQt", -"QtQtQtQtQt.Y.Z.V.U.0.1.I.s.2.a.c.a.b.b.n.3.j.2.g.c.c.g.z.O.n.p.O.p.p.n.vQtQtQtQt", -"QtQtQtQtQt.4.Z.V.0.V.H.J.I.s.u.b.b.b.p.n.I.5.6.b.b.n.n.x.x.p.p.x.p.p.n.MQtQtQtQt", -"QtQtQtQtQt.7.8.Z.V.0.0.H.J.I.t.u.b.g.w.p.I.j.9#..i.p.G.p.O.p.n.p.p.p.p.vQtQtQtQt", -"QtQtQtQtQt##.8.8.Z.V.V.Q.J.s.I#a.u.b.k.b.k.2.c.n.G.u.x.p.x.n.p.n.p.n.p.yQtQtQtQt", -"QtQtQtQtQt#b.Y.8.8.V#c#d.H.J.I.s.t.u.b.l.M.k.u.j.u.u.n.x.n.n.p.g.g.p.nQtQtQtQtQt", -"QtQtQtQtQt#e#b.7#f.V.V.U.1.J.s.I.3.t.t.G.u.u.G.G.G.G.G.p.n.p#g.b.z#g.pQtQtQtQtQt", -"QtQtQtQtQt.L###h.8.8.V.V.Q.C.I.3.s.s.t.s.t.t.u.G.u.q.x.n.p.g.b.b.b.b.wQtQtQtQtQt", -"QtQtQtQtQt.r#i##.4.Y#c.V.U.H.J.J.J.s.s.t#j.D.G.u.G.u.p#g.b.b.a.a.k.n.MQtQtQtQtQt", -"QtQtQtQtQtQt.P#k.4.4.8#c.0.H.J.I.3.3.t.t.t.G.t.G.u.n.p#g.c.f.o.N.a.GQtQtQtQtQtQt", -"QtQtQtQtQtQt.r#i#b.8.Y.V.0.0.H.C.I.s.3.t.t.D.t.u.9.n.b.c.X.E.l.E#l#mQtQtQtQtQtQt", -"QtQtQtQtQtQtQt.P#k##.8.8.V.0.1.C.s.J.s.3.t.t.G.u.z.w.c.o.l.L#n.A.pQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt#i###o.8.8.V.U.H.C.I.s.s.t.t.q.9.b.c.W.h.v.v.M.b.vQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt#k#b#p.Y#q.V.H.Q.J.s.I.t.t.u#g.c.o.h.v.v.v.R.AQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.S###r.8.8.Z.0.1.1.I.J.s#s.K.b.k.l.v.v.v.A#lQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQt.P#b#t.4.Z.0.0#d.I.J.I.D.K.c.X.T.v.v#u.pQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQt.S##.8#t.Z#q.H.1.I.s.j#..k.W.S.S.N.2QtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQt.L#r.8.8.Z.U.H.J.I.D.g.k.l.h.k.RQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQt#b.8.8.V#c.I.I.i.b.o.E.a#vQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#w.8.8.0#d.I#x.f.X.g.rQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.L#y.Z.0.D.f.b.EQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#z.Z.u#AQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const a_2_data[] = { -"40 40 89 2", -"Qt c None", -"#m c #200000", -"#i c #310000", -"#c c #4a0000", -"#e c #4a0010", -"#q c #521000", -"#f c #521010", -".9 c #620800", -".8 c #621010", -"#j c #622029", -".Y c #731000", -".R c #731010", -"#n c #735952", -"#. c #7b1010", -".2 c #7b1029", -".N c #8b3039", -"#u c #8b616a", -".Z c #941000", -".S c #941010", -".3 c #941029", -".T c #941810", -".0 c #941829", -"#w c #945952", -"## c #9c1029", -".O c #9c1810", -".U c #9c2010", -".I c #a42029", -"#g c #ac1810", -"#a c #ac1829", -".5 c #ac2010", -".B c #ac2029", -"#h c #ac9d94", -".V c #bd2010", -".r c #bd2029", -".W c #bd3029", -".6 c #bd3039", -"#l c #bdb6bd", -".h c #cd2029", -".y c #cd3029", -".7 c #cd3039", -"#v c #cdaeac", -".K c #de2029", -".E c #de2839", -".D c #de3029", -".s c #de3039", -".4 c #de3829", -"#t c #de3839", -".C c #de3852", -"#b c #de4839", -".L c #de5052", -".J c #de796a", -".P c #de95ac", -".# c #de9dac", -".k c #deaeac", -".F c #debeac", -".Q c #debebd", -".o c #decebd", -".j c #ded6d5", -"#o c #dedeee", -"#r c #dee6ee", -".x c #e6596a", -"#k c #e69594", -".w c #e69d94", -".q c #e6a5ac", -"#p c #e6ded5", -".A c #ee2829", -".p c #ee2839", -".a c #ee3029", -".n c #ee3039", -".i c #ee3829", -".X c #ee3839", -".H c #ee3852", -".c c #ee4839", -".b c #ee5052", -".f c #ee6152", -".z c #ee616a", -".g c #ee717b", -".t c #ee797b", -".G c #ee8d94", -".M c #ee957b", -".d c #ee9594", -".1 c #eeaeac", -".e c #eebebd", -".m c #eeded5", -"#d c #eee6d5", -".v c #eeeeee", -".l c #f6716a", -"#s c #f6cebd", -".u c #f6d6d5", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.#.a.b.c.dQtQtQtQtQtQtQtQtQtQtQtQt.e.f.b.a.gQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt.h.i.d.j.k.g.b.lQtQtQtQtQtQtQtQt.m.n.l.d.o.#.b.p.qQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQt.r.h.s.t.u.v.w.i.n.pQtQtQtQtQtQt.x.y.n.z.v.v.#.z.a.A.qQtQtQtQtQtQt", -"QtQtQtQtQtQt.B.r.B.y.C.f.w.v.v.i.D.pQtQtQtQt.C.D.E.w.v.F.G.z.H.i.p.AQtQtQtQtQtQt", -"QtQtQtQtQt.u.I.B.B.r.C.b.l.#.j.v.J.K.AQtQt.L.h.D.v.m.k.M.l.b.n.n.a.A.HQtQtQtQtQt", -"QtQtQtQtQt.N.O.O.I.B.h.C.g.P.k.Q.o.w.D.h.L.h.z.o.o.Q.k.M.z.b.n.a.A.a.aQtQtQtQtQt", -"QtQtQtQtQt.R.S.T.U.U.V.W.L.l.d.#.d.t.f.A.h.D.g.d.P.P.d.f.H.X.a.p.n.p.n.vQtQtQtQt", -"QtQtQtQtQt.Y.Z.S.0.T.U.B.r.L.f.z.f.f.b.a.r.y.b.f.z.l.H.X.a.A.n.n.a.a.n.1QtQtQtQt", -"QtQtQtQtQt.R.Z.2.T.3.O.O.B.r.4.b.b.H.c.a.5.6.7.H.b.X.a.a.A.A.a.a.p.a.a.dQtQtQtQt", -"QtQtQtQtQt.8.R.S.0.T.U.O.5.B.h.D.b.b.H.i.r.y.D.b.s.n.A.n.A.a.n.a.a.n.a.dQtQtQtQt", -"QtQtQtQtQt.9.R#..S.0.T###a.B.5.h.a.f.b.c.C#b.f.X.D.D.K.n.a.a.a.a.n.n.a.1QtQtQtQt", -"QtQtQtQtQt#c.Y.R.Y.U.S.I.I.5.r.r.h.D.f.o.v.M.i.D.K.K.a.A.a.a.X.n.X.X.a#dQtQtQtQt", -"QtQtQtQtQt#e#f.8.Y.Z.T.T.U#g.5.B.h.h.h.a.s.K.D.K.D.A.E.a.a.X.n.c.i.c.aQtQtQtQtQt", -"QtQtQtQtQt#h#c.9.R.S.T.0.S.U.B.V.r.r.r.h.h.K.K.K.K.D.a.n.H.i.b.b.f.b.AQtQtQtQtQt", -"QtQtQtQtQtQt#i#c.R#..S.T.T.U.5.5.5.r.r.h.h.h.D.K.D.a.X.c.b.b.z.z.g.b.qQtQtQtQtQt", -"QtQtQtQtQtQt#j#c.8.R#..S.S.S##.B.V.5.h.h.h.h.h.D.D.a.X.b.z.l.M#k.t.aQtQtQtQtQtQt", -"QtQtQtQtQtQt#l#m#f.R.R.3.S.T.U.B.B.V.r.h.h.h.D.D.a.H.b.z.d#k.k.k.l.d#lQtQtQtQtQt", -"QtQtQtQtQtQtQt#n#c.8.9#..S.S.U##.5.B.V.r.h.h.D.D.X.b.l.d.k.j#o.k.aQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt#m#c.R.Y.S.S.0.U.5.5.B.r.h.h.D.X.H.l#k.k#p.v.v.z.mQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt#o#i#q.R.R#..S.3.U#g.B.B.r.h.D.c.f.d.k#r.v.v.k.fQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt#h#e#q.R.R.Z.T.I##.5.r.r.D.s.b.l.##p.v.v#s.HQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQt#n#e.8.8.S.S.S###a.5.r.y#t.f.t.F.v.v#s.nQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQt#u#c.Y.R.S.3.O.U.B.B.y.L.z#k.j#d.Q.aQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQt#l#f.R.Y.S.U.O.5.r.y.H.l.#.j.#.LQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQt#p#e.R.R.S.U.I.B.y.f.d.k#k.tQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.8.R.R##.I.r.4.g#k.b.uQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#v.9.S.I.h.l.l.zQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#w#..y.H.vQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.uQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const a_3_data[] = { -"40 40 89 2", -"Qt c None", -"#m c #200000", -"#o c #310000", -"#i c #4a0000", -"#g c #4a0010", -"#r c #521010", -"#k c #523039", -"#l c #620800", -"#. c #621010", -"#v c #622029", -"#p c #6a0810", -".5 c #731000", -".0 c #731010", -".6 c #7b1010", -"#b c #7b1029", -"#u c #7b2829", -"#s c #941000", -".V c #941010", -".W c #941029", -".7 c #941810", -".4 c #941829", -"#j c #9c1029", -".8 c #9c1810", -".O c #9c2010", -".X c #a42029", -"#c c #ac1810", -".P c #ac1829", -".Q c #ac2010", -".M c #ac2029", -"#n c #ac9d94", -"## c #b42839", -"#d c #bd2010", -".D c #bd2029", -"#e c #bd3039", -".N c #bd8d7b", -".# c #bdb6bd", -"#t c #cd2010", -".w c #cd2029", -".E c #cd3029", -".1 c #cd3039", -".S c #cdaeac", -".I c #de2029", -"#a c #de2839", -".k c #de3029", -".u c #de3039", -".9 c #de3839", -".F c #de3852", -"#f c #de4839", -".p c #de5052", -".v c #de796a", -".q c #de95ac", -".j c #de9dac", -".n c #deaeac", -".K c #deb6bd", -".l c #debeac", -".e c #debebd", -".r c #decebd", -".m c #ded6d5", -"#q c #dedeee", -".i c #e6596a", -".T c #e69594", -".B c #e69d94", -".R c #e6a5ac", -".G c #e6ded5", -".o c #e6e6ee", -".U c #ee2829", -".2 c #ee2839", -".C c #ee3029", -".t c #ee3039", -".Y c #ee3829", -".J c #ee3839", -".h c #ee3852", -".z c #ee4839", -".b c #ee5052", -".g c #ee6152", -".y c #ee616a", -".c c #ee717b", -".L c #ee797b", -".Z c #ee8d94", -".a c #ee957b", -".f c #ee9594", -"#h c #eeaeac", -".3 c #eebebd", -".d c #eeded5", -".A c #eee6d5", -".x c #eeeeee", -".s c #f6716a", -"#w c #f6cebd", -".H c #f6d6d5", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.a.b.b.c.dQt.eQtQtQtQtQtQtQtQtQtQtQt.f.g.h.i.dQtQtQtQtQtQtQtQt", -"QtQtQtQtQt.#Qt.j.k.b.l.m.n.c.h.oQtQtQtQtQtQtQtQtQt.p.g.q.r.r.s.t.uQtQtQtQtQtQtQt", -"QtQtQtQtQtQt.v.w.u.s.n.x.d.y.z.t.cQtQtQtQtQtQt.A.u.t.b.B.x.x.B.b.t.CQtQtQtQtQtQt", -"QtQtQtQtQt.r.D.D.E.F.s.j.G.x.y.C.C.pQtQtQtQt.H.w.I.J.m.x.K.L.g.h.C.t.CQtQtQtQtQt", -"QtQtQtQtQt.M.M.M.D.E.b.y.f.n.x.n.k.I.LQtQt.x.I.I.y.x.r.q.c.y.b.t.C.C.C.HQtQtQtQt", -"QtQtQtQt.N.O.P.Q.M.E.F.s.c.q.n.e.r.C.I.RQt.w.w.f.l.S.j.T.s.b.h.J.C.U.C.UQtQtQtQt", -"QtQtQtQt.V.W.X.O.M.Q.k.b.s.T.T.f.j.a.Y.I.I.k.c.f.f.q.f.Z.s.b.C.t.C.C.C.tQtQtQtQt", -"QtQtQtQt.0.V.V.V.X.O.D.E.h.s.s.y.y.y.g.C.w.1.b.g.y.s.y.g.h.C.t.C.2.C.U.C.3QtQtQt", -"QtQtQtQt.0.V.4.W.O.X.M.M.w.k.b.b.b.h.z.t.D.E.u.p.b.b.b.h.t.2.C.C.t.2.C.C.TQtQtQt", -"QtQtQtQt.5.6.W.7.W.8.M.D.D.w.k.h.b.Y.J.t.M.E.k.9.z.9.C.I.C.t.U.U.C.t.C.t.cQtQtQt", -"QtQtQtQt#..0.6.V.7.8.O.M.M.Q.w.u.b.h.Y.t.D##.E.9.k.k.k#a.C.U.C.t.U.C.C.t.cQtQtQt", -"QtQtQtQt.5.0#b.6.4.8#c.M.Q#d.D.I.C.b.h.h#e.k.F#f.C.k.U.U.U.t.C.t.C.t.t.C.LQtQtQt", -"QtQtQtQt#g.5.0.V.7.7.8.X.Q.M.D.w.I.z.s.R.x.L.b.w.I.k#a.U.C.U.t.t.Y.Y.h.t#hQtQtQt", -"QtQtQtQt#i#..0.6.W.7#j#c.Q.M.D#d.w.w.C.b.b.h.I.I.k.I.I.U.2.t.C.J.z.z.C.t.dQtQtQt", -"QtQtQtQt#k#i#l.6.7.W.8.8.M.M.Q.D.D.w.w.w.I.w.E.I.I.k.C.U.C.t.t.z.h.b.b.UQtQtQtQt", -"QtQtQtQt.m#i#..0.5.7.4.O.O.Q.Q.M.D.w.Q.w.w.w.I.k.k.I.k.C.h.Y.b.b.g.s.b.bQtQtQtQt", -"QtQtQtQt.##m#i.0.0.V.7.V#j.P.M.M#d.D.D.w.w.w.w.I.k.k.t.z.b.b.b.c.s.c.h.xQtQtQtQt", -"QtQtQtQtQt#n#o#p.0.V.V.4.8.X#c#d.M.D#d.w.w.w.I.I.k.t.t.z.b.y.s.T.j.a.kQtQtQtQtQt", -"QtQtQtQtQtQt#m#i#..6.V.W.O#j.Q.M.M.Q.D#d.w.w.k.I.k.J.b.b.y.a.f.n.l.b.dQtQtQtQtQt", -"QtQtQtQtQtQt.##o#.#..V.W.7.8.M.Q.Q.D.Q.w.w.E.I.k.u.Y.b.s.f.j.r#q.n.CQtQtQtQtQtQt", -"QtQtQtQtQtQtQt#o#g#..6.6.7.O#j.P.P.Q.Q.D.w.w.E.k.J.b.y.a.j.G.x.A.zQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt#o#i#..6.4.V.7.O#c.Q.M.D.D.E.u.F.h.g.L.j#q.x.x.f#hQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt.G#r#r#l#s.W.4#j.P.Q.M.Q#t.1.k.k.b.c.f.m.x.x.R.LQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.m#i#..0.0.V.V.O#c.M.D.D.E.k.b.g.a.l.x.x.j.pQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQt.G#r#p#.#s.V#j.8.Q.M.D.w.k.b.s.j.G#q.f.sQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQt#i.0.0.6.W.O.Q.D.M.E#f.g.T.n.r.y.nQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQt#r.0.0.V.4.8.M.M.1.h.s.q.j.b.oQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQt#n#..0.V.O.Q.M.E.g.a.s.bQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#u.6.V.8.D.b.s.h.HQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#v.8##.h.3QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.A#wQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const a_4_data[] = { -"40 40 198 2", -"Qt c None", -"aN c #200000", -"aJ c #290000", -"aC c #310000", -"aL c #311829", -"aM c #4a0000", -"aY c #4a0010", -"ay c #4a0800", -"aT c #520800", -"a5 c #521000", -"aK c #521010", -"aP c #523039", -"as c #5a0800", -"aD c #5a0810", -"aU c #5a1010", -"aZ c #620800", -"an c #620810", -"az c #621010", -"ac c #622029", -"aG c #6a0800", -"aQ c #6a0810", -"ai c #6a1000", -"at c #6a1010", -"ad c #731000", -"ao c #731010", -"aF c #735952", -"#X c #7b1010", -"#K c #7b1029", -"ae c #7b1810", -"b. c #7b2829", -"#7 c #8b1010", -"aj c #8b1810", -"ba c #8b3039", -"ah c #8b5952", -"am c #8b596a", -"a1 c #8b616a", -"#8 c #941000", -"#L c #941010", -"#Y c #941029", -"#s c #941810", -"#M c #941829", -"a8 c #945952", -"aO c #9c1029", -"#A c #9c1810", -"#0 c #9c1829", -"#Z c #9c2010", -"#W c #9c6152", -".8 c #a41810", -"ak c #a41829", -"#t c #a42010", -"#9 c #a42029", -"aA c #ac1810", -"af c #ac1829", -"#j c #ac2010", -"a. c #ac2029", -"bc c #ac5952", -"aX c #ac9d94", -"ag c #b42010", -".R c #b42029", -"#k c #b42839", -"au c #bd2010", -".S c #bd2029", -"a2 c #bd2810", -"#O c #bd2829", -"#B c #bd3029", -"a9 c #bd3039", -"#i c #bd8d7b", -"ar c #bdb6bd", -"aH c #cd2010", -".F c #cd2029", -"aE c #cd2810", -"#1 c #cd2829", -"#4 c #cd2839", -".9 c #cd3029", -".T c #cd3039", -"#J c #cdaeac", -"#d c #d52029", -"aI c #d52810", -"#w c #d52829", -"#2 c #d52839", -"aV c #d53029", -"#F c #d53039", -"#l c #d53829", -"#. c #d53839", -".2 c #de2029", -".n c #de2829", -"aq c #de2839", -".G c #de3029", -"#C c #de3039", -"a3 c #de3829", -"#N c #de3839", -"a6 c #de3852", -"al c #de4839", -".D c #de4852", -".7 c #de5052", -"aB c #de796a", -"#c c #de95ac", -".s c #de9dac", -".E c #dea5ac", -".W c #deaeac", -"#o c #deb6ac", -".z c #deb6bd", -"aS c #debeac", -".M c #debebd", -".B c #decebd", -".r c #ded6d5", -"aR c #dedeee", -"#f c #dee6ee", -"#v c #e62029", -".Z c #e62829", -"#6 c #e62839", -".C c #e63029", -"#5 c #e63039", -"ax c #e63829", -".P c #e63839", -"#P c #e64839", -"#m c #e64852", -"b# c #e65052", -".L c #e6596a", -".# c #e6696a", -"#I c #e6716a", -"#p c #e68d94", -".e c #e69594", -".v c #e69d94", -".1 c #e6a5ac", -".p c #e6ae94", -".m c #e6aeac", -"ap c #e6bebd", -".3 c #e6cebd", -".I c #e6ded5", -".A c #e6e6ee", -"#U c #ee2829", -".0 c #ee2839", -"#T c #ee3029", -".O c #ee3039", -"#S c #ee3829", -".k c #ee3839", -".x c #ee3852", -"#3 c #ee4839", -"#Q c #ee4852", -"#D c #ee5052", -"## c #ee5952", -"aW c #ee6152", -"#e c #ee616a", -"av c #ee717b", -".b c #ee797b", -".N c #ee8d7b", -".h c #ee8d94", -".i c #ee957b", -".c c #ee9594", -"a7 c #eeaeac", -".f c #eebebd", -".Q c #eeded5", -"bd c #eee6d5", -".q c #eeeeee", -"#r c #f62829", -"aa c #f62839", -"#h c #f63029", -"#V c #f63039", -"a# c #f63829", -"#H c #f63839", -".a c #f63852", -"#R c #f64839", -"#u c #f64852", -"#G c #f65052", -".g c #f6596a", -".Y c #f6696a", -"#q c #f6716a", -".4 c #f6717b", -"#n c #f6797b", -".V c #f68d7b", -"bb c #f6cebd", -".l c #f6d6d5", -".w c #f6eeee", -"#z c #f6f6ee", -".X c #f6f6ff", -"a0 c #f6ffee", -"ab c #ff2829", -"#y c #ff2839", -".5 c #ff3029", -".6 c #ff3039", -"aw c #ff3829", -".K c #ff3839", -".J c #ff4839", -".u c #ff4852", -".o c #ff5052", -".j c #ff5952", -"#E c #ff596a", -".d c #ff6152", -".U c #ff616a", -".y c #ff6952", -"#a c #ff696a", -".t c #ff697b", -"#x c #ff716a", -"#g c #ff717b", -"#b c #ff796a", -"a4 c #ff797b", -".H c #ffffff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQt.#.a.b.c.d.eQtQtQtQtQtQtQtQtQtQtQtQt.f.g.h.i.j.k.lQtQtQtQtQtQtQt", -"QtQtQtQtQtQt.m.n.o.p.q.r.s.t.u.vQtQtQtQtQtQtQtQt.w.x.y.e.z.A.B.y.C.DQtQtQtQtQtQt", -"QtQtQtQtQt.E.F.G.d.s.q.H.I.y.J.K.LQtQtQtQtQtQt.f.G.k.o.E.H.H.M.N.u.O.PQtQtQtQtQt", -"QtQtQtQt.Q.R.S.T.D.U.V.W.q.X.Y.Z.0.OQtQtQtQt.1.2.n.k.3.X.B.v.4.j.u.5.6.7QtQtQtQt", -"QtQtQtQt.8.R.R.9#.###a#b#c.z.q.m.G.C.7QtQt.l#d.2#e#f.B.E.i#g.U.o.J.6.5#h.QQtQtQt", -"QtQtQt#i.8#j.R#k#l#m#a#n.e.e.s.W#o.k.n.7.Q#d.n#p#o.E.s.e.h#q.U.u.K.6#h.5#rQtQtQt", -"QtQtQt#s.8#t#t.R.T.D.d#a#n.N.b#b#n#b#u.n#v#w#a#a#x#n.N.N.4#a.o.J.5#h#h#y.5#zQtQt", -"QtQtQt#s#A.8.8#t.R#B#C#D#E.U.d.j.o.o.o.6.F#F#m#D#G.j.d.U.j.u.K#H#h#r.5.6.6#IQtQt", -"QtQt#J#K#L#s#M.8#j.R.F#C#N#u.u.u.J#H.K.K#O.T#N#C#P#Q#Q#R#S.O#T#U#V#U#r.5.5.OQtQt", -"QtQt#W#X#L#Y#Z#0#j.R.S#1#2#N#H#H#3.k#V#h.R#B#4#C#N#C#5#5.O#6#U.0#T#V.5.5.5#VQtQt", -"QtQt#W#X#7#8#s#t#9a..R.R#1#w.Pa##S.k#h.O.R#O#1#F#C.G.G#6.Z#T#U#U#Uaa#h.6.5abQtQt", -"QtQtacadae#7#s#Aafa.ag.R.F#d.n.k.a.aa##h#O#O.9#.#N.G#C.C.Z#U#U#U#Uaa#h.6#y#hQtQt", -"QtQtahai#Kaj#s#tak#j.R.R.S#1#w#C#H.u.J.K.9#1#Nal.G.G.n.n.Z.Z#T.0aa#h#h.6.6aaQtQt", -"QtQtamanao#X#s#A.8aga..R.R.S#1#w.G#R.U.vap#a#m#Caq.n.n.Z.n.C.0#U#V#V.6.6.6#rQtQt", -"QtQtarasat#X#s#0.8#t#j.R.Rau.S#1#1.G#Q.dav#Qaq#C.n.naq.C#v#5#T#V#Vaw.J.K.6axQtQt", -"QtQtQtayazaoaj#s#AakaA#j.R.Rau.S.F#w#2.n.naq#w#w.n.n.n.Z.Z#U#T.O#H.J.J.u.KaBQtQt", -"QtQtQtaCaDat#7#s#0#t.8af.Rag.Rau.S.FaE.F#d#d.2#w.n.n.n.Z#6#T.O#H.J.u.j.j#V.wQtQt", -"QtQtQtaFayaG#X#s#s#Zakafa..R.R.Rau.FaH.FaI#d#d#w.n.n.n#6.O.O#H.J.o.d.t#E.ZQtQtQt", -"QtQtQtQtaJaKao#7#s#0akafafag.Rau.Rau.S#1#w#d#d#d.n.n.n#5#T#H#u.o#a#n.e.j.NQtQtQt", -"QtQtQtQtaLaMaiao#L#s#tak#j.R.Rag.S.S.FaH#w#w#d.n.n.n.G#T.k.J.o#a#p.s.e.OQtQtQtQt", -"QtQtQtQt.waNasataj#saO.8afaA.R.Rag.S.F.FaE.F.2#w.n#C#5.x.J.o#a#p.W.z#q#IQtQtQtQt", -"QtQtQtQtQtaPayaQ#Xaj#s#0.8aAa..Ragau.F.S.F#1#daq.n.G.k#R.o#a.i#oaRaS.kQtQtQtQtQt", -"QtQtQtQtQtQtaJaTai#X#L#AakaA#j.R.Rau.S.S.F#w#w#2.G#5.k.o#a.V#o.X#z.Y.lQtQtQtQtQt", -"QtQtQtQtQtQt.AaCaUai#7#L#Z.8a.#j.R.Rau.S.F#1#waV#C#3#u.U.e.M#z.H.1aWQtQtQtQtQtQt", -"QtQtQtQtQtQtQtaXaYaZao#7#s#A#t#ta..R.Rau.S#w#w.G#P.J.y.V#oa0.H.3#HQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQta1aYaGaoaj#Y#0.8a.agag.Ra2#1#wa3#Q.da4.W#z.Hap#VQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtaXa5aiaoaj#s#0#t#j.Rag.S#1.Ga6#G.4.saR.q.1.kQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQt.raUataoaj#L#0.8#j.R.S#1aV#m.d.i#o.Mav##QtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtaUataoaj#s#A.8.R.R.9#F#Q.t#c.v.oa7QtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQta8ad#X#X#s#0a..Ra9#NaW.4.d#TQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQt#zb.#X#7#M#9.RaVb#.j.0apQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#zba#7#A.R#m.PbbQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbc#FbdQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - - -static const char* const p_icon_data[] = { -"16 15 164 2", -"ax c None", -"aH c None", -"ao c None", -"an c None", -"ag c None", -"af c None", -"am c None", -".e c None", -".n c None", -"#2 c None", -"ae c None", -"#T c None", -"#H c None", -".# c None", -".o c None", -"Qt c None", -"#3 c #000000", -".a c #eececd", -"#A c #6a2429", -"ap c #080000", -"#I c #6a595a", -"ay c #311010", -".m c #bd5962", -".d c #dec2cd", -"aw c #9c9dc5", -".D c #9c8594", -"aG c #acaed5", -".b c #f6ced5", -".c c #ffe6ee", -".f c #ee99a4", -"#4 c #733839", -"ah c #7b3839", -"#S c #9ca1cd", -".E c #ffb6b4", -"#U c #ac696a", -"aq c #833c39", -"#1 c #cdd2ff", -".P c #945d62", -".p c #ffbabd", -"az c #7b3031", -"al c #bdc2de", -"aC c #f6f2ff", -"aD c #f6f6ff", -"ad c #b4bade", -".l c #e66162", -"#B c #bd696a", -"aE c #d5daff", -"aF c #d5d6f6", -"aB c #c58da4", -".u c #dea1a4", -"av c #fffaff", -".g c #f6d2de", -"ai c #ac4041", -".C c #de5d62", -"ar c #9c3831", -".q c #f6cecd", -"#5 c #b4484a", -"aA c #943c41", -"#V c #c54c4a", -".t c #f6cecd", -"#J c #d54041", -".r c #f6d2d5", -".v c #f6c2c5", -".s c #f6d2d5", -".Q c #f68183", -".k c #f6b2bd", -"aj c #d55052", -".F c #ffb2b4", -".h c #f6e6ee", -"#R c #a4baf6", -"#Q c #acbeff", -"#9 c #b4c2f6", -"#m c #b4c6f6", -"#0 c #b4c6ff", -"#G c #bdaed5", -"#Y c #bdc2e6", -"#F c #bdcaff", -"ak c #bdceff", -"#q c #c5484a", -"a# c #c5ceee", -"#Z c #c5ceff", -"ac c #c5d2ff", -"#o c #cdd6ee", -"#n c #cdd6f6", -"#v c #cdd6ff", -"#8 c #d5bade", -"#W c #d5daff", -"au c #d5deff", -"#M c #d5e6ff", -"#z c #de5562", -"#y c #decee6", -"#D c #ded6ee", -"aa c #dedeee", -"#N c #dee2ff", -"a. c #dee6ff", -"#r c #e63c39", -"as c #e67983", -"#X c #e67d94", -"#p c #e691ac", -"#P c #e6e2ff", -"ab c #e6eaff", -"#E c #eeeeff", -"#O c #eef2ff", -"#t c #eef6ff", -"#C c #f63839", -"#l c #f6aebd", -"#u c #f6f6ff", -"#f c #ff3031", -"#e c #ff3431", -"#7 c #ff3439", -".6 c #ff3839", -"#6 c #ff3c41", -".7 c #ff4441", -".Z c #ff444a", -".Y c #ff484a", -"#d c #ff4c4a", -"#K c #ff4c52", -"#L c #ff5052", -"#c c #ff555a", -".0 c #ff595a", -"#g c #ff5d5a", -"#b c #ff6562", -"#s c #ff656a", -"#h c #ff696a", -".8 c #ff6d6a", -".O c #ff6d73", -"#i c #ff7173", -".9 c #ff7573", -".X c #ff757b", -"#a c #ff797b", -"#j c #ff7d83", -".R c #ff8183", -"#k c #ff8583", -".1 c #ff858b", -".S c #ff898b", -"#. c #ff9194", -".2 c #ff9594", -".B c #ff959c", -".W c #ff999c", -".N c #ff9d9c", -".T c #ff9da4", -"## c #ffa1a4", -".3 c #ffa5ac", -".G c #ffaaac", -".H c #ffaeac", -".A c #ffb2b4", -".5 c #ffb6b4", -".4 c #ffb6bd", -".M c #ffbabd", -".I c #ffbebd", -".z c #ffbec5", -".U c #ffc6c5", -".V c #ffc6cd", -".J c #ffcacd", -".y c #ffcecd", -".j c #ffd2d5", -".K c #ffd6de", -".L c #ffdee6", -".i c #ffe2e6", -".x c #ffe6e6", -".w c #ffeeee", -"at c #fff6ff", -"#x c #fffaff", -"#w c #ffffff", -"Qt.#.a.b.c.d.e.f.g.h.i.j.k.l.m.n", -".o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D", -".E.F.G.H.I.J.K.L.L.j.J.M.G.N.O.P", -".Q.R.S.T.H.I.U.J.U.V.M.A.W.X.Y.Z", -".0.X.1.2.3.H.4.M.M.5.3.S.O.Y.6.7", -".Z.8.9.1#..T##.3.N#.#a#b#c#d#e.Z", -"#f#g#h#i#j.R.1#k#l#m#n#o#p.7.Y#q", -"#r#d#g#s.8.9.X.0#t#u#v#w#x#y#z#A", -"#B#C#c.0#s#s.0#D#w#w#E#x#w#F#G#H", -"#I#J.7#K#L.0.0#M#N#x#O#P#N#Q#R#S", -"#T#U#V.Y.Y.Z#K#M#F#W#W#X#Y#Z#0#1", -"#2#3#4#5.Y#6#7#8#9#Fa.a#aaabacad", -"aeafagahaiaj.6.Yaka.#w#u#u#w#xal", -"#2amanaoapaqar.6asat#w#wau#wavaw", -"aeafagaoax#3ayazaAaBaCaDaEaFaGaH"}; - -static const char* const t_open_icon_data[] = { -"18 18 70 2", -"Qt c None", -".c c #000000", -".g c #00348b", -"#c c #00388b", -"#d c #003894", -".T c #0859b4", -".R c #0875bd", -".U c #1059bd", -".M c #1081cd", -".I c #1095d5", -".u c #10aae6", -".b c #1871e6", -".Q c #1875cd", -".D c #18a1e6", -".y c #2069c5", -".a c #2071e6", -".A c #2075cd", -".# c #2075e6", -".q c #2079cd", -".S c #2969c5", -".o c #2969cd", -".n c #297dcd", -".i c #2981cd", -".m c #2981d5", -".N c #29a1de", -".k c #3181cd", -".L c #3181d5", -".j c #3185d5", -".O c #31a5e6", -".K c #3981cd", -".G c #4191d5", -".z c #4a8dd5", -".P c #4a91d5", -".H c #4a95de", -".p c #5295d5", -".l c #5299d5", -".B c #529dde", -".F c #5a99de", -".h c #5a9dde", -".C c #5a9de6", -".V c #627db4", -".t c #62a5de", -".s c #62aae6", -".J c #62c2ee", -".r c #83bae6", -".E c #83d2f6", -".f c #94bee6", -".d c #94beee", -".e c #94c2ee", -".w c #9ce2f6", -".v c #a4e2f6", -".x c #a4e2ff", -".Y c #acbede", -".X c #acc2de", -".7 c #acc2e6", -".W c #b4c2de", -".6 c #b4c2e6", -".Z c #b4c6e6", -".0 c #bdcae6", -".8 c #bdceee", -".9 c #cdd6ee", -".1 c #cddaee", -".2 c #d5daee", -"#. c #d5def6", -".3 c #dee2f6", -".4 c #e6eef6", -"## c #eeeeff", -"#a c #f6f2ff", -".5 c #f6f6ff", -"#b c #fffaff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"Qt.#.a.#.b.c.cQtQtQtQtQtQtQtQtQtQtQt", -".#.d.e.f.e.g.c.cQtQtQtQtQtQtQtQtQtQt", -".a.h.i.j.k.j.i.j.k.j.i.j.g.cQtQtQtQt", -".#.l.m.n.o.o.o.o.o.o.o.o.o.o.o.o.o.c", -".b.p.q.o.r.s.t.s.t.s.t.s.u.v.w.x.y.c", -".#.z.A.o.h.B.h.B.C.B.h.B.D.E.E.E.o.c", -".a.z.y.F.G.H.G.H.G.H.G.H.I.J.J.o.c.c", -".#.K.o.F.L.i.L.i.L.i.L.i.M.N.O.o.cQt", -".b.o.P.A.Q.A.Q.A.Q.A.Q.A.R.M.S.cQtQt", -".#.o.T.T.U.T.T.T.U.T.T.T.U.T.o.cQtQt", -".a.V.W.X.Y.Z.0.1.2.3.4.5.5.o.c.cQtQt", -".#.Z.6.Z.7.Z.8.9#..3###a#b.o.c.cQtQt", -".g#c.g#d.g#c.g#d.g#c.g#d.g.c.cQtQtQt", -".c.c.c.c.c.c.c.c.c.c.c.c.c.cQtQtQtQt", -".c.c.c.c.c.c.c.c.c.c.c.c.c.cQtQtQtQt"}; - -static const char* const t_save_icon_data[] = { -"16 17 64 1", -". c None", -"F c #000000", -"8 c #080810", -"E c #101418", -"2 c #181418", -"Q c #181818", -"S c #201c31", -"K c #292829", -"v c #313039", -"0 c #413c52", -"W c #4a4862", -"4 c #4a488b", -"e c #4a5562", -"6 c #525073", -"7 c #525573", -"a c #5a5962", -"c c #5a596a", -"5 c #5a599c", -"3 c #5a5d9c", -"# c #625d6a", -"i c #62616a", -"N c #62619c", -"L c #6a65a4", -"9 c #6a698b", -"U c #6a69a4", -"R c #7371ac", -"M c #7b75ac", -"V c #7b79b4", -"C c #7b7db4", -"w c #837db4", -"P c #8381bd", -"D c #8b85bd", -"I c #8b89bd", -"H c #9491c5", -"z c #9495c5", -"Y c #9c95c5", -"1 c #a4a5cd", -"Z c #acaacd", -"O c #acaad5", -"x c #b4aed5", -"r c #b4b6d5", -"y c #bdbade", -"l c #c5bede", -"m c #c5c2e6", -"j c #c5c6e6", -"s c #cdc6e6", -"q c #cdcee6", -"t c #d5cae6", -"h c #d5d2ee", -"u c #d5d6ee", -"n c #ded6ee", -"p c #dedaee", -"o c #dedaf6", -"g c #dedeee", -"A c #e6dae6", -"X c #e6def6", -"T c #e6e2ee", -"G c #e6e2f6", -"b c #e6e6f6", -"J c #e6eef6", -"d c #eee6f6", -"B c #eeeaf6", -"k c #fffaff", -"f c #ffffff", -"........#.......", -".......abc......", -"......#def#.....", -".....agefffc....", -"....#hifffff#...", -"...ajcfkfffffc..", -"..#lmj#fknonpq#.", -".arlasjcqtuppvwc", -"#xyadahz#bABvCDE", -"FmaGGbaHIcJKLMED", -"NFdGOGdaPCQRRED.", -".SFpTOGOaRUVEWF.", -"..FFXGYZQNVE0FFF", -"...FFO123VEFFFFF", -"....FFQ45E6FFFFF", -".....FFIE7FFFFFF", -"......F89FFFF..."}; - -static const char* const t_saveas_icon_data[] = { -"18 18 93 2", -"Qt c None", -".o c #000000", -".L c #100c08", -".k c #181c18", -".n c #201c20", -".V c #202020", -".M c #291808", -".W c #312010", -"#a c #393c39", -".l c #413c41", -".m c #414041", -"#o c #414441", -"#t c #4a444a", -"#x c #525552", -".j c #5a3c20", -"#A c #5a555a", -"#s c #5a595a", -"#m c #5a5d5a", -"#f c #626162", -"#b c #626562", -".1 c #629da4", -".N c #6a3400", -".0 c #6a5041", -"#e c #6a656a", -"## c #6a696a", -"#d c #6a6d6a", -".H c #6aa5a4", -".I c #6aa5ac", -".X c #734429", -".2 c #736d73", -".U c #737173", -".K c #737573", -".G c #73a19c", -".c c #73e218", -"#c c #7b757b", -".z c #7b797b", -"#w c #7b7d7b", -".d c #7be620", -".3 c #837d83", -"#v c #838183", -"#q c #838583", -".a c #83e218", -".# c #83e620", -"#r c #8b858b", -"#l c #8b8d8b", -".g c #8be218", -".b c #8be620", -"#k c #949194", -".f c #94e218", -".Y c #9c654a", -".e c #9ce620", -".F c #a48562", -"#z c #aca5ac", -".J c #acbab4", -"#y c #b4b6b4", -".A c #bd5d00", -".Z c #bd7d62", -".7 c #bdb2ac", -"#u c #bdb6bd", -"#p c #bdbebd", -".8 c #c5bab4", -".6 c #c5babd", -".i c #cd814a", -".5 c #cdc6c5", -"#j c #cdcacd", -".E c #d59962", -".s c #d59d6a", -".t c #d59d7b", -"#i c #d5d2d5", -".R c #deaa8b", -".9 c #decec5", -"#n c #dedede", -".B c #e67500", -".u c #e6d2c5", -"#h c #e6dee6", -".O c #ee7d10", -".P c #ee8531", -".4 c #eee2e6", -"#g c #eee6ee", -".p c #f67908", -".Q c #f6a57b", -".r c #f6b673", -".D c #f6c27b", -".S c #f6dede", -"#. c #f6e6de", -".C c #ff9d31", -".q c #ffaa4a", -".h c #ffd6a4", -".T c #ffeade", -".y c #ffeee6", -".x c #fff2ee", -".w c #fff6f6", -".v c #fffaff", -"QtQt.#.a.b.c.d.cQtQt.e.f.e.g.b.gQtQt", -".h.i.j.k.l.m.m.m.m.m.m.m.k.n.o.oQtQt", -".p.q.r.s.t.u.v.w.w.x.x.y.m.z.n.o.oQt", -".o.A.B.C.D.E.F.G.H.I.J.y.m.K.k.o.oQt", -".o.L.M.N.O.P.Q.R.S.y.y.T.m.U.n.o.oQt", -".o.k.U.V.W.X.Y.Z.0.1.J.T.m.2.k.o.oQt", -"Qt.k.3.l.4.5.6.7.8.9#.#..m##.n.o.oQt", -"Qt.n.z.z#a.l#a.l#a.l.l.m#b##.k.o.oQt", -"Qt.k.z.K#c.U.U#d.2#####e#e#f.n.o.oQt", -"Qt.n.U.U#d.m.m.m.m.m.m.m#f#f.k.o.oQt", -"Qt.k.U.2.m#g#h#i#j.m#k#l.m#m.n.o.oQt", -"Qt.n####.m#n.m#o#p.m#q#r.m#s.k.o.oQt", -"Qt.k###e.m#i#t#e#u.m#v#w.m#x.n.o.oQt", -"Qt.n#b#b.m#j#p#y#z.m.K.K.m#A.k.o.oQt", -"Qt.o.n.k.n.m.m.m.m.k.n.k.n.k.o.o.oQt", -"Qt.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.oQt", -"QtQt.o.o.o.o.o.o.o.o.o.o.o.o.o.oQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const t_close_icon_data[] = { -"16 16 76 2", -"Qt c None", -".# c #292c29", -".v c #313031", -".i c #313431", -"#h c #393839", -"#j c #181c18", -"#g c #201c20", -"#f c #202020", -"#i c #202420", -".w c #292429", -".h c #292829", -"#. c #292c29", -".a c #312c31", -".5 c #313031", -".2 c #313431", -".V c #393839", -".Q c #393c39", -".u c #414041", -".x c #4a484a", -".g c #4a4c4a", -".7 c #524c52", -".f c #525052", -".e c #525552", -".y c #5a555a", -".d c #5a595a", -".H c #5a5d5a", -".c c #625d62", -".z c #626162", -".b c #626562", -".A c #6a656a", -".I c #6a696a", -".W c #6a6d6a", -".B c #736d73", -".k c #737173", -".C c #737573", -".J c #7b797b", -".l c #7b7d7b", -".D c #837d83", -".E c #838183", -".n c #838583", -".m c #8b858b", -".F c #8b898b", -".o c #8b8d8b", -".6 c #948d94", -".p c #949194", -".q c #949594", -".O c #9c959c", -".r c #9c999c", -"#c c #9c9d9c", -".s c #a4a1a4", -".0 c #a4a5a4", -".K c #acaaac", -".3 c #acaeac", -".P c #b4aeb4", -".1 c #b4b2b4", -".4 c #b4b6b4", -".G c #bdb6bd", -".9 c #bdbebd", -".t c #c5bec5", -".8 c #c5c2c5", -"#d c #c5c6c5", -"#b c #cdc6cd", -"#a c #cdcacd", -".L c #cdcecd", -"#e c #d5ced5", -".N c #d5d6d5", -".R c #ded6de", -".j c #dedade", -".M c #dedede", -".U c #e6dee6", -".X c #e6e2e6", -".T c #e6e6e6", -".Y c #eee6ee", -".Z c #eeeaee", -"## c #eeeeee", -".S c #ffffff", -"Qt.#.a.b.c.d.d.e.f.f.f.g.f.h.iQt", -".#.c.j.k.l.m.n.o.o.p.q.r.s.t.u.v", -".a.j.w.x.y.d.z.A.B.C.D.E.F.o.G.h", -".z.E.x.H.H.I.I.k.J.D.E.F.o.q.K.u", -".c.l.y.z.j.L.C.J.E.E.M.N.O.r.P.Q", -".d.m.e.I.R.S.M.D.E.T.S.U.O.s.K.V", -".d.n.z.W.C.M.S.X.Y.S.Z.r.s.0.1.2", -".e.o.b.k.J.D.U.S.S.Y.O.s.s.3.4.5", -".f.6.B.J.E.E.Y.S.S.Z.s.s.K.4.t.a", -".7.p.k.D.E.T.S.Y.Y.S.Z.K.1.8.9#.", -".f.q.D.E.M.S.Z.r.s##.S##.9#a#b.w", -".x.r.D.F.T.U.O.s.s.K.Z.Z.8.N#a.w", -".f#c.F.p.O.r.s.s.K.1.9#d#e.M#a#f", -".h.t.F.q.r.s.0.3.4.8#a.N.j.S.J.h", -".i.u.G.K.P.K.1.4.t.8#b#b.U.J#g#h", -"Qt.v.w.u.V.V.2.5#.#.#i.w#j.h#hQt"}; - -static const char* const t_add_icon_data[] = { -"18 18 9 1", -". c None", -"# c #000000", -"b c #008100", -"d c #00c200", -"f c #830000", -"g c #838100", -"c c #c50000", -"a c #c5ffc5", -"e c #ff0000", -"..................", -"........####......", -".......#ab###.....", -"......#cdbb###....", -".....#ecbbb###....", -"....#ebdcbbb###...", -"...eccbdbcdbb###..", -"..ecbdcdddbbb###..", -".ccbdaacbbdbbb###.", -".cfbgddacdbdbba###", -".ccf#dddaaddbab###", -".ec####dddadab####", -".ec#####dddab#####", -".ec#######ab#####.", -".#e###.#########..", -".#e###..#######...", -"..####....####....", -"..###............."}; - -static const char* const t_rescan_icon_data[] = { -"18 18 152 2", -"Qt c None", -".U c #005900", -".e c #005d00", -".# c #006100", -"#T c #005900", -".d c #005d00", -"#f c #006100", -".a c #006500", -"ae c #005900", -".o c #005d00", -".f c #006100", -"#g c #005900", -".b c #005d00", -"#C c #005900", -".c c #005d00", -"aq c #005900", -".A c #005d00", -".p c #006100", -".n c #005d00", -"#8 c #006100", -".g c #006500", -".m c #006100", -"#e c #006500", -".h c #006900", -"av c #086908", -"ar c #086d08", -"#9 c #005d00", -".z c #006100", -".K c #006500", -".q c #006900", -".J c #006100", -".B c #006500", -"#t c #006d00", -".l c #007100", -".i c #007500", -"#h c #087508", -"as c #107910", -"au c #188118", -"#7 c #008500", -".V c #088108", -"#1 c #088508", -".r c #108510", -".5 c #188518", -".y c #188918", -"#L c #007500", -"#u c #007900", -"#D c #087908", -".j c #107910", -".k c #187d18", -"at c #188118", -"a. c #109d10", -"ak c #189d18", -".C c #209920", -".L c #209d20", -"af c #20a120", -".I c #39a139", -"#U c #00a100", -"#s c #00a500", -"#S c #00ae00", -"#B c #00b200", -"#K c #00b600", -"#J c #00be00", -"#A c #00c200", -"#V c #00ca00", -"#M c #08b208", -"#r c #08c208", -"#2 c #08c608", -"#N c #08ca08", -"#E c #10ba10", -"#6 c #10c610", -"#3 c #18d618", -"#d c #209d20", -"#F c #20ce20", -"al c #29aa29", -"a# c #29d629", -".6 c #31aa31", -"ap c #31ae31", -"#v c #31c231", -"ag c #31ce31", -"#i c #39ba39", -"ao c #39c239", -"aj c #39ce39", -"ah c #39da39", -"am c #41c241", -"an c #41ca41", -"ac c #41d641", -"aa c #41da41", -"ai c #41de41", -"#q c #4ace4a", -"#P c #4ad24a", -"#w c #4ad64a", -"#W c #4ada4a", -".s c #52ae52", -"#x c #52d252", -".x c #5aaa5a", -"#Q c #5ace5a", -"#c c #5ada5a", -"ad c #62e262", -"#p c #6ad26a", -"#j c #6ade6a", -"#I c #73d273", -".W c #73d673", -"#o c #73da73", -"#b c #73de73", -"#m c #73e273", -"#4 c #73e673", -".t c #7bca7b", -".4 c #7bd67b", -".7 c #7bde7b", -"#n c #83e283", -"#H c #83e683", -"ab c #83ea83", -".w c #8bce8b", -"#y c #8bd68b", -"## c #8be68b", -"#a c #8bea8b", -".D c #94de94", -"#l c #94ea94", -".v c #9cde9c", -"#5 c #9cea9c", -".u c #a4dea4", -".M c #a4e6a4", -".2 c #a4eaa4", -".X c #acdaac", -"#Z c #acdeac", -".T c #aceaac", -".3 c #aceeac", -".O c #b4dab4", -".Q c #b4deb4", -".1 c #b4eeb4", -"#0 c #b4f2b4", -"#k c #bde2bd", -".N c #bde6bd", -"#O c #bdf2bd", -".E c #c5eec5", -".R c #c5f2c5", -".P c #cdeacd", -".H c #cdf2cd", -".S c #cdf6cd", -"#Y c #d5eed5", -"#R c #d5f6d5", -".Y c #deeede", -"#z c #def2de", -".G c #def6de", -"#. c #defade", -".0 c #e6f6e6", -".F c #e6fae6", -".8 c #eef2ee", -".9 c #eefaee", -"#X c #eeffee", -"#G c #f6fff6", -".Z c #ffffff", -"QtQtQtQtQt.#.a.b.c.c.b.d.eQtQtQtQtQt", -"QtQtQtQt.f.g.h.i.j.k.l.m.n.oQtQtQtQt", -"QtQtQt.p.q.r.s.t.u.v.w.x.y.z.AQtQtQt", -"QtQt.p.B.C.D.E.F.F.F.G.H.u.I.J.AQtQt", -"Qt.o.K.L.M.E.N.O.P.Q.H.R.S.T.I.z.oQt", -".U.n.V.W.M.X.Y.Z.Z.Z.0.1.2.3.4.5.n.e", -".d.h.6.7.v.8.Z.9#..0.R###a#b#c#d#e#f", -"#g#h#i#j#k.Z.G#l#m#n#o#p.W#q#r#s#t.b", -".c#u#v#w.9.Z.2#w#x#y.N#z.9.H#A#B#u.c", -"#C#D#E#F.F#G#H#F#I.Z.Z.Z.Z.9#J#K#L.c", -".b.i#M#N#O.Z.H#P#Q#G.Z.Z.Z#R#N#S.i.b", -"#T.h#U#V#W#X.Z#Y#Z#G.Z.Z.Z#0#V#U#e.d", -".e.n#1#2#3#4#X.Z.Z.Z.Z#G.Z#5#6#7#8.e", -"Qt.o#9a.#Fa#aaab#l#Hacad#laca..zaeQt", -"QtQt.A.Jafagaaahaiahaiahajak.J.AQtQt", -"QtQtQt.A.z.yalaman#qaoap.y.zaqQtQtQt", -"QtQtQtQt.o.narasatatauav#8.oQtQtQtQt", -"QtQtQtQtQt.e#T.b#C.c#g.d.UQtQtQtQtQt"}; - -static const char* const t_delete_icon_data[] = { -"16 16 80 2", -"Qt c None", -".P c #000000", -"#i c #180000", -".G c #200000", -".e c #200808", -".O c #410000", -".Y c #4a0000", -".o c #4a3c39", -"#h c #520400", -"#k c #5a0408", -".v c #5a484a", -"#l c #940400", -"#g c #ac0000", -"#j c #b40000", -"#n c #b40408", -"#f c #b40808", -".F c #b43031", -"#. c #bd0408", -"#c c #bd0808", -"#m c #bd0810", -".n c #bd4c52", -".5 c #c50408", -".X c #cd0c08", -".u c #d56562", -".N c #e62020", -"#d c #f60000", -".d c #f6797b", -".7 c #ff0000", -".4 c #ff0400", -"#e c #ff0408", -"## c #ff0808", -".Z c #ff0c10", -".6 c #ff1010", -".w c #ff1818", -".8 c #ff1c20", -".Q c #ff2420", -".1 c #ff2429", -".0 c #ff2829", -".W c #ff2c31", -"#a c #ff3431", -".H c #ff3439", -".V c #ff3839", -".R c #ff4041", -".M c #ff4441", -".L c #ff5052", -".E c #ff595a", -".D c #ff5d5a", -".B c #ff7173", -".t c #ff757b", -".# c #ff797b", -".s c #ff7d7b", -".C c #ff7d83", -".A c #ff8183", -".y c #ff8583", -".a c #ff858b", -".b c #ff898b", -".c c #ff8d8b", -".r c #ff8d94", -".I c #ff9194", -".q c #ff999c", -"#b c #ff9d9c", -".x c #ff9da4", -".2 c #ffa1a4", -".z c #ffa5a4", -".m c #ffa5ac", -".p c #ffaeac", -".S c #ffb2b4", -".l c #ffb6b4", -".g c #ffb6bd", -".h c #ffbabd", -".k c #ffc2c5", -".j c #ffc6c5", -".i c #ffc6cd", -".K c #ffdede", -".9 c #ffdee6", -".T c #ffe6ee", -".3 c #fff2f6", -".J c #fff6ff", -".U c #fffaff", -".f c #ffffff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQt.#.a.b.c.b.b.d.eQtQtQtQt", -"QtQt.f.b.g.h.i.j.k.l.m.n.oQtQtQt", -"QtQt.g.p.q.b.r.r.b.s.t.#.u.vQtQt", -"Qt.w.x.y.t.z.A.#.B.c.C.D.E.F.GQt", -"Qt.H.b.E.I.f.k.E.B.J.K.L.M.N.O.P", -"Qt.Q.E.R.E.h.f.S.T.U.t.V.W.X.Y.P", -"Qt.w.Q.Z.0.1.2.f.3.L.w.w.4.5.O.P", -"Qt.6.w.7.7.8.9.3.f.b.7.7.7#..O.P", -"Qt####.7#a.T.3.H.A.f#b##.7#c.O.P", -"Qt#d#e.7.0.k.R.7.7#b.r.4.7#f.O.P", -"Qt.G#g.7.7#e.7.7.7.7.7.7.5#h.P.P", -"QtQt#i#j.7.7.7.7.7.7.7.5#k.P.P.P", -"QtQtQt#i#l#m#f#f#f#f#n#h.P.P.PQt", -"QtQtQtQt#i.Y.Y.O.O.O.O.P.P.PQtQt", -"QtQtQtQtQt.P.P.P.P.P.P.P.PQtQtQt"}; - -static const char* const t_config_icon_data[] = { -"16 16 54 1", -". c None", -"b c #39385a", -"g c #5a597b", -"f c #5a5d7b", -"u c #625d7b", -"n c #625d83", -"A c #6a698b", -"Q c #6a6d8b", -"J c #737194", -"D c #737594", -"X c #7b7594", -"V c #7b7994", -"Z c #7b799c", -"K c #7b7d9c", -"L c #837d9c", -"q c #83819c", -"o c #8381a4", -"a c #8385a4", -"# c #8b85a4", -"W c #8b89a4", -"U c #8b89ac", -"T c #8b8dac", -"E c #948dac", -"P c #9491ac", -"S c #9491b4", -"O c #9495ac", -"Y c #9c95b4", -"N c #9c9db4", -"I c #a49dbd", -"H c #a4a1bd", -"C c #acaabd", -"z c #acaac5", -"R c #b4b2c5", -"x c #b4b2cd", -"w c #b4b6cd", -"t c #bdb6cd", -"M c #bdbacd", -"r c #c5bed5", -"m c #c5c2d5", -"l c #cdcade", -"k c #cdcede", -"j c #d5d2e6", -"i c #d5d6e6", -"e c #dedae6", -"v c #dedee6", -"h c #dedeee", -"d c #e6e2ee", -"c c #e6e6ee", -"G c #eee6f6", -"F c #eeeaf6", -"B c #eeeef6", -"y c #f6f2ff", -"s c #f6f6ff", -"p c #fff6ff", -"....#a#a#.......", -"....bcddefg.....", -"....#bdhhijg....", -".....abeijkf....", -"#a....#ajklmn...", -"opq...qjklmrg...", -"#sda.ajklmrtu...", -"qsveqjllmrwxg...", -"#yhijklmrtxzn...", -"qABjklmrtxCzDf..", -".bEFFcGdjmzHIJn.", -".abbqqKLqMMNOPQf", -"...obbbbbLMRSTUA", -"........qbVtCWqq", -".........obXtHoK", -"..........qbJxYZ"}; - -static const char* const t_help_icon_data[] = { -"16 18 38 1", -". c None", -"y c #000000", -"d c #000000", -"x c #000000", -"H c #000000", -"c c #000000", -"G c #000000", -"t c #000000", -"n c #000000", -"s c #000000", -"w c #000000", -"J c #000000", -"D c #000000", -"B c #000000", -"v c #000000", -"r c #000000", -"C c #000000", -"l c #000000", -"k c #000000", -"I c #000000", -"j c #000000", -"q c #000000", -"b c #000000", -"a c #00385a", -"# c #003862", -"h c #00406a", -"o c #004473", -"g c #00508b", -"f c #005594", -"F c #00599c", -"e c #2981c5", -"u c #2985c5", -"m c #3185c5", -"z c #4191cd", -"p c #5299cd", -"i c #6aaad5", -"A c #6aaade", -"E c #8bbee6", -"....#a#a#abcd...", -"...aefbbbfgbbcd.", -"..hifbjklamgfbnd", -"..opbqrstsaugbvc", -"..#efbwx.yhzfblt", -"..cagfbnd.hzgblt", -"..ynbbbvcaAfbqvc", -"...ynBCDaEFbqrnd", -"....ycGaAFbqrnd.", -"......augbqrnd..", -"......#efbksd...", -"......cbbqvc....", -"......ynBBnd....", -".......aasx.....", -"......#ifbnd....", -"......HbbIJH....", -"......ynBBnd....", -".......yccd....."}; - -static const char* const t_new_icon_data[] = { -"16 16 51 1", -"d c None", -"e c None", -"p c None", -"m c None", -"c c None", -". c None", -"r c #7b859c", -"E c #7b85a4", -"b c #7b89a4", -"B c #acbacd", -"w c #b4bacd", -"f c #b4becd", -"a c #b4bed5", -"# c #bdc2d5", -"v c #bdc6d5", -"A c #c5cade", -"K c #c5cede", -"Q c #cdcede", -"R c #cdcee6", -"U c #cdd2de", -"J c #cdd6e6", -"I c #d5d6e6", -"k c #d5dae6", -"V c #d5daee", -"W c #dedae6", -"u c #dedee6", -"l c #dedeee", -"o c #dee2ee", -"t c #e6e6ee", -"D c #e6e6f6", -"j c #e6eaf6", -"i c #eeeaf6", -"n c #eeeef6", -"z c #f6eef6", -"s c #f6f2ff", -"y c #f6f6f6", -"h c #f6f6ff", -"x c #ff9500", -"C c #ff9900", -"G c #ffc600", -"H c #ffca00", -"g c #fffaff", -"F c #ffff18", -"P c #ffff5a", -"L c #ffff62", -"M c #ffff8b", -"O c #ffff94", -"N c #ffffbd", -"S c #ffffcd", -"T c #ffffd5", -"q c #ffffff", -"....#a#a#a#abcde", -"....fghhijklfb.m", -"....#gghnjol##bp", -"....fqhhnnllrbrb", -"....#gghsntukvwr", -"....xxyhnzooAaBb", -".xC.CxgxCnDlA##E", -"xFGxFFxHFxIJKKvb", -".xLMNNOPClkJIQRr", -"..xHSTGxolkkIIUb", -".xLMNNOLColkkJIE", -"xFGxFFxHFxulJIUb", -".xC.CxixCookVIIr", -"....xxttoouWIIUb", -"....#nittookkJIE", -"....rbrbrbrbrbrb"}; - -static const char* const t_find_icon_data[] = { -"16 16 166 2", -"Qt c None", -"aG c #000000", -".y c #395062", -"ah c #000000", -".H c #313c41", -"aq c #000000", -"aF c #000000", -".x c #000000", -".M c #000000", -"#J c #080000", -"#Y c #080400", -"#u c #000000", -".g c #000408", -"#. c #000000", -"#i c #080008", -".q c #000000", -".T c #000000", -".3 c #000000", -".r c #739dd5", -"aJ c #080400", -"aH c #100400", -".# c #739dd5", -".f c #294462", -".G c #001020", -"ar c #181000", -"ai c #180c00", -"#8 c #180c00", -"aE c #183862", -".h c #7ba1d5", -"#7 c #082c62", -"ag c #103062", -"aI c #201400", -".9 c #000c18", -"ap c #103062", -"#S c #201810", -".z c #739dd5", -".a c #73a1d5", -"#X c #7b4400", -"#I c #7b4400", -"a# c #834c00", -"#h c #8b8100", -"#t c #734000", -".L c #00305a", -".S c #003052", -".p c #39658b", -".2 c #00305a", -"au c #623800", -".w c #184473", -"av c #4a89e6", -"#D c #202829", -"ax c #528de6", -"aB c #4a89e6", -"az c #5289e6", -"aA c #528de6", -"ay c #528dee", -"aC c #528dee", -".e c #6295c5", -"aw c #5a91ee", -"aD c #418df6", -".d c #73a1cd", -".c c #7ba5d5", -"#K c #a4c6ff", -"#v c #a4caff", -"#Z c #accaff", -"#j c #acceff", -"## c #6a8dc5", -".8 c #3165a4", -"an c #accaff", -".4 c #315983", -".b c #83aede", -".s c #94bae6", -".i c #94bae6", -".F c #5289b4", -"#R c #5271a4", -"#T c #834808", -"aj c #8b4c08", -"#g c #5a89a4", -".N c #73a5d5", -"#C c #104883", -"#A c #18508b", -"#B c #185594", -"#y c #204462", -"#z c #205d94", -"#l c #396da4", -"#p c #396dc5", -"#a c #4a7dac", -"#P c #5a657b", -"#q c #5a697b", -"#O c #62697b", -"#Q c #626d83", -"#f c #6289f6", -".U c #6aa1d5", -"#N c #73859c", -"#m c #73a1de", -"#k c #7b8594", -"#o c #7b95ff", -"as c #835008", -"#9 c #8b5008", -"#d c #8ba5f6", -"#n c #8ba5ff", -".I c #8bb2e6", -"#6 c #8bb6ff", -"af c #8bbaff", -"#e c #94a5ff", -".6 c #94b2f6", -"#c c #94b2ff", -".R c #94c2f6", -"at c #9c5d20", -"#x c #9ca5b4", -".7 c #9cb6ff", -".5 c #9cbaff", -".1 c #9cbeff", -".0 c #a4c2ff", -".Z c #a4c6ff", -".o c #a4cae6", -"#b c #acc6ff", -".Y c #accaff", -".X c #acceff", -".Q c #acd2ff", -".K c #acd6ff", -"am c #b47110", -".W c #b4d2ff", -".j c #b4d6f6", -".P c #b4d6ff", -"#M c #bdc6e6", -"#5 c #bdcef6", -"#4 c #bdd2f6", -".A c #bddaf6", -".J c #bddeff", -".v c #bde6ff", -"#E c #c57108", -"#U c #c58531", -"al c #c5954a", -"ad c #c5daff", -".V c #c5e2ff", -".E c #c5eaff", -"ak c #cd8d41", -"#3 c #cddaff", -"#2 c #cddeff", -"ae c #cde2ff", -".D c #cde6ff", -"ao c #d5deff", -"ac c #d5e2ff", -"ab c #d5e6ff", -"#G c #dec29c", -"aa c #dee6ff", -".O c #deeaff", -"#F c #e6a129", -"#V c #e6c694", -"#1 c #e6eeff", -".C c #e6f2ff", -".k c #e6f6ff", -"a. c #eebe7b", -"#W c #eec27b", -"#H c #eec283", -"#L c #eeeeff", -".t c #eef6ff", -".B c #eefaff", -".u c #eeffff", -"#0 c #f6f6ff", -".n c #f6faff", -"#r c #f6ff73", -".m c #f6ffff", -"#s c #ffe66a", -"#w c #fffaff", -".l c #ffffff", -"QtQt.#.a.b.c.d.e.f.gQtQtQtQtQtQt", -"Qt.h.i.j.k.l.m.n.o.p.qQtQtQtQtQt", -".r.s.k.l.l.n.n.t.u.v.w.x.yQtQtQt", -".z.A.l.l.n.B.C.C.D.E.F.G.HQtQtQt", -".I.m.l.n.n.t.C.D.J.J.K.L.MQtQtQt", -".N.B.t.t.C.O.J.P.Q.P.R.S.TQtQtQt", -".U.E.D.V.V.W.X.Y.Z.0.1.2.3QtQtQt", -".4.R.J.P.X.Y.0.5.6.7.8.9#.QtQtQt", -"###a.J.W#b.1#c#d#e#f#g#h#iQtQtQt", -"#j#k#l#m.0.7#n#o#p#q#r#s#t#uQtQt", -"#v#w#x#y#z#A#B#C#D#E#F#G#H#I#JQt", -"#K.l#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y", -"#Z#0#1#2#3#4#5#5#6#7#8#9#U#Va.a#", -"#v.naaabacacadaeafagahaiajakalam", -"an.taaao#2#2adadafapaqQtarasatau", -"avawaxayazaAaBaCaDaEaFaGQtaHaIaJ"}; - -static const char* const t_about_icon_data[] = { -"16 16 68 2", -"Qt c None", -"#a c #002441", -".8 c #00244a", -".r c #00284a", -".1 c #002852", -".W c #002c52", -".4 c #003052", -".Q c #00305a", -".V c #00345a", -".y c #003462", -"## c #003862", -"#b c #00386a", -".# c #003c6a", -".I c #003c73", -".b c #00406a", -".a c #00446a", -".s c #004473", -".P c #004873", -".z c #082c4a", -".R c #082c52", -".j c #083052", -".k c #08406a", -".d c #084073", -".c c #084473", -".U c #08487b", -".x c #084c7b", -".9 c #084c83", -".J c #102c4a", -".7 c #103c62", -".i c #10446a", -".H c #104c7b", -"#. c #10507b", -".q c #105583", -".p c #184862", -".h c #185583", -".O c #185983", -".0 c #185d8b", -".S c #185d94", -".w c #18618b", -".K c #186594", -".Y c #204c62", -".v c #20506a", -".e c #205d7b", -".A c #20618b", -".Z c #20658b", -".5 c #206594", -".g c #20698b", -".2 c #20699c", -".M c #295573", -".l c #296183", -".N c #296d94", -".G c #296d9c", -".f c #297194", -".F c #317194", -".X c #3179a4", -".E c #39799c", -".m c #397da4", -".3 c #3981a4", -".n c #3981ac", -".T c #4185ac", -".B c #4189b4", -".t c #418db4", -".u c #4a91b4", -".C c #5299bd", -".D c #5299c5", -".L c #529dc5", -".6 c #fffaff", -".o c #ffffff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQt.#.#.#.a.bQtQtQtQtQt", -"QtQtQtQt.c.d.e.f.g.h.i.j.cQtQtQt", -"QtQtQt.k.l.m.n.o.o.p.q.d.r.cQtQt", -"QtQtQt.s.m.t.u.o.o.v.w.x.y.zQtQt", -"QtQt.#.A.B.C.D.u.E.F.G.H.I.y.JQt", -"QtQt.#.K.t.L.o.o.o.M.N.O.P.Q.RQt", -"QtQt.#.S.T.C.D.o.o.v.N.O.U.V.WQt", -"QtQt.V.q.X.t.u.o.o.Y.Z.0.P.Q.1Qt", -"QtQt.y.k.2.m.3.o.o.p.O.q.#.4.rQt", -"QtQtQt.1.U.5.6.o.o.o.7.#.W.8QtQt", -"QtQtQt.c.r.#.x.9#.#.##.4#a.cQtQt", -"QtQtQtQt.c.r###b.V.W.r#a.cQtQtQt", -"QtQtQtQtQtQt.R.R.W.8.rQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const t_comment_icon_data[] = { -"16 16 110 2", -".e c None", -".f c None", -".d c None", -".# c None", -".i c #ffffff", -".q c #ffffff", -"Qt c #ffffff", -".9 c #ffffff", -".3 c #ffffff", -".r c #ac856a", -".g c #b4896a", -".W c #180c08", -"#w c #181410", -".2 c #201010", -".8 c #201410", -"#d c #292020", -"#k c #312c29", -"#C c #39507b", -"#p c #4a4039", -"#e c #4a658b", -"#u c #526da4", -"#R c #5271ac", -".p c #5275ac", -"#c c #5a4c41", -"#l c #5a555a", -".c c #5a75ac", -"#x c #626162", -"#q c #6a696a", -".F c #6a85b4", -"#b c #7b5d4a", -"#j c #7b5d52", -".V c #835029", -".1 c #835031", -".Q c #835531", -"#B c #8391a4", -"#D c #8b8583", -"#J c #8b91a4", -"#H c #8b95a4", -"#I c #8b95ac", -"#n c #948583", -"#G c #9499ac", -"#o c #9c7d73", -"#A c #9ca1bd", -"#F c #9ca5b4", -".b c #9cb2de", -".G c #a48573", -"#z c #a4b2c5", -".a c #a4b6e6", -".A c #ac8573", -"#E c #acaeb4", -".z c #acbee6", -".7 c #b4795a", -"#i c #b48d7b", -".M c #b4917b", -"#a c #b49183", -".U c #bd7d41", -".P c #bd7d4a", -".H c #bd814a", -".C c #bd8541", -".6 c #bd856a", -"#v c #bdbabd", -"#y c #bdbecd", -"#m c #bdc6de", -"#N c #bdcae6", -"#t c #bdceee", -".O c #c58541", -".T c #c5854a", -".N c #c58952", -".t c #c58d52", -".S c #c5a59c", -"#r c #c5c6de", -"#s c #c5cee6", -"#M c #c5ceee", -".n c #c5d2ee", -"#Q c #cdd2ee", -".y c #cdd6ee", -"#L c #cdd6f6", -".E c #cddaee", -".o c #cddaf6", -"#g c #d5d2d5", -".L c #d5daee", -"#P c #d5daf6", -"#K c #d5deee", -".x c #d5def6", -".0 c #deaa94", -"#O c #dedef6", -".K c #dee2f6", -".m c #dee6f6", -".B c #e6ceac", -".s c #e6ceb4", -".h c #e6d2b4", -".4 c #e6e2ee", -".w c #e6e6f6", -".l c #e6eaf6", -".D c #e6eaff", -".5 c #eecabd", -"#. c #eedede", -".Y c #eee6e6", -"#f c #eeeaff", -".R c #eeeef6", -".v c #eeeeff", -".J c #eef2ff", -"#h c #f6dacd", -"## c #f6ded5", -".Z c #f6eee6", -".X c #f6f2ff", -".k c #f6f6ff", -".I c #fff6ff", -".u c #fffaff", -".j c #ffffff", -"Qt.#.a.b.a.b.a.b.a.b.c.d.e.f.g.h", -".i.#.b.j.k.k.l.m.n.o.b.p.q.r.s.t", -".#.#.a.j.u.k.v.w.x.y.a.z.A.B.t.C", -".#.#.b.j.k.k.l.D.E.o.F.G.s.t.C.H", -".#.#.a.j.I.k.J.l.K.L.M.h.N.O.P.Q", -".#.#.b.u.k.k.R.v.K.S.s.T.C.U.V.W", -".#.#.a.u.k.k.X.v.Y.Z.0.T.U.1.2.3", -".#.#.b.u.J.v.l.4.Z.5.6.7.Q.8.9.#", -".#.#.a.X.X.v.D#.###a#b#c#d#e.#.#", -".#.#.b.k.J#f#g#h#i#j#k#l#m.c.#.#", -".#.#.a.k.J.K#n#o#p#q#r#s#t#u.#.#", -".#.#.b.k.l#v#w#x#y#m#z#A#B#C.#.#", -".#.#.a.J.w#D#E#F#G#H#I#B#J#C.#.#", -".#.#.b.J.K.K#K.x.y#L.n#M#N.c.#.#", -".#.#.a.v.m.K#O#P#P.y#Q#M#t.p.#.#", -".#.##R.c#R.p#R.c#R.p#R.c#R.p.#.#"}; - - -static const char* const t_remove_export_icon_data[] = { - "16 16 80 2", - "Qt c None", - ".u c #000000", - "#l c #103462", - ".B c #182c41", - "#k c #207dde", - "#g c #2085e6", - "#m c #2089f6", - "#h c #208df6", - "#j c #2091ff", - ".J c #295983", - "#f c #2989ee", - "#d c #298dee", - "## c #2991f6", - "#n c #2991ff", - "#i c #2995ff", - ".9 c #318dee", - "#. c #3191f6", - ".6 c #3195f6", - ".4 c #398dee", - ".2 c #3995f6", - ".3 c #3999f6", - ".Y c #4199f6", - ".Z c #41a1ff", - ".P c #4a8dd5", - ".W c #4aa5ff", - ".A c #5a91d5", - ".N c #5aaeff", - ".y c #6295d5", - ".G c #62b2ff", - ".p c #6a99d5", - ".x c #6a9dde", - ".t c #6aa1de", - ".Q c #6ab2ff", - ".O c #6ab6ff", - ".R c #73b6ff", - ".X c #73baff", - ".l c #7bb6f6", - "#e c #7bbaf6", - "#a c #7bbaff", - ".H c #83beff", - ".f c #83c2ff", - ".8 c #8bc2f6", - ".K c #8bc6ff", - ".r c #94baee", - ".e c #9ccaff", - ".d c #9cceff", - ".1 c #a4cef6", - ".o c #a4ceff", - ".q c #acd2ff", - ".c c #acd6ff", - ".w c #b4d6ff", - ".k c #b4daff", - ".V c #bddaf6", - ".h c #bddaff", - ".b c #bddeff", - ".F c #c5deff", - ".j c #c5e2ff", - "#b c #cddee6", - ".i c #cde6ff", - ".7 c #d5dee6", - "#c c #d5deee", - ".S c #d5e2ee", - ".v c #d5e6ff", - ".g c #d5eaff", - ".5 c #dedade", - ".0 c #dee2ee", - ".U c #dee6ee", - ".L c #deeaf6", - ".s c #deeeff", - ".T c #e6eaf6", - ".m c #e6eeff", - ".n c #e6f2ff", - ".M c #eeeef6", - ".D c #eef2f6", - ".C c #eef2ff", - ".I c #f6f2ff", - ".E c #f6f6ff", - ".a c #f6faff", - ".z c #fffaff", - ".# c #ffffff", - "QtQtQt.#.#.#.#.#.#.#.#.#.#.#.#Qt", - "QtQt.#.#.a.b.c.d.d.#.a.b.c.e.fQt", - "Qt.#.#.g.h.i.j.h.b.h.k.i.j.k.k.l", - ".#.#.m.h.n.#.#.#.c.c.n.#.#.#.o.p", - ".#.a.j.n.#.#.#.q.r.s.#.#.#.q.t.u", - ".#.j.v.#.#.#.w.x.j.#.#.#.w.y.u.u", - ".b.j.z.z.z.b.A.c.z.a.z.b.A.B.u.u", - ".q.C.D.E.F.G.H.I.D.E.F.G.J.u.uQt", - ".K.L.D.M.v.N.O.L.D.M.v.N.P.uQtQt", - ".Q.R.S.T.U.V.W.X.S.T.U.V.W.YQtQt", - ".#.Z.Q.S.U.0.1.2.Q.S.U.0.1.3.4Qt", - ".#.5.6.R.7.S.7.8.9.R.7.S.7.8#..u", - ".#.#.u###a#b#c#b.R#d#e#b#c#b.R#f", - "Qt.#.##g#h#i#j#i#k#l#m#i#n#i#k.u", - "QtQtQtQt.u.u.u.u.u.u.u.u.u.u.u.u", - "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt" - }; - -static const char* const t_add_export_icon_data[] = { - - "16 16 78 2", - ".# c None", - ".y c #000000", - "#k c #082441", - "#j c #207dde", - "#g c #2091ff", - "#d c #297dd5", - "#e c #297dde", - "#l c #298df6", - "#i c #2991ff", - "#h c #2995ff", - ".9 c #317dd5", - ".7 c #3181d5", - "#f c #3195ff", - ".U c #3981cd", - ".1 c #3981d5", - ".Z c #398de6", - ".D c #5aa5ee", - ".t c #6295cd", - ".E c #62aaf6", - ".N c #62b2ff", - ".w c #6aaaee", - ".x c #6aaef6", - ".6 c #6ab2f6", - ".Y c #6ab2ff", - ".S c #6ab6ff", - ".p c #73b2ee", - ".s c #73b2f6", - ".v c #73b6f6", - ".A c #73b6ff", - "#. c #73baff", - "#c c #7bbaf6", - ".o c #7bbeff", - ".r c #83b6f6", - "## c #83bef6", - ".l c #83beff", - ".m c #83c2ff", - ".8 c #8bbef6", - ".k c #8bc2ff", - ".i c #8bc6ff", - ".2 c #94c6ff", - ".q c #9ccaff", - ".d c #9cceff", - ".3 c #a4cef6", - ".J c #a4ceff", - ".f c #a4d2ff", - ".z c #accef6", - ".j c #acd2ff", - ".0 c #b4d2f6", - ".c c #b4daff", - ".V c #bddaf6", - ".n c #bddaff", - ".b c #bddeff", - ".T c #c5def6", - ".F c #c5deff", - ".a c #c5e2ff", - "#b c #cddee6", - ".P c #cddef6", - ".g c #cde6ff", - ".5 c #d5dee6", - "#a c #d5deee", - ".4 c #d5e2ee", - ".O c #d5e6f6", - ".G c #d5e6ff", - ".h c #d5eaff", - ".W c #dee2ee", - ".X c #dee2f6", - ".R c #dee6ee", - ".K c #dee6f6", - ".M c #deeaff", - ".e c #deeeff", - ".u c #e6e2e6", - ".Q c #e6eaf6", - ".L c #eeeef6", - ".H c #eef2f6", - ".I c #f6f6ff", - ".B c #f6faff", - ".C c #fffaff", - "Qt c #ffffff", - "QtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#", - "Qt.a.b.c.d.eQt.b.b.c.d.f.#.#.#.#", - ".b.g.h.g.a.i.j.a.h.g.a.k.l.#.#.#", - ".c.bQtQtQt.e.m.nQtQtQt.e.o.p.#.#", - "Qt.q.bQtQtQt.g.r.bQtQtQt.g.s.t.#", - "Qt.u.v.nQtQtQt.c.w.bQtQtQt.c.x.y", - "QtQt.z.A.a.B.C.C.d.D.a.C.C.B.d.E", - ".#QtQt.F.m.G.H.I.H.m.o.G.H.I.H.m", - ".#QtQt.a.J.K.H.L.M.N.i.O.H.L.M.N", - "QtQt.g.d.P.Q.R.K.N.S.T.Q.R.K.N.U", - "Qt.e.f.V.R.W.X.Y.Z.0.R.W.W.N.1.y", - "Qt.2.3.4.5.4.6.7.8.4.5.4.6.9.y.y", - "#.###a#b#a#c#d.v#a#b#a#c#e.y.y.y", - "Qt#f#g#h#i#j#k#l#i#h#g#j#k.y.y.#", - ".#.y.y.y.y.y.y.y.y.y.y.y.y.y.#.#", - ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#" - }; - - - -static const char* const t_showc_icon_data[] = { -"16 16 120 2", -"Qt c None", -"#K c None", -"#R c #4a4483", -".e c #7371ac", -".V c #525094", -".n c #9c95c5", -"#J c #41448b", -"#C c #7b75ac", -"#S c #6a65a4", -".3 c #9495c5", -".f c #8b89bd", -"#Q c #4a488b", -".m c #736dac", -".o c #9c95c5", -".# c #8b85bd", -"#v c #7375ac", -".I c #a4a1cd", -"#X c #52508b", -".2 c #524c94", -".y c #9c99c5", -"#B c #414083", -".P c #5a5d9c", -".x c #6a69a4", -".W c #9c9dcd", -"#1 c #5a5594", -"#L c #6a69a4", -"#b c #8b8dbd", -".a c #8381b4", -".p c #9495c5", -".Q c #9c9dc5", -"#I c #4a488b", -"#a c #4a488b", -".g c #8b89bd", -"#Y c #5a5d9c", -"#P c #52508b", -"#n c #8b85bd", -".d c #7b79b4", -".z c #9c99c5", -"#W c #525594", -".J c #a49dcd", -"#u c #4a488b", -".U c #525594", -"#D c #7b79ac", -"#A c #4a488b", -".H c #6a6da4", -"#0 c #62619c", -".4 c #9c95c5", -"#T c #6a69a4", -".b c #8b89bd", -"#H c #5a5994", -".h c #8b8dbd", -".l c #8381b4", -"#h c #525594", -"#i c #8b8dbd", -".q c #9c99c5", -".1 c #6a65a4", -".A c #a4a5cd", -".K c #acaad5", -"#O c #62619c", -"#w c #9c95c5", -".X c #b4b2d5", -".O c #7371ac", -"#M c #8b8dbd", -"#V c #7b75ac", -"#t c #625d9c", -"#z c #6a6da4", -".i c #b4b2d5", -"#c c #b4b2d5", -"#Z c #6a6da4", -".c c #8381b4", -".r c #acaed5", -"## c #8381b4", -".L c #cdcae6", -".R c #b4b2d5", -"#N c #8b8dbd", -"#m c #5a5594", -".w c #9c95c5", -".T c #a49dcd", -"#G c #8385b4", -"#s c #9491bd", -".B c #c5c2de", -"#E c #cdc6e6", -".5 c #dedeee", -"#U c #aca5cd", -"#o c #bdbad5", -"#y c #a4a1cd", -".j c #cdcae6", -".S c #e6e6f6", -"#f c #9491bd", -"#e c #9c95c5", -"#l c #9c9dc5", -"#g c #a4a1cd", -".k c #b4b6d5", -".G c #bdbad5", -".Y c #bdbade", -".0 c #bdbede", -".8 c #c5c2de", -"#r c #cdc6e6", -"#. c #cdcae6", -"#d c #cdcee6", -".v c #d5cee6", -"#j c #d5d2e6", -"#p c #d5d2ee", -".F c #d5d6ee", -"#k c #ded6ee", -".7 c #dedaee", -"#q c #dedaf6", -"#x c #dedeee", -".M c #e6deee", -".N c #e6def6", -".9 c #e6e2ee", -".Z c #e6e2f6", -".C c #e6e6f6", -".s c #eee6f6", -".E c #eeeaf6", -".6 c #eeeef6", -"#F c #f6f2ff", -".t c #fff6ff", -".u c #fffaff", -".D c #ffffff", -"QtQtQtQtQtQtQtQt.#.a.b.c.d.eQtQt", -"QtQtQtQtQtQt.f.g.h.i.j.k.l.mQtQt", -"QtQtQt.n.o.p.q.r.s.t.u.v.w.xQtQt", -"QtQt.y.z.A.B.C.D.D.D.E.F.G.HQtQt", -".I.J.K.L.s.D.D.D.D.u.F.M.N.O.PQt", -".Q.R.S.t.D.D.D.D.u.t.k.s.M.T.U.V", -".W.X.s.C.N.C.u.D.u.E.Y.Z.N.0.1.2", -".3.4.5.D.6.7.G.8.9.7.k.N.F#.###a", -"Qt#b#c.D.D.D.u#d#e#f.0#..v#.#g#h", -"Qt.f#i.C.D.D.u.Z#..8#j#k#..8#l#m", -"QtQt#n#o.D.D.t#p.s.9#q#j#r#s#t#u", -"QtQt#v#w.9.u.s.7.9#x#d#y#z#A#BQt", -"QtQt#C#D#E#F.Z#x.N.0#G#H#I#JQtQt", -"QtQt#K#L#M.C.7.v#N#O#P#Q#RQtQtQt", -"QtQtQt#S#T#o#U#V#W#XQtQtQtQtQtQt", -"QtQtQtQt#Y#Z#0#1QtQtQtQtQtQtQtQt"}; - -static const char* const t_deletec_icon_data[] = { -"16 16 45 1", -"e c None", -"t c None", -"m c None", -"f c None", -"d c None", -". c None", -"w c #73819c", -"B c #7b819c", -"c c #7b859c", -"F c #acb6cd", -"A c #b4b6cd", -"a c #b4becd", -"b c #b4bed5", -"# c #bdbed5", -"s c #bdc2d5", -"z c #bdc6d5", -"E c #c5cad5", -"H c #c5cade", -"J c #c5cede", -"K c #cdcede", -"O c #cdd2de", -"I c #cdd2e6", -"N c #cdd6de", -"Q c #cdd6e6", -"k c #d5d6e6", -"M c #d5dae6", -"r c #d5dee6", -"v c #dedee6", -"l c #dedeee", -"q c #dee2ee", -"D c #e6e2ee", -"P c #e6e6ee", -"y c #e6e6f6", -"j c #e6eaf6", -"i c #eeeaee", -"p c #eeeaf6", -"u c #eeeef6", -"C c #eef2f6", -"o c #f6eeff", -"L c #f6f2f6", -"x c #f6f2ff", -"h c #f6f6ff", -"G c #ff0000", -"n c #fffaff", -"g c #ffffff", -"..#a#b#a#bcdef..", -"..aghhijklac.m..", -"..#gnhopqr#sct..", -"..aghhuuvlwcwc..", -"..#gnhxuyvkzAB..", -"..aghhCCDqEaFc..", -"..#GGhhuyGG##w..", -"..anGGppGGHHzc..", -"..#hxGGGGkIJKB..", -"..ahLuGGMMNIKc..", -"..#hxGGGlMkIIw..", -"..ahpGGGGvkkOc..", -"..#LGGPqGGMQkB..", -"..aGGyqqvGGkOc..", -"..#uyPPqlMMkIw..", -"..wcwcwcwcwcwc.."}; - - -static const char* const m_import_icon_data[] = { -"18 18 134 2", -".n c None", -"#T c #000000", -".m c #9c959c", -"Qt c #a49da4", -"#K c #000000", -".E c #000000", -"#s c #000000", -"#B c #000000", -"#j c #202020", -".# c #838183", -".l c #736d73", -".3 c #000000", -"#i c #000000", -"ad c #000000", -"#L c #000000", -"#S c #000000", -"#. c #000000", -"#A c #000000", -"#1 c #000000", -".T c #000000", -"#r c #000000", -".o c #838583", -"ac c #000000", -"#t c #202020", -".a c #7b757b", -"#8 c #414041", -".k c #7b757b", -".D c #5a5d5a", -"#k c #393439", -"## c #6a696a", -"#R c #000000", -"#J c #000000", -"#z c #000000", -".2 c #000000", -"#q c #000000", -"#h c #000000", -"aa c #000000", -"ab c #000000", -"#5 c #000000", -"#0 c #000000", -".9 c #000000", -".b c #838183", -".j c #aca5ac", -"#Q c #000000", -"#I c #000000", -"#W c #000000", -"#y c #080808", -"#p c #181418", -"a# c #080808", -".p c #7b757b", -"#g c #292829", -".C c #6a696a", -"#C c #5a555a", -"#l c #524c52", -"#u c #5a595a", -"#M c #525552", -".F c #7b757b", -".c c #837d83", -".i c #b4b2b4", -"#a c #5a5d5a", -".4 c #736d73", -"#o c #313031", -".S c #625d62", -"#H c #292c29", -"#x c #313031", -"#P c #202420", -"#f c #414441", -"#6 c #5a5d5a", -"#2 c #626162", -"#7 c #6a656a", -"#X c #5a5d5a", -".8 c #525052", -"#U c #5a595a", -"#4 c #202420", -"#Z c #292429", -"#V c #292829", -".q c #737173", -".d c #6a696a", -".h c #9c959c", -"#9 c #525052", -".B c #838183", -"a. c #4a4c4a", -"#N c #acaeac", -"#O c #626162", -"#D c #b4b6b4", -"#G c #5a555a", -"#n c #5a555a", -".1 c #5a595a", -"#w c #625d62", -".U c #626562", -".e c #6a696a", -"#b c #6a6d6a", -"#m c #736d73", -".r c #7b757b", -".f c #7b797b", -".G c #7b7d7b", -".R c #837d83", -".g c #838183", -".5 c #8b858b", -"#e c #8b898b", -"#c c #8b8d8b", -"#3 c #948d94", -".s c #949194", -".W c #949594", -".I c #9c999c", -".A c #9c9d9c", -".J c #a49da4", -".H c #a4a1a4", -".V c #a4a5a4", -".t c #aca5ac", -".K c #acaaac", -".u c #acaeac", -"#F c #b4aeb4", -".L c #b4b2b4", -".v c #b4b6b4", -".7 c #bdb6bd", -".X c #bdbabd", -"#d c #bdbebd", -".Q c #c5c2c5", -".w c #cdcecd", -".M c #d5ced5", -".Y c #d5d2d5", -".0 c #d5d6d5", -".6 c #ded6de", -".z c #dedade", -".N c #e6e2e6", -".x c #e6e6e6", -".Z c #eeeaee", -".y c #eeeeee", -"#Y c #f6eef6", -"#v c #f6f6f6", -".P c #fff6ff", -".O c #fffaff", -"#E c #ffffff", -"Qt.#.a.b.c.d.e.e.f.g.h.i.j.k.l.m.n.n", -".o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.n", -".F.G.H.I.J.t.K.L.M.N.O.P.N.Q.R.S.T.E", -".U.K.V.I.W.V.K.X.Y.Z.O.y.0.Q.K.1.2.3", -".4.5.K.K.J.I.t.v.M.x.O.x.6.7.g.8.9#.", -"###a#b.g#c.s.A.u#d.6.z.7#e#b#f#g#h#i", -"#j#k#l.f#e#m.e.e.r.g.s.R#n#o#p#q#r#s", -".n#s#t#u.K#v.Z.Q.A.J.g#w#x#y#z#A#B.n", -".n.n.E#.#C#D#E.x#F#c#G#H#I#J#..E.n.n", -".n.n.n#K#L#M#N.Z.I#O#P#Q#R#S#K.n.n.n", -".n.n.n.n#T#S#U.z.5#V#W#z#S#T.n.n.n.n", -".n.n.n.n.n#T#X#Y.G#Z#0#1#K.n.n.n.n.n", -".n.n.n.n.n.n#2.O#3#4#5#L.n.n.n.n.n.n", -".n.n.n.n.n.n#6#v.s#Z#5#L.n.n.n.n.n.n", -".n.n.n.n.n.n#7.N.L#4#5#L.n.n.n.n.n.n", -".n.n.n.n.n.n#8#9a.a#aa#i.n.n.n.n.n.n", -".n.n.n.n.n.n.E#rababac#s.n.n.n.n.n.n", -".n.n.n.n.n.n.n#sadad#s.n.n.n.n.n.n.n"}; - -static const char* const m_export_icon_data[] = { -"18 18 111 2", -"Qt c None", -"#J c #000000", -".b c #000000", -".a c #000000", -"#K c #000000", -".I c #000000", -".g c #000000", -"#z c #000000", -"#S c #000000", -".u c #000000", -"#A c #000000", -".H c #000000", -".X c #000000", -".W c #000408", -".J c #080408", -"## c #080808", -"#n c #080c08", -"#k c #100c10", -"#m c #101010", -".3 c #181818", -".2 c #201c20", -".w c #292829", -".p c #313031", -"#s c #393439", -"#e c #393839", -".4 c #413c41", -".P c #414041", -".C c #414441", -".t c #4a444a", -"#u c #524841", -"#t c #524c4a", -".v c #525552", -".# c #5a595a", -".U c #6a696a", -".s c #6a6d6a", -".k c #736d73", -".n c #737173", -".T c #737573", -"#v c #7b6d62", -".B c #7b7573", -".K c #838583", -".l c #8b858b", -".G c #8b8983", -".r c #8b898b", -"#l c #949194", -"#f c #9c9594", -".f c #9c999c", -".6 c #a4a5a4", -"#o c #ac9d8b", -"#g c #ac9d94", -"#a c #aca19c", -".7 c #aca59c", -".O c #aca5ac", -".Y c #b4aaac", -".L c #b4aeb4", -"#I c #bda17b", -"#r c #bda583", -"#d c #bdaa94", -".1 c #bdae9c", -"#F c #bdb29c", -".e c #bdb6b4", -".x c #bdb6bd", -"#R c #c5a17b", -"#y c #c5a583", -"#Q c #c5aa83", -"#P c #c5aa8b", -"#j c #c5aa94", -"#. c #c5b29c", -"#E c #c5b2a4", -"#O c #c5b69c", -"#D c #c5b6a4", -".F c #c5bab4", -"#M c #c5beac", -"#C c #c5beb4", -".V c #c5bec5", -".q c #c5c2c5", -"#N c #cdbaac", -"#B c #cdc2bd", -"#L c #cdc6bd", -".Q c #cdc6c5", -".o c #cdcecd", -"#G c #d5bea4", -"#p c #d5cab4", -"#w c #decab4", -"#b c #ded2c5", -".5 c #ded6de", -".Z c #dedad5", -".A c #dedade", -".d c #dedede", -"#h c #e6d2bd", -".8 c #e6dad5", -".h c #e6dee6", -".E c #e6e2de", -".c c #e6e2e6", -"#H c #eeceac", -"#x c #eed2b4", -"#q c #eedabd", -"#i c #eedec5", -".9 c #eee2d5", -".S c #eee2de", -".R c #eee6e6", -".N c #eeeaee", -"#c c #f6e2cd", -".0 c #f6eae6", -".j c #f6eef6", -".m c #f6f6f6", -".z c #fff6f6", -".D c #fff6ff", -".M c #fffaf6", -".y c #fffaff", -".i c #ffffff", -"QtQtQtQt.#.#.#.#.#.#.#.#.#.a.bQtQtQt", -"QtQtQtQt.#.c.d.c.d.c.e.#.f.#.g.bQtQt", -"QtQtQtQt.#.h.i.i.i.i.j.k.i.f.#.g.bQt", -"QtQtQtQt.#.c.i.l.m.i.i.n.o.i.f.p.g.b", -"QtQtQtQt.#.q.l.i.l.j.i.r.n.s.t.p.u.a", -"Qt.l.v.w.r.x.y.z.A.B.C.D.E.F.G.p.H.I", -"Qt.v.J.K.L.M.y.N.O.P.J.Q.R.S.F.p.H.I", -"Qt.w.T.A.U.V.m.A.n.W.X.Y.Z.0.1.p.H.I", -"Qt.2.3.4.O.k.5.6.t.X.J.7.8.9#..p.H.I", -"Qt.2.X.W##.O.n.T.X.W.X#a#b#c#d.p.H.I", -"Qt##.J.X.J#e#f.P.J.X.J#g#h#i#j.p.H.I", -"Qt#k.X.W###l#m.W.X.W#n#o#p#q#r.p.H.I", -"Qt.K.J.X#s.#.##t#t#u#v#o#w#x#y.p.H.I", -"Qt.a#z#A.##B#C#C#D#E#F#G#x#H#I.p.H.I", -"Qt#J.a#K.##B#L#M#N#O#.#P#Q#I#R.p.H.I", -"QtQtQtQt.#.p.p.p.p.p.p.p.p.p.p.p.H.I", -"QtQtQtQt.a#z#A.H.H.H.H.H.H.H.H.H#S.a", -"QtQtQtQt#J.a#K.I.I.I.I.I.I.I.I.I.a.b"}; - -static const char* const m_borrow_icon_data[] = { -"32 32 53 1", -". c None", -"# c None", -"a c #000000", -"V c #838583", -"U c #8b898b", -"S c #8b8d8b", -"T c #948d94", -"R c #949194", -"L c #949594", -"Q c #9c959c", -"H c #9c999c", -"Y c #9c9d9c", -"X c #a49da4", -"C c #a4a1a4", -"A c #a4a5a4", -"G c #aca5a4", -"q c #aca5ac", -"f c #acaaac", -"l c #acaeac", -"E c #b4aeac", -"p c #b4aeb4", -"c c #b4b2b4", -"B c #b4b6b4", -"t c #bdb6bd", -"o c #bdbabd", -"k c #bdbebd", -"n c #c5bec5", -"j c #c5c2c5", -"i c #c5c6c5", -"s c #cdc6cd", -"M c #cdcacd", -"O c #cdcecd", -"N c #d5ced5", -"P c #d5d2d5", -"J c #d5d6d5", -"I c #ded6de", -"F c #dedade", -"K c #dedede", -"W c #e6dee6", -"D c #e6e2e6", -"u c #e6e6e6", -"x c #eee6e6", -"y c #eee6ee", -"g c #eeeaee", -"v c #eeeeee", -"e c #f6eeee", -"d c #f6eef6", -"r c #f6f2ee", -"w c #f6f2f6", -"b c #f6f6f6", -"z c #fff6ff", -"m c #fffaff", -"h c #ffffff", -"................................", -"................................", -"#a############################a#", -"aba##########################aca", -"ada##########################aca", -"adea##aaa##############aaa##acfa", -"agda#ahhha############aijka#alfa", -"#agdaabhhha##########ajjkkaalfa#", -"#aggaammhha##########ajknoaapqa#", -"##aggarmmhha########asknttapqa##", -"##augaabmmha###aa###ajjooaafqa##", -"###augvwbmma##aaja##ajooccfqa###", -"###axygvwza#aahasiaa#aocclfAa###", -"####ayuggwbahhhajsjjaoBclfCa####", -"####aDyyevzzhhhasijnkBtEfACa####", -"#####aDxuvvwbmhaajkkBBpfACa#####", -"#####aDDyyddzaa##aaotcpfqCa#####", -"####aFFDDyxva######acpAGCCHa####", -"##aaIJFKDuga########affCCHHLaa##", -"#aMNOPJFKDDa########aqCCHHQRSSa#", -"aiMMNPaaaKDa########aACaaaQSTUUa", -"asiMMa###aKDa######aACa###aSUUVa", -"#aasa####aWWa######aCXa####aUaa#", -"###a######aWKa####aqCa######a###", -"##########aFWa####aCXa##########", -"###########aFWa##aCCa###########", -"############aFWaaACa############", -"############aFFaCCYa############", -"#############aFaCXa#############", -"##############aaYa##############", -"###############aa###############", -"................................"}; - -static const char* const t_sborrow_icon_data[] = { -"32 32 56 1", -". c None", -"# c None", -"a c #000000", -"X c #8b898b", -"U c #8b8d8b", -"T c #949194", -"L c #949594", -"H c #9c999c", -"1 c #9c9d9c", -"0 c #a49da4", -"C c #a4a1a4", -"A c #a4a5a4", -"G c #aca5a4", -"q c #aca5ac", -"f c #acaaac", -"l c #acaeac", -"E c #b4aeac", -"p c #b4aeb4", -"c c #b4b2b4", -"B c #b4b6b4", -"t c #bdb6bd", -"o c #bdbabd", -"k c #bdbebd", -"n c #c5bec5", -"j c #c5c2c5", -"i c #c5c6c5", -"s c #cdc6cd", -"M c #cdcacd", -"O c #cdcecd", -"N c #d5ced5", -"P c #d5d2d5", -"J c #d5d6d5", -"I c #ded6de", -"F c #dedade", -"K c #dedede", -"Z c #e6dee6", -"D c #e6e2e6", -"u c #e6e6e6", -"R c #ee4841", -"x c #eee6e6", -"y c #eee6ee", -"g c #eeeaee", -"v c #eeeeee", -"S c #f64841", -"Q c #f6484a", -"Y c #f6ea41", -"W c #f6ee41", -"e c #f6eeee", -"d c #f6eef6", -"r c #f6f2ee", -"w c #f6f2f6", -"b c #f6f6f6", -"V c #ffee4a", -"z c #fff6ff", -"m c #fffaff", -"h c #ffffff", -"................................", -"................................", -"#a############################a#", -"aba##########################aca", -"ada##########################aca", -"adea##aaa##############aaa##acfa", -"agda#ahhha############aijka#alfa", -"#agdaabhhha##########ajjkkaalfa#", -"#aggaammhha##########ajknoaapqa#", -"##aggarmmhha########asknttapqa##", -"##augaabmmha###aa###ajjooaafqa##", -"###augvwbmma##aaja##ajooccfqa###", -"###axygvwza#aahasiaa#aocclfAa###", -"####ayuggwbahhhajsjjaoBclfCa####", -"####aDyyevzzhhhasijnkBtEfACa####", -"#####aDxuvvwbmhaajkkBBpfACa#####", -"#####aDDyyddzaa##aaotcpfqCa#####", -"####aFFDDyxva######acpAGCCHa####", -"##aaIJFKDuga########affCCHHLaa##", -"#aMNOPJFKDDa########aqCQRQSTUUa#", -"aiMMNPaaaKDa########aACSVWQSQXXa", -"asiMMa###aKDa##QSQRQSQRQYVYVSQRa", -"#aasa####aZZa##QVWVWVWVWVWVWVWQQ", -"###a######aZKa#QYVYVYVYVYVYVYVYQ", -"##########aFZa#SVWVWVWVWVWVWVWVS", -"###########aFZaQYVYVYVYVYVYVYVYQ", -"############aFZQVWVWVWVWVWVWVWQQ", -"############aFFQRQSQRQSQYVYVRQS#", -"#############aFaC0a####SVWQSQ###", -"##############aa1a#####QSQR#####", -"###############aa###############", -"................................"}; - -static const char* const t_cborrow_icon_data[] = { -"32 32 50 1", -". c None", -"# c None", -"a c #000000", -"U c #838583", -"T c #8b898b", -"R c #8b8d8b", -"S c #948d94", -"C c #a4a1a4", -"A c #a4a5a4", -"J c #aca5a4", -"q c #aca5ac", -"f c #acaaac", -"l c #acaeac", -"E c #b4aeac", -"p c #b4aeb4", -"c c #b4b2b4", -"B c #b4b6b4", -"t c #bdb6bd", -"o c #bdbabd", -"k c #bdbebd", -"n c #c5bec5", -"j c #c5c2c5", -"i c #c5c6c5", -"s c #cdc6cd", -"N c #cdcacd", -"P c #cdcecd", -"O c #d5ced5", -"Q c #d5d2d5", -"L c #d5d6d5", -"K c #ded6de", -"I c #dedade", -"M c #dedede", -"V c #e6dee6", -"D c #e6e2e6", -"u c #e6e6e6", -"G c #ee4841", -"x c #eee6e6", -"y c #eee6ee", -"g c #eeeaee", -"v c #eeeeee", -"H c #f64841", -"F c #f6484a", -"e c #f6eeee", -"d c #f6eef6", -"r c #f6f2ee", -"w c #f6f2f6", -"b c #f6f6f6", -"z c #fff6ff", -"m c #fffaff", -"h c #ffffff", -"................................", -"................................", -"#a############################a#", -"aba##########################aca", -"ada##########################aca", -"adea##aaa##############aaa##acfa", -"agda#ahhha############aijka#alfa", -"#agdaabhhha##########ajjkkaalfa#", -"#aggaammhha##########ajknoaapqa#", -"##aggarmmhha########asknttapqa##", -"##augaabmmha###aa###ajjooaafqa##", -"###augvwbmma##aaja##ajooccfqa###", -"###axygvwza#aahasiaa#aocclfAa###", -"####ayuggwbahhhajsjjaoBclfCa####", -"####aDyyevzzhhhasijnkBtEfACa####", -"#####aDxuvvwbmhFGFkkBBpfACa#GFH#", -"#####aDDyyddzaaHFFFotcpfqCaHFFF#", -"####aIIDDyxva##FHFGFcpAJCCGFHFG#", -"##aaKLIMDuga####FHFFFffCCHFFFH##", -"#aNOPQLIMDDa#####FHFGFCCGFHFGRa#", -"aiNNOQaaaMDa######FHFFFHFFFHSTTa", -"asiNNa###aMDa######FHFGFHFGRTTUa", -"#aasa####aVVa######aFHFFFH#aTaa#", -"###a######aVMa####aqGFHFGF##a###", -"##########aIVa####aHFFFHFFF#####", -"###########aIVa##aGFHFGFHFGF####", -"############aIVaaHFFFH##FHFFF###", -"############aIIaGFHFG####FHFGF##", -"#############aIHFFFH######FHFFF#", -"##############aFHFG########FHFG#", -"###############FFH##########FHF#", -"................................"}; - - -static const char* const t_colorconfig_icon_data[] = { -"16 16 9 1", -". c None", -"# c #000000", -"a c #0000ff", -"d c #00c200", -"c c #00c2c5", -"b c #c500c5", -"f c #ff0000", -"e c #ffaa5a", -"g c #ffdeac", -"......###.......", -"......#aa##.....", -"......###aa###..", -"....###bb##aaa##", -"....#cc##bb##aa#", -"....###cc###bba#", -"..###dd##ccc##a#", -"..#ee##dd##cc#a#", -"..###ee###ddc#a#", -"..#ff##eee#dc#a#", -".##ffff##e#dc###", -"#gg###ff#e#dc#..", -"#gggg#ff#e#dc#..", -"#ggg#fff#e###...", -"#gg#.##f#e#.....", -".##....###......"}; - - - - - -QPixmap * m_catalog_icon=NULL; -QPixmap * m_unknown_icon=NULL; -QPixmap * m_cd_icon=NULL; -QPixmap * m_dvd_icon=NULL; -QPixmap * m_hdd_icon=NULL; -QPixmap * m_net_icon=NULL; -QPixmap * m_flash_icon=NULL; -QPixmap * m_other_icon=NULL; -QPixmap * m_floppy_icon=NULL; -QPixmap * v_folderlocked_icon=NULL; -QPixmap * v_folderclosed_icon=NULL; -QPixmap * v_folderopen_icon=NULL; -QPixmap * v_file_icon=NULL; -QPixmap * v_back_icon=NULL; -QPixmap * a_0=NULL; -QPixmap * a_1=NULL; -QPixmap * a_2=NULL; -QPixmap * a_3=NULL; -QPixmap * a_4=NULL; -QPixmap * p_icon=NULL; -QPixmap * t_open_icon=NULL; -QPixmap * t_save_icon=NULL; -QPixmap * t_saveas_icon=NULL; -QPixmap * t_close_icon=NULL; -QPixmap * t_add_icon=NULL; -QPixmap * t_rescan_icon=NULL; -QPixmap * t_delete_icon=NULL; -QPixmap * t_config_icon=NULL; -QPixmap * t_help_icon=NULL; -QPixmap * t_new_icon=NULL; -QPixmap * t_find_icon=NULL; -QPixmap * t_about_icon=NULL; -QPixmap * t_add_export_icon=NULL; -QPixmap * t_remove_export_icon=NULL; -QPixmap * t_comment_icon=NULL; -QPixmap * t_deletec_icon=NULL; -QPixmap * t_showc_icon=NULL; -QPixmap * m_export_icon=NULL; -QPixmap * m_import_icon=NULL; -QPixmap * m_borrow_icon=NULL; -QPixmap * t_sborrow_icon=NULL; -QPixmap * t_cborrow_icon=NULL; -QPixmap * t_colorconfig_icon=NULL; - - -void init_icon_base(void) - { - - if( m_catalog_icon==NULL) - m_catalog_icon=new QPixmap((const char **)m_catalog_icon_data); - - if( m_unknown_icon==NULL) - m_unknown_icon=new QPixmap((const char **)m_unknown_icon_data); - - if( m_cd_icon==NULL) - m_cd_icon=new QPixmap((const char **)m_cd_icon_data); - - if( m_dvd_icon==NULL) - m_dvd_icon=new QPixmap((const char **)m_dvd_icon_data); - - if( m_hdd_icon==NULL) - m_hdd_icon=new QPixmap((const char **)m_hdd_icon_data); - - if( m_net_icon==NULL) - m_net_icon=new QPixmap((const char **)m_net_icon_data); - - if( m_flash_icon==NULL) - m_flash_icon=new QPixmap((const char **)m_flash_icon_data); - - if( m_other_icon==NULL) - m_other_icon=new QPixmap((const char **)m_other_icon_data); - - if( m_floppy_icon==NULL) - m_floppy_icon=new QPixmap((const char **)m_floppy_icon_data); - - if( v_folderlocked_icon==NULL) - v_folderlocked_icon=new QPixmap((const char **)v_folderlocked_icon_data); - - if( v_folderclosed_icon==NULL) - v_folderclosed_icon=new QPixmap((const char **)v_folderclosed_icon_data); - - if( v_folderopen_icon==NULL) - v_folderopen_icon=new QPixmap((const char **)v_folderopen_icon_data); - - if( v_file_icon==NULL) - v_file_icon=new QPixmap((const char **)v_file_icon_data); - - if( v_back_icon==NULL) - v_back_icon=new QPixmap((const char **)v_back_icon_data); - - if( a_0==NULL) - a_0=new QPixmap((const char **)a_0_data); - - if( a_1==NULL) - a_1=new QPixmap((const char **)a_1_data); - - if( a_2==NULL) - a_2=new QPixmap((const char **)a_2_data); - - if( a_3==NULL) - a_3=new QPixmap((const char **)a_3_data); - - if( a_4==NULL) - a_4=new QPixmap((const char **)a_4_data); - - if( p_icon==NULL) - p_icon=new QPixmap((const char **)p_icon_data); - - if( t_open_icon==NULL) - t_open_icon=new QPixmap((const char **)t_open_icon_data); - - if( t_save_icon==NULL) - t_save_icon=new QPixmap((const char **)t_save_icon_data); - - if( t_saveas_icon==NULL) - t_saveas_icon=new QPixmap((const char **)t_saveas_icon_data); - - if( t_close_icon==NULL) - t_close_icon=new QPixmap((const char **)t_close_icon_data); - - if( t_add_icon==NULL) - t_add_icon=new QPixmap((const char **)t_add_icon_data); - - if( t_rescan_icon==NULL) - t_rescan_icon=new QPixmap((const char **)t_rescan_icon_data); - - if( t_delete_icon==NULL) - t_delete_icon=new QPixmap((const char **)t_delete_icon_data); - - if( t_config_icon==NULL) - t_config_icon=new QPixmap((const char **)t_config_icon_data); - - if( t_help_icon==NULL) - t_help_icon=new QPixmap((const char **)t_help_icon_data); - - if( t_new_icon==NULL) - t_new_icon=new QPixmap((const char **)t_new_icon_data); - - if( t_find_icon==NULL) - t_find_icon=new QPixmap((const char **)t_find_icon_data); - - if( t_about_icon==NULL) - t_about_icon=new QPixmap((const char **)t_about_icon_data); - - if( t_comment_icon==NULL) - t_comment_icon=new QPixmap((const char **)t_comment_icon_data); - - if( t_add_export_icon==NULL) - t_add_export_icon=new QPixmap((const char **)t_add_export_icon_data); - - if( t_remove_export_icon==NULL) - t_remove_export_icon=new QPixmap((const char **)t_remove_export_icon_data); - - if( t_showc_icon==NULL) - t_showc_icon=new QPixmap((const char **)t_showc_icon_data); - - if( t_deletec_icon==NULL) - t_deletec_icon=new QPixmap((const char **)t_deletec_icon_data); - - if( m_export_icon==NULL) - m_export_icon=new QPixmap((const char **)m_export_icon_data); - - if( m_import_icon==NULL) - m_import_icon=new QPixmap((const char **)m_import_icon_data); - - if( m_borrow_icon==NULL) - m_borrow_icon=new QPixmap((const char **)m_borrow_icon_data); - - if( t_sborrow_icon==NULL) - t_sborrow_icon=new QPixmap((const char **)t_sborrow_icon_data); - - if( t_cborrow_icon==NULL) - t_cborrow_icon=new QPixmap((const char **)t_cborrow_icon_data); - - if( t_colorconfig_icon==NULL) - t_colorconfig_icon=new QPixmap((const char **)t_colorconfig_icon_data); - - - } - -QPixmap * get_m_catalog_icon(void) -{ - return m_catalog_icon; -} - -QPixmap * get_m_unknown_icon(void) -{ - return m_unknown_icon; -} - -QPixmap * get_m_cd_icon(void) -{ - return m_cd_icon; -} - -QPixmap * get_m_dvd_icon(void) -{ - return m_dvd_icon; -} - -QPixmap * get_m_hdd_icon(void) -{ - return m_hdd_icon; -} - -QPixmap * get_m_net_icon(void) -{ - return m_net_icon; -} - -QPixmap * get_m_flash_icon(void) -{ - return m_flash_icon; -} - -QPixmap * get_m_other_icon(void) -{ - return m_other_icon; -} - -QPixmap * get_m_floppy_icon(void) -{ - return m_floppy_icon; -} - -QPixmap * get_v_folderlocked_icon(void) -{ - return v_folderlocked_icon; -} - -QPixmap * get_v_folderclosed_icon(void) -{ - return v_folderclosed_icon; -} - -QPixmap * get_v_folderopen_icon(void) -{ - return v_folderopen_icon; -} - -QPixmap * get_v_file_icon(void) -{ - return v_file_icon; -} - -QPixmap * get_v_back_icon(void) -{ - return v_back_icon; -} - -QPixmap * get_p_icon(void) -{ - return p_icon; -} - -QPixmap * get_t_open_icon(void) -{ - return t_open_icon; -} - -QPixmap * get_t_save_icon(void) -{ - return t_save_icon; -} - -QPixmap * get_t_saveas_icon(void) -{ - return t_saveas_icon; -} - -QPixmap * get_t_close_icon(void) -{ - return t_close_icon; -} - -QPixmap * get_t_add_icon(void) -{ - return t_add_icon; -} - -QPixmap * get_t_rescan_icon(void) -{ - return t_rescan_icon; -} - -QPixmap * get_t_delete_icon(void) -{ - return t_delete_icon; -} - -QPixmap * get_t_config_icon(void) -{ - return t_config_icon; -} - -QPixmap * get_t_help_icon(void) -{ - return t_help_icon; -} - -QPixmap * get_t_new_icon(void) -{ - return t_new_icon; -} - -QPixmap * get_t_find_icon(void) -{ - return t_find_icon; -} - -QPixmap * get_t_about_icon(void) -{ - return t_about_icon; -} - -QPixmap * get_t_comment_icon(void) -{ - return t_comment_icon; -} - -QPixmap * get_t_add_export_icon(void) -{ - return t_add_export_icon; -} - -QPixmap * get_t_remove_export_icon(void) -{ - return t_remove_export_icon; -} - -QPixmap * get_t_showc_icon(void) -{ - return t_showc_icon; -} - -QPixmap * get_t_deletec_icon(void) -{ - return t_deletec_icon; -} - -QPixmap * get_m_export_icon(void) -{ - return m_export_icon; -} - -QPixmap * get_m_import_icon(void) -{ - return m_import_icon; -} - -QPixmap * get_m_borrow_icon(void) -{ - return m_borrow_icon; -} - -QPixmap * get_t_sborrow_icon(void) -{ - return t_sborrow_icon; -} - -QPixmap * get_t_cborrow_icon(void) -{ - return t_cborrow_icon; -} - -QPixmap * get_t_colorconfig_icon(void) -{ - return t_colorconfig_icon; -} - -QPixmap * get_anim(int i) -{ - switch(i) - { - case 0: return a_0; - case 1: return a_1; - case 2: return a_2; - case 3: return a_3; - case 4: return a_4; - default: return a_1; - } -} - - diff -Nru cdcat-1.01b/src/icons.h cdcat-1.2/src/icons.h --- cdcat-1.01b/src/icons.h 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/icons.h 2011-01-28 10:21:54.000000000 +0000 @@ -1,7 +1,9 @@ +//Added by qt3to4: +#include /**************************************************************************** - Hyper's CD Catalog + Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Peter Deak (hyperr@freemail.hu) License : GPL Copyright : (C) 2003 Peter Deak @@ -12,46 +14,47 @@ class QPixmap; -void init_icon_base(void); -QPixmap * get_m_catalog_icon(void); -QPixmap * get_m_unknown_icon(void); -QPixmap * get_m_cd_icon(void); -QPixmap * get_m_dvd_icon(void); -QPixmap * get_m_hdd_icon(void); -QPixmap * get_m_net_icon(void); -QPixmap * get_m_flash_icon(void); -QPixmap * get_m_other_icon(void); -QPixmap * get_m_floppy_icon(void); -QPixmap * get_v_folderlocked_icon(void); -QPixmap * get_v_folderclosed_icon(void); -QPixmap * get_v_folderopen_icon(void); -QPixmap * get_v_file_icon(void); -QPixmap * get_v_back_icon(void); -QPixmap * get_p_icon(void); -QPixmap * get_t_open_icon(void); -QPixmap * get_t_save_icon(void); -QPixmap * get_t_saveas_icon(void); -QPixmap * get_t_close_icon(void); -QPixmap * get_t_add_icon(void); -QPixmap * get_t_rescan_icon(void); -QPixmap * get_t_delete_icon(void); -QPixmap * get_t_config_icon(void); -QPixmap * get_t_help_icon(void); -QPixmap * get_t_new_icon(void); -QPixmap * get_t_find_icon(void); -QPixmap * get_t_about_icon(void); -QPixmap * get_t_comment_icon(void); -QPixmap * get_anim(int i); -QPixmap * get_t_add_export_icon(void); -QPixmap * get_t_remove_export_icon(void); -QPixmap * get_t_deletec_icon(void); -QPixmap * get_t_showc_icon(void); -QPixmap * get_m_export_icon(void); -QPixmap * get_m_borrow_icon(void); -QPixmap * get_m_import_icon(void); -QPixmap * get_t_sborrow_icon(void); -QPixmap * get_t_cborrow_icon(void); -QPixmap * get_t_colorconfig_icon(void); +void init_icon_base ( void ); +QPixmap * get_m_catalog_icon ( void ); +QPixmap * get_m_unknown_icon ( void ); +QPixmap * get_m_cd_icon ( void ); +QPixmap * get_m_dvd_icon ( void ); +QPixmap * get_m_hdd_icon ( void ); +QPixmap * get_m_net_icon ( void ); +QPixmap * get_m_flash_icon ( void ); +QPixmap * get_m_other_icon ( void ); +QPixmap * get_m_floppy_icon ( void ); +QPixmap * get_v_folderlocked_icon ( void ); +QPixmap * get_v_folderclosed_icon ( void ); +QPixmap * get_v_folderopen_icon ( void ); +QPixmap * get_v_file_icon ( void ); +QPixmap * get_v_back_icon ( void ); +QPixmap * get_p_icon ( void ); +QPixmap * get_t_open_icon ( void ); +QPixmap * get_t_save_icon ( void ); +QPixmap * get_t_saveas_icon ( void ); +QPixmap * get_t_close_icon ( void ); +QPixmap * get_t_add_icon ( void ); +QPixmap * get_t_rescan_icon ( void ); +QPixmap * get_t_delete_icon ( void ); +QPixmap * get_t_config_icon ( void ); +QPixmap * get_t_help_icon ( void ); +QPixmap * get_t_new_icon ( void ); +QPixmap * get_t_find_icon ( void ); +QPixmap * get_t_about_icon ( void ); +QPixmap * get_t_comment_icon ( void ); +QPixmap * get_anim ( int i ); +QList get_anim_list(); +QPixmap * get_t_add_export_icon ( void ); +QPixmap * get_t_remove_export_icon ( void ); +QPixmap * get_t_deletec_icon ( void ); +QPixmap * get_t_showc_icon ( void ); +QPixmap * get_m_export_icon ( void ); +QPixmap * get_m_borrow_icon ( void ); +QPixmap * get_m_import_icon ( void ); +QPixmap * get_t_sborrow_icon ( void ); +QPixmap * get_t_cborrow_icon ( void ); +QPixmap * get_t_colorconfig_icon ( void ); #endif diff -Nru cdcat-1.01b/src/import.cpp cdcat-1.2/src/import.cpp --- cdcat-1.01b/src/import.cpp 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/import.cpp 2011-03-06 10:13:50.000000000 +0000 @@ -9,10 +9,12 @@ #include #include -#include +#include #include -#include -#include +#include +#include +#include +#include #include #include @@ -22,44 +24,78 @@ #include #include #include +#include #include "import.h" #include "importdialog.h" #include "mainwidget.h" #include "dbase.h" +#include "cdcat.h" #include "config.h" -lineObject::lineObject( QString medianame, QString path, QString filename, - float size, QDateTime datetime ) { - this->medianame = medianame; - this->path = path; - this->filename = filename; - this->size = size; - this->datetime = datetime; +lineObject::lineObject ( QString medianame, QString path, QString filename, + float size, QDateTime datetime, QString comment, QString category ) { + this->medianame = medianame; + this->path = path; + this->filename = filename; + this->size = size; + this->datetime = datetime; + this->comment = comment; + this->category = category; } lineObject::~lineObject() {} +lineObject::lineObject ( const lineObject& newobj ) { + medianame = newobj.medianame; + path = newobj.path; + filename = newobj.filename; + size = newobj.size; + datetime = newobj.datetime; + comment = newobj.comment; + category = newobj.category; +} + +lineObject& lineObject::operator= ( const lineObject& newobj ) { + medianame = newobj.medianame; + path = newobj.path; + filename = newobj.filename; + size = newobj.size; + datetime = newobj.datetime; + comment = newobj.comment; + category = newobj.category; + return *this; +} + QString lineObject::getMediaName() { - return medianame; + return medianame; } QString lineObject::getPath() { - return path; + return path; } QString lineObject::getFileName() { - return filename; + return filename; } float lineObject::getSize() { - return size; + return size; } QDateTime lineObject::getDateTime() { - return datetime; + return datetime; +} + +QString lineObject::getComment() { + return comment; } +QString lineObject::getCategory() { + return category; +} + + /* * import a file with following format: * //..../:: @@ -67,345 +103,1407 @@ * */ -importGtktalogCsv::importGtktalogCsv( GuiSlave * parent, QString separator, QString filename, bool createdatabase, bool correctbadstyle ) { +importGtktalogCsv::importGtktalogCsv ( GuiSlave * parent, QString separator, QString filename, bool createdatabase, bool correctbadstyle, QString csvtype ) { - this->filename = filename; - this->correctbadstyle = correctbadstyle; - this->createdatabase = createdatabase; - this->separator = separator; - - if ( !filename.isEmpty() ) { - - if ( parent->mainw->db == NULL ) - { - if(parent->newEvent() == -1 ) return; - } - else { - if ( createdatabase ) { - while ( parent->closeEvent() != 0 ) - ; - if(parent->newEvent() == -1 ) return; - } - } - - if ( parent->mainw->db != NULL ) { - - guislave = parent; - db = parent->mainw->db; - mediacount = 0; - filecount = 0; - dircount = 0; - refreshcount = 0; - int linecount = 0; - int lines = 0; - - - QApplication::setOverrideCursor( waitCursor ); - guislave->panelsOFF(); - - QFile f( filename ); - - if ( f.open( IO_ReadOnly ) ) { - lines = f.readAll().contains( '\n' ) + 1; - f.close(); - } - - if ( f.open( IO_ReadOnly ) ) { // file opened successfully - - QProgressDialog progress( 0, "progressdialog", true ); - progress.setLabelText( tr( "Importing CSV..." ) ); - progress.setCancelButton( 0 ); - progress.setTotalSteps( lines ); - - QTextStream t( &f ); // use a text stream - QString medianame = ""; - - medialines = new QList < lineObject > (); - medialines->setAutoDelete( TRUE ); // the list owns the objects - - while ( !t.eof() ) { - QString line; - QString fullpath; - QString path; - float size; - //QDate date; - QString new_medianame; - QString datetimestring; - - - line = t.readLine(); // line of text excluding '\n' - - if ( !line.startsWith( "#" ) && !line.isEmpty() ) { - - if ( correctbadstyle ) { - // QMessageBox::warning (0, "wrong", line); - int idx = 0; - while ( idx != -1 ) { - idx = line.find( QString( separator + "/" ), idx ); - if ( idx != -1 ) { - line.replace( idx, QString( separator + "/" ).length(), "/" ); - } - } - idx = 0; - while ( idx != -1 ) { - idx = line.find( QString( "/" + separator ), idx ); - if ( idx != -1 ) { - line.replace( idx, QString( "/" + separator ).length(), "/" ); - } - } - // QMessageBox::warning (0, "fine", line); - } - - int mediaindex = line.find( '/', 0 ); - int pathindex = line.find( separator, mediaindex + 1 ); - fullpath = ( line.mid( mediaindex, pathindex - mediaindex ) ); - new_medianame = ( line.left( mediaindex ) ); - - - // path = fullpath.mid(mediaindex + 1, medianame.length()+1); - - int sizeindex = line.find( separator, pathindex + 1 ); - QString sizestring = line.mid( pathindex + 1, sizeindex - pathindex - 1 ).stripWhiteSpace(); - size = ( ( line.mid( pathindex + 1, sizeindex - pathindex - 1 ) ).stripWhiteSpace() ).toFloat(); - - datetimestring = ( line.mid( sizeindex + 1, line.length() ) ).stripWhiteSpace(); - - int dayindex = datetimestring.find( "/" ); - int monthindex = datetimestring.find( "/", dayindex + 1 ); - int yearindex = datetimestring.find( " ", monthindex + 1 ); - int hourindex = datetimestring.find( ":", yearindex + 1 ); - int minuteindex = datetimestring.find( ":", hourindex + 1 ); - - int day = ( datetimestring.mid( 0, dayindex ) ).toInt(); - QString day_ = ( datetimestring.mid( 0, dayindex ) ); - int month = ( datetimestring.mid( dayindex + 1, monthindex - dayindex - 1 ) ).toInt(); - int year = ( datetimestring.mid( monthindex + 1, hourindex - monthindex - 4 ) ).toInt(); - //bool validDate = date.setYMD( year, month, day ); - - int hour = ( datetimestring.mid( yearindex + 1, minuteindex - hourindex - 1 ) ).toInt(); - int minute = ( datetimestring.mid( hourindex + 1, minuteindex - 1 - hourindex ) ).toInt(); - ; - int second = ( datetimestring.mid( minuteindex + 1, datetimestring.length() - 1 ) ).toInt(); - QDate date( year, month, day ); - QTime time ( hour, minute, second ); - - QDateTime datetime = QDateTime( date, time ); - - int fileindex = fullpath.findRev( '/' ); - - QString dirpath = ""; - if ( fileindex != 0 ) - dirpath = fullpath.mid( 1, fileindex - 1 ); - QString filename = fullpath.mid( fileindex + 1, fullpath.length() - fileindex ); - - /* - //if (!validDate) - { - QString msg; - msg += "line: " + line + "\n"; - msg += "path: " + path + "\n"; - msg += "fullpath: " + fullpath + "\n"; - msg += "sizestring: "+ sizestring + "\n"; - msg += "sizeindex: " + QString().setNum(sizeindex) + "\n"; - msg += "size: " + QString().setNum(size) + "\n"; - msg += "day: " + QString().setNum(day) + "\n"; - msg += "month: " + QString().setNum(month) + "\n"; - msg += "hour: " + QString().setNum(hour) + "\n"; - msg += "minute: " + QString().setNum(minute) + "\n"; - msg += "second: " + QString().setNum(second) + "\n"; - msg += "year: " + QString().setNum(year) + "\n"; - msg += "dat_: " + day_ + "\n"; - msg += "datetimestring: " + datetimestring + "\n"; - msg += "new_medianame: " + new_medianame + "\n"; - msg+= "directory path:"+dirpath+"\n"; - msg+="file name: "+filename+"\n"; - - QMessageBox::warning(0, "line", msg); - } - */ - if ( medianame == "" ) - medianame = new_medianame; - - if ( medianame != new_medianame ) { - // QMessageBox::warning (0, "info", medianame); - addNewMedia( medianame, medialines ); - medialines->clear(); - medianame = new_medianame; - addNewItem( new_medianame, dirpath, filename, size, datetime ); - } else { - // QMessageBox::warning (0, "info", "new item"); - addNewItem( new_medianame, dirpath, filename, size, datetime ); - } - - } // valid line - linecount++; - progress.setProgress( linecount ); - } - f.close(); - if ( !medialines->isEmpty() ) { - addNewMedia( medianame, medialines ); - medialines->clear(); - } - - delete medialines; - ( db->getRootNode() ) ->touchDB(); - guislave->panelsON(); - QApplication::restoreOverrideCursor(); - - QString msg; - msg += tr( "Import was successful." ); - msg += "\n"; - if ( mediacount < 2 ) - msg += tr( "1 media" ) + ",\n"; - else - msg += QString().setNum( mediacount ) + " " + QString( tr( "media" ) ) + ",\n"; - - if ( dircount < 2 ) - msg += QString( tr( "1 directory:,\n" ) ); - else - msg += QString().setNum( dircount ) + " " + QString( tr( "directories" ) ) + ",\n"; - - if ( filecount < 2 ) - msg += tr( "1 File" ) + ",\n"; - else - msg += QString().setNum( filecount ) + " " + QString( tr( "files" ) ) + "\n"; - - msg += tr( "are imported." ); - - QMessageBox::information( 0, tr( "Import successful" ), msg ); - - } else { - - if ( f.status() == IO_ReadError ) - QMessageBox::critical( 0, tr( "file read error" ), tr( "Could not read file" ) ); - - if ( f.status() == IO_FatalError ) - QMessageBox::critical( 0, tr( "Fatal error" ), tr( "Fatal error occured." ) ); - - if ( f.status() == IO_OpenError ) - QMessageBox::critical( 0, tr( "file open error" ), tr( "Could not open file" ) ); - } - } // file dialog canceled - } + this->filename = filename; + this->correctbadstyle = correctbadstyle; + this->createdatabase = createdatabase; + this->separator = separator; + DEBUG_INFO_ENABLED = init_debug_info(); + + if ( !filename.isEmpty() ) { + + if ( parent->mainw->db == NULL ) + parent->newEvent(); + else { + if ( createdatabase ) { + while ( parent->closeEvent() != 0 ) + ; + parent->newEvent(); + } + } + + if ( parent->mainw->db != NULL ) { + + guislave = parent; + db = parent->mainw->db; + mediacount = 0; + filecount = 0; + dircount = 0; + refreshcount = 0; + int linecount = 0; + int lines = 0; + + + QApplication::setOverrideCursor ( Qt::waitCursor ); + guislave->panelsOFF(); + + QFile f ( filename ); + + if ( f.open ( QIODevice::ReadOnly ) ) { + QTextStream in ( &f ); + while ( !in.atEnd() ) { + QString line = in.readLine(); + lines ++; + } + f.close(); + if(*DEBUG_INFO_ENABLED) + cerr << "importGtktalogCsv:: " << lines << " lines found." << endl; + } + + if ( f.open ( QIODevice::ReadOnly ) ) { // file opened successfully + + QProgressDialog *progress = new QProgressDialog( tr ( "Importing CSV..." ), tr("Cancel"), 1, lines); + progress->setCancelButton ( 0 ); + + QTextStream t ( &f ); // use a text stream + QString medianame = ""; + QString comment = ""; + QString category = ""; + QDateTime datetime; + QString import_filename = filename; + + medialines = new QList < lineObject > (); + //medialines->setAutoDelete( TRUE ); // the list owns the objects + + while ( !t.atEnd() ) { + QString line; + QString fullpath; + QString path; + QString dirpath; + float size; + //QDate date; + + QString new_medianame; + QString datetimestring; + QString pathsep = "/"; + + + + line = t.readLine(); // line of text excluding '\n' +// if(*DEBUG_INFO_ENABLED) { +// cerr << "line raw: " << qPrintable(line) << endl; +// } + + if ( !line.startsWith ( "#" ) && !line.isEmpty() ) { + if (line.contains('\\')) + pathsep = "\\"; + if ( correctbadstyle ) { +// if(*DEBUG_INFO_ENABLED) { +// cerr << "correcting bad style"<< endl; +// } + // QMessageBox::warning (0, "wrong", line); + int idx = 0; + while ( idx != -1 ) { + idx = line.find ( QString ( separator + pathsep ), idx ); + if ( idx != -1 ) { + line.replace ( idx, QString ( separator + pathsep ).length(), "/" ); + } + } + idx = 0; + while ( idx != -1 ) { + idx = line.find ( QString ( pathsep+ separator ), idx ); + if ( idx != -1 ) { + line.replace ( idx, QString ( pathsep + separator ).length(), "/" ); + } + } + // QMessageBox::warning (0, "fine", line); + } + + if (csvtype == "gtktalog") { + + int mediaindex = line.find ( pathsep, 0 ); + int pathindex = line.find ( separator, mediaindex + 1 ); + fullpath = ( line.mid ( mediaindex, pathindex - mediaindex ) ); + + if (pathsep == "\\") + fullpath = fullpath.replace("\\", "/"); + if (fullpath.at(0) != '/') + fullpath = "/"+fullpath; + //if(*DEBUG_INFO_ENABLED) + // cerr << "importGtktalogCsv fullpath: " << qPrintable(fullpath) << endl; + new_medianame = ( line.left ( mediaindex ) ); + //if(*DEBUG_INFO_ENABLED) + // cerr << "importGtktalogCsv new_medianame: " << qPrintable(new_medianame) << endl; + + path = fullpath.mid(mediaindex + 1, medianame.length()+1); + //if(*DEBUG_INFO_ENABLED) + // cerr << "importGtktalogCsv path: " << qPrintable(path) << endl; + + int sizeindex = line.find ( separator, pathindex + 1 ); + QString sizestring = line.mid ( pathindex + 1, sizeindex - pathindex - 1 ).stripWhiteSpace(); + //if(*DEBUG_INFO_ENABLED) + // cerr << "importGtktalogCsv sizestring: " << qPrintable(sizestring) << endl; + size = ( ( line.mid ( pathindex + 1, sizeindex - pathindex - 1 ) ).stripWhiteSpace() ).toFloat(); + + //if(*DEBUG_INFO_ENABLED) + // cerr << "importGtktalogCsv size: " << size << endl; + + datetimestring = ( line.mid ( sizeindex + 1, line.length() ) ).stripWhiteSpace(); + if (*DEBUG_INFO_ENABLED) + cerr << "importGtktalogCsv datetimestring: " << qPrintable(datetimestring) << endl; + + // date is normally day/month/year hour:minute:second + QString datesep = "/"; + + // date in other format: day.month.year hour:minute:second + if (datetimestring.contains('.')) + datesep = "."; + int dayindex = datetimestring.find ( datesep ); + int monthindex = datetimestring.find ( datesep, dayindex + 1 ); + int yearindex = datetimestring.find ( " ", monthindex + 1 ); + int hourindex = datetimestring.find ( ":", yearindex + 1 ); + int minuteindex = datetimestring.find ( ":", hourindex + 1 ); + + int day = ( datetimestring.mid ( 0, dayindex ) ).toInt(); + QString day_ = ( datetimestring.mid ( 0, dayindex ) ); + int month = ( datetimestring.mid ( dayindex + 1, monthindex - dayindex - 1 ) ).toInt(); + int year = ( datetimestring.mid ( monthindex + 1, hourindex - monthindex - 4 ) ).toInt(); + //bool validDate = date.setYMD( year, month, day ); + + int hour = ( datetimestring.mid ( yearindex + 1, minuteindex - hourindex - 1 ) ).toInt(); + int minute = ( datetimestring.mid ( hourindex + 1, minuteindex - 1 - hourindex ) ).toInt(); + + int second = ( datetimestring.mid ( minuteindex + 1, datetimestring.length() - 1 ) ).toInt(); + QDate date ( year, month, day ); + QTime time ( hour, minute, second ); + + datetime = QDateTime ( date, time ); + + int fileindex = fullpath.lastIndexOf ( '/' ); + //if(*DEBUG_INFO_ENABLED) + // cerr << "importGtktalogCsv fileindex: " << fileindex << endl; + + QString dirpath = ""; + if ( fileindex != 0 ) + dirpath = fullpath.mid ( 1, fileindex-1 ); + QString filename = fullpath.mid ( fileindex + 1, fullpath.length() - fileindex ); + + if (*DEBUG_INFO_ENABLED) + //if (!validDate) + { + QString msg; + msg += "line: " + line + "\n"; + msg += "path: " + path + "\n"; + msg += "fullpath: " + fullpath + "\n"; + msg += "sizestring: "+ sizestring + "\n"; + msg += "sizeindex: " + QString().setNum(sizeindex) + "\n"; + msg += "size: " + QString().setNum(size) + "\n"; + msg += "month: " + QString().setNum(month) + "\n"; + msg += "hour: " + QString().setNum(hour) + "\n"; + msg += "minute: " + QString().setNum(minute) + "\n"; + msg += "second: " + QString().setNum(second) + "\n"; + msg += "year: " + QString().setNum(year) + "\n"; + msg += "day: " + QString().setNum(day) + "\n"; + msg += "datetimestring: " + datetimestring + "\n"; + msg += "new_medianame: " + new_medianame + "\n"; + msg+= "directory path: "+dirpath+"\n"; + msg+="file name: "+filename+"\n"; + + //QMessageBox::warning(0, "line", msg); + } + + } + else if (csvtype == "kat-dece") { + /* + * format: + * "Number";"Location";"CD name";"CD category";"Name";"Extension";"Length";"Date";"Path";"Comment" + * + * sample line: + * "";"";"newiso";"! Alle Medien ";"empire-efi-logo-alt256";".png";" 11,669";"2010.01.07 08:05";"Extra\Themes\Default\";"" + */ + if (linecount == 0) { + linecount++; + continue; + } + // FIXME + separator=";"; + QStringList csvList = line.split(separator); + if (csvList.count() != 10) { + if(*DEBUG_INFO_ENABLED) + cerr << "importGtktalogCsv invalid line (not 9 fields): " << qPrintable(line) << endl; + continue; + } + + filename = QString(csvList.at(4)).replace("\"","")+QString(csvList.at(5)).replace("\"",""); + + QString sizestring = QString(csvList.at(6)).replace("\"","").replace(",", ".").replace(".", "").replace("#", "").stripWhiteSpace(); + + // size is float and its kib! + size = uint(QString(csvList.at(6)).replace("\"","").replace(",", ".").replace(".", "").replace("#", "").stripWhiteSpace().toFloat()*1024); +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv size: " << size << endl; + + + datetimestring = QString(csvList.at(7)).replace("\"",""); +// if (*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv datetimestring: " << qPrintable(datetimestring) << endl; + + QString datesep="."; + // date is in format: year.month.day hour:minute + if (datetimestring.contains('.')) + datesep = "."; + int yearindex = datetimestring.find ( datesep, 0 ); + int monthindex = datetimestring.find ( datesep, yearindex + 1 ); + int dayindex = datetimestring.find ( " ", monthindex + 1 ); + int hourindex = datetimestring.find ( " ", dayindex + 1 ); + int minuteindex = datetimestring.find ( ":", hourindex + 1 ); + int year = ( datetimestring.mid ( 0, yearindex ) ).toInt(); + QString monthstring = datetimestring.mid ( yearindex+1, monthindex-yearindex -1 ); + int month = ( datetimestring.mid ( yearindex+1, monthindex-yearindex -1 ) ).toInt(); + QString daystring = datetimestring.mid ( monthindex + 1, hourindex-dayindex+1 ); + int day = ( datetimestring.mid ( monthindex + 1, hourindex-dayindex+1 ) ).toInt(); + //bool validDate = date.setYMD( year, month, day ); + QString hourstring = datetimestring.mid ( hourindex + 1, minuteindex- hourindex-1 ); + int hour = ( datetimestring.mid ( hourindex + 1, minuteindex- hourindex-1 ) ).toInt(); + int minute = ( datetimestring.mid (dayindex + 1, minuteindex-1) ).toInt(); + int second = ( datetimestring.mid ( minuteindex + 1, datetimestring.length() - 1 ) ).toInt(); + QDate date ( year, month, day ); + QTime time ( hour, minute, second ); + datetime = QDateTime ( date, time ); + + new_medianame = QString(csvList.at(2)).replace("\"",""); +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv new_medianame: " << qPrintable(new_medianame) << endl; + + dirpath = QString(csvList.at(8)).replace("\"",""); + dirpath = dirpath.mid(0, dirpath.length()-1 ); + if (pathsep == "\\") + dirpath = dirpath.replace("\\", "/"); +// if (!dirpath.isEmpty() && dirpath.at(0) != '/') +// dirpath = "/"+dirpath; + + path = dirpath+"/"+filename; +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv path: " << qPrintable(path) << endl; + + fullpath = path; + +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv fullpath: " << qPrintable(fullpath) << endl; + + comment = QString(csvList.at(9)).replace("\"",""); +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv comment: " << qPrintable(comment) << endl; + + category = QString(csvList.at(3)).replace("\"",""); +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv category: " << qPrintable(category) << endl; + + + if (*DEBUG_INFO_ENABLED) + //if (!validDate) + { + QString msg; + msg += "line: " + line + "\n"; + msg += "path: " + path + "\n"; + msg += "fullpath: " + fullpath + "\n"; + msg += "size: " + QString().setNum(size) + "\n"; + msg += "sizestring: " + sizestring + "\n"; + msg += "month: " + QString().setNum(month) + "\n"; + msg += "hour: " + QString().setNum(hour) + "\n"; + msg += "minute: " + QString().setNum(minute) + "\n"; + msg += "year: " + QString().setNum(year) + "\n"; + msg += "day: " + QString().setNum(day) + "\n"; + msg += "datetimestring: " + datetimestring + "\n"; + msg += "monthstring: " + monthstring + "\n"; + msg += "hourstring: " + hourstring + "\n"; + msg += "daystring: " + daystring + "\n"; + msg += "new_medianame: " + new_medianame + "\n"; + msg += "directory path: "+dirpath+"\n"; + msg +="file name: "+filename+"\n"; + +// QMessageBox::warning(0, "line", msg); + } + + } + else if (csvtype == "disclib") { + /* + * format: + * name*"volume"*filepath*path*size*Volume serial*date*type*"category"*"comments"*"location" + * + * sample line: + * acc_dis.chm*"DISK_00001_HelpCD"*DISK_00001_HelpCD\acc_dis.chm*DISK_00001_HelpCD\*20 832*6C721915*23.08.2001 12:00:00*chm*""*""*"" + */ + // FIXME + separator="*"; + QStringList csvList = line.split(separator); +// if (csvList.count() < 10) { +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv invalid line (at least 10 fields): " << qPrintable(line) << endl; +// continue; +// } + if(*DEBUG_INFO_ENABLED) { + cerr << "line: " << qPrintable(line) << endl; + for (int i = 0; i < csvList.size(); ++i) + cout << "csvList[" << i << "]: " << csvList.at(i).toLocal8Bit().constData() << endl; + } + + filename = QString(csvList.at(0)); + QString sizestring = QString(csvList.at(3)) ; +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv sizestring raw: " < 5 720 + sizestring = QString(sizestring.split("/").at(1)).replace(" ",""); +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv sizestring raw2: " < 1 ) { + int last_index = new_medianame.lastIndexOf('/'); + int first_index = new_medianame.indexOf('/', last_index); + new_medianame = new_medianame.mid(first_index+1, last_index ); + } +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv new_medianame: " << qPrintable(new_medianame) << endl; + + dirpath = QString(csvList.at(1)).replace("\"",""); + dirpath = dirpath.mid(0, dirpath.length()-1 ); + dirpath = dirpath.replace(new_medianame, ""); + if (pathsep == "\\") + dirpath = dirpath.replace("\\", "/"); +// if (!dirpath.isEmpty() && dirpath.at(0) != '/') +// dirpath = "/"+dirpath; + if (!dirpath.isEmpty() && dirpath.at(0) == '/') + dirpath = dirpath.mid(1, dirpath.length()-1 ); + + path = dirpath+"/"+filename; +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv path: " << qPrintable(path) << endl; + + fullpath = path; + +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv fullpath: " << qPrintable(fullpath) << endl; + + category = ""; + comment = QString( csvList.at(4)).replace("\"",""); + + if (*DEBUG_INFO_ENABLED) + //if (!validDate) + { + QString msg; +// msg += "line: " + line + "\n"; + msg += "path: " + path + "\n"; + msg += "fullpath: " + fullpath + "\n"; + msg += "size: " + QString().setNum(size) + "\n"; + msg += "sizestring: " + sizestring + "\n"; + msg += "month: " + QString().setNum(month) + "\n"; + msg += "hour: " + QString().setNum(hour) + "\n"; + msg += "minute: " + QString().setNum(minute) + "\n"; + msg += "year: " + QString().setNum(year) + "\n"; + msg += "day: " + QString().setNum(day) + "\n"; + msg += "datetimestring: " + datetimestring + "\n"; +// msg += "monthstring: " + monthstring + "\n"; +// msg += "hourstring: " + hourstring + "\n"; +// msg += "daystring: " + daystring + "\n"; + msg += "new_medianame: " + new_medianame + "\n"; + msg += "directory path: "+dirpath+"\n"; + msg +="file name: "+filename+"\n"; + msg += "comment: " + comment + "\n"; + msg += "category: " + category + "\n"; + + cerr << "msg: " << qPrintable(msg) << endl; + +// QMessageBox::warning(0, "line", msg); + } + + } + else if (csvtype == "vvv") { + /* + * format: + * "media","path","filename",size,"extension",date,"description" + * + * sample line: + * "winxp","/I386/LANG","PINTLPAD.CH_",65841,"CH_",23.08.2001 14:00:00,"" + */ + if (linecount < 1) { + linecount++; + continue; + } + separator=","; + QStringList csvList = line.split(separator); +// if (csvList.count() < 10) { +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv invalid line (at least 10 fields): " << qPrintable(line) << endl; +// continue; +// } + if(*DEBUG_INFO_ENABLED) { + cerr << "line: " << qPrintable(line) << endl; + for (int i = 0; i < csvList.size(); ++i) + cout << "csvList[" << i << "]: " << csvList.at(i).toLocal8Bit().constData() << endl; + } + + filename = QString(csvList.at(2)).replace("\"",""); + QString sizestring = QString(csvList.at(3)) ; +// if(*DEBUG_INFO_ENABLED) +// cerr << "importGtktalogCsv sizestring raw: " <clear(); + medianame = new_medianame; + addNewItem ( new_medianame, dirpath, filename, size, datetime, comment, category ); + + + } else { + // QMessageBox::warning (0, "info", "new item"); + addNewItem ( new_medianame, dirpath, filename, size, datetime, comment, category ); + } + + } // valid line + linecount++; + progress->setValue ( linecount ); + if(parent->mainw->app->hasPendingEvents()) + parent->mainw->app->processEvents(); + } + delete progress; + f.close(); + if ( !medialines->isEmpty() ) { + addNewMedia ( medianame, datetime, comment, category, medialines ); + medialines->clear(); + } + + delete medialines; + ( db->getRootNode() ) ->touchDB(); + guislave->panelsON(); + QApplication::restoreOverrideCursor(); + + QString msg; + msg += tr ( "Import was successful." ); + msg += "\n"; + if ( mediacount < 2 ) + msg += tr ( "1 media" ) + ",\n"; + else + msg += QString().setNum ( mediacount ) + " " + QString ( tr ( "media" ) ) + ",\n"; + + if ( dircount < 2 ) + msg += QString ( tr ( "1 directory:,\n" ) ); + else + msg += QString().setNum ( dircount ) + " " + QString ( tr ( "directories" ) ) + ",\n"; + + if ( filecount < 2 ) + msg += tr ( "1 File" ) + ",\n"; + else + msg += QString().setNum ( filecount ) + " " + QString ( tr ( "files" ) ) + "\n"; + + msg += tr ( "are imported." ); + + QMessageBox::information ( 0, tr ( "Import successful" ), msg ); + + } else { + + if ( f.status() == IO_ReadError ) + QMessageBox::critical ( 0, tr ( "file read error" ), tr ( "Could not read file" ) ); + + if ( f.status() == IO_FatalError ) + QMessageBox::critical ( 0, tr ( "Fatal error" ), tr ( "Fatal error occured." ) ); + + if ( f.status() == IO_OpenError ) + QMessageBox::critical ( 0, tr ( "file open error" ), tr ( "Could not open file" ) ); + } + } // file dialog canceled + } } importGtktalogCsv::~importGtktalogCsv() {} -int -importGtktalogCsv::addNewItem( QString medianame, QString path, - QString filename, float size, QDateTime datetime ) { - medialines->append( new lineObject( medianame, path, filename, size, datetime ) ); - - // QMessageBox::critical( 0, "item", "new item!"); - return 0; - -} - -#if QT_VERSION >= 0x030100 // Qt 3.1.0 or better -int importGtktalogCsv::addNewMedia( QString new_medianame, QPtrList < lineObject > *medialines ) { -#else -int importGtktalogCsv::addNewMedia( QString new_medianame, QList < lineObject > *medialines ) { -#endif - // QMessageBox::critical(0, "media", new_medianame); - - if ( guislave->mainw->db == NULL ) - guislave->newEvent(); - if ( guislave->mainw->db == NULL ) - return 0; - - /* create new media */ - Node *env, *curr; - curr = db->getMediaNode( ( char * ) ( ( const char * ) * new QString( new_medianame ) ) ); - if ( curr == NULL ) - curr = db->putMediaNode( ( char * ) ( ( const char * ) * new QString( new_medianame ) ), mediacount, ( ( char* ) ( ( const char * ) tr( "importuser" ) ) ), CD, "" ); - - QString msg; - lineObject *obj; - - for ( obj = medialines->first(); obj; obj = medialines->next() ) { - - env = curr; - - QString path = obj->getPath(); - - // QMessageBox::warning(0, "path", obj->getPath()); - int startindex = 0; - int dirindex = 0; - - - if ( !obj->getPath().isEmpty() ) { - path += "/"; - dirindex = path.find( "/" ); - while ( dirindex != -1 ) { - - QString dir = path.mid( startindex, dirindex - startindex ); - // QMessageBox::warning(0, "new dir", dir); - - curr = db->getDirectoryNode( env, ( char * ) ( ( const char * ) * new QString( dir ) ) ); - if ( curr == NULL ) { - curr = db->putDirectoryNode( env, ( char * ) ( ( const char * ) * new QString( dir ) ), getTime( obj->getDateTime() ), "" ); - dircount++; - - } - - startindex = dirindex + 1; - dirindex = path.find( "/", dirindex + 1 ); - - env = curr; - - } - } - dirindex = -1; - - uint size = ( uint ) obj->getSize(); - float s; - int st; - - if ( size > ( uint ) ( 1024 * 1024 * 1024 * 2 ) ) { // 2 << 30 or 2^31 - s = ( double ) size / ( double ) ( 1024 * 1024 * 1024 ); - st = GBYTE; - } - if ( size > ( uint ) ( 1024 * 1024 ) ) { - s = ( double ) size / ( double ) ( 1024 * 1024 ); - st = MBYTE; - } - if ( size > ( uint ) 1024 ) { - s = ( double ) size / ( double ) 1024; - st = KBYTE; - } else { - s = size; - st = BYTE; - } - - env = curr; - curr = db->getFileNode( env, ( ( char * ) ( ( const char* ) * new QString( obj->getFileName() ) ) ) ); - if ( curr == NULL ) - curr = db->putFileNode( env, ( ( char * ) ( ( const char * ) * new QString( obj->getFileName() ) ) ), getTime( obj->getDateTime() ), "", st, s ); - - curr = db->getMediaNode( ( char * ) ( ( const char * ) * new QString( new_medianame ) ) ); - - filecount++; - } // over all items in list - - mediacount++; - refreshcount++; - if ( refreshcount == 10 ) { - guislave->mainw->app->processEvents(); - refreshcount = 0; - } +int importGtktalogCsv::addNewItem ( QString medianame, QString path, + QString filename, float size, QDateTime datetime, QString comment, QString category ) { + DEBUG_INFO_ENABLED = init_debug_info(); + lineObject l ( medianame, path, filename, size, datetime, comment, category ); + if (*DEBUG_INFO_ENABLED) + cerr << "importGtktalogCsv::addNewItem: medianame: " << + qPrintable(medianame) << ", path: " << qPrintable(path) << ", filename: " << + qPrintable(filename) << ", size: " << size << ", date: " << + qPrintable(datetime.toString()) << ", comment: " << qPrintable(comment) << ", category: " << qPrintable(category )<< endl; + medialines->append ( l ); + + // QMessageBox::critical( 0, "item", "new item!"); + return 0; - return 0; } +int importGtktalogCsv::addNewMedia ( QString new_medianame, QDateTime media_modification, QString media_comment, QString media_category, QList < lineObject > *medialines ) { + DEBUG_INFO_ENABLED = init_debug_info(); + //if(*DEBUG_INFO_ENABLED) + // cerr << "importGtktalogCsv::addNewMedia media: " << qPrintable(new_medianame) << endl; + + if ( guislave->mainw->db == NULL ) + guislave->newEvent(); + if ( guislave->mainw->db == NULL ) + return 0; + + /* create new media */ + Node *env, *curr; + curr = db->getMediaNode ( new_medianame ); + if ( curr == NULL ) + curr = db->putMediaNode ( new_medianame , mediacount, tr ( "importuser" ), CD, media_comment, media_modification, media_category ); + + QString msg; + lineObject obj("", "", "", 0.0, QDateTime(), "", ""); + for ( int i = 0; i < medialines->size(); i++ ) { + //if(*DEBUG_INFO_ENABLED) + // cerr << "importGtktalogCsv::addNewMedia medialine: " << i << endl; + obj = medialines->at ( i ); + env = curr; + + QString path = obj.getPath(); + + // QMessageBox::warning(0, "path", obj->getPath()); + int startindex = 0; + int dirindex = 0; + + + if ( !obj.getPath().isEmpty() ) { + path += "/"; + dirindex = path.find ( "/" ); + while ( dirindex != -1 ) { + + QString dir = path.mid ( startindex, dirindex - startindex ); + // QMessageBox::warning(0, "new dir", dir); + + curr = db->getDirectoryNode ( env, dir ); + if ( curr == NULL ) { + curr = db->putDirectoryNode ( env, dir , obj.getDateTime() , obj.getComment(), obj.getCategory() ); + dircount++; + + } + + startindex = dirindex + 1; + dirindex = path.find ( "/", dirindex + 1 ); + + env = curr; + + } + } + dirindex = -1; + + uint size = ( uint ) obj.getSize(); + float s; + int st; + + if ( size > ( uint ) ( 1024 * 1024 * 1024 * 2 ) ) { // 2 << 30 or 2^31 + s = ( double ) size / ( double ) ( 1024 * 1024 * 1024 ); + st = GBYTE; + } + if ( size > ( uint ) ( 1024 * 1024 ) ) { + s = ( double ) size / ( double ) ( 1024 * 1024 ); + st = MBYTE; + } + if ( size > ( uint ) 1024 ) { + s = ( double ) size / ( double ) 1024; + st = KBYTE; + } else { + s = size; + st = BYTE; + } + + env = curr; + curr = db->getFileNode ( env, QString ( obj.getFileName() ) ); + if ( curr == NULL ) + curr = db->putFileNode ( env, obj.getFileName() , obj.getDateTime() , obj.getComment(), st, s, obj.getCategory() ); + + curr = db->getMediaNode ( new_medianame ); + + filecount++; + } // over all items in list + + mediacount++; + refreshcount++; + if ( refreshcount == 10 ) { + guislave->mainw->app->processEvents(); + refreshcount = 0; + } + return 0; +} /* * Import a xml report from gtktalog - + example entry: - - + + @@ -416,7 +1514,7 @@ - + dummy values are: _disc_ ==> disc name _dir_ ==> directory @@ -425,1120 +1523,1010 @@ _category_ ==> category _descripion_ ==> description _information_ ==> information - - */ + */ -importGtktalogXml* class_link; QString tmpdirname; -extern "C" { - static void startElement_gtktalog_parse( void * userData, const char * name, const char **atts ) { - int * depthPtr = ( int * ) userData; - QString name2 = QString::fromLatin1( name ).stripWhiteSpace(); - - class_link->last_tag = name2; - - /* - if (name2 == "information"){ - // found information - - } - */ - - *depthPtr += 1; - } - - static void endElement_gtktalog_parse( void * userData, const char * name ) { - - QString name2 = QString::fromLatin1( name ).stripWhiteSpace(); - - class_link->last_tag = ""; - QString line = ""; - - class_link->path = class_link->directory + "/" + class_link->filename; - - if ( name2 == "name" ) { - line += "catalogName: " + class_link->catalogName + "\n"; - } - if ( name2 == "report" ) { - class_link->guislave->mainw->db->setName( class_link->catalogName ); - } - if ( name2 == "directory" ) { - - line += "new_medianame: " + class_link->new_medianame + "\n"; - line += "directory: " + class_link->directory + "\n"; - line += "filename: " + class_link->filename + "\n"; - line += "Full path: " + class_link->path + "\n"; - line += "size: " + QString().setNum( class_link->size ) + "\n"; - line += "datetimestring: " + class_link->datetimestring + "\n"; - line += "category: " + class_link->categorie + "\n"; - line += "description: " + class_link->description + "\n"; - line += "information: " + class_link->information + "\n"; - - //cerr << line << endl << endl << endl; - - if ( class_link->medianame == "" ) - class_link->medianame = class_link->new_medianame; - - if ( class_link->medianame != class_link->new_medianame ) { - // QMessageBox::warning (0, "info", class_link->medianame); - class_link->addNewMedia( class_link->medianame, class_link->medialines ); - class_link->medialines->clear(); - class_link->medianame = class_link->new_medianame; - class_link->addNewItem( class_link->new_medianame, class_link->directory, class_link->filename, class_link->size, class_link->datetime ); - } else { - // QMessageBox::warning (0, "info", "new item"); - class_link->addNewItem( class_link->medianame, class_link->directory, class_link->filename, class_link->size, class_link->datetime ); - } - - class_link->new_medianame = ""; - class_link->directory = ""; - class_link->filename = ""; - class_link->size = 0; - class_link->categorie = ""; - class_link->description = ""; - class_link->information = ""; - class_link->datetimestring = ""; - tmpdirname = ""; - - class_link->linecount++; - class_link->progress->setProgress( class_link->linecount ); - } - - - int * depthPtr = ( int * ) userData; - *depthPtr -= 1; - } - - static void getCdata_gtktalog_parse( void * userData, const XML_Char * s, int len ) { - - QString tmp2 = ""; - for ( int i = 0;i < len;i++ ) { - tmp2 += s[ i ]; - } - - QString name2 = tmp2.stripWhiteSpace(); - - if ( class_link->last_tag == "name" ) { - // found catalog name - class_link->catalogName += name2; - } - - - if ( class_link->last_tag == "directory" ) { - // found directory entry: for each file there is one - // just the start of each file - } - - if ( class_link->last_tag == "disc_name" ) { - // found disc name - class_link->new_medianame += name2; - } - - if ( class_link->last_tag == "directory_name" ) { - // found directory name - tmpdirname += name2; - class_link->directory = tmpdirname.mid( 1, tmpdirname.length() - 2 ); - } - - if ( class_link->last_tag == "file_name" ) { - // found file name - class_link->filename += name2; - } - - if ( class_link->last_tag == "file_size" ) { - // found file size - class_link->size = name2.toInt(); - } - - if ( class_link->last_tag == "file_date" ) { - // found file size - class_link->datetimestring = name2.stripWhiteSpace(); - - int dayindex = class_link->datetimestring.find( "/" ); - int monthindex = class_link->datetimestring.find( "/", dayindex + 1 ); - int yearindex = class_link->datetimestring.find( " ", monthindex + 1 ); - int hourindex = class_link->datetimestring.find( ":", yearindex + 1 ); - int minuteindex = class_link->datetimestring.find( ":", hourindex + 1 ); - - int day = ( class_link->datetimestring.mid( 0, dayindex ) ).toInt(); - QString day_ = ( class_link->datetimestring.mid( 0, dayindex ) ); - int month = ( class_link->datetimestring.mid( dayindex + 1, monthindex - dayindex - 1 ) ).toInt(); - int year = ( class_link->datetimestring.mid( monthindex + 1, hourindex - monthindex - 4 ) ).toInt(); - - int hour = ( class_link->datetimestring.mid( yearindex + 1, minuteindex - hourindex - 1 ) ).toInt(); - int minute = ( class_link->datetimestring.mid( hourindex + 1, minuteindex - 1 - hourindex ) ).toInt(); - - int second = ( class_link->datetimestring.mid( minuteindex + 1, class_link->datetimestring.length() - 1 ) ).toInt(); - QDate date( year, month, day ); - QTime time ( hour, minute, second ); - - class_link->datetime = QDateTime( date, time ); - - } - - - if ( class_link->last_tag == "file_category" ) { - // found category - class_link->categorie = name2; - } - - if ( class_link->last_tag == "description" ) { - // found description - class_link->description = name2; - } - - - if ( class_link->last_tag == "information" ) { - // found information - class_link->information = name2; - } - - - } - -} - -importGtktalogXml::importGtktalogXml( GuiSlave * parent, QString filename, bool createdatabase ) { - progress = NULL; - this->guislave = parent; - bool import_ok = true; - last_tag = ""; - if ( !filename.isEmpty() ) { - - if ( parent->mainw->db == NULL ) - { - if(parent->newEvent() == -1 ) return; - } - else { - if ( createdatabase ) { - while ( parent->closeEvent() != 0 ) - ; - if(parent->newEvent() == -1 ) return; - } - } - - guislave = parent; - db = parent->mainw->db; - mediacount = 0; - filecount = 0; - dircount = 0; - refreshcount = 0; - linecount = 0; - lines = 0; - - - QApplication::setOverrideCursor( waitCursor ); - guislave->panelsOFF(); - - QFile f( filename ); - QTextStream t( &f ); // use a text stream - - if ( f.open( IO_ReadOnly ) ) { - QString tmp = ""; - while ( !t.eof() ) { - tmp = t.readLine(); - if ( tmp.contains( "" ) ) - lines++; - } - - f.close(); - } - - progress = new QProgressDialog( 0, "progressdialog", true ); - progress->setLabelText( tr( "Importing XML..." ) ); - progress->setCancelButton( 0 ); - progress->setTotalSteps( lines ); - - medialines = new QList < lineObject > (); - medialines->setAutoDelete( TRUE ); // the list owns the objects - - line = ""; - fullpath = ""; - path = ""; - size = 0.0; - new_medianame = ""; - datetimestring = ""; - - // now we need a link to itself :( - class_link = this; - - /* - - XML_ParserCreate(ISO-8859-1); - */ - - //char buf[ BUFSIZ ]; - parser = XML_ParserCreate( NULL ); - int done = 0; - int depth = 0; - XML_SetUserData( parser, &depth ); - XML_SetElementHandler( parser, startElement_gtktalog_parse, endElement_gtktalog_parse ); - XML_SetCharacterDataHandler( class_link->parser, getCdata_gtktalog_parse ); - - QString document_string = ""; - QByteArray array; - if ( f.open( IO_ReadOnly ) ) { - array = f.readAll(); - } - int len = array.size(); - - if ( len > 0 ) { - if ( ! XML_Parse( parser, ( char* ) array.data(), len, done ) ) { - fprintf( stderr, - "%s at line %d\nbuffer: %s", - XML_ErrorString( XML_GetErrorCode( parser ) ), - XML_GetCurrentLineNumber( parser ) ); - import_ok = false; - } - document_string = ""; - } - - - XML_ParserFree( parser ); - // end parse - - } else { - import_ok = false; - } - - if ( import_ok ) { - - if ( !medialines->isEmpty() ) { - addNewMedia( medianame, medialines ); - medialines->clear(); - } - - delete medialines; - ( guislave->mainw->db->getRootNode() ) ->touchDB(); - guislave->panelsON(); - QApplication::restoreOverrideCursor(); - - QString msg; - msg += tr( "XML import was successful." ); - msg += "\n"; - if ( mediacount == 1 ) - msg += tr( "1 media" ) + ",\n"; - else - msg += QString().setNum( mediacount ) + " " + QString( tr( "media" ) ) + ",\n"; - - if ( dircount == 1 ) - msg += QString( tr( "1 directory:,\n" ) ); - else - msg += QString().setNum( dircount ) + " " + QString( tr( "directories" ) ) + ",\n"; - - if ( filecount == 1 ) - msg += tr( "1 File" ) + ",\n"; - else - msg += QString().setNum( filecount ) + " " + QString( tr( "files" ) ) + "\n"; - - msg += tr( "are imported." ); - - QMessageBox::information( 0, tr( "Import successful" ), msg ); - progress->hide(); - - } else { - QMessageBox::critical( 0, tr( "parse error" ), tr( "error during parsing" ) ); - QApplication::restoreOverrideCursor(); - } // file dialog canceled - +bool importGtktalogXml::startDocument() { + //cout << "startDocument: " << endl; + return TRUE; } -importGtktalogXml::~importGtktalogXml() { - if (progress != NULL) - delete progress ; +bool importGtktalogXml::startElement( const QString&, const QString&, + const QString & tag, + const QXmlAttributes& ) { + QString line = ""; + last_tag = tag; + + DEBUG_INFO_ENABLED = init_debug_info(); + //if(*DEBUG_INFO_ENABLED) + + tag_content=""; + + return TRUE; } -int importGtktalogXml::addNewItem( QString medianame, QString path, QString filename, float size, QDateTime datetime ) { - medialines->append( new lineObject( medianame, path, filename, size, datetime ) ); +bool importGtktalogXml::endElement( const QString&, const QString & tag, const QString& ) { + DEBUG_INFO_ENABLED = init_debug_info(); + if(*DEBUG_INFO_ENABLED) + cout << "importGtktalogXml::endElement: " << "tag: " << qPrintable(tag) << endl; + QString line = ""; + last_tag = tag; + + if(tag_content.length() > 1) { + if(tag_content.at(0)=='\n') + if(tag_content.at(1)=='\n') + tag_content = tag_content.mid(2,tag_content.length()-1); + else + tag_content = tag_content.mid(1,tag_content.length()-1); + + } + + if(*DEBUG_INFO_ENABLED) + cout << "importGtktalogXml::endElement: " << "tag content: \"" << qPrintable(tag_content) << "\"" << endl; + + if ( tag == "information" ) { + // found information + information = tag_content; + comment = tag_content; + } + else if ( tag == "name" ) { + catalogName = tag_content.replace('\n',""); + line += "catalogName: " + catalogName + "\n"; + } + + else if ( tag == "disc_name" ) { + // found disc name + new_medianame = tag_content.replace('\n',""); + } + + else if ( tag == "directory_name" ) { + // found directory + directory = tag_content.replace('\n',""); + if (!directory.isEmpty() && directory.at(0) == '/') + directory = directory.mid(1, directory.length()-1 ); + if (directory.length() > 1 && directory.at(directory.length()-1) == '/') + directory = directory.mid(0, directory.length()-2 ); + } + + else if ( tag == "file_name" ) { + // found file name + filename = tag_content.replace('\n',""); + } + else if ( tag == "file_size" ) { + // found file size + size = tag_content.toInt(); + } + + else if ( tag == "file_date" ) { + // found file size + datetimestring = tag_content.stripWhiteSpace(); + + int dayindex = datetimestring.find ( "/" ); + int monthindex = datetimestring.find ( "/", dayindex + 1 ); + int yearindex = datetimestring.find ( " ", monthindex + 1 ); + int hourindex = datetimestring.find ( ":", yearindex + 1 ); + int minuteindex = datetimestring.find ( ":", hourindex + 1 ); + + int day = ( datetimestring.mid ( 0, dayindex ) ).toInt(); + QString day_ = ( datetimestring.mid ( 0, dayindex ) ); + int month = ( datetimestring.mid ( dayindex + 1, monthindex - dayindex - 1 ) ).toInt(); + int year = ( datetimestring.mid ( monthindex + 1, hourindex - monthindex - 4 ) ).toInt(); + + int hour = ( datetimestring.mid ( yearindex + 1, minuteindex - hourindex - 1 ) ).toInt(); + int minute = ( datetimestring.mid ( hourindex + 1, minuteindex - 1 - hourindex ) ).toInt(); + + int second = ( datetimestring.mid ( minuteindex + 1, datetimestring.length() - 1 ) ).toInt(); + QDate date ( year, month, day ); + QTime time ( hour, minute, second ); + + datetime = QDateTime ( date, time ); + + } + + else if ( tag == "file_category" ) { + // found category + category = tag_content; + } + + else if ( tag == "description" ) { + // found description + description = tag_content; +// comment = tag_content; + } + + else if ( tag == "report" ) { + guislave->mainw->db->setName ( catalogName ); + } + else if ( tag == "directory" ) { + // found directory entry: for each file there is one + // just the start of each file +// if(*DEBUG_INFO_ENABLED) +// std::cout << "directory tag ended. " << std::endl; + line += "new_medianame: " + new_medianame + "\n"; + line += "directory: " + directory + "\n"; + line += "filename: " + filename + "\n"; + line += "Full path: " + directory+"/"+filename + "\n"; + line += "size: " + QString().setNum( size ) + "\n"; + line += "datetimestring: " + datetimestring + "\n"; + line += "category: " + category + "\n"; + line += "description: " + description + "\n"; + line += "information: " + information + "\n"; + + if(*DEBUG_INFO_ENABLED) + cerr << "line: " << qPrintable(line)<< endl; + + + //cerr << line << endl << endl << endl; + + if ( medianame == "" ) + medianame = new_medianame; + + if ( medianame != new_medianame ) { + // QMessageBox::warning (0, "info", medianame); + addNewMedia ( medianame, datetime, comment, category, medialines ); + medialines->clear(); + medianame = new_medianame; + addNewItem ( new_medianame, directory, filename, size, datetime, comment, category ); + + + } + else { + // QMessageBox::warning (0, "info", "new item"); + addNewItem ( new_medianame, directory, filename, size, datetime, comment, category ); + } + + new_medianame = ""; + directory = ""; + filename = ""; + size = 0; + category = ""; + description = ""; + information = ""; + datetimestring = ""; + tmpdirname = ""; + + linecount++; + progress->setValue ( linecount ); + } + + return TRUE; +} - // QMessageBox::critical( 0, "item", "new item!"); - return 0; +bool importGtktalogXml::characters ( const QString & ch ) { + tag_content += ch; + return TRUE; } -#if QT_VERSION >= 0x030100 // Qt 3.1.0 or better -int importGtktalogXml::addNewMedia( QString new_medianame, QPtrList < lineObject > *medialines ) { -#else -int importGtktalogXml::addNewMedia( QString new_medianame, QList < lineObject > *medialines ) { -#endif - // QMessageBox::critical(0, "media", new_medianame); +importGtktalogXml::importGtktalogXml ( GuiSlave * parent, QString filename, bool createdatabase ) { + this->guislave = parent; + bool import_ok = true; + last_tag = ""; + if ( !filename.isEmpty() ) { + + if ( parent->mainw->db == NULL ) + parent->newEvent(); + else { + if ( createdatabase ) { + while ( parent->closeEvent() != 0 ) + ; + parent->newEvent(); + } + } + + guislave = parent; + db = parent->mainw->db; + mediacount = 0; + filecount = 0; + dircount = 0; + refreshcount = 0; + linecount = 0; + lines = 0; + + + QApplication::setOverrideCursor ( Qt::waitCursor ); + guislave->panelsOFF(); + + QFile f ( filename ); + QTextStream t ( &f ); // use a text stream + + if ( f.open ( QIODevice::ReadOnly ) ) { + QString tmp = ""; + while ( !t.atEnd() ) { + tmp = t.readLine(); + if ( tmp.contains ( "" ) ) + lines++; + } + + f.close(); + } + + progress = new QProgressDialog( tr ( "Importing XML..." ), tr("Cancel"), 1, lines); + progress->setCancelButton ( 0 ); + + medialines = new QList < lineObject > (); + + line = ""; + fullpath = ""; + path = ""; + size = 0.0; + new_medianame = ""; + datetimestring = ""; + + QXmlInputSource source( f ); + QXmlSimpleReader reader; + reader.setContentHandler( this ); + reader.setErrorHandler(this); + reader.parse( source ); + } else { + import_ok = false; + } + + if ( import_ok ) { + + if ( !medialines->isEmpty() ) { + addNewMedia ( medianame, QDateTime().currentDateTime(), "", "", medialines ); + medialines->clear(); + } + + delete medialines; + ( guislave->mainw->db->getRootNode() ) ->touchDB(); + guislave->panelsON(); + QApplication::restoreOverrideCursor(); + + QString msg; + msg += tr ( "XML import was successful." ); + msg += "\n"; + if ( mediacount == 1 ) + msg += tr ( "1 media" ) + ",\n"; + else + msg += QString().setNum ( mediacount ) + " " + QString ( tr ( "media" ) ) + ",\n"; + + if ( dircount == 1 ) + msg += QString ( tr ( "1 directory:,\n" ) ); + else + msg += QString().setNum ( dircount ) + " " + QString ( tr ( "directories" ) ) + ",\n"; + + if ( filecount == 1 ) + msg += tr ( "1 File" ) + ",\n"; + else + msg += QString().setNum ( filecount ) + " " + QString ( tr ( "files" ) ) + "\n"; + + msg += tr ( "are imported." ); + + QMessageBox::information ( 0, tr ( "Import successful" ), msg ); + progress->hide(); + + } else { + QMessageBox::critical ( 0, tr ( "parse error" ), tr ( "error during parsing" ) ); + QApplication::restoreOverrideCursor(); + } // file dialog canceled + +} - if ( guislave->mainw->db == NULL ) - guislave->newEvent(); - if ( guislave->mainw->db == NULL ) - return 0; +importGtktalogXml::~importGtktalogXml() { + delete ( progress ); +} - /* create new media */ - Node *env, *curr; - curr = db->getMediaNode( ( char * ) ( ( const char * ) * new QString( new_medianame ) ) ); - if ( curr == NULL ) - curr = db->putMediaNode( ( char * ) ( ( const char * ) * new QString( new_medianame ) ), mediacount, ( ( char* ) ( ( const char * ) tr( "importuser" ) ) ), CD, "" ); +int importGtktalogXml::addNewItem ( QString medianame, QString path, QString filename, float size, QDateTime datetime, QString comment, QString category ) { + DEBUG_INFO_ENABLED = init_debug_info(); + lineObject l ( medianame, path, filename, size, datetime, comment, category ); + if (*DEBUG_INFO_ENABLED) + cerr << "importGtktalogXml::addNewItem: medianame: " << + qPrintable(medianame) << ", path: " << qPrintable(path) << ", filename: " << + qPrintable(filename) << ", size: " << size << ", date: " << + qPrintable(datetime.toString()) << ", comment: " << qPrintable(comment) << ", category: " << qPrintable(category )<< endl; + medialines->append ( l ); + return 0; - QString msg; - lineObject *obj; +} - for ( obj = medialines->first(); obj; obj = medialines->next() ) { +int importGtktalogXml::addNewMedia ( QString new_medianame, QDateTime media_modification, QString media_comment, QString media_category, QList < lineObject > *medialines ) { + if(*DEBUG_INFO_ENABLED) + cerr << "importGtktalogXml::addNewMedia media: " << qPrintable(new_medianame) << endl; + + if ( guislave->mainw->db == NULL ) + guislave->newEvent(); + if ( guislave->mainw->db == NULL ) + return 0; + + /* create new media */ + Node *env, *curr; + curr = db->getMediaNode ( new_medianame ); + if ( curr == NULL ) + curr = db->putMediaNode ( new_medianame , mediacount, tr ( "importuser" ), CD, media_comment, datetime, media_category ); + + QString msg; + lineObject obj("", "", "", 0.0, QDateTime(), "", ""); + + for ( int i = 0; i < medialines->size(); ++i ) { + obj = medialines->at(i); + env = curr; + + QString path = obj.getPath(); + + // QMessageBox::warning(0, "path", obj.getPath()); + int startindex = 0; + int dirindex = 0; + + + if ( !obj.getPath().isEmpty() ) { + path += "/"; + dirindex = path.find ( "/" ); + while ( dirindex != -1 ) { + + QString dir = path.mid ( startindex, dirindex - startindex ); + // QMessageBox::warning(0, "new dir", dir); + + curr = db->getDirectoryNode ( env, dir ); + if ( curr == NULL ) { + curr = db->putDirectoryNode ( env, dir , obj.getDateTime() , obj.getComment(), obj.getCategory() ); + dircount++; + + } + + startindex = dirindex + 1; + dirindex = path.find ( "/", dirindex + 1 ); + + env = curr; + + } + } + dirindex = -1; + + uint size = ( uint ) obj.getSize(); + float s; + int st; + + if ( size > ( uint ) ( 1024 * 1024 * 1024 * 2 ) ) { + s = ( double ) size / ( double ) ( 1024 * 1024 * 1024 ); + st = GBYTE; + } + if ( size > ( uint ) ( 1024 * 1024 ) ) { + s = ( double ) size / ( double ) ( 1024 * 1024 ); + st = MBYTE; + } + if ( size > ( uint ) 1024 ) { + s = ( double ) size / ( double ) 1024; + st = KBYTE; + } else { + s = size; + st = BYTE; + } + + env = curr; + curr = db->getFileNode ( env, obj.getFileName() ); + if ( curr == NULL ) + curr = db->putFileNode ( env, obj.getFileName() , obj.getDateTime() , obj.getComment() , st, s, obj.getCategory() ); + + curr = db->getMediaNode ( new_medianame ); + + filecount++; + } // over all items in list + + mediacount++; + refreshcount++; + if ( refreshcount == 10 ) { + guislave->mainw->app->processEvents(); + refreshcount = 0; + } - env = curr; + + return 0; +} - QString path = obj->getPath(); +bool importGtktalogXml::fatalError(const QXmlParseException &exception) +{ + std::cerr << "Parse error at line " << exception.lineNumber() + << ", " << "column " << exception.columnNumber() << ": " + << qPrintable(exception.message()) << std::endl; + return true; +} - // QMessageBox::warning(0, "path", obj->getPath()); - int startindex = 0; - int dirindex = 0; +// ------------------ WhereIsIt classic --------------------- +importWhereIsItXml* class_link_whereisit; +QString tmpdirname_whereisit; +int lines; +bool importWhereIsItXml::startDocument() { - if ( !obj->getPath().isEmpty() ) { - path += "/"; - dirindex = path.find( "/" ); - while ( dirindex != -1 ) { + //cout << "startDocument: " << endl; + return TRUE; +} - QString dir = path.mid( startindex, dirindex - startindex ); - // QMessageBox::warning(0, "new dir", dir); +bool importWhereIsItXml::startElement( const QString&, const QString&, + const QString & name2, + const QXmlAttributes & atts ) { + cout << "startElement: " << qPrintable(name2) << endl; + currentText = ""; - curr = db->getDirectoryNode( env, ( char * ) ( ( const char * ) * new QString( dir ) ) ); - if ( curr == NULL ) { - curr = db->putDirectoryNode( env, ( char * ) ( ( const char * ) * new QString( dir ) ), getTime( obj->getDateTime() ), "" ); - dircount++; + if (atts.length() > 0) { + cout << "atts: "; + for (int i=0;imainw->db->setName ( catalogName ); + std::cout << qPrintable(line) << endl; + } - uint size = ( uint ) obj->getSize(); - float s; - int st; + if ( name2 == "ITEM" ) { + std::cout << "Itemtype: " << qPrintable ( atts.value("ItemType") ) << endl; - if ( size > ( uint ) ( 1024 * 1024 * 1024 * 2 ) ) { - s = ( double ) size / ( double ) ( 1024 * 1024 * 1024 ); - st = GBYTE; - } - if ( size > ( uint ) ( 1024 * 1024 ) ) { - s = ( double ) size / ( double ) ( 1024 * 1024 ); - st = MBYTE; - } - if ( size > ( uint ) 1024 ) { - s = ( double ) size / ( double ) 1024; - st = KBYTE; - } else { - s = size; - st = BYTE; - } + if ( atts.value("ItemType") == "Disk" ) + last_type = "media"; - env = curr; - curr = db->getFileNode( env, ( ( char * ) ( ( const char* ) * new QString( obj->getFileName() ) ) ) ); - if ( curr == NULL ) - curr = db->putFileNode( env, ( ( char * ) ( ( const char * ) * new QString( obj->getFileName() ) ) ), getTime( obj->getDateTime() ), "" , st, s ); + if ( atts.value("ItemType") == "File" ) + last_type = "file"; - curr = db->getMediaNode( ( char * ) ( ( const char * ) * new QString( new_medianame ) ) ); + if ( atts.value("ItemType") == "Folder" ) + last_type = "folder"; - filecount++; - } // over all items in list + } - mediacount++; - refreshcount++; - if ( refreshcount == 10 ) { - guislave->mainw->app->processEvents(); - refreshcount = 0; - } - return 0; + return TRUE; } -// ------------------ WhereIsIt classic --------------------- +bool importWhereIsItXml::endElement( const QString&, const QString & tag, const QString& ) { + cout << "endElement: " << "tag: " << qPrintable(tag) << endl; -importWhereIsItXml* class_link_whereisit; + cout << "cdata: " << qPrintable(currentText) << endl; -QString tmpdirname_whereisit; -int lines; + if ( last_tag == "ITEM" ) { + // found ITEM entry: for each file there is one + // just the start of each file + } + + if ( last_tag == "DISK_NUM" ) { + number = currentText.toInt(); + // std::cout << "number: " << QString().setNum( number ) << endl; + + } + + if ( last_tag == "SIZE" ) { + if ( last_type == "file" ) { + currentText = currentText.remove( ' ' ); + currentText.replace ( QRegExp ( " " ),"" ); + // std::cout << "cleaned: " << currentText << endl; + size = currentText.toInt(); + } + } + + if ( last_tag == "DATE" ) { + + currentText.stripWhiteSpace(); + + int dayindex = currentText.find( "-",0 ); + int monthindex = currentText.find( "-", dayindex - 1 ); + int yearindex = currentText.find("-", monthindex+1); +// std::cout << "date: " << qPrintable(currentText) << endl; + +// std::cout << "daystr: " << qPrintable(currentText.mid ( 0, dayindex )) << ", dayindex: " << dayindex << endl; + int day = ( currentText.mid ( 0, dayindex ) ).toInt(); +// std::cout << "day: " << day << endl; + + QString month_str = currentText.mid ( monthindex+1, yearindex-monthindex-dayindex-3 ) ; +// std::cout << "month_str: " << qPrintable( month_str) << endl; + int month=1; + if ( month_str == "JAN" ) + month = 1; + else if ( month_str == "FEB" ) + month = 2; + else if ( month_str == "MAR" || month_str == "MRZ" ) + month = 3; + else if ( month_str == "APR" ) + month = 4; + else if ( month_str == "MAY" || month_str == "MAI" ) + month = 5; + else if ( month_str == "JUN" ) + month = 6; + else if ( month_str == "JUL" ) + month = 7; + else if ( month_str == "AUG" ) + month = 8; + else if ( month_str == "SEP" ) + month = 9; + else if ( month_str == "OCT" || month_str == "OKT" ) + month = 10; + else if ( month_str == "NOV" ) + month = 11; + else if ( month_str == "DEC" || month_str == "DEZ" ) + month = 12; + + // std::cout << "month: " << month << endl; + + int year = currentText.mid( yearindex+1).toInt(); + +// std::cout << "year : " << qPrintable( currentText.mid( yearindex+1)) << endl; + QDate date ( year, month, day ); + if ( !date.isValid() ) + date = QDate::currentDate (); + + datetime.setDate ( date ); + } + + if ( last_tag == "DISK_NAME" ) { + if ( last_type == "media" ) {} + } + + if ( last_tag == "DISK_TYPE" ) { + if ( last_type == "media" ) {} + } + + if ( last_tag == "PATH" ) { + if ( last_type == "folder" ) { +// std::cout << "getCdata_whereisit_parse(): PATH: \"" << qPrintable(currentText.replace("\n", "")) << "\"" << endl; + path = currentText.replace("\n", ""); + } + + if ( last_type == "file" ) { +// std::cout << "getCdata_whereisit_parse(): PATH: \"" << qPrintable(currentText.replace("\n", "")) << "\"" << endl; + path = currentText.replace("\n", ""); + } + + } + + if ( last_tag == "NAME" ) { + if ( last_type == "media" ) { + //std::cout << "getCdata_whereisit_parse(): NAME: \"" << currentText.replace("\n", "") << "\"" << endl; + new_medianame = currentText.replace("\n", ""); + } + + if ( last_type == "folder" ) { + // std::cout << "getCdata_whereisit_parse(): DATA: \"" << currentText.replace("\n", "") << "\"" << endl; + folder = currentText.replace("\n", ""); + } + + if ( last_type == "file" ) { + //std::cout << "getCdata_whereisit_parse(): DATA: \"" << currentText.replace("\n", "") << "\"" << endl; + file = currentText.replace("\n", ""); + } + } + + if ( last_tag == "TIME" ) { + // found file time + + datetimestring = currentText.stripWhiteSpace(); + + int hourindex = datetimestring.find ( ":", 1 ); + int minuteindex = datetimestring.find ( ":", hourindex + 1 ); + int hour = ( datetimestring.mid ( 0, minuteindex - hourindex - 1 ) ).toInt(); + int minute = ( datetimestring.mid ( hourindex + 1, minuteindex - 1 - hourindex ) ).toInt(); + int second = ( datetimestring.mid ( minuteindex + 1, datetimestring.length() - 1 ) ).toInt(); + + + QTime time ( hour, minute, second ); + + + datetime.setTime ( time ); + + } + + if ( last_tag == "DESC" ) { + // tmp + currentText.truncate ( 254 ); + + if ( last_type == "media" ) { + comment = currentText; + } + + if ( last_type == "folder" ) { + comment = currentText; + } + + if ( last_type == "file" ) { + comment = currentText; + } + } + + + + + QString name2 = tag; + + last_tag = ""; + QString line = ""; + + if ( name2 == "DATA" ) { + if ( last_type == "media" ) { + QString line = "\"" + new_medianame + "\"\n"; + if (*DEBUG_INFO_ENABLED) + std::cout << "media name found: " << qPrintable(line) << endl; + } + + if ( last_type == "folder" ) { + QString line = "\"" + folder + "\"\n"; + if (*DEBUG_INFO_ENABLED) + std::cout << "folder name found: " << qPrintable(line) << endl; + } + + if ( last_type == "file" ) { + QString line = "\"" + file + "\"\n"; + if (*DEBUG_INFO_ENABLED) + std::cout << "file name found: " << qPrintable(line) << endl; + } + } + + if ( name2 == "ITEM" ) { + if ( last_type == "media" ) { + std::cout << "add media: " << qPrintable(new_medianame) << endl; + // QMessageBox::warning (0, "info", medianame); + medianame = new_medianame; + //QDateTime datetime = datetime; + + if ( guislave->mainw->db == NULL ) { + guislave->newEvent(); + guislave->mainw->db->setDBName ( catalogName ); + } + + /* create new media */ + Node *env, *curr; + + env = db->getRootNode(); + curr = db->putMediaNode ( new_medianame , + number, QObject::tr ( "importuser" ) , CD, comment, datetime ); + + mediacount++; + linecount++; + //last_upper_container_node = db->getRootNode(); + last_type = "empty"; + // guislave->mainw->app->processEvents(); + } // media + + if ( last_type == "folder" ) { + + if ( db != NULL ) { + std::cout << "add folder: " << qPrintable(folder) << endl; + Node * env2, *curr2, *curr3; + env2 = db->getMediaNode ( number ) ; + + + if ( env2 != NULL ) { + curr3 = env2; + if ( path.length() > 1 ) { + // std::cout << "path: \"" << path << "\"" << endl; + + QString tmp_path = path; + QString tmp_path2 = ""; + /* int index = 1; + int index2 = 1;*/ + QStringList fields = QStringList::split ( '\\', tmp_path ); + + for ( QStringList::Iterator point = fields.begin(); point != fields.end(); ++point ) { + tmp_path2 = *point; + + // std::cout << "subpath: \"" << tmp_path2 << "\"" << endl; + + if ( tmp_path2 != "" ) { + curr2 = curr3; + curr3 = db->getDirectoryNode ( curr3, tmp_path2 ); + + if ( curr3 == NULL ) + curr3 = db->putDirectoryNode ( curr2, tmp_path2 , datetime , comment ); + comment=""; + } + } + + } + curr3 = db->putDirectoryNode ( curr3 , folder , datetime , comment ); + comment=""; + + + } + } + + dircount++; + linecount++; + last_type = "empty"; + // guislave->mainw->app->processEvents(); + } // folder + + if ( last_type == "file" ) { + + if ( db != NULL ) { + std::cout << "add file: " << qPrintable(file) << endl; + Node * env2, *curr2, *curr3; + float s; + int st; + + if ( size > ( uint ) ( 1024 * 1024 * 1024 * 2 ) ) { + s = ( double ) size / ( double ) ( 1024 * 1024 * 1024 ); + st = GBYTE; + } + if ( size > ( uint ) ( 1024 * 1024 ) ) { + s = ( double ) size / ( double ) ( 1024 * 1024 ); + st = MBYTE; + } + if ( size > ( uint ) 1024 ) { + s = ( double ) size / ( double ) 1024; + st = KBYTE; + } else { + s = size; + st = BYTE; + } + + env2 = db->getMediaNode ( number ) ; + + + if ( env2 != NULL ) { + curr3 = env2; + if ( path.length() > 1 ) { + // std::cout << "path: \"" << path << "\"" << endl; + + QString tmp_path = path; + QString tmp_path2 = ""; + /* int index = 1; + int index2 = 1;*/ + QStringList fields = QStringList::split ( '\\', tmp_path ); + + for ( QStringList::Iterator point = fields.begin(); point != fields.end(); ++point ) { + tmp_path2 = *point; + + // std::cout << "subpath: \"" << tmp_path2 << "\"" << endl; + + if ( tmp_path2 != "" ) { + curr2 = curr3; + curr3 = db->getDirectoryNode ( curr3, tmp_path2 ); + + if ( curr3 == NULL ) + curr3 = db->putDirectoryNode ( curr2, tmp_path2 , datetime , comment ); + comment=""; + } + } + + } + + std::cout << "file: \"" << qPrintable(file) << "\"" << endl; + + curr3 = db->putFileNode ( curr3 , file , datetime , comment , st, s ); + comment=""; + + + } + } + + filecount++; + linecount++; + last_type = "empty"; + setProgress(); + + + + } // file + + } // ITEM + currentText = ""; + return TRUE; +} +bool importWhereIsItXml::characters ( const QString & ch ) { + //xmldata = ch; -extern "C" { - static void startElement_whereisit_parse( void * userData, const char * name, const char **atts ) { - int * depthPtr = ( int * ) userData; - QString name2 = QString::fromLocal8Bit ( name ).stripWhiteSpace(); - QString line = ""; - class_link_whereisit->last_tag = name2; - - - if ( name2 == "REPORT" ) { - if ( ( QString( atts[ 0 ] ).stripWhiteSpace() ) == "Title" ) { - class_link_whereisit->catalogName = ( QString( atts[ 1 ] ).stripWhiteSpace() ); - line += "catalogName: \"" + class_link_whereisit->catalogName + "\"\n"; - class_link_whereisit->guislave->mainw->db->setName( class_link_whereisit->catalogName ); - // std::cout << line << endl; - } - } - - if ( name2 == "ITEM" ) { - //std::cout << "Itemtype: " << QString ( atts[ 1 ] ) << endl; - - if ( ( QString( atts[ 0 ] ).stripWhiteSpace() ) == "ItemType" ) { - if ( ( QString( atts[ 1 ] ).stripWhiteSpace() ) == "Disk" ) - class_link_whereisit->last_type = media; - - if ( ( QString( atts[ 1 ] ).stripWhiteSpace() ) == "File" ) - class_link_whereisit->last_type = file; - - if ( ( QString( atts[ 1 ] ).stripWhiteSpace() ) == "Folder" ) - class_link_whereisit->last_type = folder; - } - } - - *depthPtr += 1; - } - - static void endElement_whereisit_parse( void * userData, const char * name ) { - - QString name2 = QString::fromLocal8Bit ( name ).stripWhiteSpace(); - - class_link_whereisit->last_tag = ""; - QString line = ""; - - if ( name2 == "DATA" ) { - if ( class_link_whereisit->last_type == media ) { - QString line = "\"" + class_link_whereisit->new_medianame + "\"\n"; - // std::cout << "media name found: " << line << endl; - } - - if ( class_link_whereisit->last_type == folder ) { - QString line = "\"" + class_link_whereisit->folder + "\"\n"; - // std::cout << "folder name found: " << line << endl; - } - - if ( class_link_whereisit->last_type == file ) { - QString line = "\"" + class_link_whereisit->file + "\"\n"; - // std::cout << "file name found: " << line << endl; - } - } - - if ( name2 == "ITEM" ) { - if ( class_link_whereisit->last_type == media ) { - // std::cout << "add media: " << class_link_whereisit->new_medianame << endl; - // QMessageBox::warning (0, "info", class_link_whereisit->medianame); - class_link_whereisit->medianame = class_link_whereisit->new_medianame; - QString datetime = class_link_whereisit->datetime.toString ( /*Qt::TextDate*/ ); - - if ( class_link_whereisit->guislave->mainw->db == NULL ) { - class_link_whereisit->guislave->newEvent(); - class_link_whereisit->guislave->mainw->db->setDBName( ( char* ) ( ( const char* ) class_link_whereisit->catalogName ) ); - } - - /* create new media */ - Node *env, *curr; - - env = class_link_whereisit->db->getRootNode(); - curr = class_link_whereisit->db->putMediaNode( ( char * ) ( ( const char * ) * new QString( class_link_whereisit->new_medianame ) ), class_link_whereisit->number, ( ( char* ) ( ( const char * ) "importuser" ) ), CD, ( char * ) ( ( const char * ) * new QString( class_link_whereisit->comment ) ) ); - - class_link_whereisit->mediacount++; - class_link_whereisit->linecount++; - //class_link_whereisit->last_upper_container_node = class_link_whereisit->db->getRootNode(); - class_link_whereisit->last_type = empty; - // class_link_whereisit->guislave->mainw->app->processEvents(); - } // media - - if ( class_link_whereisit->last_type == folder ) { - - if ( class_link_whereisit->db != NULL ) { - // std::cout << "add folder: " << class_link_whereisit->folder << endl; - Node * env2, *curr2, *curr3; - int number = class_link_whereisit->number; - QString folder = class_link_whereisit->folder; - QString path = class_link_whereisit->path; - QString datetime = class_link_whereisit->datetime.toString( /*Qt::TextDate */); - // QString datetime = ""; - QString comment = class_link_whereisit->comment; - - env2 = class_link_whereisit->db->getMediaNode( number ) ; - - - if ( env2 != NULL ) { - curr3 = env2; - if ( path.length() > 1 ) { - // std::cout << "path: \"" << path << "\"" << endl; - - QString tmp_path = path; - QString tmp_path2 = ""; -/* int index = 1; - int index2 = 1;*/ - QStringList fields = QStringList::split( '\\', tmp_path ); - - for ( QStringList::Iterator point = fields.begin(); point != fields.end(); ++point ) { - tmp_path2 = *point; - - // std::cout << "subpath: \"" << tmp_path2 << "\"" << endl; - - if ( tmp_path2 != "" ) { - curr2 = curr3; - curr3 = class_link_whereisit->db->getDirectoryNode( curr3, ( char * ) ( ( const char * ) tmp_path2 ) ); - - if ( curr3 == NULL ) - curr3 = class_link_whereisit->db->putDirectoryNode( curr2, ( char * ) ( ( const char * ) tmp_path2 ), ( char * ) ( ( const char * ) QString ( datetime ) ) , ( char * ) ( ( const char * ) * new QString( class_link_whereisit->comment ) ) ); - class_link_whereisit->comment=""; - } - } - - } - curr3 = class_link_whereisit->db->putDirectoryNode( curr3 , ( char * ) ( ( const char * ) QString ( folder ) ), ( char * ) ( ( const char * ) QString ( datetime ) ) , ( char * ) ( ( const char * ) * new QString( class_link_whereisit->comment ) ) ); - class_link_whereisit->comment=""; - - - } - } - - class_link_whereisit->dircount++; - class_link_whereisit->linecount++; - class_link_whereisit->last_type = empty; - // class_link_whereisit->guislave->mainw->app->processEvents(); - } // folder - - if ( class_link_whereisit->last_type == file ) { - - if ( class_link_whereisit->db != NULL ) { - // std::cout << "add file: " << class_link_whereisit->file << endl; - Node * env2, *curr2, *curr3; - int number = class_link_whereisit->number; - QString file = class_link_whereisit->file; - QString path = class_link_whereisit->path; - - QString datetime = class_link_whereisit->datetime.toString( /*Qt::TextDate*/ ); - QString comment = class_link_whereisit->comment; - - //QString datetime = ""; - - - uint size = ( uint ) class_link_whereisit->size; - float s; - int st; - - if ( size > ( uint ) ( 1024 * 1024 * 1024 * 2 ) ) { - s = ( double ) size / ( double ) ( 1024 * 1024 * 1024 ); - st = GBYTE; - } - if ( size > ( uint ) ( 1024 * 1024 ) ) { - s = ( double ) size / ( double ) ( 1024 * 1024 ); - st = MBYTE; - } - if ( size > ( uint ) 1024 ) { - s = ( double ) size / ( double ) 1024; - st = KBYTE; - } else { - s = size; - st = BYTE; - } - - env2 = class_link_whereisit->db->getMediaNode( number ) ; - - - if ( env2 != NULL ) { - curr3 = env2; - if ( path.length() > 1 ) { - // std::cout << "path: \"" << path << "\"" << endl; - - QString tmp_path = path; - QString tmp_path2 = ""; -/* int index = 1; - int index2 = 1;*/ - QStringList fields = QStringList::split( '\\', tmp_path ); - - for ( QStringList::Iterator point = fields.begin(); point != fields.end(); ++point ) { - tmp_path2 = *point; - - // std::cout << "subpath: \"" << tmp_path2 << "\"" << endl; - - if ( tmp_path2 != "" ) { - curr2 = curr3; - curr3 = class_link_whereisit->db->getDirectoryNode( curr3, ( char * ) ( ( const char * ) tmp_path2 ) ); - - if ( curr3 == NULL ) - curr3 = class_link_whereisit->db->putDirectoryNode( curr2, ( char * ) ( ( const char * ) tmp_path2 ), ( char * ) ( ( const char * ) QString ( datetime ) ) , ( char * ) ( ( const char * ) QString ( comment ) ) ); - class_link_whereisit->comment=""; - } - } - - } - - // std::cout << "file: \"" << file << "\"" << endl; - - curr3 = class_link_whereisit->db->putFileNode( curr3 , ( char * ) ( ( const char * ) file ), ( char * ) ( ( const char * ) datetime ), ( char * ) ( ( const char * ) * new QString( class_link_whereisit->comment ) ), st, s ); - class_link_whereisit->comment=""; - - - } - } - - class_link_whereisit->filecount++; - class_link_whereisit->linecount++; - class_link_whereisit->last_type = empty; - class_link_whereisit->setProgress(); - - - - } // file - - } // ITEM - - - - int * depthPtr = ( int * ) userData; - *depthPtr -= 1; - - } - - static void getCdata_whereisit_parse( void * userData, const XML_Char * s, int len ) { - - //QString tmp2 = QCString( s, len + 1 ); - /* - for ( int i = 0;i < len;i++ ) { - tmp2 += s[ i ]; - } - */ - QString tmp2 = QString::fromUtf8( ( const char* ) ( s ), len ); - - QString name2 = tmp2.stripWhiteSpace(); - - if ( class_link_whereisit->last_tag == "ITEM" ) { - // found ITEM entry: for each file there is one - // just the start of each file - } - - if ( class_link_whereisit->last_tag == "DISK_NUM" ) { - class_link_whereisit->number = name2.toInt(); - // std::cout << "number: " << QString().setNum( class_link_whereisit->number ) << endl; - - } - - if ( class_link_whereisit->last_tag == "SIZE" ) { - if ( class_link_whereisit->last_type == file ) { - name2 = /*name2.remove( ' ' );*/ - name2.replace(QRegExp(" "),""); - // std::cout << "cleaned: " << name2 << endl; - class_link_whereisit->size = name2.toInt(); - } - } - - if ( class_link_whereisit->last_tag == "DATE" ) { - - name2.stripWhiteSpace(); - - /* - int dayindex = class_link_whereisit->datetimestring.find( "-" ); - int monthindex = class_link_whereisit->datetimestring.find( "-", dayindex + 1 ); - int yearindex = class_link_whereisit->datetimestring.length() - 1; - */ - // std::cout << "date: " << name2 << endl; - int day = ( name2.mid( 0, 2 ) ).toInt(); - // std::cout << "day: " << day << endl; - - QString month_str = name2.mid( 3, 3 ) ; - // std::cout << "month_str: " << month_str << endl; - int month=1; - if ( month_str == "JAN" ) - month = 1; - else if ( month_str == "FEB" ) - month = 2; - else if ( month_str == "MAR" || month_str == "MRZ" ) - month = 3; - else if ( month_str == "APR" ) - month = 4; - else if ( month_str == "MAY" || month_str == "MAI" ) - month = 5; - else if ( month_str == "JUN" ) - month = 6; - else if ( month_str == "JUL" ) - month = 7; - else if ( month_str == "AUG" ) - month = 8; - else if ( month_str == "SEP" ) - month = 9; - else if ( month_str == "OCT" || month_str == "OKT" ) - month = 10; - else if ( month_str == "NOV" ) - month = 11; - else if ( month_str == "DEC" || month_str == "DEZ" ) - month = 12; - - // std::cout << "month: " << month << endl; - - int year = ( name2.mid( 7, 2 ) ).toInt(); - - // std::cout << "year : " << name2.mid( 7, 4 ) << endl; - QDate date( year, month, day ); - if ( !date.isValid() ) - date = QDate::currentDate (); - - class_link_whereisit->datetime.setDate( date ); - } - - if ( class_link_whereisit->last_tag == "DISK_NAME" ) { - if ( class_link_whereisit->last_type == media ) {} - } - - if ( class_link_whereisit->last_tag == "DISK_TYPE" ) { - if ( class_link_whereisit->last_type == media ) {} - } - - if ( class_link_whereisit->last_tag == "PATH" ) { - if ( class_link_whereisit->last_type == folder ) { - // std::cout << "getCdata_whereisit_parse(): PATH: \"" << name2 << "\"" << endl; - class_link_whereisit->path = name2; - } - - if ( class_link_whereisit->last_type == file ) { - // std::cout << "getCdata_whereisit_parse(): PATH: \"" << name2 << "\"" << endl; - class_link_whereisit->path = name2; - } - - } - - if ( class_link_whereisit->last_tag == "NAME" ) { - if ( class_link_whereisit->last_type == media ) { - //std::cout << "getCdata_whereisit_parse(): NAME: \"" << name2 << "\"" << endl; - class_link_whereisit->new_medianame = name2; - } - - if ( class_link_whereisit->last_type == folder ) { - // std::cout << "getCdata_whereisit_parse(): DATA: \"" << name2 << "\"" << endl; - class_link_whereisit->folder = name2; - } - - if ( class_link_whereisit->last_type == file ) { - //std::cout << "getCdata_whereisit_parse(): DATA: \"" << name2 << "\"" << endl; - class_link_whereisit->file = name2; - } - } - - if ( class_link_whereisit->last_tag == "TIME" ) { - // found file time - - class_link_whereisit->datetimestring = name2.stripWhiteSpace(); - - int hourindex = class_link_whereisit->datetimestring.find( ":", 1 ); - int minuteindex = class_link_whereisit->datetimestring.find( ":", hourindex + 1 ); - int hour = ( class_link_whereisit->datetimestring.mid( 0, minuteindex - hourindex - 1 ) ).toInt(); - int minute = ( class_link_whereisit->datetimestring.mid( hourindex + 1, minuteindex - 1 - hourindex ) ).toInt(); - int second = ( class_link_whereisit->datetimestring.mid( minuteindex + 1, class_link_whereisit->datetimestring.length() - 1 ) ).toInt(); - - - QTime time ( hour, minute, second ); - - - class_link_whereisit->datetime.setTime( time ); - - } - - if ( class_link_whereisit->last_tag == "DESC" ) { - // tmp - name2.truncate ( 254 ); - - if ( class_link_whereisit->last_type == media ) { - class_link_whereisit->comment = name2; - } - - if ( class_link_whereisit->last_type == folder ) { - class_link_whereisit->comment = name2; - } - - if ( class_link_whereisit->last_type == file ) { - class_link_whereisit->comment = name2; - } - } - - class_link_whereisit->setProgress(); - - } // parse - -} - - - -importWhereIsItXml::importWhereIsItXml( GuiSlave * parent, QString filename, bool createdatabase ) { - progress = NULL; - this->guislave = parent; - bool import_ok = true; - last_tag = ""; - last_type = empty; - if ( !filename.isEmpty() ) { - - if ( parent->mainw->db == NULL ) - { - if(parent->newEvent() == -1 ) return; - } - else { - if ( createdatabase ) { - while ( parent->closeEvent() != 0 ) - ; - if(parent->newEvent() == -1 ) return; - } - } - - guislave = parent; - db = parent->mainw->db; - mediacount = 0; - filecount = 0; - dircount = 0; - refreshcount = 0; - linecount = 0; - lines = 0; - - - QApplication::setOverrideCursor( waitCursor ); - guislave->panelsOFF(); - - QFile f( filename ); - QTextStream t( &f ); // use a text stream - - int all_lines = 0; - - /*std::cout << "counting lines... ";*/ - register FILE *filehdl; - register int c; - if ( ( filehdl = fopen( filename, "r" ) ) == NULL ) - std::cerr << "Can't open " << filename << endl; - else { - // file_raise( f, FALSE ); - // statfile( f ); - while ( ( c = getc( filehdl ) ) != EOF ) { - if ( c == '\n' ) - all_lines++; - // guislave->mainw->app->processEvents(); - } - - fclose( filehdl ); - } - /*std::cout << "done.\nlines: " << QString().setNum( all_lines ) << endl;*/ - - - - - /* - if ( f.open( IO_ReadOnly ) ) { - QString tmp = ""; - while ( !t.eof() ) { - tmp = t.readLine(); - if ( tmp.contains( "mainw->app->processEvents(); - } - f.close(); - } - */ - - lines = all_lines; - - - // now we need a link to itself :( - class_link_whereisit = this; - - progress = new QProgressDialog( 0, "progressdialog", true ); - progress->setLabelText( tr( "Importing XML..." ) ); - progress->setCancelButton( 0 ); - progress->setTotalSteps( lines ); - progress->show(); - - // guislave->mainw->status->setText(tr("Importing xml...")); - - line = ""; - fullpath = ""; - path = ""; - size = 0.0; - new_medianame = ""; - datetimestring = ""; - comment = ""; - folder = ""; - file = ""; - last_upper_container_node = NULL; - number = 0; - filenumber = 0; - linecount = 0; - - - - - //XML_ParserCreate(ISO-8859-1); - - - //char buf[ BUFSIZ ]; - parser = XML_ParserCreate( "ISO-8859-1" ); - int done = 0; - int depth = 0; - XML_SetUserData( parser, &depth ); - XML_SetElementHandler( parser, startElement_whereisit_parse, endElement_whereisit_parse ); - XML_SetCharacterDataHandler( class_link_whereisit->parser, getCdata_whereisit_parse ); - - QString document_string = ""; - QByteArray array; - if ( f.open( IO_ReadOnly ) ) { // old - // if ( f_tmp.open( IO_ReadOnly ) ) { -// int lines = 0; - QProgressDialog progress ( 0, "Progressdialog", true ); - progress.setLabelText( tr( "Importing XML..." ) ); - progress.setCancelButton( 0 ); - progress.setTotalSteps( all_lines ); - progress.show(); - array = f.readAll(); // old - /* - QTextStream t( &f ); // use a text stream - while ( !t.eof() ) { - document_string.append(t.readLine()); - document_string.append('\n'); - guislave->mainw->app->processEvents(); - lines++; - progress.setProgress(lines); - - } - */ - // array = f_tmp.readAll(); - } - /*std::cout << "file read." << endl;*/ - - int len = array.size(); - - document_string = QString ( array ); - /*std::cout << "string created." << endl;*/ - //document_string.stripWhiteSpace(); - //std::cout << "string stripped." << endl; - for ( int i = 1;i < 32;i++ ) { - if ( i != 10 ) - /*document_string.remove( QChar( i ) );*/ - document_string.replace(QRegExp(QString(QChar( i ))),""); - /*std::cout << "remove char: " << QString().setNum( i ) << endl;*/ - } - - - /* - ^B ==> ACSII 02 - - - */ - /* - int fails = 0; - for ( int x = 1; x < 26;x++ ) { - if ( x != 10 ) { - int idx = array.find( x ); - while ( idx > 0 ) { - array[ idx ] = ' '; - fails++; - idx = array.find( x, idx + 1 ); - } - } - } - */ - - - - - if ( len > 0 ) { - if ( ! XML_Parse( parser, document_string.latin1(), document_string.length(), done ) ) { - // if ( ! XML_Parse( parser, ( char * ) array.data(), len, done ) ) { - fprintf( stderr, - "%s at line %d\nbuffer: %s", - XML_ErrorString( XML_GetErrorCode( parser ) ), - XML_GetCurrentLineNumber( parser ) ); - import_ok = false; - } - // document_string = ""; - } - - - XML_ParserFree( parser ); - // end parse - - - // f_tmp.close(); - // f_tmp.remove(); - - } else { - import_ok = false; - } - // guislave->mainw->status->setText(tr("Finished.")); - if ( import_ok ) { - - ( guislave->mainw->db->getRootNode() ) ->touchDB(); - guislave->panelsON(); - QApplication::restoreOverrideCursor(); - - QString msg; - msg += tr( "Importing XML from WhereIsIt was successful." ); - msg += "\n"; - if ( mediacount == 1 ) - msg += tr( "1 media" ) + ",\n"; - else - msg += QString().setNum( mediacount ) + " " + QString( tr( "media" ) ) + ",\n"; - - if ( dircount == 1 ) - msg += QString( tr( "1 directory:,\n" ) ); - else - msg += QString().setNum( dircount ) + " " + QString( tr( "directories" ) ) + ",\n"; - - if ( filecount == 1 ) - msg += tr( "1 File" ) + ",\n"; - else - msg += QString().setNum( filecount ) + " " + QString( tr( "files" ) ) + "\n"; - - msg += tr( "are imported." ); - - QMessageBox::information( 0, tr( "Import successful" ), msg ); - progress->hide(); - - } else { - QMessageBox::critical( 0, tr( "parse error" ), tr( "error during parsing" ) ); - QApplication::restoreOverrideCursor(); - } // file dialog canceled + QString name2 = ch; + currentText+= ch; + return true; +} + +importWhereIsItXml::importWhereIsItXml ( GuiSlave * parent, QString filename, bool createdatabase ) { + this->guislave = parent; + bool import_ok = true; + last_tag = ""; + last_type = "empty"; + if ( !filename.isEmpty() ) { + + if ( parent->mainw->db == NULL ) + parent->newEvent(); + else { + if ( createdatabase ) { + while ( parent->closeEvent() != 0 ) + ; + parent->newEvent(); + } + } + + guislave = parent; + db = parent->mainw->db; + mediacount = 0; + filecount = 0; + dircount = 0; + refreshcount = 0; + linecount = 0; + lines = 0; + + + QApplication::setOverrideCursor ( Qt::waitCursor ); + guislave->panelsOFF(); + + QFile f ( filename ); + QTextStream t ( &f ); // use a text stream + + int all_lines = 0; + + /*std::cout << "counting lines... ";*/ + register FILE *filehdl; + register int c; + if ( ( filehdl = fopen ( filename, "r" ) ) == NULL ) + std::cerr << "Can't open " << qPrintable ( filename ) << endl; + else { + // file_raise( f, FALSE ); + // statfile( f ); + while ( ( c = getc ( filehdl ) ) != EOF ) { + if ( c == '\n' ) + all_lines++; + // guislave->mainw->app->processEvents(); + } + + fclose ( filehdl ); + } + /*std::cout << "done.\nlines: " << QString().setNum( all_lines ) << endl;*/ + + + + + /* + if ( f.open( IO_ReadOnly ) ) { + QString tmp = ""; + while ( !t.eof() ) { + tmp = t.readLine(); + if ( tmp.contains( "mainw->app->processEvents(); + } + f.close(); + } + */ + + lines = all_lines; + + + // now we need a link to itself :( + class_link_whereisit = this; + progress = new QProgressDialog( tr ( "Importing XML..." ), tr("Cancel"), 1, lines); + progress->setCancelButton ( 0 ); + + // guislave->mainw->status->setText(tr("Importing xml...")); + + line = ""; + fullpath = ""; + path = ""; + size = 0.0; + new_medianame = ""; + datetimestring = ""; + comment = ""; + folder = ""; + file = ""; + last_upper_container_node = NULL; + number = 0; + filenumber = 0; + linecount = 0; + + QXmlInputSource source( f ); + QXmlSimpleReader reader; + reader.setContentHandler( this ); + reader.setErrorHandler(this); + reader.parse( source ); + progress->hide(); + } else { + import_ok = false; + } + // guislave->mainw->status->setText(tr("Finished.")); + if ( import_ok ) { + + ( guislave->mainw->db->getRootNode() ) ->touchDB(); + guislave->panelsON(); + QApplication::restoreOverrideCursor(); + + QString msg; + msg += tr ( "Importing XML from WhereIsIt was successful." ); + msg += "\n"; + if ( mediacount == 1 ) + msg += tr ( "1 media" ) + ",\n"; + else + msg += QString().setNum ( mediacount ) + " " + QString ( tr ( "media" ) ) + ",\n"; + + if ( dircount == 1 ) + msg += QString ( tr ( "1 directory:,\n" ) ); + else + msg += QString().setNum ( dircount ) + " " + QString ( tr ( "directories" ) ) + ",\n"; + + if ( filecount == 1 ) + msg += tr ( "1 File" ) + ",\n"; + else + msg += QString().setNum ( filecount ) + " " + QString ( tr ( "files" ) ) + "\n"; + + msg += tr ( "are imported." ); + + QMessageBox::information ( 0, tr ( "Import successful" ), msg ); + progress->hide(); + + } else { + QMessageBox::critical ( 0, tr ( "parse error" ), tr ( "error during parsing" ) ); + QApplication::restoreOverrideCursor(); + } // file dialog canceled } importWhereIsItXml::~importWhereIsItXml() { - if(progress != NULL) - delete progress; + delete ( progress ); } void importWhereIsItXml::setProgress() { - //std::cout << "setProgress(): " << linecount << "\n"; - int line = XML_GetCurrentLineNumber(parser); - progress->setProgress ( line ); - class_link_whereisit->guislave->mainw->app->processEvents(); + //std::cout << "setProgress(): " << linecount << "\n"; +// int line = XML_GetCurrentLineNumber ( parser ); +// progress->setProgress ( line ); + guislave->mainw->app->processEvents(); } +bool importWhereIsItXml::fatalError(const QXmlParseException &exception) +{ + std::cerr << "Parse error at line " << exception.lineNumber() + << ", " << "column " << exception.columnNumber() << ": " + << qPrintable(exception.message()) << std::endl; + return true; +} + + // -------- end ---------- -import::import( GuiSlave * parent ) { - bool createdatabase = false; - bool correctbadstyle = false; - QString separator = ";"; - QString filename; - int type = -1; - ImportDialog *d = new ImportDialog( 0 ); - d->exec(); - - if ( d->OK == 1 ) { - separator = d->separator; - filename = d->filename; - createdatabase = d->createdatabase; - correctbadstyle = d->correctbadstyle; - separator = d->separator; - type = d->type; - - delete d; - if ( type == 0 ) - importGtktalogCsv import0( parent, separator, filename, createdatabase, correctbadstyle ); - if ( type == 1 ) - importGtktalogXml import1( parent, filename, createdatabase ); - if ( type == 2 ) - importWhereIsItXml import2( parent, filename, createdatabase ); - else { - // cerr << "wrong type!!!" << endl; - } - } +import::import ( GuiSlave * parent ) { + bool createdatabase = false; + bool correctbadstyle = false; + QString separator = ";"; + QString filename; + int type = -1; + ImportDialog *d = new ImportDialog ( 0 ); + d->exec(); + + if ( d->OK == 1 ) { + separator = d->separator; + filename = d->filename; + createdatabase = d->newdatabase; + correctbadstyle = d->correctbadstyle; + separator = d->separator; + type = d->type; + + delete d; + + if ( type == 0 ) + importGtktalogCsv import ( parent, separator, filename, createdatabase, correctbadstyle ); + else if ( type == 1 ) + importGtktalogXml import ( parent, filename, createdatabase ); + else if ( type == 2 ) + importWhereIsItXml import ( parent, filename, createdatabase ); + else if ( type == 3 ) + importGtktalogCsv import ( parent, separator, filename, createdatabase, correctbadstyle, "kat-dece" ); + else if ( type == 4 ) + importGtktalogCsv import ( parent, separator, filename, createdatabase, correctbadstyle, "disclib" ); + else if ( type == 5 ) + importGtktalogCsv import ( parent, separator, filename, createdatabase, false, "visualcd" ); + else if ( type == 6 ) + importGtktalogCsv import ( parent, separator, filename, createdatabase, false, "vvv" ); + else if ( type == 7 ) + importGtktalogCsv import ( parent, separator, filename, createdatabase, false, "afo" ); + else if ( type == 8 ) + importGtktalogCsv import ( parent, separator, filename, createdatabase, false, "filearchivist" ); + else if ( type == 9 ) + importGtktalogCsv import ( parent, separator, filename, createdatabase, false, "advanceddiskcatalog" ); + else if ( type == 10 ) + importGtktalogCsv import ( parent, separator, filename, createdatabase, false, "whereisit" ); + else { + // cerr << "wrong type!!!" << endl; + } + } } +// kate: indent-mode cstyle; space-indent on; indent-width 0; diff -Nru cdcat-1.01b/src/importdialog.cpp cdcat-1.2/src/importdialog.cpp --- cdcat-1.01b/src/importdialog.cpp 2005-08-22 17:03:00.000000000 +0000 +++ cdcat-1.2/src/importdialog.cpp 2011-02-04 12:11:44.000000000 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** Hyper's CD Catalog A multiplatform qt and xml based catalog program - + Author : Christoph Thielecke License : GPL Copyright : (C) 2003 Christoph Thielecke @@ -15,106 +15,138 @@ #include #include #include -#include +#include #include #include +//Added by qt3to4: +#include #include #include #include -ImportDialog::ImportDialog( QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, fl ) { - if ( !name ) - setName( "ImportDialog" ); - // ImportDialogLayout = new QGridLayout( this, 1, 1, 11, 7, "ImportDialogLayout" ); - - setSizeGripEnabled(true); - - layout4 = new QGridLayout( this, 10, 6, 10, 10, "layout4" ); - - info_lab = new QLabel( this, "info_lab" ); - info_lab->setText( "info" ); - layout4->addMultiCellWidget( info_lab, 0, 0, 0, 4 ); - - filename_lab = new QLabel( this, "filename_lab" ); - layout4->addWidget( filename_lab, 1, 1 ); - - filename_lineedit = new QLineEdit( this, "filename_lineedit" ); - layout4->addMultiCellWidget( filename_lineedit, 1, 1, 2, 4 ); - - buttonGetFile = new QPushButton( this, "buttonGetFile" ); - layout4->addWidget( buttonGetFile, 1,5); - - importButtonBox = new QButtonGroup(1,Qt::Horizontal,tr("Type"),this,"import_button_box"); - importButtonBox->setRadioButtonExclusive(true); - importTypeCsv = new QRadioButton( "&CSV",importButtonBox, "importTypeCsv"); - importTypeGtktalogXml = new QRadioButton( "Gtktalog &XML",importButtonBox ,"importTypeGtktalogXml"); - importTypeWhereisitXml = new QRadioButton("&WhereIsIt XML (classic)", importButtonBox, "importTypeWhereisitXml"); - - layout4->addMultiCellWidget( importButtonBox, 2, 5, 1, 4 ); - - newdatabase = new QCheckBox( this, "newdatabase" ); - newdatabase->setText( tr( "Create new Database" ) ); - layout4->addMultiCellWidget( newdatabase, 6, 6, 1, 5 ); - - separator_lab = new QLabel( this, "separator_lab" ); - layout4->addMultiCellWidget( separator_lab, 7, 7, 1, 3 ); - separator_lineedit = new QLineEdit( this, "separator_lineedit" ); - separator_lineedit->setMinimumSize( QSize( 0, 0 ) ); - separator_lineedit->setMaximumSize( QSize( 20, 32767 ) ); - separator_lineedit->setMaxLength ( 1 ); - layout4->addMultiCellWidget( separator_lineedit, 7, 7, 4, 4 ); - - - correctbadstyle = new QCheckBox( this, "correctbadstyle" ); - correctbadstyle->setText( tr( "Correct bad style from gtktalog export" ) ); - layout4->addMultiCellWidget( correctbadstyle, 8, 8, 1, 5 ); - - buttonOK = new QPushButton( this, "buttonOK" ); - buttonOK->setDefault( true ); - buttonOK-> setMinimumWidth( 100 ); - layout4->addWidget( buttonOK, 9, 2 ); - - buttonCancel = new QPushButton( this, "buttonCancel" ); - buttonCancel-> setMinimumWidth( 100 ); - layout4->addMultiCellWidget( buttonCancel, 9, 9, 3, 3 ); - /* - QSpacerItem* spacer = new QSpacerItem( 181, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout4->addMultiCell( spacer, 5, 5, 0, 2 ); - - QSpacerItem* spacer_2 = new QSpacerItem( 291, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout4->addMultiCell( spacer_2, 3, 3, 2, 5 ); - */ - importTypeWhereisitXml->setChecked(true); - correctbadstyle->setEnabled(false); - separator_lab->setEnabled(false); - separator_lineedit->setEnabled(false); - - - // ImportDialogLayout->addLayout( layout4, 0, 0 ); - - languageChange(); - resize( QSize( 450, 350 ).expandedTo( minimumSizeHint() ) ); - - setMinimumSize(minimumSizeHint()); - - //this->sizeHint(); - //setFixedSize( size() ); - - //clearWState( WState_Polished ); - - connect( buttonOK, SIGNAL( clicked() ), this, SLOT( bOk() ) ); - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( bCan() ) ); - connect( buttonGetFile, SIGNAL( clicked() ), this, SLOT( getFileName() ) ); - connect( importTypeCsv, SIGNAL( clicked() ), this, SLOT( typeChanged() ) ); - connect( importTypeGtktalogXml, SIGNAL( clicked() ), this, SLOT( typeChanged() ) ); - connect( importTypeWhereisitXml, SIGNAL( clicked() ), this, SLOT( typeChanged() ) ); - separator_lab->setEnabled(false); - separator_lineedit->setEnabled(false); - - - filename_lineedit->setText(""); +ImportDialog::ImportDialog ( QWidget* parent, const char* name, bool modal, Qt::WFlags fl ) + : QDialog ( parent, name, modal, fl ) { + if ( !name ) + setName ( "ImportDialog" ); + // ImportDialogLayout = new QGridLayout( this, 1, 1, 11, 7, "ImportDialogLayout" ); + + setSizeGripEnabled ( true ); + + layout4 = new Q3GridLayout ( this, 10, 6, 10, 10, "layout4" ); + + info_lab = new QLabel ( this, "info_lab" ); + info_lab->setText ( "info" ); + layout4->addMultiCellWidget ( info_lab, 0, 0, 0, 4 ); + + filename_lab = new QLabel ( this, "filename_lab" ); + layout4->addWidget ( filename_lab, 1, 1 ); + + filename_lineedit = new QLineEdit ( this, "filename_lineedit" ); + layout4->addMultiCellWidget ( filename_lineedit, 1, 1, 2, 4 ); + + buttonGetFile = new QPushButton ( this, "buttonGetFile" ); + layout4->addWidget ( buttonGetFile, 1,5 ); + + importButtonBox = new Q3ButtonGroup ( 1,Qt::Horizontal,tr ( "Type" ),this,"import_button_box" ); + importButtonBox->setRadioButtonExclusive ( true ); + importTypeCsvGtktalog = new QRadioButton ( "&Gtktalog CSV",importButtonBox, "importTypeCsvGtktalog" ); + importTypeCsvKatCeDe = new QRadioButton ( "&Kat-DeCe CSV",importButtonBox, "importTypeCsvKatCeDe" ); + importTypeCsvDisclib = new QRadioButton ( "&Disclib CSV",importButtonBox, "importTypeCsvDisclib" ); + importTypeCsvVisualcd = new QRadioButton ( "&VisualCD CSV",importButtonBox, "importTypeCsvVisualcd" ); + importTypeCsvVvv = new QRadioButton ( "&VVV CSV",importButtonBox, "importTypeCsvVvv" ); + importTypeCsvAdvancedFileOrganizer = new QRadioButton ( "&Advanced file organizer CSV",importButtonBox, "importTypeCsvAdvancedFileOrganizer" ); + importTypeCsvFileArchivist = new QRadioButton ( "&File Archivist",importButtonBox, "importTypeCsvFileArchivist" ); + importTypeCsvAdvancedDiskCatalog = new QRadioButton ( "&Advanced Disk Catalog CSV",importButtonBox, "importTypeCsvAdvancedDiskCatalog" ); + importTypeCsvWhereisit = new QRadioButton ( "&Advanced Disk Catalog CSV",importButtonBox, "importTypeCsvWhereisit" ); + importTypeGtktalogXml = new QRadioButton ( "Gtktalog &XML",importButtonBox ,"importTypeGtktalogXml" ); + importTypeWhereisitXml = new QRadioButton ( "&WhereIsIt XML (classic)", importButtonBox, "importTypeWhereisitXml" ); + + layout4->addMultiCellWidget ( importButtonBox, 2, 5, 1, 4 ); + + newdatabase = new QCheckBox ( this, "newdatabase" ); + newdatabase->setText ( tr ( "Create new Database" ) ); + layout4->addMultiCellWidget ( newdatabase, 6, 6, 1, 5 ); + + separator_lab = new QLabel ( this, "separator_lab" ); + layout4->addMultiCellWidget ( separator_lab, 7, 7, 1, 3 ); + separator_lineedit = new QLineEdit ( this, "separator_lineedit" ); + separator_lineedit->setMinimumSize ( QSize ( 0, 0 ) ); + separator_lineedit->setMaximumSize ( QSize ( 20, 32767 ) ); + separator_lineedit->setMaxLength ( 1 ); + layout4->addMultiCellWidget ( separator_lineedit, 7, 7, 4, 4 ); + + + correctbadstyle = new QCheckBox ( this, "correctbadstyle" ); + correctbadstyle->setText ( tr ( "Correct bad style from gtktalog export" ) ); + layout4->addMultiCellWidget ( correctbadstyle, 8, 8, 1, 5 ); + + buttonOK = new QPushButton ( this, "buttonOK" ); + buttonOK->setDefault ( true ); + buttonOK-> setMinimumWidth ( 100 ); + layout4->addWidget ( buttonOK, 9, 2 ); + + buttonCancel = new QPushButton ( this, "buttonCancel" ); + buttonCancel-> setMinimumWidth ( 100 ); + layout4->addMultiCellWidget ( buttonCancel, 9, 9, 3, 3 ); + /* + QSpacerItem* spacer = new QSpacerItem( 181, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout4->addMultiCell( spacer, 5, 5, 0, 2 ); + + QSpacerItem* spacer_2 = new QSpacerItem( 291, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); + layout4->addMultiCell( spacer_2, 3, 3, 2, 5 ); + */ + importTypeWhereisitXml->setChecked ( true ); + correctbadstyle->setEnabled ( false ); + separator_lab->setEnabled ( false ); + separator_lineedit->setEnabled ( false ); + + + // ImportDialogLayout->addLayout( layout4, 0, 0 ); + + languageChange(); + resize ( QSize ( 500, 350 ).expandedTo ( minimumSizeHint() ) ); + + setMinimumSize ( minimumSizeHint() ); + + //this->sizeHint(); + //setFixedSize( size() ); + + //clearWState( WState_Polished ); + + connect ( buttonOK, SIGNAL ( clicked() ), this, SLOT ( bOk() ) ); + connect ( buttonCancel, SIGNAL ( clicked() ), this, SLOT ( bCan() ) ); + connect ( buttonGetFile, SIGNAL ( clicked() ), this, SLOT ( getFileName() ) ); + connect ( importTypeCsvGtktalog, SIGNAL ( clicked() ), this, SLOT ( typeChanged() ) ); + connect ( importTypeCsvKatCeDe, SIGNAL ( clicked() ), this, SLOT ( typeChanged() ) ); + connect ( importTypeCsvDisclib, SIGNAL ( clicked() ), this, SLOT ( typeChanged() ) ); + connect ( importTypeCsvVisualcd, SIGNAL ( clicked() ), this, SLOT ( typeChanged() ) ); + connect ( importTypeCsvVvv, SIGNAL ( clicked() ), this, SLOT ( typeChanged() ) ); + connect ( importTypeCsvAdvancedFileOrganizer, SIGNAL ( clicked() ), this, SLOT ( typeChanged() ) ); + connect ( importTypeCsvFileArchivist, SIGNAL ( clicked() ), this, SLOT ( typeChanged() ) ); + connect ( importTypeCsvAdvancedDiskCatalog, SIGNAL ( clicked() ), this, SLOT ( typeChanged() ) ); + connect ( importTypeCsvWhereisit, SIGNAL ( clicked() ), this, SLOT ( typeChanged() ) ); + connect ( importTypeGtktalogXml, SIGNAL ( clicked() ), this, SLOT ( typeChanged() ) ); + connect ( importTypeWhereisitXml, SIGNAL ( clicked() ), this, SLOT ( typeChanged() ) ); + separator_lab->setEnabled ( false ); + separator_lineedit->setEnabled ( false ); + + + + // tmp + /* + importTypeCsv->setChecked(true); + separator_lab->setEnabled(true); + separator_lineedit->setEnabled(true); + //filename_lineedit->setText("c:\\devel\\mp3s.csv"); + filename_lineedit->setText("/data3/res3/musikvideo.csv"); + separator_lineedit->setText("*"); + correctbadstyle->setEnabled(true); + correctbadstyle->setChecked(true); + */ + // tmp + //filename_lineedit->setText("/home/crissi/compile/cvs/CdCat-0.98pre_whereisit_xml_import/sample-export.xml"); + filename_lineedit->setText ( "" ); } @@ -122,7 +154,7 @@ * Destroys the object and frees any allocated resources */ ImportDialog::~ImportDialog() { - //no need to delete child widgets, Qt does it for us! + //no need to delete child widgets, Qt does it for us! } /* @@ -130,111 +162,201 @@ * language. */ void ImportDialog::languageChange() { - setCaption( tr( "Import CSV file" ) ); - filename_lab->setText( tr( "File:" ) ); + setCaption ( tr ( "Import CSV file" ) ); + filename_lab->setText ( tr ( "File:" ) ); + + separator_lineedit->setText ( ";" ); + separator_lab->setText ( tr ( "Separator:" ) ); + QToolTip::add + ( separator_lineedit , tr ( "This is the separator in dataline\nSEPARATORSEPARATOR