Move the dummy conversation model to c++

This commit is contained in:
Aleix Pol 2018-05-16 03:42:00 +02:00
parent 4097b6f71f
commit 8dba3898e5
5 changed files with 98 additions and 8 deletions

View file

@ -1,6 +1,6 @@
qt5_add_resources(KCSMS_SRCS resources.qrc)
add_executable(kdeconnect-sms main.cpp ${KCSMS_SRCS})
add_executable(kdeconnect-sms main.cpp conversationmodel.cpp ${KCSMS_SRCS})
target_link_libraries(kdeconnect-sms Qt5::Quick Qt5::Widgets KF5::DBusAddons KF5::CoreAddons KF5::I18n)
install(TARGETS kdeconnect-sms ${INSTALL_TARGETS_DEFAULT_ARGS})

View file

@ -0,0 +1,43 @@
/*
* This file is part of KDE Telepathy Chat
*
* Copyright (C) 2018 Aleix Pol Gonzalez <aleixpol@kde.org>
*
* 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 Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "conversationmodel.h"
ConversationModel::ConversationModel(QObject* parent)
: QStandardItemModel(parent)
{
auto roles = roleNames();
roles.insert(FromMeRole, "fromMe");
setItemRoleNames(roles);
}
QString ConversationModel::threadId() const
{
return {};
}
void ConversationModel::setThreadId(const QString &threadId)
{
clear();
appendRow(new QStandardItem(threadId + QStringLiteral(" - A")));
appendRow(new QStandardItem(threadId + QStringLiteral(" - A1")));
appendRow(new QStandardItem(threadId + QStringLiteral(" - A2")));
appendRow(new QStandardItem(threadId + QStringLiteral(" - A3")));
}

View file

@ -0,0 +1,44 @@
/*
* This file is part of KDE Telepathy Chat
*
* Copyright (C) 2018 Aleix Pol Gonzalez <aleixpol@kde.org>
*
* 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 Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef CONVERSATIONMODEL_H
#define CONVERSATIONMODEL_H
#include <QStandardItemModel>
class ConversationModel : public QStandardItemModel
{
Q_OBJECT
Q_PROPERTY(QString threadId READ threadId WRITE setThreadId)
Q_PROPERTY(QString deviceId READ deviceId WRITE setDeviceId)
public:
ConversationModel(QObject* parent = nullptr);
enum Roles { FromMeRole = Qt::UserRole };
QString threadId() const;
void setThreadId(const QString &threadId);
QString deviceId() const { return {}; }
void setDeviceId(const QString &/*deviceId*/) {}
};
#endif // CONVERSATIONMODEL_H

View file

@ -26,7 +26,9 @@
#include <KLocalizedString>
#include <KLocalizedContext>
#include <KDBusService>
#include "conversationmodel.h"
#include "kdeconnect-version.h"
#include <QtQml>
int main(int argc, char *argv[])
{
@ -46,6 +48,8 @@ int main(int argc, char *argv[])
KDBusService service(KDBusService::Unique);
qmlRegisterType<ConversationModel>("org.kde.kdeconnect.sms", 1, 0, "ConversationModel");
QQmlApplicationEngine engine;
engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
engine.load(QUrl("qrc:/qml/main.qml"));

View file

@ -22,6 +22,7 @@ import QtQuick 2.1
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.1
import org.kde.kirigami 2.2 as Kirigami
import org.kde.kdeconnect.sms 1.0
Kirigami.ScrollablePage
{
@ -34,14 +35,12 @@ Kirigami.ScrollablePage
title: i18n("%1: %2", person.name, phoneNumber)
ListView {
model: ListModel {
ListElement { display: "aaa"; fromMe: true }
ListElement { display: "aaa" }
ListElement { display: "aaa"; fromMe: true }
ListElement { display: "aaa" }
ListElement { display: "aaa" }
ListElement { display: "aaa" }
model: ConversationModel {
id: model
deviceId: device.id()
threadId: "xxxx"
}
delegate: Kirigami.BasicListItem {
readonly property real margin: 100
x: fromMe ? Kirigami.Units.gridUnit : margin