Group :: System/Configuration/Other
RPM: telegramqml
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
Patch: 0004-Add-SharedPointer-Qml-component-to-use-TelegramShare.patch
Download
Download
From 93e6b14ed45baa79f1e5b5ffdbe504ec33711f83 Mon Sep 17 00:00:00 2001
From: Bardia Daneshvar <realbardiax@gmail.com>
Date: Wed, 27 Jul 2016 16:50:33 +0430
Subject: [PATCH 4/4] Add SharedPointer Qml component to use
TelegramSharedPointer features from Qml...
(cherry picked from commit 4bc16efe61afab19a77e3b4e2f9dfe0e7a8d53ff)
---
documents/sharedpointer.md | 30 ++++++++++++++++++++++++
documents/start.md | 1 +
plugins.qmltypes | 54 ++++++++++++++++++++++++++++++++------------
telegrampeerdetails.cpp | 2 +-
telegramqml.pri | 6 +++--
telegramqmlinitializer.cpp | 2 ++
telegramqmlsharedpointer.cpp | 40 ++++++++++++++++++++++++++++++++
telegramqmlsharedpointer.h | 32 ++++++++++++++++++++++++++
8 files changed, 149 insertions(+), 18 deletions(-)
create mode 100644 documents/sharedpointer.md
create mode 100644 telegramqmlsharedpointer.cpp
create mode 100644 telegramqmlsharedpointer.h
diff --git a/documents/sharedpointer.md b/documents/sharedpointer.md
new file mode 100644
index 0000000..5f7a0c8
--- /dev/null
+++ b/documents/sharedpointer.md
@@ -0,0 +1,30 @@
+# SharedPointer
+
+ * [Component details](#component-details)
+ * [Required Properties](#required-properties)
+ * [Methods](#methods)
+
+
+### Component details:
+
+|Detail|Value|
+|------|-----|
+|Import|TelegramQml 2.0|
+|Component|<font color='#074885'>SharedPointer</font>|
+|C++ class|<font color='#074885'>TelegramQmlSharedPointer</font>|
+|Inherits|<font color='#074885'>object</font>|
+|Model|<font color='#074885'>No</font>|
+
+
+### Required Properties
+
+* <font color='#074885'><b>object</b></font>: object
+
+
+
+### Methods
+
+ * void <font color='#074885'><b>clean</b></font>()
+
+
+
diff --git a/documents/start.md b/documents/start.md
index abc4313..c65a85e 100644
--- a/documents/start.md
+++ b/documents/start.md
@@ -62,4 +62,5 @@ Here are all components of the TelegramQml:
* [TqObject](tqobject.md)
* [AbstractListModel](abstractlistmodel.md)
* [AbstractEngineListModel](abstractenginelistmodel.md)
+ * [SharedPointer](sharedpointer.md)
* [Enums](enums.md)
diff --git a/plugins.qmltypes b/plugins.qmltypes
index b33753b..1476705 100644
--- a/plugins.qmltypes
+++ b/plugins.qmltypes
@@ -3186,21 +3186,32 @@ Module {
"RoleTopMessageItem": 259,
"RolePeerItem": 260,
"RolePeerHex": 261,
- "RoleName": 262,
- "RoleMessageDate": 263,
- "RoleMessageUnread": 264,
- "RoleMessage": 265,
- "RoleMessageOut": 266,
- "RoleMessageType": 267,
- "RoleMessageUser": 268,
- "RoleLastOnline": 269,
- "RoleIsOnline": 270,
- "RoleStatus": 271,
- "RoleStatusText": 272,
- "RoleTyping": 273,
- "RoleUnreadCount": 274,
- "RoleMute": 275,
- "RoleCategory": 276
+ "RoleIsSecretChat": 262,
+ "RoleSecretChatState": 263,
+ "RoleName": 264,
+ "RoleMessageDate": 265,
+ "RoleMessageUnread": 266,
+ "RoleMessage": 267,
+ "RoleMessageOut": 268,
+ "RoleMessageType": 269,
+ "RoleMessageUser": 270,
+ "RoleLastOnline": 271,
+ "RoleIsOnline": 272,
+ "RoleStatus": 273,
+ "RoleStatusText": 274,
+ "RoleTyping": 275,
+ "RoleUnreadCount": 276,
+ "RoleMute": 277,
+ "RoleCategory": 278
+ }
+ }
+ Enum {
+ name: "SecretChatState"
+ values: {
+ "SecretChatStateInit": 0,
+ "SecretChatStateRequested": 1,
+ "SecretChatStateAccepted": 2,
+ "SecretChatStateCancelled": 3
}
}
Property { name: "visibility"; type: "int" }
@@ -3726,6 +3737,14 @@ Module {
}
}
Component {
+ name: "TelegramQmlSharedPointer"
+ prototype: "QObject"
+ exports: ["TelegramQml/SharedPointer 2.0"]
+ exportMetaObjectRevisions: [0]
+ Property { name: "object"; type: "QObject"; isPointer: true }
+ Method { name: "clean" }
+ }
+ Component {
name: "TelegramStatus"
defaultProperty: "items"
prototype: "TqObject"
@@ -3779,6 +3798,11 @@ Module {
Property { name: "stickerSet"; type: "InputStickerSetObject"; isPointer: true }
Property { name: "documents"; type: "QVariantList" }
Signal { name: "engineChanged" }
+ Method { name: "showRecents" }
+ Method {
+ name: "addToRecents"
+ Parameter { name: "doc"; type: "DocumentObject"; isPointer: true }
+ }
}
Component {
name: "TelegramTestTools"
diff --git a/telegrampeerdetails.cpp b/telegrampeerdetails.cpp
index e805dd5..dca302c 100644
--- a/telegrampeerdetails.cpp
+++ b/telegrampeerdetails.cpp
@@ -472,6 +472,7 @@ void TelegramPeerDetails::refresh()
connectUserSignals(p->user, true);
connectChatSignals(p->chat, true);
+ p->peerRoot = TelegramTools::objectRoot(p->peer);
if(!p->engine || !p->peer || !p->engine->telegram() || !p->engine->sharedData())
{
if(!p->username.isEmpty())
@@ -505,7 +506,6 @@ void TelegramPeerDetails::refresh()
const Peer &peer = TelegramTools::inputPeerPeer(p->peer->core());
const QByteArray &key = TelegramTools::identifier(peer);
- p->peerRoot = TelegramTools::objectRoot(p->peer);
p->dialog = tsdm->getDialog(key);
p->user = tsdm->getUser(key);
p->chat = tsdm->getChat(key);
diff --git a/telegramqml.pri b/telegramqml.pri
index b85c365..b3deebb 100644
--- a/telegramqml.pri
+++ b/telegramqml.pri
@@ -64,7 +64,8 @@ SOURCES += \
$$PWD/telegramcache.cpp \
$$PWD/telegrammemberslistmodel.cpp \
$$PWD/telegrammedialistmodel.cpp \
- $$PWD/telegramauthstore.cpp
+ $$PWD/telegramauthstore.cpp \
+ $$PWD/telegramqmlsharedpointer.cpp
HEADERS += \
$$PWD/telegramqml_macros.h \
@@ -106,7 +107,8 @@ HEADERS += \
$$PWD/telegramcache.h \
$$PWD/telegrammemberslistmodel.h \
$$PWD/telegrammedialistmodel.h \
- $$PWD/telegramauthstore.h
+ $$PWD/telegramauthstore.h \
+ $$PWD/telegramqmlsharedpointer.h
RESOURCES += \
$$PWD/tqmlresource.qrc
diff --git a/telegramqmlinitializer.cpp b/telegramqmlinitializer.cpp
index c8ce4a5..e2235f4 100644
--- a/telegramqmlinitializer.cpp
+++ b/telegramqmlinitializer.cpp
@@ -23,6 +23,7 @@
#include "telegramcache.h"
#include "telegrammedialistmodel.h"
#include "telegramauthstore.h"
+#include "telegramqmlsharedpointer.h"
#include "private/telegramdownloadhandler.h"
#include <telegram/objects/qmltools.h>
@@ -88,6 +89,7 @@ void TelegramQmlInitializer::init(const char *uri, bool exportMode)
exportItem<TelegramAbstractEngineListModel>("TelegramQml", 2, 0, "AbstractEngineListModel");
}
+ registerType<TelegramQmlSharedPointer>("TelegramQml", 2, 0, "SharedPointer", exportMode);
registerUncreatableType<TelegramEnums>(uri, 2, 0, "Enums", "It's just enums", exportMode);
qmlRegisterType<TqmlDocumentExporter>(uri, 2, 0, "DocumentExporter");
diff --git a/telegramqmlsharedpointer.cpp b/telegramqmlsharedpointer.cpp
new file mode 100644
index 0000000..72413db
--- /dev/null
+++ b/telegramqmlsharedpointer.cpp
@@ -0,0 +1,40 @@
+#include "telegramqmlsharedpointer.h"
+#include "tqbaseobject.h"
+
+TelegramQmlSharedPointer::TelegramQmlSharedPointer(QObject *parent) :
+ QObject(parent)
+{
+
+}
+
+void TelegramQmlSharedPointer::setObject(QObject *object)
+{
+ if(object == mObject)
+ return;
+
+ if(mObject) disconnect(mObject.data(), &QObject::destroyed, this, &TelegramQmlSharedPointer::clean);
+ mObject = object;
+ if(mObject) connect(mObject.data(), &QObject::destroyed, this, &TelegramQmlSharedPointer::clean);
+
+ Q_EMIT objectChanged();
+}
+
+QObject *TelegramQmlSharedPointer::object() const
+{
+ return mObject;
+}
+
+QStringList TelegramQmlSharedPointer::requiredProperties()
+{
+ return QStringList() << FUNCTION_NAME(object);
+}
+
+void TelegramQmlSharedPointer::clean()
+{
+ mObject = 0;
+}
+
+TelegramQmlSharedPointer::~TelegramQmlSharedPointer()
+{
+
+}
diff --git a/telegramqmlsharedpointer.h b/telegramqmlsharedpointer.h
new file mode 100644
index 0000000..02e72e2
--- /dev/null
+++ b/telegramqmlsharedpointer.h
@@ -0,0 +1,32 @@
+#ifndef TELEGRAMQMLSHAREDPOINTER_H
+#define TELEGRAMQMLSHAREDPOINTER_H
+
+#include <QObject>
+
+#include "telegramsharedpointer.h"
+
+class TelegramQmlSharedPointer : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QObject* object READ object WRITE setObject NOTIFY objectChanged)
+
+public:
+ TelegramQmlSharedPointer(QObject *parent = 0);
+ ~TelegramQmlSharedPointer();
+
+ void setObject(QObject *object);
+ QObject *object() const;
+
+ static QStringList requiredProperties();
+
+public Q_SLOTS:
+ void clean();
+
+Q_SIGNALS:
+ void objectChanged();
+
+private:
+ TelegramSharedPointer<QObject> mObject;
+};
+
+#endif // TELEGRAMQMLSHAREDPOINTER_H
--
2.9.2