Info: 28.01.2021 Es gibt wieder mal ein Update.
2 Kontakte in small WIdget,
5 in medium Widget sind jetzt möglich.
info: 02.12.2020
Über diese Seite könnt ihr das Widget auch downloaden und auch up to date sein über die Erweiterung ScriptDude:
Einen schönen Abend wünsche ich Euch. Ich bastel seit ein paar Wochen an einem Scriptable Widget für meine Threema Kontakte, das als Sprache JavaScript nutzt.
Wenn Ihr wollt könnt ihr es mal selbst versuchen. Ich bin noch in der Lernphase und völlig neu im JavaScript programmieren.
Es ist noch nicht perfekt. Ich wünsche viel Spaß. Etwas später soll noch den Code auf Github zu gängig sein.
Was noch kommt:
- Parameter Fehler auf dem HomeScreen beheben
- Anzahl der Kontakte dynamisch
- Unterschiedliche Widget Größe: small, medium, large
Es ist noch nicht perfekt, funktioniert aber. Ihr benötigt zunächst diese App, welches ihr auf euer iPhone oder Tablet ladet. Hier findet Ihr noch weitere Widgets: https://www.scriptables.net
Sollte hier sich jemand mit JavaScript auskenne bin ich über Anregungen, Verbesserung und Hilfe jederzeit dankbar. Über Ideen natürlich auch.
Anleitung:
- OS-App Scriptable aus dem App Store herunterladen
- Scriptable öffnen und am oberen rechten Bildschirmrand „+“ antippen, um ein neues Skript hinzuzufügen
- Threema-Skript kopieren aus dem Forum und in Scriptable einfügen
- Scriptable schließen
- Scriptable-Widget wie gewohnt über längeres Gedrückthalten des Homescreen und „+“ platzieren
- Über längeres Gedrückthalten des Widgets das Threema Skript auswählen und über „Widget bearbeiten“ dann die Parameter einfügen in Scriptable
- Parameter hinterlegen: z.B.: Name,Threema-ID,Name,Threema-ID,Name,Threema-ID,Name,Threema-ID,Name,Threema-ID. Es müssen hier fünf Kontakte hinterlegt sein. Wenn ihr euch mit JavaScript auskennt könnt ihr auch mit dem Quelltext das ändern. Ich empfehle die zunächst irgendwo aufzuschreiben und dann komplett mit "," getrennt einfügen.
- Ohne Parameter im HomeScreen kommt ein Fehler. Ich werde hier noch nachbessern und auch das mit der Anzahl der Kontakte etwas später.
- Scriptable-Widget wie gewohnt über längeres Gedrückthalten des Homescreen da platzieren wo ihr es benötigt.
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: deep-blue; icon-glyph: magic;
//https://github.com/netzpython27/contact_threema_widget
//It is possible to display five contacts at the same time.
//The parameters are stored as follows: name,thID,name,thID,name,thID,name,thID,name,thID
//Example: ECHOECHO,ECHOECHO,Threema.ch,*THREEMA,Support,*SUPPORT,MyData,*MY3DATA,Reg-Bawü,*REGBAWU
//Please change here only something, if you already know what you do. This content will be used for the Widget preview in Scriptable.
let name =[];
let thID =[];
name[0] = "ECHO";
thID[1] = "ECHOECHO";
name[2] = "Aniken";
thID[3] = "*THREEMA";
name[4] = "Eric";
thID[5] = "*SUPPORT";
name[6] = "MyData";
thID[7] = "*MY3DATA";
name[8] = "Nico";
thID[9] = "*REGBAWU";
if (!config.runsInWidget) {
name[0];
thID[1];
name[2];
thID[3];
name[4];
thID[5];
name[6];
thID[7];
name[8];
thID[9];
} else {
const params = args.widgetParameter ? args.widgetParameter.split(",") : undefined
name[0] = params[0]
thID[1] = params[1] //5 Parameter für das Widget können hinterlegt werden.
name[2] = params[2]
thID[3] = params[3] //Parameter für das Widget
name[4] = params[4]
thID[5] = params[5] //Parameter für das Widget
name[6] = params[6]
thID[7] = params[7] //Parameter für das Widget
name[8] = params[8]
thID[9] = params[9] //Parameter für das Widget
}
// URL Link
let url = [];
url[0] = "https://threema.id/";
url[1] = "?text=";
// Images for the Contacts; Copyright 2020 by "netzpython27"
let contactURL = "https://i.ibb.co/J37X17S/messagephone.png";
let contactImg = await getImage(contactURL);
//Parameter for the Widget
let widget = new ListWidget()
widget.setPadding(10, 10, 10, 10)
widget.spacing = 5
widget.backgroundColor = Color.dynamic(Color.white(), Color.black())
const widgettitle = widget.addText("Favoriten Threema") //Title of the Widget
widgettitle.textColor = Color.dynamic(Color.green(),Color.orange())
widgettitle.centerAlignText()
widgettitle.font = //Font.boldSystemFont(20)
Font.semiboldMonospacedSystemFont(20)
widget.addSpacer(4)
let row = widget.addStack()
row.addSpacer(10)//Helps to centralice the image
//Add Contacts
addContact(
contactImg,
name[0], //and his name.
url[0] + thID[1] + url[1], //URL Shortcut to the contact
row)
row.addSpacer(10)//Helps to centralized the image
addContact(
contactImg,
name[2],
url[0] + thID[3] + url[1],
row)
row.addSpacer(10)//Helps to centralized the image
addContact(
contactImg,
name[4],
url[0] + thID[5] + url[1],
row)
row.addSpacer(10)//Helps to centralized the image
addContact(
contactImg,
name[6],
url[0] + thID[7] + url[1],
row)
row.addSpacer(10)//Helps to centralized the image
addContact(
contactImg,
name[8],
url[0] + thID[9] + url[1],
row)
row.addSpacer(10)//Helps to centralized the image
widget.presentMedium()
function addContact(img, name, link, r) {
let stack = r.addStack()
stack.layoutVertically()
stack.url = link
let wimg = stack.addImage(img)
wimg.cornerRadius = 4
stack.addSpacer(4)
let widgetname = stack.addText(name)
widgetname.centerAlignText()
widgetname.font = Font.semiboldRoundedSystemFont(14)
widgetname.textColor = Color.orange()
stack.addSpacer(4)
}
async function getImage(url) {
let req = new Request(url)
return await req.loadImage()
}
//End of the Script
Alles anzeigen