| 366 | } |
| 367 | |
| 368 | bool |
| 369 | AaptGroupEntry::initFromDirName(const char* dir, String8* resType) |
| 370 | { |
| 371 | mParamsChanged = true; |
| 372 | |
| 373 | Vector<String8> parts; |
| 374 | |
| 375 | String8 mcc, mnc, loc, layoutsize, layoutlong, orient, den; |
| 376 | String8 touch, key, keysHidden, nav, navHidden, size, layoutDir, vers; |
| 377 | String8 uiModeType, uiModeNight, smallestwidthdp, widthdp, heightdp; |
| 378 | |
| 379 | const char *p = dir; |
| 380 | const char *q; |
| 381 | while (NULL != (q = strchr(p, '-'))) { |
| 382 | String8 val(p, q-p); |
| 383 | val.toLower(); |
| 384 | parts.add(val); |
| 385 | //printf("part: %s\n", parts[parts.size()-1].string()); |
| 386 | p = q+1; |
| 387 | } |
| 388 | String8 val(p); |
| 389 | val.toLower(); |
| 390 | parts.add(val); |
| 391 | //printf("part: %s\n", parts[parts.size()-1].string()); |
| 392 | |
| 393 | const int N = parts.size(); |
| 394 | int index = 0; |
| 395 | String8 part = parts[index]; |
| 396 | |
| 397 | // resource type |
| 398 | if (!isValidResourceType(part)) { |
| 399 | return false; |
| 400 | } |
| 401 | *resType = part; |
| 402 | |
| 403 | index++; |
| 404 | if (index == N) { |
| 405 | goto success; |
| 406 | } |
| 407 | part = parts[index]; |
| 408 | |
| 409 | // imsi - mcc |
| 410 | if (getMccName(part.string())) { |
| 411 | mcc = part; |
| 412 | |
| 413 | index++; |
| 414 | if (index == N) { |
| 415 | goto success; |
| 416 | } |
| 417 | part = parts[index]; |
| 418 | } else { |
| 419 | //printf("not mcc: %s\n", part.string()); |
| 420 | } |
| 421 | |
| 422 | // imsi - mnc |
| 423 | if (getMncName(part.string())) { |
| 424 | mnc = part; |
| 425 | |