mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2025-02-25 00:39:01 +01:00
Merge branch 'master' into background-javascript
This commit is contained in:
commit
d00b5a5d5d
12
CHANGELOG.md
12
CHANGELOG.md
@ -1,4 +1,16 @@
|
||||
### Changelog
|
||||
|
||||
#### Version 0.20.0 (next)
|
||||
* Inital Amazfit Bip support (WIP)
|
||||
* Various theming fixes
|
||||
* Add workaround for blacklist not properly persisting
|
||||
* Handle resetting language to default properly
|
||||
* Pebble: Pass booleans from Javascript Appmessage correctly
|
||||
* Pebble: Make local configuration pages work on most recent webview implementation
|
||||
* Pebble: Allow to blacklist calendars
|
||||
* Add greek transliteration support
|
||||
* Various visual improvements to charts
|
||||
|
||||
#### Version 0.19.4
|
||||
* Replace or relicense CC-NC licensed icons to satisfy F-Droid
|
||||
* Mi Band 2: Make infos to display on the Band configurable
|
||||
|
@ -26,8 +26,8 @@ android {
|
||||
targetSdkVersion 25
|
||||
|
||||
// note: always bump BOTH versionCode and versionName!
|
||||
versionName "0.19.4"
|
||||
versionCode 97
|
||||
versionName "0.20.0"
|
||||
versionCode 98
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
}
|
||||
buildTypes {
|
||||
|
@ -63,6 +63,10 @@
|
||||
android:name=".activities.AppBlacklistActivity"
|
||||
android:label="@string/title_activity_appblacklist"
|
||||
android:parentActivityName=".activities.SettingsActivity" />
|
||||
<activity
|
||||
android:name=".activities.CalBlacklistActivity"
|
||||
android:label="@string/title_activity_calblacklist"
|
||||
android:parentActivityName=".activities.SettingsActivity" />
|
||||
<activity
|
||||
android:name=".activities.FwAppInstallerActivity"
|
||||
android:label="@string/title_activity_fw_app_insaller"
|
||||
|
@ -9,6 +9,18 @@
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
<style>
|
||||
html, body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
iframe {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: none;
|
||||
}
|
||||
body {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
|
@ -75,6 +75,13 @@ function showStep(desiredStep) {
|
||||
}
|
||||
}
|
||||
|
||||
function hideSteps() {
|
||||
var steps = document.getElementsByClassName("step");
|
||||
for (var i = 0; i < steps.length; i ++) {
|
||||
steps[i].style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
function gbPebble() {
|
||||
this.configurationURL = null;
|
||||
this.configurationValues = null;
|
||||
@ -159,7 +166,18 @@ function gbPebble() {
|
||||
self.configurationURL = new Uri(url).addQueryParam("return_to", "gadgetbridge://"+UUID+"?config=true&json=");
|
||||
} else {
|
||||
//TODO: add custom return_to
|
||||
location.href = url;
|
||||
var iframe = document.getElementsByTagName('iframe')[0];
|
||||
var oldbody = document.getElementsByTagName("body")[0];
|
||||
if (iframe === undefined && oldbody !== undefined) {
|
||||
iframe = document.createElement("iframe");
|
||||
oldbody.parentNode.replaceChild(iframe,oldbody);
|
||||
} else {
|
||||
hideSteps();
|
||||
document.documentElement.appendChild(iframe);
|
||||
}
|
||||
|
||||
iframe.src = url;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -169,7 +169,8 @@ public class GBApplication extends Application {
|
||||
createWebViewActivity();
|
||||
|
||||
deviceService = createDeviceService();
|
||||
loadBlackList();
|
||||
loadAppsBlackList();
|
||||
loadCalendarsBlackList();
|
||||
|
||||
if (isRunningMarshmallowOrLater()) {
|
||||
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
@ -353,56 +354,107 @@ public class GBApplication extends Application {
|
||||
return NotificationManager.INTERRUPTION_FILTER_ALL;
|
||||
}
|
||||
|
||||
private static HashSet<String> blacklist = null;
|
||||
private static HashSet<String> apps_blacklist = null;
|
||||
|
||||
public static boolean isBlacklisted(String packageName) {
|
||||
if (blacklist == null) {
|
||||
GB.log("isBlacklisted: blacklisti is null!", GB.INFO, null);
|
||||
public static boolean appIsBlacklisted(String packageName) {
|
||||
if (apps_blacklist == null) {
|
||||
GB.log("appIsBlacklisted: apps_blacklist is null!", GB.INFO, null);
|
||||
}
|
||||
return blacklist != null && blacklist.contains(packageName);
|
||||
return apps_blacklist != null && apps_blacklist.contains(packageName);
|
||||
}
|
||||
|
||||
public static void setBlackList(Set<String> packageNames) {
|
||||
public static void setAppsBlackList(Set<String> packageNames) {
|
||||
if (packageNames == null) {
|
||||
GB.log("Set null blacklist", GB.INFO, null);
|
||||
blacklist = new HashSet<>();
|
||||
GB.log("Set null apps_blacklist", GB.INFO, null);
|
||||
apps_blacklist = new HashSet<>();
|
||||
} else {
|
||||
blacklist = new HashSet<>(packageNames);
|
||||
apps_blacklist = new HashSet<>(packageNames);
|
||||
}
|
||||
GB.log("New blacklist has " + blacklist.size() + " entries", GB.INFO, null);
|
||||
saveBlackList();
|
||||
GB.log("New apps_blacklist has " + apps_blacklist.size() + " entries", GB.INFO, null);
|
||||
saveAppsBlackList();
|
||||
}
|
||||
|
||||
private static void loadBlackList() {
|
||||
GB.log("Loading blacklist", GB.INFO, null);
|
||||
blacklist = (HashSet<String>) sharedPrefs.getStringSet(GBPrefs.PACKAGE_BLACKLIST, null);
|
||||
if (blacklist == null) {
|
||||
blacklist = new HashSet<>();
|
||||
private static void loadAppsBlackList() {
|
||||
GB.log("Loading apps_blacklist", GB.INFO, null);
|
||||
apps_blacklist = (HashSet<String>) sharedPrefs.getStringSet(GBPrefs.PACKAGE_BLACKLIST, null);
|
||||
if (apps_blacklist == null) {
|
||||
apps_blacklist = new HashSet<>();
|
||||
}
|
||||
GB.log("Loaded blacklist has " + blacklist.size() + " entries", GB.INFO, null);
|
||||
GB.log("Loaded apps_blacklist has " + apps_blacklist.size() + " entries", GB.INFO, null);
|
||||
}
|
||||
|
||||
private static void saveBlackList() {
|
||||
GB.log("Saving blacklist with " + blacklist.size() + " entries", GB.INFO, null);
|
||||
private static void saveAppsBlackList() {
|
||||
GB.log("Saving apps_blacklist with " + apps_blacklist.size() + " entries", GB.INFO, null);
|
||||
SharedPreferences.Editor editor = sharedPrefs.edit();
|
||||
if (blacklist.isEmpty()) {
|
||||
if (apps_blacklist.isEmpty()) {
|
||||
editor.putStringSet(GBPrefs.PACKAGE_BLACKLIST, null);
|
||||
} else {
|
||||
Prefs.putStringSet(editor, GBPrefs.PACKAGE_BLACKLIST, blacklist);
|
||||
Prefs.putStringSet(editor, GBPrefs.PACKAGE_BLACKLIST, apps_blacklist);
|
||||
}
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
public static void addToBlacklist(String packageName) {
|
||||
if (blacklist.add(packageName)) {
|
||||
saveBlackList();
|
||||
public static void addAppToBlacklist(String packageName) {
|
||||
if (apps_blacklist.add(packageName)) {
|
||||
saveAppsBlackList();
|
||||
}
|
||||
}
|
||||
|
||||
public static synchronized void removeFromBlacklist(String packageName) {
|
||||
GB.log("Removing from blacklist: " + packageName, GB.INFO, null);
|
||||
blacklist.remove(packageName);
|
||||
saveBlackList();
|
||||
public static synchronized void removeFromAppsBlacklist(String packageName) {
|
||||
GB.log("Removing from apps_blacklist: " + packageName, GB.INFO, null);
|
||||
apps_blacklist.remove(packageName);
|
||||
saveAppsBlackList();
|
||||
}
|
||||
|
||||
private static HashSet<String> calendars_blacklist = null;
|
||||
|
||||
public static boolean calendarIsBlacklisted(String calendarDisplayName) {
|
||||
if (calendars_blacklist == null) {
|
||||
GB.log("calendarIsBlacklisted: calendars_blacklist is null!", GB.INFO, null);
|
||||
}
|
||||
return calendars_blacklist != null && calendars_blacklist.contains(calendarDisplayName);
|
||||
}
|
||||
|
||||
public static void setCalendarsBlackList(Set<String> calendarNames) {
|
||||
if (calendarNames == null) {
|
||||
GB.log("Set null apps_blacklist", GB.INFO, null);
|
||||
calendars_blacklist = new HashSet<>();
|
||||
} else {
|
||||
calendars_blacklist = new HashSet<>(calendarNames);
|
||||
}
|
||||
GB.log("New calendars_blacklist has " + calendars_blacklist.size() + " entries", GB.INFO, null);
|
||||
saveCalendarsBlackList();
|
||||
}
|
||||
|
||||
public static void addCalendarToBlacklist(String calendarDisplayName) {
|
||||
if (calendars_blacklist.add(calendarDisplayName)) {
|
||||
saveCalendarsBlackList();
|
||||
}
|
||||
}
|
||||
|
||||
public static void removeFromCalendarBlacklist(String calendarDisplayName) {
|
||||
calendars_blacklist.remove(calendarDisplayName);
|
||||
saveCalendarsBlackList();
|
||||
}
|
||||
|
||||
private static void loadCalendarsBlackList() {
|
||||
GB.log("Loading calendars_blacklist", GB.INFO, null);
|
||||
calendars_blacklist = (HashSet<String>) sharedPrefs.getStringSet(GBPrefs.CALENDAR_BLACKLIST, null);
|
||||
if (calendars_blacklist == null) {
|
||||
calendars_blacklist = new HashSet<>();
|
||||
}
|
||||
GB.log("Loaded calendars_blacklist has " + calendars_blacklist.size() + " entries", GB.INFO, null);
|
||||
}
|
||||
|
||||
private static void saveCalendarsBlackList() {
|
||||
GB.log("Saving calendars_blacklist with " + calendars_blacklist.size() + " entries", GB.INFO, null);
|
||||
SharedPreferences.Editor editor = sharedPrefs.edit();
|
||||
if (calendars_blacklist.isEmpty()) {
|
||||
editor.putStringSet(GBPrefs.CALENDAR_BLACKLIST, null);
|
||||
} else {
|
||||
Prefs.putStringSet(editor, GBPrefs.CALENDAR_BLACKLIST, calendars_blacklist);
|
||||
}
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -0,0 +1,152 @@
|
||||
/* Copyright (C) 2017 Daniele Gobbetti
|
||||
|
||||
This file is part of Gadgetbridge.
|
||||
|
||||
Gadgetbridge is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published
|
||||
by the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Gadgetbridge is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.activities;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Paint;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.provider.CalendarContract;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.NavUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
|
||||
|
||||
public class CalBlacklistActivity extends GBActivity {
|
||||
|
||||
private final String[] EVENT_PROJECTION = new String[]{
|
||||
CalendarContract.Calendars.CALENDAR_DISPLAY_NAME,
|
||||
CalendarContract.Calendars.CALENDAR_COLOR
|
||||
};
|
||||
private ArrayList<Calendar> calendarsArrayList;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_calblacklist);
|
||||
ListView calListView = (ListView) findViewById(R.id.calListView);
|
||||
|
||||
final Uri uri = CalendarContract.Calendars.CONTENT_URI;
|
||||
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
|
||||
GB.toast(this, "Calendar permission not granted. Nothing to do.", Toast.LENGTH_SHORT, GB.WARN);
|
||||
return;
|
||||
}
|
||||
try (Cursor cur = getContentResolver().query(uri, EVENT_PROJECTION, null, null, null)) {
|
||||
calendarsArrayList = new ArrayList<>();
|
||||
while (cur != null && cur.moveToNext()) {
|
||||
calendarsArrayList.add(new Calendar(cur.getString(0), cur.getInt(1)));
|
||||
}
|
||||
}
|
||||
|
||||
ArrayAdapter<Calendar> calAdapter = new CalendarListAdapter(this, calendarsArrayList);
|
||||
calListView.setAdapter(calAdapter);
|
||||
calListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int i, long id) {
|
||||
Calendar item = calendarsArrayList.get(i);
|
||||
CheckBox selected = (CheckBox) view.findViewById(R.id.item_checkbox);
|
||||
toggleEntry(view);
|
||||
if (selected.isChecked()) {
|
||||
GBApplication.addCalendarToBlacklist(item.displayName);
|
||||
} else {
|
||||
GBApplication.removeFromCalendarBlacklist(item.displayName);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
NavUtils.navigateUpFromSameTask(this);
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void toggleEntry(View view) {
|
||||
TextView name = (TextView) view.findViewById(R.id.calendar_name);
|
||||
CheckBox checked = (CheckBox) view.findViewById(R.id.item_checkbox);
|
||||
|
||||
name.setPaintFlags(name.getPaintFlags() ^ Paint.STRIKE_THRU_TEXT_FLAG);
|
||||
checked.toggle();
|
||||
}
|
||||
|
||||
class Calendar {
|
||||
private final String displayName;
|
||||
private final int color;
|
||||
|
||||
public Calendar(String displayName, int color) {
|
||||
this.displayName = displayName;
|
||||
this.color = color;
|
||||
}
|
||||
}
|
||||
|
||||
private class CalendarListAdapter extends ArrayAdapter<Calendar> {
|
||||
|
||||
CalendarListAdapter(@NonNull Context context, @NonNull List<Calendar> calendars) {
|
||||
super(context, 0, calendars);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public View getView(int position, @Nullable View view, @NonNull ViewGroup parent) {
|
||||
Calendar item = getItem(position);
|
||||
|
||||
if (view == null) {
|
||||
LayoutInflater inflater = (LayoutInflater) super.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
view = inflater.inflate(R.layout.item_cal_blacklist, parent, false);
|
||||
}
|
||||
|
||||
View color = view.findViewById(R.id.calendar_color);
|
||||
TextView name = (TextView) view.findViewById(R.id.calendar_name);
|
||||
CheckBox checked = (CheckBox) view.findViewById(R.id.item_checkbox);
|
||||
|
||||
if (GBApplication.calendarIsBlacklisted(item.displayName) && !checked.isChecked()) {
|
||||
toggleEntry(view);
|
||||
}
|
||||
color.setBackgroundColor(item.color);
|
||||
name.setText(item.displayName);
|
||||
|
||||
return view;
|
||||
}
|
||||
}
|
||||
}
|
@ -61,6 +61,8 @@ import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||
|
||||
import static de.cketti.library.changelog.ChangeLog.DEFAULT_CSS;
|
||||
|
||||
//TODO: extend GBActivity, but it requires actionbar that is not available
|
||||
public class ControlCenterv2 extends AppCompatActivity
|
||||
implements NavigationView.OnNavigationItemSelectedListener {
|
||||
@ -195,7 +197,7 @@ public class ControlCenterv2 extends AppCompatActivity
|
||||
checkAndRequestPermissions();
|
||||
}
|
||||
|
||||
ChangeLog cl = new ChangeLog(this);
|
||||
ChangeLog cl = createChangeLog();
|
||||
if (cl.isFirstRun()) {
|
||||
cl.getLogDialog().show();
|
||||
}
|
||||
@ -249,7 +251,7 @@ public class ControlCenterv2 extends AppCompatActivity
|
||||
GBApplication.quit();
|
||||
return true;
|
||||
case R.id.external_changelog:
|
||||
ChangeLog cl = new ChangeLog(this);
|
||||
ChangeLog cl = createChangeLog();
|
||||
cl.getFullLogDialog().show();
|
||||
return true;
|
||||
}
|
||||
@ -257,6 +259,14 @@ public class ControlCenterv2 extends AppCompatActivity
|
||||
return true;
|
||||
}
|
||||
|
||||
private ChangeLog createChangeLog() {
|
||||
String css = ChangeLog.DEFAULT_CSS;
|
||||
css += "body { "
|
||||
+ "color: " + AndroidUtils.getTextColorHex(getBaseContext()) + "; "
|
||||
+ "background-color: " + AndroidUtils.getBackgroundColorHex(getBaseContext()) + ";" +
|
||||
"}";
|
||||
return new ChangeLog(this, css);
|
||||
}
|
||||
private void launchDiscoveryActivity() {
|
||||
startActivity(new Intent(this, DiscoveryActivity.class));
|
||||
}
|
||||
|
@ -97,6 +97,15 @@ public class SettingsActivity extends AbstractSettingsActivity {
|
||||
}
|
||||
});
|
||||
|
||||
pref = findPreference("pref_key_blacklist_calendars");
|
||||
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
Intent enableIntent = new Intent(SettingsActivity.this, CalBlacklistActivity.class);
|
||||
startActivity(enableIntent);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
pref = findPreference("pebble_emu_addr");
|
||||
pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
|
@ -62,7 +62,7 @@ public class AppBlacklistAdapter extends RecyclerView.Adapter<AppBlacklistAdapte
|
||||
if (name == null) {
|
||||
name = ai.packageName;
|
||||
}
|
||||
if (GBApplication.isBlacklisted(ai.packageName)) {
|
||||
if (GBApplication.appIsBlacklisted(ai.packageName)) {
|
||||
// sort blacklisted first by prefixing with a '!'
|
||||
name = "!" + name;
|
||||
}
|
||||
@ -94,7 +94,7 @@ public class AppBlacklistAdapter extends RecyclerView.Adapter<AppBlacklistAdapte
|
||||
holder.deviceAppNameLabel.setText(mNameMap.get(appInfo));
|
||||
holder.deviceImageView.setImageDrawable(appInfo.loadIcon(mPm));
|
||||
|
||||
holder.checkbox.setChecked(GBApplication.isBlacklisted(appInfo.packageName));
|
||||
holder.checkbox.setChecked(GBApplication.appIsBlacklisted(appInfo.packageName));
|
||||
|
||||
holder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
@ -102,9 +102,9 @@ public class AppBlacklistAdapter extends RecyclerView.Adapter<AppBlacklistAdapte
|
||||
CheckBox checkBox = ((CheckBox) v.findViewById(R.id.item_checkbox));
|
||||
checkBox.toggle();
|
||||
if (checkBox.isChecked()) {
|
||||
GBApplication.addToBlacklist(appInfo.packageName);
|
||||
GBApplication.addAppToBlacklist(appInfo.packageName);
|
||||
} else {
|
||||
GBApplication.removeFromBlacklist(appInfo.packageName);
|
||||
GBApplication.removeFromAppsBlacklist(appInfo.packageName);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -0,0 +1,61 @@
|
||||
/* Copyright (C) 2017 Andreas Shimokawa
|
||||
|
||||
This file is part of Gadgetbridge.
|
||||
|
||||
Gadgetbridge is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published
|
||||
by the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Gadgetbridge is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.devices.amazfitbip;
|
||||
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBand2Coordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class AmazfitBipCooordinator extends MiBand2Coordinator {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipCooordinator.class);
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.AMAZFITBIP;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public DeviceType getSupportedType(GBDeviceCandidate candidate) {
|
||||
try {
|
||||
BluetoothDevice device = candidate.getDevice();
|
||||
String name = device.getName();
|
||||
if (name != null && name.equalsIgnoreCase("Amazfit Bip Watch")) {
|
||||
return DeviceType.AMAZFITBIP;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
LOG.error("unable to check device support", ex);
|
||||
}
|
||||
return DeviceType.UNKNOWN;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public InstallHandler findInstallHandler(Uri uri, Context context) {
|
||||
return null; // not supported yet
|
||||
}
|
||||
|
||||
}
|
@ -34,7 +34,6 @@ import java.util.List;
|
||||
|
||||
import de.greenrobot.dao.query.QueryBuilder;
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBException;
|
||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
|
||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.CalendarSyncState;
|
||||
|
@ -103,7 +103,7 @@ public class NotificationListener extends NotificationListenerService {
|
||||
} else {
|
||||
// ACTION_MUTE
|
||||
LOG.info("going to mute " + sbn.getPackageName());
|
||||
GBApplication.addToBlacklist(sbn.getPackageName());
|
||||
GBApplication.addAppToBlacklist(sbn.getPackageName());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -414,7 +414,7 @@ public class NotificationListener extends NotificationListenerService {
|
||||
}
|
||||
}
|
||||
|
||||
if (GBApplication.isBlacklisted(source)) {
|
||||
if (GBApplication.appIsBlacklisted(source)) {
|
||||
LOG.info("Ignoring notification, application is blacklisted");
|
||||
return true;
|
||||
}
|
||||
|
@ -23,7 +23,6 @@ import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.provider.CalendarContract.Instances;
|
||||
import android.text.format.Time;
|
||||
import android.util.Log;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -34,6 +33,8 @@ import java.util.GregorianCalendar;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
|
||||
public class CalendarEvents {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(CalendarEvents.class);
|
||||
|
||||
@ -102,7 +103,11 @@ public class CalendarEvents {
|
||||
evtCursor.getString(7),
|
||||
!evtCursor.getString(8).equals("0")
|
||||
);
|
||||
calendarEventList.add(calEvent);
|
||||
if (!GBApplication.calendarIsBlacklisted(calEvent.getCalName())) {
|
||||
calendarEventList.add(calEvent);
|
||||
} else {
|
||||
LOG.debug("calendar " + calEvent.getCalName() + " skipped because it's blacklisted");
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -28,15 +28,16 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
* and may not be changed.
|
||||
*/
|
||||
public enum DeviceType {
|
||||
UNKNOWN(-1, R.drawable.ic_launcher, R.drawable.ic_device_default_disabled),
|
||||
UNKNOWN(-1, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled),
|
||||
PEBBLE(1, R.drawable.ic_device_pebble, R.drawable.ic_device_pebble_disabled),
|
||||
MIBAND(10, R.drawable.ic_device_miband, R.drawable.ic_device_miband_disabled),
|
||||
MIBAND2(11, R.drawable.ic_device_miband, R.drawable.ic_device_miband_disabled),
|
||||
AMAZFITBIP(12, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled),
|
||||
VIBRATISSIMO(20, R.drawable.ic_device_lovetoy, R.drawable.ic_device_lovetoy_disabled),
|
||||
LIVEVIEW(30, R.drawable.ic_launcher, R.drawable.ic_device_default_disabled),
|
||||
LIVEVIEW(30, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled),
|
||||
HPLUS(40, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled),
|
||||
MAKIBESF68(41, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled),
|
||||
TEST(1000, R.drawable.ic_launcher, R.drawable.ic_device_default_disabled);
|
||||
TEST(1000, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled);
|
||||
|
||||
private final int key;
|
||||
@DrawableRes
|
||||
|
@ -30,6 +30,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.liveview.LiveviewSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.MiBand2Support;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.amazfitbip.AmazfitBipSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.MiBandSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.vibratissimo.VibratissimoSupport;
|
||||
@ -109,6 +110,9 @@ public class DeviceSupportFactory {
|
||||
case MIBAND2:
|
||||
deviceSupport = new ServiceDeviceSupport(new MiBand2Support(), EnumSet.of(ServiceDeviceSupport.Flags.THROTTLING, ServiceDeviceSupport.Flags.BUSY_CHECKING));
|
||||
break;
|
||||
case AMAZFITBIP:
|
||||
deviceSupport = new ServiceDeviceSupport(new AmazfitBipSupport(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING));
|
||||
break;
|
||||
case VIBRATISSIMO:
|
||||
deviceSupport = new ServiceDeviceSupport(new VibratissimoSupport(), EnumSet.of(ServiceDeviceSupport.Flags.THROTTLING, ServiceDeviceSupport.Flags.BUSY_CHECKING));
|
||||
break;
|
||||
|
@ -0,0 +1,54 @@
|
||||
/* Copyright (C) 2017 Andreas Shimokawa
|
||||
|
||||
This file is part of Gadgetbridge.
|
||||
|
||||
Gadgetbridge is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published
|
||||
by the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Gadgetbridge is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.service.devices.amazfitbip;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallControl;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.CallSpec;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.NotificationStrategy;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.MiBand2Support;
|
||||
|
||||
public class AmazfitBipSupport extends MiBand2Support {
|
||||
@Override
|
||||
public NotificationStrategy getNotificationStrategy() {
|
||||
return new AmazfitBipTextNotificationStrategy(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFindDevice(boolean start) {
|
||||
CallSpec callSpec = new CallSpec();
|
||||
callSpec.command = start ? CallSpec.CALL_INCOMING : CallSpec.CALL_END;
|
||||
callSpec.name = "Gadgetbridge";
|
||||
onSetCallState(callSpec);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleButtonPressed(byte[] value) {
|
||||
if (value == null || value.length != 1) {
|
||||
return;
|
||||
}
|
||||
GBDeviceEventCallControl callCmd = new GBDeviceEventCallControl();
|
||||
|
||||
if (value[0] == 0x07) {
|
||||
callCmd.event = GBDeviceEventCallControl.Event.REJECT;
|
||||
} else if (value[0] == 0x09) {
|
||||
callCmd.event = GBDeviceEventCallControl.Event.ACCEPT;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
evaluateGBDeviceEvent(callCmd);
|
||||
}
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
/* Copyright (C) 2017 Andreas Shimokawa
|
||||
|
||||
This file is part of Gadgetbridge.
|
||||
|
||||
Gadgetbridge is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published
|
||||
by the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Gadgetbridge is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.service.devices.amazfitbip;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.miband.VibrationProfile;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.BtLEAction;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.alertnotification.AlertCategory;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.common.SimpleNotification;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.Mi2TextNotificationStrategy;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.MiBand2Support;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.StringUtils;
|
||||
|
||||
class AmazfitBipTextNotificationStrategy extends Mi2TextNotificationStrategy {
|
||||
|
||||
AmazfitBipTextNotificationStrategy(MiBand2Support support) {
|
||||
super(support);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void sendCustomNotification(VibrationProfile vibrationProfile, SimpleNotification simpleNotification, BtLEAction extraAction, TransactionBuilder builder) {
|
||||
if (simpleNotification != null && simpleNotification.getAlertCategory() == AlertCategory.IncomingCall) {
|
||||
// incoming calls are notified solely via NewAlert including caller ID
|
||||
sendAlert(simpleNotification, builder);
|
||||
return;
|
||||
}
|
||||
|
||||
if (simpleNotification != null && !StringUtils.isEmpty(simpleNotification.getMessage())) {
|
||||
sendAlert(simpleNotification, builder);
|
||||
}
|
||||
}
|
||||
}
|
@ -301,7 +301,7 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
||||
return this;
|
||||
}
|
||||
|
||||
private NotificationStrategy getNotificationStrategy() {
|
||||
public NotificationStrategy getNotificationStrategy() {
|
||||
String firmwareVersion = getDevice().getFirmwareVersion();
|
||||
if (firmwareVersion != null) {
|
||||
Version ver = new Version(firmwareVersion);
|
||||
@ -808,7 +808,7 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
||||
return false;
|
||||
}
|
||||
|
||||
private void handleButtonPressed(byte[] value) {
|
||||
public void handleButtonPressed(byte[] value) {
|
||||
LOG.info("Button pressed");
|
||||
logMessageContent(value);
|
||||
}
|
||||
|
@ -164,7 +164,7 @@ class PebbleIoThread extends GBDeviceIoThread {
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
LOG.warn("error while connecting: " + e.getMessage(), e);
|
||||
gbDevice.setState(originalState);
|
||||
gbDevice.sendDeviceUpdateIntent(getContext());
|
||||
|
||||
|
@ -39,6 +39,7 @@ public class GBCallControlReceiver extends BroadcastReceiver {
|
||||
GBDeviceEventCallControl.Event callCmd = GBDeviceEventCallControl.Event.values()[intent.getIntExtra("event", 0)];
|
||||
switch (callCmd) {
|
||||
case END:
|
||||
case REJECT:
|
||||
case START:
|
||||
try {
|
||||
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
@ -46,7 +47,7 @@ public class GBCallControlReceiver extends BroadcastReceiver {
|
||||
Method method = clazz.getDeclaredMethod("getITelephony");
|
||||
method.setAccessible(true);
|
||||
ITelephony telephonyService = (ITelephony) method.invoke(telephonyManager);
|
||||
if (callCmd == GBDeviceEventCallControl.Event.END) {
|
||||
if (callCmd == GBDeviceEventCallControl.Event.END || callCmd == GBDeviceEventCallControl.Event.REJECT) {
|
||||
telephonyService.endCall();
|
||||
} else {
|
||||
telephonyService.answerRingingCall();
|
||||
|
@ -20,12 +20,16 @@ import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Color;
|
||||
import android.os.ParcelUuid;
|
||||
import android.os.Parcelable;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
|
||||
public class AndroidUtils {
|
||||
public static ParcelUuid[] toParcelUUids(Parcelable[] uuids) {
|
||||
if (uuids == null) {
|
||||
@ -74,4 +78,39 @@ public class AndroidUtils {
|
||||
activity.getBaseContext().getResources().updateConfiguration(config, activity.getBaseContext().getResources().getDisplayMetrics());
|
||||
activity.recreate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the theme dependent text color as a css-style hex string.
|
||||
* @param context the context to access the colour
|
||||
*/
|
||||
public static String getTextColorHex(Context context) {
|
||||
int color;
|
||||
if (GBApplication.isDarkThemeEnabled()) {
|
||||
color = context.getResources().getColor(R.color.primarytext_dark);
|
||||
} else {
|
||||
color = context.getResources().getColor(R.color.primarytext_light);
|
||||
}
|
||||
return colorToHex(color);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the theme dependent background color as a css-style hex string.
|
||||
* @param context the context to access the colour
|
||||
*/
|
||||
public static String getBackgroundColorHex(Context context) {
|
||||
int color;
|
||||
if (GBApplication.isDarkThemeEnabled()) {
|
||||
color = context.getResources().getColor(R.color.cardview_dark_background);
|
||||
} else {
|
||||
color = context.getResources().getColor(R.color.cardview_light_background);
|
||||
}
|
||||
return colorToHex(color);
|
||||
}
|
||||
|
||||
private static String colorToHex(int color) {
|
||||
return "#"
|
||||
+ Integer.toHexString(Color.red(color))
|
||||
+ Integer.toHexString(Color.green(color))
|
||||
+ Integer.toHexString(Color.blue(color));
|
||||
}
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
|
||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.UnknownDeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.amazfitbip.AmazfitBipCooordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.hplus.HPlusCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.hplus.MakibesF68Coordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.liveview.LiveviewCoordinator;
|
||||
@ -184,6 +185,7 @@ public class DeviceHelper {
|
||||
|
||||
private List<DeviceCoordinator> createCoordinators() {
|
||||
List<DeviceCoordinator> result = new ArrayList<>();
|
||||
result.add(new AmazfitBipCooordinator()); // Note: AmazfitBip must come before MiBand2 because detection is hacky, atm
|
||||
result.add(new MiBand2Coordinator()); // Note: MiBand2 must come before MiBand because detection is hacky, atm
|
||||
result.add(new MiBandCoordinator());
|
||||
result.add(new PebbleCoordinator());
|
||||
|
@ -21,6 +21,7 @@ import java.util.Date;
|
||||
|
||||
public class GBPrefs {
|
||||
public static final String PACKAGE_BLACKLIST = "package_blacklist";
|
||||
public static final String CALENDAR_BLACKLIST = "calendar_blacklist";
|
||||
public static final String AUTO_RECONNECT = "general_autocreconnect";
|
||||
private static final String AUTO_START = "general_autostartonboot";
|
||||
private static final boolean AUTO_START_DEFAULT = true;
|
||||
|
@ -17,6 +17,12 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.util;
|
||||
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
import android.util.Xml;
|
||||
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
import org.xmlpull.v1.XmlSerializer;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
@ -27,12 +33,6 @@ import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
import org.xmlpull.v1.XmlSerializer;
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
import android.util.Xml;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
|
||||
public class ImportExportSharedPreferences {
|
||||
@ -125,12 +125,19 @@ public class ImportExportSharedPreferences {
|
||||
editor.putString(key, text);
|
||||
} else if (HASHSET.equals(name)) {
|
||||
if (key.equals(GBPrefs.PACKAGE_BLACKLIST)) {
|
||||
Set<String> blacklist = new HashSet<>();
|
||||
Set<String> apps_blacklist = new HashSet<>();
|
||||
text=text.replace("[","").replace("]","");
|
||||
for (int z=0;z<text.split(",").length;z++){
|
||||
blacklist.add(text.split(",")[z].trim());
|
||||
apps_blacklist.add(text.split(",")[z].trim());
|
||||
}
|
||||
GBApplication.setBlackList(blacklist);
|
||||
GBApplication.setAppsBlackList(apps_blacklist);
|
||||
} else if (key.equals(GBPrefs.CALENDAR_BLACKLIST)) { //TODO: untested
|
||||
Set<String> calendars_blacklist = new HashSet<>();
|
||||
text = text.replace("[", "").replace("]", "");
|
||||
for (int z = 0; z < text.split(",").length; z++) {
|
||||
calendars_blacklist.add(text.split(",")[z].trim());
|
||||
}
|
||||
GBApplication.setCalendarsBlackList(calendars_blacklist);
|
||||
}
|
||||
} else if (!PREFERENCES.equals(name)) {
|
||||
throw new Exception("Unkown type " + name);
|
||||
|
@ -28,7 +28,12 @@ public class LanguageUtils {
|
||||
private static Map<Character, String> transliterateMap = new HashMap<Character, String>(){
|
||||
{
|
||||
//extended ASCII characters
|
||||
put('æ', "ae"); put('œ', "oe"); put('ß', "B"); put('ª', "a"); put('º', "o"); put('«',"\""); put('»',"\"");
|
||||
put('æ', "ae"); put('œ', "oe"); put('ª', "a"); put('º', "o"); put('«',"\""); put('»',"\"");
|
||||
|
||||
//german characters
|
||||
put('ä',"ae"); put('ö',"oe"); put('ü',"ue");
|
||||
put('Ä',"Ae"); put('Ö',"Oe"); put('Ü',"Üe");
|
||||
put('ß',"ss"); put('ẞ',"SS");
|
||||
|
||||
//russian chars
|
||||
put('а', "a"); put('б', "b"); put('в', "v"); put('г', "g"); put('д', "d"); put('е', "e"); put('ё', "jo"); put('ж', "zh");
|
||||
@ -42,6 +47,7 @@ public class LanguageUtils {
|
||||
put('ט', "t"); put('י', "y"); put('כ', "c"); put('ל', "l"); put('מ', "m"); put('נ', "n"); put('ס', "s"); put('ע', "'");
|
||||
put('פ', "p"); put('צ', "ts"); put('ק', "k"); put('ר', "r"); put('ש', "sh"); put('ת', "th"); put('ף', "f"); put('ץ', "ts");
|
||||
put('ך', "ch");put('ם', "m");put('ן', "n");
|
||||
|
||||
// greek chars
|
||||
put('α',"a");put('ά',"a");put('β',"v");put('γ',"g");put('δ',"d");put('ε',"e");put('έ',"e");put('ζ',"z");put('η',"i");
|
||||
put('ή',"i");put('θ',"th");put('ι',"i");put('ί',"i");put('ϊ',"i");put('ΐ',"i");put('κ',"k");put('λ',"l");put('μ',"m");
|
||||
@ -51,7 +57,9 @@ public class LanguageUtils {
|
||||
put('Ή',"I");put('Θ',"TH");put('Ι',"I");put('Ί',"I");put('Ϊ',"I");put('Κ',"K");put('Λ',"L");put('Μ',"M");put('Ν',"N");
|
||||
put('Ξ',"KS");put('Ο',"O");put('Ό',"O");put('Π',"P");put('Ρ',"R");put('Σ',"S");put('Τ',"T");put('Υ',"Y");put('Ύ',"Y");
|
||||
put('Ϋ',"Y");put('Φ',"F");put('Χ',"CH");put('Ψ',"PS");put('Ω',"O");put('Ώ',"O");
|
||||
//continue for other languages...
|
||||
|
||||
//TODO: these must be configurabe. If someone wants to transliterate cyrillic it does not mean his device has no German umlauts
|
||||
//all or nothing is really bad here
|
||||
}
|
||||
};
|
||||
|
||||
|
BIN
app/src/main/res/drawable-hdpi/ic_device_default.png
Normal file
BIN
app/src/main/res/drawable-hdpi/ic_device_default.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
app/src/main/res/drawable-mdpi/ic_device_default.png
Normal file
BIN
app/src/main/res/drawable-mdpi/ic_device_default.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
app/src/main/res/drawable-xhdpi/ic_device_default.png
Normal file
BIN
app/src/main/res/drawable-xhdpi/ic_device_default.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
BIN
app/src/main/res/drawable-xxhdpi/ic_device_default.png
Normal file
BIN
app/src/main/res/drawable-xxhdpi/ic_device_default.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
@ -4,6 +4,7 @@
|
||||
<item android:maxLevel="101" android:drawable="@drawable/ic_device_pebble_disabled" />
|
||||
<item android:maxLevel="110" android:drawable="@drawable/ic_device_miband_disabled" />
|
||||
<item android:maxLevel="111" android:drawable="@drawable/ic_device_miband_disabled" />
|
||||
<item android:maxLevel="112" android:drawable="@drawable/ic_device_hplus_disabled" />
|
||||
<item android:maxLevel="120" android:drawable="@drawable/ic_device_lovetoy_disabled" />
|
||||
<item android:maxLevel="130" android:drawable="@drawable/ic_device_default_disabled" />
|
||||
<item android:maxLevel="140" android:drawable="@drawable/ic_device_hplus_disabled" />
|
||||
@ -13,6 +14,7 @@
|
||||
<item android:maxLevel="201" android:drawable="@drawable/ic_device_pebble" />
|
||||
<item android:maxLevel="210" android:drawable="@drawable/ic_device_miband" />
|
||||
<item android:maxLevel="211" android:drawable="@drawable/ic_device_miband" />
|
||||
<item android:maxLevel="212" android:drawable="@drawable/ic_device_hplus" />
|
||||
<item android:maxLevel="220" android:drawable="@drawable/ic_device_lovetoy" />
|
||||
<item android:maxLevel="230" android:drawable="@drawable/ic_launcher" />
|
||||
<item android:maxLevel="240" android:drawable="@drawable/ic_device_hplus" />
|
||||
|
14
app/src/main/res/layout/activity_calblacklist.xml
Normal file
14
app/src/main/res/layout/activity_calblacklist.xml
Normal file
@ -0,0 +1,14 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context="nodomain.freeyourgadget.gadgetbridge.activities.CalBlacklistActivity">
|
||||
|
||||
<ListView
|
||||
android:id="@+id/calListView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:divider="@null" />
|
||||
|
||||
</RelativeLayout>
|
50
app/src/main/res/layout/item_cal_blacklist.xml
Normal file
50
app/src/main/res/layout/item_cal_blacklist.xml
Normal file
@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/activatedBackgroundIndicator"
|
||||
android:minHeight="60dp">
|
||||
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/item_checkbox"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:clickable="false"
|
||||
android:focusable="false" />
|
||||
|
||||
<View
|
||||
android:id="@+id/calendar_color"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_toEndOf="@+id/item_checkbox"
|
||||
android:paddingBottom="8dp"
|
||||
android:paddingTop="8dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toEndOf="@+id/calendar_color"
|
||||
android:orientation="vertical"
|
||||
android:padding="8dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/calendar_name"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:scrollHorizontally="false"
|
||||
android:maxLines="1"
|
||||
android:text="Item Name" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
@ -29,8 +29,8 @@
|
||||
<string name="appmananger_app_delete_cache">Löschen und aus dem Zwischenspeicher entfernen</string>
|
||||
<string name="appmananger_app_reinstall">Erneut installieren</string>
|
||||
<string name="appmanager_app_openinstore">Im Pebble Appstore suchen</string>
|
||||
<string name="appmanager_health_activate">aktivieren</string>
|
||||
<string name="appmanager_health_deactivate">deaktivieren</string>
|
||||
<string name="appmanager_health_activate">Aktivieren</string>
|
||||
<string name="appmanager_health_deactivate">Deaktivieren</string>
|
||||
<string name="appmanager_hrm_activate">HRM aktivieren</string>
|
||||
<string name="appmanager_hrm_deactivate">HRM deaktivieren</string>
|
||||
<string name="appmanager_weather_activate">Wetter-App des Systems aktivieren</string>
|
||||
@ -58,7 +58,7 @@
|
||||
<string name="pref_header_datetime">Datum und Zeit</string>
|
||||
<string name="pref_title_datetime_syctimeonconnect">Uhrzeit synchronisieren</string>
|
||||
<string name="pref_summary_datetime_syctimeonconnect">Synchronisiere die Uhrzeit mit dem Gerät bei Verbindungsaufbau und wenn die Zeit oder Zeitzone auf dem Android Gerät geändert wird</string>
|
||||
<string name="pref_title_theme">Theme</string>
|
||||
<string name="pref_title_theme">Thema</string>
|
||||
<string name="pref_theme_light">Hell</string>
|
||||
<string name="pref_theme_dark">Dunkel</string>
|
||||
<string name="pref_title_language">Sprache</string>
|
||||
@ -76,7 +76,7 @@
|
||||
<string name="pref_title_notification_filter">Bitte nicht stören</string>
|
||||
<string name="pref_summary_notification_filter">Benachrichtigungen nicht senden, wenn im \"Nicht Stören\"-Modus</string>
|
||||
<string name="pref_title_transliteration">Transkription</string>
|
||||
<string name="pref_summary_transliteration">Aktiviere dies, falls dein Gerät keine Unterstützung für den Zeichensatz deiner Sprache hat (momentan nur Kyrillisch)</string>
|
||||
<string name="pref_summary_transliteration">Aktiviere dies, falls dein Gerät keine Unterstützung für den Zeichensatz deiner Sprache hat</string>
|
||||
<string name="always">immer</string>
|
||||
<string name="when_screen_off">wenn der Bildschirm aus ist</string>
|
||||
<string name="never">niemals</string>
|
||||
@ -220,6 +220,8 @@
|
||||
<string name="pref_screen_notification_profile_generic_chat">Chat</string>
|
||||
<string name="pref_screen_notification_profile_generic_navigation">Navigation</string>
|
||||
<string name="pref_screen_notification_profile_generic_social">Soziales Netzwerk</string>
|
||||
<string name="stats_x_axis_label">Minuten insgesamt</string>
|
||||
<string name="stats_y_axis_label">Schritte pro Minute</string>
|
||||
<string name="control_center_find_lost_device">Verlegtes Gerät suchen</string>
|
||||
<string name="control_center_cancel_to_stop_vibration">Abbrechen, um die Vibration zu stoppen.</string>
|
||||
<string name="title_activity_charts">Deine Aktivität</string>
|
||||
@ -273,6 +275,9 @@
|
||||
<string name="chart_steps">Schritte</string>
|
||||
<string name="calories">Kalorien</string>
|
||||
<string name="distance">Distanz</string>
|
||||
<string name="clock">Uhrzeit</string>
|
||||
<string name="heart_rate">Puls</string>
|
||||
<string name="battery">Batterie</string>
|
||||
<string name="liveactivity_live_activity">Live Aktivität</string>
|
||||
<string name="weeksteps_today_steps_description">Schritte heute, Ziel: %1$s</string>
|
||||
<string name="pref_title_dont_ack_transfer">Transfer von Aktivitätsdaten nicht bestätigen</string>
|
||||
@ -300,7 +305,17 @@
|
||||
<string name="miband2_prefs_dateformat">Mi2: Datumsformat</string>
|
||||
<string name="dateformat_time">Zeit</string>
|
||||
<string name="dateformat_date_time"><![CDATA[Time & Date]]></string>
|
||||
<string name="mi2_prefs_goal_notification">Benachrichtigungen bei Schrittziel</string>
|
||||
<string name="mi2_prefs_goal_notification_summary">Das Band wird vibrieren, wenn das tägliche Schrittziel erreicht ist.</string>
|
||||
<string name="mi2_prefs_display_items">Angezeigte Items</string>
|
||||
<string name="mi2_prefs_display_items_summary">Wähle aus, welche Items auf dem Band angezeigt werden sollen</string>
|
||||
<string name="mi2_prefs_activate_display_on_lift">Display beim Anheben aktivieren</string>
|
||||
<string name="mi2_prefs_do_not_disturb">Bitte nicht stören</string>
|
||||
<string name="mi2_prefs_inactivity_warnings">Inaktivitätswarnungen</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_summary">Das Band wird vibrieren, wenn du für eine Weile inaktiv warst</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_dnd_summary">Deaktiviere Inaktivitätswarnungen zu einer bestimmten Zeit</string>
|
||||
<string name="mi2_prefs_do_not_disturb_start">Startzeit</string>
|
||||
<string name="mi2_prefs_do_not_disturb_end">Endzeit</string>
|
||||
<string name="FetchActivityOperation_about_to_transfer_since">Werde Daten ab %1$s übertragen.</string>
|
||||
<string name="waiting_for_reconnect">warte auf Verbindung</string>
|
||||
<string name="activity_prefs_about_you">Über Dich</string>
|
||||
@ -366,7 +381,10 @@
|
||||
<string name="miband2_prefs_timeformat">Mi2: Uhrzeit-Format</string>
|
||||
<string name="mi2_fw_installhandler_fw53_hint">Installiere Version %1$s vor dem Installieren der Firmware!</string>
|
||||
<string name="mi2_enable_text_notifications">Text Benachrichtigung</string>
|
||||
<string name="mi2_enable_text_notifications_summary"><![CDATA[Firmware >= 1.0.1.28 und installiertes Mili_pro.ft* benötigt.]]></string>
|
||||
<string name="off">aus</string>
|
||||
<string name="mi2_dnd_off">Aus</string>
|
||||
<string name="mi2_dnd_automatic">Automatisch (Schlaferkennung)</string>
|
||||
<string name="discovery_attempting_to_pair">Versuche zu koppeln mit %1$s</string>
|
||||
<string name="discovery_bonding_failed_immediately">Kopplung mit %1$s soeben fehlgeschlagen.</string>
|
||||
<string name="discovery_trying_to_connect_to">Versuche zu verbinden mit: %1$s</string>
|
||||
|
@ -76,7 +76,7 @@
|
||||
<string name="pref_title_notification_filter">No Molestar</string>
|
||||
<string name="pref_summary_notification_filter">Dejar de enviar notificaciones no deseadas basándose en el modo No Molestar</string>
|
||||
<string name="pref_title_transliteration">Transcripción</string>
|
||||
<string name="pref_summary_transliteration">Utilizar en caso de que tu dispositivo no soporte la fuente de tu idioma (de momento solo el Cirílico)</string>
|
||||
<string name="pref_summary_transliteration">Utilizar en caso de que tu dispositivo no soporte la fuente de tu idioma</string>
|
||||
<string name="always">siempre</string>
|
||||
<string name="when_screen_off">cuando la pantalla está apagada</string>
|
||||
<string name="never">nunca</string>
|
||||
@ -276,6 +276,9 @@
|
||||
<string name="chart_steps">Pasos</string>
|
||||
<string name="calories">Calorías</string>
|
||||
<string name="distance">Distancia</string>
|
||||
<string name="clock">Reloj</string>
|
||||
<string name="heart_rate">Ritmo cardíaco</string>
|
||||
<string name="battery">Batería</string>
|
||||
<string name="liveactivity_live_activity">Actividad</string>
|
||||
<string name="weeksteps_today_steps_description">Pasos hoy, objetivo: %1$s</string>
|
||||
<string name="pref_title_dont_ack_transfer">No confirmar transferencia</string>
|
||||
@ -303,7 +306,20 @@
|
||||
<string name="miband2_prefs_dateformat">Mi2: Formato de fecha</string>
|
||||
<string name="dateformat_time">Tiempo</string>
|
||||
<string name="dateformat_date_time"><![CDATA[Fecha y hora]]></string>
|
||||
<string name="mi2_prefs_goal_notification">Notificación de objetivo</string>
|
||||
<string name="mi2_prefs_goal_notification_summary">La pulsera vibrará cuando llegues al objetivo diario de pasos</string>
|
||||
<string name="mi2_prefs_display_items">Elementos que mostrar</string>
|
||||
<string name="mi2_prefs_display_items_summary">Selecciona los elementos que mostrar en la pulsera</string>
|
||||
<string name="mi2_prefs_activate_display_on_lift">Activar pantalla al levantar</string>
|
||||
<string name="mi2_prefs_rotate_wrist_to_switch_info">Gira la muñeca para cambiar la información</string>
|
||||
<string name="mi2_prefs_do_not_disturb">No Molestar</string>
|
||||
<string name="mi2_prefs_do_not_disturb_summary">La pulsera no recibirá notificaciones</string>
|
||||
<string name="mi2_prefs_inactivity_warnings">Alerta de inactividad</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_summary">La pulsera vibrará cuando hayas estado inactivo por un tiempo</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_threshold">Umbral de inactividad (en minutos)</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_dnd_summary">Desactivar las alarmas de inactividad por un intervalo de tiempo</string>
|
||||
<string name="mi2_prefs_do_not_disturb_start">Hora de inicio</string>
|
||||
<string name="mi2_prefs_do_not_disturb_end">Hora de fin</string>
|
||||
<string name="FetchActivityOperation_about_to_transfer_since">A punto de transferir datos desde %1$s</string>
|
||||
<string name="waiting_for_reconnect">esperando reconexión</string>
|
||||
<string name="activity_prefs_about_you">Sobre ti</string>
|
||||
@ -371,6 +387,9 @@
|
||||
<string name="mi2_enable_text_notifications">Notificaciones textuales</string>
|
||||
<string name="mi2_enable_text_notifications_summary"><![CDATA[Needs firmware >= 1.0.1.28 and Mili_pro.ft* installed.]]></string>
|
||||
<string name="off">off</string>
|
||||
<string name="mi2_dnd_off">Off</string>
|
||||
<string name="mi2_dnd_automatic">Automático (detección de sueño)</string>
|
||||
<string name="mi2_dnd_scheduled">Programado (intervalo de tiempo)</string>
|
||||
<string name="discovery_attempting_to_pair">Intento de emparejamiento con %1$s</string>
|
||||
<string name="discovery_bonding_failed_immediately">El enlace con %1$s falló instantáneamente</string>
|
||||
<string name="discovery_trying_to_connect_to">Intentando conectar con: %1$s</string>
|
||||
|
@ -76,7 +76,7 @@
|
||||
<string name="pref_title_notification_filter">Ne Pas Déranger</string>
|
||||
<string name="pref_summary_notification_filter">Arrêter l’envoi des notifications non-désirées en mode Ne Pas Déranger.</string>
|
||||
<string name="pref_title_transliteration">Transcription</string>
|
||||
<string name="pref_summary_transliteration">À utiliser si l\'appareil ne supporte pas la police de caractères (pour l\'instant seulement le Cyrillique)</string>
|
||||
<string name="pref_summary_transliteration">Activez ceci si votre appareil ne supporte pas la police de caractères</string>
|
||||
<string name="always">toujours</string>
|
||||
<string name="when_screen_off">quand l\'écran est éteint</string>
|
||||
<string name="never">jamais</string>
|
||||
@ -276,6 +276,9 @@
|
||||
<string name="chart_steps">Pas</string>
|
||||
<string name="calories">Calories</string>
|
||||
<string name="distance">Distance</string>
|
||||
<string name="clock">Horloge</string>
|
||||
<string name="heart_rate">Fréquence cardiaque</string>
|
||||
<string name="battery">Batterie</string>
|
||||
<string name="liveactivity_live_activity">Activité en direct</string>
|
||||
<string name="weeksteps_today_steps_description">Nombre de pas aujourd\'hui, objectif: %1$s</string>
|
||||
<string name="pref_title_dont_ack_transfer">Ne pas confirmer le transfert de données d\'activités</string>
|
||||
@ -303,7 +306,20 @@
|
||||
<string name="miband2_prefs_dateformat">Mi2 : Format de la date</string>
|
||||
<string name="dateformat_time">Heure</string>
|
||||
<string name="dateformat_date_time"><![CDATA[Date et heure]]></string>
|
||||
<string name="mi2_prefs_goal_notification">Notification d\'objectif</string>
|
||||
<string name="mi2_prefs_goal_notification_summary">Le bracelet vibrera lorsque l\'objectif de pas quotidien sera atteint</string>
|
||||
<string name="mi2_prefs_display_items">Éléments à afficher</string>
|
||||
<string name="mi2_prefs_display_items_summary">Choisissez les éléments à afficher sur le bracelet</string>
|
||||
<string name="mi2_prefs_activate_display_on_lift">Allumer l\'écran lors d\'un mouvement</string>
|
||||
<string name="mi2_prefs_rotate_wrist_to_switch_info">Tournez votre poignet pour changer d\'élément</string>
|
||||
<string name="mi2_prefs_do_not_disturb">Ne Pas Déranger</string>
|
||||
<string name="mi2_prefs_do_not_disturb_summary">Le bracelet ne recevra pas de notifications si activé</string>
|
||||
<string name="mi2_prefs_inactivity_warnings">Alertes d\'inactivité</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_summary">Le bracelet vibrera si vous n\'êtes pas actif pendant un moment</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_threshold">Seuil d\'inactivité (en minutes)</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_dnd_summary">Désactiver les alertes d\'inactivité pendant un intervalle de temps</string>
|
||||
<string name="mi2_prefs_do_not_disturb_start">Heure de début</string>
|
||||
<string name="mi2_prefs_do_not_disturb_end">Heure de fin</string>
|
||||
<string name="FetchActivityOperation_about_to_transfer_since">Sur le point de transférer des données depuis %1$s</string>
|
||||
<string name="waiting_for_reconnect">en attente de reconnexion</string>
|
||||
<string name="activity_prefs_about_you">À propos de vous</string>
|
||||
@ -373,6 +389,9 @@ NOTE: la base de données sera bien évidement plus grande !</string>
|
||||
<string name="mi2_enable_text_notifications">Notifications textuelles</string>
|
||||
<string name="mi2_enable_text_notifications_summary"><![CDATA[Requis: micrologiciel version 1.0.1.28 ou plus, fichier Mili_pro.ft* installé.]]></string>
|
||||
<string name="off">off</string>
|
||||
<string name="mi2_dnd_off">Off</string>
|
||||
<string name="mi2_dnd_automatic">Automatique (détection de sommeil)</string>
|
||||
<string name="mi2_dnd_scheduled">Programmé (intervalle de temps)</string>
|
||||
<string name="discovery_attempting_to_pair">Tentative d\'appairage avec %1$s</string>
|
||||
<string name="discovery_bonding_failed_immediately">Le lien avec %1$s a échoué instantanément</string>
|
||||
<string name="discovery_trying_to_connect_to">Tentative de connexion à: %1$s</string>
|
||||
|
@ -13,6 +13,12 @@
|
||||
<string name="controlcenter_delete_device">Eszköz törlése</string>
|
||||
<string name="controlcenter_delete_device_name">%1$s törlése</string>
|
||||
<string name="controlcenter_delete_device_dialogmessage">Az eszköz és az összes hozzátartozó adat törlésre kerül!</string>
|
||||
<string name="controlcenter_navigation_drawer_open">Navigáció megnyitása</string>
|
||||
<string name="controlcenter_navigation_drawer_close">Navigáció bezárása</string>
|
||||
<string name="controlcenter_snackbar_need_longpress">Nyomd hosszan a szétkapcsoláshoz</string>
|
||||
<string name="controlcenter_snackbar_disconnecting">Szétkapcsolódás</string>
|
||||
<string name="controlcenter_snackbar_connecting">Kapcsolódás</string>
|
||||
<string name="controlcenter_snackbar_requested_screenshot">Képernyőkép készítése az eszközről</string>
|
||||
<string name="title_activity_debug">Hibakeresés</string>
|
||||
<!--Strings related to AppManager-->
|
||||
<string name="title_activity_appmanager">Alkalmazáskezelő</string>
|
||||
@ -27,6 +33,9 @@
|
||||
<string name="appmanager_health_deactivate">Deaktiválás</string>
|
||||
<string name="appmanager_hrm_activate">Pulzusmérő aktiválása</string>
|
||||
<string name="appmanager_hrm_deactivate">Pulzusmérő deaktiválása</string>
|
||||
<string name="appmanager_weather_activate">Rendszer időjárás alkalmazás aktiválása</string>
|
||||
<string name="appmanager_weather_deactivate">Rendszer időjárás alkalmazás deaktiválása</string>
|
||||
<string name="appmanager_weather_install_provider">Időjárás értesítő alkalmazás telepítése</string>
|
||||
<string name="app_configure">Beállítás</string>
|
||||
<string name="app_move_to_top">A tetejére mozgatás</string>
|
||||
<!--Strings related to AppBlacklist-->
|
||||
@ -42,6 +51,7 @@
|
||||
<string name="title_activity_settings">Beállítások</string>
|
||||
<string name="pref_header_general">Általános beállítások</string>
|
||||
<string name="pref_title_general_autoconnectonbluetooth">Kapcsolódjon az eszközhöz a Bluetooth bekapcsolásakor</string>
|
||||
<string name="pref_title_general_autostartonboot">Automatikus indulás</string>
|
||||
<string name="pref_title_general_autocreonnect">Újracsatlakozás automatikusan</string>
|
||||
<string name="pref_title_audo_player">Preferált zenelejátszó</string>
|
||||
<string name="pref_default">Alapértelmezett</string>
|
||||
@ -52,6 +62,9 @@
|
||||
<string name="pref_theme_light">Világos</string>
|
||||
<string name="pref_theme_dark">Sötét</string>
|
||||
<string name="pref_title_language">Nyelv</string>
|
||||
<string name="pref_title_minimize_priority">Gadgetbridge értesítések elrejtése</string>
|
||||
<string name="pref_summary_minimize_priority_off">Az ikon és az értesítés mutatása a záróképernyőn</string>
|
||||
<string name="pref_summary_minimize_priority_on">Az ikon és az értesítés elrejtése a záróképernyőn</string>
|
||||
<string name="pref_header_notifications">Értesítések</string>
|
||||
<string name="pref_title_notifications_repetitions">Ismétlések</string>
|
||||
<string name="pref_title_notifications_call">Telefonhívások</string>
|
||||
@ -62,9 +75,17 @@
|
||||
<string name="pref_title_whenscreenon">… és amikor a kijelző be van kapcsolva</string>
|
||||
<string name="pref_title_notification_filter">Ne zavarj mód</string>
|
||||
<string name="pref_summary_notification_filter">Értesítések tiltása a Ne zavarj üzemmód használatakor.</string>
|
||||
<string name="pref_title_transliteration">Transzliteráció</string>
|
||||
<string name="pref_summary_transliteration">Engedélyezd ezt, ha a nyelvedet nem támogatja a betűtípus</string>
|
||||
<string name="always">mindig</string>
|
||||
<string name="when_screen_off">amikor a kijelző ki van kapcsolva</string>
|
||||
<string name="never">soha</string>
|
||||
<string name="pref_header_privacy">Adatvédelem</string>
|
||||
<string name="pref_title_call_privacy_mode">Hívás Adatvédelmi Mód</string>
|
||||
<string name="pref_call_privacy_mode_off">Név és szám mutatása</string>
|
||||
<string name="pref_call_privacy_mode_name">Név rejtése, de a szám mutatása</string>
|
||||
<string name="pref_call_privacy_mode_number">Szám rejtése, de a név mutatása</string>
|
||||
<string name="pref_call_privacy_mode_complete">Név és szám rejtése</string>
|
||||
<string name="pref_blacklist">Tiltott alkalmazások</string>
|
||||
<string name="pref_header_cannned_messages">Előre beállított üzenetek</string>
|
||||
<string name="pref_title_canned_replies">Előre megírt válaszok</string>
|
||||
@ -79,10 +100,21 @@
|
||||
<string name="pref_title_pebble_sync_health">Pebble Health szinkronizálása</string>
|
||||
<string name="pref_title_pebble_sync_misfit">Misfit szinkronizálás</string>
|
||||
<string name="pref_title_pebble_sync_morpheuz">Morpheuz szinkronizálás</string>
|
||||
<string name="pref_title_enable_outgoing_call">Kimenő hívások támogatása</string>
|
||||
<string name="pref_summary_enable_outgoing_call">Ennek a letiltásával a kimenő hívás rezgését is letiltja a Pebble 2/LE eszközön</string>
|
||||
<string name="pref_title_enable_pebblekit">Harmadik féltől származó Android alkalmazások hozzáférésének engedélyezése</string>
|
||||
<string name="pref_summary_enable_pebblekit">Kísérleti támogatás engedélyezése az Android alkalmazások számára a PebbleKit használatára</string>
|
||||
<string name="pref_header_pebble_timeline">Pebble Idővonal</string>
|
||||
<string name="pref_title_sunrise_sunset">Napkelte és napnyugta</string>
|
||||
<string name="pref_summary_sunrise_sunset">A napkelte és napnyugta idejének küldése a Pebble idővonalra a hely és idő alapján</string>
|
||||
<string name="pref_title_enable_calendar_sync">Naptár szinkronizálása</string>
|
||||
<string name="pref_summary_enable_calendar_sync">Naptárbejegyzések küldése az idővonalra</string>
|
||||
<string name="pref_title_autoremove_notifications">Automatikusan törölje az eltávolított értesítéseket</string>
|
||||
<string name="pref_summary_autoremove_notifications">Az értesítések automatikus eltávolítsa, ha az Androidos eszközön eltávolítottad</string>
|
||||
<string name="pref_title_pebble_privacy_mode">Adatvédelmi mód</string>
|
||||
<string name="pref_pebble_privacy_mode_off">Normál értesítések</string>
|
||||
<string name="pref_pebble_privacy_mode_content">Az értesítés eltolása képernyőn</string>
|
||||
<string name="pref_pebble_privacy_mode_complete">Csak az értesítési ikon mutatása</string>
|
||||
<string name="pref_header_location">Pozició</string>
|
||||
<string name="pref_title_location_aquire">Pozició meghatározása</string>
|
||||
<string name="pref_title_location_latitude">Szélesség</string>
|
||||
@ -97,9 +129,18 @@
|
||||
<string name="pref_summary_pebble_forceuntested">Nem tesztelt funkciók engedélyezése. CSAK AKKOR ENGEDÉLYEZD, HA TUDOD MIT CSINÁLSZ!</string>
|
||||
<string name="pref_title_pebble_forcele">Mindig preferálja a BLE-t</string>
|
||||
<string name="pref_summary_pebble_forcele">A kísérleti LE támogatás használata minden Pebble-hez a klasszikus BT helyett, párosítani kell hozzá egy \"Pebble LE\"-t, miután a nem-LE-t párosítva lett egyszer.</string>
|
||||
<string name="pref_title_pebble_mtu_limit">Pebble 2/LE GATT MTU limit</string>
|
||||
<string name="pref_summary_pebble_mtu_limit">Ha a Pebble 2/Pebble LE nem működik elvártan, próbáld beállítani az MTU limitet (az érvényes tartomány: 20-512)</string>
|
||||
<string name="pref_title_pebble_enable_applogs">Óraalkalmazás-naplózás engedélyezése</string>
|
||||
<string name="pref_summary_pebble_enable_applogs">Az óra-alkalmazások naplóit a Gadgetbridge is naplózni fogja (újracsatlakozást igényel)</string>
|
||||
<string name="pref_title_pebble_always_ack_pebblekit">Korai ACK PebbleKit</string>
|
||||
<string name="pref_summary_pebble_always_ack_pebblekit">Minden esetben azonnal felismeri az üzeneteket, amelyeket külső harmadik alkalmazásoknak küldenek.</string>
|
||||
<string name="pref_title_pebble_reconnect_attempts">Újracsatlakozási kísérletek száma</string>
|
||||
<string name="pref_title_unit_system">Egységek</string>
|
||||
<string name="pref_title_timeformat">Időformátum</string>
|
||||
<string name="pref_title_screentime">Kijelző bekapcsolvatartásának ideje</string>
|
||||
<string name="prefs_title_all_day_heart_rate">Egésznapos pulzusmérés</string>
|
||||
<string name="preferences_hplus_settings">HPlus/Makibes Beállítások</string>
|
||||
<string name="not_connected">nincs csatlakozva</string>
|
||||
<string name="connecting">csatlakozás</string>
|
||||
<string name="connected">csatlakoztatva</string>
|
||||
@ -150,6 +191,7 @@
|
||||
<string name="miband_pairing_using_dummy_userdata">Nem helyes felhasználói adatok vannak megadva, alapértelmezett adatokat fogok használni.</string>
|
||||
<string name="miband_pairing_tap_hint">Amikor vibrálni kezd a Mi Band-ed, érintsd meg párszor egymás után.</string>
|
||||
<string name="appinstaller_install">Telepítés</string>
|
||||
<string name="discovery_connected_devices_hint">Tedd láthatóvá a készüléked. A jelenleg csatlakoztatott készülékek nem fognak láthatóként megjelenni. Aktiváld a helymeghatározást (Pl: GPS) az Android 6 készülékeden. Kapcsold ki a Privacy Guard-ban a Gadgetbridge-et (Ha van Privacy Guard beállításod), különben az alkalmazás kifagyhat, illetve újraindíthatja a készükéked. Ha nem található az eszköz pár percen bellül, próbáld újraindítani a telefonod.</string>
|
||||
<string name="discovery_note">Megjegyzés:</string>
|
||||
<string name="candidate_item_device_image">Eszköz kép</string>
|
||||
<string name="miband_prefs_alias">Név/Alias</string>
|
||||
@ -178,6 +220,9 @@
|
||||
<string name="pref_screen_notification_profile_generic_chat">Csevegés</string>
|
||||
<string name="pref_screen_notification_profile_generic_navigation">Navigáció</string>
|
||||
<string name="pref_screen_notification_profile_generic_social">Közösségi háló</string>
|
||||
<string name="stats_title">Sebesség Zónák</string>
|
||||
<string name="stats_x_axis_label">Összes perc</string>
|
||||
<string name="stats_y_axis_label">Percenkénti lépések</string>
|
||||
<string name="control_center_find_lost_device">Elveszett eszköz keresése</string>
|
||||
<string name="control_center_cancel_to_stop_vibration">A vibrálás leállításához: Mégse.</string>
|
||||
<string name="title_activity_charts">Aktivitásod</string>
|
||||
@ -209,6 +254,8 @@
|
||||
<string name="notif_battery_low_bigtext_last_charge_time">Utoljára töltve: %s \n</string>
|
||||
<string name="notif_battery_low_bigtext_number_of_charges">Töltések száma: %s</string>
|
||||
<string name="sleepchart_your_sleep">Az alvásod</string>
|
||||
<string name="weeksleepchart_sleep_a_week">Heti alvás</string>
|
||||
<string name="weeksleepchart_today_sleep_description">Mai alvás, cél: %1$s</string>
|
||||
<string name="weekstepschart_steps_a_week">Lépések a héten</string>
|
||||
<string name="activity_sleepchart_activity_and_sleep">Aktivitásod és alvásod</string>
|
||||
<string name="updating_firmware">Firmware frissítése…</string>
|
||||
@ -227,6 +274,11 @@
|
||||
<string name="updatefirmwareoperation_update_complete_rebooting">A Firmware telepítés kész, az eszköz újraindítása…</string>
|
||||
<string name="updatefirmwareoperation_write_failed">Firmware írási probléma</string>
|
||||
<string name="chart_steps">Lépések</string>
|
||||
<string name="calories">Kalória</string>
|
||||
<string name="distance">Távolság</string>
|
||||
<string name="clock">Óra</string>
|
||||
<string name="heart_rate">Pulzus</string>
|
||||
<string name="battery">Akkumulátor</string>
|
||||
<string name="liveactivity_live_activity">Aktuális aktivitás</string>
|
||||
<string name="weeksteps_today_steps_description">Lépések ma, cél: %1$s</string>
|
||||
<string name="pref_title_dont_ack_transfer">Ne erősítse meg az aktivitásadatok átvitelét</string>
|
||||
@ -254,7 +306,20 @@
|
||||
<string name="miband2_prefs_dateformat">Mi2: dátumformátum</string>
|
||||
<string name="dateformat_time">Idő</string>
|
||||
<string name="dateformat_date_time"><![CDATA[Time & Date]]></string>
|
||||
<string name="mi2_prefs_goal_notification">Cél értesítés</string>
|
||||
<string name="mi2_prefs_goal_notification_summary">A karkötő vibrálni fog amikor elérted a napi lépés célod</string>
|
||||
<string name="mi2_prefs_display_items">Megjelenítendő elemek</string>
|
||||
<string name="mi2_prefs_display_items_summary">Válaszd ki milyen elemek jelenjenek meg a karkötő kijelzőjén</string>
|
||||
<string name="mi2_prefs_activate_display_on_lift">Kijelző aktiválása felemeléskor</string>
|
||||
<string name="mi2_prefs_rotate_wrist_to_switch_info">Forgasd el a karkötőt információ váltáshoz</string>
|
||||
<string name="mi2_prefs_do_not_disturb">Ne zavarj mód</string>
|
||||
<string name="mi2_prefs_do_not_disturb_summary">A karkötő nem fog értesítéseket jelezni amíg ez aktív</string>
|
||||
<string name="mi2_prefs_inactivity_warnings">Inaktivitás figyelmeztetés</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_summary">A karkötő rezegni fog amikor inaktív vagy már egy ideje</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_threshold">Inaktivitás határ (percben)</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_dnd_summary">Inaktivitás figyelmeztetések tiltása adott időre</string>
|
||||
<string name="mi2_prefs_do_not_disturb_start">Kezdete</string>
|
||||
<string name="mi2_prefs_do_not_disturb_end">Vége</string>
|
||||
<string name="FetchActivityOperation_about_to_transfer_since">Adatok átvitele %1$s óta</string>
|
||||
<string name="waiting_for_reconnect">várakozás az újracsatlakozásra</string>
|
||||
<string name="activity_prefs_about_you">Rólad</string>
|
||||
@ -281,13 +346,16 @@
|
||||
<string name="action_db_management">Adatbáziskezelés</string>
|
||||
<string name="title_activity_db_management">Adatbáziskezelés</string>
|
||||
<string name="activity_db_management_import_export_explanation">Az adatbázisművelet ezt a helyet fogja használni. Ez a hely elérhető másik Android-alkalmazások és a számítógép számára. Itt keresd az exportált adatbázist is, illetve ide rakd az importálni kívánt adatbázist is.</string>
|
||||
<string name="activity_db_management_merge_old_title">Hagyaték adatbázis törlése</string>
|
||||
<string name="dbmanagementactivvity_cannot_access_export_path">Nem elérhető az elérési út. Kérlek vedd fel a kapcsolatot a fejlesztőkkel.</string>
|
||||
<string name="dbmanagementactivity_exported_to">%1$s exportálva</string>
|
||||
<string name="dbmanagementactivity_error_exporting_db">Hiba az exportálás során: %1$s</string>
|
||||
<string name="dbmanagementactivity_error_exporting_shared">Hiba a beállítások exportálása során: %1$s</string>
|
||||
<string name="dbmanagementactivity_import_data_title">Adatok importálása?</string>
|
||||
<string name="dbmanagementactivity_overwrite_database_confirmation">Biztosan felül akarod írni a jelenlegi adatbázist? Az összes jelenlegi aktivitás adatod (ha van) elfog veszni.</string>
|
||||
<string name="dbmanagementactivity_import_successful">Sikeres importálás.</string>
|
||||
<string name="dbmanagementactivity_error_importing_db">Hiba az importálás során: %1$s</string>
|
||||
<string name="dbmanagementactivity_error_importing_shared">Hiba a beállítások importálása során: %1$s</string>
|
||||
<string name="dbmanagementactivity_delete_activity_data_title">Törlöd az aktivitásadatokat?</string>
|
||||
<string name="dbmanagementactivity_really_delete_entire_db">Tényleg törölni akarod az egész adatbázist? Minden aktivitásadatod és rólad tárolt információ elfog veszni.</string>
|
||||
<string name="dbmanagementactivity_database_successfully_deleted">Az adatok sikeresen törölve lettek.</string>
|
||||
@ -304,127 +372,31 @@
|
||||
<!--Strings related to Pebble Pairing Activity-->
|
||||
<string name="title_activity_pebble_pairing">Pebble párosítása</string>
|
||||
<string name="pebble_pairing_hint">Egy párosítási párbeszédablaknak kéne megjelennie az Android eszközödön. Ha nem látod, nézd meg az értesítési sávban és fogadd el a párosítási kérelmet. Utána fogadd ela kérelmet a Pebble-n.</string>
|
||||
<string name="StringUtils_sender">" (%1$s)"</string>
|
||||
<string name="activity_db_management_merge_old_title">Hagyaték adatbázis törlése</string>
|
||||
<string name="appmanager_weather_activate">Rendszer időjárás alkalmazás aktiválása</string>
|
||||
<string name="appmanager_weather_deactivate">Rendszer időjárás alkalmazás deaktiválása</string>
|
||||
<string name="appmanager_weather_install_provider">Időjárás értesítő alkalmazás telepítése</string>
|
||||
<string name="battery">Akkumulátor</string>
|
||||
<string name="battery_full">Akkumulátor feltöltve</string>
|
||||
<string name="battery_low">Akkumulátor töltöttség alacsony</string>
|
||||
<string name="battery_medium">Akkumulátor töltöttség közepes</string>
|
||||
<string name="battery_not_charging">Akkumulátor nem töltődik</string>
|
||||
<string name="clock">Óra</string>
|
||||
<string name="calories">Kalória</string>
|
||||
<string name="controlcenter_navigation_drawer_close">Navigáció bezárása</string>
|
||||
<string name="controlcenter_navigation_drawer_open">Navigáció megnyitása</string>
|
||||
<string name="controlcenter_snackbar_connecting">Kapcsolódás</string>
|
||||
<string name="controlcenter_snackbar_disconnecting">Szétkapcsolódás</string>
|
||||
<string name="controlcenter_snackbar_need_longpress">Nyomd hosszan a szétkapcsoláshoz</string>
|
||||
<string name="controlcenter_snackbar_requested_screenshot">Képernyőkép készítése az eszközről</string>
|
||||
<string name="dbmanagementactivity_error_importing_shared">Hiba a beállítások importálása során: %1$s</string>
|
||||
<string name="dbmanagementactivity_error_exporting_shared">Hiba a beállítások exportálása során: %1$s</string>
|
||||
<string name="discovery_attempting_to_pair">Csatlakozási kísérlet az eszközhöz: %1$s</string>
|
||||
<string name="discovery_bonding_failed_immediately">A csatlakozás azonnal megszkadt: %1$s</string>
|
||||
<string name="off">ki</string>
|
||||
<string name="p_waterdrop">vízcsepp</string>
|
||||
<string name="p_unit_metric">metrikus</string>
|
||||
<string name="discovery_connected_devices_hint">Tedd láthatóvá a készüléked. A jelenleg csatlakoztatott készülékek nem fognak láthatóként megjelenni. Aktiváld a helymeghatározást (Pl: GPS) az Android 6 készülékeden. Kapcsold ki a Privacy Guard-ban a Gadgetbridge-et (Ha van Privacy Guard beállításod), különben az alkalmazás kifagyhat, illetve újraindíthatja a készükéked. Ha nem található az eszköz pár percen bellül, próbáld újraindítani a telefonod.</string>
|
||||
<string name="discovery_dont_pair">Nem párosított</string>
|
||||
<string name="discovery_enable_bluetooth">Engedélyezd a Bluetooth-ot az eszközök felderítéséhez.</string>
|
||||
<string name="discovery_pair_question">Válaszd ki a Párosítást az eszköz párosításához. Ha ez nem sikerül, próbáld meg újra párosítás nélkül.</string>
|
||||
<string name="discovery_pair_title">Párosítsam a(z) %1$s?</string>
|
||||
<string name="discovery_successfully_bonded">Sikeres párosítás: %1$s.</string>
|
||||
<string name="discovery_trying_to_connect_to">Csatlakozási kísérlet: %1$s</string>
|
||||
<string name="discovery_yes_pair">Párosítás</string>
|
||||
<string name="distance">Távolság</string>
|
||||
<string name="find_device_you_found_it">Megtaláltad!</string>
|
||||
<string name="heart_rate">Pulzus</string>
|
||||
<string name="mi2_dnd_automatic">Automatikus (alvás érzékelés)</string>
|
||||
<string name="mi2_dnd_off">Ki</string>
|
||||
<string name="mi2_dnd_scheduled">Időzített (intervallumú)</string>
|
||||
<string name="mi2_enable_text_notifications">Szöveges értesítés</string>
|
||||
<string name="mi2_enable_text_notifications_summary"><![CDATA[Needs firmware >= 1.0.1.28 és Mili_pro.ft* telepítve.]]></string>
|
||||
<string name="mi2_fw_installhandler_fw53_hint">Ezt a verziót kell telepítened %1$s firmware telepítés előtt!</string>
|
||||
<string name="mi2_prefs_display_items">Kijelző elemek</string>
|
||||
<string name="mi2_prefs_display_items_summary">Válaszd ki a band-en megjelenő elemeket</string>
|
||||
<string name="mi2_prefs_do_not_disturb">Ne zavarj</string>
|
||||
<string name="mi2_prefs_do_not_disturb_end">Végidő</string>
|
||||
<string name="mi2_prefs_do_not_disturb_start">Kezdő idő</string>
|
||||
<string name="mi2_prefs_do_not_disturb_summary">A band nem fog értesítéseket kapni, amíg aktiv</string>
|
||||
<string name="mi2_prefs_goal_notification">Cél értesítés</string>
|
||||
<string name="mi2_prefs_goal_notification_summary">A band rezegni fog, amikor elérted a napi lépés célod</string>
|
||||
<string name="mi2_prefs_inactivity_warnings">Inaktivitás figyelmeztetés</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_dnd_summary">Inaktivitás figyelmezetetések tiltása ennyi időre</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_summary">A band rezegni fog, amikor egy ideje már inaktív vagy</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_threshold">Inaktivitási határérték (percben)</string>
|
||||
<string name="mi2_prefs_rotate_wrist_to_switch_info">Forgasd a csuklód az információ váltáshoz</string>
|
||||
<string name="miband2_prefs_timeformat">Mi2: Időformátum</string>
|
||||
<string name="p_alarm_clock"></string>
|
||||
<string name="p_automatic">automatikus</string>
|
||||
<string name="p_battery">akkumulátor</string>
|
||||
<string name="p_call_privacy_mode_complete">kész</string>
|
||||
<string name="p_call_privacy_mode_name">név</string>
|
||||
<string name="p_call_privacy_mode_off">ki</string>
|
||||
<string name="p_calories">kalória</string>
|
||||
<string name="p_clock">óra</string>
|
||||
<string name="p_distance">távolság</string>
|
||||
<string name="p_long">hosszú</string>
|
||||
<string name="p_medium">közepes</string>
|
||||
<string name="p_off">ki</string>
|
||||
<string name="p_pebble_privacy_mode_complete">kész</string>
|
||||
<string name="p_pebble_privacy_mode_content">tartalom</string>
|
||||
<string name="p_pebble_privacy_mode_off">ki</string>
|
||||
<string name="p_ring"></string>
|
||||
<string name="p_scheduled">időzített</string>
|
||||
<string name="p_short">rövid</string>
|
||||
<string name="p_steps">lépések</string>
|
||||
<string name="p_timeformat_24h">24ó</string>
|
||||
<string name="p_timeformat_am_pm">am/pm</string>
|
||||
<string name="p_unit_imperial">imperial</string>
|
||||
<string name="pref_call_privacy_mode_complete">Név és szám rejtése</string>
|
||||
<string name="pref_call_privacy_mode_name">Név rejtése, de a szám mutatása</string>
|
||||
<string name="pref_call_privacy_mode_number">Szám rejtése, de a név mutatása</string>
|
||||
<string name="pref_call_privacy_mode_off">Név és szám mutatása</string>
|
||||
<string name="pref_header_pebble_timeline">Pebble Idővonal</string>
|
||||
<string name="pref_header_privacy">Adatvédelem</string>
|
||||
<string name="pref_pebble_privacy_mode_complete">Csak az értesítési ikon mutatása</string>
|
||||
<string name="pref_pebble_privacy_mode_content">Az értesítés eltolása képernyőn</string>
|
||||
<string name="pref_pebble_privacy_mode_off">Normál értesítések</string>
|
||||
<string name="pref_screen_notification_profile_alarm_clock">Ébresztőóra</string>
|
||||
<string name="pref_summary_autoremove_notifications">Az értesítések automatikus eltávolítsa, ha az Androidos eszközön eltávolítottad</string>
|
||||
<string name="pref_summary_enable_calendar_sync">Naptárbejegyzések küldése az idővonalra</string>
|
||||
<string name="pref_summary_enable_outgoing_call">Ennek a letiltásával a kimenő hívás rezgését is letiltja a Pebble 2/LE eszközön</string>
|
||||
<string name="pref_summary_minimize_priority_off">Az ikon és az értesítés mutatása a záróképernyőn</string>
|
||||
<string name="pref_summary_minimize_priority_on">Az ikon és az értesítés elrejtése a záróképernyőn</string>
|
||||
<string name="pref_summary_pebble_always_ack_pebblekit">Minden esetben azonnal felismeri az üzeneteket, amelyeket külső harmadik alkalmazásoknak küldenek.</string>
|
||||
<string name="pref_summary_pebble_mtu_limit">Ha a Pebble 2/Pebble LE nem működik elvártan, próbáld beállítani az MTU limitet (az érvényes tartomány: 20-512)</string>
|
||||
<string name="pref_summary_setup_bt_pairing">Kapcsold ki ezt, ha gondod van a csatlakozással</string>
|
||||
<string name="pref_summary_transliteration">Engedélyezd ezt, ha az eszközöd nem támogatja a nyelvedhez tartozó betűtípust (Jelenleg ez csak a Ciril)</string>
|
||||
<string name="pref_title_autoremove_notifications">Automatikusan törölje az eltávolított értesítéseket</string>
|
||||
<string name="pref_title_call_privacy_mode">Hívás Adatvédelmi Mód</string>
|
||||
<string name="pref_title_enable_calendar_sync">Naptár szinkronizálása</string>
|
||||
<string name="pref_title_enable_outgoing_call">Kimenő hívások támogatása</string>
|
||||
<string name="pref_title_general_autostartonboot">Automatikus indulás</string>
|
||||
<string name="pref_title_minimize_priority">Gadgetbridge értesítések elrejtése</string>
|
||||
<string name="pref_title_pebble_always_ack_pebblekit">Korai ACK PebbleKit</string>
|
||||
<string name="pref_title_pebble_mtu_limit">Pebble 2/LE GATT MTU limit</string>
|
||||
<string name="pref_title_pebble_privacy_mode">Adatvédelmi mód</string>
|
||||
<string name="weather_notification_label">Bizonyosodj meg róla, hogy a skin támogatja-e az Időjárás értesítések megjelenítését. Nincs szükség konfigurációra. A Pebble app management-ben tudod engedélyezni a rendszer időjárás alkalmazását. Azok a skinek amik támogatják az időjárás értesítésket, automatikusan megfogják jeleníteni azt.</string>
|
||||
<string name="pref_title_setup_bt_pairing">Bluetooth párosítás engedélyezése</string>
|
||||
<string name="pref_title_timeformat">Időformátum</string>
|
||||
<string name="pref_title_transliteration">Transzliteráció</string>
|
||||
<string name="pref_title_unit_system">Egységek</string>
|
||||
<string name="preferences_hplus_settings">HPlus/Makibes Beállítások</string>
|
||||
<string name="prefs_title_all_day_heart_rate">Egésznapos pulzusmérés</string>
|
||||
<string name="stats_title">Sebesség Zónák</string>
|
||||
<string name="stats_x_axis_label">Összes perc</string>
|
||||
<string name="stats_y_axis_label">Percenkénti lépések</string>
|
||||
<string name="pref_summary_setup_bt_pairing">Kapcsold ki ezt, ha gondod van a csatlakozással</string>
|
||||
<string name="unit_metric">Metrikus</string>
|
||||
<string name="unit_imperial">Imperiál</string>
|
||||
<string name="timeformat_24h">24H</string>
|
||||
<string name="timeformat_am_pm">AM/PM</string>
|
||||
<string name="unit_imperial">Imperiál</string>
|
||||
<string name="unit_metric">Metrikus</string>
|
||||
<string name="weeksleepchart_sleep_a_week">Heti alvás</string>
|
||||
<string name="weeksleepchart_today_sleep_description">Mai alvás, cél: %1$s</string>
|
||||
<string name="weather_notification_label">Bizonyosodj meg róla, hogy a skin támogatja-e az Időjárás értesítések megjelenítését. Nincs szükség konfigurációra. A Pebble app management-ben tudod engedélyezni a rendszer időjárás alkalmazását. Azok a skinek amik támogatják az időjárás értesítésket, automatikusan megfogják jeleníteni azt.</string>
|
||||
<string name="pref_title_screentime">Kijelző bekapcsolvatartásának ideje</string>
|
||||
<string name="pref_screen_notification_profile_alarm_clock">Ébresztőóra</string>
|
||||
<string name="StringUtils_sender"> (%1$s)</string>
|
||||
<string name="find_device_you_found_it">Megtaláltad!</string>
|
||||
<string name="miband2_prefs_timeformat">Mi2: Időformátum</string>
|
||||
<string name="mi2_fw_installhandler_fw53_hint">Ezt a verziót kell telepítened %1$s firmware telepítés előtt!</string>
|
||||
<string name="mi2_enable_text_notifications">Szöveges értesítés</string>
|
||||
<string name="mi2_enable_text_notifications_summary"><![CDATA[Needs firmware >= 1.0.1.28 és Mili_pro.ft* telepítve.]]></string>
|
||||
<string name="off">ki</string>
|
||||
<string name="mi2_dnd_off">Ki</string>
|
||||
<string name="mi2_dnd_automatic">Automatikus (alvás érzékelés)</string>
|
||||
<string name="mi2_dnd_scheduled">Időzített (idő intervallum)</string>
|
||||
<string name="discovery_attempting_to_pair">Csatlakozási kísérlet az eszközhöz: %1$s</string>
|
||||
<string name="discovery_bonding_failed_immediately">A csatlakozás azonnal megszkadt: %1$s</string>
|
||||
<string name="discovery_trying_to_connect_to">Csatlakozási kísérlet: %1$s</string>
|
||||
<string name="discovery_enable_bluetooth">Engedélyezd a Bluetooth-ot az eszközök felderítéséhez.</string>
|
||||
<string name="discovery_successfully_bonded">Sikeres párosítás: %1$s.</string>
|
||||
<string name="discovery_pair_title">Párosítsam a(z) %1$s?</string>
|
||||
<string name="discovery_pair_question">Válaszd ki a Párosítást az eszköz párosításához. Ha ez nem sikerül, próbáld meg újra párosítás nélkül.</string>
|
||||
<string name="discovery_yes_pair">Párosítás</string>
|
||||
<string name="discovery_dont_pair">Nem párosított</string>
|
||||
</resources>
|
||||
|
@ -76,7 +76,7 @@
|
||||
<string name="pref_title_notification_filter">サイレント</string>
|
||||
<string name="pref_summary_notification_filter">サイレントモードに基づいて、送信される不要な通知を停止します。</string>
|
||||
<string name="pref_title_transliteration">音訳</string>
|
||||
<string name="pref_summary_transliteration">デバイスでお使いの言語のフォントがサポートされていない場合に、これを有効にしてください (現在はキリル文字のみ)</string>
|
||||
<string name="pref_summary_transliteration">お使いのデバイスがあなたの言語のフォントをサポートしていない場合、これを有効にしてください</string>
|
||||
<string name="always">いつも</string>
|
||||
<string name="when_screen_off">スクリーンがオフのとき</string>
|
||||
<string name="never">なし</string>
|
||||
@ -276,6 +276,9 @@
|
||||
<string name="chart_steps">歩数</string>
|
||||
<string name="calories">カロリー</string>
|
||||
<string name="distance">距離</string>
|
||||
<string name="clock">時計</string>
|
||||
<string name="heart_rate">心拍数</string>
|
||||
<string name="battery">バッテリー</string>
|
||||
<string name="liveactivity_live_activity">生活活動</string>
|
||||
<string name="weeksteps_today_steps_description">今日の歩数、目標: %1$s</string>
|
||||
<string name="pref_title_dont_ack_transfer">活動データ転送に応答しない</string>
|
||||
@ -303,7 +306,20 @@
|
||||
<string name="miband2_prefs_dateformat">Mi2: 日付形式</string>
|
||||
<string name="dateformat_time">時間</string>
|
||||
<string name="dateformat_date_time"><![CDATA[時間 & 日付]]></string>
|
||||
<string name="mi2_prefs_goal_notification">目標通知</string>
|
||||
<string name="mi2_prefs_goal_notification_summary">毎日の歩数が目標に達すると、バンドが振動します</string>
|
||||
<string name="mi2_prefs_display_items">表示アイテム</string>
|
||||
<string name="mi2_prefs_display_items_summary">バンド画面に表示されるアイテムを選択</string>
|
||||
<string name="mi2_prefs_activate_display_on_lift">持ち上げ時に表示を有効にする</string>
|
||||
<string name="mi2_prefs_rotate_wrist_to_switch_info">手首を回して情報を切り替え</string>
|
||||
<string name="mi2_prefs_do_not_disturb">サイレント</string>
|
||||
<string name="mi2_prefs_do_not_disturb_summary">アクティブな間、バンドは通知を受信しません</string>
|
||||
<string name="mi2_prefs_inactivity_warnings">非アクティブ警告</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_summary">あなたがしばらくの間アクティブでないときに、バンドが振動します</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_threshold">非アクティブしきい値 (分単位)</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_dnd_summary">その期間、非アクティブ警告を無効にします</string>
|
||||
<string name="mi2_prefs_do_not_disturb_start">開始時刻</string>
|
||||
<string name="mi2_prefs_do_not_disturb_end">終了時刻</string>
|
||||
<string name="FetchActivityOperation_about_to_transfer_since">%1$s からのデータを転送します</string>
|
||||
<string name="waiting_for_reconnect">再接続の待機中</string>
|
||||
<string name="activity_prefs_about_you">あなたについて</string>
|
||||
@ -371,6 +387,9 @@
|
||||
<string name="mi2_enable_text_notifications">テキスト通知</string>
|
||||
<string name="mi2_enable_text_notifications_summary"><![CDATA[ファームウェア >= 1.0.1.28 と Mili_pro.ft* をインストールしていることが必要です。]]></string>
|
||||
<string name="off">オフ</string>
|
||||
<string name="mi2_dnd_off">オフ</string>
|
||||
<string name="mi2_dnd_automatic">自動 (睡眠検出)</string>
|
||||
<string name="mi2_dnd_scheduled">スケジュール (期間)</string>
|
||||
<string name="discovery_attempting_to_pair">%1$s とペアを試みています</string>
|
||||
<string name="discovery_bonding_failed_immediately">%1$s との接続がすぐに失敗しました。</string>
|
||||
<string name="discovery_trying_to_connect_to">接続の試行中: %1$s</string>
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="primary_light" type="color">#ff5000</color>
|
||||
<color name="primarydark_light" type="color">#f0f03000</color>
|
||||
<color name="primary_light" type="color">#ff3d00</color>
|
||||
<color name="primarydark_light" type="color">#dd2c00</color>
|
||||
|
||||
<color name="primary_dark" type="color">#f03000</color>
|
||||
<color name="primarydark_dark" type="color">#f0f03000</color>
|
||||
<color name="primary_dark" type="color">#ff3d00</color>
|
||||
<color name="primarydark_dark" type="color">#dd2c00</color>
|
||||
|
||||
<color name="accent" type="color">#0091ea</color>
|
||||
|
||||
|
@ -46,6 +46,9 @@
|
||||
<!-- Strings related to AppBlacklist -->
|
||||
<string name="title_activity_appblacklist">Notification Blacklist</string>
|
||||
|
||||
<!-- Strings related to CalBlacklist -->
|
||||
<string name="title_activity_calblacklist">Blacklisted Calendars</string>
|
||||
|
||||
<!-- Strings related to FwAppInstaller -->
|
||||
<string name="title_activity_fw_app_insaller">FW/App installer</string>
|
||||
<string name="fw_upgrade_notice">You are about to install firmware %s instead of the one currently on your Mi Band.</string>
|
||||
@ -89,7 +92,7 @@
|
||||
<string name="pref_title_notification_filter">Do Not Disturb</string>
|
||||
<string name="pref_summary_notification_filter">Stop unwanted Notifications from being sent based on the Do Not Disturb mode.</string>
|
||||
<string name="pref_title_transliteration">Transliteration</string>
|
||||
<string name="pref_summary_transliteration">Enable this if your device has no support for your language\'s font (Currently Cyrillic only)</string>
|
||||
<string name="pref_summary_transliteration">Enable this if your device has no support for your language\'s font</string>
|
||||
|
||||
<string name="always">always</string>
|
||||
<string name="when_screen_off">when screen is off</string>
|
||||
@ -104,6 +107,7 @@
|
||||
|
||||
|
||||
<string name="pref_blacklist">Blacklist Apps</string>
|
||||
<string name="pref_blacklist_calendars">Blacklist Calendars</string>
|
||||
|
||||
<string name="pref_header_cannned_messages">Canned Messages</string>
|
||||
<string name="pref_title_canned_replies">Replies</string>
|
||||
|
@ -1,5 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<changelog>
|
||||
<release
|
||||
version="0.20.0"
|
||||
versioncode="98">
|
||||
<change>Inital Amazfit Bip support (WIP)</change>
|
||||
<change>Various theming fixes</change>
|
||||
<change>Add workaround for blacklist not properly persisting</change>
|
||||
<change>Handle resetting language to default properly</change>
|
||||
<change>Pebble: Pass booleans from Javascript Appmessage correctly</change>
|
||||
<change>Pebble: Make local configuration pages work on most recent webview implementation</change>
|
||||
<change>Pebble: Allow to blacklist calendars</change>
|
||||
<change>Add greek transliteration support</change>
|
||||
<change>Various visual improvements to charts</change>
|
||||
</release>
|
||||
<release version="0.19.4" versioncode="97">
|
||||
<change>Replace or relicense CC-NC licensed icons to satisfy F-Droid</change>
|
||||
<change>Mi Band 2: Make infos to display on the Band configurable</change>
|
||||
|
@ -208,6 +208,9 @@
|
||||
android:key="enable_calendar_sync"
|
||||
android:summary="@string/pref_summary_enable_calendar_sync"
|
||||
android:title="@string/pref_title_enable_calendar_sync" />
|
||||
<Preference
|
||||
android:key="pref_key_blacklist_calendars"
|
||||
android:title="@string/pref_blacklist_calendars" />
|
||||
<CheckBoxPreference
|
||||
android:key="send_sunrise_sunset"
|
||||
android:summary="@string/pref_summary_sunrise_sunset"
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 709 KiB |
Binary file not shown.
Before Width: | Height: | Size: 22 KiB |
Loading…
x
Reference in New Issue
Block a user