Subversion Repositories Kolibri OS

Rev

Rev 8954 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
8954 leency 1
#define MAX_LINE_CHARS 128
7331 leency 2
 
3
#define CHBOX 12
4
#define CHECKBOX_ID 50
7434 leency 5
unsigned char checkbox[sizeof(file "img/checkbox.raw")]= FROM "img/checkbox.raw";
7331 leency 6
 
7422 leency 7
#define COL_BG_ACTIVE 0xFFF0A9
7331 leency 8
#define COL_BG_INACTIVE 0xFFFFFF
9
 
10
//===================================================//
11
//                                                   //
12
//                       LINE                        //
13
//                                                   //
14
//===================================================//
15
 
16
struct NOTE_LINE
17
{
18
	bool state;
19
	char data[MAX_LINE_CHARS];
7422 leency 20
	void Delete();
7331 leency 21
};
22
 
7422 leency 23
void NOTE_LINE::Delete()
24
{
25
	state=false;
26
	data[0]=' ';
27
	data[1]=NULL;
28
}
29
 
7331 leency 30
//===================================================//
31
//                                                   //
32
//                       LIST                        //
33
//                                                   //
34
//===================================================//
35
 
7422 leency 36
struct NOTES : llist {
7331 leency 37
	char txt_path[4096];
8954 leency 38
	char txt_data[MAX_LINE_CHARS+4*LINES_COUNT+30];
7434 leency 39
	bool txt_file_exists;
7331 leency 40
 
41
	NOTE_LINE lines[LINES_COUNT];
42
 
43
	char edit_active;
44
	int OpenTxt();
45
	int SaveTxt();
46
	void DrawList();
47
	dword DrawLine(int line_n, draw_h);
48
} notes;
49
 
50
 
51
int NOTES::OpenTxt(dword file_path)
52
{
53
	int i=0, linepos=0;
54
	int item_n=-1;
55
 
7437 leency 56
	count = LINES_COUNT;
57
 
7331 leency 58
	strcpy(#txt_path, file_path);
59
	ReadFile(0, 4096, #txt_data, #txt_path);
60
	if (!txt_data) || (strncmp(#txt_data, "notes", 5)!=0)
61
	{
7434 leency 62
		txt_file_exists = false;
7331 leency 63
		return 0;
64
	}
65
	else
66
	{
7434 leency 67
		txt_file_exists = true;
7331 leency 68
		i+=5; //skip "notes" indefinier
69
		while (txt_data[i])
70
		{
71
			if (txt_data[i]=='\n') {
72
				item_n++;
73
				i+=2;
74
				if (txt_data[i]=='-') lines[item_n].state=false; else lines[item_n].state=true;
75
				i+=2;
76
				linepos = 0;
77
				continue;
78
			}
79
			if (linepos
80
			linepos++;
81
			i++;
82
		}
7422 leency 83
		while (item_n < LINES_COUNT)
84
		{
85
			//lines[item_n].Delete();
86
			item_n++;
87
		}
7331 leency 88
		return 1;
89
	}
90
}
91
 
92
int NOTES::SaveTxt()
93
{
94
	int i;
95
	dword tm;
96
	strcpy(#txt_data, "notes");
7422 leency 97
	for (i=0; i<=count; i++)
7331 leency 98
	{
99
		if (lines[i].state==false) strcat(#txt_data, "\n- "); else strcat(#txt_data, "\n+ ");
100
		tm = #lines[i].data;
101
		strcat(#txt_data, #lines[i].data);
102
	}
7434 leency 103
	if (!txt_file_exists) CreateFile(0, 0, #txt_path);
7331 leency 104
	WriteFile(0, strlen(#txt_data), #txt_data, #txt_path);
105
}
106
 
107
void NOTES::DrawList()
108
{
109
	int i;
7422 leency 110
	for (i=0; i
7331 leency 111
}
112
 
113
 
114
dword NOTES::DrawLine(int line_n, draw_h) {
115
	dword
116
		COL_BOTTOM_LINE=0xE8EFF4,
117
		COL_BG,
118
		cur_text;
7444 leency 119
	int drawy;
7331 leency 120
	char line_text[4096];
121
	if (line_n<0) return;
7422 leency 122
	x = 1;
123
	if (line_n==cur_y) COL_BG = COL_BG_ACTIVE; else COL_BG = COL_BG_INACTIVE;
124
	DrawBar(x, line_n*item_h+y, RED_LINE_X, draw_h-1, COL_BG_INACTIVE);
125
	DrawBar(x+RED_LINE_X+1, line_n*item_h+y, w-RED_LINE_X-1, draw_h-1, COL_BG);
7331 leency 126
 
127
	cur_text = #lines[line_n].data;
128
 
7422 leency 129
	if (draw_h!=item_h)
7331 leency 130
	{
131
		COL_BOTTOM_LINE=COL_BG;
132
	}
133
	else
134
	{
7444 leency 135
		drawy = item_h*line_n+5+y;
136
		DefineButton(RED_LINE_X-CHBOX/2+x, drawy, CHBOX-1,CHBOX-1, CHECKBOX_ID+line_n+BT_HIDE, 0); //checkbox
9602 leency 137
		PutImage(RED_LINE_X-CHBOX/2+x,drawy, CHBOX,CHBOX, lines[line_n].state*CHBOX*CHBOX*3+#checkbox);
7444 leency 138
		if (cur_text) WriteText(x+RED_LINE_X+6, drawy+2, 0x80, lines[line_n].state*0x777777, cur_text);
139
		if (lines[line_n].state == true) DrawBar(x+RED_LINE_X+6, drawy+6, strlen(cur_text)*6, 1, 0x444444); //strike
140
		DrawBar(WIN_W,drawy,1,item_h,0xBBBBBB); //fast fix; proper fix is to restrict WriteText() char length
7331 leency 141
	}
7422 leency 142
	DrawBar(x, line_n*item_h+draw_h-1+y, w, 1, COL_BOTTOM_LINE);
143
	DrawBar(x+RED_LINE_X, line_n*item_h+y, 1, draw_h, COL_RED_LINE);
144
	x = RED_LINE_X;
7331 leency 145
	return cur_text;
146
}