File indexing completed on 2024-05-12 04:59:45

0001 /*
0002     This file is part of the KMTP framework, part of the KDE project.
0003 
0004     SPDX-FileCopyrightText: 2018 Andreas Krutzler <andreas.krutzler@gmx.net>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #include "kmtpfile.h"
0010 
0011 KMTPFile::KMTPFile()
0012     : m_itemId(0)
0013     , m_parentId(0)
0014     , m_storageId(0)
0015     , m_filesize(0)
0016     , m_modificationdate(0)
0017 {
0018 }
0019 
0020 KMTPFile::KMTPFile(quint32 itemId,
0021                    quint32 parentId,
0022                    quint32 storageId,
0023                    const char *filename,
0024                    quint64 filesize,
0025                    qint64 modificationdate,
0026                    const QString &filetype)
0027     : m_itemId(itemId)
0028     , m_parentId(parentId)
0029     , m_storageId(storageId)
0030     , m_filename(QString::fromUtf8(filename))
0031     , m_filesize(filesize)
0032     , m_modificationdate(modificationdate)
0033     , m_filetype(filetype)
0034 {
0035 }
0036 
0037 bool KMTPFile::isValid() const
0038 {
0039     return m_itemId != 0;
0040 }
0041 
0042 bool KMTPFile::isFolder() const
0043 {
0044     return m_filetype == QLatin1String("inode/directory");
0045 }
0046 
0047 quint32 KMTPFile::itemId() const
0048 {
0049     return m_itemId;
0050 }
0051 
0052 quint32 KMTPFile::parentId() const
0053 {
0054     return m_parentId;
0055 }
0056 
0057 quint32 KMTPFile::storageId() const
0058 {
0059     return m_storageId;
0060 }
0061 
0062 QString KMTPFile::filename() const
0063 {
0064     return m_filename;
0065 }
0066 
0067 quint64 KMTPFile::filesize() const
0068 {
0069     return m_filesize;
0070 }
0071 
0072 qint64 KMTPFile::modificationdate() const
0073 {
0074     return m_modificationdate;
0075 }
0076 
0077 QString KMTPFile::filetype() const
0078 {
0079     return m_filetype;
0080 }
0081 
0082 QDBusArgument &operator<<(QDBusArgument &argument, const KMTPFile &mtpFile)
0083 {
0084     argument.beginStructure();
0085     argument << mtpFile.m_itemId << mtpFile.m_parentId << mtpFile.m_storageId << mtpFile.m_filename << mtpFile.m_filesize << mtpFile.m_modificationdate
0086              << mtpFile.m_filetype;
0087     argument.endStructure();
0088     return argument;
0089 }
0090 
0091 const QDBusArgument &operator>>(const QDBusArgument &argument, KMTPFile &mtpFile)
0092 {
0093     argument.beginStructure();
0094     argument >> mtpFile.m_itemId >> mtpFile.m_parentId >> mtpFile.m_storageId >> mtpFile.m_filename >> mtpFile.m_filesize >> mtpFile.m_modificationdate
0095         >> mtpFile.m_filetype;
0096     argument.endStructure();
0097     return argument;
0098 }
0099 
0100 QDBusArgument &operator<<(QDBusArgument &argument, const KMTPFileList &list)
0101 {
0102     argument.beginArray(qMetaTypeId<KMTPFile>());
0103     for (const KMTPFile &file : list) {
0104         argument << file;
0105     }
0106     argument.endArray();
0107     return argument;
0108 }
0109 
0110 const QDBusArgument &operator>>(const QDBusArgument &argument, KMTPFileList &list)
0111 {
0112     argument.beginArray();
0113     list.clear();
0114     while (!argument.atEnd()) {
0115         KMTPFile file;
0116         argument >> file;
0117         list.append(file);
0118     }
0119 
0120     argument.endArray();
0121     return argument;
0122 }