mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-12-28 03:25:49 +01:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
66d3cdcc5c
11
CHANGELOG.md
11
CHANGELOG.md
@ -1,9 +1,16 @@
|
||||
### Changelog
|
||||
|
||||
#### 0.50.0 (WIP)
|
||||
|
||||
#### 0.50.0
|
||||
* Initial support for Casio GBX-100
|
||||
* Mi/Amazfit Band 5: Support watchface installation
|
||||
* Mi Band 5: Add missing NFC menu item
|
||||
* Casio GB-5600B/GB-6900B: Add configurable disconnect notification
|
||||
* Casio: Add support for synchronizing profile settings
|
||||
* Fossil Hybrid HR: Keep widget values after widget reload
|
||||
* Allow sorting and disabling charts/statistics tabs in per-device settings
|
||||
* Improve Sports Activities dashboard and Filter
|
||||
* Bug fixes for notification removal
|
||||
* Allow to clear activity labels
|
||||
|
||||
#### 0.49.0
|
||||
* Initial support for Amazfit Bip S Lite
|
||||
|
@ -66,7 +66,11 @@ import java.util.concurrent.TimeUnit;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
|
||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.BaseActivitySummary;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryItems;
|
||||
@ -164,7 +168,7 @@ public class ActivitySummaryDetail extends AbstractGBActivity {
|
||||
currentItem = newItem;
|
||||
makeSummaryHeader(newItem);
|
||||
makeSummaryContent(newItem);
|
||||
activitySummariesChartFragment.setDateAndGetData(gbDevice, currentItem.getStartTime().getTime() / 1000, currentItem.getEndTime().getTime() / 1000);
|
||||
activitySummariesChartFragment.setDateAndGetData(getGBDevice(currentItem.getDevice()), currentItem.getStartTime().getTime() / 1000, currentItem.getEndTime().getTime() / 1000);
|
||||
if (get_gpx_file() != null) {
|
||||
showCanvas();
|
||||
activitySummariesGpsFragment.set_data(get_gpx_file());
|
||||
@ -186,7 +190,7 @@ public class ActivitySummaryDetail extends AbstractGBActivity {
|
||||
currentItem = newItem;
|
||||
makeSummaryHeader(newItem);
|
||||
makeSummaryContent(newItem);
|
||||
activitySummariesChartFragment.setDateAndGetData(gbDevice, currentItem.getStartTime().getTime() / 1000, currentItem.getEndTime().getTime() / 1000);
|
||||
activitySummariesChartFragment.setDateAndGetData(getGBDevice(currentItem.getDevice()), currentItem.getStartTime().getTime() / 1000, currentItem.getEndTime().getTime() / 1000);
|
||||
if (get_gpx_file() != null) {
|
||||
showCanvas();
|
||||
activitySummariesGpsFragment.set_data(get_gpx_file());
|
||||
@ -207,7 +211,7 @@ public class ActivitySummaryDetail extends AbstractGBActivity {
|
||||
if (currentItem != null) {
|
||||
makeSummaryHeader(currentItem);
|
||||
makeSummaryContent(currentItem);
|
||||
activitySummariesChartFragment.setDateAndGetData(gbDevice, currentItem.getStartTime().getTime() / 1000, currentItem.getEndTime().getTime() / 1000);
|
||||
activitySummariesChartFragment.setDateAndGetData(getGBDevice(currentItem.getDevice()), currentItem.getStartTime().getTime() / 1000, currentItem.getEndTime().getTime() / 1000);
|
||||
if (get_gpx_file() != null) {
|
||||
showCanvas();
|
||||
activitySummariesGpsFragment.set_data(get_gpx_file());
|
||||
@ -253,8 +257,8 @@ public class ActivitySummaryDetail extends AbstractGBActivity {
|
||||
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
|
||||
String name = input.getText().toString();
|
||||
if (name.length() < 1) name = null;
|
||||
currentItem.setName(name);
|
||||
currentItem.update();
|
||||
makeSummaryHeader(currentItem);
|
||||
@ -522,4 +526,22 @@ public class ActivitySummaryDetail extends AbstractGBActivity {
|
||||
show_hide_gpx_menu();
|
||||
return true;
|
||||
}
|
||||
|
||||
private GBDevice getGBDevice(Device findDevice) {
|
||||
DaoSession daoSession;
|
||||
GBApplication gbApp = (GBApplication) getApplicationContext();
|
||||
List<? extends GBDevice> devices = gbApp.getDeviceManager().getDevices();
|
||||
|
||||
try (DBHandler handler = GBApplication.acquireDB()) {
|
||||
daoSession = handler.getDaoSession();
|
||||
for (GBDevice device : devices) {
|
||||
Device dbDevice = DBHelper.findDevice(device, daoSession);
|
||||
if (dbDevice.equals(findDevice)) return device;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOG.debug("Error getting device: " + e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -33,16 +33,23 @@ import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractFragmentPagerAdapter;
|
||||
@ -54,8 +61,10 @@ import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.LimitedQueue;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||
|
||||
public class ChartsActivity extends AbstractGBFragmentActivity implements ChartsHost {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(ChartsActivity.class);
|
||||
|
||||
private TextView mDateControl;
|
||||
|
||||
@ -64,6 +73,7 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts
|
||||
private SwipeRefreshLayout swipeLayout;
|
||||
|
||||
LimitedQueue mActivityAmountCache = new LimitedQueue(60);
|
||||
List<String> enabledTabsList;
|
||||
|
||||
public static class ShowDurationDialog extends Dialog {
|
||||
private final String mDuration;
|
||||
@ -137,6 +147,19 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts
|
||||
} else {
|
||||
throw new IllegalArgumentException("Must provide a device when invoking this activity");
|
||||
}
|
||||
Prefs prefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(getDevice().getAddress()));
|
||||
String myTabs = prefs.getString("charts_tabs", null);
|
||||
|
||||
if (myTabs == null) {
|
||||
//make list mutable to be able to remove items later
|
||||
enabledTabsList = new ArrayList<String>(Arrays.asList(this.getResources().getStringArray(R.array.pref_charts_tabs_items_default)));
|
||||
} else {
|
||||
enabledTabsList = new ArrayList<String>(Arrays.asList(myTabs.split(",")));
|
||||
}
|
||||
DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(mGBDevice);
|
||||
if (!coordinator.supportsRealtimeData()) {
|
||||
enabledTabsList.remove("livestats");
|
||||
}
|
||||
|
||||
swipeLayout = findViewById(R.id.activity_swipe_layout);
|
||||
swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
||||
@ -339,33 +362,35 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* A {@link FragmentStatePagerAdapter} that returns a fragment corresponding to
|
||||
* one of the sections/tabs/pages.
|
||||
*/
|
||||
public class SectionsPagerAdapter extends AbstractFragmentPagerAdapter {
|
||||
|
||||
SectionsPagerAdapter(FragmentManager fm) {
|
||||
super(fm);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
// getItem is called to instantiate the fragment for the given page.
|
||||
switch (position) {
|
||||
case 0:
|
||||
switch (enabledTabsList.get(position)) {
|
||||
case "activity":
|
||||
return new ActivitySleepChartFragment();
|
||||
case 1:
|
||||
case "activitylist":
|
||||
return new ActivityListingChartFragment();
|
||||
case 2:
|
||||
case "sleep":
|
||||
return new SleepChartFragment();
|
||||
case 3:
|
||||
case "sleepweek":
|
||||
return new WeekSleepChartFragment();
|
||||
case 4:
|
||||
case "stepsweek":
|
||||
return new WeekStepsChartFragment();
|
||||
case 5:
|
||||
case "speedzones":
|
||||
return new SpeedZonesFragment();
|
||||
case 6:
|
||||
case "livestats":
|
||||
return new LiveActivityFragment();
|
||||
}
|
||||
return null;
|
||||
@ -373,12 +398,7 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
// Show 5 or 6 total pages.
|
||||
DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(mGBDevice);
|
||||
if (coordinator.supportsRealtimeData()) {
|
||||
return 7;
|
||||
}
|
||||
return 6;
|
||||
return enabledTabsList.toArray().length;
|
||||
}
|
||||
|
||||
private String getSleepTitle() {
|
||||
@ -401,20 +421,21 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts
|
||||
|
||||
@Override
|
||||
public CharSequence getPageTitle(int position) {
|
||||
switch (position) {
|
||||
case 0:
|
||||
|
||||
switch (enabledTabsList.get(position)) {
|
||||
case "activity":
|
||||
return getString(R.string.activity_sleepchart_activity_and_sleep);
|
||||
case 1:
|
||||
case "activitylist":
|
||||
return getString(R.string.charts_activity_list);
|
||||
case 2:
|
||||
case "sleep":
|
||||
return getString(R.string.sleepchart_your_sleep);
|
||||
case 3:
|
||||
case "sleepweek":
|
||||
return getSleepTitle();
|
||||
case 4:
|
||||
case "stepsweek":
|
||||
return getStepsTitle();
|
||||
case 5:
|
||||
case "speedzones":
|
||||
return getString(R.string.stats_title);
|
||||
case 6:
|
||||
case "livestats":
|
||||
return getString(R.string.liveactivity_live_activity);
|
||||
}
|
||||
return super.getPageTitle(position);
|
||||
|
@ -19,10 +19,10 @@ package nodomain.freeyourgadget.gadgetbridge.activities.devicesettings;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@ -49,7 +49,11 @@ public class DeviceSettingsActivity extends AbstractGBActivity implements
|
||||
Fragment fragment = getSupportFragmentManager().findFragmentByTag(DeviceSpecificSettingsFragment.FRAGMENT_TAG);
|
||||
if (fragment == null) {
|
||||
DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(device);
|
||||
fragment = DeviceSpecificSettingsFragment.newInstance(device.getAddress(), coordinator.getSupportedDeviceSpecificSettings(device));
|
||||
int[] supportedSettings = coordinator.getSupportedDeviceSpecificSettings(device);
|
||||
if (coordinator.supportsActivityTracking()) {
|
||||
supportedSettings = ArrayUtils.addAll(supportedSettings, R.xml.devicesettings_chartstabs);
|
||||
}
|
||||
fragment = DeviceSpecificSettingsFragment.newInstance(device.getAddress(), supportedSettings);
|
||||
}
|
||||
getSupportFragmentManager()
|
||||
.beginTransaction()
|
||||
@ -62,8 +66,12 @@ public class DeviceSettingsActivity extends AbstractGBActivity implements
|
||||
@Override
|
||||
public boolean onPreferenceStartScreen(PreferenceFragmentCompat caller, PreferenceScreen preferenceScreen) {
|
||||
DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(device);
|
||||
int[] supportedSettings = coordinator.getSupportedDeviceSpecificSettings(device);
|
||||
if (coordinator.supportsActivityTracking()) {
|
||||
supportedSettings = ArrayUtils.addAll(supportedSettings, R.xml.devicesettings_chartstabs);
|
||||
}
|
||||
|
||||
PreferenceFragmentCompat fragment = DeviceSpecificSettingsFragment.newInstance(device.getAddress(), coordinator.getSupportedDeviceSpecificSettings(device));
|
||||
PreferenceFragmentCompat fragment = DeviceSpecificSettingsFragment.newInstance(device.getAddress(), supportedSettings);
|
||||
Bundle args = fragment.getArguments();
|
||||
args.putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, preferenceScreen.getKey());
|
||||
fragment.setArguments(args);
|
||||
|
@ -16,7 +16,9 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class ArrayUtils {
|
||||
/**
|
||||
|
@ -1119,4 +1119,6 @@
|
||||
<string name="activity_list_summary_active_time">Aktivní čas</string>
|
||||
<string name="activity_list_summary_distance">Vzdálenost</string>
|
||||
<string name="activity_list_summary_active_steps">Aktivní kroky</string>
|
||||
<string name="devicetype_casiogbx100">Casio GBX-100</string>
|
||||
<string name="devicetype_amazfit_gts2">Amazfit GTS 2</string>
|
||||
</resources>
|
@ -1132,4 +1132,5 @@
|
||||
<string name="activity_list_summary_active_time">Aktive Zeit</string>
|
||||
<string name="activity_list_summary_distance">Strecke</string>
|
||||
<string name="activity_list_summary_active_steps">Aktive Schritte</string>
|
||||
<string name="devicetype_casiogbx100">Casio GBX-100</string>
|
||||
</resources>
|
@ -1117,4 +1117,5 @@ Temps de sommeil préféré en heures</string>
|
||||
<string name="activity_list_summary_distance">Distance</string>
|
||||
<string name="activity_list_summary_active_steps">Pas réalisés</string>
|
||||
<string name="devicetype_amazfit_gts2">Amazfit GTS 2</string>
|
||||
<string name="devicetype_casiogbx100">Casio GBX-100</string>
|
||||
</resources>
|
@ -1119,4 +1119,5 @@
|
||||
<string name="activity_list_summary_active_time">זמן פעילות</string>
|
||||
<string name="activity_list_summary_distance">מרחק</string>
|
||||
<string name="devicetype_amazfit_gts2">Amazfit GTS 2</string>
|
||||
<string name="devicetype_casiogbx100">Casio GBX-100</string>
|
||||
</resources>
|
@ -171,9 +171,11 @@
|
||||
<string name="installation_successful">Installert</string>
|
||||
<string name="firmware_install_warning">DU PRØVER Å INSTALLERE EN FASTVARE, FORTSETT PÅ EGEN RISIKO.
|
||||
\n
|
||||
\n
|
||||
\nDENNE FASTVAREN ER FOR MASKINVAREVERSJON: %s</string>
|
||||
<string name="app_install_info">Du er i ferd med å installere følgende program:
|
||||
\n
|
||||
\n
|
||||
\n%1$s version %2$s av %3$s
|
||||
\n</string>
|
||||
<string name="n_a">I/T</string>
|
||||
@ -1104,7 +1106,8 @@
|
||||
<string name="charts_legend_heartrate_average">Pulsgjennomsnitt</string>
|
||||
<string name="activity_prefs_step_length_cm">Steglengde i cm</string>
|
||||
<string name="charts_min_max_heartrate_popup">Laveste puls: %1$d
|
||||
\nHøyeste puls: %2$d</string>
|
||||
\nHøyeste puls: %2$d
|
||||
\nBevegelsesintensitet: %3$s</string>
|
||||
<string name="find_lost_device_message">Søk etter %1$s\?</string>
|
||||
<string name="devicetype_amazfit_gtr2">Amazfit GTR 2</string>
|
||||
<string name="menuitem_dnd">Ikke forstyrr</string>
|
||||
@ -1120,4 +1123,6 @@
|
||||
\nIntensitet</string>
|
||||
<string name="activity_list_summary_active_time">Aktiv tid</string>
|
||||
<string name="activity_list_summary_distance">Distanse</string>
|
||||
<string name="devicetype_casiogbx100">Casio GBX-100</string>
|
||||
<string name="devicetype_amazfit_gts2">Amazfit GTS 2</string>
|
||||
</resources>
|
@ -219,7 +219,7 @@
|
||||
<string name="updatefirmwareoperation_update_complete_rebooting">Instalacja firmware\'u zakończona, restartowanie urządzenia…</string>
|
||||
<string name="updatefirmwareoperation_write_failed">Instalacja oprogramowania nie powiodła się</string>
|
||||
<string name="chart_steps">Kroki</string>
|
||||
<string name="liveactivity_live_activity">Ostatnia aktywność</string>
|
||||
<string name="liveactivity_live_activity">Obecna aktywność</string>
|
||||
<string name="weeksteps_today_steps_description">Kroków dziś, cel: %1$s</string>
|
||||
<string name="pref_title_dont_ack_transfer">Nie przesyłaj danych aktywności ACK</string>
|
||||
<string name="pref_summary_dont_ack_transfers">Jeśli transmisja danych nie zostanie potwierdzona przez opaskę, dane dotyczące aktywności nie zostaną wyczyszczone. Przydatne, jeśli GB jest używany razem z innymi aplikacjami.</string>
|
||||
@ -255,7 +255,7 @@
|
||||
<string name="device_fw">Wersja oprogramowania: %1$s</string>
|
||||
<string name="updatefirmwareoperation_update_in_progress">Aktualizowanie oprogramowania</string>
|
||||
<string name="charts_legend_heartrate">Puls</string>
|
||||
<string name="live_activity_heart_rate">Puls</string>
|
||||
<string name="live_activity_heart_rate">Tętno</string>
|
||||
<string name="action_db_management">Zarządzanie bazą danych</string>
|
||||
<string name="title_activity_db_management">Zarządzanie bazą danych</string>
|
||||
<string name="dbmanagementactivity_exported_to">Wyeksportowano do: %1$s</string>
|
||||
@ -377,7 +377,7 @@
|
||||
\n
|
||||
\nROBISZ TO NA WŁASNE RYZYKO!</string>
|
||||
<string name="fw_multi_upgrade_notice">Zamierzasz zainstalować oprogramowanie %1$s oraz %2$s, na miejsce obecnie zainstalowanego na opasce Mi Band.</string>
|
||||
<string name="pref_title_charts_swipe">Włącz przesuwanie w lewo i w prawo na kartach czynności</string>
|
||||
<string name="pref_title_charts_swipe">Włącz gesty przesuwania w lewo i w prawo na kartach aktywności</string>
|
||||
<string name="pref_title_notifications_timeout">Minimalny czas pomiędzy powiadomieniami</string>
|
||||
<string name="pref_title_call_privacy_mode">Tryb prywatności połączeń telefonicznych</string>
|
||||
<string name="pref_title_weather_location">Lokalizacja pogody (dla dostawcy pogody LineageOS)</string>
|
||||
@ -427,7 +427,7 @@
|
||||
<string name="minutes_30">30 minut</string>
|
||||
<string name="lack_of_step">Pozostało kroków: %1$d</string>
|
||||
<string name="pref_title_low_latency_fw_update">Użyj trybu o niskiej latencji przy aktualizacji firmware</string>
|
||||
<string name="live_activity_max_heart_rate">Aktualny / Maks. puls: %1$d / %2$d</string>
|
||||
<string name="live_activity_max_heart_rate">Aktualny / Maks. tętno: %1$d / %2$d</string>
|
||||
<string name="you_slept">Sen trwał od %1$s do %2$s</string>
|
||||
<string name="miband_prefs_device_time_offset_hours">Offset snu w godzinach (do detekcji snu pracowników zmianowych)</string>
|
||||
<string name="mi2_prefs_button_action_summary">Włącz akcję po naciśnięciu przycisku określoną ilość razy</string>
|
||||
@ -456,8 +456,8 @@
|
||||
<string name="korean">Koreański</string>
|
||||
<string name="japanese">Japoński</string>
|
||||
<string name="activity_prefs_charts">Ustawienia wykresów</string>
|
||||
<string name="activity_prefs_chart_max_heart_rate">Puls maksymalny</string>
|
||||
<string name="activity_prefs_chart_min_heart_rate">Puls minimalny</string>
|
||||
<string name="activity_prefs_chart_max_heart_rate">Tętno maksymalne</string>
|
||||
<string name="activity_prefs_chart_min_heart_rate">Tętno minimalne</string>
|
||||
<string name="authenticating">Uwierzytelnianie</string>
|
||||
<string name="authentication_required">Wymagane uwierzytelnienie</string>
|
||||
<string name="appwidget_text">Zzz</string>
|
||||
@ -550,7 +550,7 @@
|
||||
<string name="FetchActivityOperation_about_to_transfer_since">Przeniesienie danych z okresu %1$s</string>
|
||||
<string name="appwidget_setting_alarm">Ustawienie alarmu na %1$02d:%2$02d</string>
|
||||
<string name="error_creating_directory_for_logfiles">Błąd tworzenia folderu na pliki log: %1$s</string>
|
||||
<string name="DEVINFO_HR_VER">"Puls: "</string>
|
||||
<string name="DEVINFO_HR_VER">"Tętno: "</string>
|
||||
<string name="filter_mode_whitelist">Pokazuj gdy zawiera słowa</string>
|
||||
<string name="pref_chart_heartrate_color_red">Czerwony</string>
|
||||
<string name="mi2_prefs_button_press_broadcast_default_value" translatable="false">nodomain.freeyourgadget.gadgetbridge.ButtonPressed</string>
|
||||
@ -609,7 +609,7 @@
|
||||
<string name="zetime_title_heartrate">Ustawienia pomiaru tętna</string>
|
||||
<string name="zetime_title_screentime">Czas podświetlenia ekranu w sekundach</string>
|
||||
<string name="zetime_title_heart_rate_alarm">Alarm o poziomie tętna</string>
|
||||
<string name="zetime_title_heart_rate_alarm_summary">Zegarek cię poinformuje, kiedy twój puls przekroczy limit.</string>
|
||||
<string name="zetime_title_heart_rate_alarm_summary">Zegarek cię poinformuje, kiedy twoje tętno przekroczy limit.</string>
|
||||
<string name="zetime_heart_rate_alarm_enable">Włącz alarm o nieprawidłowym poziomie tętna</string>
|
||||
<string name="activity_prefs_alarm_max_heart_rate">Maksymalny poziom tętna</string>
|
||||
<string name="activity_prefs_alarm_min_heart_rate">Minimalny poziom tętna</string>
|
||||
@ -781,7 +781,7 @@
|
||||
<string name="zetime_signaling_beep_twice">Zabrzęcz dwa razy</string>
|
||||
<string name="zetime_signaling_vibrate_beep_once">Wibracja i brzęczenie raz</string>
|
||||
<string name="pref_title_support_voip_calls">Uwzględnij rozmowy przez internet (VoIP)</string>
|
||||
<string name="pref_summary_authkey">Zmień klucz autoryzacji na wspólny dla wszystkich urządzeń z Androidem, z których chcesz się połączyć. Poprzedni domyślny klucz dla wszystkich urządzeń to 0123456789@ABCDE</string>
|
||||
<string name="pref_summary_authkey">Zmień klucz autoryzacji na wspólny dla wszystkich urządzeń z Androidem, z których chcesz się połączyć. Dawniej, domyślnym kluczem dla wszystkich urządzeń był 0123456789@ABCDE</string>
|
||||
<string name="prefs_hr_alarm_activity">Alarm tętna podczas aktywności sportowej</string>
|
||||
<string name="prefs_hr_alarm_low">Dolny limit</string>
|
||||
<string name="prefs_hr_alarm_high">Górny limit</string>
|
||||
@ -993,12 +993,12 @@
|
||||
<string name="sports_activity_quick_filter_7days">7 dni</string>
|
||||
<string name="no">Nie</string>
|
||||
<string name="yes">Tak</string>
|
||||
<string name="activity_detail_start_label">Start</string>
|
||||
<string name="activity_detail_start_label">Początek</string>
|
||||
<string name="seconds_m">sek/m</string>
|
||||
<string name="seconds_km">sek/km</string>
|
||||
<string name="seconds">sek</string>
|
||||
<string name="averageSpeed">Średnia prędkość</string>
|
||||
<string name="activeSeconds">Aktywny</string>
|
||||
<string name="activeSeconds">Czas aktywności</string>
|
||||
<string name="pref_check_permission_status">Sprawdzanie stanu uprawnień</string>
|
||||
<string name="device_is_currently_bonded">JUŻ POWIĄZANE</string>
|
||||
<string name="activity_type_badminton">Badminton</string>
|
||||
@ -1024,7 +1024,7 @@
|
||||
<string name="about_additional_contributions">Dziękujemy wszystkim nie notowanym na liście współtwórcom za udostępnienie kodu, tłumaczenia, wsparcie, pomysły, motywację, zgłoszenia błędów, pieniądze… ✊</string>
|
||||
<string name="about_core_team_title">Zespół główny (w kolejności od pierwszego wkładu w kod aplikacji)</string>
|
||||
<string name="about_description">Wolny od chmury zamiennik dla aplikacji dla systemu Android o zamkniętym kodzie źródłowym dostarczanych przez producentów gadżetów.</string>
|
||||
<string name="activity_summary_edit_name_title">Etykieta edycyjna</string>
|
||||
<string name="activity_summary_edit_name_title">Edytuj etykietę</string>
|
||||
<string name="activity_type_pingpong">Ping-pong</string>
|
||||
<string name="activity_type_cricket">Krykiet</string>
|
||||
<string name="activity_type_rowing_machine">Ergometr wioślarski</string>
|
||||
@ -1097,7 +1097,7 @@
|
||||
<string name="sports_activity_quick_filter_last_week">Poprzedni tydzień</string>
|
||||
<string name="sports_activity_quick_filter_this_week">Ten tydzień</string>
|
||||
<string name="activity_summaries_all_activities">Wszystkie aktywności</string>
|
||||
<string name="Strokes">Ruchów</string>
|
||||
<string name="Strokes">Ruchy</string>
|
||||
<string name="swolf_index">indeks swolf</string>
|
||||
<string name="lefun_prefs_hydration_reminder_title">Przypomnienie o nawodnieniu</string>
|
||||
<string name="about_version">Wersja %s</string>
|
||||
@ -1120,4 +1120,12 @@
|
||||
<string name="menuitem_findphone">Znajdź telefon</string>
|
||||
<string name="activity_list_summary_distance">Dystans</string>
|
||||
<string name="devicetype_amazfit_gts2">Amazfit GTS 2</string>
|
||||
<string name="activity_list_summary_active_steps">Kroki podczas aktywności</string>
|
||||
<string name="movement_intensity">Intensywność ruchu</string>
|
||||
<string name="activity_list_summary_intensity">Intensywność
|
||||
\nRuchu</string>
|
||||
<string name="activity_list_summary_active_time">Czas aktywności</string>
|
||||
<string name="prefs_events_forwarding_action_title">Uruchom</string>
|
||||
<string name="devicetype_casiogbx100">Casio GBX-100</string>
|
||||
<string name="activity_list_summary_activities">Aktywności</string>
|
||||
</resources>
|
@ -1147,4 +1147,5 @@
|
||||
<string name="activity_list_summary_distance">Mesafe</string>
|
||||
<string name="activity_list_summary_active_steps">Etkin adımlar</string>
|
||||
<string name="devicetype_amazfit_gts2">Amazfit GTS 2</string>
|
||||
<string name="devicetype_casiogbx100">Casio GBX-100</string>
|
||||
</resources>
|
@ -1128,4 +1128,5 @@
|
||||
<string name="activity_list_summary_distance">距离</string>
|
||||
<string name="activity_list_summary_active_steps">活跃步数</string>
|
||||
<string name="devicetype_amazfit_gts2">华米 GTS 2</string>
|
||||
<string name="devicetype_casiogbx100">卡西欧 GBX-100</string>
|
||||
</resources>
|
@ -1162,4 +1162,36 @@
|
||||
<item>50</item>
|
||||
<item>60</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="pref_charts_tabs_items">
|
||||
<item>@string/activity_sleepchart_activity_and_sleep</item>
|
||||
<item>@string/charts_activity_list</item>
|
||||
<item>@string/weeksleepchart_sleep_a_week</item>
|
||||
<item>@string/weeksleepchart_sleep_a_month</item>
|
||||
<item>@string/weekstepschart_steps_a_month</item>
|
||||
<item>@string/stats_title</item>
|
||||
<item>@string/liveactivity_live_activity</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="pref_charts_tabs_values">
|
||||
<item>@string/p_activity</item>
|
||||
<item>@string/p_activity_list</item>
|
||||
<item>@string/p_sleep</item>
|
||||
<item>@string/p_sleep_week</item>
|
||||
<item>@string/p_steps_week</item>
|
||||
<item>@string/p_speed_zones</item>
|
||||
<item>@string/p_live_stats</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="pref_charts_tabs_items_default">
|
||||
<item>@string/p_activity</item>
|
||||
<item>@string/p_activity_list</item>
|
||||
<item>@string/p_sleep</item>
|
||||
<item>@string/p_sleep_week</item>
|
||||
<item>@string/p_steps_week</item>
|
||||
<item>@string/p_speed_zones</item>
|
||||
<item>@string/p_live_stats</item>
|
||||
</string-array>
|
||||
|
||||
|
||||
</resources>
|
@ -437,6 +437,8 @@
|
||||
<string name="notif_battery_low">%1$s battery low</string>
|
||||
<string name="notif_battery_low_extended">%1$s battery low: %2$s</string>
|
||||
<string name="notif_export_failed_title">Export database failed! Please check your settings.</string>
|
||||
<string name="prefs_charts_tabs">Charts tabs</string>
|
||||
<string name="prefs_charts_tabs_summary">Visible charts tabs</string>
|
||||
<string name="sleepchart_your_sleep">Sleep</string>
|
||||
<string name="weeksleepchart_sleep_a_week">Sleep per week</string>
|
||||
<string name="weeksleepchart_today_sleep_description">Sleep today, target: %1$s</string>
|
||||
|
@ -69,4 +69,13 @@
|
||||
<item name="p_call_privacy_mode_name" type="string">name</item>
|
||||
<item name="p_call_privacy_mode_number" type="string">number</item>
|
||||
<item name="p_call_privacy_mode_complete" type="string">complete</item>
|
||||
|
||||
<item name="p_activity" type="string">activity</item>
|
||||
<item name="p_activity_list" type="string">activitylist</item>
|
||||
<item name="p_sleep" type="string">sleep</item>
|
||||
<item name="p_sleep_week" type="string">sleepweek</item>
|
||||
<item name="p_steps_week" type="string">stepsweek</item>
|
||||
<item name="p_speed_zones" type="string">speedzones</item>
|
||||
<item name="p_live_stats" type="string">livestats</item>
|
||||
|
||||
</resources>
|
||||
|
@ -1,5 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<changelog>
|
||||
<release version="0.50.0" versioncode="184">
|
||||
<change>Initial support for Casio GBX-100</change>
|
||||
<change>Mi/Amazfit Band 5: Support watchface installation</change>
|
||||
<change>Mi Band 5: Add missing NFC menu item</change>
|
||||
<change>Casio GB-5600B/GB-6900B: Add configurable disconnect notification</change>
|
||||
<change>Casio: Add support for synchronizing profile settings</change>
|
||||
<change>Fossil Hybrid HR: Keep widget values after widget reload</change>
|
||||
<change>Allow sorting and disabling charts/statistics tabs in per-device settings</change>
|
||||
<change>Improve Sports Activities dashboard and Filter</change>
|
||||
<change>Bug fixes for notification removal</change>
|
||||
<change>Allow to clear activity labels</change>
|
||||
</release>
|
||||
<release version="0.49.0" versioncode="183">
|
||||
<change>Initial support for Amazfit Bip S Lite</change>
|
||||
<change>Initial support for Amazfit GTR/GTS 2</change>
|
||||
|
14
app/src/main/res/xml/devicesettings_chartstabs.xml
Normal file
14
app/src/main/res/xml/devicesettings_chartstabs.xml
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<com.mobeta.android.dslv.DragSortListPreference
|
||||
android:icon="@drawable/ic_activity_graphs"
|
||||
android:defaultValue="@array/pref_charts_tabs_items_default"
|
||||
android:dialogTitle="@string/mi2_prefs_display_items"
|
||||
android:entries="@array/pref_charts_tabs_items"
|
||||
android:entryValues="@array/pref_charts_tabs_values"
|
||||
android:key="charts_tabs"
|
||||
android:persistent="true"
|
||||
android:summary="@string/prefs_charts_tabs_summary"
|
||||
android:title="@string/prefs_charts_tabs" />
|
||||
</androidx.preference.PreferenceScreen>
|
||||
|
10
fastlane/metadata/android/en-US/changelogs/184.txt
Normal file
10
fastlane/metadata/android/en-US/changelogs/184.txt
Normal file
@ -0,0 +1,10 @@
|
||||
* Initial support for Casio GBX-100
|
||||
* Mi/Amazfit Band 5: Support watchface installation
|
||||
* Mi Band 5: Add missing NFC menu item
|
||||
* Casio GB-5600B/GB-6900B: Add configurable disconnect notification
|
||||
* Casio: Add support for synchronizing profile settings
|
||||
* Fossil Hybrid HR: Keep widget values after widget reload
|
||||
* Allow sorting and disabling charts/statistics tabs in per-device settings
|
||||
* Improve Sports Activities dashboard and Filter
|
||||
* Bug fixes for notification removal
|
||||
* Allow to clear activity labels
|
Loading…
Reference in New Issue
Block a user