Subversion Repositories Kolibri OS

Rev

Rev 8956 | Rev 8996 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8956 Rev 8981
Line 9... Line 9...
9
} SystemDiscs=0;
9
} SystemDiscs=0;
10
 
10
 
Line 11... Line 11...
11
void _SystemDiscs::Get()
11
void _SystemDiscs::Get()
12
{
12
{
13
	bool kolibrios_exists=false;
-
 
14
	char dev_name[10], sys_discs[10];
13
	char dev_name[10], sys_discs[10];
15
	int i1, j1, dev_num_i, dev_disc_num;
14
	int i1, j1, dev_disc_num, real_dev_num;
16
	dword devbuf, diskbuf;
15
	dword devbuf, diskbuf;
Line 17... Line 16...
17
 
16
 
18
	list.drop();
17
	list.drop();
19
	devbuf = malloc(10000);
18
	devbuf = malloc(10000);
20
	ReadDir(19, devbuf, "/");
19
	ReadDir(19, devbuf, "/");
-
 
20
	dev_num = real_dev_num = EBX;
-
 
21
 
-
 
22
	list.add("/sys");
-
 
23
	dev_num++;
-
 
24
 
-
 
25
	if (dir_exists("/kolibrios")) {
-
 
26
		//need to check that /sys != /kolibrios
-
 
27
		list.add("/kolibrios");
-
 
28
		dev_num++;
-
 
29
	}
21
	dev_num = dev_num_i = EBX;
30
 
22
	for (i1=0; i1
31
	for (i1=0; i1
23
	{
32
	{
24
		sprintf(#dev_name,"/%s",i1*304+ devbuf+72);
33
		sprintf(#dev_name,"/%s",i1*304+ devbuf+72);
25
		GetDir(#diskbuf, #dev_disc_num, #dev_name, DIRS_NOROOT);
34
		GetDir(#diskbuf, #dev_disc_num, #dev_name, DIRS_NOROOT);
26
		for (j1=0; j1
35
		for (j1=0; j1
27
		{
36
		{
28
			sprintf(#sys_discs,"%s/%s",#dev_name,j1*304+ diskbuf+72);
37
			sprintf(#sys_discs,"%s/%s",#dev_name,j1*304+ diskbuf+72);
-
 
38
			if (sys_discs[1]=='r') {
-
 
39
				dev_num--;
29
			if (sys_discs[1]=='c') || (dir_exists(#sys_discs)) list.add(#sys_discs);
40
				continue;
30
		}
-
 
31
		if (!strcmp(#sys_discs, "/rd/1")) 
-
 
32
		{
41
			}
33
			if (dir_exists("/kolibrios")) && (!kolibrios_exists) {
-
 
34
				kolibrios_exists=true;
42
			if (sys_discs[1]=='c') || (sys_discs[1]=='f') || (dir_exists(#sys_discs)) {
35
				list.add("/kolibrios");
-
 
36
				dev_num++;
43
				list.add(#sys_discs);
37
			}
44
			}
38
		}
45
		}
39
	}
46
	}
40
	free(devbuf);
47
	free(devbuf);
41
	free(diskbuf);
48
	free(diskbuf);
Line 42... Line 49...
42
}
49
}
43
 
50
 
44
void GetDiskIconAndName(char disk_first_letter, dword dev_icon, dword disc_name)
51
void GetDiskIconAndName(dword dev_name, dev_icon, disc_name)
45
{
52
{
46
	int i;
53
	int i;
47
	for (i=0; devinfo[i]!=0; i+=3) {
54
	for (i=0; devinfo[i]!=0; i+=3) {
48
		if (disk_first_letter == ESBYTE[devinfo[i]]) {
55
		if (!strncmp(dev_name+1, devinfo[i], 2)) {
49
			ESBYTE[dev_icon] = devinfo[i+1];
56
			ESBYTE[dev_icon] = devinfo[i+1];
50
			strcpy(disc_name, devinfo[i+2]);
57
			strcpy(disc_name, devinfo[i+2]);
51
			return;
58
			return;
Line 72... Line 79...
72
		draw_y = 74; 
79
		draw_y = 74; 
73
		draw_x = 17; 
80
		draw_x = 17; 
74
		for (i=0;i
81
		for (i=0;i
75
			strcpy(#dev_name, list.get(i));
82
			strcpy(#dev_name, list.get(i));
76
			GetDiskIconAndName(dev_name[1], #dev_icon, #disc_name);
83
			GetDiskIconAndName(#dev_name, #dev_icon, #disc_name);
77
			if (strstr(path, #dev_name)==path) is_active=true; else is_active=false;
84
			if (strstr(path, #dev_name)==path) is_active=true; else is_active=false;
Line 78... Line 85...
78
 
85
 
79
			DrawBar(draw_x,draw_y,6,DEV_H+1,0xFFFFFF);
86
			DrawBar(draw_x,draw_y,6,DEV_H+1,0xFFFFFF);
80
			DrawBar(draw_x+6+18,draw_y,160-6-18,DEV_H+1,0xFFFFFF);
87
			DrawBar(draw_x+6+18,draw_y,160-6-18,DEV_H+1,0xFFFFFF);
Line 108... Line 115...
108
		strcpy(#dev_name, "/root");
115
		strcpy(#dev_name, "/root");
109
		dev_icon = 0;
116
		dev_icon = 0;
110
	} else if (chrnum(_path, '/')==1) {
117
	} else if (chrnum(_path, '/')==1) {
111
		strcpy(#dev_name, _path);
118
		strcpy(#dev_name, _path);
112
		GetDiskIconAndName(dev_name[1], #dev_icon, #disc_name);
119
		GetDiskIconAndName(#dev_name, #dev_icon, #disc_name);
113
	} else for (i=0;i
120
	} else for (i=0;i
114
		strcpy(#dev_name, list.get(i));
121
		strcpy(#dev_name, list.get(i));
115
		GetDiskIconAndName(dev_name[1], #dev_icon, #disc_name);
122
		GetDiskIconAndName(#dev_name, #dev_icon, #disc_name);
116
		if (strstr(_path, #dev_name)-_path==0) break;
123
		if (strstr(_path, #dev_name)-_path==0) break;
117
	}
124
	}
118
	DrawRectangle(draw_x-1, SELECTY-1, DDW+2-KFM2_DEVH, KFM2_DEVH+1, sc.work_graph);
125
	DrawRectangle(draw_x-1, SELECTY-1, DDW+2-KFM2_DEVH, KFM2_DEVH+1, sc.work_graph);
119
	DrawBar(draw_x, SELECTY, DDW+1-KFM2_DEVH, KFM2_DEVH, 0xFFFFFF);
126
	DrawBar(draw_x, SELECTY, DDW+1-KFM2_DEVH, KFM2_DEVH, 0xFFFFFF);
120
	_PutImage(draw_x + 5, SELECTY+2, 18,17, dev_icon*17*18*3+#devices);
127
	_PutImage(draw_x + 5, SELECTY+2, 18,17, dev_icon*17*18*3+#devices);
121
	kfont.WriteIntoWindow(draw_x + 24, math.max(KFM2_DEVH-kfont.height/2+SELECTY,0), 0xFFFfff, 0x000000, kfont.size.pt, #dev_name+1);
128
	kfont.WriteIntoWindow(draw_x + 24, math.max(KFM2_DEVH-kfont.height/2+SELECTY,0), 0xFFFfff, 0x000000, kfont.size.pt, #dev_name+1);
Line 133... Line 140...
133
	DrawPopup(draw_x, optionsy, DDW, list.count*KFM2_DEVH, 1, -1, sc.work_graph);
140
	DrawPopup(draw_x, optionsy, DDW, list.count*KFM2_DEVH, 1, -1, sc.work_graph);
Line 134... Line 141...
134
 
141
 
135
	for (i=0;i
142
	for (i=0;i
136
		strcpy(#dev_name, list.get(i));
143
		strcpy(#dev_name, list.get(i));
137
		GetDiskIconAndName(dev_name[1], #dev_icon, #disc_name);
144
		GetDiskIconAndName(#dev_name, #dev_icon, #disc_name);
Line 138... Line 145...
138
		if (strstr(path, #dev_name)!=0) is_active=true; else is_active=false;
145
		if (strstr(path, #dev_name)!=0) is_active=true; else is_active=false;
139
 
146
 
140
		DrawBar(draw_x, optionsy, DDW, KFM2_DEVH, 0xFFFFFF);
147
		DrawBar(draw_x, optionsy, DDW, KFM2_DEVH, 0xFFFFFF);