View difference between Paste ID: UJRtMsRy and bEiXa4Tg
SHOW: | | - or go back to the newest paste.
1
#include "../include/configbutton.h"
2
#include <stdio.h>
3
#include <stdlib.h>
4
5
typedef struct {
6
	int		tvout_mode;
7
    char    command[256];
8
} INTERNAL;
9
10
11
const char *label[32] = { "PAL, Main Layer", "PAL, HW Scaler", "NTSC, Main Layer", "NTSC, HW Scaler", "Disable TV-out", "Configure TV-out" };
12
13
14
int activate(void *internal) {
15
	INTERNAL *ip = internal;
16
    system(ip->command);
17
	/*switch (ip->tvout_mode) {
18
		case 0:			// PAL, Layer 0
19
			system("sudo -n /usr/pandora/scripts/op_tvout.sh -t pal -l 0");
20
			break;
21
		case 1:			// PAL, Layer 1
22
			system("sudo -n /usr/pandora/scripts/op_tvout.sh -t pal -l 1");
23
			break;
24
		case 2:			// NTSC, Layer 0
25
			system("sudo -n /usr/pandora/scripts/op_tvout.sh -t ntsc -l 0");
26
			break;
27
		case 3:			// NTSC, Layer 1
28
			system("sudo -n /usr/pandora/scripts/op_tvout.sh -t ntsc -l 1");
29
			break;
30
		case 4:			// Disable
31
			system("sudo -n /usr/pandora/scripts/op_tvout.sh -d");
32
			break;
33
		default:		// Configure
34
			system("/usr/pandora/scripts/TVoutConfig.py &");
35
			break;
36
	}*/
37
	
38
	return 0;
39
}
40
41
42
int getinfo(PLUGIN_INFO *info) {
43
	int i;
44
	struct PLUGIN_SUBMENU *sub;
45
	INTERNAL *internal;
46
	
47
	if (info->submenu == NULL) {
48
		info->label = malloc(128);
49
        //  Open TV-Out profile
50
        FILE * file;
51
        file = fopen("/etc/pandora/conf/tvout-profiles.conf", "r");
52
        char buff[256];
53
        if(file)
54
        {
55
            i = 0; int modeCount = 0;
56
           while( fgets(buff, sizeof (buff), file) != NULL )
57
            {
58
                
59
                //  If an even line it's a labal
60
                if((i % 2) == 0)
61
                {
62
                    sub = malloc(sizeof(struct PLUGIN_SUBMENU));
63
		            sub->next = info->submenu;
64
		            sub->icon_path = "/usr/share/icons/pandora/tvout.png";
65
		            sub->visible = 1;
66
                    sub->label = buff;
67
                }
68
                else    //  It's a command!
69
                {  
70
		            internal = malloc(sizeof(INTERNAL));
71
		            internal->tvout_mode = modeCount++;
72
                    //  We now need to build the command
73
                    char isEnabled[5];
74
                    char region[4];
75
                    char format[10];
76
                    int layer;
77
                    int x;
78
                    int y;
79
                    int width;
80
                    int height; 
81-
                    if(scanf ("%s %s %s %d %d %d %d %d",isEnabled,region,format,layer,x,y,width,height) > 0)
81+
                    if(sscanf (buff,"%s %s %s %d %d %d %d %d",isEnabled,region,format,&layer,&x,&y,&width,&height) > 0)
82
                    {   
83-
                        char base[256];
83+
			char base[256];
84-
                        base = "sudo -n /usr/pandora/scripts/op_tvout.sh -";
84+
			char* pBase = base;
85-
                        if(isEnabled == "True")
85+
			pBase = "sudo -n /usr/pandora/scripts/op_tvout.sh -";
86-
                            isEnabled = "t";
86+
			if(isEnabled == "True")
87-
                        else
87+
			{
88-
                            isEnabled = "f";
88+
                            isEnabled[0] = 't';
89-
                        sprintf(internal->command, "%s%s %s -c %s -l %d",/* %d %d %d %d",*/base,isEnabled,region,format,layer);/*,x,y,width,height);      */              
89+
			}
90
			else
91
			{
92
                            isEnabled[0] = 'f';
93
			}
94
			isEnabled[1] = '\0';
95
			sprintf(internal->command, "%s%s %s -c %s -l %d",/* %d %d %d %d",*/base,isEnabled,region,format,layer);/*,x,y,width,height);      */              
96
                    }
97
                    sub->internal = internal;
98
		            info->submenu = sub;
99
                }        
100
               ++i;
101
            }
102
            fclose(file);
103
        }
104
        else    // Backup plan
105
        {
106
           for (i = 5; i >= 0; i--) {
107
			        sub = malloc(sizeof(struct PLUGIN_SUBMENU));
108
			        sub->next = info->submenu;
109
			        sub->label = label[i];
110
			        sub->icon_path = "/usr/share/icons/pandora/tvout.png";
111
			        sub->visible = 1;
112
			        internal = malloc(sizeof(INTERNAL));
113
			        internal->tvout_mode = i;
114
			        sub->internal = internal;
115
			        info->submenu = sub;
116
		        }         
117
        }	
118
	}
119
120
	info->label = "TV-out";
121
	info->icon_path = "/usr/share/icons/pandora/tvout.png";
122
	
123
	info->sort_hint = 10;
124
125
	return 0;
126
}