Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • nightly/20250605.0
  • beta/202506051039
  • beta/202506051002
  • beta/202506041611
  • beta/202506041335
  • beta/202505231812
  • stable/20250523.0
  • nightly/20250523.0
  • nightly/20250515.0
  • nightly/20250510.0
  • nightly/20250509.1
  • nightly/20250509.0
  • stable/20250430.1
  • stable/20250430.0
  • beta/202504301614
  • nightly/20250430.0
  • stable/20250424.1
  • beta/202504241506
  • stable/20250424.0
  • nightly/20250424.1
21 results

vcard.cpp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    vcard.cpp 1.74 KiB
    /*
     *  Copyright (C) 2018-2024 Savoir-faire Linux Inc.
     *  Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
     *
     *  This library is free software; you can redistribute it and/or
     *  modify it under the terms of the GNU Lesser General Public
     *  License as published by the Free Software Foundation; either
     *  version 2.1 of the License, or (at your option) any later version.
     *
     *  This library is distributed in the hope that it will be useful,
     *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     *  Lesser General Public License for more details.
     *
     *  You should have received a copy of the GNU General Public License
     *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     */
    
    #include "vcard.h"
    
    namespace lrc {
    namespace vCard {
    namespace utils {
    
    QHash<QByteArray, QByteArray>
    toHashMap(const QByteArray& content)
    {
        // TODO without Qt
        QHash<QByteArray, QByteArray> vCard;
        QByteArray previousKey, previousValue;
        const QList<QByteArray> lines = content.split('\n');
    
        Q_FOREACH (const QByteArray& property, lines) {
            // Ignore empty lines
            if (property.size()) {
                // Some properties are over multiple lines
                if (property[0] == ' ' && previousKey.size()) {
                    previousValue += property.right(property.size() - 1);
                }
    
                // Do not use split, URIs can have : in them
                const int dblptPos = property.indexOf(':');
                const QByteArray k(property.left(dblptPos)),
                    v(property.right(property.size() - dblptPos - 1));
                vCard[k] = v;
            }
        }
        return vCard;
    }
    
    } // namespace utils
    } // namespace vCard
    } // namespace lrc