35 } |
35 } |
36 |
36 |
37 HbIniParser::~HbIniParser() |
37 HbIniParser::~HbIniParser() |
38 { |
38 { |
39 } |
39 } |
40 |
40 |
41 /* |
41 /* |
42 The main function that populates the map data. |
42 The main function that populates the map data. |
43 currently the data is case sensitive and all api behave that way. |
43 currently the data is case sensitive and all api behave that way. |
44 */ |
44 */ |
45 bool HbIniParser::read(QIODevice *file) |
45 bool HbIniParser::read(QIODevice *file) |
46 { |
46 { |
47 if(!file->isOpen()) |
47 if (!file->isOpen()) { |
48 return false; |
48 return false; |
49 |
49 } |
|
50 |
50 QByteArray line; |
51 QByteArray line; |
51 |
52 |
52 HbIniGroup groupData; |
53 HbIniGroup groupData; |
53 QString groupName; |
54 QString groupName; |
54 |
55 |
55 while(!file->atEnd()) { |
56 while (!file->atEnd()) { |
56 line=file->readLine().trimmed(); |
57 line = file->readLine().trimmed(); |
57 if (line.isEmpty() || line.at(0) == '#') { |
58 if (line.isEmpty() || line.at(0) == '#') { |
58 continue; |
59 continue; |
59 } |
60 } |
60 |
61 |
61 if (line.at(0) == '[') { // found a group |
62 if (line.at(0) == '[') { // found a group |
62 //add old group data |
63 //add old group data |
63 if(!groupName.isEmpty()) { |
64 if (!groupName.isEmpty()) { |
64 mData.insert(groupName,groupData); |
65 mData.insert(groupName, groupData); |
65 groupData.clear(); |
66 groupData.clear(); |
66 } |
67 } |
67 |
68 |
68 groupName = line.mid (1, line.indexOf(']') - 1); |
69 groupName = line.mid(1, line.indexOf(']') - 1); |
69 if (groupName.isEmpty()) { |
70 if (groupName.isEmpty()) { |
70 return false; //error in file |
71 return false; //error in file |
71 } |
72 } |
72 } |
73 } else { |
73 else { |
74 QByteArray key, value; |
74 QByteArray key,value; |
|
75 int equalPosition = line.indexOf('='); |
75 int equalPosition = line.indexOf('='); |
76 if (equalPosition > 0) { |
76 if (equalPosition > 0) { |
77 key = line.left (equalPosition).trimmed(); |
77 key = line.left(equalPosition).trimmed(); |
78 line.remove(0,equalPosition+1); |
78 line.remove(0, equalPosition + 1); |
79 value = line.trimmed(); |
79 value = line.trimmed(); |
80 groupData.insert(key,value); |
80 groupData.insert(key, value); |
81 } |
81 } |
82 } |
82 } |
83 } |
83 } |
84 if(!groupName.isEmpty()) { |
84 if (!groupName.isEmpty()) { |
85 mData.insert(groupName,groupData); |
85 mData.insert(groupName, groupData); |
86 groupData.clear(); |
86 groupData.clear(); |
87 } |
87 } |
88 return true; |
88 return true; |
89 } |
89 } |
90 |
90 |
91 bool HbIniParser::setCurrentGroup(const QString &name) |
91 bool HbIniParser::setCurrentGroup(const QString &name) |
92 { |
92 { |
93 if (mData.contains(name)) { |
93 if (mData.contains(name)) { |
94 mCurrentGroup = name; |
94 mCurrentGroup = name; |
95 return true; |
95 return true; |
99 |
99 |
100 QString HbIniParser::currentGroup() |
100 QString HbIniParser::currentGroup() |
101 { |
101 { |
102 return mCurrentGroup; |
102 return mCurrentGroup; |
103 } |
103 } |
104 |
104 |
105 const QString HbIniParser::value(const QString &groupName,const QString &key) const |
105 const QString HbIniParser::value(const QString &groupName, const QString &key) const |
106 { |
106 { |
107 if(!mData.contains(groupName)){ |
107 if (!mData.contains(groupName)) { |
108 return QString(); |
108 return QString(); |
109 } |
109 } |
110 return mData.value(groupName).value(key); |
110 return mData.value(groupName).value(key); |
111 } |
111 } |
112 |
112 |
113 const QString HbIniParser::value(const QString &key) const |
113 const QString HbIniParser::value(const QString &key) const |
114 { |
114 { |
115 if(mCurrentGroup.isEmpty()) { |
115 if (mCurrentGroup.isEmpty()) { |
116 return QString(); |
116 return QString(); |
117 } |
117 } |
118 return mData.value(mCurrentGroup).value(key); |
118 return mData.value(mCurrentGroup).value(key); |
119 } |
119 } |
120 |
120 |
121 QStringList HbIniParser::groups() const |
121 QStringList HbIniParser::groups() const |
122 { |
122 { |
123 return mData.keys(); |
123 return mData.keys(); |
124 } |
124 } |