diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/fileop.c | 344 | ||||
-rw-r--r-- | apps/fileop.h | 19 | ||||
-rw-r--r-- | apps/lang/italiano.lang | 1091 | ||||
-rw-r--r-- | apps/onplay.c | 245 | ||||
-rw-r--r-- | apps/onplay.h | 2 |
5 files changed, 615 insertions, 1086 deletions
diff --git a/apps/fileop.c b/apps/fileop.c index 0d2dc774b9..35bd9f2241 100644 --- a/apps/fileop.c +++ b/apps/fileop.c | |||
@@ -1,10 +1,10 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | * __________ __ ___. | 2 | * __________ __ ___. |
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | 3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | 4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / |
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | 5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | 6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
7 | * \/ \/ \/ \/ \/ | 7 | * \/ \/ \/ \/ \/ |
8 | * $Id$ | 8 | * $Id$ |
9 | * | 9 | * |
10 | * Copyright (C) 2002 Björn Stenberg | 10 | * Copyright (C) 2002 Björn Stenberg |
@@ -50,6 +50,17 @@ struct file_op_params | |||
50 | size_t append; /* Append position in 'path' for stack push */ | 50 | size_t append; /* Append position in 'path' for stack push */ |
51 | }; | 51 | }; |
52 | 52 | ||
53 | static int prompt_name(char* buf, size_t bufsz) | ||
54 | { | ||
55 | if (kbd_input(buf, bufsz, NULL) < 0) | ||
56 | return FORC_CANCELLED; | ||
57 | /* at least prevent escapes out of the base directory from keyboard- | ||
58 | entered filenames; the file code should reject other invalidities */ | ||
59 | if (*buf != '\0' && !strchr(buf, PATH_SEPCH) && !is_dotdir_name(buf)) | ||
60 | return FORC_SUCCESS; | ||
61 | return FORC_UNKNOWN_FAILURE; | ||
62 | } | ||
63 | |||
53 | static bool poll_cancel_action(const char *path, int operation, int current, int total) | 64 | static bool poll_cancel_action(const char *path, int operation, int current, int total) |
54 | { | 65 | { |
55 | const char *op_str = ""; | 66 | const char *op_str = ""; |
@@ -75,7 +86,7 @@ static bool poll_cancel_action(const char *path, int operation, int current, int | |||
75 | return ACTION_STD_CANCEL == get_action(CONTEXT_STD, TIMEOUT_NOBLOCK); | 86 | return ACTION_STD_CANCEL == get_action(CONTEXT_STD, TIMEOUT_NOBLOCK); |
76 | } | 87 | } |
77 | 88 | ||
78 | static struct file_op_params* init_file_op(struct file_op_params *param, | 89 | static void init_file_op(struct file_op_params *param, |
79 | const char *basename, | 90 | const char *basename, |
80 | const char *selected_file) | 91 | const char *selected_file) |
81 | { | 92 | { |
@@ -90,8 +101,6 @@ static struct file_op_params* init_file_op(struct file_op_params *param, | |||
90 | param->is_dir = dir_exists(param->path); | 101 | param->is_dir = dir_exists(param->path); |
91 | param->objects = 0; /* how many files and subdirectories*/ | 102 | param->objects = 0; /* how many files and subdirectories*/ |
92 | param->processed = 0; | 103 | param->processed = 0; |
93 | |||
94 | return param; | ||
95 | } | 104 | } |
96 | 105 | ||
97 | /* counts file objects, deletes file objects */ | 106 | /* counts file objects, deletes file objects */ |
@@ -144,7 +153,7 @@ static int directory_fileop(struct file_op_params *param, enum file_op_current f | |||
144 | 153 | ||
145 | if (info.attribute & ATTR_DIRECTORY) { | 154 | if (info.attribute & ATTR_DIRECTORY) { |
146 | /* remove a subdirectory */ | 155 | /* remove a subdirectory */ |
147 | rc = directory_fileop(param, fileop); | 156 | rc = directory_fileop(param, fileop); /* recursion */ |
148 | } else { | 157 | } else { |
149 | /* remove a file */ | 158 | /* remove a file */ |
150 | if (poll_cancel_action(param->path, FOC_DELETE, param->processed, param->objects)) | 159 | if (poll_cancel_action(param->path, FOC_DELETE, param->processed, param->objects)) |
@@ -165,8 +174,8 @@ static int directory_fileop(struct file_op_params *param, enum file_op_current f | |||
165 | } | 174 | } |
166 | 175 | ||
167 | if (info.attribute & ATTR_DIRECTORY) { | 176 | if (info.attribute & ATTR_DIRECTORY) { |
168 | /* remove a subdirectory */ | 177 | /* enter subdirectory */ |
169 | rc = directory_fileop(param, FOC_COUNT); | 178 | rc = directory_fileop(param, FOC_COUNT); /* recursion */ |
170 | } else { | 179 | } else { |
171 | if (poll_cancel_action(param->path, FOC_COUNT, param->objects, 0)) | 180 | if (poll_cancel_action(param->path, FOC_COUNT, param->objects, 0)) |
172 | { | 181 | { |
@@ -195,150 +204,42 @@ static int directory_fileop(struct file_op_params *param, enum file_op_current f | |||
195 | return rc; | 204 | return rc; |
196 | } | 205 | } |
197 | 206 | ||
207 | /* Walk a directory tree and count the number of objects (dirs & files) | ||
208 | * also check that enough resources exist to do an operation */ | ||
198 | static int check_count_fileobjects(struct file_op_params *param) | 209 | static int check_count_fileobjects(struct file_op_params *param) |
199 | { | 210 | { |
211 | cpu_boost(true); | ||
200 | int rc = directory_fileop(param, FOC_COUNT); | 212 | int rc = directory_fileop(param, FOC_COUNT); |
213 | cpu_boost(false); | ||
201 | DEBUGF("%s res:(%d) objects %d \n", __func__, rc, param->objects); | 214 | DEBUGF("%s res:(%d) objects %d \n", __func__, rc, param->objects); |
202 | return rc; | 215 | return rc; |
203 | } | 216 | } |
204 | 217 | ||
205 | static bool check_new_name(const char *basename) | 218 | /* Attempt to just rename a file or directory */ |
206 | { | ||
207 | /* at least prevent escapes out of the base directory from keyboard- | ||
208 | entered filenames; the file code should reject other invalidities */ | ||
209 | return *basename != '\0' && !strchr(basename, PATH_SEPCH) && | ||
210 | !is_dotdir_name(basename); | ||
211 | } | ||
212 | |||
213 | int create_dir(void) | ||
214 | { | ||
215 | int rc = FORC_UNKNOWN_FAILURE; | ||
216 | char dirname[MAX_PATH]; | ||
217 | size_t pathlen = path_append(dirname, getcwd(NULL, 0), PA_SEP_HARD, | ||
218 | sizeof (dirname)); | ||
219 | char *basename = dirname + pathlen; | ||
220 | |||
221 | if (pathlen >= sizeof (dirname)) { | ||
222 | /* Too long */ | ||
223 | } else if (kbd_input(basename, sizeof (dirname) - pathlen, NULL) < 0) { | ||
224 | rc = FORC_CANCELLED; | ||
225 | } else if (check_new_name(basename)) { | ||
226 | rc = mkdir(dirname); | ||
227 | } | ||
228 | |||
229 | return rc; | ||
230 | } | ||
231 | |||
232 | /************************************************************************************/ | ||
233 | /* share code for file and directory deletion, saves space */ | ||
234 | static int delete_file_dir(struct file_op_params *param) | ||
235 | { | ||
236 | /* Note: delete_file_dir() will happily delete whatever | ||
237 | * path is passed (after confirmation) */ | ||
238 | if (confirm_delete_yesno(param->path) != YESNO_YES) { | ||
239 | return FORC_CANCELLED; | ||
240 | } | ||
241 | |||
242 | clear_screen_buffer(true); | ||
243 | poll_cancel_action(param->path, FOC_DELETE, param->processed, param->objects); | ||
244 | |||
245 | int rc = FORC_UNKNOWN_FAILURE; | ||
246 | |||
247 | if (param->is_dir) { /* if directory */ | ||
248 | cpu_boost(true); | ||
249 | rc = directory_fileop(param, FOC_DELETE); | ||
250 | cpu_boost(false); | ||
251 | } else { | ||
252 | rc = remove(param->path); | ||
253 | } | ||
254 | |||
255 | return rc; | ||
256 | } | ||
257 | |||
258 | int delete_fileobject(const char *selected_file) | ||
259 | { | ||
260 | struct file_op_params param; | ||
261 | if (init_file_op(¶m, selected_file, NULL)->is_dir == true) | ||
262 | { | ||
263 | int rc = check_count_fileobjects(¶m); | ||
264 | DEBUGF("%s res: %d, ct: %d, %s", __func__, rc, param.objects, param.path); | ||
265 | if (rc != FORC_SUCCESS) | ||
266 | return rc; | ||
267 | } | ||
268 | |||
269 | return delete_file_dir(¶m); | ||
270 | } | ||
271 | |||
272 | int rename_file(const char *selected_file) | ||
273 | { | ||
274 | int rc = FORC_UNKNOWN_FAILURE; | ||
275 | char newname[MAX_PATH]; | ||
276 | const char *oldbase, *selection = selected_file; | ||
277 | |||
278 | path_basename(selection, &oldbase); | ||
279 | size_t pathlen = oldbase - selection; | ||
280 | char *newbase = newname + pathlen; | ||
281 | |||
282 | if (strmemccpy(newname, selection, sizeof (newname)) == NULL) { | ||
283 | /* Too long */ | ||
284 | } else if (kbd_input(newbase, sizeof (newname) - pathlen, NULL) < 0) { | ||
285 | rc = FORC_CANCELLED; | ||
286 | } else if (!strcmp(oldbase, newbase)) { | ||
287 | rc = FORC_NOOP; /* No change at all */ | ||
288 | } else if (check_new_name(newbase)) { | ||
289 | switch (relate(selection, newname)) | ||
290 | { | ||
291 | case RELATE_DIFFERENT: | ||
292 | if (file_exists(newname)) { | ||
293 | break; /* don't overwrite */ | ||
294 | } | ||
295 | /* Fall-through */ | ||
296 | case RELATE_SAME: | ||
297 | rc = rename(selection, newname); | ||
298 | break; | ||
299 | case RELATE_PREFIX: | ||
300 | default: | ||
301 | break; | ||
302 | } | ||
303 | } | ||
304 | |||
305 | return rc; | ||
306 | } | ||
307 | |||
308 | static int move_by_rename(const char *src_path, | 219 | static int move_by_rename(const char *src_path, |
309 | const char *dst_path, | 220 | const char *dst_path, |
310 | unsigned int *pflags) | 221 | unsigned int *pflags) |
311 | { | 222 | { |
312 | unsigned int flags = *pflags; | 223 | unsigned int flags = *pflags; |
313 | int rc = FORC_UNKNOWN_FAILURE; | 224 | int rc = FORC_UNKNOWN_FAILURE; |
314 | while (!(flags & (PASTE_COPY | PASTE_EXDEV))) { | 225 | if (!(flags & (PASTE_COPY | PASTE_EXDEV))) { |
315 | if ((flags & PASTE_OVERWRITE) || !file_exists(dst_path)) { | 226 | if ((flags & PASTE_OVERWRITE) || !file_exists(dst_path)) { |
316 | /* Just try to move the directory / file */ | 227 | /* Just try to move the directory / file */ |
317 | if (poll_cancel_action(src_path, FOC_MOVE, 0 , 0)) { | 228 | if (poll_cancel_action(src_path, FOC_MOVE, 0 , 0)) { |
318 | rc = FORC_CANCELLED; | 229 | rc = FORC_CANCELLED; |
319 | } else { | 230 | } else { |
320 | rc = rename(src_path, dst_path); | 231 | rc = rename(src_path, dst_path); |
321 | } | 232 | #ifdef HAVE_MULTIVOLUME |
322 | 233 | if (rc < FORC_SUCCESS && errno == EXDEV) { | |
323 | if (rc < 0) { | 234 | /* Failed because cross volume rename doesn't work */ |
324 | int errnum = errno; | 235 | *pflags |= PASTE_EXDEV; /* force a move instead */ |
325 | if (errnum == ENOTEMPTY && (flags & PASTE_OVERWRITE)) { | ||
326 | /* Directory is not empty thus rename() will not do a quick | ||
327 | overwrite */ | ||
328 | break; | ||
329 | } | 236 | } |
330 | #ifdef HAVE_MULTIVOLUME | 237 | #endif /* HAVE_MULTIVOLUME */ |
331 | else if (errnum == EXDEV) { | 238 | /* if (errno == ENOTEMPTY && (flags & PASTE_OVERWRITE)) { |
332 | /* Failed because cross volume rename doesn't work; force | 239 | * Directory is not empty thus rename() will not do a quick overwrite */ |
333 | a move instead */ | ||
334 | *pflags |= PASTE_EXDEV; | ||
335 | break; | ||
336 | } | ||
337 | #endif /* HAVE_MULTIVOLUME */ | ||
338 | } | 240 | } |
339 | } | 241 | } |
340 | 242 | ||
341 | break; | ||
342 | } | 243 | } |
343 | return rc; | 244 | return rc; |
344 | } | 245 | } |
@@ -365,8 +266,7 @@ static int copy_move_file(const char *src_path, const char *dst_path, unsigned i | |||
365 | return FORC_NO_BUFFER_AVAIL; | 266 | return FORC_NO_BUFFER_AVAIL; |
366 | } | 267 | } |
367 | 268 | ||
368 | buffersize &= ~0x1ff; /* Round buffer size to multiple of sector | 269 | buffersize &= ~0x1ff; /* Round buffer size to multiple of sector size */ |
369 | size */ | ||
370 | 270 | ||
371 | int src_fd = open(src_path, O_RDONLY); | 271 | int src_fd = open(src_path, O_RDONLY); |
372 | if (src_fd >= 0) { | 272 | if (src_fd >= 0) { |
@@ -423,9 +323,12 @@ static int copy_move_file(const char *src_path, const char *dst_path, unsigned i | |||
423 | } | 323 | } |
424 | 324 | ||
425 | if (rc == FORC_SUCCESS) { | 325 | if (rc == FORC_SUCCESS) { |
426 | /* If overwriting, set the correct length if original was | 326 | if (total_size != src_sz) |
427 | longer */ | 327 | rc = FORC_UNKNOWN_FAILURE; |
428 | rc = ftruncate(dst_fd, total_size) * 10; | 328 | else { |
329 | /* If overwriting, set the correct length if original was longer */ | ||
330 | rc = ftruncate(dst_fd, total_size) * 10; | ||
331 | } | ||
429 | } | 332 | } |
430 | 333 | ||
431 | close(dst_fd); | 334 | close(dst_fd); |
@@ -449,20 +352,19 @@ static int copy_move_file(const char *src_path, const char *dst_path, unsigned i | |||
449 | 352 | ||
450 | /* Paste a directory */ | 353 | /* Paste a directory */ |
451 | static int copy_move_directory(struct file_op_params *src, | 354 | static int copy_move_directory(struct file_op_params *src, |
452 | struct file_op_params *dst, | 355 | struct file_op_params *dst, |
453 | unsigned int flags) | 356 | unsigned int flags) |
454 | { | 357 | { |
455 | int rc = FORC_UNKNOWN_FAILURE; | ||
456 | |||
457 | DIR *srcdir = opendir(src->path); | 358 | DIR *srcdir = opendir(src->path); |
458 | 359 | ||
459 | if (srcdir) { | 360 | if (!srcdir) |
460 | /* Make a directory to copy things to */ | 361 | return FORC_PATH_NOT_EXIST; |
461 | rc = mkdir(dst->path) * 10; | 362 | |
462 | if (rc < 0 && errno == EEXIST && (flags & PASTE_OVERWRITE)) { | 363 | /* Make a directory to copy things to */ |
463 | /* Exists and overwrite was approved */ | 364 | int rc = mkdir(dst->path) * 10; |
464 | rc = FORC_SUCCESS; | 365 | if (rc < 0 && errno == EEXIST && (flags & PASTE_OVERWRITE)) { |
465 | } | 366 | /* Exists and overwrite was approved */ |
367 | rc = FORC_SUCCESS; | ||
466 | } | 368 | } |
467 | 369 | ||
468 | size_t srcap = src->append, dstap = dst->append; | 370 | size_t srcap = src->append, dstap = dst->append; |
@@ -488,7 +390,7 @@ static int copy_move_directory(struct file_op_params *src, | |||
488 | /* Append names to current directories */ | 390 | /* Append names to current directories */ |
489 | src->append = srcap + | 391 | src->append = srcap + |
490 | path_append(&src->path[srcap], PA_SEP_HARD, entry->d_name, | 392 | path_append(&src->path[srcap], PA_SEP_HARD, entry->d_name, |
491 | sizeof(src->path) - srcap); | 393 | sizeof (src->path) - srcap); |
492 | 394 | ||
493 | dst->append = dstap + | 395 | dst->append = dstap + |
494 | path_append(&dst->path[dstap], PA_SEP_HARD, entry->d_name, | 396 | path_append(&dst->path[dstap], PA_SEP_HARD, entry->d_name, |
@@ -538,13 +440,16 @@ static int copy_move_directory(struct file_op_params *src, | |||
538 | return rc; | 440 | return rc; |
539 | } | 441 | } |
540 | 442 | ||
443 | /************************************************************************************/ | ||
444 | /* PUBLIC FUNCTIONS */ | ||
445 | /************************************************************************************/ | ||
446 | |||
447 | /* Copy or move a file or directory see: file_op_flags */ | ||
541 | int copy_move_fileobject(const char *src_path, const char *dst_path, unsigned int flags) | 448 | int copy_move_fileobject(const char *src_path, const char *dst_path, unsigned int flags) |
542 | { | 449 | { |
543 | if (!src_path[0]) | 450 | if (!src_path[0]) |
544 | return FORC_NOOP; | 451 | return FORC_NOOP; |
545 | 452 | ||
546 | int rc = FORC_UNKNOWN_FAILURE; | ||
547 | |||
548 | struct file_op_params src, dst; | 453 | struct file_op_params src, dst; |
549 | 454 | ||
550 | /* Figure out the name of the selection */ | 455 | /* Figure out the name of the selection */ |
@@ -553,40 +458,37 @@ int copy_move_fileobject(const char *src_path, const char *dst_path, unsigned in | |||
553 | 458 | ||
554 | /* Final target is current directory plus name of selection */ | 459 | /* Final target is current directory plus name of selection */ |
555 | init_file_op(&dst, dst_path, nameptr); | 460 | init_file_op(&dst, dst_path, nameptr); |
461 | if (dst.append >= sizeof (dst.path)) | ||
462 | return FORC_PATH_TOO_LONG; | ||
556 | 463 | ||
557 | switch (dst.append < sizeof (dst.path) ? | 464 | int rel = relate(src_path, dst.path); |
558 | relate(src_path, dst.path) : FORC_PATH_TOO_LONG) | 465 | if (rel == RELATE_SAME) |
559 | { | 466 | return FORC_NOOP; |
560 | case RELATE_SAME: | ||
561 | rc = FORC_NOOP; | ||
562 | break; | ||
563 | 467 | ||
564 | case RELATE_DIFFERENT: | 468 | if (rel == RELATE_DIFFERENT) { |
469 | int rc; | ||
565 | if (file_exists(dst.path)) { | 470 | if (file_exists(dst.path)) { |
566 | /* If user chooses not to overwrite, cancel */ | 471 | /* If user chooses not to overwrite, cancel */ |
567 | if (confirm_overwrite_yesno() == YESNO_NO) { | 472 | if (confirm_overwrite_yesno() == YESNO_NO) { |
568 | rc = FORC_NOOVERWRT; | 473 | return FORC_NOOVERWRT; |
569 | break; | ||
570 | } | 474 | } |
571 | 475 | ||
572 | flags |= PASTE_OVERWRITE; | 476 | flags |= PASTE_OVERWRITE; |
573 | } | 477 | } |
574 | 478 | ||
479 | init_file_op(&src, src_path, NULL); | ||
480 | if (src.append >= sizeof (src.path)) | ||
481 | return FORC_PATH_TOO_LONG; | ||
575 | /* Now figure out what we're doing */ | 482 | /* Now figure out what we're doing */ |
576 | cpu_boost(true); | 483 | cpu_boost(true); |
577 | |||
578 | init_file_op(&src, src_path, NULL); | ||
579 | |||
580 | if (src.is_dir) { | 484 | if (src.is_dir) { |
581 | /* Copy or move a subdirectory */ | 485 | /* Copy or move a subdirectory */ |
582 | 486 | /* Try renaming first */ | |
583 | if (src.append < sizeof (src.path)) { | 487 | rc = move_by_rename(src.path, dst.path, &flags); |
584 | /* Try renaming first */ | 488 | if (rc < FORC_SUCCESS) { |
585 | rc = move_by_rename(src.path, dst.path, &flags); | 489 | rc = check_count_fileobjects(&src); |
586 | if (rc != FORC_SUCCESS && rc != FORC_CANCELLED) { | 490 | if (rc == FORC_SUCCESS) { |
587 | if (check_count_fileobjects(&src) == FORC_SUCCESS) { | 491 | rc = copy_move_directory(&src, &dst, flags); |
588 | rc = copy_move_directory(&src, &dst, flags); | ||
589 | } | ||
590 | } | 492 | } |
591 | } | 493 | } |
592 | } else { | 494 | } else { |
@@ -595,12 +497,102 @@ int copy_move_fileobject(const char *src_path, const char *dst_path, unsigned in | |||
595 | } | 497 | } |
596 | 498 | ||
597 | cpu_boost(false); | 499 | cpu_boost(false); |
598 | break; | 500 | DEBUGF("%s res: %d, ct: %d/%d %s\n", |
501 | __func__, rc, src.objects, src.processed, src.path); | ||
502 | return rc; | ||
503 | } | ||
504 | |||
505 | /* Else Some other relation / failure */ | ||
506 | DEBUGF("%s res: %d, rel: %d\n", __func__, FORC_UNKNOWN_FAILURE, rel); | ||
507 | return FORC_UNKNOWN_FAILURE; | ||
508 | } | ||
509 | |||
510 | int create_dir(void) | ||
511 | { | ||
512 | int rc; | ||
513 | char dirname[MAX_PATH]; | ||
514 | size_t pathlen = path_append(dirname, getcwd(NULL, 0), PA_SEP_HARD, | ||
515 | sizeof (dirname)); | ||
516 | char *basename = dirname + pathlen; | ||
517 | |||
518 | if (pathlen >= sizeof (dirname)) | ||
519 | return FORC_PATH_TOO_LONG; | ||
520 | |||
521 | rc = prompt_name(basename, sizeof (dirname) - pathlen); | ||
522 | if (rc == FORC_SUCCESS) | ||
523 | rc = mkdir(dirname) * 10; | ||
524 | return rc; | ||
525 | } | ||
599 | 526 | ||
600 | case RELATE_PREFIX: | 527 | /* share code for file and directory deletion, saves space */ |
601 | default: /* Some other relation / failure */ | 528 | int delete_fileobject(const char *selected_file) |
602 | break; | 529 | { |
530 | int rc; | ||
531 | struct file_op_params param; | ||
532 | init_file_op(¶m, selected_file, NULL); | ||
533 | if (param.append >= sizeof (param.path)) | ||
534 | return FORC_PATH_TOO_LONG; | ||
535 | |||
536 | if (param.is_dir) { | ||
537 | int rc = check_count_fileobjects(¶m); | ||
538 | DEBUGF("%s res: %d, ct: %d, %s", __func__, rc, param.objects, param.path); | ||
539 | if (rc != FORC_SUCCESS) | ||
540 | return rc; | ||
541 | } | ||
542 | |||
543 | /* Note: delete_fileobject() will happily delete whatever | ||
544 | * path is passed (after confirmation) */ | ||
545 | if (confirm_delete_yesno(param.path) != YESNO_YES) { | ||
546 | return FORC_CANCELLED; | ||
547 | } | ||
548 | |||
549 | clear_screen_buffer(true); | ||
550 | if (poll_cancel_action(param.path, FOC_DELETE, param.processed, param.objects)) | ||
551 | return FORC_CANCELLED; | ||
552 | |||
553 | if (param.is_dir) { /* if directory */ | ||
554 | cpu_boost(true); | ||
555 | rc = directory_fileop(¶m, FOC_DELETE); | ||
556 | cpu_boost(false); | ||
557 | } else { | ||
558 | rc = remove(param.path) * 10; | ||
603 | } | 559 | } |
604 | 560 | ||
605 | return rc; | 561 | return rc; |
606 | } | 562 | } |
563 | |||
564 | int rename_file(const char *selected_file) | ||
565 | { | ||
566 | int rc; | ||
567 | char newname[MAX_PATH]; | ||
568 | const char *oldbase, *selection = selected_file; | ||
569 | |||
570 | path_basename(selection, &oldbase); | ||
571 | size_t pathlen = oldbase - selection; | ||
572 | char *newbase = newname + pathlen; | ||
573 | |||
574 | if (strmemccpy(newname, selection, sizeof (newname)) == NULL) | ||
575 | return FORC_PATH_TOO_LONG; | ||
576 | |||
577 | rc = prompt_name(newbase, sizeof (newname) - pathlen); | ||
578 | |||
579 | if (rc != FORC_SUCCESS) | ||
580 | return rc; | ||
581 | |||
582 | if (!strcmp(oldbase, newbase)) | ||
583 | return FORC_NOOP; /* No change at all */ | ||
584 | |||
585 | int rel = relate(selection, newname); | ||
586 | if (rel == RELATE_DIFFERENT) | ||
587 | { | ||
588 | if (file_exists(newname)) { /* don't overwrite */ | ||
589 | return FORC_PATH_EXISTS; | ||
590 | } | ||
591 | return rename(selection, newname) * 10; | ||
592 | } | ||
593 | if (rel == RELATE_SAME) | ||
594 | return rename(selection, newname) * 10; | ||
595 | |||
596 | /* Else Some other relation / failure */ | ||
597 | return FORC_UNKNOWN_FAILURE; | ||
598 | } | ||
diff --git a/apps/fileop.h b/apps/fileop.h index f8237dc64f..f477549977 100644 --- a/apps/fileop.h +++ b/apps/fileop.h | |||
@@ -1,10 +1,10 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | * __________ __ ___. | 2 | * __________ __ ___. |
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | 3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | 4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / |
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | 5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | 6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
7 | * \/ \/ \/ \/ \/ | 7 | * \/ \/ \/ \/ \/ |
8 | * $Id$ | 8 | * $Id$ |
9 | * | 9 | * |
10 | * Copyright (C) 2002 Björn Stenberg | 10 | * Copyright (C) 2002 Björn Stenberg |
@@ -26,6 +26,7 @@ | |||
26 | /* result codes of various file operations */ | 26 | /* result codes of various file operations */ |
27 | enum fileop_result_code | 27 | enum fileop_result_code |
28 | { | 28 | { |
29 | FORC_PATH_EXISTS = -8, | ||
29 | FORC_READ_FAILURE = -7, | 30 | FORC_READ_FAILURE = -7, |
30 | FORC_WRITE_FAILURE = -6, | 31 | FORC_WRITE_FAILURE = -6, |
31 | FORC_NO_BUFFER_AVAIL = -5, | 32 | FORC_NO_BUFFER_AVAIL = -5, |
@@ -55,7 +56,6 @@ enum file_op_current | |||
55 | FOC_MOVE, | 56 | FOC_MOVE, |
56 | FOC_COPY, | 57 | FOC_COPY, |
57 | FOC_DELETE, | 58 | FOC_DELETE, |
58 | FOC_CREATE, | ||
59 | }; | 59 | }; |
60 | 60 | ||
61 | int create_dir(void); | 61 | int create_dir(void); |
@@ -64,7 +64,8 @@ int rename_file(const char *selected_file); | |||
64 | 64 | ||
65 | int delete_fileobject(const char *selected_file); | 65 | int delete_fileobject(const char *selected_file); |
66 | 66 | ||
67 | int copy_move_fileobject(const char *src_path, const char *dst_path, | 67 | int copy_move_fileobject(const char *src_path, |
68 | unsigned int flags); | 68 | const char *dst_path, |
69 | unsigned int flags); | ||
69 | 70 | ||
70 | #endif /* FILEOP_H */ | 71 | #endif /* FILEOP_H */ |
diff --git a/apps/lang/italiano.lang b/apps/lang/italiano.lang index 946850750f..a7d1eaa9a7 100644 --- a/apps/lang/italiano.lang +++ b/apps/lang/italiano.lang | |||
@@ -40,10 +40,10 @@ | |||
40 | *: "No" | 40 | *: "No" |
41 | </source> | 41 | </source> |
42 | <dest> | 42 | <dest> |
43 | *: "No" | 43 | *: "~No" |
44 | </dest> | 44 | </dest> |
45 | <voice> | 45 | <voice> |
46 | *: "No" | 46 | *: "~No" |
47 | </voice> | 47 | </voice> |
48 | </phrase> | 48 | </phrase> |
49 | <phrase> | 49 | <phrase> |
@@ -330,10 +330,10 @@ | |||
330 | *: "Database" | 330 | *: "Database" |
331 | </source> | 331 | </source> |
332 | <dest> | 332 | <dest> |
333 | *: "Database" | 333 | *: "~Database" |
334 | </dest> | 334 | </dest> |
335 | <voice> | 335 | <voice> |
336 | *: "Database" | 336 | *: "~Database" |
337 | </voice> | 337 | </voice> |
338 | </phrase> | 338 | </phrase> |
339 | <phrase> | 339 | <phrase> |
@@ -539,20 +539,6 @@ | |||
539 | </voice> | 539 | </voice> |
540 | </phrase> | 540 | </phrase> |
541 | <phrase> | 541 | <phrase> |
542 | id: LANG_BOOKMARK_CONTEXT_DELETE | ||
543 | desc: bookmark context menu, delete this bookmark | ||
544 | user: core | ||
545 | <source> | ||
546 | *: "Delete" | ||
547 | </source> | ||
548 | <dest> | ||
549 | *: "Cancella" | ||
550 | </dest> | ||
551 | <voice> | ||
552 | *: "Cancella" | ||
553 | </voice> | ||
554 | </phrase> | ||
555 | <phrase> | ||
556 | id: LANG_AUTO_BOOKMARK_QUERY | 542 | id: LANG_AUTO_BOOKMARK_QUERY |
557 | desc: prompt for user to decide to create an bookmark | 543 | desc: prompt for user to decide to create an bookmark |
558 | user: core | 544 | user: core |
@@ -630,10 +616,10 @@ | |||
630 | *: "Volume" | 616 | *: "Volume" |
631 | </source> | 617 | </source> |
632 | <dest> | 618 | <dest> |
633 | *: "Volume" | 619 | *: "~Volume" |
634 | </dest> | 620 | </dest> |
635 | <voice> | 621 | <voice> |
636 | *: "Volume" | 622 | *: "~Volume" |
637 | </voice> | 623 | </voice> |
638 | </phrase> | 624 | </phrase> |
639 | <phrase> | 625 | <phrase> |
@@ -694,30 +680,30 @@ | |||
694 | </phrase> | 680 | </phrase> |
695 | <phrase> | 681 | <phrase> |
696 | id: LANG_CHANNEL_STEREO | 682 | id: LANG_CHANNEL_STEREO |
697 | desc: in sound_settings | 683 | desc: in sound_settings and radio screen |
698 | user: core | 684 | user: core |
699 | <source> | 685 | <source> |
700 | *: "Stereo" | 686 | *: "Stereo" |
701 | </source> | 687 | </source> |
702 | <dest> | 688 | <dest> |
703 | *: "Stereo" | 689 | *: "~Stereo" |
704 | </dest> | 690 | </dest> |
705 | <voice> | 691 | <voice> |
706 | *: "Stereo" | 692 | *: "~Stereo" |
707 | </voice> | 693 | </voice> |
708 | </phrase> | 694 | </phrase> |
709 | <phrase> | 695 | <phrase> |
710 | id: LANG_CHANNEL_MONO | 696 | id: LANG_CHANNEL_MONO |
711 | desc: in sound_settings | 697 | desc: in sound_settings and radio screen |
712 | user: core | 698 | user: core |
713 | <source> | 699 | <source> |
714 | *: "Mono" | 700 | *: "Mono" |
715 | </source> | 701 | </source> |
716 | <dest> | 702 | <dest> |
717 | *: "Mono" | 703 | *: "~Mono" |
718 | </dest> | 704 | </dest> |
719 | <voice> | 705 | <voice> |
720 | *: "Mono" | 706 | *: "~Mono" |
721 | </voice> | 707 | </voice> |
722 | </phrase> | 708 | </phrase> |
723 | <phrase> | 709 | <phrase> |
@@ -787,10 +773,10 @@ | |||
787 | *: "Karaoke" | 773 | *: "Karaoke" |
788 | </source> | 774 | </source> |
789 | <dest> | 775 | <dest> |
790 | *: "Karaoke" | 776 | *: "~Karaoke" |
791 | </dest> | 777 | </dest> |
792 | <voice> | 778 | <voice> |
793 | *: "Karaoke" | 779 | *: "~Karaoke" |
794 | </voice> | 780 | </voice> |
795 | </phrase> | 781 | </phrase> |
796 | <phrase> | 782 | <phrase> |
@@ -815,7 +801,7 @@ | |||
815 | *: "Crossfeed" | 801 | *: "Crossfeed" |
816 | </source> | 802 | </source> |
817 | <dest> | 803 | <dest> |
818 | *: "Crossfeed" | 804 | *: "~Crossfeed" |
819 | </dest> | 805 | </dest> |
820 | <voice> | 806 | <voice> |
821 | *: "Crossfid" | 807 | *: "Crossfid" |
@@ -990,20 +976,6 @@ | |||
990 | </voice> | 976 | </voice> |
991 | </phrase> | 977 | </phrase> |
992 | <phrase> | 978 | <phrase> |
993 | id: LANG_EQUALIZER_EDIT_MODE | ||
994 | desc: in the equalizer settings menu | ||
995 | user: core | ||
996 | <source> | ||
997 | *: "Edit mode: %s" | ||
998 | </source> | ||
999 | <dest> | ||
1000 | *: "Modo editing: %s" | ||
1001 | </dest> | ||
1002 | <voice> | ||
1003 | *: "" | ||
1004 | </voice> | ||
1005 | </phrase> | ||
1006 | <phrase> | ||
1007 | id: LANG_EQUALIZER_GAIN_ITEM | 979 | id: LANG_EQUALIZER_GAIN_ITEM |
1008 | desc: in the equalizer settings menu | 980 | desc: in the equalizer settings menu |
1009 | user: core | 981 | user: core |
@@ -1109,10 +1081,10 @@ | |||
1109 | *: "Dithering" | 1081 | *: "Dithering" |
1110 | </source> | 1082 | </source> |
1111 | <dest> | 1083 | <dest> |
1112 | *: "Dithering" | 1084 | *: "~Dithering" |
1113 | </dest> | 1085 | </dest> |
1114 | <voice> | 1086 | <voice> |
1115 | *: "Dithering" | 1087 | *: "~Dithering" |
1116 | </voice> | 1088 | </voice> |
1117 | </phrase> | 1089 | </phrase> |
1118 | <phrase> | 1090 | <phrase> |
@@ -1324,11 +1296,11 @@ | |||
1324 | </source> | 1296 | </source> |
1325 | <dest> | 1297 | <dest> |
1326 | *: none | 1298 | *: none |
1327 | crossfade: "Crossfade" | 1299 | crossfade: "~Crossfade" |
1328 | </dest> | 1300 | </dest> |
1329 | <voice> | 1301 | <voice> |
1330 | *: none | 1302 | *: none |
1331 | crossfade: "Crossfade" | 1303 | crossfade: "~Crossfade" |
1332 | </voice> | 1304 | </voice> |
1333 | </phrase> | 1305 | </phrase> |
1334 | <phrase> | 1306 | <phrase> |
@@ -1477,11 +1449,11 @@ | |||
1477 | </source> | 1449 | </source> |
1478 | <dest> | 1450 | <dest> |
1479 | *: none | 1451 | *: none |
1480 | crossfade: "Mix" | 1452 | crossfade: "~Mix" |
1481 | </dest> | 1453 | </dest> |
1482 | <voice> | 1454 | <voice> |
1483 | *: none | 1455 | *: none |
1484 | crossfade: "Mix" | 1456 | crossfade: "~Mix" |
1485 | </voice> | 1457 | </voice> |
1486 | </phrase> | 1458 | </phrase> |
1487 | <phrase> | 1459 | <phrase> |
@@ -1492,10 +1464,10 @@ | |||
1492 | *: "Replaygain" | 1464 | *: "Replaygain" |
1493 | </source> | 1465 | </source> |
1494 | <dest> | 1466 | <dest> |
1495 | *: "Replaygain" | 1467 | *: "~Replaygain" |
1496 | </dest> | 1468 | </dest> |
1497 | <voice> | 1469 | <voice> |
1498 | *: "Replaygain" | 1470 | *: "~Replaygain" |
1499 | </voice> | 1471 | </voice> |
1500 | </phrase> | 1472 | </phrase> |
1501 | <phrase> | 1473 | <phrase> |
@@ -2159,10 +2131,10 @@ | |||
2159 | *: "Display" | 2131 | *: "Display" |
2160 | </source> | 2132 | </source> |
2161 | <dest> | 2133 | <dest> |
2162 | *: "Display" | 2134 | *: "~Display" |
2163 | </dest> | 2135 | </dest> |
2164 | <voice> | 2136 | <voice> |
2165 | *: "Display" | 2137 | *: "~Display" |
2166 | </voice> | 2138 | </voice> |
2167 | </phrase> | 2139 | </phrase> |
2168 | <phrase> | 2140 | <phrase> |
@@ -2264,11 +2236,11 @@ | |||
2264 | hold_button: "Backlight on Hold" | 2236 | hold_button: "Backlight on Hold" |
2265 | </source> | 2237 | </source> |
2266 | <dest> | 2238 | <dest> |
2267 | *: "Backlight on Lock" | 2239 | *: "Retroilluminazione su Blocco" |
2268 | hold_button: "Retroilluminazione Sul tasto di blocco" | 2240 | hold_button: "Retroilluminazione Sul tasto di blocco" |
2269 | </dest> | 2241 | </dest> |
2270 | <voice> | 2242 | <voice> |
2271 | *: "Backlight on Lock" | 2243 | *: "Retroilluminazione su Blocco" |
2272 | hold_button: "RetroIlluminazione sul tasto di blocco" | 2244 | hold_button: "RetroIlluminazione sul tasto di blocco" |
2273 | </voice> | 2245 | </voice> |
2274 | </phrase> | 2246 | </phrase> |
@@ -3090,10 +3062,10 @@ | |||
3090 | *: "Latin1 (ISO-8859-1)" | 3062 | *: "Latin1 (ISO-8859-1)" |
3091 | </source> | 3063 | </source> |
3092 | <dest> | 3064 | <dest> |
3093 | *: "Latin1 (ISO-8859-1)" | 3065 | *: "~Latin1 (ISO-8859-1)" |
3094 | </dest> | 3066 | </dest> |
3095 | <voice> | 3067 | <voice> |
3096 | *: "Latin1" | 3068 | *: "~Latin 1" |
3097 | </voice> | 3069 | </voice> |
3098 | </phrase> | 3070 | </phrase> |
3099 | <phrase> | 3071 | <phrase> |
@@ -3146,10 +3118,10 @@ | |||
3146 | *: "Thai (ISO-8859-11)" | 3118 | *: "Thai (ISO-8859-11)" |
3147 | </source> | 3119 | </source> |
3148 | <dest> | 3120 | <dest> |
3149 | *: "Thai (ISO-8859-11)" | 3121 | *: "~Thai (ISO-8859-11)" |
3150 | </dest> | 3122 | </dest> |
3151 | <voice> | 3123 | <voice> |
3152 | *: "Thai" | 3124 | *: "~Thai" |
3153 | </voice> | 3125 | </voice> |
3154 | </phrase> | 3126 | </phrase> |
3155 | <phrase> | 3127 | <phrase> |
@@ -3258,10 +3230,10 @@ | |||
3258 | *: "Unicode (UTF-8)" | 3230 | *: "Unicode (UTF-8)" |
3259 | </source> | 3231 | </source> |
3260 | <dest> | 3232 | <dest> |
3261 | *: "Unicode (UTF-8)" | 3233 | *: "~Unicode (UTF-8)" |
3262 | </dest> | 3234 | </dest> |
3263 | <voice> | 3235 | <voice> |
3264 | *: "Unicode" | 3236 | *: "~Unicode" |
3265 | </voice> | 3237 | </voice> |
3266 | </phrase> | 3238 | </phrase> |
3267 | <phrase> | 3239 | <phrase> |
@@ -3759,7 +3731,7 @@ | |||
3759 | *: "Feb" | 3731 | *: "Feb" |
3760 | </source> | 3732 | </source> |
3761 | <dest> | 3733 | <dest> |
3762 | *: "Feb" | 3734 | *: "~Feb" |
3763 | </dest> | 3735 | </dest> |
3764 | <voice> | 3736 | <voice> |
3765 | *: "Febbraio" | 3737 | *: "Febbraio" |
@@ -3773,7 +3745,7 @@ | |||
3773 | *: "Mar" | 3745 | *: "Mar" |
3774 | </source> | 3746 | </source> |
3775 | <dest> | 3747 | <dest> |
3776 | *: "Mar" | 3748 | *: "~Mar" |
3777 | </dest> | 3749 | </dest> |
3778 | <voice> | 3750 | <voice> |
3779 | *: "Marzo" | 3751 | *: "Marzo" |
@@ -3787,7 +3759,7 @@ | |||
3787 | *: "Apr" | 3759 | *: "Apr" |
3788 | </source> | 3760 | </source> |
3789 | <dest> | 3761 | <dest> |
3790 | *: "Apr" | 3762 | *: "~Apr" |
3791 | </dest> | 3763 | </dest> |
3792 | <voice> | 3764 | <voice> |
3793 | *: "Aprile" | 3765 | *: "Aprile" |
@@ -3885,7 +3857,7 @@ | |||
3885 | *: "Nov" | 3857 | *: "Nov" |
3886 | </source> | 3858 | </source> |
3887 | <dest> | 3859 | <dest> |
3888 | *: "Nov" | 3860 | *: "~Nov" |
3889 | </dest> | 3861 | </dest> |
3890 | <voice> | 3862 | <voice> |
3891 | *: "Novembre" | 3863 | *: "Novembre" |
@@ -4061,23 +4033,6 @@ | |||
4061 | </voice> | 4033 | </voice> |
4062 | </phrase> | 4034 | </phrase> |
4063 | <phrase> | 4035 | <phrase> |
4064 | id: LANG_ALARM_MOD_SHUTDOWN | ||
4065 | desc: The text that tells the user that the alarm time is ok and the device shuts off (for the RTC alarm mod). | ||
4066 | user: core | ||
4067 | <source> | ||
4068 | *: none | ||
4069 | alarm: "Alarm Set" | ||
4070 | </source> | ||
4071 | <dest> | ||
4072 | *: none | ||
4073 | alarm: "Imposta Allarme" | ||
4074 | </dest> | ||
4075 | <voice> | ||
4076 | *: none | ||
4077 | alarm: "Imposta Allarme" | ||
4078 | </voice> | ||
4079 | </phrase> | ||
4080 | <phrase> | ||
4081 | id: LANG_ALARM_MOD_ERROR | 4036 | id: LANG_ALARM_MOD_ERROR |
4082 | desc: The text that tells that the time is incorrect (for the RTC alarm mod). | 4037 | desc: The text that tells that the time is incorrect (for the RTC alarm mod). |
4083 | user: core | 4038 | user: core |
@@ -4095,20 +4050,6 @@ | |||
4095 | </voice> | 4050 | </voice> |
4096 | </phrase> | 4051 | </phrase> |
4097 | <phrase> | 4052 | <phrase> |
4098 | id: LANG_ALARM_MOD_KEYS | ||
4099 | desc: deprecated | ||
4100 | user: core | ||
4101 | <source> | ||
4102 | *: "" | ||
4103 | </source> | ||
4104 | <dest> | ||
4105 | *: "" | ||
4106 | </dest> | ||
4107 | <voice> | ||
4108 | *: "" | ||
4109 | </voice> | ||
4110 | </phrase> | ||
4111 | <phrase> | ||
4112 | id: LANG_ALARM_MOD_DISABLE | 4053 | id: LANG_ALARM_MOD_DISABLE |
4113 | desc: Announce that the RTC alarm has been turned off | 4054 | desc: Announce that the RTC alarm has been turned off |
4114 | user: core | 4055 | user: core |
@@ -5040,11 +4981,11 @@ | |||
5040 | </source> | 4981 | </source> |
5041 | <dest> | 4982 | <dest> |
5042 | *: none | 4983 | *: none |
5043 | recording: "Bitrate" | 4984 | recording: "~Bitrate" |
5044 | </dest> | 4985 | </dest> |
5045 | <voice> | 4986 | <voice> |
5046 | *: none | 4987 | *: none |
5047 | recording: "Bitrate" | 4988 | recording: "~Bitrate" |
5048 | </voice> | 4989 | </voice> |
5049 | </phrase> | 4990 | </phrase> |
5050 | <phrase> | 4991 | <phrase> |
@@ -5306,38 +5247,6 @@ | |||
5306 | </voice> | 5247 | </voice> |
5307 | </phrase> | 5248 | </phrase> |
5308 | <phrase> | 5249 | <phrase> |
5309 | id: LANG_RECORD_DIRECTORY | ||
5310 | desc: in recording settings_menu | ||
5311 | user: core | ||
5312 | <source> | ||
5313 | *: none | ||
5314 | recording: "Directory" | ||
5315 | </source> | ||
5316 | <dest> | ||
5317 | *: none | ||
5318 | recording: "Cartella" | ||
5319 | </dest> | ||
5320 | <voice> | ||
5321 | *: none | ||
5322 | recording: "Cartella" | ||
5323 | </voice> | ||
5324 | </phrase> | ||
5325 | <phrase> | ||
5326 | id: LANG_SET_AS_REC_DIR | ||
5327 | desc: deprecated | ||
5328 | user: core | ||
5329 | <source> | ||
5330 | *: none | ||
5331 | recording: "" | ||
5332 | </source> | ||
5333 | <dest> | ||
5334 | *: "" | ||
5335 | </dest> | ||
5336 | <voice> | ||
5337 | *: "" | ||
5338 | </voice> | ||
5339 | </phrase> | ||
5340 | <phrase> | ||
5341 | id: LANG_CLEAR_REC_DIR | 5250 | id: LANG_CLEAR_REC_DIR |
5342 | desc: | 5251 | desc: |
5343 | user: core | 5252 | user: core |
@@ -5517,11 +5426,11 @@ | |||
5517 | </source> | 5426 | </source> |
5518 | <dest> | 5427 | <dest> |
5519 | *: none | 5428 | *: none |
5520 | recording: "Stop" | 5429 | recording: "~Stop" |
5521 | </dest> | 5430 | </dest> |
5522 | <voice> | 5431 | <voice> |
5523 | *: none | 5432 | *: none |
5524 | recording: "Stop" | 5433 | recording: "~Stop" |
5525 | </voice> | 5434 | </voice> |
5526 | </phrase> | 5435 | </phrase> |
5527 | <phrase> | 5436 | <phrase> |
@@ -5946,10 +5855,10 @@ | |||
5946 | *: "Rockbox Info" | 5855 | *: "Rockbox Info" |
5947 | </source> | 5856 | </source> |
5948 | <dest> | 5857 | <dest> |
5949 | *: "Rockbox Info" | 5858 | *: "~Rockbox Info" |
5950 | </dest> | 5859 | </dest> |
5951 | <voice> | 5860 | <voice> |
5952 | *: "Rockbox Info" | 5861 | *: "~Rockbox Info" |
5953 | </voice> | 5862 | </voice> |
5954 | </phrase> | 5863 | </phrase> |
5955 | <phrase> | 5864 | <phrase> |
@@ -5960,7 +5869,7 @@ | |||
5960 | *: "Buffer:" | 5869 | *: "Buffer:" |
5961 | </source> | 5870 | </source> |
5962 | <dest> | 5871 | <dest> |
5963 | *: "Buffer:" | 5872 | *: "~Buffer:" |
5964 | </dest> | 5873 | </dest> |
5965 | <voice> | 5874 | <voice> |
5966 | *: "Dimensione buffer" | 5875 | *: "Dimensione buffer" |
@@ -5976,7 +5885,7 @@ | |||
5976 | </source> | 5885 | </source> |
5977 | <dest> | 5886 | <dest> |
5978 | *: "Batteria: %d%% %dh %dm" | 5887 | *: "Batteria: %d%% %dh %dm" |
5979 | ipodmini1g,ipodmini2g,iriverh10: "Batt: %d%% %dh %dm" | 5888 | ipodmini1g,ipodmini2g,iriverh10: "~Batt: %d%% %dh %dm" |
5980 | </dest> | 5889 | </dest> |
5981 | <voice> | 5890 | <voice> |
5982 | *: "Livello Batteria" | 5891 | *: "Livello Batteria" |
@@ -6020,14 +5929,14 @@ | |||
6020 | xduoox3: "mSD1:" | 5929 | xduoox3: "mSD1:" |
6021 | </source> | 5930 | </source> |
6022 | <dest> | 5931 | <dest> |
6023 | *: "Int:" | 5932 | *: "~Int:" |
6024 | hibylinux: "mSD:" | 5933 | hibylinux: "~mSD:" |
6025 | xduoox3: "MSD1:" | 5934 | xduoox3: "~mSD1:" |
6026 | </dest> | 5935 | </dest> |
6027 | <voice> | 5936 | <voice> |
6028 | *: "Interno" | 5937 | *: "Interno" |
6029 | hibylinux: "micro S D" | 5938 | hibylinux: "~micro S D" |
6030 | xduoox3: "Micro SD 1" | 5939 | xduoox3: "~Micro S D 1" |
6031 | </voice> | 5940 | </voice> |
6032 | </phrase> | 5941 | </phrase> |
6033 | <phrase> | 5942 | <phrase> |
@@ -6043,17 +5952,17 @@ | |||
6043 | </source> | 5952 | </source> |
6044 | <dest> | 5953 | <dest> |
6045 | *: none | 5954 | *: none |
6046 | hibylinux: "USB:" | 5955 | hibylinux: "~USB:" |
6047 | multivolume: "HD1" | 5956 | multivolume: "~HD1" |
6048 | sansac200*,sansaclipplus,sansae200*,sansafuze*: "MSD:" | 5957 | sansac200*,sansaclipplus,sansae200*,sansafuze*: "~mSD:" |
6049 | xduoox3: "MSD2:" | 5958 | xduoox3: "~mSD2:" |
6050 | </dest> | 5959 | </dest> |
6051 | <voice> | 5960 | <voice> |
6052 | *: none | 5961 | *: none |
6053 | hibylinux: "U S B" | 5962 | hibylinux: "~U S B" |
6054 | multivolume: "HD 1" | 5963 | multivolume: "~H D 1" |
6055 | sansac200*,sansaclipplus,sansae200*,sansafuze*: "Micro S D" | 5964 | sansac200*,sansaclipplus,sansae200*,sansafuze*: "~micro S D" |
6056 | xduoox3: "Micro SD 2" | 5965 | xduoox3: "~micro SD 2" |
6057 | </voice> | 5966 | </voice> |
6058 | </phrase> | 5967 | </phrase> |
6059 | <phrase> | 5968 | <phrase> |
@@ -6134,66 +6043,10 @@ | |||
6134 | *: "Playlist" | 6043 | *: "Playlist" |
6135 | </source> | 6044 | </source> |
6136 | <dest> | 6045 | <dest> |
6137 | *: "Playlist" | 6046 | *: "~Playlist" |
6138 | </dest> | ||
6139 | <voice> | ||
6140 | *: "Playlist" | ||
6141 | </voice> | ||
6142 | </phrase> | ||
6143 | <phrase> | ||
6144 | id: LANG_INSERT | ||
6145 | desc: deprecated | ||
6146 | user: core | ||
6147 | <source> | ||
6148 | *: "" | ||
6149 | </source> | ||
6150 | <dest> | ||
6151 | *: "" | ||
6152 | </dest> | ||
6153 | <voice> | ||
6154 | *: "" | ||
6155 | </voice> | ||
6156 | </phrase> | ||
6157 | <phrase> | ||
6158 | id: LANG_INSERT_FIRST | ||
6159 | desc: deprecated | ||
6160 | user: core | ||
6161 | <source> | ||
6162 | *: "" | ||
6163 | </source> | ||
6164 | <dest> | ||
6165 | *: "" | ||
6166 | </dest> | 6047 | </dest> |
6167 | <voice> | 6048 | <voice> |
6168 | *: "" | 6049 | *: "~Playlist" |
6169 | </voice> | ||
6170 | </phrase> | ||
6171 | <phrase> | ||
6172 | id: LANG_INSERT_LAST | ||
6173 | desc: deprecated | ||
6174 | user: core | ||
6175 | <source> | ||
6176 | *: "" | ||
6177 | </source> | ||
6178 | <dest> | ||
6179 | *: "" | ||
6180 | </dest> | ||
6181 | <voice> | ||
6182 | *: "" | ||
6183 | </voice> | ||
6184 | </phrase> | ||
6185 | <phrase> | ||
6186 | id: LANG_INSERT_SHUFFLED | ||
6187 | desc: deprecated | ||
6188 | user: core | ||
6189 | <source> | ||
6190 | *: "" | ||
6191 | </source> | ||
6192 | <dest> | ||
6193 | *: "" | ||
6194 | </dest> | ||
6195 | <voice> | ||
6196 | *: "" | ||
6197 | </voice> | 6050 | </voice> |
6198 | </phrase> | 6051 | </phrase> |
6199 | <phrase> | 6052 | <phrase> |
@@ -6253,20 +6106,6 @@ | |||
6253 | </voice> | 6106 | </voice> |
6254 | </phrase> | 6107 | </phrase> |
6255 | <phrase> | 6108 | <phrase> |
6256 | id: LANG_REPLACE | ||
6257 | desc: deprecated | ||
6258 | user: core | ||
6259 | <source> | ||
6260 | *: "" | ||
6261 | </source> | ||
6262 | <dest> | ||
6263 | *: "" | ||
6264 | </dest> | ||
6265 | <voice> | ||
6266 | *: "" | ||
6267 | </voice> | ||
6268 | </phrase> | ||
6269 | <phrase> | ||
6270 | id: LANG_PLAYLIST_INSERT_COUNT | 6109 | id: LANG_PLAYLIST_INSERT_COUNT |
6271 | desc: splash number of tracks inserted | 6110 | desc: splash number of tracks inserted |
6272 | user: core | 6111 | user: core |
@@ -6351,34 +6190,6 @@ | |||
6351 | </voice> | 6190 | </voice> |
6352 | </phrase> | 6191 | </phrase> |
6353 | <phrase> | 6192 | <phrase> |
6354 | id: LANG_CATALOG_VIEW | ||
6355 | desc: in onplay playlist catalogue submenu | ||
6356 | user: core | ||
6357 | <source> | ||
6358 | *: "View Catalogue" | ||
6359 | </source> | ||
6360 | <dest> | ||
6361 | *: "Visualizza catalogo" | ||
6362 | </dest> | ||
6363 | <voice> | ||
6364 | *: "Visualizza catalogo" | ||
6365 | </voice> | ||
6366 | </phrase> | ||
6367 | <phrase> | ||
6368 | id: LANG_CATALOG_ADD_TO | ||
6369 | desc: deprecated | ||
6370 | user: core | ||
6371 | <source> | ||
6372 | *: "" | ||
6373 | </source> | ||
6374 | <dest> | ||
6375 | *: "" | ||
6376 | </dest> | ||
6377 | <voice> | ||
6378 | *: "" | ||
6379 | </voice> | ||
6380 | </phrase> | ||
6381 | <phrase> | ||
6382 | id: LANG_CATALOG_ADD_TO_NEW | 6193 | id: LANG_CATALOG_ADD_TO_NEW |
6383 | desc: in onplay playlist catalogue submenu | 6194 | desc: in onplay playlist catalogue submenu |
6384 | user: core | 6195 | user: core |
@@ -6554,10 +6365,10 @@ | |||
6554 | *: "Album" | 6365 | *: "Album" |
6555 | </source> | 6366 | </source> |
6556 | <dest> | 6367 | <dest> |
6557 | *: "Album" | 6368 | *: "~Album" |
6558 | </dest> | 6369 | </dest> |
6559 | <voice> | 6370 | <voice> |
6560 | *: "Album" | 6371 | *: "~Album" |
6561 | </voice> | 6372 | </voice> |
6562 | </phrase> | 6373 | </phrase> |
6563 | <phrase> | 6374 | <phrase> |
@@ -6624,10 +6435,10 @@ | |||
6624 | *: "Playlist" | 6435 | *: "Playlist" |
6625 | </source> | 6436 | </source> |
6626 | <dest> | 6437 | <dest> |
6627 | *: "Playlist" | 6438 | *: "~Playlist" |
6628 | </dest> | 6439 | </dest> |
6629 | <voice> | 6440 | <voice> |
6630 | *: "Playlist" | 6441 | *: "~Playlist" |
6631 | </voice> | 6442 | </voice> |
6632 | </phrase> | 6443 | </phrase> |
6633 | <phrase> | 6444 | <phrase> |
@@ -6638,10 +6449,10 @@ | |||
6638 | *: "Bitrate" | 6449 | *: "Bitrate" |
6639 | </source> | 6450 | </source> |
6640 | <dest> | 6451 | <dest> |
6641 | *: "Bitrate" | 6452 | *: "~Bitrate" |
6642 | </dest> | 6453 | </dest> |
6643 | <voice> | 6454 | <voice> |
6644 | *: "Bitrate" | 6455 | *: "~Bit rate" |
6645 | </voice> | 6456 | </voice> |
6646 | </phrase> | 6457 | </phrase> |
6647 | <phrase> | 6458 | <phrase> |
@@ -6666,7 +6477,7 @@ | |||
6666 | *: "Discnum" | 6477 | *: "Discnum" |
6667 | </source> | 6478 | </source> |
6668 | <dest> | 6479 | <dest> |
6669 | *: "Discnum" | 6480 | *: "Numdisco" |
6670 | </dest> | 6481 | </dest> |
6671 | <voice> | 6482 | <voice> |
6672 | *: "Numero disco" | 6483 | *: "Numero disco" |
@@ -6729,20 +6540,6 @@ | |||
6729 | </voice> | 6540 | </voice> |
6730 | </phrase> | 6541 | </phrase> |
6731 | <phrase> | 6542 | <phrase> |
6732 | id: LANG_ID3_ALBUM_GAIN | ||
6733 | desc: in tag viewer | ||
6734 | user: core | ||
6735 | <source> | ||
6736 | *: "Album Gain" | ||
6737 | </source> | ||
6738 | <dest> | ||
6739 | *: "Guadagno Album" | ||
6740 | </dest> | ||
6741 | <voice> | ||
6742 | *: "Guadagno Album" | ||
6743 | </voice> | ||
6744 | </phrase> | ||
6745 | <phrase> | ||
6746 | id: LANG_ID3_PATH | 6543 | id: LANG_ID3_PATH |
6747 | desc: in tag viewer | 6544 | desc: in tag viewer |
6748 | user: core | 6545 | user: core |
@@ -7153,20 +6950,6 @@ | |||
7153 | </voice> | 6950 | </voice> |
7154 | </phrase> | 6951 | </phrase> |
7155 | <phrase> | 6952 | <phrase> |
7156 | id: LANG_PLAYLIST_CONTROL_UPDATE_ERROR | ||
7157 | desc: Playlist error | ||
7158 | user: core | ||
7159 | <source> | ||
7160 | *: "Error updating playlist control file" | ||
7161 | </source> | ||
7162 | <dest> | ||
7163 | *: "Errore di aggiornamento file controllo playlist" | ||
7164 | </dest> | ||
7165 | <voice> | ||
7166 | *: "Errore di aggiornamento file controllo playlist" | ||
7167 | </voice> | ||
7168 | </phrase> | ||
7169 | <phrase> | ||
7170 | id: LANG_PLAYLIST_ACCESS_ERROR | 6953 | id: LANG_PLAYLIST_ACCESS_ERROR |
7171 | desc: Playlist error | 6954 | desc: Playlist error |
7172 | user: core | 6955 | user: core |
@@ -7352,23 +7135,6 @@ | |||
7352 | </voice> | 7135 | </voice> |
7353 | </phrase> | 7136 | </phrase> |
7354 | <phrase> | 7137 | <phrase> |
7355 | id: LANG_DB_INF | ||
7356 | desc: -inf db for values below measurement | ||
7357 | user: core | ||
7358 | <source> | ||
7359 | *: none | ||
7360 | recording: "-inf" | ||
7361 | </source> | ||
7362 | <dest> | ||
7363 | *: none | ||
7364 | recording: "-inf" | ||
7365 | </dest> | ||
7366 | <voice> | ||
7367 | *: none | ||
7368 | recording: "meno infinito" | ||
7369 | </voice> | ||
7370 | </phrase> | ||
7371 | <phrase> | ||
7372 | id: LANG_BOOT_CHANGED | 7138 | id: LANG_BOOT_CHANGED |
7373 | desc: File browser discovered the boot file was changed | 7139 | desc: File browser discovered the boot file was changed |
7374 | user: core | 7140 | user: core |
@@ -7594,23 +7360,6 @@ | |||
7594 | </voice> | 7360 | </voice> |
7595 | </phrase> | 7361 | </phrase> |
7596 | <phrase> | 7362 | <phrase> |
7597 | id: LANG_BATTERY_TRICKLE_CHARGE | ||
7598 | desc: in info display, shows that trickle charge is running | ||
7599 | user: core | ||
7600 | <source> | ||
7601 | *: none | ||
7602 | charging: "Battery: Trickle Chg" | ||
7603 | </source> | ||
7604 | <dest> | ||
7605 | *: none | ||
7606 | charging: "Batteria: Mantenimento carica" | ||
7607 | </dest> | ||
7608 | <voice> | ||
7609 | *: none | ||
7610 | charging: "Mantenimento carica" | ||
7611 | </voice> | ||
7612 | </phrase> | ||
7613 | <phrase> | ||
7614 | id: LANG_WARNING_BATTERY_LOW | 7363 | id: LANG_WARNING_BATTERY_LOW |
7615 | desc: general warning | 7364 | desc: general warning |
7616 | user: core | 7365 | user: core |
@@ -8265,7 +8014,7 @@ | |||
8265 | *: "" | 8014 | *: "" |
8266 | </dest> | 8015 | </dest> |
8267 | <voice> | 8016 | <voice> |
8268 | *: "decibel" | 8017 | *: "~decibel" |
8269 | </voice> | 8018 | </voice> |
8270 | </phrase> | 8019 | </phrase> |
8271 | <phrase> | 8020 | <phrase> |
@@ -8307,7 +8056,7 @@ | |||
8307 | *: "" | 8056 | *: "" |
8308 | </dest> | 8057 | </dest> |
8309 | <voice> | 8058 | <voice> |
8310 | *: "pixel" | 8059 | *: "~pixel" |
8311 | </voice> | 8060 | </voice> |
8312 | </phrase> | 8061 | </phrase> |
8313 | <phrase> | 8062 | <phrase> |
@@ -8335,7 +8084,7 @@ | |||
8335 | *: "" | 8084 | *: "" |
8336 | </dest> | 8085 | </dest> |
8337 | <voice> | 8086 | <voice> |
8338 | *: "hertz" | 8087 | *: "~hertz" |
8339 | </voice> | 8088 | </voice> |
8340 | </phrase> | 8089 | </phrase> |
8341 | <phrase> | 8090 | <phrase> |
@@ -8559,7 +8308,7 @@ | |||
8559 | *: "" | 8308 | *: "" |
8560 | </dest> | 8309 | </dest> |
8561 | <voice> | 8310 | <voice> |
8562 | *: ".....Oh" | 8311 | *: "~O" |
8563 | </voice> | 8312 | </voice> |
8564 | </phrase> | 8313 | </phrase> |
8565 | <phrase> | 8314 | <phrase> |
@@ -8573,7 +8322,7 @@ | |||
8573 | *: "" | 8322 | *: "" |
8574 | </dest> | 8323 | </dest> |
8575 | <voice> | 8324 | <voice> |
8576 | *: ".....PI" | 8325 | *: "~P" |
8577 | </voice> | 8326 | </voice> |
8578 | </phrase> | 8327 | </phrase> |
8579 | <phrase> | 8328 | <phrase> |
@@ -8587,7 +8336,7 @@ | |||
8587 | *: "" | 8336 | *: "" |
8588 | </dest> | 8337 | </dest> |
8589 | <voice> | 8338 | <voice> |
8590 | *: ".....KU" | 8339 | *: "~Q" |
8591 | </voice> | 8340 | </voice> |
8592 | </phrase> | 8341 | </phrase> |
8593 | <phrase> | 8342 | <phrase> |
@@ -8629,7 +8378,7 @@ | |||
8629 | *: "" | 8378 | *: "" |
8630 | </dest> | 8379 | </dest> |
8631 | <voice> | 8380 | <voice> |
8632 | *: ".....TI" | 8381 | *: "~T" |
8633 | </voice> | 8382 | </voice> |
8634 | </phrase> | 8383 | </phrase> |
8635 | <phrase> | 8384 | <phrase> |
@@ -8755,7 +8504,7 @@ | |||
8755 | *: "" | 8504 | *: "" |
8756 | </dest> | 8505 | </dest> |
8757 | <voice> | 8506 | <voice> |
8758 | *: "file" | 8507 | *: "fail" |
8759 | </voice> | 8508 | </voice> |
8760 | </phrase> | 8509 | </phrase> |
8761 | <phrase> | 8510 | <phrase> |
@@ -8783,7 +8532,7 @@ | |||
8783 | *: "" | 8532 | *: "" |
8784 | </dest> | 8533 | </dest> |
8785 | <voice> | 8534 | <voice> |
8786 | *: "audio" | 8535 | *: "~audio" |
8787 | </voice> | 8536 | </voice> |
8788 | </phrase> | 8537 | </phrase> |
8789 | <phrase> | 8538 | <phrase> |
@@ -8825,7 +8574,7 @@ | |||
8825 | *: "" | 8574 | *: "" |
8826 | </dest> | 8575 | </dest> |
8827 | <voice> | 8576 | <voice> |
8828 | *: "plugin" | 8577 | *: "~plugin" |
8829 | </voice> | 8578 | </voice> |
8830 | </phrase> | 8579 | </phrase> |
8831 | <phrase> | 8580 | <phrase> |
@@ -8867,7 +8616,7 @@ | |||
8867 | *: "" | 8616 | *: "" |
8868 | </dest> | 8617 | </dest> |
8869 | <voice> | 8618 | <voice> |
8870 | *: "firmware" | 8619 | *: "~firmware" |
8871 | </voice> | 8620 | </voice> |
8872 | </phrase> | 8621 | </phrase> |
8873 | <phrase> | 8622 | <phrase> |
@@ -8912,7 +8661,7 @@ | |||
8912 | *: "" | 8661 | *: "" |
8913 | </dest> | 8662 | </dest> |
8914 | <voice> | 8663 | <voice> |
8915 | *: "cuesheet" | 8664 | *: "~cuesheet" |
8916 | </voice> | 8665 | </voice> |
8917 | </phrase> | 8666 | </phrase> |
8918 | <phrase> | 8667 | <phrase> |
@@ -9139,7 +8888,7 @@ | |||
9139 | *: "" | 8888 | *: "" |
9140 | </dest> | 8889 | </dest> |
9141 | <voice> | 8890 | <voice> |
9142 | *: "P M" | 8891 | *: "~P M" |
9143 | </voice> | 8892 | </voice> |
9144 | </phrase> | 8893 | </phrase> |
9145 | <phrase> | 8894 | <phrase> |
@@ -9153,7 +8902,7 @@ | |||
9153 | *: "" | 8902 | *: "" |
9154 | </dest> | 8903 | </dest> |
9155 | <voice> | 8904 | <voice> |
9156 | *: "A M" | 8905 | *: "~A M" |
9157 | </voice> | 8906 | </voice> |
9158 | </phrase> | 8907 | </phrase> |
9159 | <phrase> | 8908 | <phrase> |
@@ -9567,7 +9316,7 @@ | |||
9567 | *: "" | 9316 | *: "" |
9568 | </dest> | 9317 | </dest> |
9569 | <voice> | 9318 | <voice> |
9570 | *: "OK" | 9319 | *: "~OK" |
9571 | </voice> | 9320 | </voice> |
9572 | </phrase> | 9321 | </phrase> |
9573 | <phrase> | 9322 | <phrase> |
@@ -9648,7 +9397,7 @@ | |||
9648 | </source> | 9397 | </source> |
9649 | <dest> | 9398 | <dest> |
9650 | *: none | 9399 | *: none |
9651 | serial_port: "Auto" | 9400 | serial_port: "~Auto" |
9652 | </dest> | 9401 | </dest> |
9653 | <voice> | 9402 | <voice> |
9654 | *: none | 9403 | *: none |
@@ -9865,7 +9614,7 @@ | |||
9865 | </source> | 9614 | </source> |
9866 | <dest> | 9615 | <dest> |
9867 | *: none | 9616 | *: none |
9868 | agc: "AGC" | 9617 | agc: "~AGC" |
9869 | </dest> | 9618 | </dest> |
9870 | <voice> | 9619 | <voice> |
9871 | *: none | 9620 | *: none |
@@ -9933,7 +9682,7 @@ | |||
9933 | </source> | 9682 | </source> |
9934 | <dest> | 9683 | <dest> |
9935 | *: none | 9684 | *: none |
9936 | recording: "CLIP:" | 9685 | recording: "~CLIP:" |
9937 | </dest> | 9686 | </dest> |
9938 | <voice> | 9687 | <voice> |
9939 | *: none | 9688 | *: none |
@@ -10244,10 +9993,10 @@ | |||
10244 | *: "Timestretch" | 9993 | *: "Timestretch" |
10245 | </source> | 9994 | </source> |
10246 | <dest> | 9995 | <dest> |
10247 | *: "Timestretch" | 9996 | *: "~Timestretch" |
10248 | </dest> | 9997 | </dest> |
10249 | <voice> | 9998 | <voice> |
10250 | *: "Timestretch" | 9999 | *: "~Time stretch" |
10251 | </voice> | 10000 | </voice> |
10252 | </phrase> | 10001 | </phrase> |
10253 | <phrase> | 10002 | <phrase> |
@@ -10404,11 +10153,11 @@ | |||
10404 | </source> | 10153 | </source> |
10405 | <dest> | 10154 | <dest> |
10406 | *: none | 10155 | *: none |
10407 | pitchscreen: "Rate" | 10156 | pitchscreen: "~Rate" |
10408 | </dest> | 10157 | </dest> |
10409 | <voice> | 10158 | <voice> |
10410 | *: none | 10159 | *: none |
10411 | pitchscreen: "Rate" | 10160 | pitchscreen: "~Rate" |
10412 | </voice> | 10161 | </voice> |
10413 | </phrase> | 10162 | </phrase> |
10414 | <phrase> | 10163 | <phrase> |
@@ -10438,11 +10187,11 @@ | |||
10438 | </source> | 10187 | </source> |
10439 | <dest> | 10188 | <dest> |
10440 | *: none | 10189 | *: none |
10441 | usb_hid: "Multimedia" | 10190 | usb_hid: "~Multimedia" |
10442 | </dest> | 10191 | </dest> |
10443 | <voice> | 10192 | <voice> |
10444 | *: none | 10193 | *: none |
10445 | usb_hid: "Multimedia" | 10194 | usb_hid: "~Multimedia" |
10446 | </voice> | 10195 | </voice> |
10447 | </phrase> | 10196 | </phrase> |
10448 | <phrase> | 10197 | <phrase> |
@@ -10489,11 +10238,11 @@ | |||
10489 | </source> | 10238 | </source> |
10490 | <dest> | 10239 | <dest> |
10491 | *: none | 10240 | *: none |
10492 | usb_hid: "Mouse" | 10241 | usb_hid: "~Mouse" |
10493 | </dest> | 10242 | </dest> |
10494 | <voice> | 10243 | <voice> |
10495 | *: none | 10244 | *: none |
10496 | usb_hid: "Mouse" | 10245 | usb_hid: "~Mouse" |
10497 | </voice> | 10246 | </voice> |
10498 | </phrase> | 10247 | </phrase> |
10499 | <phrase> | 10248 | <phrase> |
@@ -10511,20 +10260,6 @@ | |||
10511 | </voice> | 10260 | </voice> |
10512 | </phrase> | 10261 | </phrase> |
10513 | <phrase> | 10262 | <phrase> |
10514 | id: LANG_SCROLLBAR_POSITION | ||
10515 | desc: in Settings -> General -> Display -> Status-/Scrollbar | ||
10516 | user: core | ||
10517 | <source> | ||
10518 | *: "Scroll Bar Position" | ||
10519 | </source> | ||
10520 | <dest> | ||
10521 | *: "Posizione Barra di Scorrimento" | ||
10522 | </dest> | ||
10523 | <voice> | ||
10524 | *: "Posizione Barra di Scorrimento" | ||
10525 | </voice> | ||
10526 | </phrase> | ||
10527 | <phrase> | ||
10528 | id: LANG_COMPRESSOR | 10263 | id: LANG_COMPRESSOR |
10529 | desc: in sound settings | 10264 | desc: in sound settings |
10530 | user: core | 10265 | user: core |
@@ -10709,10 +10444,10 @@ | |||
10709 | *: "Auto" | 10444 | *: "Auto" |
10710 | </source> | 10445 | </source> |
10711 | <dest> | 10446 | <dest> |
10712 | *: "Auto" | 10447 | *: "~Auto" |
10713 | </dest> | 10448 | </dest> |
10714 | <voice> | 10449 | <voice> |
10715 | *: "Auto" | 10450 | *: "~Auto" |
10716 | </voice> | 10451 | </voice> |
10717 | </phrase> | 10452 | </phrase> |
10718 | <phrase> | 10453 | <phrase> |
@@ -10723,10 +10458,10 @@ | |||
10723 | *: "Knee" | 10458 | *: "Knee" |
10724 | </source> | 10459 | </source> |
10725 | <dest> | 10460 | <dest> |
10726 | *: "Knee" | 10461 | *: "~Knee" |
10727 | </dest> | 10462 | </dest> |
10728 | <voice> | 10463 | <voice> |
10729 | *: "Knee" | 10464 | *: "~Knee" |
10730 | </voice> | 10465 | </voice> |
10731 | </phrase> | 10466 | </phrase> |
10732 | <phrase> | 10467 | <phrase> |
@@ -10737,10 +10472,10 @@ | |||
10737 | *: "Hard Knee" | 10472 | *: "Hard Knee" |
10738 | </source> | 10473 | </source> |
10739 | <dest> | 10474 | <dest> |
10740 | *: "Hard Knee" | 10475 | *: "Knee Hard" |
10741 | </dest> | 10476 | </dest> |
10742 | <voice> | 10477 | <voice> |
10743 | *: "Hard Knee" | 10478 | *: "Knee Hard" |
10744 | </voice> | 10479 | </voice> |
10745 | </phrase> | 10480 | </phrase> |
10746 | <phrase> | 10481 | <phrase> |
@@ -10751,10 +10486,10 @@ | |||
10751 | *: "Soft Knee" | 10486 | *: "Soft Knee" |
10752 | </source> | 10487 | </source> |
10753 | <dest> | 10488 | <dest> |
10754 | *: "Soft Knee" | 10489 | *: "Knee Soft" |
10755 | </dest> | 10490 | </dest> |
10756 | <voice> | 10491 | <voice> |
10757 | *: "Soft Knee" | 10492 | *: "Knee Soft" |
10758 | </voice> | 10493 | </voice> |
10759 | </phrase> | 10494 | </phrase> |
10760 | <phrase> | 10495 | <phrase> |
@@ -10786,20 +10521,6 @@ | |||
10786 | </voice> | 10521 | </voice> |
10787 | </phrase> | 10522 | </phrase> |
10788 | <phrase> | 10523 | <phrase> |
10789 | id: LANG_STATUSBAR_CUSTOM | ||
10790 | desc: if this translation is compatible with LANG_CHANNEL_CUSTOM, then please use the same translation. it can be combined later then | ||
10791 | user: core | ||
10792 | <source> | ||
10793 | *: "Custom" | ||
10794 | </source> | ||
10795 | <dest> | ||
10796 | *: "Personalizzata" | ||
10797 | </dest> | ||
10798 | <voice> | ||
10799 | *: "Personalizzata" | ||
10800 | </voice> | ||
10801 | </phrase> | ||
10802 | <phrase> | ||
10803 | id: VOICE_EXT_SBS | 10524 | id: VOICE_EXT_SBS |
10804 | desc: spoken only, for file extension | 10525 | desc: spoken only, for file extension |
10805 | user: core | 10526 | user: core |
@@ -10848,20 +10569,6 @@ | |||
10848 | </voice> | 10569 | </voice> |
10849 | </phrase> | 10570 | </phrase> |
10850 | <phrase> | 10571 | <phrase> |
10851 | id: LANG_INSERT_LAST_SHUFFLED | ||
10852 | desc: deprecated | ||
10853 | user: core | ||
10854 | <source> | ||
10855 | *: "" | ||
10856 | </source> | ||
10857 | <dest> | ||
10858 | *: "" | ||
10859 | </dest> | ||
10860 | <voice> | ||
10861 | *: "" | ||
10862 | </voice> | ||
10863 | </phrase> | ||
10864 | <phrase> | ||
10865 | id: LANG_QUEUE_LAST_SHUFFLED | 10572 | id: LANG_QUEUE_LAST_SHUFFLED |
10866 | desc: in onplay menu. queue a playlist randomly at end of dynamic playlist | 10573 | desc: in onplay menu. queue a playlist randomly at end of dynamic playlist |
10867 | user: core | 10574 | user: core |
@@ -11383,7 +11090,7 @@ | |||
11383 | *: "PictureFlow" | 11090 | *: "PictureFlow" |
11384 | </source> | 11091 | </source> |
11385 | <dest> | 11092 | <dest> |
11386 | *: "PictureFlow" | 11093 | *: "~PictureFlow" |
11387 | </dest> | 11094 | </dest> |
11388 | <voice> | 11095 | <voice> |
11389 | *: "Apri Picture Flow" | 11096 | *: "Apri Picture Flow" |
@@ -11399,11 +11106,11 @@ | |||
11399 | </source> | 11106 | </source> |
11400 | <dest> | 11107 | <dest> |
11401 | *: none | 11108 | *: none |
11402 | touchscreen: "OK" | 11109 | touchscreen: "~OK" |
11403 | </dest> | 11110 | </dest> |
11404 | <voice> | 11111 | <voice> |
11405 | *: none | 11112 | *: none |
11406 | touchscreen: "OK" | 11113 | touchscreen: "~OK" |
11407 | </voice> | 11114 | </voice> |
11408 | </phrase> | 11115 | </phrase> |
11409 | <phrase> | 11116 | <phrase> |
@@ -11455,20 +11162,6 @@ | |||
11455 | </voice> | 11162 | </voice> |
11456 | </phrase> | 11163 | </phrase> |
11457 | <phrase> | 11164 | <phrase> |
11458 | id: LANG_SET_AS_START_DIR | ||
11459 | desc: deprecated | ||
11460 | user: core | ||
11461 | <source> | ||
11462 | *: "" | ||
11463 | </source> | ||
11464 | <dest> | ||
11465 | *: "" | ||
11466 | </dest> | ||
11467 | <voice> | ||
11468 | *: "" | ||
11469 | </voice> | ||
11470 | </phrase> | ||
11471 | <phrase> | ||
11472 | id: LANG_RESET_START_DIR | 11165 | id: LANG_RESET_START_DIR |
11473 | desc: reset the browser start directory | 11166 | desc: reset the browser start directory |
11474 | user: core | 11167 | user: core |
@@ -11570,20 +11263,6 @@ | |||
11570 | </voice> | 11263 | </voice> |
11571 | </phrase> | 11264 | </phrase> |
11572 | <phrase> | 11265 | <phrase> |
11573 | id: LANG_SET_AS_PLAYLISTCAT_DIR | ||
11574 | desc: deprecated | ||
11575 | user: core | ||
11576 | <source> | ||
11577 | *: "" | ||
11578 | </source> | ||
11579 | <dest> | ||
11580 | *: "" | ||
11581 | </dest> | ||
11582 | <voice> | ||
11583 | *: "" | ||
11584 | </voice> | ||
11585 | </phrase> | ||
11586 | <phrase> | ||
11587 | id: LANG_RESET_PLAYLISTCAT_DIR | 11266 | id: LANG_RESET_PLAYLISTCAT_DIR |
11588 | desc: | 11267 | desc: |
11589 | user: core | 11268 | user: core |
@@ -11660,20 +11339,6 @@ | |||
11660 | </voice> | 11339 | </voice> |
11661 | </phrase> | 11340 | </phrase> |
11662 | <phrase> | 11341 | <phrase> |
11663 | id: LANG_AUTOMATIC | ||
11664 | desc: deprecated | ||
11665 | user: core | ||
11666 | <source> | ||
11667 | *: "" | ||
11668 | </source> | ||
11669 | <dest> | ||
11670 | *: "" | ||
11671 | </dest> | ||
11672 | <voice> | ||
11673 | *: "" | ||
11674 | </voice> | ||
11675 | </phrase> | ||
11676 | <phrase> | ||
11677 | id: LANG_SLEEP_TIMER_DURATION | 11342 | id: LANG_SLEEP_TIMER_DURATION |
11678 | desc: default sleep timer duration in minutes | 11343 | desc: default sleep timer duration in minutes |
11679 | user: core | 11344 | user: core |
@@ -12248,10 +11913,10 @@ | |||
12248 | *: "Android Debug Bridge" | 11913 | *: "Android Debug Bridge" |
12249 | </source> | 11914 | </source> |
12250 | <dest> | 11915 | <dest> |
12251 | *: "Android Debug Bridge" | 11916 | *: "~Android Debug Bridge" |
12252 | </dest> | 11917 | </dest> |
12253 | <voice> | 11918 | <voice> |
12254 | *: "Android Debug Bridge" | 11919 | *: "~Android Debug Bridge" |
12255 | </voice> | 11920 | </voice> |
12256 | </phrase> | 11921 | </phrase> |
12257 | <phrase> | 11922 | <phrase> |
@@ -12363,10 +12028,10 @@ | |||
12363 | *: "Haas Surround" | 12028 | *: "Haas Surround" |
12364 | </source> | 12029 | </source> |
12365 | <dest> | 12030 | <dest> |
12366 | *: "Haas Surround" | 12031 | *: "~Haas Surround" |
12367 | </dest> | 12032 | </dest> |
12368 | <voice> | 12033 | <voice> |
12369 | *: "Haas Surround" | 12034 | *: "~Haas Surround" |
12370 | </voice> | 12035 | </voice> |
12371 | </phrase> | 12036 | </phrase> |
12372 | <phrase> | 12037 | <phrase> |
@@ -12391,10 +12056,10 @@ | |||
12391 | *: "Dry / Wet Mix" | 12056 | *: "Dry / Wet Mix" |
12392 | </source> | 12057 | </source> |
12393 | <dest> | 12058 | <dest> |
12394 | *: "Dry / Wet Mix" | 12059 | *: "Mix Dry / Wet" |
12395 | </dest> | 12060 | </dest> |
12396 | <voice> | 12061 | <voice> |
12397 | *: "Dry / Wet Mix" | 12062 | *: "Mix Dry / Wet" |
12398 | </voice> | 12063 | </voice> |
12399 | </phrase> | 12064 | </phrase> |
12400 | <phrase> | 12065 | <phrase> |
@@ -12542,10 +12207,10 @@ | |||
12542 | desc: playing time screen | 12207 | desc: playing time screen |
12543 | user: core | 12208 | user: core |
12544 | <source> | 12209 | <source> |
12545 | *: "Average bitrate: %ld kbps" | 12210 | *: "Average bitrate:" |
12546 | </source> | 12211 | </source> |
12547 | <dest> | 12212 | <dest> |
12548 | *: "Bitrate medio: %ld kbps" | 12213 | *: "Bitrate medio:" |
12549 | </dest> | 12214 | </dest> |
12550 | <voice> | 12215 | <voice> |
12551 | *: "Bitrate medio" | 12216 | *: "Bitrate medio" |
@@ -12702,10 +12367,10 @@ | |||
12702 | *: "Zoom" | 12367 | *: "Zoom" |
12703 | </source> | 12368 | </source> |
12704 | <dest> | 12369 | <dest> |
12705 | *: "Zoom" | 12370 | *: "~Zoom" |
12706 | </dest> | 12371 | </dest> |
12707 | <voice> | 12372 | <voice> |
12708 | *: "Zoom" | 12373 | *: "~Zoom" |
12709 | </voice> | 12374 | </voice> |
12710 | </phrase> | 12375 | </phrase> |
12711 | <phrase> | 12376 | <phrase> |
@@ -12864,20 +12529,6 @@ | |||
12864 | </voice> | 12529 | </voice> |
12865 | </phrase> | 12530 | </phrase> |
12866 | <phrase> | 12531 | <phrase> |
12867 | id: LANG_NO_VIEWERS | ||
12868 | desc: text for splash to indicate that no viewers are available | ||
12869 | user: core | ||
12870 | <source> | ||
12871 | *: "No viewers found" | ||
12872 | </source> | ||
12873 | <dest> | ||
12874 | *: "Nessun visualizzatore trovato" | ||
12875 | </dest> | ||
12876 | <voice> | ||
12877 | *: "Nessun visualizzatore trovato" | ||
12878 | </voice> | ||
12879 | </phrase> | ||
12880 | <phrase> | ||
12881 | id: LANG_NO_REM_CONTROL | 12532 | id: LANG_NO_REM_CONTROL |
12882 | desc: Item for menus | 12533 | desc: Item for menus |
12883 | user: core | 12534 | user: core |
@@ -12909,20 +12560,6 @@ | |||
12909 | </voice> | 12560 | </voice> |
12910 | </phrase> | 12561 | </phrase> |
12911 | <phrase> | 12562 | <phrase> |
12912 | id: LANG_ADDED_TO_PLAYLIST | ||
12913 | desc: in the pictureflow splash messages | ||
12914 | user: core | ||
12915 | <source> | ||
12916 | *: "Added to playlist" | ||
12917 | </source> | ||
12918 | <dest> | ||
12919 | *: "Aggiunto alla playlist" | ||
12920 | </dest> | ||
12921 | <voice> | ||
12922 | *: "Aggiunto alla playlist" | ||
12923 | </voice> | ||
12924 | </phrase> | ||
12925 | <phrase> | ||
12926 | id: LANG_SWAP_CHANNELS | 12563 | id: LANG_SWAP_CHANNELS |
12927 | desc: in sound_settings | 12564 | desc: in sound_settings |
12928 | user: core | 12565 | user: core |
@@ -12946,11 +12583,11 @@ | |||
12946 | </source> | 12583 | </source> |
12947 | <dest> | 12584 | <dest> |
12948 | *: none | 12585 | *: none |
12949 | es9018: "Bypass" | 12586 | es9018: "~Bypass" |
12950 | </dest> | 12587 | </dest> |
12951 | <voice> | 12588 | <voice> |
12952 | *: none | 12589 | *: none |
12953 | es9018: "Bypass" | 12590 | es9018: "~Bypass" |
12954 | </voice> | 12591 | </voice> |
12955 | </phrase> | 12592 | </phrase> |
12956 | <phrase> | 12593 | <phrase> |
@@ -13069,20 +12706,6 @@ | |||
13069 | </voice> | 12706 | </voice> |
13070 | </phrase> | 12707 | </phrase> |
13071 | <phrase> | 12708 | <phrase> |
13072 | id: LANG_PROPERTIES_ALBUM | ||
13073 | desc: deprecated | ||
13074 | user: core | ||
13075 | <source> | ||
13076 | *: "" | ||
13077 | </source> | ||
13078 | <dest> | ||
13079 | *: "" | ||
13080 | </dest> | ||
13081 | <voice> | ||
13082 | *: "" | ||
13083 | </voice> | ||
13084 | </phrase> | ||
13085 | <phrase> | ||
13086 | id: LANG_PROPERTIES_TIME | 12709 | id: LANG_PROPERTIES_TIME |
13087 | desc: in properties plugin | 12710 | desc: in properties plugin |
13088 | user: core | 12711 | user: core |
@@ -13198,20 +12821,6 @@ | |||
13198 | </voice> | 12821 | </voice> |
13199 | </phrase> | 12822 | </phrase> |
13200 | <phrase> | 12823 | <phrase> |
13201 | id: LANG_PROPERTIES_ARTIST | ||
13202 | desc: deprecated | ||
13203 | user: core | ||
13204 | <source> | ||
13205 | *: "" | ||
13206 | </source> | ||
13207 | <dest> | ||
13208 | *: "" | ||
13209 | </dest> | ||
13210 | <voice> | ||
13211 | *: "" | ||
13212 | </voice> | ||
13213 | </phrase> | ||
13214 | <phrase> | ||
13215 | id: LANG_REVERBERATION | 12824 | id: LANG_REVERBERATION |
13216 | desc: in mikmod settings menu | 12825 | desc: in mikmod settings menu |
13217 | user: core | 12826 | user: core |
@@ -13233,10 +12842,10 @@ | |||
13233 | desc: playing time screen | 12842 | desc: playing time screen |
13234 | user: core | 12843 | user: core |
13235 | <source> | 12844 | <source> |
13236 | *: "Track %d / %d %d%%" | 12845 | *: "Track:" |
13237 | </source> | 12846 | </source> |
13238 | <dest> | 12847 | <dest> |
13239 | *: "Traccia %d / %d %d%%" | 12848 | *: "Traccia:" |
13240 | </dest> | 12849 | </dest> |
13241 | <voice> | 12850 | <voice> |
13242 | *: "Traccia" | 12851 | *: "Traccia" |
@@ -13257,20 +12866,6 @@ | |||
13257 | </voice> | 12866 | </voice> |
13258 | </phrase> | 12867 | </phrase> |
13259 | <phrase> | 12868 | <phrase> |
13260 | id: LANG_PROPERTIES_TITLE | ||
13261 | desc: deprecated | ||
13262 | user: core | ||
13263 | <source> | ||
13264 | *: "" | ||
13265 | </source> | ||
13266 | <dest> | ||
13267 | *: "" | ||
13268 | </dest> | ||
13269 | <voice> | ||
13270 | *: "" | ||
13271 | </voice> | ||
13272 | </phrase> | ||
13273 | <phrase> | ||
13274 | id: LANG_REMOTE_CONTROL | 12869 | id: LANG_REMOTE_CONTROL |
13275 | desc: Item for menus | 12870 | desc: Item for menus |
13276 | user: core | 12871 | user: core |
@@ -13425,11 +13020,11 @@ | |||
13425 | lowmem: none | 13020 | lowmem: none |
13426 | </source> | 13021 | </source> |
13427 | <dest> | 13022 | <dest> |
13428 | *: "Surround" | 13023 | *: "~Surround" |
13429 | lowmem: none | 13024 | lowmem: none |
13430 | </dest> | 13025 | </dest> |
13431 | <voice> | 13026 | <voice> |
13432 | *: "Surround" | 13027 | *: "~Surround" |
13433 | lowmem: none | 13028 | lowmem: none |
13434 | </voice> | 13029 | </voice> |
13435 | </phrase> | 13030 | </phrase> |
@@ -13532,20 +13127,6 @@ | |||
13532 | </voice> | 13127 | </voice> |
13533 | </phrase> | 13128 | </phrase> |
13534 | <phrase> | 13129 | <phrase> |
13535 | id: LANG_PROPERTIES_DURATION | ||
13536 | desc: deprecated | ||
13537 | user: core | ||
13538 | <source> | ||
13539 | *: "" | ||
13540 | </source> | ||
13541 | <dest> | ||
13542 | *: "" | ||
13543 | </dest> | ||
13544 | <voice> | ||
13545 | *: "" | ||
13546 | </voice> | ||
13547 | </phrase> | ||
13548 | <phrase> | ||
13549 | id: LANG_BACKLIGHT_BRIGHTNESS | 13130 | id: LANG_BACKLIGHT_BRIGHTNESS |
13550 | desc: in the mpegplayer settings menu | 13131 | desc: in the mpegplayer settings menu |
13551 | user: core | 13132 | user: core |
@@ -13901,10 +13482,10 @@ | |||
13901 | desc: playing time screen | 13482 | desc: playing time screen |
13902 | user: core | 13483 | user: core |
13903 | <source> | 13484 | <source> |
13904 | *: "Average track size: %s" | 13485 | *: "Average track size:" |
13905 | </source> | 13486 | </source> |
13906 | <dest> | 13487 | <dest> |
13907 | *: "Dimensione media delle traccie: %s" | 13488 | *: "Dimensione media delle tracce:" |
13908 | </dest> | 13489 | </dest> |
13909 | <voice> | 13490 | <voice> |
13910 | *: "Dimensione media delle traccie" | 13491 | *: "Dimensione media delle traccie" |
@@ -13999,10 +13580,10 @@ | |||
13999 | desc: playing time screen | 13580 | desc: playing time screen |
14000 | user: core | 13581 | user: core |
14001 | <source> | 13582 | <source> |
14002 | *: "Playlist remaining: %s" | 13583 | *: "Playlist remaining:" |
14003 | </source> | 13584 | </source> |
14004 | <dest> | 13585 | <dest> |
14005 | *: "Playlist rimanente: %s" | 13586 | *: "Playlist rimanente:" |
14006 | </dest> | 13587 | </dest> |
14007 | <voice> | 13588 | <voice> |
14008 | *: "Playlist rimanente" | 13589 | *: "Playlist rimanente" |
@@ -14111,10 +13692,10 @@ | |||
14111 | desc: playing time screen | 13692 | desc: playing time screen |
14112 | user: core | 13693 | user: core |
14113 | <source> | 13694 | <source> |
14114 | *: "Track remaining: %s" | 13695 | *: "Track remaining:" |
14115 | </source> | 13696 | </source> |
14116 | <dest> | 13697 | <dest> |
14117 | *: "Traccia rimanente: %s" | 13698 | *: "Traccia rimanente:" |
14118 | </dest> | 13699 | </dest> |
14119 | <voice> | 13700 | <voice> |
14120 | *: "Traccia rimanente" | 13701 | *: "Traccia rimanente" |
@@ -14329,20 +13910,6 @@ | |||
14329 | </voice> | 13910 | </voice> |
14330 | </phrase> | 13911 | </phrase> |
14331 | <phrase> | 13912 | <phrase> |
14332 | id: LANG_PLAYLIST_CLEARED | ||
14333 | desc: in the pictureflow splash messages | ||
14334 | user: core | ||
14335 | <source> | ||
14336 | *: "Playlist Cleared" | ||
14337 | </source> | ||
14338 | <dest> | ||
14339 | *: "Playlist Svuotata" | ||
14340 | </dest> | ||
14341 | <voice> | ||
14342 | *: "Playlist Svuotata" | ||
14343 | </voice> | ||
14344 | </phrase> | ||
14345 | <phrase> | ||
14346 | id: LANG_FILTER_SHORT | 13913 | id: LANG_FILTER_SHORT |
14347 | desc: in sound settings | 13914 | desc: in sound settings |
14348 | user: core | 13915 | user: core |
@@ -14589,10 +14156,10 @@ | |||
14589 | desc: playing time screen | 14156 | desc: playing time screen |
14590 | user: core | 14157 | user: core |
14591 | <source> | 14158 | <source> |
14592 | *: "Track elapsed: %s / %s %ld%%" | 14159 | *: "Track elapsed:" |
14593 | </source> | 14160 | </source> |
14594 | <dest> | 14161 | <dest> |
14595 | *: "Traccia trascorsa: %s / %s %ld%%" | 14162 | *: "Traccia trascorsa:" |
14596 | </dest> | 14163 | </dest> |
14597 | <voice> | 14164 | <voice> |
14598 | *: "Traccia trascorsa" | 14165 | *: "Traccia trascorsa" |
@@ -14603,10 +14170,10 @@ | |||
14603 | desc: playing time screen | 14170 | desc: playing time screen |
14604 | user: core | 14171 | user: core |
14605 | <source> | 14172 | <source> |
14606 | *: "Storage: %s (done %s, remaining %s)" | 14173 | *: "Storage (Done / Remaining):" |
14607 | </source> | 14174 | </source> |
14608 | <dest> | 14175 | <dest> |
14609 | *: "Memoria: %s (fatto %s, restante %s)" | 14176 | *: "Memoria (Usata / Rimanente):" |
14610 | </dest> | 14177 | </dest> |
14611 | <voice> | 14178 | <voice> |
14612 | *: "Memoria" | 14179 | *: "Memoria" |
@@ -14701,10 +14268,10 @@ | |||
14701 | desc: playing time screen | 14268 | desc: playing time screen |
14702 | user: core | 14269 | user: core |
14703 | <source> | 14270 | <source> |
14704 | *: "Playlist elapsed: %s / %s %ld%%" | 14271 | *: "Playlist elapsed:" |
14705 | </source> | 14272 | </source> |
14706 | <dest> | 14273 | <dest> |
14707 | *: "Playlist trascorsa: %s / %s %ld%%" | 14274 | *: "Playlist trascorsa:" |
14708 | </dest> | 14275 | </dest> |
14709 | <voice> | 14276 | <voice> |
14710 | *: "Playlist trascorsa" | 14277 | *: "Playlist trascorsa" |
@@ -14735,7 +14302,7 @@ | |||
14735 | *: "Rifletto..." | 14302 | *: "Rifletto..." |
14736 | </dest> | 14303 | </dest> |
14737 | <voice> | 14304 | <voice> |
14738 | *: "" | 14305 | *: "Rifletto" |
14739 | </voice> | 14306 | </voice> |
14740 | </phrase> | 14307 | </phrase> |
14741 | <phrase> | 14308 | <phrase> |
@@ -14879,20 +14446,6 @@ | |||
14879 | </voice> | 14446 | </voice> |
14880 | </phrase> | 14447 | </phrase> |
14881 | <phrase> | 14448 | <phrase> |
14882 | id: LANG_CLEAR_PLAYLIST | ||
14883 | desc: deprecated | ||
14884 | user: core | ||
14885 | <source> | ||
14886 | *: "" | ||
14887 | </source> | ||
14888 | <dest> | ||
14889 | *: "" | ||
14890 | </dest> | ||
14891 | <voice> | ||
14892 | *: "" | ||
14893 | </voice> | ||
14894 | </phrase> | ||
14895 | <phrase> | ||
14896 | id: LANG_NOT_A_VBR_FILE | 14449 | id: LANG_NOT_A_VBR_FILE |
14897 | desc: in vbrfix plugin | 14450 | desc: in vbrfix plugin |
14898 | user: core | 14451 | user: core |
@@ -15117,10 +14670,10 @@ | |||
15117 | *: "Timeout" | 14670 | *: "Timeout" |
15118 | </source> | 14671 | </source> |
15119 | <dest> | 14672 | <dest> |
15120 | *: "Timeout" | 14673 | *: "~Timeout" |
15121 | </dest> | 14674 | </dest> |
15122 | <voice> | 14675 | <voice> |
15123 | *: "Timeout" | 14676 | *: "~Timeout" |
15124 | </voice> | 14677 | </voice> |
15125 | </phrase> | 14678 | </phrase> |
15126 | <phrase> | 14679 | <phrase> |
@@ -15282,11 +14835,11 @@ | |||
15282 | lowmem: none | 14835 | lowmem: none |
15283 | </source> | 14836 | </source> |
15284 | <dest> | 14837 | <dest> |
15285 | *: "Sample Rate" | 14838 | *: "~Sample Rate" |
15286 | lowmem: none | 14839 | lowmem: none |
15287 | </dest> | 14840 | </dest> |
15288 | <voice> | 14841 | <voice> |
15289 | *: "Sample Rate" | 14842 | *: "~Sample Rate" |
15290 | lowmem: none | 14843 | lowmem: none |
15291 | </voice> | 14844 | </voice> |
15292 | </phrase> | 14845 | </phrase> |
@@ -15507,20 +15060,6 @@ | |||
15507 | </voice> | 15060 | </voice> |
15508 | </phrase> | 15061 | </phrase> |
15509 | <phrase> | 15062 | <phrase> |
15510 | id: LANG_CLEAR_LIST_AND_PLAY_NEXT | ||
15511 | desc: deprecated | ||
15512 | user: core | ||
15513 | <source> | ||
15514 | *: "" | ||
15515 | </source> | ||
15516 | <dest> | ||
15517 | *: "" | ||
15518 | </dest> | ||
15519 | <voice> | ||
15520 | *: "" | ||
15521 | </voice> | ||
15522 | </phrase> | ||
15523 | <phrase> | ||
15524 | id: LANG_DAC_POWER_MODE | 15063 | id: LANG_DAC_POWER_MODE |
15525 | desc: in sound settings | 15064 | desc: in sound settings |
15526 | user: core | 15065 | user: core |
@@ -15591,7 +15130,7 @@ | |||
15591 | *: "Coda..." | 15130 | *: "Coda..." |
15592 | </dest> | 15131 | </dest> |
15593 | <voice> | 15132 | <voice> |
15594 | *: "Coda..." | 15133 | *: "Coda" |
15595 | </voice> | 15134 | </voice> |
15596 | </phrase> | 15135 | </phrase> |
15597 | <phrase> | 15136 | <phrase> |
@@ -15637,20 +15176,6 @@ | |||
15637 | </voice> | 15176 | </voice> |
15638 | </phrase> | 15177 | </phrase> |
15639 | <phrase> | 15178 | <phrase> |
15640 | id: LANG_CLEAR_LIST_AND_PLAY_SHUFFLED | ||
15641 | desc: deprecated | ||
15642 | user: core | ||
15643 | <source> | ||
15644 | *: "" | ||
15645 | </source> | ||
15646 | <dest> | ||
15647 | *: "" | ||
15648 | </dest> | ||
15649 | <voice> | ||
15650 | *: "" | ||
15651 | </voice> | ||
15652 | </phrase> | ||
15653 | <phrase> | ||
15654 | id: LANG_SOFTLOCK_DISABLE_ALL_NOTIFY | 15179 | id: LANG_SOFTLOCK_DISABLE_ALL_NOTIFY |
15655 | desc: disable all softlock notifications | 15180 | desc: disable all softlock notifications |
15656 | user: core | 15181 | user: core |
@@ -15716,11 +15241,11 @@ | |||
15716 | </source> | 15241 | </source> |
15717 | <dest> | 15242 | <dest> |
15718 | *: none | 15243 | *: none |
15719 | filter_roll_off: "Super Slow" | 15244 | filter_roll_off: "Super Lento" |
15720 | </dest> | 15245 | </dest> |
15721 | <voice> | 15246 | <voice> |
15722 | *: none | 15247 | *: none |
15723 | filter_roll_off: "Super Slow" | 15248 | filter_roll_off: "Super Lento" |
15724 | </voice> | 15249 | </voice> |
15725 | </phrase> | 15250 | </phrase> |
15726 | <phrase> | 15251 | <phrase> |
@@ -15733,11 +15258,11 @@ | |||
15733 | </source> | 15258 | </source> |
15734 | <dest> | 15259 | <dest> |
15735 | *: none | 15260 | *: none |
15736 | es9218: "Linear Fast" | 15261 | es9218: "Lineare Veloce" |
15737 | </dest> | 15262 | </dest> |
15738 | <voice> | 15263 | <voice> |
15739 | *: none | 15264 | *: none |
15740 | es9218: "Linear Fast" | 15265 | es9218: "Lineare Veloce" |
15741 | </voice> | 15266 | </voice> |
15742 | </phrase> | 15267 | </phrase> |
15743 | <phrase> | 15268 | <phrase> |
@@ -15750,11 +15275,11 @@ | |||
15750 | </source> | 15275 | </source> |
15751 | <dest> | 15276 | <dest> |
15752 | *: none | 15277 | *: none |
15753 | es9218: "Linear Slow" | 15278 | es9218: "Lineare Lento" |
15754 | </dest> | 15279 | </dest> |
15755 | <voice> | 15280 | <voice> |
15756 | *: none | 15281 | *: none |
15757 | es9218: "Linear Slow" | 15282 | es9218: "Lineare Lento" |
15758 | </voice> | 15283 | </voice> |
15759 | </phrase> | 15284 | </phrase> |
15760 | <phrase> | 15285 | <phrase> |
@@ -15767,11 +15292,11 @@ | |||
15767 | </source> | 15292 | </source> |
15768 | <dest> | 15293 | <dest> |
15769 | *: none | 15294 | *: none |
15770 | es9218: "Minimum Fast" | 15295 | es9218: "Minimo Veloce" |
15771 | </dest> | 15296 | </dest> |
15772 | <voice> | 15297 | <voice> |
15773 | *: none | 15298 | *: none |
15774 | es9218: "Minimum Fast" | 15299 | es9218: "Minimo Veloce" |
15775 | </voice> | 15300 | </voice> |
15776 | </phrase> | 15301 | </phrase> |
15777 | <phrase> | 15302 | <phrase> |
@@ -15784,11 +15309,11 @@ | |||
15784 | </source> | 15309 | </source> |
15785 | <dest> | 15310 | <dest> |
15786 | *: none | 15311 | *: none |
15787 | es9218: "Minimum Slow" | 15312 | es9218: "Minimo Lento" |
15788 | </dest> | 15313 | </dest> |
15789 | <voice> | 15314 | <voice> |
15790 | *: none | 15315 | *: none |
15791 | es9218: "Minimum Slow" | 15316 | es9218: "Minimo Lento" |
15792 | </voice> | 15317 | </voice> |
15793 | </phrase> | 15318 | </phrase> |
15794 | <phrase> | 15319 | <phrase> |
@@ -15801,11 +15326,11 @@ | |||
15801 | </source> | 15326 | </source> |
15802 | <dest> | 15327 | <dest> |
15803 | *: none | 15328 | *: none |
15804 | es9218: "Apodizing type 1" | 15329 | es9218: "Apodizing tipo 1" |
15805 | </dest> | 15330 | </dest> |
15806 | <voice> | 15331 | <voice> |
15807 | *: none | 15332 | *: none |
15808 | es9218: "Apodizing type 1" | 15333 | es9218: "Apodizing tipo 1" |
15809 | </voice> | 15334 | </voice> |
15810 | </phrase> | 15335 | </phrase> |
15811 | <phrase> | 15336 | <phrase> |
@@ -15818,11 +15343,11 @@ | |||
15818 | </source> | 15343 | </source> |
15819 | <dest> | 15344 | <dest> |
15820 | *: none | 15345 | *: none |
15821 | es9218: "Apodizing type 2" | 15346 | es9218: "Apodizing tipo 2" |
15822 | </dest> | 15347 | </dest> |
15823 | <voice> | 15348 | <voice> |
15824 | *: none | 15349 | *: none |
15825 | es9218: "Apodizing type 2" | 15350 | es9218: "Apodizing tipo 2" |
15826 | </voice> | 15351 | </voice> |
15827 | </phrase> | 15352 | </phrase> |
15828 | <phrase> | 15353 | <phrase> |
@@ -15835,11 +15360,11 @@ | |||
15835 | </source> | 15360 | </source> |
15836 | <dest> | 15361 | <dest> |
15837 | *: none | 15362 | *: none |
15838 | es9218: "Hybrid Fast" | 15363 | es9218: "Ibrido Veloce" |
15839 | </dest> | 15364 | </dest> |
15840 | <voice> | 15365 | <voice> |
15841 | *: none | 15366 | *: none |
15842 | es9218: "Hybrid Fast" | 15367 | es9218: "Ibrido Veloce" |
15843 | </voice> | 15368 | </voice> |
15844 | </phrase> | 15369 | </phrase> |
15845 | <phrase> | 15370 | <phrase> |
@@ -15852,151 +15377,11 @@ | |||
15852 | </source> | 15377 | </source> |
15853 | <dest> | 15378 | <dest> |
15854 | *: none | 15379 | *: none |
15855 | es9218: "Brick Wall" | 15380 | es9218: "~Brick Wall" |
15856 | </dest> | 15381 | </dest> |
15857 | <voice> | 15382 | <voice> |
15858 | *: none | 15383 | *: none |
15859 | es9218: "Brick Wall" | 15384 | es9218: "~Brick Wall" |
15860 | </voice> | ||
15861 | </phrase> | ||
15862 | <phrase> | ||
15863 | id: LANG_PLAYLIST_RELOAD_AFTER_SAVE | ||
15864 | desc: deprecated | ||
15865 | user: core | ||
15866 | <source> | ||
15867 | *: "" | ||
15868 | </source> | ||
15869 | <dest> | ||
15870 | *: "" | ||
15871 | </dest> | ||
15872 | <voice> | ||
15873 | *: "" | ||
15874 | </voice> | ||
15875 | </phrase> | ||
15876 | <phrase> | ||
15877 | id: LANG_PROPERTIES_ALBUMARTIST | ||
15878 | desc: deprecated | ||
15879 | user: core | ||
15880 | <source> | ||
15881 | *: "" | ||
15882 | </source> | ||
15883 | <dest> | ||
15884 | *: "" | ||
15885 | </dest> | ||
15886 | <voice> | ||
15887 | *: "" | ||
15888 | </voice> | ||
15889 | </phrase> | ||
15890 | <phrase> | ||
15891 | id: LANG_PROPERTIES_GENRE | ||
15892 | desc: deprecated | ||
15893 | user: core | ||
15894 | <source> | ||
15895 | *: "" | ||
15896 | </source> | ||
15897 | <dest> | ||
15898 | *: "" | ||
15899 | </dest> | ||
15900 | <voice> | ||
15901 | *: "" | ||
15902 | </voice> | ||
15903 | </phrase> | ||
15904 | <phrase> | ||
15905 | id: LANG_PROPERTIES_COMMENT | ||
15906 | desc: deprecated | ||
15907 | user: core | ||
15908 | <source> | ||
15909 | *: "" | ||
15910 | </source> | ||
15911 | <dest> | ||
15912 | *: "" | ||
15913 | </dest> | ||
15914 | <voice> | ||
15915 | *: "" | ||
15916 | </voice> | ||
15917 | </phrase> | ||
15918 | <phrase> | ||
15919 | id: LANG_PROPERTIES_COMPOSER | ||
15920 | desc: deprecated | ||
15921 | user: core | ||
15922 | <source> | ||
15923 | *: "" | ||
15924 | </source> | ||
15925 | <dest> | ||
15926 | *: "" | ||
15927 | </dest> | ||
15928 | <voice> | ||
15929 | *: "" | ||
15930 | </voice> | ||
15931 | </phrase> | ||
15932 | <phrase> | ||
15933 | id: LANG_PROPERTIES_YEAR | ||
15934 | desc: deprecated | ||
15935 | user: core | ||
15936 | <source> | ||
15937 | *: "" | ||
15938 | </source> | ||
15939 | <dest> | ||
15940 | *: "" | ||
15941 | </dest> | ||
15942 | <voice> | ||
15943 | *: "" | ||
15944 | </voice> | ||
15945 | </phrase> | ||
15946 | <phrase> | ||
15947 | id: LANG_PROPERTIES_TRACKNUM | ||
15948 | desc: deprecated | ||
15949 | user: core | ||
15950 | <source> | ||
15951 | *: "" | ||
15952 | </source> | ||
15953 | <dest> | ||
15954 | *: "" | ||
15955 | </dest> | ||
15956 | <voice> | ||
15957 | *: "" | ||
15958 | </voice> | ||
15959 | </phrase> | ||
15960 | <phrase> | ||
15961 | id: LANG_PROPERTIES_DISCNUM | ||
15962 | desc: deprecated | ||
15963 | user: core | ||
15964 | <source> | ||
15965 | *: "" | ||
15966 | </source> | ||
15967 | <dest> | ||
15968 | *: "" | ||
15969 | </dest> | ||
15970 | <voice> | ||
15971 | *: "" | ||
15972 | </voice> | ||
15973 | </phrase> | ||
15974 | <phrase> | ||
15975 | id: LANG_PROPERTIES_FREQUENCY | ||
15976 | desc: deprecated | ||
15977 | user: core | ||
15978 | <source> | ||
15979 | *: "" | ||
15980 | </source> | ||
15981 | <dest> | ||
15982 | *: "" | ||
15983 | </dest> | ||
15984 | <voice> | ||
15985 | *: "" | ||
15986 | </voice> | ||
15987 | </phrase> | ||
15988 | <phrase> | ||
15989 | id: LANG_PROPERTIES_BITRATE | ||
15990 | desc: deprecated | ||
15991 | user: core | ||
15992 | <source> | ||
15993 | *: "" | ||
15994 | </source> | ||
15995 | <dest> | ||
15996 | *: "" | ||
15997 | </dest> | ||
15998 | <voice> | ||
15999 | *: "" | ||
16000 | </voice> | 15385 | </voice> |
16001 | </phrase> | 15386 | </phrase> |
16002 | <phrase> | 15387 | <phrase> |
@@ -16341,7 +15726,7 @@ | |||
16341 | *: "Imposta Come..." | 15726 | *: "Imposta Come..." |
16342 | </dest> | 15727 | </dest> |
16343 | <voice> | 15728 | <voice> |
16344 | *: "Imposta Come..." | 15729 | *: "Imposta Come" |
16345 | </voice> | 15730 | </voice> |
16346 | </phrase> | 15731 | </phrase> |
16347 | <phrase> | 15732 | <phrase> |
@@ -16400,7 +15785,7 @@ | |||
16400 | *: "Aggiungi alla Playlist..." | 15785 | *: "Aggiungi alla Playlist..." |
16401 | </dest> | 15786 | </dest> |
16402 | <voice> | 15787 | <voice> |
16403 | *: "Aggiungi alla Playlist..." | 15788 | *: "Aggiungi alla Playlist" |
16404 | </voice> | 15789 | </voice> |
16405 | </phrase> | 15790 | </phrase> |
16406 | <phrase> | 15791 | <phrase> |
@@ -16428,7 +15813,7 @@ | |||
16428 | *: "Riproduzione Brano Successivo..." | 15813 | *: "Riproduzione Brano Successivo..." |
16429 | </dest> | 15814 | </dest> |
16430 | <voice> | 15815 | <voice> |
16431 | *: "Riproduzione Brano Successivo..." | 15816 | *: "Riproduzione Brano Successivo" |
16432 | </voice> | 15817 | </voice> |
16433 | </phrase> | 15818 | </phrase> |
16434 | <phrase> | 15819 | <phrase> |
@@ -16770,10 +16155,10 @@ | |||
16770 | *: "Generating maze..." | 16155 | *: "Generating maze..." |
16771 | </source> | 16156 | </source> |
16772 | <dest> | 16157 | <dest> |
16773 | *: "Generating maze..." | 16158 | *: "Generazione del labirinto..." |
16774 | </dest> | 16159 | </dest> |
16775 | <voice> | 16160 | <voice> |
16776 | *: "Generating maze..." | 16161 | *: "Generazione del labirinto" |
16777 | </voice> | 16162 | </voice> |
16778 | </phrase> | 16163 | </phrase> |
16779 | <phrase> | 16164 | <phrase> |
@@ -16874,3 +16259,157 @@ | |||
16874 | *: "Italiano" | 16259 | *: "Italiano" |
16875 | </voice> | 16260 | </voice> |
16876 | </phrase> | 16261 | </phrase> |
16262 | <phrase> | ||
16263 | id: LANG_STEREOSW_MODE | ||
16264 | desc: Stereo Switch Mode | ||
16265 | user: core | ||
16266 | <source> | ||
16267 | *: "Stereo Switch Mode" | ||
16268 | </source> | ||
16269 | <dest> | ||
16270 | *: "Modalità di Commutazione Stereo" | ||
16271 | </dest> | ||
16272 | <voice> | ||
16273 | *: "Modalità di Commutazione Stereo" | ||
16274 | </voice> | ||
16275 | </phrase> | ||
16276 | <phrase> | ||
16277 | id: LANG_REVERSE | ||
16278 | desc: in settings_menu | ||
16279 | user: core | ||
16280 | <source> | ||
16281 | *: "Reverse" | ||
16282 | </source> | ||
16283 | <dest> | ||
16284 | *: "Inversione" | ||
16285 | </dest> | ||
16286 | <voice> | ||
16287 | *: "Inversione" | ||
16288 | </voice> | ||
16289 | </phrase> | ||
16290 | <phrase> | ||
16291 | id: LANG_ALWAYS_ZERO | ||
16292 | desc: in settings_menu | ||
16293 | user: core | ||
16294 | <source> | ||
16295 | *: "Always 0" | ||
16296 | </source> | ||
16297 | <dest> | ||
16298 | *: "Sempre 0" | ||
16299 | </dest> | ||
16300 | <voice> | ||
16301 | *: "Sempre 0" | ||
16302 | </voice> | ||
16303 | </phrase> | ||
16304 | <phrase> | ||
16305 | id: LANG_ALWAYS_ONE | ||
16306 | desc: in settings_menu | ||
16307 | user: core | ||
16308 | <source> | ||
16309 | *: "Always 1" | ||
16310 | </source> | ||
16311 | <dest> | ||
16312 | *: "Sempre 1" | ||
16313 | </dest> | ||
16314 | <voice> | ||
16315 | *: "Sempre 1" | ||
16316 | </voice> | ||
16317 | </phrase> | ||
16318 | <phrase> | ||
16319 | id: LANG_LEGAL_NOTICES | ||
16320 | desc: in system menu | ||
16321 | user: core | ||
16322 | <source> | ||
16323 | *: "Legal Notices" | ||
16324 | </source> | ||
16325 | <dest> | ||
16326 | *: "Note Legali" | ||
16327 | </dest> | ||
16328 | <voice> | ||
16329 | *: "Note Legali" | ||
16330 | </voice> | ||
16331 | </phrase> | ||
16332 | <phrase> | ||
16333 | id: LANG_ERROR_FORMATSTR | ||
16334 | desc: for general use | ||
16335 | user: core | ||
16336 | <source> | ||
16337 | *: "Error: %s" | ||
16338 | </source> | ||
16339 | <dest> | ||
16340 | *: "Errore: %s" | ||
16341 | </dest> | ||
16342 | <voice> | ||
16343 | *: "Errore" | ||
16344 | </voice> | ||
16345 | </phrase> | ||
16346 | <phrase> | ||
16347 | id: LANG_MIKMOD_SETTINGS | ||
16348 | desc: mikmod plugin | ||
16349 | user: core | ||
16350 | <source> | ||
16351 | *: "Mikmod Settings" | ||
16352 | </source> | ||
16353 | <dest> | ||
16354 | *: "Impostazioni Mikmod" | ||
16355 | </dest> | ||
16356 | <voice> | ||
16357 | *: "Impostazioni Mik mod" | ||
16358 | </voice> | ||
16359 | </phrase> | ||
16360 | <phrase> | ||
16361 | id: LANG_MIKMOD_MENU | ||
16362 | desc: mikmod plugin | ||
16363 | user: core | ||
16364 | <source> | ||
16365 | *: "Mikmod Menu" | ||
16366 | </source> | ||
16367 | <dest> | ||
16368 | *: "Menu Mikmod" | ||
16369 | </dest> | ||
16370 | <voice> | ||
16371 | *: "Menu Mik mod" | ||
16372 | </voice> | ||
16373 | </phrase> | ||
16374 | <phrase> | ||
16375 | id: LANG_CHESSBOX_MENU | ||
16376 | desc: chessbox plugin | ||
16377 | user: core | ||
16378 | <source> | ||
16379 | *: "Chessbox Menu" | ||
16380 | </source> | ||
16381 | <dest> | ||
16382 | *: "Menu Chessbox" | ||
16383 | </dest> | ||
16384 | <voice> | ||
16385 | *: "Menu Chess box" | ||
16386 | </voice> | ||
16387 | </phrase> | ||
16388 | <phrase> | ||
16389 | id: VOICE_INVALID_VOICE_FILE | ||
16390 | desc: played if the voice file fails to load | ||
16391 | user: core | ||
16392 | <source> | ||
16393 | *: "" | ||
16394 | </source> | ||
16395 | <dest> | ||
16396 | *: "" | ||
16397 | </dest> | ||
16398 | <voice> | ||
16399 | *: "Fail della voce non valido" | ||
16400 | </voice> | ||
16401 | </phrase> | ||
16402 | <phrase> | ||
16403 | id: LANG_PERCENT_FORMAT | ||
16404 | desc: percent formatting ( `10%` is default , for `10 %` use '%ld %%' , for `%10` use '%%%ld' and so on) | ||
16405 | user: core | ||
16406 | <source> | ||
16407 | *: "%ld%%" | ||
16408 | </source> | ||
16409 | <dest> | ||
16410 | *: "~%ld%%" | ||
16411 | </dest> | ||
16412 | <voice> | ||
16413 | *: none | ||
16414 | </voice> | ||
16415 | </phrase> | ||
diff --git a/apps/onplay.c b/apps/onplay.c index 4880af58f3..d468c0a545 100644 --- a/apps/onplay.c +++ b/apps/onplay.c | |||
@@ -65,12 +65,9 @@ | |||
65 | #include "shortcuts.h" | 65 | #include "shortcuts.h" |
66 | #include "misc.h" | 66 | #include "misc.h" |
67 | 67 | ||
68 | static int context; | ||
69 | static const char *selected_file = NULL; | ||
70 | static char selected_file_path[MAX_PATH]; | ||
71 | static int selected_file_attr = 0; | ||
72 | static int onplay_result = ONPLAY_OK; | 68 | static int onplay_result = ONPLAY_OK; |
73 | static bool in_queue_submenu = false; | 69 | static bool in_queue_submenu = false; |
70 | |||
74 | static bool (*ctx_current_playlist_insert)(int position, bool queue, bool create_new); | 71 | static bool (*ctx_current_playlist_insert)(int position, bool queue, bool create_new); |
75 | static int (*ctx_add_to_playlist)(const char* playlist, bool new_playlist); | 72 | static int (*ctx_add_to_playlist)(const char* playlist, bool new_playlist); |
76 | extern struct menu_item_ex file_menu; /* settings_menu.c */ | 73 | extern struct menu_item_ex file_menu; /* settings_menu.c */ |
@@ -84,6 +81,14 @@ extern struct menu_item_ex file_menu; /* settings_menu.c */ | |||
84 | MENU_ITEM_COUNT(sizeof( name##_)/sizeof(*name##_)), \ | 81 | MENU_ITEM_COUNT(sizeof( name##_)/sizeof(*name##_)), \ |
85 | { (void*)name##_},{.callback_and_desc = & name##__}}; | 82 | { (void*)name##_},{.callback_and_desc = & name##__}}; |
86 | 83 | ||
84 | static struct selected_file | ||
85 | { | ||
86 | char buf[MAX_PATH]; | ||
87 | const char *path; | ||
88 | int attr; | ||
89 | int context; | ||
90 | } selected_file; | ||
91 | |||
87 | static struct clipboard | 92 | static struct clipboard |
88 | { | 93 | { |
89 | char path[MAX_PATH]; /* Clipped file's path */ | 94 | char path[MAX_PATH]; /* Clipped file's path */ |
@@ -91,6 +96,14 @@ static struct clipboard | |||
91 | unsigned int flags; /* Operation type flags */ | 96 | unsigned int flags; /* Operation type flags */ |
92 | } clipboard; | 97 | } clipboard; |
93 | 98 | ||
99 | /* set selected file (doesn't touch buffer) */ | ||
100 | static void selected_file_set(int context, const char *path, int attr) | ||
101 | { | ||
102 | selected_file.path = path; | ||
103 | selected_file.attr = attr; | ||
104 | selected_file.context = context; | ||
105 | } | ||
106 | |||
94 | /* Empty the clipboard */ | 107 | /* Empty the clipboard */ |
95 | static void clipboard_clear_selection(struct clipboard *clip) | 108 | static void clipboard_clear_selection(struct clipboard *clip) |
96 | { | 109 | { |
@@ -149,20 +162,18 @@ static int bookmark_menu_callback(int action, | |||
149 | struct gui_synclist *this_list) | 162 | struct gui_synclist *this_list) |
150 | { | 163 | { |
151 | (void) this_list; | 164 | (void) this_list; |
152 | switch (action) | 165 | if (action == ACTION_REQUEST_MENUITEM) |
153 | { | 166 | { |
154 | case ACTION_REQUEST_MENUITEM: | 167 | /* hide loading bookmarks menu if no bookmarks exist */ |
155 | /* hide loading bookmarks menu if no bookmarks exist */ | 168 | if (this_item == &bookmark_load_menu_item) |
156 | if (this_item == &bookmark_load_menu_item) | 169 | { |
157 | { | 170 | if (!bookmark_exists()) |
158 | if (!bookmark_exists()) | 171 | return ACTION_EXIT_MENUITEM; |
159 | return ACTION_EXIT_MENUITEM; | 172 | } |
160 | } | ||
161 | break; | ||
162 | case ACTION_EXIT_MENUITEM: | ||
163 | settings_save(); | ||
164 | break; | ||
165 | } | 173 | } |
174 | else if (action == ACTION_EXIT_MENUITEM) | ||
175 | settings_save(); | ||
176 | |||
166 | return action; | 177 | return action; |
167 | } | 178 | } |
168 | 179 | ||
@@ -244,20 +255,20 @@ static struct add_to_pl_param addtopl_replace_shuffled = {PLAYLIST_INSERT_LAST_S | |||
244 | static void op_playlist_insert_selected(int position, bool queue) | 255 | static void op_playlist_insert_selected(int position, bool queue) |
245 | { | 256 | { |
246 | #ifdef HAVE_TAGCACHE | 257 | #ifdef HAVE_TAGCACHE |
247 | if (context == CONTEXT_STD && ctx_current_playlist_insert != NULL) | 258 | if (selected_file.context == CONTEXT_STD && ctx_current_playlist_insert != NULL) |
248 | { | 259 | { |
249 | ctx_current_playlist_insert(position, queue, false); | 260 | ctx_current_playlist_insert(position, queue, false); |
250 | return; | 261 | return; |
251 | } | 262 | } |
252 | #endif | 263 | #endif |
253 | if ((selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_AUDIO) | 264 | if ((selected_file.attr & FILE_ATTR_MASK) == FILE_ATTR_AUDIO) |
254 | playlist_insert_track(NULL, selected_file, position, queue, true); | 265 | playlist_insert_track(NULL, selected_file.path, position, queue, true); |
255 | else if ((selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_M3U) | 266 | else if ((selected_file.attr & FILE_ATTR_MASK) == FILE_ATTR_M3U) |
256 | playlist_insert_playlist(NULL, selected_file, position, queue); | 267 | playlist_insert_playlist(NULL, selected_file.path, position, queue); |
257 | else if (selected_file_attr & ATTR_DIRECTORY) | 268 | else if (selected_file.attr & ATTR_DIRECTORY) |
258 | { | 269 | { |
259 | #ifdef HAVE_TAGCACHE | 270 | #ifdef HAVE_TAGCACHE |
260 | if (context == CONTEXT_ID3DB) | 271 | if (selected_file.context == CONTEXT_ID3DB) |
261 | { | 272 | { |
262 | tagtree_current_playlist_insert(position, queue); | 273 | tagtree_current_playlist_insert(position, queue); |
263 | return; | 274 | return; |
@@ -269,14 +280,14 @@ static void op_playlist_insert_selected(int position, bool queue) | |||
269 | 280 | ||
270 | const char *lines[] = { | 281 | const char *lines[] = { |
271 | ID2P(LANG_RECURSE_DIRECTORY_QUESTION), | 282 | ID2P(LANG_RECURSE_DIRECTORY_QUESTION), |
272 | selected_file | 283 | selected_file.path |
273 | }; | 284 | }; |
274 | const struct text_message message={lines, 2}; | 285 | const struct text_message message={lines, 2}; |
275 | /* Ask if user wants to recurse directory */ | 286 | /* Ask if user wants to recurse directory */ |
276 | recurse = (gui_syncyesno_run(&message, NULL, NULL)==YESNO_YES); | 287 | recurse = (gui_syncyesno_run(&message, NULL, NULL)==YESNO_YES); |
277 | } | 288 | } |
278 | 289 | ||
279 | playlist_insert_directory(NULL, selected_file, position, queue, | 290 | playlist_insert_directory(NULL, selected_file.path, position, queue, |
280 | recurse == RECURSE_ON); | 291 | recurse == RECURSE_ON); |
281 | } | 292 | } |
282 | } | 293 | } |
@@ -336,7 +347,7 @@ static bool view_playlist(void) | |||
336 | { | 347 | { |
337 | bool result; | 348 | bool result; |
338 | 349 | ||
339 | result = playlist_viewer_ex(selected_file, NULL); | 350 | result = playlist_viewer_ex(selected_file.path, NULL); |
340 | 351 | ||
341 | if (result == PLAYLIST_VIEWER_OK && | 352 | if (result == PLAYLIST_VIEWER_OK && |
342 | onplay_result == ONPLAY_OK) | 353 | onplay_result == ONPLAY_OK) |
@@ -431,7 +442,7 @@ static int treeplaylist_callback(int action, | |||
431 | struct gui_synclist *this_list) | 442 | struct gui_synclist *this_list) |
432 | { | 443 | { |
433 | (void)this_list; | 444 | (void)this_list; |
434 | int sel_file_attr = (selected_file_attr & FILE_ATTR_MASK); | 445 | int sel_file_attr = (selected_file.attr & FILE_ATTR_MASK); |
435 | 446 | ||
436 | switch (action) | 447 | switch (action) |
437 | { | 448 | { |
@@ -440,7 +451,7 @@ static int treeplaylist_callback(int action, | |||
440 | { | 451 | { |
441 | if (sel_file_attr != FILE_ATTR_AUDIO && | 452 | if (sel_file_attr != FILE_ATTR_AUDIO && |
442 | sel_file_attr != FILE_ATTR_M3U && | 453 | sel_file_attr != FILE_ATTR_M3U && |
443 | (selected_file_attr & ATTR_DIRECTORY) == 0) | 454 | (selected_file.attr & ATTR_DIRECTORY) == 0) |
444 | return ACTION_EXIT_MENUITEM; | 455 | return ACTION_EXIT_MENUITEM; |
445 | } | 456 | } |
446 | else if (this_item == &queue_menu) | 457 | else if (this_item == &queue_menu) |
@@ -471,7 +482,7 @@ static int treeplaylist_callback(int action, | |||
471 | return ACTION_EXIT_MENUITEM; | 482 | return ACTION_EXIT_MENUITEM; |
472 | 483 | ||
473 | if (sel_file_attr != FILE_ATTR_M3U && | 484 | if (sel_file_attr != FILE_ATTR_M3U && |
474 | (selected_file_attr & ATTR_DIRECTORY) == 0) | 485 | (selected_file.attr & ATTR_DIRECTORY) == 0) |
475 | return ACTION_EXIT_MENUITEM; | 486 | return ACTION_EXIT_MENUITEM; |
476 | } | 487 | } |
477 | 488 | ||
@@ -494,10 +505,8 @@ static int treeplaylist_callback(int action, | |||
494 | 505 | ||
495 | void onplay_show_playlist_menu(const char* path, int attr, void (*playlist_insert_cb)) | 506 | void onplay_show_playlist_menu(const char* path, int attr, void (*playlist_insert_cb)) |
496 | { | 507 | { |
497 | context = CONTEXT_STD; | ||
498 | ctx_current_playlist_insert = playlist_insert_cb; | 508 | ctx_current_playlist_insert = playlist_insert_cb; |
499 | selected_file = path; | 509 | selected_file_set(CONTEXT_STD, path, attr); |
500 | selected_file_attr = attr; | ||
501 | in_queue_submenu = false; | 510 | in_queue_submenu = false; |
502 | do_menu(&tree_playlist_menu, NULL, NULL, false); | 511 | do_menu(&tree_playlist_menu, NULL, NULL, false); |
503 | } | 512 | } |
@@ -505,13 +514,13 @@ void onplay_show_playlist_menu(const char* path, int attr, void (*playlist_inser | |||
505 | /* playlist catalog options */ | 514 | /* playlist catalog options */ |
506 | static bool cat_add_to_a_playlist(void) | 515 | static bool cat_add_to_a_playlist(void) |
507 | { | 516 | { |
508 | return catalog_add_to_a_playlist(selected_file, selected_file_attr, | 517 | return catalog_add_to_a_playlist(selected_file.path, selected_file.attr, |
509 | false, NULL, ctx_add_to_playlist); | 518 | false, NULL, ctx_add_to_playlist); |
510 | } | 519 | } |
511 | 520 | ||
512 | static bool cat_add_to_a_new_playlist(void) | 521 | static bool cat_add_to_a_new_playlist(void) |
513 | { | 522 | { |
514 | return catalog_add_to_a_playlist(selected_file, selected_file_attr, | 523 | return catalog_add_to_a_playlist(selected_file.path, selected_file.attr, |
515 | true, NULL, ctx_add_to_playlist); | 524 | true, NULL, ctx_add_to_playlist); |
516 | } | 525 | } |
517 | 526 | ||
@@ -529,10 +538,8 @@ MAKE_ONPLAYMENU(cat_playlist_menu, ID2P(LANG_ADD_TO_PL), | |||
529 | 538 | ||
530 | void onplay_show_playlist_cat_menu(const char* track_name, int attr, void (*add_to_pl_cb)) | 539 | void onplay_show_playlist_cat_menu(const char* track_name, int attr, void (*add_to_pl_cb)) |
531 | { | 540 | { |
532 | context = CONTEXT_STD; | ||
533 | ctx_add_to_playlist = add_to_pl_cb; | 541 | ctx_add_to_playlist = add_to_pl_cb; |
534 | selected_file = track_name; | 542 | selected_file_set(CONTEXT_STD, track_name, attr); |
535 | selected_file_attr = attr; | ||
536 | do_menu(&cat_playlist_menu, NULL, NULL, false); | 543 | do_menu(&cat_playlist_menu, NULL, NULL, false); |
537 | } | 544 | } |
538 | 545 | ||
@@ -542,24 +549,22 @@ static int cat_playlist_callback(int action, | |||
542 | { | 549 | { |
543 | (void)this_item; | 550 | (void)this_item; |
544 | (void)this_list; | 551 | (void)this_list; |
545 | if (!selected_file || | 552 | if (!selected_file.path || |
546 | (((selected_file_attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) && | 553 | (((selected_file.attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) && |
547 | ((selected_file_attr & FILE_ATTR_MASK) != FILE_ATTR_M3U) && | 554 | ((selected_file.attr & FILE_ATTR_MASK) != FILE_ATTR_M3U) && |
548 | ((selected_file_attr & ATTR_DIRECTORY) == 0))) | 555 | ((selected_file.attr & ATTR_DIRECTORY) == 0))) |
549 | { | 556 | { |
550 | return ACTION_EXIT_MENUITEM; | 557 | return ACTION_EXIT_MENUITEM; |
551 | } | 558 | } |
552 | 559 | ||
553 | switch (action) | 560 | if (action == ACTION_REQUEST_MENUITEM) |
554 | { | 561 | { |
555 | case ACTION_REQUEST_MENUITEM: | 562 | if ((audio_status() & AUDIO_STATUS_PLAY) |
556 | if ((audio_status() & AUDIO_STATUS_PLAY) || context != CONTEXT_WPS) | 563 | || selected_file.context != CONTEXT_WPS) |
557 | { | 564 | { |
558 | return action; | 565 | return action; |
559 | } | 566 | } |
560 | else | 567 | return ACTION_EXIT_MENUITEM; |
561 | return ACTION_EXIT_MENUITEM; | ||
562 | break; | ||
563 | } | 568 | } |
564 | return action; | 569 | return action; |
565 | } | 570 | } |
@@ -579,13 +584,13 @@ static void splash_failed(int lang_what, int err) | |||
579 | 584 | ||
580 | static bool clipboard_cut(void) | 585 | static bool clipboard_cut(void) |
581 | { | 586 | { |
582 | return clipboard_clip(&clipboard, selected_file, selected_file_attr, | 587 | return clipboard_clip(&clipboard, selected_file.path, selected_file.attr, |
583 | PASTE_CUT); | 588 | PASTE_CUT); |
584 | } | 589 | } |
585 | 590 | ||
586 | static bool clipboard_copy(void) | 591 | static bool clipboard_copy(void) |
587 | { | 592 | { |
588 | return clipboard_clip(&clipboard, selected_file, selected_file_attr, | 593 | return clipboard_clip(&clipboard, selected_file.path, selected_file.attr, |
589 | PASTE_COPY); | 594 | PASTE_COPY); |
590 | } | 595 | } |
591 | 596 | ||
@@ -597,9 +602,6 @@ static int clipboard_paste(void) | |||
597 | 602 | ||
598 | int rc = copy_move_fileobject(clipboard.path, getcwd(NULL, 0), clipboard.flags); | 603 | int rc = copy_move_fileobject(clipboard.path, getcwd(NULL, 0), clipboard.flags); |
599 | 604 | ||
600 | |||
601 | clear_screen_buffer(true); | ||
602 | |||
603 | switch (rc) | 605 | switch (rc) |
604 | { | 606 | { |
605 | case FORC_CANCELLED: | 607 | case FORC_CANCELLED: |
@@ -643,13 +645,10 @@ static int ratingitem_callback(int action, | |||
643 | { | 645 | { |
644 | (void)this_item; | 646 | (void)this_item; |
645 | (void)this_list; | 647 | (void)this_list; |
646 | switch (action) | 648 | if (action == ACTION_REQUEST_MENUITEM) |
647 | { | 649 | { |
648 | case ACTION_REQUEST_MENUITEM: | 650 | if (!selected_file.path || !global_settings.runtimedb || !tagcache_is_usable()) |
649 | if (!selected_file || !global_settings.runtimedb || | 651 | return ACTION_EXIT_MENUITEM; |
650 | !tagcache_is_usable()) | ||
651 | return ACTION_EXIT_MENUITEM; | ||
652 | break; | ||
653 | } | 652 | } |
654 | return action; | 653 | return action; |
655 | } | 654 | } |
@@ -676,13 +675,10 @@ static int view_cue_item_callback(int action, | |||
676 | (void)this_item; | 675 | (void)this_item; |
677 | (void)this_list; | 676 | (void)this_list; |
678 | struct mp3entry* id3 = audio_current_track(); | 677 | struct mp3entry* id3 = audio_current_track(); |
679 | switch (action) | 678 | if (action == ACTION_REQUEST_MENUITEM) |
680 | { | 679 | { |
681 | case ACTION_REQUEST_MENUITEM: | 680 | if (!selected_file.path || !id3 || !id3->cuesheet) |
682 | if (!selected_file | 681 | return ACTION_EXIT_MENUITEM; |
683 | || !id3 || !id3->cuesheet) | ||
684 | return ACTION_EXIT_MENUITEM; | ||
685 | break; | ||
686 | } | 682 | } |
687 | return action; | 683 | return action; |
688 | } | 684 | } |
@@ -712,7 +708,7 @@ MENUITEM_FUNCTION(pitch_screen_item, 0, ID2P(LANG_PITCH), | |||
712 | 708 | ||
713 | static int clipboard_delete_selected_fileobject(void) | 709 | static int clipboard_delete_selected_fileobject(void) |
714 | { | 710 | { |
715 | int rc = delete_fileobject(selected_file); | 711 | int rc = delete_fileobject(selected_file.path); |
716 | if (rc < FORC_SUCCESS) { | 712 | if (rc < FORC_SUCCESS) { |
717 | splash_failed(LANG_DELETE, rc); | 713 | splash_failed(LANG_DELETE, rc); |
718 | } else if (rc == FORC_CANCELLED) { | 714 | } else if (rc == FORC_CANCELLED) { |
@@ -747,7 +743,7 @@ static int clipboard_create_dir(void) | |||
747 | 743 | ||
748 | static int clipboard_rename_selected_file(void) | 744 | static int clipboard_rename_selected_file(void) |
749 | { | 745 | { |
750 | int rc = rename_file(selected_file); | 746 | int rc = rename_file(selected_file.path); |
751 | 747 | ||
752 | show_result(rc, LANG_RENAME); | 748 | show_result(rc, LANG_RENAME); |
753 | 749 | ||
@@ -777,7 +773,7 @@ MENUITEM_FUNCTION(create_dir_item, 0, ID2P(LANG_CREATE_DIR), | |||
777 | /* other items */ | 773 | /* other items */ |
778 | static bool list_viewers(void) | 774 | static bool list_viewers(void) |
779 | { | 775 | { |
780 | int ret = filetype_list_viewers(selected_file); | 776 | int ret = filetype_list_viewers(selected_file.path); |
781 | if (ret == PLUGIN_USB_CONNECTED) | 777 | if (ret == PLUGIN_USB_CONNECTED) |
782 | onplay_result = ONPLAY_RELOAD_DIR; | 778 | onplay_result = ONPLAY_RELOAD_DIR; |
783 | return false; | 779 | return false; |
@@ -786,19 +782,19 @@ static bool list_viewers(void) | |||
786 | #ifdef HAVE_TAGCACHE | 782 | #ifdef HAVE_TAGCACHE |
787 | static bool prepare_database_sel(void *param) | 783 | static bool prepare_database_sel(void *param) |
788 | { | 784 | { |
789 | if (context == CONTEXT_ID3DB && | 785 | if (selected_file.context == CONTEXT_ID3DB && |
790 | (selected_file_attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) | 786 | (selected_file.attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) |
791 | { | 787 | { |
792 | if (!strcmp(param, "properties")) | 788 | if (!strcmp(param, "properties")) |
793 | strmemccpy(selected_file_path, MAKE_ACT_STR(ACTIVITY_DATABASEBROWSER), | 789 | strmemccpy(selected_file.buf, MAKE_ACT_STR(ACTIVITY_DATABASEBROWSER), |
794 | sizeof(selected_file_path)); | 790 | sizeof(selected_file.buf)); |
795 | else if (!tagtree_get_subentry_filename(selected_file_path, MAX_PATH)) | 791 | else if (!tagtree_get_subentry_filename(selected_file.buf, MAX_PATH)) |
796 | { | 792 | { |
797 | onplay_result = ONPLAY_RELOAD_DIR; | 793 | onplay_result = ONPLAY_RELOAD_DIR; |
798 | return false; | 794 | return false; |
799 | } | 795 | } |
800 | 796 | ||
801 | selected_file = selected_file_path; | 797 | selected_file.path = selected_file.buf; |
802 | } | 798 | } |
803 | return true; | 799 | return true; |
804 | } | 800 | } |
@@ -810,7 +806,7 @@ static bool onplay_load_plugin(void *param) | |||
810 | if (!prepare_database_sel(param)) | 806 | if (!prepare_database_sel(param)) |
811 | return false; | 807 | return false; |
812 | #endif | 808 | #endif |
813 | int ret = filetype_load_plugin((const char*)param, selected_file); | 809 | int ret = filetype_load_plugin((const char*)param, selected_file.path); |
814 | if (ret == PLUGIN_USB_CONNECTED) | 810 | if (ret == PLUGIN_USB_CONNECTED) |
815 | onplay_result = ONPLAY_RELOAD_DIR; | 811 | onplay_result = ONPLAY_RELOAD_DIR; |
816 | else if (ret == PLUGIN_GOTO_PLUGIN) | 812 | else if (ret == PLUGIN_GOTO_PLUGIN) |
@@ -835,7 +831,7 @@ MENUITEM_FUNCTION_W_PARAM(pictureflow_item, 0, ID2P(LANG_ONPLAY_PICTUREFLOW), | |||
835 | #endif | 831 | #endif |
836 | static bool onplay_add_to_shortcuts(void) | 832 | static bool onplay_add_to_shortcuts(void) |
837 | { | 833 | { |
838 | shortcuts_add(SHORTCUT_BROWSER, selected_file); | 834 | shortcuts_add(SHORTCUT_BROWSER, selected_file.path); |
839 | return false; | 835 | return false; |
840 | } | 836 | } |
841 | MENUITEM_FUNCTION(add_to_faves_item, 0, ID2P(LANG_ADD_TO_FAVES), | 837 | MENUITEM_FUNCTION(add_to_faves_item, 0, ID2P(LANG_ADD_TO_FAVES), |
@@ -844,7 +840,7 @@ MENUITEM_FUNCTION(add_to_faves_item, 0, ID2P(LANG_ADD_TO_FAVES), | |||
844 | 840 | ||
845 | static void set_dir_helper(char* dirnamebuf, size_t bufsz) | 841 | static void set_dir_helper(char* dirnamebuf, size_t bufsz) |
846 | { | 842 | { |
847 | path_append(dirnamebuf, selected_file, PA_SEP_HARD, bufsz); | 843 | path_append(dirnamebuf, selected_file.path, PA_SEP_HARD, bufsz); |
848 | settings_save(); | 844 | settings_save(); |
849 | } | 845 | } |
850 | 846 | ||
@@ -882,7 +878,7 @@ MENUITEM_FUNCTION(set_startdir_item, 0, ID2P(LANG_START_DIR), | |||
882 | 878 | ||
883 | static bool set_catalogdir(void) | 879 | static bool set_catalogdir(void) |
884 | { | 880 | { |
885 | catalog_set_directory(selected_file); | 881 | catalog_set_directory(selected_file.path); |
886 | settings_save(); | 882 | settings_save(); |
887 | return false; | 883 | return false; |
888 | } | 884 | } |
@@ -893,7 +889,7 @@ MENUITEM_FUNCTION(set_catalogdir_item, 0, ID2P(LANG_PLAYLIST_DIR), | |||
893 | static bool set_databasedir(void) | 889 | static bool set_databasedir(void) |
894 | { | 890 | { |
895 | struct tagcache_stat *tc_stat = tagcache_get_stat(); | 891 | struct tagcache_stat *tc_stat = tagcache_get_stat(); |
896 | if (strcasecmp(selected_file, tc_stat->db_path)) | 892 | if (strcasecmp(selected_file.path, tc_stat->db_path)) |
897 | { | 893 | { |
898 | splash(HZ, ID2P(LANG_PLEASE_REBOOT)); | 894 | splash(HZ, ID2P(LANG_PLEASE_REBOOT)); |
899 | } | 895 | } |
@@ -927,7 +923,7 @@ static int clipboard_callback(int action, | |||
927 | case ACTION_REQUEST_MENUITEM: | 923 | case ACTION_REQUEST_MENUITEM: |
928 | #ifdef HAVE_MULTIVOLUME | 924 | #ifdef HAVE_MULTIVOLUME |
929 | /* no rename+delete for volumes */ | 925 | /* no rename+delete for volumes */ |
930 | if ((selected_file_attr & ATTR_VOLUME) && | 926 | if ((selected_file.attr & ATTR_VOLUME) && |
931 | (this_item == &rename_file_item || | 927 | (this_item == &rename_file_item || |
932 | this_item == &delete_dir_item || | 928 | this_item == &delete_dir_item || |
933 | this_item == &clipboard_cut_item || | 929 | this_item == &clipboard_cut_item || |
@@ -935,7 +931,7 @@ static int clipboard_callback(int action, | |||
935 | return ACTION_EXIT_MENUITEM; | 931 | return ACTION_EXIT_MENUITEM; |
936 | #endif | 932 | #endif |
937 | #ifdef HAVE_TAGCACHE | 933 | #ifdef HAVE_TAGCACHE |
938 | if (context == CONTEXT_ID3DB) | 934 | if (selected_file.context == CONTEXT_ID3DB) |
939 | { | 935 | { |
940 | if (this_item == &track_info_item || | 936 | if (this_item == &track_info_item || |
941 | this_item == &pictureflow_item) | 937 | this_item == &pictureflow_item) |
@@ -953,21 +949,21 @@ static int clipboard_callback(int action, | |||
953 | { | 949 | { |
954 | return action; | 950 | return action; |
955 | } | 951 | } |
956 | else if (selected_file) | 952 | else if (selected_file.path) |
957 | { | 953 | { |
958 | /* requires an actual file */ | 954 | /* requires an actual file */ |
959 | if (this_item == &rename_file_item || | 955 | if (this_item == &rename_file_item || |
960 | this_item == &clipboard_cut_item || | 956 | this_item == &clipboard_cut_item || |
961 | this_item == &clipboard_copy_item || | 957 | this_item == &clipboard_copy_item || |
962 | (this_item == &track_info_item && | 958 | (this_item == &track_info_item && |
963 | (selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_AUDIO) || | 959 | (selected_file.attr & FILE_ATTR_MASK) == FILE_ATTR_AUDIO) || |
964 | (this_item == &properties_item && | 960 | (this_item == &properties_item && |
965 | (selected_file_attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) || | 961 | (selected_file.attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) || |
966 | this_item == &add_to_faves_item) | 962 | this_item == &add_to_faves_item) |
967 | { | 963 | { |
968 | return action; | 964 | return action; |
969 | } | 965 | } |
970 | else if ((selected_file_attr & ATTR_DIRECTORY)) | 966 | else if ((selected_file.attr & ATTR_DIRECTORY)) |
971 | { | 967 | { |
972 | /* only for directories */ | 968 | /* only for directories */ |
973 | if (this_item == &delete_dir_item || | 969 | if (this_item == &delete_dir_item || |
@@ -992,7 +988,7 @@ static int clipboard_callback(int action, | |||
992 | #if LCD_DEPTH > 1 | 988 | #if LCD_DEPTH > 1 |
993 | else if (this_item == &set_backdrop_item) | 989 | else if (this_item == &set_backdrop_item) |
994 | { | 990 | { |
995 | char *suffix = strrchr(selected_file, '.'); | 991 | char *suffix = strrchr(selected_file.path, '.'); |
996 | if (suffix) | 992 | if (suffix) |
997 | { | 993 | { |
998 | if (strcasecmp(suffix, ".bmp") == 0) | 994 | if (strcasecmp(suffix, ".bmp") == 0) |
@@ -1066,8 +1062,8 @@ static int onplaymenu_callback(int action, | |||
1066 | case ACTION_REQUEST_MENUITEM: | 1062 | case ACTION_REQUEST_MENUITEM: |
1067 | if (this_item == &view_playlist_item) | 1063 | if (this_item == &view_playlist_item) |
1068 | { | 1064 | { |
1069 | if ((selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_M3U && | 1065 | if ((selected_file.attr & FILE_ATTR_MASK) == FILE_ATTR_M3U && |
1070 | context == CONTEXT_TREE) | 1066 | selected_file.context == CONTEXT_TREE) |
1071 | return action; | 1067 | return action; |
1072 | } | 1068 | } |
1073 | return ACTION_EXIT_MENUITEM; | 1069 | return ACTION_EXIT_MENUITEM; |
@@ -1075,6 +1071,8 @@ static int onplaymenu_callback(int action, | |||
1075 | case ACTION_EXIT_MENUITEM: | 1071 | case ACTION_EXIT_MENUITEM: |
1076 | return ACTION_EXIT_AFTER_THIS_MENUITEM; | 1072 | return ACTION_EXIT_AFTER_THIS_MENUITEM; |
1077 | break; | 1073 | break; |
1074 | default: | ||
1075 | break; | ||
1078 | } | 1076 | } |
1079 | return action; | 1077 | return action; |
1080 | } | 1078 | } |
@@ -1085,13 +1083,13 @@ static bool hotkey_delete_item(void) | |||
1085 | { | 1083 | { |
1086 | #ifdef HAVE_MULTIVOLUME | 1084 | #ifdef HAVE_MULTIVOLUME |
1087 | /* no delete for volumes */ | 1085 | /* no delete for volumes */ |
1088 | if (selected_file_attr & ATTR_VOLUME) | 1086 | if (selected_file.attr & ATTR_VOLUME) |
1089 | return false; | 1087 | return false; |
1090 | #endif | 1088 | #endif |
1091 | 1089 | ||
1092 | #ifdef HAVE_TAGCACHE | 1090 | #ifdef HAVE_TAGCACHE |
1093 | if (context == CONTEXT_ID3DB && | 1091 | if (selected_file.context == CONTEXT_ID3DB && |
1094 | (selected_file_attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) | 1092 | (selected_file.attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) |
1095 | return false; | 1093 | return false; |
1096 | #endif | 1094 | #endif |
1097 | 1095 | ||
@@ -1101,10 +1099,10 @@ static bool hotkey_delete_item(void) | |||
1101 | static bool hotkey_open_with(void) | 1099 | static bool hotkey_open_with(void) |
1102 | { | 1100 | { |
1103 | /* only open files */ | 1101 | /* only open files */ |
1104 | if (selected_file_attr & ATTR_DIRECTORY) | 1102 | if (selected_file.attr & ATTR_DIRECTORY) |
1105 | return false; | 1103 | return false; |
1106 | #ifdef HAVE_MULTIVOLUME | 1104 | #ifdef HAVE_MULTIVOLUME |
1107 | if (selected_file_attr & ATTR_VOLUME) | 1105 | if (selected_file.attr & ATTR_VOLUME) |
1108 | return false; | 1106 | return false; |
1109 | #endif | 1107 | #endif |
1110 | return list_viewers(); | 1108 | return list_viewers(); |
@@ -1113,8 +1111,8 @@ static bool hotkey_open_with(void) | |||
1113 | static int hotkey_tree_pl_insert_shuffled(void) | 1111 | static int hotkey_tree_pl_insert_shuffled(void) |
1114 | { | 1112 | { |
1115 | if ((audio_status() & AUDIO_STATUS_PLAY) || | 1113 | if ((audio_status() & AUDIO_STATUS_PLAY) || |
1116 | (selected_file_attr & ATTR_DIRECTORY) || | 1114 | (selected_file.attr & ATTR_DIRECTORY) || |
1117 | ((selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_M3U)) | 1115 | ((selected_file.attr & FILE_ATTR_MASK) == FILE_ATTR_M3U)) |
1118 | { | 1116 | { |
1119 | add_to_playlist(&addtopl_insert_shuf); | 1117 | add_to_playlist(&addtopl_insert_shuf); |
1120 | } | 1118 | } |
@@ -1127,7 +1125,7 @@ static int hotkey_tree_run_plugin(void *param) | |||
1127 | if (!prepare_database_sel(param)) | 1125 | if (!prepare_database_sel(param)) |
1128 | return ONPLAY_RELOAD_DIR; | 1126 | return ONPLAY_RELOAD_DIR; |
1129 | #endif | 1127 | #endif |
1130 | if (filetype_load_plugin((const char*)param, selected_file) == PLUGIN_GOTO_WPS) | 1128 | if (filetype_load_plugin((const char*)param, selected_file.path) == PLUGIN_GOTO_WPS) |
1131 | return ONPLAY_START_PLAY; | 1129 | return ONPLAY_START_PLAY; |
1132 | 1130 | ||
1133 | return ONPLAY_RELOAD_DIR; | 1131 | return ONPLAY_RELOAD_DIR; |
@@ -1253,15 +1251,15 @@ static int execute_hotkey(bool is_wps) | |||
1253 | } | 1251 | } |
1254 | #endif /* HOTKEY */ | 1252 | #endif /* HOTKEY */ |
1255 | 1253 | ||
1256 | int onplay(char* file, int attr, int from, bool hotkey) | 1254 | int onplay(char* file, int attr, int from_context, bool hotkey) |
1257 | { | 1255 | { |
1258 | const struct menu_item_ex *menu; | 1256 | const struct menu_item_ex *menu; |
1259 | onplay_result = ONPLAY_OK; | 1257 | onplay_result = ONPLAY_OK; |
1260 | context = from; | ||
1261 | ctx_current_playlist_insert = NULL; | 1258 | ctx_current_playlist_insert = NULL; |
1262 | selected_file = NULL; | 1259 | selected_file_set(from_context, NULL, attr); |
1260 | |||
1263 | #ifdef HAVE_TAGCACHE | 1261 | #ifdef HAVE_TAGCACHE |
1264 | if (context == CONTEXT_ID3DB && | 1262 | if (from_context == CONTEXT_ID3DB && |
1265 | (attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) | 1263 | (attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) |
1266 | { | 1264 | { |
1267 | ctx_add_to_playlist = tagtree_add_to_playlist; | 1265 | ctx_add_to_playlist = tagtree_add_to_playlist; |
@@ -1269,8 +1267,8 @@ int onplay(char* file, int attr, int from, bool hotkey) | |||
1269 | { | 1267 | { |
1270 | /* add a leading slash so that catalog_add_to_a_playlist | 1268 | /* add a leading slash so that catalog_add_to_a_playlist |
1271 | later prefills the name when creating a new playlist */ | 1269 | later prefills the name when creating a new playlist */ |
1272 | snprintf(selected_file_path, MAX_PATH, "/%s", file); | 1270 | snprintf(selected_file.buf, MAX_PATH, "/%s", file); |
1273 | selected_file = selected_file_path; | 1271 | selected_file.path = selected_file.buf; |
1274 | } | 1272 | } |
1275 | } | 1273 | } |
1276 | else | 1274 | else |
@@ -1279,22 +1277,22 @@ int onplay(char* file, int attr, int from, bool hotkey) | |||
1279 | ctx_add_to_playlist = NULL; | 1277 | ctx_add_to_playlist = NULL; |
1280 | if (file != NULL) | 1278 | if (file != NULL) |
1281 | { | 1279 | { |
1282 | strmemccpy(selected_file_path, file, MAX_PATH); | 1280 | strmemccpy(selected_file.buf, file, MAX_PATH); |
1283 | selected_file = selected_file_path; | 1281 | selected_file.path = selected_file.buf; |
1284 | } | 1282 | } |
1285 | 1283 | ||
1286 | } | 1284 | } |
1287 | selected_file_attr = attr; | ||
1288 | int menu_selection; | 1285 | int menu_selection; |
1286 | |||
1289 | #ifdef HAVE_HOTKEY | 1287 | #ifdef HAVE_HOTKEY |
1290 | if (hotkey) | 1288 | if (hotkey) |
1291 | return execute_hotkey(context == CONTEXT_WPS); | 1289 | return execute_hotkey(from_context == CONTEXT_WPS); |
1292 | #else | 1290 | #else |
1293 | (void)hotkey; | 1291 | (void)hotkey; |
1294 | #endif | 1292 | #endif |
1295 | 1293 | ||
1296 | push_current_activity(ACTIVITY_CONTEXTMENU); | 1294 | push_current_activity(ACTIVITY_CONTEXTMENU); |
1297 | if (context == CONTEXT_WPS) | 1295 | if (from_context == CONTEXT_WPS) |
1298 | menu = &wps_onplay_menu; | 1296 | menu = &wps_onplay_menu; |
1299 | else | 1297 | else |
1300 | menu = &tree_onplay_menu; | 1298 | menu = &tree_onplay_menu; |
@@ -1303,23 +1301,22 @@ int onplay(char* file, int attr, int from, bool hotkey) | |||
1303 | if (get_current_activity() == ACTIVITY_CONTEXTMENU) /* Activity may have been */ | 1301 | if (get_current_activity() == ACTIVITY_CONTEXTMENU) /* Activity may have been */ |
1304 | pop_current_activity(); /* popped already by menu item */ | 1302 | pop_current_activity(); /* popped already by menu item */ |
1305 | 1303 | ||
1306 | switch (menu_selection) | 1304 | |
1307 | { | 1305 | if (menu_selection == GO_TO_WPS) |
1308 | case GO_TO_WPS: | 1306 | return ONPLAY_START_PLAY; |
1309 | return ONPLAY_START_PLAY; | 1307 | if (menu_selection == GO_TO_ROOT) |
1310 | case GO_TO_ROOT: | 1308 | return ONPLAY_MAINMENU; |
1311 | case GO_TO_MAINMENU: | 1309 | if (menu_selection == GO_TO_MAINMENU) |
1312 | return ONPLAY_MAINMENU; | 1310 | return ONPLAY_MAINMENU; |
1313 | case GO_TO_PLAYLIST_VIEWER: | 1311 | if (menu_selection == GO_TO_PLAYLIST_VIEWER) |
1314 | return ONPLAY_PLAYLIST; | 1312 | return ONPLAY_PLAYLIST; |
1315 | case GO_TO_PLUGIN: | 1313 | if (menu_selection == GO_TO_PLUGIN) |
1316 | return ONPLAY_PLUGIN; | 1314 | return ONPLAY_PLUGIN; |
1317 | default: | 1315 | |
1318 | return onplay_result; | 1316 | return onplay_result; |
1319 | } | ||
1320 | } | 1317 | } |
1321 | 1318 | ||
1322 | int get_onplay_context(void) | 1319 | int get_onplay_context(void) |
1323 | { | 1320 | { |
1324 | return context; | 1321 | return selected_file.context; |
1325 | } | 1322 | } |
diff --git a/apps/onplay.h b/apps/onplay.h index ea1c2e6c38..74dc045db3 100644 --- a/apps/onplay.h +++ b/apps/onplay.h | |||
@@ -25,7 +25,7 @@ | |||
25 | #include "menu.h" | 25 | #include "menu.h" |
26 | #endif | 26 | #endif |
27 | 27 | ||
28 | int onplay(char* file, int attr, int from_screen, bool hotkey); | 28 | int onplay(char* file, int attr, int from_context, bool hotkey); |
29 | int get_onplay_context(void); | 29 | int get_onplay_context(void); |
30 | 30 | ||
31 | enum { | 31 | enum { |