diff --git a/src/add-ons/tracker/Jamfile b/src/add-ons/tracker/Jamfile index a3e56477ef..04d8c78a2b 100644 --- a/src/add-ons/tracker/Jamfile +++ b/src/add-ons/tracker/Jamfile @@ -1,6 +1,7 @@ SubDir HAIKU_TOP src add-ons tracker ; SubInclude HAIKU_TOP src add-ons tracker filetype ; +SubInclude HAIKU_TOP src add-ons tracker iconvader ; SubInclude HAIKU_TOP src add-ons tracker opentargetfolder ; SubInclude HAIKU_TOP src add-ons tracker mark_as ; SubInclude HAIKU_TOP src add-ons tracker zipomatic ; diff --git a/src/add-ons/tracker/iconvader/IconVader.cpp b/src/add-ons/tracker/iconvader/IconVader.cpp new file mode 100644 index 0000000000..67251c6ba6 --- /dev/null +++ b/src/add-ons/tracker/iconvader/IconVader.cpp @@ -0,0 +1,152 @@ +/* + * Copyright 2006, Axel Dörfler, axeld@pinc-software.de. All rights reserved. + * Distributed under the terms of the MIT License. + */ + + +#include +#include +#include +#include + +#include "PoseView.h" + +static void Error(BView *view, status_t status, bool unlock=false) +{ + BAlert *alert; + if (view && unlock) + view->UnlockLooper(); + BString s(strerror(status)); + alert = new BAlert("Error", s.String(), "Ok"); + alert->Go(); +} + +/*! + \brief Tracker add-on entry +*/ +extern "C" void +process_refs(entry_ref dir, BMessage* refs, void* /*reserved*/) +{ + status_t status; + BAlert *alert; + BMessenger msgr; + BPoseView *view = NULL; + BMessage poseViewBackup; + BMessage poseViewColumnBackup; + uint32 poseViewModeBackup; + BString windowTitleBackup; + + refs->PrintToStream(); + + status = refs->FindMessenger("TrackerViewToken", &msgr); + if (status < B_OK) { + Error(view, status); + return; + } + + status = B_ERROR; + if (!msgr.LockTarget()) { + Error(view, status); + return; + } + + status = B_BAD_HANDLER; + view = dynamic_cast(msgr.Target(NULL)); + if (!view) { + Error(view, status); + return; + } + if (dynamic_cast(view->Looper()) == NULL) { + Error(view, status, true); + return; + } + + windowTitleBackup = view->Window()->Title(); + + view->SaveColumnState(poseViewColumnBackup); + view->SaveState(poseViewBackup); + view->SetDragEnabled(false); + view->SetSelectionRectEnabled(false); + view->SetPoseEditing(false); + poseViewModeBackup = view->ViewMode(); + + + view->SetViewMode(kIconMode); + + view->ShowBarberPole(); + + + view->UnlockLooper(); + + + + //alert = new BAlert("Error", "Plop", "Ok"); + //alert->Go(); + + + int32 score = 0; + int32 count = 300; + while (count--) { + status = B_ERROR; + if (!msgr.LockTarget()) { + Error(view, status); + return; + } + + BPose *pose; + for (int32 i = 0; (pose = view->PoseAtIndex(i)); i++) { + if (pose->IsSelected()) { + score++; + pose->Select(false); + } + BPoint location = pose->Location(); + location.x += ((rand() % 20) - 10); + location.y += ((rand() % 20) - 10); + pose->SetLocation(location); + } + + view->CheckPoseVisibility(); + + view->Invalidate(); + + BString str("Score: "); + str << score; + view->Window()->SetTitle(str.String()); + + view->UnlockLooper(); + snooze(100000); + } + + + status = B_ERROR; + if (!msgr.LockTarget()) { + Error(view, status); + return; + } + + /* + status = B_BAD_HANDLER; + view = dynamic_cast(msgr.Target(NULL)); + if (!view) + goto err1; + */ + + view->HideBarberPole(); + view->SetViewMode(poseViewModeBackup); + view->RestoreState(poseViewBackup); + view->RestoreColumnState(poseViewColumnBackup); + + view->Window()->SetTitle(windowTitleBackup.String()); + +/* + BMessage('_RRC') { + TrackerViewToken = BMessenger(port=32004, team=591, target=direct:0x131) +} */ + + + //be_roster->Launch("application/x-vnd.haiku-filetypes", refs); + + view->UnlockLooper(); + return; + +} diff --git a/src/add-ons/tracker/iconvader/IconVader.rdef b/src/add-ons/tracker/iconvader/IconVader.rdef new file mode 100644 index 0000000000..cf6d1ccf24 --- /dev/null +++ b/src/add-ons/tracker/iconvader/IconVader.rdef @@ -0,0 +1,111 @@ +/* + * FileType.rdef + */ + +// The FileType add-on has no app signature as it is no standalone application +//resource app_signature "application/x-vnd.Haiku-FileType"; +//resource app_flags B_MULTIPLE_LAUNCH; + +resource file_types message { + "types" = "application/x-vnd.Be-directory" +}; + +resource app_version { + major = 1, + middle = 0, + minor = 0, + + /* 0 = development 1 = alpha 2 = beta + 3 = gamma 4 = golden master 5 = final */ + variety = 0, + + internal = 1, + + short_info = "IconVader", + long_info = "IconVader, Copyright 2009 Haiku Inc." +}; + +#ifdef HAIKU_TARGET_PLATFORM_HAIKU + +resource vector_icon { + $"6E6369660C0500040169020006023CADF43D104EBF02CA3EA2224BF02046648D" + $"00FFDB97FFFCAF29020006023A6496BA3F153EBCDD3EEA91492CB5C09D5100FF" + $"F7EAFEFDD17B020006023AB3673751B2BC59783FD2D74C71F846F85900C85805" + $"FFF06306020106033AC71C0000000000003AB6DB4A6A0045300000F2F2F2FFBC" + $"A184AB7D7A7A02000602388A280000000000004000004AF00000000000C85804" + $"FFDC952F020006023B37D13A0397BB629E3CB4584A3EDF4A1E9400C6D7F5FF6B" + $"94DD020006023C71E33A0C78BA15E43C7D214B02AA49855700E3EDFFFF9EC2FF" + $"0200060239AB92381275BA365C3BEB2A4B2A844A9A5F00003CB0FF2C62D00200" + $"06033AC7B03884E3B903663B534D48B61F4958AE00FCFFDC7FF8F0BCFFF4DC8A" + $"020006023A7061B88A6E3B1AAE3CFAD946AC4F48C79100000000FFA9A06E130A" + $"053E303E4452445232452C0A043E303E444C444C360A063E304C3652324630C3" + $"BBB893452C0A044C44524452324C36020448224B22452242284225422B482E45" + $"2E4B2E4E284E2B4E250605E2024A60505A5660506054604C584A0A0346305232" + $"4A2E0A063A443A564A5E56535642463C0A043A443A564A5E4A4B0A043A444A4B" + $"5642463C0A044A4B4A5E565356420604AE342D223822382C4632524247080233" + $"33273B080231BCA9B6AFBEB40802BC10BCA92B40080237BDE8B821C0BF0802BC" + $"1DBF66B8A0C1D708023BBFF3304808023B44BA12C42E100A010105000A00010B" + $"1815FF01178400040A00010B18001501178500040A0A010B000A0B070E0D0C10" + $"0F12111815FF01178100040A0001001001178400040A020101000A030102000A" + $"040103000A060106000A0001041001178400040A050104000A00010710011784" + $"00040A070108000A09010A000A08010900" +}; + +#else // HAIKU_TARGET_PLATFORM_HAIKU + +resource large_icon array { + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02020008FFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041B17110802FFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041B3F3F1B150800FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF021B3F3F1B150A00FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFF003F00FFFFFFFFFF04151B1B17110800FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFF003FFD00FFFFFFFFFF02081515150A0800FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFF003FFDFDFD00FFFFFF00F9000A0A080A00FFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFF003FFDFDFDFD00FFFF003FF97D000000007D0000FFFFFFFFFFFFFF" + $"FFFFFFFF003FFDFDFDFDFDFD00FF00F93F3F7D7D7D7D7D7DF900FFFFFFFFFFFF" + $"FFFFFF003FFDFDFDFD62FDFD00FF00F9F9F93F3FF9F9F9F97D00FFFFFFFFFFFF" + $"FFFF003FFEFDFDFD62FDFDFDFA0000F9F9F9F9F93F3FF97D7D00FFFFFFFFFFFF" + $"FF003FFEFEFDFD89FDFDFDFDFA0000F9F9F9F9F9F9F97D7D7D00FFFFFFFFFFFF" + $"003FFEFEFEFDB0FD62FD62FDFAFA00F9F9F9F9F9F9F97D7D7D00FFFFFFFFFFFF" + $"FF003FFEFEB0FD89FD62FD62FAFA00F9F9F9F9F9F9F97D7D7D00FFFFFFFFFFFF" + $"FF003FFEB0FDB0FDB0FD62FAFAFAFA00F9F90000F9F97D7D7D00FFFFFFFFFFFF" + $"FFFF003FFEB0FDB0FDB0FDFAFA62FA000000606000007D7D7D00FFFFFFFFFFFF" + $"FFFF003FFEFDFDFD89FD62FD62FAFAFA00606060606000007D00FFFFFFFFFFFF" + $"FFFFFF003FFDFDB0FD89FD62FAFAFA0060606060606060600000FFFFFFFFFFFF" + $"FFFFFF003FFDFDFDB0FD89FAFAFA00606060606060606060606000FFFFFFFFFF" + $"FFFFFFFF003FFDB0FDB0FDFDFA006060606060606060606060D5000EFFFFFFFF" + $"FFFFFFFF003FFDFDB0FDFDFD003F60606060606060606060D5D5000EFFFFFFFF" + $"FFFFFFFFFF003FFDFDFDFDFD00AC3F3F60606060606060D5D5D5000E0E0EFFFF" + $"FFFFFFFFFF003FFDFDFDFDFD00ACACAC3F3F60606060D5D5D5D5000E0E0E0E0E" + $"FFFFFFFFFFFF003FFDFDFD0000ACACACACAC3F3F60D5D5D5D5D5000E0E0E0E0E" + $"FFFFFFFFFFFF003FFDFD000E00ACACACACACACACD5D5D5D5D5D5000E0E0E0EFF" + $"FFFFFFFFFFFFFF00FD000E0E00ACACACACACACACD5D5D5D5D5D5000E0E0EFFFF" + $"FFFFFFFFFFFFFFFF000E0E0E00ACACACACACACACD5D5D5D5D5000E0E0EFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFF00ACACACACACACACD5D5D5D5000E0E0EFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFF0000ACACACACACD5D5D5000E0E0EFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000ACACACD5D5000E0E0EFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000ACD5000E0E0EFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000E0E0EFFFFFFFFFFFFFFFF" +}; + +resource mini_icon array { + $"FFFFFFFFFFFFFFFF020200FFFFFFFFFF" + $"FFFFFFFFFFFFFF04151E1500FFFFFFFF" + $"FFFFFFFFFFFFFF021D1E1C00FFFFFFFF" + $"FFFFFFFF00FFFF00151B1600FFFFFFFF" + $"FFFFFF003F0000FA0000000000FFFFFF" + $"FFFF003FFD0000F9F9FAFAFAFA00FFFF" + $"FF003FFEFDFD00F9F9F9F97D7D00FFFF" + $"003F62FE89FD00F9F9F900007D00FFFF" + $"FF003FB0FD89FA00F90060600000FFFF" + $"FF003FFEB0FD620000606060606000FF" + $"FFFF003FFD89FA003F3F606060D500FF" + $"FFFF003FFDFDFA00ACAC3F3FD5D5000E" + $"FFFFFF003FFD0000ACACACACD5D5000E" + $"FFFFFF003F000E00ACACACACD5D5000E" + $"FFFFFFFF000E0E0E0000ACACD5000E0E" + $"FFFFFFFFFFFFFFFFFFFF0000000E0EFF" +}; + +#endif // HAIKU_TARGET_PLATFORM_HAIKU + diff --git a/src/add-ons/tracker/iconvader/Jamfile b/src/add-ons/tracker/iconvader/Jamfile new file mode 100644 index 0000000000..8eaaaff80b --- /dev/null +++ b/src/add-ons/tracker/iconvader/Jamfile @@ -0,0 +1,22 @@ +SubDir HAIKU_TOP src add-ons tracker iconvader ; + +SetSubDirSupportedPlatformsBeOSCompatible ; + +if $(TARGET_PLATFORM_HAIKU_COMPATIBLE) { + UseHeaders [ FDirName $(HAIKU_TOP) src kits tracker ] : true ; + UsePrivateHeaders tracker ; +} else { + # private, for testing... + SubDirC++Flags -I/work/zeta/src/cebit/os/zeta/system/lib/tracker ; + SubDirC++Flags -I/work/zeta/src/cebit/headers_p/tracker ; + SubDirC++Flags -I/work/zeta/src/cebit/headers_p ; +} + +# TODO: does not seem to work: +AddResources IconVader : IconVader.rdef ; + +Addon IconVader : + IconVader.cpp + + : be tracker +;