summaryrefslogtreecommitdiff
path: root/apps/settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/settings.c')
-rw-r--r--apps/settings.c133
1 files changed, 119 insertions, 14 deletions
diff --git a/apps/settings.c b/apps/settings.c
index 00510a9204..74843fe20d 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -34,6 +34,10 @@
34#include "power.h" 34#include "power.h"
35#include "backlight.h" 35#include "backlight.h"
36#include "powermgmt.h" 36#include "powermgmt.h"
37#include "status.h"
38#ifdef HAVE_LCD_BITMAP
39#include "icons.h"
40#endif
37 41
38struct user_settings global_settings; 42struct user_settings global_settings;
39 43
@@ -440,14 +444,23 @@ void set_bool(char* string, bool* variable )
440 bool done = false; 444 bool done = false;
441 int button; 445 int button;
442 446
447#ifdef HAVE_LCD_BITMAP
448 if(global_settings.statusbar)
449 lcd_setmargins(0, STATUSBAR_HEIGHT);
450 else
451 lcd_setmargins(0, 0);
452#endif
443 lcd_clear_display(); 453 lcd_clear_display();
444 lcd_puts_scroll(0,0,string); 454 lcd_puts_scroll(0, 0, string);
445 455
446 while ( !done ) { 456 while ( !done ) {
447 lcd_puts(0, 1, *variable ? "on " : "off"); 457 lcd_puts(0, 1, *variable ? "on " : "off");
458#ifdef HAVE_LCD_BITMAP
459 status_draw();
460#endif
448 lcd_update(); 461 lcd_update();
449 462
450 button = button_get(true); 463 button = button_get_w_tmo(HZ/2);
451 switch ( button ) { 464 switch ( button ) {
452#ifdef HAVE_RECORDER_KEYPAD 465#ifdef HAVE_RECORDER_KEYPAD
453 case BUTTON_LEFT: 466 case BUTTON_LEFT:
@@ -458,10 +471,31 @@ void set_bool(char* string, bool* variable )
458 done = true; 471 done = true;
459 break; 472 break;
460 473
461 default: 474#ifdef HAVE_RECORDER_KEYPAD
475 case BUTTON_UP:
476 case BUTTON_DOWN:
477#else
478 case BUTTON_LEFT:
479 case BUTTON_RIGHT:
480#endif
462 if(!(button & BUTTON_REL)) 481 if(!(button & BUTTON_REL))
463 *variable = !*variable; 482 *variable = !*variable;
464 break; 483 break;
484
485#ifdef HAVE_RECORDER_KEYPAD
486 case BUTTON_F3:
487#ifdef HAVE_LCD_BITMAP
488 global_settings.statusbar = !global_settings.statusbar;
489 settings_save();
490 if(global_settings.statusbar)
491 lcd_setmargins(0, STATUSBAR_HEIGHT);
492 else
493 lcd_setmargins(0, 0);
494 lcd_clear_display();
495 lcd_puts_scroll(0, 0, string);
496#endif
497 break;
498#endif
465 } 499 }
466 } 500 }
467 lcd_stop_scroll(); 501 lcd_stop_scroll();
@@ -477,16 +511,25 @@ void set_int(char* string,
477{ 511{
478 bool done = false; 512 bool done = false;
479 513
514#ifdef HAVE_LCD_BITMAP
515 if(global_settings.statusbar)
516 lcd_setmargins(0, STATUSBAR_HEIGHT);
517 else
518 lcd_setmargins(0, 0);
519#endif
480 lcd_clear_display(); 520 lcd_clear_display();
481 lcd_puts_scroll(0,0,string); 521 lcd_puts_scroll(0, 0, string);
482 522
483 while (!done) { 523 while (!done) {
484 char str[32]; 524 char str[32];
485 snprintf(str,sizeof str,"%d %s ", *variable, unit); 525 snprintf(str,sizeof str,"%d %s ", *variable, unit);
486 lcd_puts(0,1,str); 526 lcd_puts(0, 1, str);
527#ifdef HAVE_LCD_BITMAP
528 status_draw();
529#endif
487 lcd_update(); 530 lcd_update();
488 531
489 switch( button_get(true) ) { 532 switch( button_get_w_tmo(HZ/2) ) {
490#ifdef HAVE_RECORDER_KEYPAD 533#ifdef HAVE_RECORDER_KEYPAD
491 case BUTTON_UP: 534 case BUTTON_UP:
492 case BUTTON_UP | BUTTON_REPEAT: 535 case BUTTON_UP | BUTTON_REPEAT:
@@ -519,6 +562,21 @@ void set_int(char* string,
519#endif 562#endif
520 done = true; 563 done = true;
521 break; 564 break;
565
566#ifdef HAVE_RECORDER_KEYPAD
567 case BUTTON_F3:
568#ifdef HAVE_LCD_BITMAP
569 global_settings.statusbar = !global_settings.statusbar;
570 settings_save();
571 if(global_settings.statusbar)
572 lcd_setmargins(0, STATUSBAR_HEIGHT);
573 else
574 lcd_setmargins(0, 0);
575 lcd_clear_display();
576 lcd_puts_scroll(0, 0, string);
577#endif
578 break;
579#endif
522 } 580 }
523 if ( function ) 581 if ( function )
524 function(*variable); 582 function(*variable);
@@ -530,14 +588,23 @@ void set_option(char* string, int* variable, char* options[], int numoptions )
530{ 588{
531 bool done = false; 589 bool done = false;
532 590
591#ifdef HAVE_LCD_BITMAP
592 if(global_settings.statusbar)
593 lcd_setmargins(0, STATUSBAR_HEIGHT);
594 else
595 lcd_setmargins(0, 0);
596#endif
533 lcd_clear_display(); 597 lcd_clear_display();
534 lcd_puts_scroll(0,0,string); 598 lcd_puts_scroll(0, 0, string);
535 599
536 while ( !done ) { 600 while ( !done ) {
537 lcd_puts(0, 1, options[*variable]); 601 lcd_puts(0, 1, options[*variable]);
602#ifdef HAVE_LCD_BITMAP
603 status_draw();
604#endif
538 lcd_update(); 605 lcd_update();
539 606
540 switch ( button_get(true) ) { 607 switch ( button_get_w_tmo(HZ/2) ) {
541#ifdef HAVE_RECORDER_KEYPAD 608#ifdef HAVE_RECORDER_KEYPAD
542 case BUTTON_UP: 609 case BUTTON_UP:
543 case BUTTON_UP | BUTTON_REPEAT: 610 case BUTTON_UP | BUTTON_REPEAT:
@@ -568,6 +635,21 @@ void set_option(char* string, int* variable, char* options[], int numoptions )
568#endif 635#endif
569 done = true; 636 done = true;
570 break; 637 break;
638
639#ifdef HAVE_RECORDER_KEYPAD
640 case BUTTON_F3:
641#ifdef HAVE_LCD_BITMAP
642 global_settings.statusbar = !global_settings.statusbar;
643 settings_save();
644 if(global_settings.statusbar)
645 lcd_setmargins(0, STATUSBAR_HEIGHT);
646 else
647 lcd_setmargins(0, 0);
648 lcd_clear_display();
649 lcd_puts_scroll(0, 0, string);
650#endif
651 break;
652#endif
571 } 653 }
572 } 654 }
573 lcd_stop_scroll(); 655 lcd_stop_scroll();
@@ -605,6 +687,12 @@ void set_time(char* string, int timedate[])
605#endif 687#endif
606#endif 688#endif
607 689
690#ifdef HAVE_LCD_BITMAP
691 if(global_settings.statusbar)
692 lcd_setmargins(0, STATUSBAR_HEIGHT);
693 else
694 lcd_setmargins(0, 0);
695#endif
608 lcd_clear_display(); 696 lcd_clear_display();
609 lcd_puts_scroll(0, 0, string); 697 lcd_puts_scroll(0, 0, string);
610 698
@@ -734,7 +822,7 @@ void set_time(char* string, int timedate[])
734 cursor[5][INDEX_WIDTH] = width + strlen(reffub) - 1; 822 cursor[5][INDEX_WIDTH] = width + strlen(reffub) - 1;
735 823
736 lcd_invertrect(cursor[cursorpos][INDEX_X], 824 lcd_invertrect(cursor[cursorpos][INDEX_X],
737 cursor[cursorpos][INDEX_Y], 825 cursor[cursorpos][INDEX_Y] + lcd_getymargin(),
738 cursor[cursorpos][INDEX_WIDTH], 826 cursor[cursorpos][INDEX_WIDTH],
739 line_height); 827 line_height);
740#elif defined(LOADABLE_FONTS) 828#elif defined(LOADABLE_FONTS)
@@ -770,17 +858,20 @@ void set_time(char* string, int timedate[])
770 cursor[5][INDEX_WIDTH] = width; 858 cursor[5][INDEX_WIDTH] = width;
771 859
772 lcd_invertrect(cursor[cursorpos][INDEX_X], 860 lcd_invertrect(cursor[cursorpos][INDEX_X],
773 cursor[cursorpos][INDEX_Y], 861 cursor[cursorpos][INDEX_Y] + lcd_getymargin(),
774 cursor[cursorpos][INDEX_WIDTH], 862 cursor[cursorpos][INDEX_WIDTH],
775 line_height); 863 line_height);
776#else 864#else
777 lcd_invertrect(cursor[cursorpos][INDEX_X], 865 lcd_invertrect(cursor[cursorpos][INDEX_X],
778 cursor[cursorpos][INDEX_Y], 866 cursor[cursorpos][INDEX_Y] + lcd_getymargin(),
779 cursor[cursorpos][INDEX_WIDTH], 867 cursor[cursorpos][INDEX_WIDTH],
780 8); 868 8);
781#endif 869#endif
782 lcd_puts(0,4,"ON to set"); 870 lcd_puts(0, 4, "ON to set");
783 lcd_puts(0,5,"OFF to revert"); 871 lcd_puts(0, 5, "OFF to revert");
872#ifdef HAVE_LCD_BITMAP
873 status_draw();
874#endif
784 lcd_update(); 875 lcd_update();
785 876
786 /* calculate the minimum and maximum for the number under cursor */ 877 /* calculate the minimum and maximum for the number under cursor */
@@ -811,7 +902,7 @@ void set_time(char* string, int timedate[])
811 } 902 }
812 } 903 }
813 904
814 button = button_get(true); 905 button = button_get_w_tmo(HZ/2);
815 switch ( button ) { 906 switch ( button ) {
816 case BUTTON_LEFT: 907 case BUTTON_LEFT:
817 cursorpos = (cursorpos + 6 - 1) % 6; 908 cursorpos = (cursorpos + 6 - 1) % 6;
@@ -838,6 +929,20 @@ void set_time(char* string, int timedate[])
838 done = true; 929 done = true;
839 timedate[0] = -1; 930 timedate[0] = -1;
840 break; 931 break;
932#ifdef HAVE_RECORDER_KEYPAD
933 case BUTTON_F3:
934#ifdef HAVE_LCD_BITMAP
935 global_settings.statusbar = !global_settings.statusbar;
936 settings_save();
937 if(global_settings.statusbar)
938 lcd_setmargins(0, STATUSBAR_HEIGHT);
939 else
940 lcd_setmargins(0, 0);
941 lcd_clear_display();
942 lcd_puts_scroll(0, 0, string);
943#endif
944 break;
945#endif
841 default: 946 default:
842 break; 947 break;
843 } 948 }