src/hbcore/utils/hbiniparser.cpp
changeset 5 627c4a0fd0e7
parent 0 16d8024aca5e
equal deleted inserted replaced
3:11d3954df52a 5:627c4a0fd0e7
    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 }