From 04a8d242c7ad306b2c182a2a98bf1f97eff4d469 Mon Sep 17 00:00:00 2001 From: vanous Date: Sat, 2 Apr 2022 16:49:09 +0200 Subject: [PATCH] provide app strings based on variants via code --- app/src/banglejs/res/values/strings.xml | 8 ------ .../gadgetbridge/GBApplication.java | 21 ++++++++++++++++ .../activities/AboutActivity.java | 13 ++++++++++ .../activities/AbstractGBActivity.java | 2 ++ .../activities/ControlCenterv2.java | 1 + .../service/DeviceCommunicationService.java | 2 +- app/src/main/res/layout/activity_about.xml | 2 +- app/src/main/res/values/strings.xml | 25 ++++++++++++++++--- app/src/nightly/res/values/strings.xml | 2 +- app/src/nopebble/res/values/strings.xml | 2 +- 10 files changed, 63 insertions(+), 15 deletions(-) delete mode 100644 app/src/banglejs/res/values/strings.xml diff --git a/app/src/banglejs/res/values/strings.xml b/app/src/banglejs/res/values/strings.xml deleted file mode 100644 index e965e9764..000000000 --- a/app/src/banglejs/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - Bangle.js Gadgetbridge - Bangle.js Gadgetbridge - About Bangle.js Gadgetbridge - Android companion app for Bangle.js built on top of the Gadgetbridge project, with added Internet Access. - Bangle.js running - diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java index 6282ebcac..7556e2468 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java @@ -1218,4 +1218,25 @@ public class GBApplication extends Application { public void setAutoExportScheduledTimestamp(long autoExportScheduledTimestamp) { this.autoExportScheduledTimestamp = autoExportScheduledTimestamp; } + /** + * Provides either a string resource based on current variant + * (main_debug, main_nightly...): "about_description_main_debug" + * or just a universal string resource for "about_description" + * + * @param resString + * @return string + */ + public String getStringResourceByVariantName(String resString) { + String packageName = getPackageName(); + String variation = BuildConfig.FLAVOR + "_" + BuildConfig.BUILD_TYPE; + int resIdVariation = getResources().getIdentifier(resString + "_" + variation, "string", packageName); + int resIdNormal = getResources().getIdentifier(resString, "string", packageName); + + if (resIdVariation == 0) { + //LOG.warn("Missing variation string: " + aString + "_" + variation); + return getString(resIdNormal); + } else { + return getString(resIdVariation); + } + } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AboutActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AboutActivity.java index 56a7ae3b9..18ba47446 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AboutActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AboutActivity.java @@ -20,17 +20,30 @@ package nodomain.freeyourgadget.gadgetbridge.activities; import android.os.Bundle; import android.text.method.LinkMovementMethod; import android.widget.TextView; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import nodomain.freeyourgadget.gadgetbridge.BuildConfig; +import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; public class AboutActivity extends AbstractGBActivity { + private static final Logger LOG = LoggerFactory.getLogger(ConfigureAlarms.class); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); TextView about_version = findViewById(R.id.about_version); + TextView about_title = findViewById(R.id.about_title); + TextView about_description = findViewById(R.id.about_description); + + setTitle(GBApplication.app().getStringResourceByVariantName("about_activity_title")); + about_title.setText(GBApplication.app().getStringResourceByVariantName("about_activity_title")); + about_description.setText(GBApplication.app().getStringResourceByVariantName("about_description")); + TextView about_hash = findViewById(R.id.about_hash); String versionName = BuildConfig.VERSION_NAME; String versionHASH = BuildConfig.GIT_HASH_SHORT; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractGBActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractGBActivity.java index 8d0ea2d51..ba96aaa15 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractGBActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractGBActivity.java @@ -28,6 +28,8 @@ import java.util.Locale; import androidx.appcompat.app.AppCompatActivity; import androidx.localbroadcastmanager.content.LocalBroadcastManager; + +import nodomain.freeyourgadget.gadgetbridge.BuildConfig; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java index e63c4d23e..893813238 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java @@ -151,6 +151,7 @@ public class ControlCenterv2 extends AppCompatActivity setContentView(R.layout.activity_controlcenterv2); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); + setTitle(GBApplication.app().getStringResourceByVariantName("title_activity_controlcenter")); DrawerLayout drawer = findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java index a9f7ddfa6..260f8e803 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java @@ -666,7 +666,7 @@ public class DeviceCommunicationService extends Service implements SharedPrefere private void start() { if (!mStarted) { GB.createNotificationChannels(this); - startForeground(GB.NOTIFICATION_ID, GB.createNotification(getString(R.string.gadgetbridge_running), this)); + startForeground(GB.NOTIFICATION_ID, GB.createNotification(GBApplication.app().getStringResourceByVariantName("gadgetbridge_running"), this)); mStarted = true; } } diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index a0817758e..769ce31ee 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -44,7 +44,7 @@ android:paddingRight="@dimen/about_margin"> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8d65c4df6..5b8247005 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,6 +2,28 @@ Gadgetbridge Gadgetbridge + About Gadgetbridge + Cloudless copylefted libre replacement for closed source Android gadget apps from vendors. + Gadgetbridge running + + Bangle.js Gadgetbridge + Bangle.js Gadgetbridge + About Bangle.js Gadgetbridge + Android companion app for Bangle.js built on top of the Gadgetbridge project, with added Internet Access. + Bangle.js running + + Gadgetbridge (Nightly) + Gadgetbridge Nightly + About Gadgetbridge Nightly + Cloudless copylefted libre replacement for closed source Android gadget apps from vendors. Nightly releases of Gadgetbridge. It cannot be installed if you already have either the Gadgetbridge or the Pebble app installed, due to a conflict in the Pebble provider. + Nightly GB running + + Gadgetbridge (Nightly, No Pebble provider) + Gadgetbridge Nightly No Pebble + About Gadgetbridge Nightly No Pebble + Cloudless copylefted libre replacement for closed source Android gadget apps from vendors. Nightly releases of Gadgetbridge. This version has the Pebble provider renamed to prevent conflicts, so some Pebble related integrations will not work, but it can be installed alongside existing Gadgetbridge installation. + Nightly NoPebble GB running + Settings Debug Quit @@ -368,7 +390,6 @@ Tap connected device for vibration Tap a device to connect Cannot connect. Bluetooth address invalid? - Gadgetbridge running Installing binary %1$d/%2$d Installation failed Installed @@ -1096,11 +1117,9 @@ About Version %s Commit %s - About Gadgetbridge GPX Receiver Gadgetbridge GPX file(s) received: Some file(s) already exist. Overwrite? - Cloudless copylefted libre replacement for closed source Android gadget apps from vendors. Core Team (in order of first code contribution) Contributors Andreas Shimokawa\nCarsten Pfeiffer\nDaniele Gobbetti diff --git a/app/src/nightly/res/values/strings.xml b/app/src/nightly/res/values/strings.xml index c4e5885c9..e9a80b725 100644 --- a/app/src/nightly/res/values/strings.xml +++ b/app/src/nightly/res/values/strings.xml @@ -1,4 +1,4 @@ - Gadgetbridge (Nightly) + diff --git a/app/src/nopebble/res/values/strings.xml b/app/src/nopebble/res/values/strings.xml index 090f10a24..e9a80b725 100644 --- a/app/src/nopebble/res/values/strings.xml +++ b/app/src/nopebble/res/values/strings.xml @@ -1,4 +1,4 @@ - Gadgetbridge (Nightly, No Pebble provider) +