Ticket #6374: TrackerInitialState.cpp.patch
File TrackerInitialState.cpp.patch, 29.1 KB (added by , 14 years ago) |
---|
-
src/kits/tracker/TrackerInitialState.cpp
26 26 used in advertising or otherwise to promote the sale, use or other dealings in 27 27 this Software without prior written authorization from Be Incorporated. 28 28 29 Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks 30 of Be Incorporated in the United States and other countries. Other brand product 31 names are registered trademarks or trademarks of their respective holders. 29 Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered 30 trademarks of Be Incorporated in the United States and other countries. 31 Other brand product names are registered trademarks or trademarks of 32 their respective holders. 32 33 All rights reserved. 33 34 */ 34 35 … … 46 47 #include <Path.h> 47 48 #include <Screen.h> 48 49 #include <VolumeRoster.h> 50 #include <InterfaceDefs.h> 49 51 50 52 #include <fs_attr.h> 51 53 #include <fs_index.h> … … 61 63 #include "FSUtils.h" 62 64 #include "QueryContainerWindow.h" 63 65 #include "Tracker.h" 66 #include "ViewState.h" 67 #include "AutoDeleter.h" 64 68 69 65 70 enum { 66 71 kForceLargeIcon = 0x1, 67 72 kForceMiniIcon = 0x2, … … 71 76 }; 72 77 73 78 74 const char *kAttrName = "META:name";75 const char *kAttrCompany = "META:company";76 const char *kAttrAddress = "META:address";77 const char *kAttrCity = "META:city";78 const char *kAttrState = "META:state";79 const char *kAttrZip = "META:zip";80 const char *kAttrCountry = "META:country";81 const char *kAttrHomePhone = "META:hphone";82 const char *kAttrWorkPhone = "META:wphone";83 const char *kAttrFax = "META:fax";84 const char *kAttrEmail = "META:email";85 const char *kAttrURL = "META:url";86 const char *kAttrGroup = "META:group";87 const char *kAttrNickname = "META:nickname";79 const char* kAttrName = "META:name"; 80 const char* kAttrCompany = "META:company"; 81 const char* kAttrAddress = "META:address"; 82 const char* kAttrCity = "META:city"; 83 const char* kAttrState = "META:state"; 84 const char* kAttrZip = "META:zip"; 85 const char* kAttrCountry = "META:country"; 86 const char* kAttrHomePhone = "META:hphone"; 87 const char* kAttrWorkPhone = "META:wphone"; 88 const char* kAttrFax = "META:fax"; 89 const char* kAttrEmail = "META:email"; 90 const char* kAttrURL = "META:url"; 91 const char* kAttrGroup = "META:group"; 92 const char* kAttrNickname = "META:nickname"; 88 93 89 const char *kNetPositiveSignature = "application/x-vnd.Be-NPOS";90 const char *kPeopleSignature = "application/x-vnd.Be-PEPL";94 const char* kNetPositiveSignature = "application/x-vnd.Be-NPOS"; 95 const char* kPeopleSignature = "application/x-vnd.Be-PEPL"; 91 96 92 97 // the following templates are in big endian and we rely on the Tracker 93 98 // translation support to swap them on little endian machines 94 99 // 95 // in case there is an attribute (B_RECT_TYPE) that gets swapped by the media (unzip,96 // file system endianness swapping, etc., the correct endianness for the97 // correct machine has to be used here100 // in case there is an attribute (B_RECT_TYPE) that gets swapped 101 // by the media (unzip, file system endianness swapping, etc., 102 // the correct endianness for the correct machine has to be used here 98 103 99 104 const BRect kDefaultFrame(40, 40, 500, 350); 100 105 const int32 kDefaultQueryTemplateCount = 3; 101 106 102 const AttributeTemplate kDefaultQueryTemplate[] = 103 /* /boot/home/config/settings/Tracker/DefaultQueryTemplates/application_octet-stream */ 107 char* fDefaultQueryColumnsBits = NULL; 108 char* fBookmarkQueryColumnsBits = NULL; 109 char* fPersonQueryColumnsBits = NULL; 110 char* fEmailQueryColumnsBits = NULL; 111 112 struct ColumnData 104 113 { 105 { /* default frame */ 114 const char* title; 115 float offset; 116 float width; 117 alignment align; 118 const char* attributeName; 119 uint32 attrType; 120 bool statField; 121 bool editable; 122 }; 123 124 static 125 AttributeTemplate defaultQueryTemplate[] = 126 /* /boot/home/config/settings/Tracker/DefaultQueryTemplates/ 127 application_octet-stream */ 128 { 129 { /* default frame */ 106 130 kAttrWindowFrame, 107 131 B_RECT_TYPE, 108 132 16, 109 (const char *)&kDefaultFrame133 (const char* )&kDefaultFrame 110 134 }, 111 { 135 { /* attr: _trk/viewstate */ 112 136 kAttrViewState_be, 113 137 B_RAW_TYPE, 114 138 49, … … 116 140 "\000\000\000\000\000\000\000\000\000\000\357\323\335RCSTR\000\000\000" 117 141 "\000\000\000\000\000\000" 118 142 }, 119 { 143 { /* attr: _trk/columns */ 120 144 kAttrColumns_be, 121 145 B_RAW_TYPE, 122 146 223, 123 "O\362VR\000\000\000\025\000\000\000\004Name\000B \000\000C\021\000" 124 "\000\000\000\000\000\000\000\000\012_stat/name\000\357\323\335RCST" 125 "R\001\001O\362VR\000\000\000\025\000\000\000\004Path\000CH\000\000" 126 "Ca\000\000\000\000\000\000\000\000\000\011_trk/path\000\357_\174RC" 127 "STR\000\000O\362VR\000\000\000\025\000\000\000\004Size\000C\334\000" 128 "\000B$\000\000\000\000\000\001\000\000\000\012_stat/size\000\317\317" 129 "\306TOFFT\001\000O\362VR\000\000\000\025\000\000\000\010Modified\000" 130 "C\370\000\000C\012\000\000\000\000\000\000\000\000\000\016_stat/mo" 131 "dified\000]KmETIME\001\000" 147 NULL 132 148 } 133 149 }; 134 150 135 const AttributeTemplate kBookmarkQueryTemplate[] = 136 /* /boot/home/config/settings/Tracker/DefaultQueryTemplates/application_x-vnd.Be-bookmark */ 151 #undef B_TRANSLATE_CONTEXT 152 #define B_TRANSLATE_CONTEXT "DefaultQueryColumns" 153 154 static 155 ColumnData defaultQueryColumns[]= 137 156 { 138 { /* default frame */ 157 { 158 B_TRANSLATE_MARK("Name"), 159 40, 160 145, 161 B_ALIGN_LEFT, 162 "_stat/name", 163 B_STRING_TYPE, 164 true, 165 true 166 }, 167 { 168 B_TRANSLATE_MARK("Path"), 169 200, 170 225, 171 B_ALIGN_LEFT, 172 "_trk/path", 173 B_STRING_TYPE, 174 false, 175 false 176 }, 177 { 178 B_TRANSLATE_MARK("Size"), 179 440, 180 41, 181 B_ALIGN_LEFT, 182 "_stat/size", 183 B_OFF_T_TYPE, 184 true, 185 false 186 }, 187 { 188 B_TRANSLATE_MARK("Modified"), 189 496, 190 138, 191 B_ALIGN_LEFT, 192 " _stat/modified", 193 B_TIME_TYPE, 194 true, 195 false 196 } 197 198 }; 199 200 static 201 AttributeTemplate bookmarkQueryTemplate[] = 202 /* /boot/home/config/settings/Tracker/DefaultQueryTemplates/ 203 application_x-vnd.Be-bookmark */ 204 { 205 { /* default frame */ 139 206 kAttrWindowFrame, 140 207 B_RECT_TYPE, 141 208 16, 142 (const char *)&kDefaultFrame209 (const char* )&kDefaultFrame 143 210 }, 144 { 211 { /* attr: _trk/viewstate */ 145 212 kAttrViewState_be, 146 213 B_RAW_TYPE, 147 214 49, … … 149 216 "\000\000\000\000\000\000\000\000\000\000w\373\175RCSTR\000\000\000" 150 217 "\000\000\000\000\000\000" 151 218 }, 152 { 219 { /* attr: _trk/columns */ 153 220 kAttrColumns_be, 154 221 B_RAW_TYPE, 155 222 163, 156 "O\362VR\000\000\000\025\000\000\000\005Title\000B \000\000C+\000\000" 157 "\000\000\000\000\000\000\000\012META:title\000w\373\175RCSTR\000\001" 158 "O\362VR\000\000\000\025\000\000\000\003URL\000Cb\000\000C\217\200\000" 159 "\000\000\000\000\000\000\000\010META:url\000\343[TRCSTR\000\001O\362" 160 "VR\000\000\000\025\000\000\000\010Keywords\000D\004\000\000C\002\000" 161 "\000\000\000\000\000\000\000\000\011META:keyw\000\333\363\334RCSTR" 162 "\000\001" 223 NULL 163 224 } 164 225 }; 165 226 166 const AttributeTemplate kPersonQueryTemplate[] = 167 /* /boot/home/config/settings/Tracker/DefaultQueryTemplates/application_x-vnd.Be-bookmark */ 227 #undef B_TRANSLATE_CONTEXT 228 #define B_TRANSLATE_CONTEXT "bookmarkQueryColumns" 229 230 static 231 ColumnData bookmarkQueryColumns[]= 168 232 { 169 { /* default frame */ 233 { 234 B_TRANSLATE_MARK("Title"), 235 40, 236 171, 237 B_ALIGN_LEFT, 238 "META:title", 239 B_STRING_TYPE, 240 false, 241 true 242 }, 243 { 244 B_TRANSLATE_MARK("URL"), 245 226, 246 287, 247 B_ALIGN_LEFT, 248 kAttrURL, 249 B_STRING_TYPE, 250 false, 251 true 252 }, 253 { 254 B_TRANSLATE_MARK("Keywords"), 255 528, 256 130, 257 B_ALIGN_LEFT, 258 "META:keyw", 259 B_STRING_TYPE, 260 false, 261 true 262 } 263 }; 264 265 static 266 AttributeTemplate personQueryTemplate[] = 267 /* /boot/home/config/settings/Tracker/DefaultQueryTemplates/ 268 application_x-vnd.Be-bookmark */ 269 { 270 { /* default frame */ 170 271 kAttrWindowFrame, 171 272 B_RECT_TYPE, 172 273 16, 173 (const char *)&kDefaultFrame274 (const char* )&kDefaultFrame 174 275 }, 175 { 276 { /* attr: _trk/viewstate */ 176 277 kAttrViewState_be, 177 278 B_RAW_TYPE, 178 279 49, … … 180 281 "\000\000\000\000\000\000\000\000\000\000\357\323\335RCSTR\000\000\000" 181 282 "\000\000\000\000\000\000" 182 283 }, 183 { 284 { /* attr: _trk/columns */ 184 285 kAttrColumns_be, 185 286 B_RAW_TYPE, 186 287 230, 187 "O\362VR\000\000\000\025\000\000\000\004Name\000B \000\000B\346\000" 188 "\000\000\000\000\000\000\000\000\012_stat/name\000\357\323\335RCST" 189 "R\001\001O\362VR\000\000\000\025\000\000\000\012Work Phone\000C*\000" 190 "\000B\264\000\000\000\000\000\000\000\000\000\013META:wphone\000C_" 191 "uRCSTR\000\001O\362VR\000\000\000\025\000\000\000\006E-mail\000C\211" 192 "\200\000B\272\000\000\000\000\000\000\000\000\000\012META:email\000" 193 "sW\337RCSTR\000\001O\362VR\000\000\000\025\000\000\000\007Company\000" 194 "C\277\200\000B\360\000\000\000\000\000\000\000\000\000\014META:com" 195 "pany\000CS\174RCSTR\000\001" 288 NULL 196 289 }, 197 290 }; 198 291 199 const AttributeTemplate kEmailQueryTemplate[] = 292 #undef B_TRANSLATE_CONTEXT 293 #define B_TRANSLATE_CONTEXT "parsonQueryColumns" 294 295 static 296 ColumnData parsonQueryColumns[]= 297 { 298 { 299 B_TRANSLATE_MARK("Name"), 300 40, 301 115, 302 B_ALIGN_LEFT, 303 "_stat/name", 304 B_STRING_TYPE, 305 true, 306 true 307 }, 308 { 309 B_TRANSLATE_MARK("Work Phone"), 310 170, 311 90, 312 B_ALIGN_LEFT, 313 kAttrWorkPhone, 314 B_STRING_TYPE, 315 false, 316 true 317 }, 318 { 319 B_TRANSLATE_MARK("E-mail"), 320 275, 321 93, 322 B_ALIGN_LEFT, 323 kAttrEmail, 324 B_STRING_TYPE, 325 false, 326 true 327 }, 328 { 329 B_TRANSLATE_MARK("Company"), 330 383, 331 120, 332 B_ALIGN_LEFT, 333 kAttrCompany, 334 B_STRING_TYPE, 335 false, 336 true 337 } 338 }; 339 340 static 341 AttributeTemplate emailQueryTemplate[] = 200 342 /* /boot/home/config/settings/Tracker/DefaultQueryTemplates/text_x-email */ 201 343 { 202 { 344 { /* default frame */ 203 345 kAttrWindowFrame, 204 346 B_RECT_TYPE, 205 347 16, 206 (const char *)&kDefaultFrame348 (const char* )&kDefaultFrame 207 349 }, 208 { 350 { /* attr: _trk/viewstate */ 209 351 kAttrViewState_be, 210 352 B_RAW_TYPE, 211 353 49, … … 213 355 "\000\000\000\000\000\000\000\000\000\000\366_\377ETIME\000\000\000" 214 356 "\000\000\000\000\000\000" 215 357 }, 216 { 358 { /* attr: _trk/columns */ 217 359 kAttrColumns_be, 218 360 B_RAW_TYPE, 219 361 222, 220 "O\362VR\000\000\000\025\000\000\000\007Subject\000B \000\000B\334\000" 221 "\000\000\000\000\000\000\000\000\014MAIL:subject\000\343\173\337RC" 222 "STR\000\000O\362VR\000\000\000\025\000\000\000\004From\000C%\000\000" 223 "C\031\000\000\000\000\000\000\000\000\000\011MAIL:from\000\317s_RC" 224 "STR\000\000O\362VR\000\000\000\025\000\000\000\004When\000C\246\200" 225 "\000B\360\000\000\000\000\000\000\000\000\000\011MAIL:when\000\366" 226 "_\377ETIME\000\000O\362VR\000\000\000\025\000\000\000\006Status\000" 227 "C\352\000\000BH\000\000\000\000\000\001\000\000\000\013MAIL:status" 228 "\000G\363\134RCSTR\000\001" 362 NULL 229 363 }, 230 364 }; 231 365 366 #undef B_TRANSLATE_CONTEXT 367 #define B_TRANSLATE_CONTEXT "emailQueryColumns" 232 368 369 static 370 ColumnData emailQueryColumns[]= 371 { 372 { 373 B_TRANSLATE_MARK("Subject"), 374 40, 375 110, 376 B_ALIGN_LEFT, 377 "MAIL:subject", 378 B_STRING_TYPE, 379 false, 380 false 381 }, 382 { 383 B_TRANSLATE_MARK("From"), 384 165, 385 153, 386 B_ALIGN_LEFT, 387 "MAIL:from", 388 B_STRING_TYPE, 389 false, 390 false 391 }, 392 { 393 B_TRANSLATE_MARK("When"), 394 333, 395 120, 396 B_ALIGN_LEFT, 397 "MAIL:when", 398 B_STRING_TYPE, 399 false, 400 false 401 }, 402 { 403 B_TRANSLATE_MARK("Status"), 404 468, 405 50, 406 B_ALIGN_RIGHT, 407 "MAIL:status", 408 B_STRING_TYPE, 409 false, 410 true 411 } 412 }; 413 414 233 415 namespace BPrivate { 234 416 235 417 class ExtraAttributeLazyInstaller { 236 418 public: 237 ExtraAttributeLazyInstaller(const char *type);419 ExtraAttributeLazyInstaller(const char* type); 238 420 ~ExtraAttributeLazyInstaller(); 239 421 240 bool AddExtraAttribute(const char *publicName, const char *name,422 bool AddExtraAttribute(const char* publicName, const char* name, 241 423 uint32 type, bool viewable, bool editable, float width, 242 424 int32 alignment, bool extra); 243 425 … … 251 433 } // namespace BPrivate 252 434 253 435 254 ExtraAttributeLazyInstaller::ExtraAttributeLazyInstaller(const char *type)436 ExtraAttributeLazyInstaller::ExtraAttributeLazyInstaller(const char* type) 255 437 : 256 438 fMimeType(type), 257 439 fDirty(false) … … 269 451 270 452 271 453 bool 272 ExtraAttributeLazyInstaller::AddExtraAttribute(const char *publicName,273 const char *name, uint32 type, bool viewable, bool editable, float width,454 ExtraAttributeLazyInstaller::AddExtraAttribute(const char* publicName, 455 const char* name, uint32 type, bool viewable, bool editable, float width, 274 456 int32 alignment, bool extra) 275 457 { 276 458 for (int32 index = 0; ; index++) { 277 const char *oldPublicName;459 const char* oldPublicName; 278 460 if (fExtraAttrs.FindString("attr:public_name", index, &oldPublicName) != B_OK) 279 461 break; 280 462 … … 299 481 300 482 // #pragma mark - 301 483 484 #undef B_TRANSLATE_CONTEXT 485 #define B_TRANSLATE_CONTEXT "TrackerInitialState" 302 486 487 303 488 static void 304 489 InstallTemporaryBackgroundImages(BNode* node, BMessage* message) 305 490 { … … 317 502 318 503 319 504 static void 320 AddTemporaryBackgroundImages(BMessage *message, const char *imagePath,505 AddTemporaryBackgroundImages(BMessage* message, const char* imagePath, 321 506 BackgroundImage::Mode mode, BPoint offset, uint32 workspaces, 322 507 bool textWidgetOutlines) 323 508 { … … 336 521 #define B_TRANSLATE_CONTEXT "TrackerInitialState" 337 522 338 523 bool 339 TTracker::InstallMimeIfNeeded(const char *type, int32 bitsID,340 const char *shortDescription, const char *longDescription,341 const char *preferredAppSignature, uint32 forceMask)524 TTracker::InstallMimeIfNeeded(const char* type, int32 bitsID, 525 const char* shortDescription, const char* longDescription, 526 const char* preferredAppSignature, uint32 forceMask) 342 527 { 343 528 // used by InitMimeTypes - checks if a metamime of a given <type> is 344 529 // installed and if it has all the specified attributes; if not, the … … 405 590 void 406 591 TTracker::InitMimeTypes() 407 592 { 408 InstallMimeIfNeeded(B_APP_MIME_TYPE, R_AppIcon, "Be Application",409 "Generic Be application executable.", kTrackerSignature);593 InstallMimeIfNeeded(B_APP_MIME_TYPE, R_AppIcon, B_TRANSLATE("Be Application"), 594 B_TRANSLATE("Generic Be application executable."), kTrackerSignature); 410 595 411 596 InstallMimeIfNeeded(B_FILE_MIMETYPE, R_FileIcon, 412 "Generic file", "Generic document file.", kTrackerSignature); 597 B_TRANSLATE("Generic file"), B_TRANSLATE("Generic document file."), 598 kTrackerSignature); 413 599 414 600 InstallMimeIfNeeded(B_VOLUME_MIMETYPE, R_HardDiskIcon, 415 "Be Volume", "Disk volume.", kTrackerSignature);601 B_TRANSLATE("Be Volume"), B_TRANSLATE("Disk volume."), kTrackerSignature); 416 602 417 603 InstallMimeIfNeeded(B_QUERY_MIMETYPE, R_QueryDirIcon, 418 "Be Query", "Query to locate items on disks.", kTrackerSignature); 604 B_TRANSLATE("Be Query"), B_TRANSLATE("Query to locate items on disks."), 605 kTrackerSignature); 419 606 420 607 InstallMimeIfNeeded(B_QUERY_TEMPLATE_MIMETYPE, R_QueryTemplateIcon, 421 "Be Query template", "", kTrackerSignature); 608 B_TRANSLATE("Be Query template"), "", 609 kTrackerSignature); 422 610 423 InstallMimeIfNeeded(B_LINK_MIMETYPE, R_BrokenLinkIcon, "Symbolic link", 424 "Link to another item in the file system.", kTrackerSignature); 611 InstallMimeIfNeeded(B_LINK_MIMETYPE, R_BrokenLinkIcon, 612 B_TRANSLATE("Symbolic link"), 613 B_TRANSLATE("Link to another item in the file system."), 614 kTrackerSignature); 425 615 426 616 InstallMimeIfNeeded(B_ROOT_MIMETYPE, R_RootIcon, 427 "Be Root", "File system root.", kTrackerSignature); 617 B_TRANSLATE("Be Root"), B_TRANSLATE("File system root."), 618 kTrackerSignature); 428 619 429 620 InstallMimeIfNeeded(B_BOOKMARK_MIMETYPE, R_BookmarkIcon, 430 "Bookmark", "Bookmark for a web page.", kNetPositiveSignature); 621 B_TRANSLATE("Bookmark"), B_TRANSLATE("Bookmark for a web page."), 622 kNetPositiveSignature); 431 623 432 624 { 433 625 // install a couple of extra fields for bookmark 434 626 435 627 ExtraAttributeLazyInstaller installer(B_BOOKMARK_MIMETYPE); 436 installer.AddExtraAttribute( "URL", "META:url", B_STRING_TYPE, true, true,437 170, B_ALIGN_LEFT, false);438 installer.AddExtraAttribute( "Keywords", "META:keyw", B_STRING_TYPE, true, true,439 130, B_ALIGN_LEFT, false);440 installer.AddExtraAttribute( "Title", "META:title", B_STRING_TYPE, true, true,441 130, B_ALIGN_LEFT, false);628 installer.AddExtraAttribute(B_TRANSLATE("URL"), kAttrURL, 629 B_STRING_TYPE, true, true, 170, B_ALIGN_LEFT, false); 630 installer.AddExtraAttribute(B_TRANSLATE("Keywords"), "META:keyw", 631 B_STRING_TYPE, true, true, 130, B_ALIGN_LEFT, false); 632 installer.AddExtraAttribute(B_TRANSLATE("Title"), "META:title", 633 B_STRING_TYPE, true, true, 130, B_ALIGN_LEFT, false); 442 634 } 443 635 444 636 InstallMimeIfNeeded(B_PERSON_MIMETYPE, R_PersonIcon, 445 "Person", "Contact information for a person.", kPeopleSignature); 637 B_TRANSLATE("Person"), B_TRANSLATE("Contact information for a person."), 638 kPeopleSignature); 446 639 447 640 { 448 641 ExtraAttributeLazyInstaller installer(B_PERSON_MIMETYPE); 449 installer.AddExtraAttribute( "Contact name", kAttrName, B_STRING_TYPE, true, true,450 120, B_ALIGN_LEFT, false);451 installer.AddExtraAttribute( "Company", kAttrCompany, B_STRING_TYPE, true, true,452 120, B_ALIGN_LEFT, false);453 installer.AddExtraAttribute( "Address", kAttrAddress, B_STRING_TYPE, true, true,454 120, B_ALIGN_LEFT, false);455 installer.AddExtraAttribute( "City", kAttrCity, B_STRING_TYPE, true, true,456 90, B_ALIGN_LEFT, false);457 installer.AddExtraAttribute( "State", kAttrState, B_STRING_TYPE, true, true,458 50, B_ALIGN_LEFT, false);459 installer.AddExtraAttribute( "Zip", kAttrZip, B_STRING_TYPE, true, true,460 50, B_ALIGN_LEFT, false);461 installer.AddExtraAttribute( "Country", kAttrCountry, B_STRING_TYPE, true, true,462 120, B_ALIGN_LEFT, false);463 installer.AddExtraAttribute( "E-mail", kAttrEmail, B_STRING_TYPE, true, true,464 120, B_ALIGN_LEFT, false);465 installer.AddExtraAttribute( "Home phone", kAttrHomePhone, B_STRING_TYPE, true, true,466 90, B_ALIGN_LEFT, false);467 installer.AddExtraAttribute( "Work phone", kAttrWorkPhone, B_STRING_TYPE, true, true,468 90, B_ALIGN_LEFT, false);469 installer.AddExtraAttribute( "Fax", kAttrFax, B_STRING_TYPE, true, true,470 90, B_ALIGN_LEFT, false);471 installer.AddExtraAttribute( "URL", kAttrURL, B_STRING_TYPE, true, true,472 120, B_ALIGN_LEFT, false);473 installer.AddExtraAttribute( "Group", kAttrGroup, B_STRING_TYPE, true, true,474 120, B_ALIGN_LEFT, false);475 installer.AddExtraAttribute( "Nickname", kAttrNickname, B_STRING_TYPE, true, true,476 120, B_ALIGN_LEFT, false);642 installer.AddExtraAttribute(B_TRANSLATE("Contact name"), kAttrName, 643 B_STRING_TYPE, true, true, 120, B_ALIGN_LEFT, false); 644 installer.AddExtraAttribute(B_TRANSLATE("Company"), kAttrCompany, 645 B_STRING_TYPE, true, true, 120, B_ALIGN_LEFT, false); 646 installer.AddExtraAttribute(B_TRANSLATE("Address"), kAttrAddress, 647 B_STRING_TYPE, true, true, 120, B_ALIGN_LEFT, false); 648 installer.AddExtraAttribute(B_TRANSLATE("City"), kAttrCity, 649 B_STRING_TYPE, true, true, 90, B_ALIGN_LEFT, false); 650 installer.AddExtraAttribute(B_TRANSLATE("State"), kAttrState, 651 B_STRING_TYPE, true, true, 50, B_ALIGN_LEFT, false); 652 installer.AddExtraAttribute(B_TRANSLATE("Zip"), kAttrZip, 653 B_STRING_TYPE, true, true, 50, B_ALIGN_LEFT, false); 654 installer.AddExtraAttribute(B_TRANSLATE("Country"), kAttrCountry, 655 B_STRING_TYPE, true, true, 120, B_ALIGN_LEFT, false); 656 installer.AddExtraAttribute(B_TRANSLATE("E-mail"), kAttrEmail, 657 B_STRING_TYPE, true, true, 120, B_ALIGN_LEFT, false); 658 installer.AddExtraAttribute(B_TRANSLATE("Home phone"), kAttrHomePhone, 659 B_STRING_TYPE, true, true, 90, B_ALIGN_LEFT, false); 660 installer.AddExtraAttribute(B_TRANSLATE("Work phone"), kAttrWorkPhone, 661 B_STRING_TYPE, true, true, 90, B_ALIGN_LEFT, false); 662 installer.AddExtraAttribute(B_TRANSLATE("Fax"), kAttrFax, 663 B_STRING_TYPE, true, true, 90, B_ALIGN_LEFT, false); 664 installer.AddExtraAttribute(B_TRANSLATE("URL"), kAttrURL, 665 B_STRING_TYPE, true, true, 120, B_ALIGN_LEFT, false); 666 installer.AddExtraAttribute(B_TRANSLATE("Group"), kAttrGroup, 667 B_STRING_TYPE, true, true, 120, B_ALIGN_LEFT, false); 668 installer.AddExtraAttribute(B_TRANSLATE("Nickname"), kAttrNickname, 669 B_STRING_TYPE, true, true, 120, B_ALIGN_LEFT, false); 477 670 } 478 671 479 672 InstallMimeIfNeeded(B_PRINTER_SPOOL_MIMETYPE, R_SpoolFileIcon, 480 "Printer spool", "Printer spool file.", "application/x-vnd.Be-PRNT"); 673 B_TRANSLATE("Printer spool"), B_TRANSLATE("Printer spool file."), 674 "application/x-vnd.Be-PRNT"); 481 675 482 676 { 483 677 #if B_BEOS_VERSION_DANO 484 678 ExtraAttributeLazyInstaller installer(B_PRINTER_SPOOL_MIMETYPE); 485 installer.AddExtraAttribute("Status", PSRV_SPOOL_ATTR_STATUS, B_STRING_TYPE, true, false, 679 installer.AddExtraAttribute(B_TRANSLATE("Status"), 680 PSRV_SPOOL_ATTR_STATUS, B_STRING_TYPE, true, false, 486 681 60, B_ALIGN_LEFT, false); 487 installer.AddExtraAttribute("Page count", PSRV_SPOOL_ATTR_PAGECOUNT, B_INT32_TYPE, true, false, 682 installer.AddExtraAttribute(B_TRANSLATE("Page count"), 683 PSRV_SPOOL_ATTR_PAGECOUNT, B_INT32_TYPE, true, false, 488 684 40, B_ALIGN_RIGHT, false); 489 installer.AddExtraAttribute("Description", PSRV_SPOOL_ATTR_DESCRIPTION, B_STRING_TYPE, true, true, 685 installer.AddExtraAttribute(B_TRANSLATE("Description"), 686 PSRV_SPOOL_ATTR_DESCRIPTION, B_STRING_TYPE, true, true, 490 687 100, B_ALIGN_LEFT, false); 491 installer.AddExtraAttribute("Printer name", PSRV_SPOOL_ATTR_PRINTER, B_STRING_TYPE, true, false, 688 installer.AddExtraAttribute(B_TRANSLATE("Printer name"), 689 PSRV_SPOOL_ATTR_PRINTER, B_STRING_TYPE, true, false, 492 690 80, B_ALIGN_LEFT, false); 493 installer.AddExtraAttribute("Job creator type", PSRV_SPOOL_ATTR_MIMETYPE, B_ASCII_TYPE, true, false, 691 installer.AddExtraAttribute(B_TRANSLATE("Job creator type"), 692 PSRV_SPOOL_ATTR_MIMETYPE, B_ASCII_TYPE, true, false, 494 693 60, B_ALIGN_LEFT, false); 495 694 #else 496 695 ExtraAttributeLazyInstaller installer(B_PRINTER_SPOOL_MIMETYPE); 497 installer.AddExtraAttribute("Page count", "_spool/Page Count", B_INT32_TYPE, true, false, 696 installer.AddExtraAttribute(B_TRANSLATE("Page count"), 697 "_spool/Page Count", B_INT32_TYPE, true, false, 498 698 40, B_ALIGN_RIGHT, false); 499 installer.AddExtraAttribute("Description", "_spool/Description", B_ASCII_TYPE, true, true, 699 installer.AddExtraAttribute(B_TRANSLATE("Description"), 700 "_spool/Description", B_ASCII_TYPE, true, true, 500 701 100, B_ALIGN_LEFT, false); 501 installer.AddExtraAttribute("Printer name", "_spool/Printer", B_ASCII_TYPE, true, false, 702 installer.AddExtraAttribute(B_TRANSLATE("Printer name"), 703 "_spool/Printer", B_ASCII_TYPE, true, false, 502 704 80, B_ALIGN_LEFT, false); 503 installer.AddExtraAttribute("Job creator type", "_spool/MimeType", B_ASCII_TYPE, true, false, 705 installer.AddExtraAttribute(B_TRANSLATE("Job creator type"), 706 "_spool/MimeType", B_ASCII_TYPE, true, false, 504 707 60, B_ALIGN_LEFT, false); 505 708 #endif 506 709 } 507 710 508 711 InstallMimeIfNeeded(B_PRINTER_MIMETYPE, R_GenericPrinterIcon, 509 "Printer", "Printer queue.", kTrackerSignature /*application/x-vnd.Be-PRNT*/); 712 B_TRANSLATE("Printer"), B_TRANSLATE("Printer queue."), 713 kTrackerSignature /*application/x-vnd.Be-PRNT*/); 510 714 // for now set tracker as a default handler for the printer because we 511 715 // just want to open it as a folder 512 716 #if B_BEOS_VERSION_DANO 513 717 { 514 718 ExtraAttributeLazyInstaller installer(B_PRINTER_MIMETYPE); 515 installer.AddExtraAttribute("Driver", PSRV_PRINTER_ATTR_DRV_NAME, B_STRING_TYPE, true, false, 719 installer.AddExtraAttribute(B_TRANSLATE("Driver"), 720 PSRV_PRINTER_ATTR_DRV_NAME, B_STRING_TYPE, true, false, 516 721 120, B_ALIGN_LEFT, false); 517 installer.AddExtraAttribute("Transport", PSRV_PRINTER_ATTR_TRANSPORT, B_STRING_TYPE, true, false, 722 installer.AddExtraAttribute(B_TRANSLATE("Transport"), 723 PSRV_PRINTER_ATTR_TRANSPORT, B_STRING_TYPE, true, false, 518 724 60, B_ALIGN_RIGHT, false); 519 installer.AddExtraAttribute("Connection", PSRV_PRINTER_ATTR_CNX, B_STRING_TYPE, true, false, 725 installer.AddExtraAttribute(B_TRANSLATE("Connection"), 726 PSRV_PRINTER_ATTR_CNX, B_STRING_TYPE, true, false, 520 727 40, B_ALIGN_LEFT, false); 521 installer.AddExtraAttribute("Description", PSRV_PRINTER_ATTR_COMMENTS, B_STRING_TYPE, true, true, 728 installer.AddExtraAttribute(B_TRANSLATE("Description"), 729 PSRV_PRINTER_ATTR_COMMENTS, B_STRING_TYPE, true, true, 522 730 140, B_ALIGN_LEFT, false); 523 731 } 524 732 #endif … … 544 752 void 545 753 TTracker::InstallIndices(dev_t device) 546 754 { 547 status_t error = fs_create_index(device, kAttrQueryLastChange, B_INT32_TYPE, 0); 755 status_t error = fs_create_index(device, kAttrQueryLastChange, 756 B_INT32_TYPE, 0); 548 757 error = fs_create_index(device, "_trk/recentQuery", B_INT32_TYPE, 0); 549 758 } 550 759 551 760 761 // In TrackerinitialState.cpp, AttributeTemplate.fBits (attr: _trk/columns) 762 // is big endian, So, in little endian machine (like x86), 763 // we need to swap data when making Localized AttributeTemplates. 764 static void 765 StringToStream(const char* src, BMallocIO& stream, bool swap) 766 { 767 int32 length = strlen(src); 768 int32 n = length; 769 if (swap) { 770 n = SwapInt32(n); 771 } 772 stream.Write(&n, sizeof(int32)); 773 stream.Write(src, (size_t)length + 1); 774 } 775 776 777 static void 778 BColumnToStream(BColumn* src, BMallocIO& stream, bool swap) 779 { 780 uint32 key = AttrHashString("BColumn", B_OBJECT_TYPE); 781 if (swap) { 782 key = SwapUInt32(key); 783 } 784 stream.Write(&key, sizeof(uint32)); 785 786 int32 version = kColumnStateArchiveVersion; 787 if (swap) { 788 version = SwapInt32(version); 789 } 790 stream.Write(&version, sizeof(int32)); 791 792 StringToStream(src->Title(), stream, swap); 793 794 float offset = src->Offset(); 795 if (swap) { 796 offset = B_SWAP_FLOAT(offset); 797 } 798 stream.Write(&offset, sizeof(float)); 799 800 float width = src->Width(); 801 if (swap) { 802 width = B_SWAP_FLOAT(width); 803 } 804 stream.Write(&width, sizeof(float)); 805 806 alignment align = src->Alignment(); 807 if (swap) { 808 align = (alignment)SwapInt32(align); 809 } 810 stream.Write(&align, sizeof(alignment)); 811 812 StringToStream(src->AttrName(), stream, swap); 813 814 uint32 attrhash = src->AttrHash(); 815 if (swap) { 816 attrhash = SwapUInt32(attrhash); 817 } 818 stream.Write(&attrhash, sizeof(uint32)); 819 820 uint32 attrtype = src->AttrType(); 821 if (swap) { 822 attrtype = SwapUInt32(attrtype); 823 } 824 stream.Write(&attrtype, sizeof(uint32)); 825 826 bool statfield = src->StatField(); 827 stream.Write(&statfield, sizeof(bool)); 828 829 bool editable = src->Editable(); 830 stream.Write(&editable, sizeof(bool)); 831 832 StringToStream(src->DisplayAs(), stream, swap); 833 } 834 835 836 static size_t 837 mkColumnsBits(char** bits, ColumnData* src, int32 nelm, const char* context) 838 { 839 BMallocIO stream; 840 841 for (int32 i = 0; i < nelm; i++) { 842 BColumn* c = new BColumn( 843 be_locale_roster->GetCatalog()->GetString((src[i].title), context), 844 src[i].offset, src[i].width, src[i].align, src[i].attributeName, 845 src[i].attrType, src[i].statField, src[i].editable); 846 847 if (!c) break; 848 BColumnToStream(c, stream, 849 B_HOST_IS_LENDIAN ? true : false); 850 delete c; 851 } 852 853 size_t n = stream.Position(); 854 *bits = new char[n]; 855 memcpy(*bits, stream.Buffer(), n); 856 857 return n; 858 } 859 860 861 ArrayDeleter<char> defaultQueryColumnsBitsDeleter(fDefaultQueryColumnsBits); 862 ArrayDeleter<char> bookmarkQueryColumnsBitsDeleter(fBookmarkQueryColumnsBits); 863 ArrayDeleter<char> personQueryColumnsBitsDeleter(fPersonQueryColumnsBits); 864 ArrayDeleter<char> emailQueryColumnsBitsDeleter(fEmailQueryColumnsBits); 865 866 552 867 void 553 868 TTracker::InstallDefaultTemplates() 554 869 { … … 558 873 559 874 if (!BContainerWindow::DefaultStateSourceNode(query.String(), &node, false)) 560 875 if (BContainerWindow::DefaultStateSourceNode(query.String(), &node, true)) { 876 size_t n = mkColumnsBits(&fDefaultQueryColumnsBits, 877 defaultQueryColumns, 4, "DefaultQueryColumns"); 878 defaultQueryTemplate[2].fSize = n; 879 defaultQueryTemplate[2].fBits= fDefaultQueryColumnsBits; 880 561 881 AttributeStreamFileNode fileNode(&node); 562 AttributeStreamTemplateNode tmp( kDefaultQueryTemplate, 3);882 AttributeStreamTemplateNode tmp(defaultQueryTemplate, 3); 563 883 fileNode << tmp; 564 884 } 565 885 566 886 (query = kQueryTemplates) += "/application_x-vnd.Be-bookmark"; 567 887 if (!BContainerWindow::DefaultStateSourceNode(query.String(), &node, false)) 568 888 if (BContainerWindow::DefaultStateSourceNode(query.String(), &node, true)) { 889 size_t n = mkColumnsBits(&fBookmarkQueryColumnsBits, 890 bookmarkQueryColumns, 3, "bookmarkQueryColumns"); 891 bookmarkQueryTemplate[2].fSize = n; 892 bookmarkQueryTemplate[2].fBits= fBookmarkQueryColumnsBits; 893 569 894 AttributeStreamFileNode fileNode(&node); 570 AttributeStreamTemplateNode tmp( kBookmarkQueryTemplate, 3);895 AttributeStreamTemplateNode tmp(bookmarkQueryTemplate, 3); 571 896 fileNode << tmp; 572 897 } 573 898 574 899 (query = kQueryTemplates) += "/application_x-person"; 575 900 if (!BContainerWindow::DefaultStateSourceNode(query.String(), &node, false)) 576 901 if (BContainerWindow::DefaultStateSourceNode(query.String(), &node, true)) { 902 size_t n = mkColumnsBits(&fPersonQueryColumnsBits, 903 parsonQueryColumns, 4, "parsonQueryColumns"); 904 personQueryTemplate[2].fSize = n; 905 personQueryTemplate[2].fBits= fPersonQueryColumnsBits; 906 577 907 AttributeStreamFileNode fileNode(&node); 578 AttributeStreamTemplateNode tmp( kPersonQueryTemplate, 3);908 AttributeStreamTemplateNode tmp(personQueryTemplate, 3); 579 909 fileNode << tmp; 580 910 } 581 911 582 912 (query = kQueryTemplates) += "/text_x-email"; 583 913 if (!BContainerWindow::DefaultStateSourceNode(query.String(), &node, false)) 584 914 if (BContainerWindow::DefaultStateSourceNode(query.String(), &node, true)) { 915 size_t n = mkColumnsBits(&fEmailQueryColumnsBits, 916 emailQueryColumns, 4, "emailQueryColumns"); 917 emailQueryTemplate[2].fSize = n; 918 emailQueryTemplate[2].fBits= fEmailQueryColumnsBits; 919 585 920 AttributeStreamFileNode fileNode(&node); 586 AttributeStreamTemplateNode tmp( kEmailQueryTemplate, 3);921 AttributeStreamTemplateNode tmp(emailQueryTemplate, 3); 587 922 fileNode << tmp; 588 923 } 589 924 }