getStringList(@StringRes int keyResourceId, final SharedPreferences... pref) {
return getStringListOne(rstr(keyResourceId), gp(pref));
}
diff --git a/app/src/main/java/net/gsantner/opoc/util/ActivityUtils.java b/app/src/main/java/net/gsantner/opoc/util/ActivityUtils.java
index 23a9212d..b7d60918 100644
--- a/app/src/main/java/net/gsantner/opoc/util/ActivityUtils.java
+++ b/app/src/main/java/net/gsantner/opoc/util/ActivityUtils.java
@@ -32,6 +32,7 @@ import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.webkit.WebView;
+import android.widget.ScrollView;
@SuppressWarnings({"WeakerAccess", "unused", "SameParameterValue", "SpellCheckingInspection"})
@@ -115,18 +116,18 @@ public class ActivityUtils extends net.gsantner.opoc.util.ContextUtils {
}
public void showDialogWithHtmlTextView(@StringRes int resTitleId, String text, boolean isHtml, DialogInterface.OnDismissListener dismissedListener) {
+ ScrollView scroll = new ScrollView(_context);
AppCompatTextView textView = new AppCompatTextView(_context);
- int padding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16,
- _context.getResources().getDisplayMetrics());
- textView.setMovementMethod(new LinkMovementMethod());
- textView.setPadding(padding, 0, padding, 0);
+ int padding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16, _context.getResources().getDisplayMetrics());
+ scroll.setPadding(padding, 0, padding, 0);
+ scroll.addView(textView);
+ textView.setMovementMethod(new LinkMovementMethod());
textView.setText(isHtml ? new SpannableString(Html.fromHtml(text)) : text);
+
AlertDialog.Builder dialog = new AlertDialog.Builder(_context)
- .setPositiveButton(android.R.string.ok, null)
- .setOnDismissListener(dismissedListener)
- .setTitle(resTitleId)
- .setView(textView);
+ .setPositiveButton(android.R.string.ok, null).setOnDismissListener(dismissedListener)
+ .setTitle(resTitleId).setView(scroll);
dialog.show();
}
@@ -164,7 +165,7 @@ public class ActivityUtils extends net.gsantner.opoc.util.ContextUtils {
_activity.startActivity(goToMarket);
} catch (ActivityNotFoundException e) {
_activity.startActivity(new Intent(Intent.ACTION_VIEW,
- Uri.parse("http://play.google.com/store/apps/" + pkgId)));
+ Uri.parse("https://play.google.com/store/apps/" + pkgId)));
}
}
diff --git a/app/src/main/java/net/gsantner/opoc/util/ContextUtils.java b/app/src/main/java/net/gsantner/opoc/util/ContextUtils.java
index ed90becb..8e7fae98 100644
--- a/app/src/main/java/net/gsantner/opoc/util/ContextUtils.java
+++ b/app/src/main/java/net/gsantner/opoc/util/ContextUtils.java
@@ -15,6 +15,7 @@ import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.ActivityNotFoundException;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
@@ -37,6 +38,7 @@ import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Build;
+import android.os.SystemClock;
import android.support.annotation.ColorInt;
import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
@@ -47,6 +49,7 @@ import android.support.graphics.drawable.VectorDrawableCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.text.Html;
+import android.text.InputFilter;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
@@ -55,6 +58,9 @@ import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.View;
+import android.webkit.MimeTypeMap;
import android.widget.ImageView;
import android.widget.TextView;
@@ -67,6 +73,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Method;
+import java.text.SimpleDateFormat;
import java.util.Locale;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
@@ -235,7 +242,7 @@ public class ContextUtils {
* Get this apps package name, returns the flavor specific package name.
*/
public String getPackageIdReal() {
- return _context.getPackageName();
+ return _context.getPackageName();
}
/**
@@ -509,6 +516,17 @@ public class ContextUtils {
return dp * _context.getResources().getDisplayMetrics().density;
}
+ /**
+ * Get the private directory for the current package (usually /data/data/package.name/)
+ */
+ public String getAppDataDir() {
+ try {
+ return _context.getPackageManager().getPackageInfo(getPackageIdReal(), 0).applicationInfo.dataDir;
+ } catch (PackageManager.NameNotFoundException e) {
+ return _context.getFilesDir().getParent();
+ }
+ }
+
/**
* Request the givens paths to be scanned by MediaScanner
*
@@ -694,9 +712,13 @@ public class ContextUtils {
public void tintMenuItems(Menu menu, boolean recurse, @ColorInt int iconColor) {
for (int i = 0; i < menu.size(); i++) {
MenuItem item = menu.getItem(i);
- tintDrawable(item.getIcon(), iconColor);
- if (item.hasSubMenu() && recurse) {
- tintMenuItems(item.getSubMenu(), recurse, iconColor);
+ try {
+ tintDrawable(item.getIcon(), iconColor);
+ if (item.hasSubMenu() && recurse) {
+ tintMenuItems(item.getSubMenu(), recurse, iconColor);
+ }
+ } catch (Exception ignored) {
+ // This should not happen at all, but may in bad menu.xml configuration
}
}
}
@@ -734,4 +756,104 @@ public class ContextUtils {
}
}
}
+
+
+ public String getLocalizedDateFormat() {
+ return ((SimpleDateFormat) android.text.format.DateFormat.getDateFormat(_context)).toPattern();
+ }
+
+ public String getLocalizedTimeFormat() {
+ return ((SimpleDateFormat) android.text.format.DateFormat.getTimeFormat(_context)).toPattern();
+ }
+
+ public String getLocalizedDateTimeFormat() {
+ return getLocalizedDateFormat() + " " + getLocalizedTimeFormat();
+ }
+
+ /**
+ * A {@link InputFilter} for filenames
+ */
+ @SuppressWarnings("Convert2Lambda")
+ public static final InputFilter INPUTFILTER_FILENAME = new InputFilter() {
+ public CharSequence filter(CharSequence src, int start, int end, Spanned dest, int dstart, int dend) {
+ if (src.length() < 1) return null;
+ char last = src.charAt(src.length() - 1);
+ String illegal = "|\\?*<\":>+[]/'";
+ if (illegal.indexOf(last) > -1) return src.subSequence(0, src.length() - 1);
+ return null;
+ }
+ };
+
+ /**
+ * A simple {@link Runnable} which does a touch event on a view.
+ * This pops up e.g. the keyboard on a {@link android.widget.EditText}
+ *
+ * Example: new Handler().postDelayed(new DoTouchView(editView), 200);
+ */
+ public static class DoTouchView implements Runnable {
+ View _view;
+
+ public DoTouchView(View view) {
+ _view = view;
+ }
+
+ @Override
+ public void run() {
+ _view.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 0, 0, 0));
+ _view.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 0, 0, 0));
+ }
+ }
+
+
+ public String getMimeType(File file) {
+ return getMimeType(Uri.fromFile(file));
+ }
+
+ /**
+ * Detect MimeType of given file
+ * Android/Java's own MimeType map is very very small and detection barely works at all
+ * Hence use custom map for some file extensions
+ */
+ public String getMimeType(Uri uri) {
+ String mimeType = null;
+ if (ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) {
+ ContentResolver cr = _context.getContentResolver();
+ mimeType = cr.getType(uri);
+ } else {
+ String ext = MimeTypeMap.getFileExtensionFromUrl(uri.toString());
+ mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext.toLowerCase());
+
+ // Try to guess if the recommended methods fail
+ if (TextUtils.isEmpty(mimeType)) {
+ switch (ext) {
+ case "md":
+ case "markdown":
+ case "mkd":
+ case "mdown":
+ case "mkdn":
+ case "mdwn":
+ case "rmd":
+ mimeType = "text/markdown";
+ break;
+ case "yaml":
+ case "yml":
+ mimeType = "text/yaml";
+ break;
+ case "json":
+ mimeType = "text/json";
+ break;
+ case "txt":
+ mimeType = "text/plain";
+ break;
+ }
+ }
+ }
+
+ if (TextUtils.isEmpty(mimeType)) {
+ mimeType = "*/*";
+ }
+ return mimeType;
+ }
}
+
+
diff --git a/app/src/main/java/net/gsantner/opoc/util/ShareUtil.java b/app/src/main/java/net/gsantner/opoc/util/ShareUtil.java
index 4b4368cf..13c2589c 100644
--- a/app/src/main/java/net/gsantner/opoc/util/ShareUtil.java
+++ b/app/src/main/java/net/gsantner/opoc/util/ShareUtil.java
@@ -11,6 +11,7 @@
package net.gsantner.opoc.util;
import android.app.Activity;
+import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.ClipData;
import android.content.Context;
@@ -210,7 +211,7 @@ public class ShareUtil {
/**
* Start calendar application to add new event, with given details prefilled
*/
- public void createCalendarAppointment(@Nullable String title, @Nullable String description, @Nullable String location, @Nullable Long... startAndEndTime) {
+ public boolean createCalendarAppointment(@Nullable String title, @Nullable String description, @Nullable String location, @Nullable Long... startAndEndTime) {
Intent intent = new Intent(Intent.ACTION_INSERT).setData(CalendarContract.Events.CONTENT_URI);
if (title != null) {
intent.putExtra(CalendarContract.Events.TITLE, title);
@@ -230,7 +231,13 @@ public class ShareUtil {
intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, startAndEndTime[1]);
}
}
- _context.startActivity(intent);
+
+ try {
+ _context.startActivity(intent);
+ return true;
+ } catch (ActivityNotFoundException e) {
+ return false;
+ }
}
/**
@@ -762,4 +769,57 @@ public class ShareUtil {
}
return null;
}
+
+ /**
+ * By default Chrome Custom Tabs only uses Chrome Stable to open links
+ * There are also other packages (like Chrome Beta, Chromium, Firefox, ..)
+ * which implement the Chrome Custom Tab interface. This method changes
+ * the customtab intent to use an available compatible browser, if available.
+ */
+ public void enableChromeCustomTabsForOtherBrowsers(Intent customTabIntent) {
+ String[] checkpkgs = new String[]{
+ "com.android.chrome", "com.chrome.beta", "com.chrome.dev", "com.google.android.apps.chrome", "org.chromium.chrome",
+ "org.mozilla.fennec_fdroid", "org.mozilla.firefox", "org.mozilla.firefox_beta", "org.mozilla.fennec_aurora",
+ "org.mozilla.klar", "org.mozilla.focus",
+ };
+
+ // Get all intent handlers for web links
+ PackageManager pm = _context.getPackageManager();
+ Intent urlIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.example.com"));
+ List browsers = new ArrayList<>();
+ for (ResolveInfo ri : pm.queryIntentActivities(urlIntent, 0)) {
+ Intent i = new Intent("android.support.customtabs.action.CustomTabsService");
+ i.setPackage(ri.activityInfo.packageName);
+ if (pm.resolveService(i, 0) != null) {
+ browsers.add(ri.activityInfo.packageName);
+ }
+ }
+
+ // Check if the user has a "default browser" selected
+ ResolveInfo ri = pm.resolveActivity(urlIntent, 0);
+ String userDefaultBrowser = (ri == null) ? null : ri.activityInfo.packageName;
+
+ // Select which browser to use out of all installed customtab supporting browsers
+ String pkg = null;
+ if (browsers.isEmpty()) {
+ pkg = null;
+ } else if (browsers.size() == 1) {
+ pkg = browsers.get(0);
+ } else if (!TextUtils.isEmpty(userDefaultBrowser) && browsers.contains(userDefaultBrowser)) {
+ pkg = userDefaultBrowser;
+ } else {
+ for (String checkpkg : checkpkgs) {
+ if (browsers.contains(checkpkg)) {
+ pkg = checkpkg;
+ break;
+ }
+ }
+ if (pkg == null && !browsers.isEmpty()) {
+ pkg = browsers.get(0);
+ }
+ }
+ if (pkg != null && customTabIntent != null) {
+ customTabIntent.setPackage(pkg);
+ }
+ }
}
diff --git a/build.gradle b/build.gradle
index 937b7fc1..25e4f2b8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,37 +7,40 @@
* https://www.apache.org/licenses/LICENSE-2.0
*
#########################################################*/
-import java.text.SimpleDateFormat
-
// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
- ext.version_setup_compileSdk = 27
- ext.version_setup_minSdk = 17
- ext.version_setup_targetSdk = ext.version_setup_compileSdk
- ext.version_setup_buildTools = "27.0.3" // Specifying optional
+import java.text.SimpleDateFormat
- // https://developer.android.com/studio/releases/gradle-plugin.html
- ext.version_gradle_tools = "3.1.0"
- // https://developer.android.com/topic/libraries/support-library/revisions.html
- ext.version_library_appcompat = "27.1.1"
- // https://github.com/JakeWharton/butterknife/releases
- ext.version_library_butterknife = "8.8.1"
- // https://github.com/guardianproject/NetCipher/releases
- ext.version_library_netcipher = "2.0.0-alpha1"
- // https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-gradle-plugin#LookAtCentral
- ext.version_plugin_kotlin = "1.2.21"
- ext.enable_plugin_kotlin = false
+buildscript {
+ ext {
+ version_gradle_tools = "3.2.1"
+ version_plugin_kotlin = "1.3.11"
+ enable_plugin_kotlin = false
+
+ version_compileSdk = 28
+ version_buildTools = "28.0.3"
+ version_minSdk = 17
+
+ // https://developer.android.com/topic/libraries/support-library/
+ version_library_appcompat = "28.0.0" //androidx
+ // https://github.com/JakeWharton/butterknife/releases
+ version_library_butterknife = "8.8.1" //9.0.0-rc2
+ // https://github.com/guardianproject/NetCipher/releases
+ version_library_netcipher = "2.0.0-alpha1"
+ }
repositories {
- google()
+ maven { url 'https://maven.google.com' }
jcenter()
+ maven { url "https://jitpack.io" }
+ mavenCentral()
}
+
dependencies {
- classpath "com.android.tools.build:gradle:$version_gradle_tools"
- classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
+ classpath "com.android.tools.build:gradle:${version_gradle_tools}"
+ classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
if (project.enable_plugin_kotlin) {
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$version_plugin_kotlin"
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${version_plugin_kotlin}"
}
// NOTE: Do not place your application dependencies here; they belong
@@ -47,10 +50,10 @@ buildscript {
allprojects {
repositories {
- google()
+ maven { url 'https://maven.google.com' }
jcenter()
- mavenCentral()
maven { url "https://jitpack.io" }
+ mavenCentral()
}
tasks.matching { task -> task.name.matches('.*generate.*Resources') }.all {
@@ -99,6 +102,7 @@ ext.getGitHash = { ->
return 'unknown'
}
}
+
@SuppressWarnings(["UnnecessaryQualifiedReference", "SpellCheckingInspection", "GroovyUnusedDeclaration"])
// Returns the build date in a RFC3339 compatible format. TZ is always converted to UTC
static String getBuildDate() {
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 18a0cf95..0682df5e 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#Sun Apr 08 08:39:15 CEST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip
From b833311353179d867dff963479674ccc74f1d6c0 Mon Sep 17 00:00:00 2001
From: Gregor Santner
Date: Fri, 11 Jan 2019 02:43:53 +0100
Subject: [PATCH 09/75] Release v1.2.5
---
CHANGELOG.md | 3 +++
app/build.gradle | 4 ++--
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 70f0600b..f6049f2d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+### v1.2.5
+Make youtube links open external/in youtube app (optional)
+
### v1.2.3
**Improved:**
- More supported languages, more complete translations!
diff --git a/app/build.gradle b/app/build.gradle
index beab3f7e..e0565339 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -19,8 +19,8 @@ android {
resValue "string", "manifest_package_id", "com.github.dfa.diaspora_android"
applicationId "com.github.dfa.diaspora_android"
- versionName "1.2.3"
- versionCode 36
+ versionName "1.2.5"
+ versionCode 40
vectorDrawables.useSupportLibrary = true
}
From fb8eb6097446e89bcf6449fda14c51cabb66fe96 Mon Sep 17 00:00:00 2001
From: massimilianoLe <44651815+massimilianoLe@users.noreply.github.com>
Date: Thu, 7 Feb 2019 10:25:06 +0100
Subject: [PATCH 10/75] pullRefresh as option + Shortcut to settings
@themesettings (#226)
* pull to refresh page
* Make youtube links open external
* corrected a bit but still not able to check if app is installed
* corrected triggersync
* Added option For user to choose how to open youtube links
* removed unecessary comment
* update with dandelion
* pull refresh option+shortcut to themes
* Changes request applyed
* added name in contributors list
---
CONTRIBUTORS.md | 3 ++-
.../activity/SettingsActivity.java | 9 +++++++++
.../dfa/diaspora_android/util/AppSettings.java | 4 ++++
.../diaspora_android/util/DiasporaUrlHelper.java | 10 ++++++++++
.../dfa/diaspora_android/web/BrowserFragment.java | 14 +++++++++++---
app/src/main/res/values-af/strings.xml | 4 ++--
app/src/main/res/values-ca/strings.xml | 4 ++--
app/src/main/res/values-es/strings.xml | 4 ++--
app/src/main/res/values-gl/strings.xml | 4 ++--
app/src/main/res/values-ja/strings.xml | 4 ++--
app/src/main/res/values-pt/strings.xml | 4 ++--
app/src/main/res/values-ru/strings.xml | 4 ++--
app/src/main/res/values-sc/strings.xml | 4 ++--
app/src/main/res/values-zh-rTW/strings.xml | 4 ++--
.../main/res/values/strings-not_translatable.xml | 2 ++
app/src/main/res/values/strings.xml | 7 +++++--
app/src/main/res/xml/preferences__master.xml | 11 +++++++++--
app/src/main/res/xml/preferences__sub_themes.xml | 7 +++++++
18 files changed, 77 insertions(+), 26 deletions(-)
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 7969e4cd..2ab0dd4c 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -9,7 +9,7 @@ Where:
* Reference: E-Mail, Webpage
* Text: Information about / kind of contribution
-
+
## LIST OF CONTRIBUTORS
-->
@@ -30,3 +30,4 @@ Where:
* **[Jean Lucas](jean AT 4ray DOT co)**
~° Spanish translation
* **[asereze](https://github.com/asereze)**
~° Sardinian translation
* **[Xosé M. Lamas](http://xmgz.eu)**
~° Galician translation
+* **[massimiliano](https://framagit.org/massimiliano)**
~° Contributor
diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java
index acda2b0d..0a38744e 100644
--- a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java
+++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java
@@ -271,6 +271,8 @@ public class SettingsActivity extends ThemedActivity implements SharedPreference
@Override
public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) {
+ AppSettings settings = ((App) getActivity().getApplication()).getSettings();
+ DiasporaUrlHelper diasporaUrlHelper = new DiasporaUrlHelper(settings);
if (isAdded() && preference.hasKey()) {
String key = preference.getKey();
if (key.equals(getString(R.string.pref_key__primary_color__preference_click))) {
@@ -279,6 +281,13 @@ public class SettingsActivity extends ThemedActivity implements SharedPreference
} else if (key.equals(getString(R.string.pref_key__accent_color__preference_click))) {
showColorPickerDialog(2);
return true;
+ } else if (key.equals(getString(R.string.pref_key__manage_theme))) {
+ Intent intent = new Intent(getActivity(), MainActivity.class);
+ intent.setAction(MainActivity.ACTION_OPEN_URL);
+ intent.putExtra(MainActivity.URL_MESSAGE, diasporaUrlHelper.getThemeUrl());
+ startActivity(intent);
+ getActivity().finish();
+ return true;
}
}
return super.onPreferenceTreeClick(screen, preference);
diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java b/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java
index 8ae76fea..80c672ad 100644
--- a/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java
+++ b/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java
@@ -363,6 +363,10 @@ public class AppSettings extends SharedPreferencesPropertyBackend {
return getBool(R.string.pref_key__open_youtube_external_enabled, true);
}
+ public boolean isSwipeRefreshEnabled() {
+ return getBool(R.string.pref_key__swipe_refresh_enabled, true);
+ }
+
public String getScreenRotation() {
return getString(R.string.pref_key__screen_rotation, R.string.rotation_val_system);
}
diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/DiasporaUrlHelper.java b/app/src/main/java/com/github/dfa/diaspora_android/util/DiasporaUrlHelper.java
index a283540b..b272dac0 100644
--- a/app/src/main/java/com/github/dfa/diaspora_android/util/DiasporaUrlHelper.java
+++ b/app/src/main/java/com/github/dfa/diaspora_android/util/DiasporaUrlHelper.java
@@ -62,6 +62,7 @@ public class DiasporaUrlHelper {
public static final String SUBURL_NOTIFICATIONS_MENTIONED = "/notifications?type=mentioned";
public static final String SUBURL_NOTIFICATIONS_RESHARED = "/notifications?type=reshared";
public static final String SUBURL_NOTIFICATIONS_STARTED_SHARING = "/notifications?type=started_sharing";
+ public static final String SUBURL_THEME = "/user/edit";
public DiasporaUrlHelper(AppSettings settings) {
this.settings = settings;
@@ -353,4 +354,13 @@ public class DiasporaUrlHelper {
}
return app.getString(R.string.aspects);
}
+
+ /**
+ * Return a url that points to the settings of the pod.
+ *
+ * @return https://(pod-domain.tld)/user/edit
+ */
+ public String getThemeUrl() {
+ return getPodUrl() + SUBURL_THEME;
+ }
}
diff --git a/app/src/main/java/com/github/dfa/diaspora_android/web/BrowserFragment.java b/app/src/main/java/com/github/dfa/diaspora_android/web/BrowserFragment.java
index d28716d4..892426f3 100644
--- a/app/src/main/java/com/github/dfa/diaspora_android/web/BrowserFragment.java
+++ b/app/src/main/java/com/github/dfa/diaspora_android/web/BrowserFragment.java
@@ -94,9 +94,17 @@ public class BrowserFragment extends ThemedFragment {
this.setRetainInstance(true);
//pull to refresh
- swipe = view.findViewById(R.id.swipe);
- swipe.setOnRefreshListener(() -> reloadUrl());
- swipe.setDistanceToTriggerSync(2000);
+ swipe = view.findViewById( R.id.swipe );
+ swipe.setDistanceToTriggerSync( 2000 );
+ swipe.setOnRefreshListener( () -> reloadUrl() );
+ if (appSettings.isSwipeRefreshEnabled()){
+ swipe.setEnabled( true );
+
+ } else {
+ swipe.setRefreshing( false );
+ swipe.setEnabled( false );
+ return;
+ }
}
@Override
diff --git a/app/src/main/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml
index d6bd4363..0229e195 100644
--- a/app/src/main/res/values-af/strings.xml
+++ b/app/src/main/res/values-af/strings.xml
@@ -93,6 +93,6 @@
Toestel
diaspora * Pod
- Bemagtig om Youtube links oop te maak in eksterne Toeps
- Youtube links
+ Bemagtig om Youtube links oop te maak in eksterne Toeps
+ Youtube links
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index 84a39af3..32bc8d8a 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -200,6 +200,6 @@ diaspora*. Si voleu contribuir, endavant! Actualment som un equip molt petit, de
S\'utilitzen les següents biblioteques:
Prenem alguna inspiració i codi de LeafPic. Aneu a comprovar-ho, també és programari gratuït!
Expliqueu-me més
- Activeu-ho per obrir enllaços de Youtube en aplicacions externes
- Enllaços de YouTube
+ Activeu-ho per obrir enllaços de Youtube en aplicacions externes
+ Enllaços de YouTube
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 2568c56e..3d53df61 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -198,6 +198,6 @@
Se utilizan las siguientes bibliotecas:
Tomamos algo de inspiración y código de LeafPic. ¡Venga, tomad prestado, es software libre también!
Saber más
- Habilitar para abrir enlaces de Youtube en aplicaciones externas
- Enlaces de YouTube
+ Habilitar para abrir enlaces de Youtube en aplicaciones externas
+ Enlaces de YouTube
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index ca91f3e6..f166c804 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -201,6 +201,6 @@
Utilízase o seguinte código:
Inspirámonos e collemos código de LeafPic. Bótalle un ollo, tamén é software libre!
Cóntame máis
- Activar para abrir vídeos YouTube nunha app externa
- Ligazóns YouTube
+ Activar para abrir vídeos YouTube nunha app externa
+ Ligazóns YouTube
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index a3b6c284..33261bce 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -198,6 +198,6 @@
以下のライブラリーが使用されます:
LeafPic からいくつかのインスピレーションとコードを得ました。チェックしてみてください。同様のフリーソフトウェアです!
さらに詳しく
- 外部アプリで Youtube のリンクを開くことができます
- Youtube のリンク
+ 外部アプリで Youtube のリンクを開くことができます
+ Youtube のリンク
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 0baf4751..36ce35e7 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -156,6 +156,6 @@
Bibliotecas de terceiros
Utilizamos as seguintes bibliotecas:
Saber mais
- Ative para abrir as ligações YouTube na aplicação externa
- Ligações YouTube
+ Ative para abrir as ligações YouTube na aplicação externa
+ Ligações YouTube
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 0a184397..69f32727 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -198,6 +198,6 @@
Используются следующие библиотеки:
Мы вдохновлялись и взяли немного кода из LeafPic. Попробуйте это приложение, оно тоже является свободным ПО!
Расскажите мне больше
- Открывать ссылки на Youtube во внешних приложениях
- Ссылки на Youtube
+ Открывать ссылки на Youtube во внешних приложениях
+ Ссылки на Youtube
diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml
index 72288008..d2bfafdb 100644
--- a/app/src/main/res/values-sc/strings.xml
+++ b/app/src/main/res/values-sc/strings.xml
@@ -201,6 +201,6 @@
Sunt impreadas custas librerias:
Amus pigadu ispiratzione e parte de su còdighe dae LeafPic. Abbistade·bos·lu, est fintzas cussu unu programma lìberu!
Àteras informatziones
- Abìlita pro abèrrere sos ligàmenes de Youtube in un\'aplicatzione esterna
- Ligàmenes de Youtube
+ Abìlita pro abèrrere sos ligàmenes de Youtube in un\'aplicatzione esterna
+ Ligàmenes de Youtube
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index e88fea5d..81149e0d 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -199,6 +199,6 @@
我們使用了下列程式庫:
我們從 LeafPic 應用程式得到一些啟發以及程式碼。去看看吧,它也是自由軟體喔!
再多說一些
- 使用其他應用程式來開啟 Youtube 連結
- Youtube 連結
+ 使用其他應用程式來開啟 Youtube 連結
+ Youtube 連結
diff --git a/app/src/main/res/values/strings-not_translatable.xml b/app/src/main/res/values/strings-not_translatable.xml
index c66a18d4..7ffbe26a 100644
--- a/app/src/main/res/values/strings-not_translatable.xml
+++ b/app/src/main/res/values/strings-not_translatable.xml
@@ -149,4 +149,6 @@
PDF
gsantner
pref_key__open_youtube_external_enabled
+ pref_key_manage_theme
+ pref_key__swipe_refresh_enabled
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6c542f21..fccd49d0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -253,7 +253,10 @@
The following libraries are used:
We took some inspiration and code from LeafPic. Go check it out, it\'s free software as well!
Tell me more
- Enable to open Youtube links on external app
- Youtube links
+ Enable to open Youtube links on external app
+ Youtube links
+ Change the theme of your account
+ Pull to refresh
+ Pulling down on top of page to refresh.\nYou need to restart the app for changes to take effect.
diff --git a/app/src/main/res/xml/preferences__master.xml b/app/src/main/res/xml/preferences__master.xml
index c1ab7939..c6afd55f 100644
--- a/app/src/main/res/xml/preferences__master.xml
+++ b/app/src/main/res/xml/preferences__master.xml
@@ -77,8 +77,8 @@
android:defaultValue="true"
android:icon="@drawable/ic_open_yt_external_black_24px"
android:key="@string/pref_key__open_youtube_external_enabled"
- android:summary="@string/open_youtube_external_tabs_description"
- android:title="@string/pref_title__open_youtube_external"/>
+ android:summary="@string/enable_to_open_youtube_links_on_external_app"
+ android:title="@string/youtube_links"/>
+
+
diff --git a/app/src/main/res/xml/preferences__sub_themes.xml b/app/src/main/res/xml/preferences__sub_themes.xml
index ec5a5e00..aa4bde15 100644
--- a/app/src/main/res/xml/preferences__sub_themes.xml
+++ b/app/src/main/res/xml/preferences__sub_themes.xml
@@ -21,5 +21,12 @@
android:summary="@string/amoled_mode_description__app_specific"
android:title="@string/amoled_mode"
android:icon="@drawable/ic_color_lens_black_24px" />
+
+
+
\ No newline at end of file
From 24571f6921171762a9b0ab1e9faa8059207b6e82 Mon Sep 17 00:00:00 2001
From: Gregor Santner
Date: Thu, 7 Feb 2019 10:31:18 +0100
Subject: [PATCH 11/75] Auto reformat code
---
.../com/github/dfa/diaspora_android/App.java | 2 +-
.../diaspora_android/activity/MainActivity.java | 6 ++----
.../dfa/diaspora_android/util/AppSettings.java | 1 +
.../diaspora_android/web/BrowserFragment.java | 17 ++++++++---------
.../web/CustomWebViewClient.java | 3 +--
5 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/app/src/main/java/com/github/dfa/diaspora_android/App.java b/app/src/main/java/com/github/dfa/diaspora_android/App.java
index 841730e2..6f5ca2e6 100644
--- a/app/src/main/java/com/github/dfa/diaspora_android/App.java
+++ b/app/src/main/java/com/github/dfa/diaspora_android/App.java
@@ -58,7 +58,7 @@ public class App extends Application {
String a = new ContextUtils(this).bcstr("FLAVOR", "");
a += "__";
- if (appSettings.isAppFirstStart() && "flavorDandelior".equals(new ContextUtils(this).bcstr("FLAVOR", ""))){
+ if (appSettings.isAppFirstStart() && "flavorDandelior".equals(new ContextUtils(this).bcstr("FLAVOR", ""))) {
appSettings.setAmoledColorMode(true);
}
diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java
index 9eb6045a..ba8af918 100644
--- a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java
+++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java
@@ -565,12 +565,10 @@ public class MainActivity extends ThemedActivity
} else if ("sc_activities".equals(action)) {
openDiasporaUrl(urls.getActivityUrl());
return;
- }
- else if ("sc_contacts".equals(action)) {
+ } else if ("sc_contacts".equals(action)) {
onNavigationItemSelected(navView.getMenu().findItem(R.id.nav_aspects));
return;
- }
- else if ("sc_tags".equals(action)) {
+ } else if ("sc_tags".equals(action)) {
onNavigationItemSelected(navView.getMenu().findItem(R.id.nav_followed_tags));
return;
}
diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java b/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java
index 80c672ad..d1a48f03 100644
--- a/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java
+++ b/app/src/main/java/com/github/dfa/diaspora_android/util/AppSettings.java
@@ -451,6 +451,7 @@ public class AppSettings extends SharedPreferencesPropertyBackend {
public boolean isAmoledColorMode() {
return getBool(R.string.pref_key__primary_color__amoled_mode, false);
}
+
public void setAmoledColorMode(boolean enable) {
setBool(R.string.pref_key__primary_color__amoled_mode, enable);
}
diff --git a/app/src/main/java/com/github/dfa/diaspora_android/web/BrowserFragment.java b/app/src/main/java/com/github/dfa/diaspora_android/web/BrowserFragment.java
index 892426f3..bfc53fd9 100644
--- a/app/src/main/java/com/github/dfa/diaspora_android/web/BrowserFragment.java
+++ b/app/src/main/java/com/github/dfa/diaspora_android/web/BrowserFragment.java
@@ -21,6 +21,7 @@ package com.github.dfa.diaspora_android.web;
import android.content.Context;
import android.content.MutableContextWrapper;
import android.os.Bundle;
+import android.support.v4.widget.SwipeRefreshLayout;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
@@ -33,7 +34,6 @@ import com.github.dfa.diaspora_android.ui.theme.ThemeHelper;
import com.github.dfa.diaspora_android.ui.theme.ThemedFragment;
import com.github.dfa.diaspora_android.util.AppLog;
import com.github.dfa.diaspora_android.util.AppSettings;
-import android.support.v4.widget.SwipeRefreshLayout;//pull to refresh
/**
* Fragment with a webView and a ProgressBar.
@@ -94,15 +94,14 @@ public class BrowserFragment extends ThemedFragment {
this.setRetainInstance(true);
//pull to refresh
- swipe = view.findViewById( R.id.swipe );
- swipe.setDistanceToTriggerSync( 2000 );
- swipe.setOnRefreshListener( () -> reloadUrl() );
- if (appSettings.isSwipeRefreshEnabled()){
- swipe.setEnabled( true );
-
+ swipe = view.findViewById(R.id.swipe);
+ swipe.setDistanceToTriggerSync(2000);
+ swipe.setOnRefreshListener(() -> reloadUrl());
+ if (appSettings.isSwipeRefreshEnabled()) {
+ swipe.setEnabled(true);
} else {
- swipe.setRefreshing( false );
- swipe.setEnabled( false );
+ swipe.setRefreshing(false);
+ swipe.setEnabled(false);
return;
}
}
diff --git a/app/src/main/java/com/github/dfa/diaspora_android/web/CustomWebViewClient.java b/app/src/main/java/com/github/dfa/diaspora_android/web/CustomWebViewClient.java
index 848e1b65..5e0011d8 100644
--- a/app/src/main/java/com/github/dfa/diaspora_android/web/CustomWebViewClient.java
+++ b/app/src/main/java/com/github/dfa/diaspora_android/web/CustomWebViewClient.java
@@ -19,7 +19,6 @@
package com.github.dfa.diaspora_android.web;
import android.annotation.TargetApi;
-import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
@@ -60,7 +59,7 @@ public class CustomWebViewClient extends WebViewClient {
|| url.startsWith("http://" + host)))) {
return false;
}//make youtube links open external-->never customtab
- else if (appSettings.isOpenYoutubeExternalEnabled()&&(url.startsWith("https://youtube.com/") || url.startsWith("https://www.youtube.com/") || url.startsWith("https://m.youtube.com/") || url.startsWith("https://youtu.be/"))){
+ else if (appSettings.isOpenYoutubeExternalEnabled() && (url.startsWith("https://youtube.com/") || url.startsWith("https://www.youtube.com/") || url.startsWith("https://m.youtube.com/") || url.startsWith("https://youtu.be/"))) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return true;
From 4f44d1acd38ca8d4c8d162f2851f40191e9ac3eb Mon Sep 17 00:00:00 2001
From: Gregor Santner
Date: Thu, 7 Feb 2019 09:38:41 +0000
Subject: [PATCH 12/75] New Crowdin translations (#231)
---
app/src/main/res/values-ar/strings.xml | 1 +
app/src/main/res/values-bs/strings.xml | 15 +++++++++++++++
app/src/main/res/values-de/strings.xml | 7 +++++++
app/src/main/res/values-fil/strings.xml | 3 +++
app/src/main/res/values-iw/strings.xml | 13 +++++++++++++
app/src/main/res/values-pt/strings.xml | 3 +++
app/src/main/res/values-sv/strings.xml | 2 +-
7 files changed, 43 insertions(+), 1 deletion(-)
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index 0336f316..c2585fd6 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -20,6 +20,7 @@
المظهر
+ عام
تغيير لغة التطبيق. اعد فتح التطبيق لتفعيل التغيير
diff --git a/app/src/main/res/values-bs/strings.xml b/app/src/main/res/values-bs/strings.xml
index dbdd3fbf..850e2a44 100644
--- a/app/src/main/res/values-bs/strings.xml
+++ b/app/src/main/res/values-bs/strings.xml
@@ -2,24 +2,39 @@
+ Otvori navigacijsku ladicu
+ Zatvorite navigacijsku ladicu
+ Podešavanja
+ Traži
+ Popis izmjena
+ Više
+ Sakrij statusnu traku
+ Izgled
+ Opće
+ Promijeni jezik programa. Iznova pokrenite program da aktivirate promjenu
+ Jezik
+ Osnovni
+ Razno
+ O programu
+ Saradnici
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index ec6e122b..505a2f0c 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -81,7 +81,9 @@ nachträglich erteilen. Öffne dafür: Systemeinstellungen - Apps - dandelion*.
Zuletzt besuchte Seite im Stream aufrufen?
Statusleiste in Hauptansicht verstecken
Statusleiste verstecken
+ Titel in der Hauptansicht anzeigen
Titel anzeigen
+ Launcher Verknüpfung
Obere Werkzeugleiste lädt Stream
Klicks auf leere Flächen der oberen Werkzeugleiste öffnen den Stream
@@ -201,4 +203,9 @@ nachträglich erteilen. Öffne dafür: Systemeinstellungen - Apps - dandelion*.
Die folgenden Bibliotheken werden genutzt:
Wir haben ein wenig bei LeafPic gespickt. Schaut euch das mal an, es handelt sich dabei auch um freie Software!
Erzähl mir mehr
+ Einschalten um YouTube Links in einer externen App zu öffnen
+ YouTube Links
+ Thema des Accounts ändern
+ Pull-To-Refresh
+ In der Website von ganz oben nach unten ziehen um zu aktualisieren.\nDu musst die App neu starten damit die Änderungen wirksam werden.
diff --git a/app/src/main/res/values-fil/strings.xml b/app/src/main/res/values-fil/strings.xml
index dbdd3fbf..9b86c208 100644
--- a/app/src/main/res/values-fil/strings.xml
+++ b/app/src/main/res/values-fil/strings.xml
@@ -3,6 +3,8 @@
+ Mga Tanawin
+ Hanapin
@@ -10,6 +12,7 @@
+ Ayos
diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml
index dbdd3fbf..c149006e 100644
--- a/app/src/main/res/values-iw/strings.xml
+++ b/app/src/main/res/values-iw/strings.xml
@@ -3,23 +3,36 @@
+ הגדרות
+ חפש
+ רשימת שינויים
+ עוד
+ הסתר שורת מצב
+ מראה
+ כללי
+ שנה את שפת האפליקציה. אתחל את האפליקציה בכדי שהשינויים יכנסו לתוקף
+ שפה
+ ברירת מחדל
+ שונות
+ אודות
+ תורמים
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 36ce35e7..37ff9f65 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -98,12 +98,14 @@
Idioma
Idioma do sistema
+ Controlar tamanho do texto na WebView
Tamanho do tipo de letra
Normal
Grande
Enorme
Carregar imagens
+ Alternar carregamento de imagens para poupar dados móveis
Rotação do ecrã
Controlar automaticamente a rotação do ecrã
@@ -123,6 +125,7 @@
Gerir lista de contactos
Mudar de conta
Limpar cache
+ Limpar cache WebView
Diversos
Bloquear anúncios
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index fba5005a..58c406de 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -3,7 +3,7 @@
Stäng navigeringsmenyn
- Stäng navigeringsmenyn
+ Stäng navigeringslådan
Ladda om
Inställningar
From 49c6a97ce77467d8d2be82f1af207f0a878134c6 Mon Sep 17 00:00:00 2001
From: Gregor Santner
Date: Fri, 8 Mar 2019 12:32:10 +0100
Subject: [PATCH 13/75] Add AndroidSupportMeWrapper
---
.../activity/MainActivity.java | 2 +
.../opoc/preference/PropertyBackend.java | 2 +
.../SharedPreferencesPropertyBackend.java | 38 ++++++++++
.../opoc/util/AndroidSupportMeWrapper.java | 72 +++++++++++++++++++
.../res/values/strings-not_translatable.xml | 3 +
app/src/main/res/values/strings.xml | 5 ++
6 files changed, 122 insertions(+)
create mode 100644 app/src/main/java/net/gsantner/opoc/util/AndroidSupportMeWrapper.java
diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java
index ba8af918..2e57295b 100644
--- a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java
+++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java
@@ -90,6 +90,7 @@ import com.github.dfa.diaspora_android.web.WebHelper;
import com.github.dfa.diaspora_android.web.custom_tab.CustomTabActivityHelper;
import net.gsantner.opoc.format.markdown.SimpleMarkdownParser;
+import net.gsantner.opoc.util.AndroidSupportMeWrapper;
import java.io.IOException;
@@ -663,6 +664,7 @@ public class MainActivity extends ThemedActivity
protected void onResume() {
AppLog.v(this, "onResume()");
super.onResume();
+ new AndroidSupportMeWrapper(this).mainOnResume();
AppLog.v(this, "Register BroadcastReceivers");
LocalBroadcastManager.getInstance(this).registerReceiver(brSetTitle, new IntentFilter(ACTION_UPDATE_TITLE_FROM_URL));
LocalBroadcastManager.getInstance(this).registerReceiver(brOpenExternalLink, new IntentFilter(ACTION_OPEN_EXTERNAL_URL));
diff --git a/app/src/main/java/net/gsantner/opoc/preference/PropertyBackend.java b/app/src/main/java/net/gsantner/opoc/preference/PropertyBackend.java
index 0847021b..908176cf 100644
--- a/app/src/main/java/net/gsantner/opoc/preference/PropertyBackend.java
+++ b/app/src/main/java/net/gsantner/opoc/preference/PropertyBackend.java
@@ -10,6 +10,8 @@
#########################################################*/
package net.gsantner.opoc.preference;
+import java.util.Calendar;
+import java.util.Date;
import java.util.List;
@SuppressWarnings({"UnusedReturnValue", "SpellCheckingInspection", "unused", "SameParameterValue"})
diff --git a/app/src/main/java/net/gsantner/opoc/preference/SharedPreferencesPropertyBackend.java b/app/src/main/java/net/gsantner/opoc/preference/SharedPreferencesPropertyBackend.java
index 665f1058..6fe97a07 100644
--- a/app/src/main/java/net/gsantner/opoc/preference/SharedPreferencesPropertyBackend.java
+++ b/app/src/main/java/net/gsantner/opoc/preference/SharedPreferencesPropertyBackend.java
@@ -45,6 +45,7 @@ import android.text.TextUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
+import java.util.Date;
import java.util.List;
@@ -523,6 +524,10 @@ public class SharedPreferencesPropertyBackend implements PropertyBackend= begin && h <= end;
}
+
+ /**
+ * Substract current datetime by given amount of days
+ */
+ public Date getDateOfDaysAgo(int days) {
+ return new Date(System.currentTimeMillis() - days * 1000 * 60 * 60 * 24);
+ }
+
+ /**
+ * Substract current datetime by given amount of days and check if the given date passed
+ */
+ public boolean didDaysPassedSince(Date date, int days) {
+ if (date == null || days < 0) {
+ return false;
+ }
+ return date.before(getDateOfDaysAgo(days));
+ }
+
+ public boolean afterDaysTrue(String key, int daysSinceLastTime, int firstTime, final SharedPreferences... pref) {
+ Date d = new Date(System.currentTimeMillis());
+ if (!contains(key)) {
+ d = getDateOfDaysAgo(daysSinceLastTime-firstTime);
+ setLong(key, d.getTime());
+ return firstTime < 1;
+ } else {
+ d = new Date(getLong(key, d.getTime()));
+ }
+ boolean trigger = didDaysPassedSince(d, daysSinceLastTime);
+ if (trigger) {
+ setLong(key, new Date(System.currentTimeMillis()).getTime());
+ }
+ return trigger;
+ }
}
diff --git a/app/src/main/java/net/gsantner/opoc/util/AndroidSupportMeWrapper.java b/app/src/main/java/net/gsantner/opoc/util/AndroidSupportMeWrapper.java
new file mode 100644
index 00000000..ace1e60c
--- /dev/null
+++ b/app/src/main/java/net/gsantner/opoc/util/AndroidSupportMeWrapper.java
@@ -0,0 +1,72 @@
+/*#######################################################
+ *
+ * Maintained by Gregor Santner, 2018-
+ * https://gsantner.net/
+ *
+ * License of this file: Apache 2.0 (Commercial upon request)
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * https://github.com/gsantner/opoc/#licensing
+ *
+#########################################################*/
+package net.gsantner.opoc.util;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.support.v7.app.AlertDialog;
+
+import com.github.dfa.diaspora_android.R;
+
+import net.gsantner.opoc.preference.SharedPreferencesPropertyBackend;
+
+public class AndroidSupportMeWrapper extends ActivityUtils {
+ private LocalSettingsImpl _localSettingsImpl;
+
+ public AndroidSupportMeWrapper(Activity activity) {
+ super(activity);
+ _localSettingsImpl = new LocalSettingsImpl(_context.getApplicationContext());
+ }
+
+ public void openPayPalDonationPage() {
+ String id = getPackageIdManifest();
+ String url = "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=TVV24QBGMN23C&source=self.gsantner.net%2F" + id;
+ openWebpageInExternalBrowser(url);
+ }
+
+
+ public void openGeneralDonatePage() {
+ openWebpageInExternalBrowser(_context.getString(R.string.app_donate_url));
+ }
+
+ public void mainOnResume() {
+ if (_localSettingsImpl.all14dRequest()) {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(_context);
+ dialog.setTitle(R.string.donate_)
+ .setCancelable(false)
+ .setNegativeButton(R.string.close, (dialogInterface, i) -> dialogInterface.dismiss())
+ .setPositiveButton("PayPal", (dialogInterface, i) -> {
+ openPayPalDonationPage();
+ dialogInterface.dismiss();
+ })
+ .setNeutralButton(R.string.donate_, (dialogInterface, i) -> {
+ openGeneralDonatePage();
+ dialogInterface.dismiss();
+ })
+ .setMessage(R.string.do_you_like_this_project_want_donate_to_keep_alive);
+ dialog.show();
+ }
+ }
+
+ private class LocalSettingsImpl extends SharedPreferencesPropertyBackend {
+ private final SharedPreferences _prefCache;
+
+ public LocalSettingsImpl(Context _context) {
+ super(_context, "AndroidSupportMeWrapper.LocalSettingsImpl");
+ _prefCache = _context.getSharedPreferences("cache", Context.MODE_PRIVATE);
+ }
+
+ public boolean all14dRequest() {
+ return afterDaysTrue("all14dRequest", 14, 3);
+ }
+ }
+}
diff --git a/app/src/main/res/values/strings-not_translatable.xml b/app/src/main/res/values/strings-not_translatable.xml
index 7ffbe26a..b36f4c51 100644
--- a/app/src/main/res/values/strings-not_translatable.xml
+++ b/app/src/main/res/values/strings-not_translatable.xml
@@ -13,6 +13,9 @@
Tor
HTTP
+ @string/donate
+
+
@string/new_post
@string/search
http
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index fccd49d0..0a5905be 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -4,6 +4,8 @@
Open navigation drawer
Close navigation drawer
Reload
+ Close
+ Cancel
Settings
@@ -259,4 +261,7 @@
Pull to refresh
Pulling down on top of page to refresh.\nYou need to restart the app for changes to take effect.
+ Donate
+ Do you like this project? Do you want that it gets improved and problems fixed?\n\nDeveloping apps and writing related blog posts costs a lot of time! If you want to help so that the project can go on, please consider a small donation!\n\nThis project is developed in leisure time, completely for free and without any advertisements!
+
From a80f6ebb45dfb49587757ba34b9eeb16be9361b3 Mon Sep 17 00:00:00 2001
From: Gregor Santner
Date: Fri, 8 Mar 2019 14:45:02 +0100
Subject: [PATCH 14/75] New Crowdin translations (#238)
---
app/src/main/res/values-ar/strings.xml | 1 +
app/src/main/res/values-bs/strings.xml | 4 +
app/src/main/res/values-ca/strings.xml | 7 +
app/src/main/res/values-cs/strings.xml | 57 +++++++
app/src/main/res/values-da/strings.xml | 1 +
app/src/main/res/values-de/strings.xml | 4 +
app/src/main/res/values-es/strings.xml | 7 +
app/src/main/res/values-fa/strings.xml | 1 +
app/src/main/res/values-fr/strings.xml | 9 ++
app/src/main/res/values-gl/strings.xml | 3 +
app/src/main/res/values-hi/strings.xml | 1 +
app/src/main/res/values-hu/strings.xml | 1 +
app/src/main/res/values-it/strings.xml | 9 ++
app/src/main/res/values-iw/strings.xml | 1 +
app/src/main/res/values-ja/strings.xml | 7 +
app/src/main/res/values-kab/strings.xml | 1 +
app/src/main/res/values-ko/strings.xml | 1 +
app/src/main/res/values-ml/strings.xml | 1 +
app/src/main/res/values-nb-rNO/strings.xml | 1 +
app/src/main/res/values-nl/strings.xml | 14 ++
app/src/main/res/values-pl/strings.xml | 1 +
app/src/main/res/values-pt-rBR/strings.xml | 4 +
app/src/main/res/values-pt/strings.xml | 44 ++++++
app/src/main/res/values-ru/strings.xml | 6 +
app/src/main/res/values-sc/strings.xml | 7 +
app/src/main/res/values-sr-rRS/strings.xml | 1 +
app/src/main/res/values-sr/strings.xml | 1 +
app/src/main/res/values-sv/strings.xml | 4 +
app/src/main/res/values-tr/strings.xml | 4 +
app/src/main/res/values-uk/strings.xml | 1 +
app/src/main/res/values-zh-rCN/strings.xml | 172 +++++++++++++++++++++
app/src/main/res/values-zh-rTW/strings.xml | 1 +
32 files changed, 377 insertions(+)
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index c2585fd6..8758ec6b 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -39,4 +39,5 @@
ترخيص
المساهمون
+ تبرع
diff --git a/app/src/main/res/values-bs/strings.xml b/app/src/main/res/values-bs/strings.xml
index 850e2a44..94570037 100644
--- a/app/src/main/res/values-bs/strings.xml
+++ b/app/src/main/res/values-bs/strings.xml
@@ -4,6 +4,8 @@
Otvori navigacijsku ladicu
Zatvorite navigacijsku ladicu
+ Zatvori
+ Otkaži
Podešavanja
Traži
@@ -37,4 +39,6 @@
O programu
Saradnici
+ Doniraj
+ Sviđa li Vam se ovaj projekat? Želite li da napreduje a problemi budu otklonjeni?\n\nRazvijanje aplikacija i pisanje članaka o njima uzima puno vremena! Ako biste voljeli pomoći da projekat opstane, molimo Vas da razmislite o skromnoj donaciji!\n\nRad na ovom projektu odvija se u slobodno vrijeme, a program je besplatan i ne sadrži nikakav vid reklama!
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index 32bc8d8a..9e1c43f9 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -5,6 +5,8 @@
Obre el calaix de navegació
Tanca el calaix de navegació
Recarrega
+ Tanca
+ Cancel·la
Configuració
Notificacions
@@ -202,4 +204,9 @@ diaspora*. Si voleu contribuir, endavant! Actualment som un equip molt petit, de
Expliqueu-me més
Activeu-ho per obrir enllaços de Youtube en aplicacions externes
Enllaços de YouTube
+ Canvia el tema del vostre compte
+ Feu lliscar per actualitzar
+ S\'està lliscant cap avall a la part superior de la pàgina per actualitzar.\nCal que reinicieu l\'aplicació perquè els canvis tinguin efecte.
+ Fes un donatiu
+ Us agrada aquest projecte? Voleu que encara sigui millor i es solucionin els problemes?\n\nDesenvolupar aplicacions i escriure publicacions relacionades als blogs costa molt de temps! Si voleu ajudar perquè el projecte pugui continuar, considereu aportar una petita donació!\n\nAquest projecte es desenvolupa durant el temps lliure, completament gratis i sense publicitat!
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 5969d641..c2b0f40b 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -5,6 +5,8 @@
Otevøít navigaèní panel
Zavøít navigaèní panel
Aktualizovat
+ Konec
+ Rakovina
Nastavení
Oznámení
@@ -20,6 +22,7 @@
Hledat
Kontakty
Seznam změn
+ Statistika
Všechna oznámení
Také komentováno
@@ -29,21 +32,37 @@
Sdílen
Začalo sdílení
+ Error: Nemohl získat seznam podů!
+ Omlouvám se, musíte být připojeni k internetu, abyste mohli pokračovat dál
Potvrzení
Chceš opustit aplikaci?
Více
O aplikaci | Pomoc
+ Zlaté rány
Veřejné aktivity
Nahlášení
+ Sdílejte odkaz jako text
+ Šablony obrázku webových stránek
+ Podívejte se na snímek webové stránky
+ Uložit obrázek
+ Uložit snímky jako:
+ Zapnutá adresa …
Nový příspěvek
Jít nahoru
+ Hledat štítky nebo osoby
Ukončit aplikaci
+ Pohled na pracovní plochu
Sdílet…
+ tagy
+ lidmi
+ Prosím přidejte jméno
+ Sdílejte adresu odkazu
Uložit obrázek
Sdílet obrázek
Otevřít v externím prohlížeči…
Zkopírovat link do schránky
+ Kopírovat adresu obrázku do schránky
Nemohl být načten obrázek
@@ -56,7 +75,11 @@
Adresa Podu
Chybějící hodnota
Zavolat poslední navštívenou stránku ve streamu?
+ Hide bar at the main view at the view.
Schovat statusbar
+ Zobrazit titul v hlavním pohledu
+ Zobrazit titul
+ Launcher shortcut
Horní nástrojová lišta načítá stream
Pro otevření streamu klikni na práznou plochu v horní nástrojové liště
@@ -67,14 +90,20 @@
Obsluha
+ Navigační šprýmař
+ Ovládejte viditelnost položek v navigačním šuplíku
Uživatel
Obecné
Administrátor
+ Téma a zmatek
+ Ovládání, které barvy jsou používány v průběhu aplikace
Primární barva
Barva nástrojové lišty
Akcentová barva
Barva detailů
+ AMOLED model
+ Pro procházení barvy s AMOLED zobrazujeme příjemnou černou barvu v mnoha částech aplikace.
Rozšířené oznámení
Rozšiř oznámení zvonku pomocí výběrového menu, které zobrazuje kategorie oznámení
@@ -89,6 +118,7 @@
Obrovské
Načítej obrázky
+ Útok obrázku na např. uložte mobilní data
Rotace obrazovky
Kontroluj automatickou rotaci
@@ -104,15 +134,31 @@
Veď datovou cestu dandelion*, aby se obešla brána Firewall.\nMůže být vyžadován restart. Toto nemusí fungovat na všech přístrojích.
Host
Port
+ Při restartu musíte zakázat používání proxy serveru
+ načtený panel proxy
Osobní nastavení
+ Otevřte nastavení účtu diaspory
+ Spravte Váš seznam kontaktů
+ Řídit Hashtagy
+ Unfollow již následoval hashts
Změna konta
+ Erase local session data and switch to another diaspora* pod/účet
+ Chcete změnit svůj účet?
Vyprázdnit cache
+ Smazat cache WebView
+ Automaticky skryjí horní a dolní lišty při každém hodnocení.
+ Lity rozumových nástrojů
+ Konečný společný přístup
Přidat referenci této aplikace ke sdílenému textu: [via #dandelion]
Různé
Celkový reset
+ Podařilo se vám smazat všechna nastavení související s aplikací a přihlásit se ze všech účtů.
+ Toto přepíše všechna změněná nastavení aplikace do výchozích hodnot a vymaže vás ze všech podů.
+ Uživatelné základní Adcker může být součástí např. v embedded views.
+ Blokové reklamy
Informace
Licence
Debugging
@@ -133,16 +179,27 @@
dandelion* je svobodný software (free as in Freedom) a řídí se myšlenkami projektu diaspora*. Pokud chceš přispívat, jen do toho! Momentálně jsme velmi malý tým, takže jsme velmi vděční za jakýkoli druh pomoci!
Ke zdrojovému kódu
Přelož aplikaci!
+ Pokud si nejste jistí, že jste se rozhodli pro něco, co potřebujete?
Chci překládat
Dej zpětnou vazbu!
dandelion* je stále ve vývoji, takže pokud máš jakékoli návrhy, neváhej nám zanechat zpětnou vazbu pomocí užití našeho bug trackeru!
Nahlásit chybu
Řekni o aplikaci ostatním!
Řekni svým přátelům a rodině o diaspora* a #dadelion! Proč nezačít blogovat o Tvých zkušenostech? Rádi o Tobě uslyšíme!
+ Sdílejte chuť
+ Hey! Podívejte se na #dandelion! %1$s
Vývojáři
Spolupracovníci
%1$s<br><br>Děkujeme!
GNU GPLv3+ Licence
+ Knihovny třetí strany
+ Následující knihovny jsou využívány:
+ We took some inspiration and code from LeafPic.
Řekni mi více
+ Umožnit otevřít Youtube odkazy na externí aplikace
+ Youtube odkazy
+ Změňte téma vašeho účtu
+ Pull osvěžit
+ Krátce
diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml
index 6b588930..b1107d43 100644
--- a/app/src/main/res/values-da/strings.xml
+++ b/app/src/main/res/values-da/strings.xml
@@ -91,4 +91,5 @@
Udviklere
Bidragsydere
+ Donér
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 505a2f0c..5b667b70 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -5,6 +5,8 @@
NavDrawer öffnen
NavDrawer schließen
Aktualisieren
+ Schließen
+ Abbrechen
Einstellungen
Benachrichtigungen
@@ -208,4 +210,6 @@ nachträglich erteilen. Öffne dafür: Systemeinstellungen - Apps - dandelion*.
Thema des Accounts ändern
Pull-To-Refresh
In der Website von ganz oben nach unten ziehen um zu aktualisieren.\nDu musst die App neu starten damit die Änderungen wirksam werden.
+ Spenden
+ Gefällt dir dieses Projekt? Möchtest du, dass es verbessert wird und Probleme behoben werden?\n\nDie Entwicklung von Apps und das schreiben von relevanten Blog-Einträgen kostet viel Zeit! Wenn du helfen möchtest, so dass das Projekt weitergehen kann, ziehe bitte eine kleine Spende in Betracht!\n\nDieses Projekt wird in der Freizeit, völlig kostenlos und ohne jegliche Werbeeinblendungen entwickelt & angeboten!
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 3d53df61..efe59429 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -5,6 +5,8 @@
Abrir el panel de navegación
Cerrar el panel de navegación
Refrescar
+ Cerrar
+ Cancelar
Ajustes
Notificaciones
@@ -200,4 +202,9 @@
Saber más
Habilitar para abrir enlaces de Youtube en aplicaciones externas
Enlaces de YouTube
+ Cambiar el tema de tu cuenta
+ Tirar para refrescar
+ Deslizar hacia abajo la parte superior de la página para refrescar.\n Necesita reiniciar la aplicación para que los cambios surtan efecto.
+ Donar
+ ¿Te gusta este proyecto? ¿Quieres que se mejore y se corrijan problemas?\n\nEl desarrollo de aplicaciones y la escritura de entradas relacionadas del blog cuesta mucho tiempo. Si quieres ayudar a que el proyecto pueda continuar, por favor considera una pequeña donación!\n\nEste proyecto se desarrolla en tiempo de ocio, completamente gratis y sin publicidad!
diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml
index da7249ec..a9f80280 100644
--- a/app/src/main/res/values-fa/strings.xml
+++ b/app/src/main/res/values-fa/strings.xml
@@ -33,4 +33,5 @@
درباره مارکور
همکاران
+ کمک مالی
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 5215249d..c2911e57 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -5,6 +5,8 @@
Ouvrir le tiroir de navigation
Fermer le tiroir de navigation
Rafraîchir
+ Fermer
+ Annuler
Paramètres
Notifications
@@ -198,4 +200,11 @@
Les bibliothèques suivantes sont utilisées :
Nous avons pris des inspirations et du code de LeafPic. Allez voir, c\'est aussi un logiciel libre !
En savoir plus
+ Autoriser l\'ouverture des liens Youtube par une appli externe
+ Liens Youtube
+ Changer le thème de votre compte
+ Tirer vers le bas pour mettre à jour
+ Tirez depuis le haut de la page vers le bas pour l\'actualiser.\nVous devez redémarrer l\'application pour que ces changements prennent effet.
+ Donner
+ Vous aimez ce projet ? Vous voulez participer à son amélioration et corriger ses problèmes ?\n\nDévelopper des applications et écrire les posts de blog correspondants demande beaucoup de temps ! Si vous voulez aider à la poursuite du projet, merci de considérer une petite donation.\n\nCe projet est développé sur du temps libre, complètement gratuitement et sans publicité !
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index f166c804..73b884fb 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -203,4 +203,7 @@
Cóntame máis
Activar para abrir vídeos YouTube nunha app externa
Ligazóns YouTube
+ Cambiar o decorado da súa conta
+ Tire para actualizar
+ Tirar hacia abaixo na parte superior da páxina.\nDebe reiniciar a app para que os cambios se apliquen.
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index 7ac5fed3..650b8a62 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -39,4 +39,5 @@
लाइसेंस
योगदान कर्ता
+ दान करें
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index eab450c1..6f3c7934 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -191,4 +191,5 @@
A következő könyvtárak vannak használatban:
A LeafPicből merítettünk némi inspirációt és programkódot. Próbáld ki, ez is szabad szoftver!
Tudj meg többet
+ Adományozás
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 12aac244..d3864fa2 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -5,6 +5,8 @@
Apri barra di navigazione
Chiudi barra di navigazione
Ricarica
+ Chiudi
+ Annulla
Impostazioni
Notifiche
@@ -204,4 +206,11 @@
Sono utilizzate le seguenti librerie:
Abbiamo preso ispirazione e parte del codice da LeafPic. Dagli un\'occhiata, anch\'esso è software libero!
Dimmi di più
+ Abilita l\'apertura dei link Youtube su app esterna
+ Links Youtube
+ Cambia il tema del tuo account
+ Trascina per aggiornare
+ Trascina dall\'alto al basso per aggiornare la pagina.\nDevi riavviare l\'app affinchè le modifiche abbiano effetto.
+ Dona
+ Ti piace questo progetto? Vuoi vederlo ancora migliore e con i problemi risolti?\n\nSviluppare applicazioni e documentarle sul blog costa un sacco di tempo! Se vuoi aiutare lo sviluppo del progetto, puoi fare una piccola donazione!\n\nQuesto progetto è sviluppato nel tempo libero, completamente gratis e senza alcuna pubblicità!
diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml
index c149006e..22e2a857 100644
--- a/app/src/main/res/values-iw/strings.xml
+++ b/app/src/main/res/values-iw/strings.xml
@@ -35,4 +35,5 @@
אודות
תורמים
+ תרום
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 33261bce..e81464fa 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -5,6 +5,8 @@
ナビゲーションドロワーを開く
ナビゲーションドロワーを閉じる
再読み込み
+ 閉じる
+ キャンセル
設定
通知
@@ -200,4 +202,9 @@
さらに詳しく
外部アプリで Youtube のリンクを開くことができます
Youtube のリンク
+ アカウントのテーマを変更
+ 引き下げて更新
+ ページの上から下に引き下げて更新します。\n変更を反映するため、アプリを再起動する必要があります。
+ 寄付
+ このプロジェクトを気に入っていただけましたか? 改善したい、あるいは問題を修正したいですか?\n\nアプリの開発や、関連するブログの記事を書くに多くの時間がかかります! プロジェクトを進めるために、支援をしていただける場合は、少しの寄付をご検討ください!\n\nこのプロジェクトは余暇に開発していて、完全に無料で、広告はありません!
diff --git a/app/src/main/res/values-kab/strings.xml b/app/src/main/res/values-kab/strings.xml
index 923b84c1..49088e42 100644
--- a/app/src/main/res/values-kab/strings.xml
+++ b/app/src/main/res/values-kab/strings.xml
@@ -201,4 +201,5 @@
Tinedlisin-agi ttwaseqdacent:
Newwi kra n tiktiwin akked tengat si LeafPic. Duu ad ten-twaliḍ. D aseɣẓan ilellil!
Ini-yid ugar
+ Mudd
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index ea637348..05bcc52f 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -194,4 +194,5 @@
LeafPic에서 약간의 영감을 받았으며, 코드들도 일부 차용했습니다.
한번 사용해보세요! 무료 소프트웨어 입니다!
더 자세히 보기
+ 후원하기
diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml
index 45434b62..4ff52c1b 100644
--- a/app/src/main/res/values-ml/strings.xml
+++ b/app/src/main/res/values-ml/strings.xml
@@ -3,6 +3,7 @@
വീണ്ടും ലോഡ് ചെയ്യുക
+ റദ്ദാക്കുക
ക്രമീകരണങ്ങൾ
അറിയിപ്പുകൾ
diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml
index 2c6f6282..b2c5ccdc 100644
--- a/app/src/main/res/values-nb-rNO/strings.xml
+++ b/app/src/main/res/values-nb-rNO/strings.xml
@@ -38,4 +38,5 @@
Om
Bidragsytere
+ Doner
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 31cbf9d2..4eaa84e2 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -2,7 +2,11 @@
+ Open navigatiemenu
+ Sluit navigatiemenu
Herladen
+ Sluit
+ Annuleren
Instellingen
Meldingen
@@ -72,7 +76,11 @@
Pod adres
Ontbrekende waarde
Ga naar laatste bezochte pagina in de stream?
+ Verberg statusbalk op hoofdweergave
Verberg statusbalk
+ Toon titel in de hoofdweergave
+ Toon titel
+ Launcher snelkoppeling
Bovenste werkbalk laadt stream
Klik op een lege ruimte in de bovenste werkbalk om de stream te openen
@@ -192,4 +200,10 @@
De volgende bibliotheken worden gebruikt:
We zijn geïnspireerd door LeafPic en lenen er code van. Ga kijken, deze vrije software is het proberen waard!
Vertel me meer
+ Inschakelen om Youtube links te openen op externe app
+ Youtube links
+ Wijzig het thema van uw account
+ Trek om te vernieuwen
+ Trek omlaag op de bovenkant van de pagina om te vernieuwen.\nU moet de app opnieuw opstarten om wijzigingen door te voeren.
+ Doneer
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index ef7ccada..8430ed79 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -198,4 +198,5 @@
Zostały użyte następujące biblioteki zewnętrzne:
Zaczerpnęliśmy kilka pomysłów oraz trochę kodu z aplikacji LeafPic. Wypróbuj ją, to także wolne oprogramowanie!
Chcę wiedzieć więcej
+ Wspomóż
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 64cb73a3..0fb2bdbf 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -5,6 +5,8 @@
Abra o painel de navegação
Fechar painel de navegação
Atualizar
+ Fechar
+ Cancelar
Configurações
Notificações
@@ -173,4 +175,6 @@
Bibliotecas de Terceiros
São usadas as seguintes bibliotecas:
Conte-me mais
+ Doar
+ Você gosta deste projeto? Você quer que ele fica melhor e com problemas corrigidos?\n\nDesenvolver aplicativos e escrever postagens relacionado em blog custa muito tempo! Se você quiser ajudar na continuação do projeto, por favor considere uma pequena doação!\n\nEsse projeto é desenvolvido durante o tempo de lazer, totalmente gratuito e sem propagandas!
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 37ff9f65..b304e944 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -5,6 +5,8 @@
Abrir menu de navegação
Fechar menu de navegação
Recarregar
+ Fechar
+ Cancelar
Definições
Notificações
@@ -66,17 +68,25 @@
Permissão recusada.
Permissão concedida. Tente novamente.
+ Pod personalizado
+ Nome do Pod
Protocolo
+ Endereço do Pod
Valor em falta
+ Ir para a última página visitada no fluxo?
Ocultar barra de estado na vista principal
Ocultar barra de estado
Mostrar título na vista principal
Mostrar título
Atalho para o lançador
+ A barra de ferramentas superior carrega o fluxo
+ Clique em um espaço vazio na barra de ferramentas superior para abrir o fluxo
Aparência
Rede
+ Configurações do Pod
+ Operabilidade
Controlo de navegação
@@ -92,8 +102,10 @@
Cor secundária
Cor da barra de progresso
Modo AMOLED
+ Substitua as cores com o AMOLED exibe preto amigável em muitas partes do aplicativo. Você precisa reiniciar para alternar esta configuração. Para navegar em diaspora* no escuro, você também precisa ativar o tema escuro, que pode ser encontrado nas configurações da sua conta pessoal diaspora*.
Notificações expandidas
+ Estenda o sinal de notificações com um menu suspenso que mostra as categorias de notificação
Altera o idioma da aplicação. Tem que reiniciar a aplicação para aplicar as alterações
Idioma
Idioma do sistema
@@ -114,20 +126,38 @@
Vertical
Horizontal
+ Carregar predefinição Tor
+ Carregar configurações de proxy para Tor (Orbot) Proxy HTTP
Proxy
Ativar proxy
+ Proxy dandelion * tráfego para contornar firewalls.\nPode ser necessário reiniciar. Isso pode não funcionar em alguns telefones.
Servidor
Porta
Tem que reiniciar a aplicação para aplicar a alteração
+ Predefinição de proxy Orbot carregada
+ Abra links externos com abas personalizadas do Chrome. Chromium, Firefox ou Google Chrome precisa ser instalado para usar este recurso. \nNOTA IMPORTANTE: Guias personalizadas do Chrome não usam servidores proxy configurados!
Definições pessoais
+ Abra suas configurações de conta diaspora*
Gerir lista de contactos
+ Gerenciar Hashtags
+ Não seguir hashtags já seguidas
Mudar de conta
+ Apagar dados de sessão local e mudar para outro servidor/conta diaspora*
+ Isto irá apagar todos os dados de cookies e sessão. Você realmente deseja alterar sua conta?
Limpar cache
Limpar cache WebView
+ Ocultar automaticamente as barras de ferramentas superior e inferior durante a rolagem
+ Barra Intellihide
+ Anexar compartilhado-por-aviso
+ Acrescentar uma referência a este aplicativo a textos compartilhados: [via #dandelion]
Diversos
+ Resetar tudo
+ Localmente limpar todas as configurações relacionadas ao aplicativo e sair de todas as contas
+ Isto irá redefinir todas as configurações alteradas do aplicativo para seus valores padrão e sair de todos os servidores. Suas imagens baixadas permanecerão intactas. Tem certeza que deseja continuar?
+ Habilitar o AdBlocker básico. Anúncios podem ser incluídos, por exemplo, em visualizações incorporadas
Bloquear anúncios
Acerca
Licença
@@ -144,12 +174,20 @@
Nome do perfil Pod: %1$s
Domínio Pod: %1$s
Dados copiados para a área de transferência
+ dandelion* é seu aplicativo companheiro para navegar pela diaspora*. Ele adiciona recursos como barras de ferramentas úteis e suporte para servidores de proxy como a Tor Network para sua experiência social.
+ Contribua com o código!
+ dandelion* é desenvolvido gratuitamente como na Liberdade e segue as ideias do projeto diaspora*. Se você quiser contribuir, vá em frente! Atualmente somos uma equipe muito pequena, então nós apreciamos muito qualquer tipo de ajuda!
Obter o código fonte
Traduzir a aplicação!
+ O aplicativo não está disponível em seu idioma? Você pode alterar isso! Por que você não nos ajuda traduzindo-lo? Nós usamos Stringlate para permitir que alguém traduza o aplicativo.
Quero participar
+ Dar Feedback!
+ dandelion* ainda está em desenvolvimento, então se você tiver sugestões ou algum tipo de feedback, por favor, use nosso bug tracker para nos informar!
Reportar erros
Passe a palavra!
+ Conte aos seus amigos e familiares sobre diaspora* e #dandelion! Por que você não blog sobre suas experiências? Nós adoraríamos ouvir de você!
Partilhar plicação
+ Ei! Confira #dandelion! %1$s
Desenvolvimento
Esta aplicação está a ser desenvolvida e mantida por <br><br>%1$s
@@ -158,7 +196,13 @@
Licença GNU GPLv3+
Bibliotecas de terceiros
Utilizamos as seguintes bibliotecas:
+ Demos alguma inspiração e código do LeafPic. Vá conferir, é também software livre!
Saber mais
Ative para abrir as ligações YouTube na aplicação externa
Ligações YouTube
+ Altera o tema da sua conta
+ Puxar para atualizar
+ Deslize de cima para baixo para recarregar.\nTem que reiniciar a aplicação para aplicar as alterações.
+ Donativos
+ Gosta deste projeto? Deseja ajudar a melhorar a aplicação e a corrigir erros?\n\nO desenvolvimento de aplicações custa-me imenso tempo! Se quiser ajudar a manter o projeto, por favor considere a hipótese de um donativo!\n\nEsta aplicação é desenvolvida durante o meu tempo livre, é completamente livre e não tem anúncios!
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 69f32727..d044aa27 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -5,6 +5,8 @@
Открыть панель навигации
Закрыть панель навигации
Обновить
+ Закрыть
+ Отмена
Настройки
Уведомления
@@ -200,4 +202,8 @@
Расскажите мне больше
Открывать ссылки на Youtube во внешних приложениях
Ссылки на Youtube
+ Изменить тему вашей учетной записи
+ Потяните для обновления
+ Потяните вниз, чтобы обновить страницу.\nВам нужно перезапустить приложение, чтобы изменения вступили в силу.
+ Поддержать проект
diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml
index d2bfafdb..8810cfd3 100644
--- a/app/src/main/res/values-sc/strings.xml
+++ b/app/src/main/res/values-sc/strings.xml
@@ -5,6 +5,8 @@
Aberi su pannellu de nàvigu
Serra su pannellu de nàvigu
Torra a carrigare
+ Serra
+ Annulla
Impostatziones
Notìficas
@@ -203,4 +205,9 @@
Àteras informatziones
Abìlita pro abèrrere sos ligàmenes de Youtube in un\'aplicatzione esterna
Ligàmenes de Youtube
+ Muda su tema de su contu tuo
+ Tira cara a bassu pro annoare
+ Tira cara a bassu pro annoare sa pàgina.\nDepes torrare a allùghere s\'aplicatzione pro fàghere in modu chi sas modìficas tèngiant efetu.
+ Dona
+ T\'agradat custu progetu? Cheres chi bèngiat megioradu e chi sos problemas bèngiant isortos?\n\nS\'isvilupu de aplicatziones e s\'iscritura de publicatziones curreladas in sos blogs pigat unu muntone de tempus! Si cheres agiudare, pro fàghere in modu chi su progetu potzat sighire, pro praghere piga in cunsìderu s\'idea de fàghere una donatzione, fintzas si minore!\n\nCustu progetu est isvilupadu in su tempus lìberu, totu de badas e chene annùntzios publitzitàrios!
diff --git a/app/src/main/res/values-sr-rRS/strings.xml b/app/src/main/res/values-sr-rRS/strings.xml
index 6cca4e74..3f101997 100644
--- a/app/src/main/res/values-sr-rRS/strings.xml
+++ b/app/src/main/res/values-sr-rRS/strings.xml
@@ -36,4 +36,5 @@
Pomo\'nici
Prikazi GNU GPLv3 licence
Prikaz licence trecih lica
+ Doniraj
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index 1bbf84ec..485742e2 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -38,4 +38,5 @@
Програмери
Сарадници
+ Doniraj
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 58c406de..a729399b 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -5,6 +5,8 @@
Stäng navigeringsmenyn
Stäng navigeringslådan
Ladda om
+ Avsluta
+ Avbryt
Inställningar
Notiser
@@ -204,4 +206,6 @@
Följande bibliotek används:
Vi hämtade inspiration och kod från LeafPic. Kika på det, det är också fri programvara!
Berätta mer
+ Donera
+ Gillar du detta projektet? Vill du att det förbättras och att buggar åtgärdas snabbt?\n\nAtt utveckla appar och skriva relaterade blogginlägg tar mycket tid! Om du vill hjälpa till så att projektet kan fortgå så kan du överväga att ge en liten donation!\n\nDetta projektet utvecklas av volontärer på fritiden och är helt utan reklam!
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index ca2a50d3..d01d781f 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -5,6 +5,8 @@
Gezinme çekmecesini aç
Gezinme çekmecesini kapat
Yeniden Yükle
+ Kapat
+ İptal
Ayarlar
Bildirimler
@@ -191,4 +193,6 @@
Şu kütüphaneler kullanıldı:
LeafPic\'ten biraz ilham ve kod aldık. Göz atabilirsiniz, özgür bir yazılım!
Daha fazla göster
+ Bağış yap
+ Bu projeyi beğendiniz mi? Projenin iyileştirilmesini ve sorunların çözülmesini istiyor musunuz?\n\nUygulama geliştirmek ve onunla ilgili blog gönderileri yazmak çok zaman alıyor! Projenin devam edebilmesi için yardım etmek istiyorsanız, lütfen küçük bir bağış yapmayı düşünün!\n\nBu proje boş zamanlarımda, tamamen ücretsiz ve reklamsız olarak geliştirilmiştir!
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 3ef60848..5436cfc7 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -204,4 +204,5 @@
Використовуються такі бібліотеки:
Ми взяли трохи натхнення і коду з LeafPic. Це також вільне програмне забезпечення, тож користуйтеся!
Хочу знати більше
+ Пожертвувати
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 45f47267..2fa4a18b 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -4,41 +4,213 @@
打开导航栏
隐藏导航栏
+ 刷新
+ 关闭
+ 取消
设置
+ 通知
+ 对话
+ 串流
+ 资料
+ 方面
+ 活动
+ 已赞
+ 已评论
+ 提及
+ 公共
搜索
+ 联系人
更新日志
+ 统计
+ 全部通知
+ 也评论了
+ 评论此文
+ 已赞
+ 已提及
+ 已转发
+ 已开始分享
+ 错误:无法检索播客列表!
+ 抱歉,您必须连接到互联网
+ 确认
+ 您是否想要退出?
更多
+ 关于 | 帮助
+ 关注的标签
+ 公共活动
+ 反馈
+ 以文本形式共享链接
+ 分享网页截图
+ 网页截图
+ 保存图像至
+ 保存截图为:
+ 已复制链接地址
+ 新文章
+ 返回顶部
+ 按标签或人物搜索
+ 退出应用
+ 切换移动版/桌面版视图
共享。。。
+ 按标签搜索
+ 按人物搜索
+ 请添加姓名
+ 分享链接地址
+ 保存图像
+ 分享图像
+ 在外部浏览器中打开
+ 复制链接地址至剪切板
+ 复制图像地址至剪切板
+ 无法载入图像
+ 您必须授予“访问存储权限”以保存屏幕截图。
+ 完全关闭应用程序或重启设备。如果您不允许存储访问,但希望稍后使用
+ 屏幕截图功能,您可以稍后批准权限。请打开:系统设置 - 应用 -
+ dandelion*。
+ 您必须允许“访问存储权限”保存/上传图像。
+ 在完全关闭应用程序或重启设备之后。如果您不允许存储访问,但希望稍后保存图像
+ 您可以稍后授权。请打开:系统设置 - 应用 -
+ dandelion。
+ 权限被拒绝。
+ 已授予权限。请重试。
+ 自定义 Pod
+ Pod 名称
+ 协议
+ Pod 地址
+ 缺失值
+ 跳转到上一个访问过的页面?
+ 在主视图中隐藏状态栏
隐藏状态栏
+ 在主视图中显示标题
显示标题
+ 启动器快捷方式
+ 顶级工具栏负载流
+ 点击顶部工具栏的空间打开流流
外观
+ 网络
+ 播客设置
+ 可操作性
+ 导航滑块
+ 在导航抽屉中控制条目的可见性
+ 用户
通用
+ 管理员
+ 主题及颜色
+ 控制应用所使用的颜色
+ 主颜色
+ 工具栏颜色
+ 强调色
+ 进度条颜色
+ AMOLED 模式
+ 在 AMOLED 中显示友好的黑色。您需要重启切换此设置。在暗中浏览散居地* 也需要激活暗色主题,您可以在您的个人散居地* 帐户设置中找到。
+ 扩展通知
+ 通过显示通知类别的辍学菜单扩展通知铃声
更改语言(重启应用后生效)
语言
+ 系统语言
+ 控制WebView文本大小
+ 字体大小
+ 正常
+ 大
+ 巨大
+ 加载图像
+ 切换图像加载到例如保存移动数据
+ 屏幕旋转
+ 控制自动旋转屏幕
默认
+ 传感器\n(忽略系统设置)
+ 肖像
+ 横向
+ 加载 Tor 预设
+ 为 Tor (Orbot) HTTP 代理加载代理设置
+ 代理
+ 启用代理
+ 代理 dandelion*,来规避防火墙。\n可能需要重启。这可能无法在某些手机上运行。
+ 主机
+ 端口
+ 应用需要重新启动以禁用代理使用
+ 加载轨道代理预设
+ 使用 Chrome 自定义标签打开外部链接。Chromium、Firefox 或 Google Chrome 需要安装才能使用此功能。 \nImportant:Chrome 自定义标签不使用配置的代理服务器!
+ 个人设置
+ 打开 Diaspora* 帐户设置
+ 管理您的联系人列表
+ 管理哈希标签
+ 取消关注已经跟随哈希
+ 更改帐户
+ 擦除本地会话数据并切换到另一个 Diaspora* pod/帐户
+ 这将删除所有 cookie 和会话数据。您真的想要更改您的帐户吗?
清除缓存
+ 清除WebView缓存
+ 滚动时自动隐藏顶部和底部工具栏
+ 智能隐藏工具栏
+ 附加共享通知
+ 将此应用添加到共享文本:[通过 #dandelion]
杂项
+ 完全重置
+ 本地擦除应用程序的所有设置,注销所有账户
+ 这将重置应用程序的所有更改设置为默认值,并从所有讲台上注销。您下载的图像将保持不变。您确定要继续吗?
+ 启用基本的 AdBlocker。广告可能包括在内部的视图中
+ 屏蔽广告
关于
许可
+ 调试
+ 适用范围
+ 设备
+ 散居者*播客
+ 调试日志
+ 调试日志(Verbose)
+ 应用版本: %1$s
+ Android 版本: %1$s
+ 设备名称: %1$s
+ 代码名: %1$s
+ 播客资料名称: %1$s
+ 播客域: %1$s
+ 调试日志已复制到剪贴板
+ dandelion* 是您浏览社交网络 diaspora* 的配套应用。它添加了一些功能,例如有用的工具栏和支持Tor网络等代理服务器。
+ 贡献代码!
+ dandelion* 像自由一样自由发展,遵循 diaspora* 项目的想法。如果你想作出贡献,继续前进!目前我们是一个非常小的团队,因此我们非常感谢任何帮助!
+ 获取源
+ 翻译应用!
+ 应用程序不可用您的语言?您可以更改它!为什么你没有帮助我们翻译它?我们使用Stringlay来让任何人能够翻译这个应用。
+ 让我翻译
+ 提供反馈!
+ dandelion* 仍在开发中,所以如果您有任何建议或任何反馈,请使用我们的错误追踪器让我们知道!
+ 报告错误
+ 传播单词!
+ 告诉你的朋友和家人关于 Diaspora* 和 #dandelion! 为什么你没有关于你的经历的博客? 我们很喜欢听到你的声音!
+ 分享应用
+ 嘿!看看 #dandelion! %1$s
+ 维护者
+ 此应用目前正在开发和维持 <br><br>%1$s
贡献者
+ %1$s<br><br>谢谢!
+ GNU GPLv3+ 授权
+ 第三方图书馆
+ 使用下列图书馆:
+ 我们从LeafPic获得了一些灵感和代码。去检查它,也是免费的软件!
+ 告诉我更多
+ 启用在外部应用打开 Youtube 链接
+ YouTube链接
+ 更改您的帐户的主题
+ 下拉刷新
+ 在页面顶部下拉刷新。\n您需要重新启动应用程序以使更改生效。
+ 捐赠
+ 你喜欢这个项目吗?你想要它得到改善并解决问题吗?\n\n开发应用并撰写相关博客文章需要花费大量时间!如果你想要帮助项目继续进行,请考虑小额捐赠!\n\n这个项目是在闲暇时间开发的,完全免费且没有任何广告!
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 81149e0d..053f5d01 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -201,4 +201,5 @@
再多說一些
使用其他應用程式來開啟 Youtube 連結
Youtube 連結
+ 贊助
From 51c3f68f2206d5de04f9c3f1798980f92157a761 Mon Sep 17 00:00:00 2001
From: Gregor Santner
Date: Fri, 8 Mar 2019 14:49:29 +0100
Subject: [PATCH 15/75] Release v1.3.0
---
CHANGELOG.md | 5 +++--
app/build.gradle | 4 ++--
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f6049f2d..5e1414dd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,6 @@
-### v1.2.5
-Make youtube links open external/in youtube app (optional)
+### v1.3.0
+- Add option to open youtube links external/in YouTube app (optional)
+- Pull to refresh
### v1.2.3
**Improved:**
diff --git a/app/build.gradle b/app/build.gradle
index e0565339..5faae77d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -19,8 +19,8 @@ android {
resValue "string", "manifest_package_id", "com.github.dfa.diaspora_android"
applicationId "com.github.dfa.diaspora_android"
- versionName "1.2.5"
- versionCode 40
+ versionName "1.3.0"
+ versionCode 41
vectorDrawables.useSupportLibrary = true
}
From b1fb5d646a3153e2c95c32edc40dd0e17345d56f Mon Sep 17 00:00:00 2001
From: Paul Schaub
Date: Mon, 11 Mar 2019 14:10:35 +0100
Subject: [PATCH 16/75] German translation of metadata
---
metadata/de/full_description.txt | 28 ++++++++++++++++++++++++++++
metadata/de/short_description.txt | 1 +
2 files changed, 29 insertions(+)
create mode 100644 metadata/de/full_description.txt
create mode 100644 metadata/de/short_description.txt
diff --git a/metadata/de/full_description.txt b/metadata/de/full_description.txt
new file mode 100644
index 00000000..00eb10fd
--- /dev/null
+++ b/metadata/de/full_description.txt
@@ -0,0 +1,28 @@
+Client für das gemeinschaftlich betriebene, verteile soziale Netzwerk diaspora*.
+Verbessere dein Netzwerk-Erlebnis durch nützliche Features:
+
+⚡ Schnellzugriff auf die meisten diaspora* Funktionen
+🎨 Anpassbar an deinen Geschmack
+👉 Teile Inhalte mit und von der App
+🌎 Unterstützung von Proxies (unterstützt Tor/Orbot)
+📰 In-App-Browser zum schnellen lesen von Artikeln
+🌆 Dark/AMOLED Modus zum Energiesparen und Augen schonen
+🈴 Verfügbar in vielen Sprachen
+#️⃣ Durchsuche Tags und Aspekte
+
+🈯 Getrennte App- und Systemsprache. Nutze die App in beliebiger Sprache (zB. Englisch) und behalte deine Systemsprache (zB. Deutsch) bei.
+
+🔐 Du bist noch auf der Suche nach einem Pod um dich zu registrieren? Die App bringt eine große Liste mit und weitere Pods findest du auf podupti.me.
+
+🍻 Mehrere Accounts: Nutze dandelion* und dandelior* um zwei Accounts auf dem gleichen Gerät zu nutzen. Die Apps besitzen eigene Icons und unterschiedliche Vorgabefarben.
+
+🌍 Hinweis: Die App nutzt Androids WebView Komponente um Inhalte von diaspora* Pods in der mobilen Ansicht anzuzeigen. Für fehlende Features frage bitte auf dem diaspora* Bug Tracker.
+
+Weitere Informationen:
+Projekt Blog | diaspora* FAQ
+
+Unterstütze das Projekt:
+Übersetze mit Stringlate | Nimm per Matrix and der Diskussion teil | Mitwirkende | Leitfaden zur Mitwirkung
+| Unterstütze den Hauptentwickler
diff --git a/metadata/de/short_description.txt b/metadata/de/short_description.txt
new file mode 100644
index 00000000..71a3004f
--- /dev/null
+++ b/metadata/de/short_description.txt
@@ -0,0 +1 @@
+Client für das Soziale Netzwerk diaspora*
From a7054d3ff819a212cb46e5b90c59a78d56035653 Mon Sep 17 00:00:00 2001
From: Gregor Santner
Date: Sun, 21 Apr 2019 15:57:49 +0200
Subject: [PATCH 17/75] Update metadata
---
CHANGELOG.md | 3 +++
README.md | 2 +-
metadata/en | 1 -
metadata/en-US/changelogs/1.txt | 1 +
metadata/zz/full_description.txt | 1 +
metadata/zz/short_description.txt | 1 +
metadata/zz/title.txt | 1 +
7 files changed, 8 insertions(+), 2 deletions(-)
delete mode 120000 metadata/en
create mode 100644 metadata/en-US/changelogs/1.txt
create mode 100644 metadata/zz/full_description.txt
create mode 100644 metadata/zz/short_description.txt
create mode 100644 metadata/zz/title.txt
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5e1414dd..f25e3706 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+
+
+
### v1.3.0
- Add option to open youtube links external/in YouTube app (optional)
- Pull to refresh
diff --git a/README.md b/README.md
index 57ba4cc3..8c9f1474 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
[](https://lonamiwebs.github.io/stringlate/translate?git=https%3A%2F%2Fgithub.com%2Fgsantner%2Fdandelion.git&mail=gro.xobliam@@rentnasg)
[](https://matrix.to/#/#dandelion:matrix.org) [](https://kiwiirc.com/client/irc.freenode.net/?nick=dandelion-anon|?##dandelion)
[](https://gsantner.net/supportme/?project=dandelion&source=readme)
-[](https://liberapay.com/gsantner/donate)
+[](https://liberapay.com/gsantner/donate) 
# dandelion\*
diff --git a/metadata/en b/metadata/en
deleted file mode 120000
index f2b0341f..00000000
--- a/metadata/en
+++ /dev/null
@@ -1 +0,0 @@
-en-US
\ No newline at end of file
diff --git a/metadata/en-US/changelogs/1.txt b/metadata/en-US/changelogs/1.txt
new file mode 100644
index 00000000..d60031cb
--- /dev/null
+++ b/metadata/en-US/changelogs/1.txt
@@ -0,0 +1 @@
+Added to F-Droid
diff --git a/metadata/zz/full_description.txt b/metadata/zz/full_description.txt
new file mode 100644
index 00000000..8e27be7d
--- /dev/null
+++ b/metadata/zz/full_description.txt
@@ -0,0 +1 @@
+text
diff --git a/metadata/zz/short_description.txt b/metadata/zz/short_description.txt
new file mode 100644
index 00000000..8e27be7d
--- /dev/null
+++ b/metadata/zz/short_description.txt
@@ -0,0 +1 @@
+text
diff --git a/metadata/zz/title.txt b/metadata/zz/title.txt
new file mode 100644
index 00000000..8e27be7d
--- /dev/null
+++ b/metadata/zz/title.txt
@@ -0,0 +1 @@
+text
From 0732fe1b91ea76f110938682fe6c3d9725ab4ae5 Mon Sep 17 00:00:00 2001
From: Gregor Santner
Date: Thu, 25 Apr 2019 22:53:54 +0000
Subject: [PATCH 18/75] New Crowdin translations (#243)
---
app/src/main/res/values-af/strings.xml | 61 ++++++++++++++++++++++
app/src/main/res/values-gl/strings.xml | 4 ++
app/src/main/res/values-it/strings.xml | 2 +-
app/src/main/res/values-pt/strings.xml | 22 ++++----
app/src/main/res/values-zh-rCN/strings.xml | 2 +-
app/src/main/res/values-zh-rTW/strings.xml | 3 ++
6 files changed, 81 insertions(+), 13 deletions(-)
diff --git a/app/src/main/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml
index 0229e195..b0073f8b 100644
--- a/app/src/main/res/values-af/strings.xml
+++ b/app/src/main/res/values-af/strings.xml
@@ -5,6 +5,8 @@
Maak navigasie balk oop
Sluit navigasie balk
Herlaai
+ Sluit
+ Kanselleer
Instellings
Kennisgewings
@@ -13,6 +15,7 @@
Profiel
Aspekte
Aktiwiteite
+ Hou van
Opgemerk
Aantal keer genoem
Publiek
@@ -24,10 +27,12 @@
Alle kennisgewings
Ook Opgemerk
Lewer kommentaar op hierdie plasing
+ Hou van
Aantal keer genoem
Herdeel
Begin deel
+ Fout: Kon nie lys van pods verkry nie!
Bevestiging
Wil jy uitgaan?
@@ -52,14 +57,41 @@
met mense
Voer asseblief \'n naam in
Deel skakel adres
+ Stoor beeld
+ Deel beeld
+ Maak in eksterne webleser oop…
+ Kopieer skakel adres na knipbord
+ Kopieer beeld adres na knipbord
+ Kon nie beeld laai nie
+ Toestemming geweier.
+ Pod naam
+ Protokol
+ Pod adres
+ Vermiste waarde
+ Versteek status balk
+ Wys titel
+ Voorkoms
+ Netwerk
+ Pod verstellings
+ Gebruiker
+ Algemeen
+ Admin
+ Tema en kleure
+ Primêre kleur
+ Kleur van die nutsbalke
+ Kontras kleur
+ Kleur van die vorderingsbalk
+ AMOLED modus
+ Uitgebreide Kennisgewings
+ Taal
Fontgrootte
Normaal
@@ -75,6 +107,7 @@
Landskap
Laai Tor voorkeure
+ Volmag
Gasheer
Poort
Toep moet herlaai om volmag te deaktiveer
@@ -82,6 +115,11 @@
Persoonlike instellings
+ Bestuur Hutsmerke
+ Onvolg Hutsmerke
+ Verander rekening
+ Vee Buffer
+ Vee WebBuffer skoon
Diverse
Volle herstel
@@ -92,7 +130,30 @@
Toepassing
Toestel
diaspora * Pod
+ Tope weergawe: %1$s
+ Android Weergawe%1$s
+ Toestel naam%1$s
+ Kodenaam: %1$s
+ Pod profiel naam: %1$s
+ Pod domein: %1$s
+ Verkry die bron
+ Vertaal hierdie Toep!
+ Die toepassing is nie in jou taal beskikbaar? Jy kan dit verander! Hoekom help jy ons nie met die vertaling nie? Ons gebruik Stringlate om enigiemand te help om toepassing te vertaal.
+ Laat ek vertaal
+ Gee terugvoer!
+ dandelion * is nog in ontwikkeling, so as jy voorstelle of enige soort terugvoer het, gebruik asseblief ons probleem volger laat ons weet!
+ Raporteer foute
+ Deel die toep
+ Haai! Loer na #dandelion! %1$s
+ Handhawers
+ %1$s<br><br>baie dankie!
+ GNU GPLv3+ Lisensie
+ Derdeparty biblioteke
+ Vertel my meer
Bemagtig om Youtube links oop te maak in eksterne Toeps
Youtube links
+ Verander die tema van jou rekening
+ Trek om te verfris
+ Skenk
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index 73b884fb..414cbe12 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -5,6 +5,8 @@
Abrir cadro de navegación
Pechar cadro de navegación
Refrescar
+ Pechar
+ Cancelar
Axustes
Notificacións
@@ -206,4 +208,6 @@
Cambiar o decorado da súa conta
Tire para actualizar
Tirar hacia abaixo na parte superior da páxina.\nDebe reiniciar a app para que os cambios se apliquen.
+ Doar
+ Gústache este proxecto? Queres que siga mellorando e resolvendo os problemas?\n\nDesenvolver aplicacións e escribir a documentación leva moito tempo! Se queres apoiar ao proxecto para que continúe, por favor, considera facer unha pequena doazón!\n\nEste proxecto desenvólvese no tempo libre, ofrécese libre e gratuitamente e sen publicidade!
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index d3864fa2..02946483 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -161,7 +161,7 @@
Aggiungi avviso dell\'app
Aggiungere un riferimento a questa applicazione ai testi condivisi: [via #dandelion]
- Vario
+ Altro
Reset completo
Elimina localmente tutte le impostazioni relative all\'app e disconnette da tutti gli account
Questo cancellerà tutte le impostazioni dell\'app che sono state cambiate ai loro valori predefiniti e ti disconnetterà da tutti i pod. Le immagini scaricate non verranno toccate. Sei sicuro di voler procedere?
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index b304e944..22867fd6 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -80,13 +80,13 @@
Mostrar título
Atalho para o lançador
- A barra de ferramentas superior carrega o fluxo
- Clique em um espaço vazio na barra de ferramentas superior para abrir o fluxo
+ Barra de ferramentas superior carrega o fluxo
+ Clique num espaço vazio da barra de ferramentas superior para abrir o fluxo
Aparência
Rede
- Configurações do Pod
- Operabilidade
+ Definições do Pod
+ Operacionalidade
Controlo de navegação
@@ -127,10 +127,10 @@
Horizontal
Carregar predefinição Tor
- Carregar configurações de proxy para Tor (Orbot) Proxy HTTP
+ Carregar definições de proxy para Tor (Orbot) Proxy HTTP
Proxy
Ativar proxy
- Proxy dandelion * tráfego para contornar firewalls.\nPode ser necessário reiniciar. Isso pode não funcionar em alguns telefones.
+ Proxy dandelion*\'s para contornar firewalls.\nPode ser necessário reiniciar e pode não funcionar em alguns telefones.
Servidor
Porta
Tem que reiniciar a aplicação para aplicar a alteração
@@ -139,13 +139,13 @@
Abra links externos com abas personalizadas do Chrome. Chromium, Firefox ou Google Chrome precisa ser instalado para usar este recurso. \nNOTA IMPORTANTE: Guias personalizadas do Chrome não usam servidores proxy configurados!
Definições pessoais
- Abra suas configurações de conta diaspora*
+ Abra suas definições da sua conta diaspora*
Gerir lista de contactos
- Gerenciar Hashtags
+ Gerir \'hashtags\'
Não seguir hashtags já seguidas
Mudar de conta
- Apagar dados de sessão local e mudar para outro servidor/conta diaspora*
- Isto irá apagar todos os dados de cookies e sessão. Você realmente deseja alterar sua conta?
+ Apagar dados de sessão local e mudar para outro pod/conta diaspora*
+ Isto irá apagar todos os dados de cookies e da sessão. Tem a certeza de que deseja alterar sua conta?
Limpar cache
Limpar cache WebView
Ocultar automaticamente as barras de ferramentas superior e inferior durante a rolagem
@@ -175,7 +175,7 @@
Domínio Pod: %1$s
Dados copiados para a área de transferência
dandelion* é seu aplicativo companheiro para navegar pela diaspora*. Ele adiciona recursos como barras de ferramentas úteis e suporte para servidores de proxy como a Tor Network para sua experiência social.
- Contribua com o código!
+ Contribua com código!
dandelion* é desenvolvido gratuitamente como na Liberdade e segue as ideias do projeto diaspora*. Se você quiser contribuir, vá em frente! Atualmente somos uma equipe muito pequena, então nós apreciamos muito qualquer tipo de ajuda!
Obter o código fonte
Traduzir a aplicação!
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 2fa4a18b..1df262f3 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -187,7 +187,7 @@
dandelion* 像自由一样自由发展,遵循 diaspora* 项目的想法。如果你想作出贡献,继续前进!目前我们是一个非常小的团队,因此我们非常感谢任何帮助!
获取源
翻译应用!
- 应用程序不可用您的语言?您可以更改它!为什么你没有帮助我们翻译它?我们使用Stringlay来让任何人能够翻译这个应用。
+ 应用程序不可用您的语言?您可以更改它!为什么你没有帮助我们翻译它?我们使用Stringlate来让任何人能够翻译这个应用。
让我翻译
提供反馈!
dandelion* 仍在开发中,所以如果您有任何建议或任何反馈,请使用我们的错误追踪器让我们知道!
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 053f5d01..e8b9431c 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -5,6 +5,8 @@
開啟側邊導覽選單
關閉側邊導覽選單
重新下載
+ 關閉
+ 取消
設定
通知
@@ -202,4 +204,5 @@
使用其他應用程式來開啟 Youtube 連結
Youtube 連結
贊助
+ 喜歡這個專案嗎?希望它繼續改善而且問題得到解決嗎?\n\n開發應用程式以及撰寫相關部落格文章都需要很多時間!如果你想要幫忙讓專案可以繼續,請考慮小額捐款!\n\n這個專案是在閒暇時間開發的,完全免費,並且沒有任何廣告!
From 938a54fc749e9bcc9b1b8e399fb2a464c39b77d9 Mon Sep 17 00:00:00 2001
From: Gregor Santner
Date: Fri, 26 Apr 2019 00:55:53 +0200
Subject: [PATCH 19/75] Release v1.3.1
---
CHANGELOG.md | 4 ++++
app/build.gradle | 4 ++--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f25e3706..9bb1931f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,10 @@

+### v1.3.x
+- Updated translations
+- Added german F-Droid description translation
+
### v1.3.0
- Add option to open youtube links external/in YouTube app (optional)
- Pull to refresh
diff --git a/app/build.gradle b/app/build.gradle
index 5faae77d..693a3807 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -19,8 +19,8 @@ android {
resValue "string", "manifest_package_id", "com.github.dfa.diaspora_android"
applicationId "com.github.dfa.diaspora_android"
- versionName "1.3.0"
- versionCode 41
+ versionName "1.3.1"
+ versionCode 42
vectorDrawables.useSupportLibrary = true
}
From 3ec8ab89c68833a278a1b01caa3fc010980418e8 Mon Sep 17 00:00:00 2001
From: "imgbot[bot]" <31301654+imgbot[bot]@users.noreply.github.com>
Date: Fri, 26 Jul 2019 00:35:39 +0000
Subject: [PATCH 20/75] [ImgBot] Optimize images (#247)
*Total -- 1,011.84kb -> 914.41kb (9.63%)
/app/src/flavorTest/res/drawable-ldpi/ic_launcher.png -- 1.50kb -> 1.24kb (17.35%)
/app/src/main/res/drawable-ldpi/ic_launcher.png -- 1.67kb -> 1.40kb (16.03%)
/metadata/en-US/promoGraphic.png -- 3.58kb -> 3.04kb (15.17%)
/app/src/flavorDandelior/ic_launcher-web.png -- 29.94kb -> 26.33kb (12.05%)
/metadata/en-US/featureGraphic.png -- 861.38kb -> 773.90kb (10.16%)
/app/src/flavorDandelior/res/drawable-xhdpi/ic_launcher.png -- 9.28kb -> 8.74kb (5.83%)
/app/src/flavorDandelior/res/drawable-xhdpi/ic_launcher_round.png -- 9.28kb -> 8.74kb (5.83%)
/app/src/flavorDandelior/res/drawable-hdpi/ic_launcher_round.png -- 8.01kb -> 7.58kb (5.36%)
/app/src/flavorDandelior/res/drawable-hdpi/ic_launcher.png -- 8.01kb -> 7.58kb (5.36%)
/app/src/flavorDandelior/res/drawable-xxhdpi/ic_launcher_round.png -- 11.90kb -> 11.28kb (5.19%)
/app/src/flavorDandelior/res/drawable-xxhdpi/ic_launcher.png -- 11.90kb -> 11.28kb (5.19%)
/app/src/flavorDandelior/res/drawable-xxxhdpi/ic_launcher_round.png -- 14.72kb -> 14.08kb (4.31%)
/app/src/flavorDandelior/res/drawable-xxxhdpi/ic_launcher.png -- 14.72kb -> 14.08kb (4.31%)
/app/src/flavorDandelior/res/drawable-mdpi/ic_launcher_round.png -- 6.80kb -> 6.58kb (3.33%)
/app/src/flavorDandelior/res/drawable-mdpi/ic_launcher.png -- 6.80kb -> 6.58kb (3.33%)
/app/src/flavorDandelior/res/drawable-ldpi/ic_launcher_round.png -- 6.17kb -> 5.99kb (2.96%)
/app/src/flavorDandelior/res/drawable-ldpi/ic_launcher.png -- 6.17kb -> 5.99kb (2.96%)
Signed-off-by: ImgBotApp
---
app/src/flavorDandelior/ic_launcher-web.png | Bin 30659 -> 26965 bytes
.../res/drawable-hdpi/ic_launcher.png | Bin 8205 -> 7765 bytes
.../res/drawable-hdpi/ic_launcher_round.png | Bin 8205 -> 7765 bytes
.../res/drawable-ldpi/ic_launcher.png | Bin 6321 -> 6134 bytes
.../res/drawable-ldpi/ic_launcher_round.png | Bin 6321 -> 6134 bytes
.../res/drawable-mdpi/ic_launcher.png | Bin 6965 -> 6733 bytes
.../res/drawable-mdpi/ic_launcher_round.png | Bin 6965 -> 6733 bytes
.../res/drawable-xhdpi/ic_launcher.png | Bin 9506 -> 8952 bytes
.../res/drawable-xhdpi/ic_launcher_round.png | Bin 9506 -> 8952 bytes
.../res/drawable-xxhdpi/ic_launcher.png | Bin 12181 -> 11549 bytes
.../res/drawable-xxhdpi/ic_launcher_round.png | Bin 12181 -> 11549 bytes
.../res/drawable-xxxhdpi/ic_launcher.png | Bin 15071 -> 14421 bytes
.../drawable-xxxhdpi/ic_launcher_round.png | Bin 15071 -> 14421 bytes
.../res/drawable-ldpi/ic_launcher.png | Bin 1539 -> 1272 bytes
.../main/res/drawable-ldpi/ic_launcher.png | Bin 1709 -> 1435 bytes
metadata/en-US/featureGraphic.png | Bin 882056 -> 792469 bytes
metadata/en-US/promoGraphic.png | Bin 3665 -> 3109 bytes
17 files changed, 0 insertions(+), 0 deletions(-)
diff --git a/app/src/flavorDandelior/ic_launcher-web.png b/app/src/flavorDandelior/ic_launcher-web.png
index 91d4f752e620fea84e4ca2de5c62249fd3298ada..39789cb4341efde91fdde304d9ed4cda838663d9 100644
GIT binary patch
literal 26965
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
Ofedv`bna`pkp2txHbaI0
literal 30659
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 &)!_Vy@*P3
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