summaryrefslogtreecommitdiff
path: root/common.c
blob: 0d203b5db42261d5dba93d8fd75391b0a7fb6688 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/*
 * $Id: common.c,v 1.7 2004/06/05 16:52:44 lordjaxom Exp $
 */

#include "data.h"
#include "common.h"
#include <vdr/plugin.h>

const char *SkinPath(void) {
	return cPlugin::ConfigDirectory(PLUGIN_NAME_I18N);
}

const char *ChannelNumber(const cChannel *Channel, int Number) {
	static char buffer[256];
	buffer[0] = '\0';
  if (Channel) {
     if (!Channel->GroupSep())
        snprintf(buffer, sizeof(buffer), "%d%s", Channel->Number(), Number ? "-" : "");
     }
  else if (Number)
     snprintf(buffer, sizeof(buffer), "%d-", Number);
  return buffer;
}

const char *ChannelName(const cChannel *Channel, int Number) {
	static char buffer[256];
	buffer[0] = '\0';
  if (Channel) 
		 snprintf(buffer, sizeof(buffer), "%s", Channel->Name());
  else if (!Number)
     snprintf(buffer, sizeof(buffer), "%s", tr("*** Invalid Channel ***"));
  return buffer;
}

string ItemText(cText2SkinItem *Item, const string &Content) {
	string s;
	if (Item->Text() != "") {
		s = Item->Text();
		int pos;
		while ((pos = s.find('$')) != -1)
			s.replace(pos, 1, Content);
	} else
		s = Content;
	return s;
}

bool ParseVar(const char *Text, const char *Name, int *Value) {
	string value;
	if (ParseVar(Text, Name, value)) {
		*Value = atoi(value.c_str());
		return true;
	}
	return false;
}

bool ParseVar(const char *Text, const char *Name, string &Value){
	char *ptr1, *ptr2;
	char *str;
	bool res = false;
	asprintf(&str, "%s=", Name);
	if ((ptr1 = strstr(Text, str))) {
		ptr1 += strlen(str);
		if ((ptr2 = strchr(ptr1, ',')) || (ptr2 = strchr(ptr1, ';'))) {
			Value = ptr1;
			Value.erase(ptr2 - ptr1);
			res = true;
		}
	}
	free(str);
	return res;
}

bool ParseVar(const char *Text, const char *Name, tColor **Value) {
	string value;
	if (ParseVar(Text, Name, value) && value[0] == '#') {
		*Value = new tColor(strtoul(value.c_str() + 1, NULL, 16));
		return true;
	}
	return false;
}

bool ParseVar(const char *Text, const char *Name, eTextAlignment *Value) {
	string value;
	if (ParseVar(Text, Name, value)) {
		int v = atoi(value.c_str());
		if (v == 0)
			*Value = (eTextAlignment)(taTop|taLeft);
		else if (v == 1)
			*Value = (eTextAlignment)(taTop|taCenter);
		else if (v == 2)
			*Value = (eTextAlignment)(taTop|taRight);
		return true;
	}
	return false;
}

bool ParseVar(const char *Text, const char *Name, const cFont **Value) {
	string value;
	if (ParseVar(Text, Name, value)) {
		if      (value == "Sml") *Value = cFont::GetFont(fontSml);
		else if (value == "Fix") *Value = cFont::GetFont(fontFix);
		return true;
	}
	return false;
}