diff --git a/harbour-fernschreiber.desktop b/harbour-fernschreiber.desktop
index db85a62..bc67e03 100644
--- a/harbour-fernschreiber.desktop
+++ b/harbour-fernschreiber.desktop
@@ -4,3 +4,7 @@ X-Nemo-Application-Type=generic
Icon=harbour-fernschreiber
Exec=harbour-fernschreiber
Name=Fernschreiber
+MimeType=x-url-handler/t.me;x-scheme-handler/tg;
+X-Maemo-Service=de.ygriega.fernschreiber
+X-Maemo-Object-Path=/de/ygriega/fernschreiber
+X-Maemo-Method=de.ygriega.fernschreiber.openUrl
diff --git a/qml/js/functions.js b/qml/js/functions.js
index 8e52948..972f05f 100644
--- a/qml/js/functions.js
+++ b/qml/js/functions.js
@@ -369,8 +369,25 @@ function enhanceMessageText(formattedText, ignoreEntities) {
return messageText;
}
+function handleTMeLink(link, usedPrefix) {
+ if (link.indexOf("joinchat") !== -1) {
+ Debug.log("Joining Chat: ", link);
+ tdLibWrapper.joinChatByInviteLink(link);
+ // Do the necessary stuff to open the chat if successful
+ // Fail with nice error message if it doesn't work
+ } else {
+ Debug.log("Search public chat: ", link.substring(usedPrefix.length));
+ tdLibWrapper.searchPublicChat(link.substring(usedPrefix.length), true);
+ // Check responses for updateBasicGroup or updateSupergroup
+ // Fire createBasicGroupChat or createSupergroupChat
+ // Do the necessary stuff to open the chat
+ // Fail with nice error message if chat can't be found
+ }
+}
+
function handleLink(link) {
var tMePrefix = tdLibWrapper.getOptionString("t_me_url");
+ var tMePrefixHttp = tMePrefix.replace('https', 'http');
if (link.indexOf("user://") === 0) {
var userName = link.substring(8);
var userInformation = tdLibWrapper.getUserInformationByName(userName);
@@ -392,19 +409,9 @@ function handleLink(link) {
return link.substring(13);
} else {
if (link.indexOf(tMePrefix) === 0) {
- if (link.indexOf("joinchat") !== -1) {
- Debug.log("Joining Chat: ", link);
- tdLibWrapper.joinChatByInviteLink(link);
- // Do the necessary stuff to open the chat if successful
- // Fail with nice error message if it doesn't work
- } else {
- Debug.log("Search public chat: ", link.substring(tMePrefix.length));
- tdLibWrapper.searchPublicChat(link.substring(tMePrefix.length), true);
- // Check responses for updateBasicGroup or updateSupergroup
- // Fire createBasicGroupChat or createSupergroupChat
- // Do the necessary stuff to open the chat
- // Fail with nice error message if chat can't be found
- }
+ handleTMeLink(link, tMePrefix);
+ } else if (link.indexOf(tMePrefixHttp) === 0) {
+ handleTMeLink(link, tMePrefixHttp);
} else {
Qt.openUrlExternally(link);
}
diff --git a/src/tdlibwrapper.cpp b/src/tdlibwrapper.cpp
index d873f1b..6241550 100644
--- a/src/tdlibwrapper.cpp
+++ b/src/tdlibwrapper.cpp
@@ -1881,39 +1881,47 @@ void TDLibWrapper::setLogVerbosityLevel()
void TDLibWrapper::initializeOpenWith()
{
- LOG("Initialize open-with");
- LOG("Checking standard open URL file...");
+ LOG("Initialize open-with");LOG("Checking standard open URL file...");
const QString applicationsLocation(QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation));
const QString openUrlFilePath(applicationsLocation + "/open-url.desktop");
if (QFile::exists(openUrlFilePath)) {
- LOG("Standard open URL file exists, good!");
- } else {
- LOG("Copying standard open URL file to " << openUrlFilePath);
- QFile::copy("/usr/share/applications/open-url.desktop", openUrlFilePath);
- QProcess::startDetached("update-desktop-database " + applicationsLocation);
+ LOG("Old open URL file exists, that needs to go away...!");
+ QFile::remove(openUrlFilePath);
+ }
+ const QString sailfishBrowserFilePath(applicationsLocation + "/sailfish-browser.desktop");
+ if (!QFile::exists(sailfishBrowserFilePath)) {
+ LOG("Copying standard Sailfish Browser desktop file to " << sailfishBrowserFilePath);
+ if (QFile::copy("/usr/share/applications/sailfish-browser.desktop", sailfishBrowserFilePath)) {
+ LOG("Standard Sailfish Browser desktop file successfully copied to " << sailfishBrowserFilePath);
+ QProcess::startDetached("update-desktop-database " + applicationsLocation);
+ } else {
+ LOG("ERROR copying standard Sailfish Browser desktop file to " << sailfishBrowserFilePath);
+ }
}
const QString desktopFilePath(applicationsLocation + "/harbour-fernschreiber-open-url.desktop");
QFile desktopFile(desktopFilePath);
- if (!desktopFile.exists()) {
- LOG("Creating Open-With file at " << desktopFile.fileName());
- if (desktopFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
- QTextStream fileOut(&desktopFile);
- fileOut.setCodec("UTF-8");
- fileOut << QString("[Desktop Entry]").toUtf8() << "\n";
- fileOut << QString("Type=Application").toUtf8() << "\n";
- fileOut << QString("Name=Fernschreiber").toUtf8() << "\n";
- fileOut << QString("Icon=harbour-fernschreiber").toUtf8() << "\n";
- fileOut << QString("NotShowIn=X-MeeGo;").toUtf8() << "\n";
- fileOut << QString("MimeType=text/html;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/tg;").toUtf8() << "\n";
- fileOut << QString("X-Maemo-Service=de.ygriega.fernschreiber").toUtf8() << "\n";
- fileOut << QString("X-Maemo-Object-Path=/de/ygriega/fernschreiber").toUtf8() << "\n";
- fileOut << QString("X-Maemo-Method=de.ygriega.fernschreiber.openUrl").toUtf8() << "\n";
- fileOut << QString("Hidden=true;").toUtf8() << "\n";
- fileOut.flush();
- desktopFile.close();
- QProcess::startDetached("update-desktop-database " + applicationsLocation);
- }
+ if (desktopFile.exists()) {
+ LOG("Fernschreiber open-with file existing, removing and re-creating...");
+ desktopFile.remove();
+ }
+ LOG("Creating Fernschreiber open-with file at " << desktopFile.fileName());
+ if (desktopFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
+ QTextStream fileOut(&desktopFile);
+ fileOut.setCodec("UTF-8");
+ fileOut << QString("[Desktop Entry]").toUtf8() << "\n";
+ fileOut << QString("Type=Application").toUtf8() << "\n";
+ fileOut << QString("Name=Fernschreiber").toUtf8() << "\n";
+ fileOut << QString("Icon=harbour-fernschreiber").toUtf8() << "\n";
+ fileOut << QString("NotShowIn=X-MeeGo;").toUtf8() << "\n";
+ fileOut << QString("MimeType=x-url-handler/t.me;x-scheme-handler/tg;").toUtf8() << "\n";
+ fileOut << QString("X-Maemo-Service=de.ygriega.fernschreiber").toUtf8() << "\n";
+ fileOut << QString("X-Maemo-Object-Path=/de/ygriega/fernschreiber").toUtf8() << "\n";
+ fileOut << QString("X-Maemo-Method=de.ygriega.fernschreiber.openUrl").toUtf8() << "\n";
+ fileOut << QString("Hidden=true;").toUtf8() << "\n";
+ fileOut.flush();
+ desktopFile.close();
+ QProcess::startDetached("update-desktop-database " + applicationsLocation);
}
QString dbusPathName = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/dbus-1/services";
diff --git a/translations/harbour-fernschreiber-fr.ts b/translations/harbour-fernschreiber-fr.ts
index 5f2b333..affb39e 100644
--- a/translations/harbour-fernschreiber-fr.ts
+++ b/translations/harbour-fernschreiber-fr.ts
@@ -25,7 +25,7 @@
- Conditions d'utilisation
+ Conditions d'utilisation
@@ -37,7 +37,7 @@
- Ce projet utilise Telegram Database Library (TDLib). Merci de l'avoir distribuée sous les conditions de la Boost Software Licences 1.0 !
+ Ce projet utilise Telegram Database Library (TDLib). Merci de l'avoir distribuée sous les conditions de la Boost Software Licences 1.0 !
@@ -49,7 +49,7 @@
- Ce produit utilise l'API de Telegram, mais n'est ni appuyé ni certifié par Telegram.
+ Ce produit utilise l'API de Telegram, mais n'est ni appuyé ni certifié par Telegram.
@@ -65,7 +65,7 @@
- Ce projet utilise twemoji. Copyright 2018 Twitter, Inc. et autres contributeurs. Merci de l'avoir distribué sous les conditions de la licence MIT (code) et CC-BY 4.0 (graphismes) !
+ Ce projet utilise twemoji. Copyright 2018 Twitter, Inc. et autres contributeurs. Merci de l'avoir distribué sous les conditions de la licence MIT (code) et CC-BY 4.0 (graphismes) !
@@ -77,7 +77,7 @@
- Ce projet utilise rlottie. Copyright 2020 Samsung Electronics Co., Ltd. et autres contributeurs. Merci de l'avoir distribué sous les conditions de la licence MIT !
+ Ce projet utilise rlottie. Copyright 2020 Samsung Electronics Co., Ltd. et autres contributeurs. Merci de l'avoir distribué sous les conditions de la licence MIT !
@@ -97,7 +97,7 @@
- Ce projet utilise OpenStreetMap Nominatim pour du géocodage inversé des pièces jointes de localisation. Merci de l'avoir mis à disposition en tant que service web !
+ Ce projet utilise OpenStreetMap Nominatim pour du géocodage inversé des pièces jointes de localisation. Merci de l'avoir mis à disposition en tant que service web !
@@ -193,7 +193,7 @@
- Aucun texte informatif pour l'instant.
+ Aucun texte informatif pour l'instant.
@@ -208,11 +208,11 @@
header
- Lien d'invitation
+ Lien d'invitation
- Le lien d'invitation a été copié dans le presse-papiers.
+ Le lien d'invitation a été copié dans le presse-papiers.
@@ -297,7 +297,7 @@
- Informations sur l'utilisateur
+ Informations sur l'utilisateur
@@ -456,7 +456,7 @@
- Cet échange secret n'est pas encore prêt. Votre interlocuteur doit être en ligne
+ Cet échange secret n'est pas encore prêt. Votre interlocuteur doit être en ligne
@@ -531,7 +531,7 @@
- Vous n'avez aucune conversation.
+ Vous n'avez aucune conversation.
@@ -542,7 +542,7 @@
- En attente d'une connexion…
+ En attente d'une connexion…
@@ -580,7 +580,7 @@
what can normal group members do
- Autorisations d'un membre dans le groupe
+ Autorisations d'un membre dans le groupe
@@ -595,7 +595,7 @@
member permission
- Envoyer d'autres types de messages
+ Envoyer d'autres types de messages
@@ -697,11 +697,11 @@
myself
- s'est enregistré avec Telegram
+ s'est enregistré avec Telegram
- s'est enregistré avec Telegram
+ s'est enregistré avec Telegram
@@ -805,11 +805,11 @@
myself
- a changé la durée de vie de l'échange secret
+ a changé la durée de vie de l'échange secret
- a changé la durée de vie de l'échange secret
+ a changé la durée de vie de l'échange secret
@@ -828,11 +828,11 @@
myself
- a créé une capture d'écran de cette conversation
+ a créé une capture d'écran de cette conversation
- a créé une capture d'écran de cette conversation
+ a créé une capture d'écran de cette conversation
@@ -854,16 +854,16 @@
myself
- a envoyé une photo s'autodétruisant périmée
+ a envoyé une photo s'autodétruisant périméemyself
- a envoyé une vidéo s'autodétruisant périmée
+ a envoyé une vidéo s'autodétruisant périmée
- a envoyé une vidéo s'autodétruisant périmée
+ a envoyé une vidéo s'autodétruisant périmée
@@ -872,7 +872,7 @@
- a envoyé une photo s'autodétruisant périmée
+ a envoyé une photo s'autodétruisant périmée
@@ -939,7 +939,7 @@
ImagePage
- Télécharger l'image
+ Télécharger l'image
@@ -993,7 +993,7 @@
- Impossible de s'authentifier avec le code saisi.
+ Impossible de s'authentifier avec le code saisi.
@@ -1001,7 +1001,7 @@
- Redémarrer l'authentification
+ Redémarrer l'authentification
@@ -1009,7 +1009,7 @@
- Enregistrement de l'utilisateur
+ Enregistrement de l'utilisateur
@@ -1021,7 +1021,7 @@
- Enregistrement de l'utilisateur
+ Enregistrement de l'utilisateur
@@ -1056,7 +1056,7 @@
- Plus d'options…
+ Plus d'options…
@@ -1096,7 +1096,7 @@
- Ce message a été transféré. Auteur d'origine : %1
+ Ce message a été transféré. Auteur d'origine : %1
@@ -1157,7 +1157,7 @@
- Vous n'avez aucun contact.
+ Vous n'avez aucun contact.
@@ -1242,7 +1242,7 @@
- Vous n'avez aucune conversation.
+ Vous n'avez aucune conversation.
@@ -1378,7 +1378,7 @@
- Une seule réponse pour le quiz. Impossible d'annuler la réponse.
+ Une seule réponse pour le quiz. Impossible d'annuler la réponse.
@@ -1386,11 +1386,11 @@
- Aficher quand l'utilisateur sélectionne une réponse erronée.
+ Aficher quand l'utilisateur sélectionne une réponse erronée.
- Une explication peut comporter jusqu'à 200 caractères.
+ Une explication peut comporter jusqu'à 200 caractères.
@@ -1512,7 +1512,7 @@
- Afficher uniquement les emojis au lieu d'un autocollant
+ Afficher uniquement les emojis au lieu d'un autocollant
@@ -1520,7 +1520,7 @@
- Afficher l'arrière-plan pour l'autocollant et l'aligner au centre comme les images
+ Afficher l'arrière-plan pour l'autocollant et l'aligner au centre comme les images
@@ -1535,15 +1535,15 @@
- Envoyer le message avec la touche d'entrée
+ Envoyer le message avec la touche d'entrée
- Envoyer votre message en appuyant sur la touche d'entrée
+ Envoyer votre message en appuyant sur la touche d'entrée
- Focaliser la saisie lorsque la conversation s'ouvre
+ Focaliser la saisie lorsque la conversation s'ouvre
@@ -1551,11 +1551,11 @@
- Focaliser la zone de saise après l'envoi
+ Focaliser la zone de saise après l'envoi
- Focaliser la zone de saisie après l'envoi d'un message
+ Focaliser la zone de saisie après l'envoi d'un message
@@ -1595,7 +1595,7 @@
- Notification allume l'écran
+ Notification allume l'écran
@@ -1625,7 +1625,7 @@
- Paramètre de confidentialité pour configurer l'invitation à une conversation.
+ Paramètre de confidentialité pour configurer l'invitation à une conversation.
@@ -1653,7 +1653,7 @@
- Paramètre de confidentialité pour configurer l'inclusion d'un lien vers votre compte dans les messages transférés.
+ Paramètre de confidentialité pour configurer l'inclusion d'un lien vers votre compte dans les messages transférés.
@@ -1681,7 +1681,7 @@
- Autoriser l'envoi de localisation aux bots intégrés
+ Autoriser l'envoi de localisation aux bots intégrés
@@ -1704,7 +1704,7 @@
- Activer l'optimisation de l'espace de stockage
+ Activer l'optimisation de l'espace de stockage
@@ -1734,7 +1734,7 @@
user name of the logged-in profile - header
- Nom d'utilisateur
+ Nom d'utilisateur
@@ -1750,7 +1750,7 @@
- Supprimer l'image de profil
+ Supprimer l'image de profil
@@ -1765,22 +1765,22 @@
- Suppression du lot d'autocollants
+ Suppression du lot d'autocollants
- Lot d'autocollants supprimés avec succès !
+ Lot d'autocollants supprimés avec succès !StickerSetOverlay
- Lot d'autocollants installé avec succès !
+ Lot d'autocollants installé avec succès !
- Lot d'autocollants supprimé avec succès!
+ Lot d'autocollants supprimé avec succès!
@@ -1806,7 +1806,7 @@
- Appuyez sur le bouton pour démarrer l'enregistrement
+ Appuyez sur le bouton pour démarrer l'enregistrement
@@ -1826,7 +1826,7 @@
- Utilise l'enregistrement
+ Utilise l'enregistrement
@@ -1852,7 +1852,7 @@
- s'est inscrit avec Telegram
+ s'est inscrit avec Telegram
@@ -1991,7 +1991,7 @@
- n'a jamais été en ligne
+ n'a jamais été en ligne
@@ -2124,12 +2124,12 @@
myself; TTL = Time To Live
- a changé le paramètre de durée de vie de l'échange secret
+ a changé le paramètre de durée de vie de l'échange secretTTL = Time To Live
- a changé le paramètre de durée de vie de l'échange secret
+ a changé le paramètre de durée de vie de l'échange secret
@@ -2148,11 +2148,11 @@
myself
- a réalisé une capture d'écran de cette conversation
+ a réalisé une capture d'écran de cette conversation
- a réalisé une capture d'écran de cette conversation
+ a réalisé une capture d'écran de cette conversation
@@ -2197,7 +2197,7 @@
- Impossible de trouver l'utilisateur %1
+ Impossible de trouver l'utilisateur %1