podadrem - compatibility with Fastload Utils

master
thyttan 2022-11-12 23:29:27 +01:00
parent b47725568c
commit 350e0057f4
3 changed files with 53 additions and 40 deletions

View File

@ -4,3 +4,4 @@
Addict. Addict.
0.04: New layout. 0.04: New layout.
0.05: Add widget field, tweak layout. 0.05: Add widget field, tweak layout.
0.06: Add compatibility with Fastload Utils.

View File

@ -1,3 +1,4 @@
{
/* /*
Bluetooth.println(JSON.stringify({t:"intent", action:"", flags:["flag1", "flag2",...], categories:["category1","category2",...], mimetype:"", data:"", package:"", class:"", target:"", extra:{someKey:"someValueOrString"}})); Bluetooth.println(JSON.stringify({t:"intent", action:"", flags:["flag1", "flag2",...], categories:["category1","category2",...], mimetype:"", data:"", package:"", class:"", target:"", extra:{someKey:"someValueOrString"}}));
@ -65,13 +66,14 @@ Since v2020.16
com.bambuna.podcastaddict.service.player.togglespeed This will toggle the Playback speed for the episode currently playing (alternate between selected speed and 1.0x). com.bambuna.podcastaddict.service.player.togglespeed This will toggle the Playback speed for the episode currently playing (alternate between selected speed and 1.0x).
*/ */
var R; let R;
var backToMenu = false; let widgetUtils = require("widget_utils");
var dark = g.theme.dark; // bool let backToMenu = false;
let dark = g.theme.dark; // bool
// The main layout of the app // The main layout of the app
function gfx() { let gfx = function() {
//Bangle.drawWidgets(); widgetUtils.hide();
R = Bangle.appRect; R = Bangle.appRect;
marigin = 8; marigin = 8;
// g.drawString(str, x, y, solid) // g.drawString(str, x, y, solid)
@ -106,10 +108,10 @@ function gfx() {
g.setFontAlign(1, 1, 0); g.setFontAlign(1, 1, 0);
g.drawString("Speed", R.x + R.w - 2*marigin, R.y + R.h - 2*marigin); g.drawString("Speed", R.x + R.w - 2*marigin, R.y + R.h - 2*marigin);
} };
// Touch handler for main layout // Touch handler for main layout
function touchHandler(_, xy) { let touchHandler = function(_, xy) {
x = xy.x; x = xy.x;
y = xy.y; y = xy.y;
len = (R.w<R.h+1)?(R.w/3):(R.h/3); len = (R.w<R.h+1)?(R.w/3):(R.h/3);
@ -145,43 +147,51 @@ function touchHandler(_, xy) {
//play/pause //play/pause
btMsg("service", standardCls, "player.toggle"); btMsg("service", standardCls, "player.toggle");
} }
} };
// Swipe handler for main layout, used to jump backward and forward within a podcast episode. // Swipe handler for main layout, used to jump backward and forward within a podcast episode.
function swipeHandler(LR, _) { let swipeHandler = function(LR, _) {
if (LR==-1) { if (LR==-1) {
btMsg("service", standardCls, "player.jumpforward"); btMsg("service", standardCls, "player.jumpforward");
} }
if (LR==1) { if (LR==1) {
btMsg("service", standardCls, "player.jumpbackward"); btMsg("service", standardCls, "player.jumpbackward");
} }
} };
// Navigation input on the main layout // Navigation input on the main layout
function setUI() { let setUI = function() {
// Bangle.setUI code from rigrig's smessages app for volume control: https://git.tubul.net/rigrig/BangleApps/src/branch/personal/apps/smessages/app.js // Bangle.setUI code from rigrig's smessages app for volume control: https://git.tubul.net/rigrig/BangleApps/src/branch/personal/apps/smessages/app.js
Bangle.setUI( Bangle.setUI(
{mode : "updown", back : load}, {mode : "updown",
remove : ()=>{
Bangle.removeListener("touch", touchHandler);
Bangle.removeListener("swipe", swipeHandler);
clearWatch(buttonHandler);
widgetUtils.show();
}
},
ud => { ud => {
if (ud) Bangle.musicControl(ud>0 ? "volumedown" : "volumeup"); if (ud) Bangle.musicControl(ud>0 ? "volumedown" : "volumeup");
} }
); );
Bangle.on("touch", touchHandler); Bangle.on("touch", touchHandler);
Bangle.on("swipe", swipeHandler); Bangle.on("swipe", swipeHandler);
} let buttonHandler = setWatch(()=>{load();}, BTN, {edge:'falling'});
};
/* /*
The functions for interacting with Android and the Podcast Addict app The functions for interacting with Android and the Podcast Addict app
*/ */
pkg = "com.bambuna.podcastaddict"; let pkg = "com.bambuna.podcastaddict";
standardCls = pkg + ".receiver.PodcastAddictPlayerReceiver"; let standardCls = pkg + ".receiver.PodcastAddictPlayerReceiver";
updateCls = pkg + ".receiver.PodcastAddictBroadcastReceiver"; let updateCls = pkg + ".receiver.PodcastAddictBroadcastReceiver";
speed = 1.0; let speed = 1.0;
simpleSearch = ""; let simpleSearch = "";
function simpleSearchTerm() { // input a simple search term without tags, overrides search with tags (artist and track) let simpleSearchTerm = function() { // input a simple search term without tags, overrides search with tags (artist and track)
require("textinput").input({ require("textinput").input({
text: simpleSearch text: simpleSearch
}).then(result => { }).then(result => {
@ -189,9 +199,9 @@ function simpleSearchTerm() { // input a simple search term without tags, overri
}).then(() => { }).then(() => {
E.showMenu(searchMenu); E.showMenu(searchMenu);
}); });
} };
function searchPlayWOTags() { //make a search and play using entered terms let searchPlayWOTags = function() { //make a search and play using entered terms
searchString = simpleSearch; searchString = simpleSearch;
Bluetooth.println(JSON.stringify({ Bluetooth.println(JSON.stringify({
t: "intent", t: "intent",
@ -203,9 +213,9 @@ function searchPlayWOTags() { //make a search and play using entered terms
}, },
flags: ["FLAG_ACTIVITY_NEW_TASK"] flags: ["FLAG_ACTIVITY_NEW_TASK"]
})); }));
} };
function gadgetbridgeWake() { let gadgetbridgeWake = function() {
Bluetooth.println(JSON.stringify({ Bluetooth.println(JSON.stringify({
t: "intent", t: "intent",
target: "activity", target: "activity",
@ -213,15 +223,15 @@ function gadgetbridgeWake() {
package: "gadgetbridge", package: "gadgetbridge",
class: "nodomain.freeyourgadget.gadgetbridge.activities.WakeActivity" class: "nodomain.freeyourgadget.gadgetbridge.activities.WakeActivity"
})); }));
} };
// For stringing together the action for Podcast Addict to perform // For stringing together the action for Podcast Addict to perform
function actFn(actName, activOrServ) { let actFn = function(actName, activOrServ) {
return "com.bambuna.podcastaddict." + (activOrServ == "service" ? "service." : "") + actName; return "com.bambuna.podcastaddict." + (activOrServ == "service" ? "service." : "") + actName;
} };
// Send the intent message to Gadgetbridge // Send the intent message to Gadgetbridge
function btMsg(activOrServ, cls, actName, xtra) { let btMsg = function(activOrServ, cls, actName, xtra) {
Bluetooth.println(JSON.stringify({ Bluetooth.println(JSON.stringify({
t: "intent", t: "intent",
@ -231,10 +241,10 @@ function btMsg(activOrServ, cls, actName, xtra) {
target: "broadcastreceiver", target: "broadcastreceiver",
extra: xtra extra: xtra
})); }));
} };
// Get back to the main layout // Get back to the main layout
function backToGfx() { let backToGfx = function() {
E.showMenu(); E.showMenu();
g.clear(); g.clear();
g.reset(); g.reset();
@ -243,10 +253,10 @@ function backToGfx() {
setUI(); setUI();
gfx(); gfx();
backToMenu = false; backToMenu = false;
} };
// Podcast Addict Menu // Podcast Addict Menu
var paMenu = { let paMenu = {
"": { "": {
title: " ", title: " ",
back: backToGfx back: backToGfx
@ -271,7 +281,7 @@ var paMenu = {
}; };
var controlMenu = { let controlMenu = {
"": { "": {
title: " ", title: " ",
back: () => {if (backToMenu) E.showMenu(paMenu); back: () => {if (backToMenu) E.showMenu(paMenu);
@ -310,7 +320,7 @@ var controlMenu = {
}, },
}; };
var speedMenu = { let speedMenu = {
"": { "": {
title: " ", title: " ",
back: () => {if (backToMenu) E.showMenu(paMenu); back: () => {if (backToMenu) E.showMenu(paMenu);
@ -333,7 +343,7 @@ var speedMenu = {
//"Slower" : ()=>{speed-=0.1; speed=((speed<0.1)?0.1:speed); btMsg("service",standardCls,"player.customspeed",{arg1:speed});}, //"Slower" : ()=>{speed-=0.1; speed=((speed<0.1)?0.1:speed); btMsg("service",standardCls,"player.customspeed",{arg1:speed});},
}; };
var searchMenu = { let searchMenu = {
"": { "": {
title: " ", title: " ",
@ -356,7 +366,7 @@ var searchMenu = {
"Simpler search and play" : searchPlayWOTags, "Simpler search and play" : searchPlayWOTags,
}; };
var navigationMenu = { let navigationMenu = {
"": { "": {
title: " ", title: " ",
back: () => {if (backToMenu) E.showMenu(paMenu); back: () => {if (backToMenu) E.showMenu(paMenu);
@ -372,4 +382,6 @@ var navigationMenu = {
Bangle.loadWidgets(); Bangle.loadWidgets();
setUI(); setUI();
widgetUtils.hide();
gfx(); gfx();
}

View File

@ -2,7 +2,7 @@
"id": "podadrem", "id": "podadrem",
"name": "Podcast Addict Remote", "name": "Podcast Addict Remote",
"shortName": "PA Remote", "shortName": "PA Remote",
"version": "0.05", "version": "0.06",
"description": "Control Podcast Addict on your android device.", "description": "Control Podcast Addict on your android device.",
"readme": "README.md", "readme": "README.md",
"type": "app", "type": "app",